summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/include
diff options
context:
space:
mode:
Diffstat (limited to 'gnuradio-runtime/include')
-rw-r--r--gnuradio-runtime/include/gnuradio/rpccallbackregister_base.h1
-rw-r--r--gnuradio-runtime/include/gnuradio/rpcregisterhelpers.h57
-rw-r--r--gnuradio-runtime/include/gnuradio/rpcserver_ice.h2
3 files changed, 59 insertions, 1 deletions
diff --git a/gnuradio-runtime/include/gnuradio/rpccallbackregister_base.h b/gnuradio-runtime/include/gnuradio/rpccallbackregister_base.h
index 3b5b392ec3..3d2d4cc79a 100644
--- a/gnuradio-runtime/include/gnuradio/rpccallbackregister_base.h
+++ b/gnuradio-runtime/include/gnuradio/rpccallbackregister_base.h
@@ -52,6 +52,7 @@ enum priv_lvl_t {
enum KnobType {
KNOBBOOL, KNOBCHAR, KNOBINT, KNOBFLOAT,
KNOBDOUBLE, KNOBSTRING, KNOBLONG, KNOBVECBOOL,
+ KNOBCOMPLEX, KNOBCOMPLEXD,
KNOBVECCHAR, KNOBVECINT, KNOBVECFLOAT, KNOBVECDOUBLE,
KNOBVECSTRING, KNOBVECLONG
};
diff --git a/gnuradio-runtime/include/gnuradio/rpcregisterhelpers.h b/gnuradio-runtime/include/gnuradio/rpcregisterhelpers.h
index e405f4e1ea..4431d15bd8 100644
--- a/gnuradio-runtime/include/gnuradio/rpcregisterhelpers.h
+++ b/gnuradio-runtime/include/gnuradio/rpcregisterhelpers.h
@@ -170,6 +170,23 @@ public:
};
template<typename T>
+class rpcbasic_extractor<T,std::complex<float> >
+ : public virtual rpcextractor_base<T,std::complex<float> >
+{
+public:
+ rpcbasic_extractor(T* source, void (T::*func)(std::complex<float>))
+ : rpcextractor_base<T,std::complex<float> >(source, func)
+ {;}
+
+ void post(pmt::pmt_t which_port, pmt::pmt_t msg)
+ {
+ std::complex<float> k = static_cast<std::complex<float> >(pmt::to_complex(msg));
+ (rpcextractor_base<T,std::complex<float> >::
+ _source->*rpcextractor_base<T,std::complex<float> >::_func)(k);
+ }
+};
+
+template<typename T>
class rpcbasic_extractor<T,std::complex<double> >
: public virtual rpcextractor_base<T,std::complex<double> >
{
@@ -305,6 +322,46 @@ public:
}
};
+template<typename T>
+class rpcbasic_inserter<T,std::complex<float> >
+ : public virtual rpcinserter_base<T,std::complex<float > > {
+public:
+ rpcbasic_inserter(T* source, std::complex<float> (T::*func)() const)
+ : rpcinserter_base<T,std::complex<float> >(source, func)
+ {;}
+
+ rpcbasic_inserter(T* source, std::complex<float> (T::*func)())
+ : rpcinserter_base<T,std::complex<float> >(source, func)
+ {;}
+
+ pmt::pmt_t retrieve()
+ {
+ std::complex<float > k((rpcinserter_base<T,std::complex<float> >::
+ _source->*rpcinserter_base<T,std::complex<float> >::_func)());
+ return pmt::from_complex(k);
+ }
+};
+
+template<typename T>
+class rpcbasic_inserter<T,std::complex<double> >
+ : public virtual rpcinserter_base<T,std::complex<double > > {
+public:
+ rpcbasic_inserter(T* source, std::complex<double> (T::*func)() const)
+ : rpcinserter_base<T,std::complex<double> >(source, func)
+ {;}
+
+ rpcbasic_inserter(T* source, std::complex<double> (T::*func)())
+ : rpcinserter_base<T,std::complex<double> >(source, func)
+ {;}
+
+ pmt::pmt_t retrieve()
+ {
+ std::complex<double > k((rpcinserter_base<T,std::complex<double> >::
+ _source->*rpcinserter_base<T,std::complex<double> >::_func)());
+ return pmt::from_complex(k);
+ }
+};
+
template <typename T>
struct rpc_register_base
{
diff --git a/gnuradio-runtime/include/gnuradio/rpcserver_ice.h b/gnuradio-runtime/include/gnuradio/rpcserver_ice.h
index f1e65bbbc8..c1c3d46a42 100644
--- a/gnuradio-runtime/include/gnuradio/rpcserver_ice.h
+++ b/gnuradio-runtime/include/gnuradio/rpcserver_ice.h
@@ -73,7 +73,7 @@ private:
ConfigureCallbackMap_t::const_iterator iter(d_setcallbackmap.find(p.first));
if(iter != d_setcallbackmap.end()) {
if(cur_priv <= iter->second.priv) {
- (*iter->second.callback).post(pmt::PMT_NIL, rpcpmtconverter::to_pmt(p.second,c));
+ (*iter->second.callback).post(pmt::PMT_NIL, rpcpmtconverter::to_pmt(p.second,c));
}
else {
std::cout << "Key " << p.first << " requires PRIVLVL <= "