23 #ifndef RPCREGISTERHELPERS_H
24 #define RPCREGISTERHELPERS_H
36 typedef boost::shared_ptr<rpcbasic_base> rpcbasic_sptr;
49 template <
typename T,
typename Tto>
61 throw std::runtime_error(
62 "rpcextractor_base: no post defined for this data type.\n");
79 throw std::runtime_error(
80 "rpcextractor_base: no post defined for this data type.\n");
91 template <
typename T,
typename Tto>
111 template <
typename T,
typename Tfrom>
134 template <
typename T,
typename Tfrom>
166 template <
typename T>
187 template <
typename T>
206 template <
typename T>
225 template <
typename T>
245 template <
typename T>
265 template <
typename T>
285 template <
typename T>
305 template <
typename T>
325 template <
typename T>
345 template <
typename T>
365 template <
typename T>
378 std::complex<float> k =
static_cast<std::complex<float>
>(
pmt::to_complex(msg));
387 template <
typename T>
408 template <
typename T>
434 template <
typename T>
460 template <
typename T>
479 std::vector<signed char> vec(
489 template <
typename T>
508 std::vector<short> vec(
518 template <
typename T>
546 template <
typename T>
565 std::vector<int64_t> vec(
575 template <
typename T>
594 std::vector<std::complex<float> > vec(
604 template <
typename T>
623 std::vector<float> vec(
633 template <
typename T>
652 std::vector<uint8_t> vec(
662 template <
typename T>
681 std::complex<float> k(
691 template <
typename T>
710 std::complex<double> k(
720 template <
typename T>
774 template <
typename T,
typename Tto>
803 const char* functionbase,
804 void (T::*
function)(Tto),
808 const char* units_ =
"",
809 const char* desc_ =
"",
818 d_minpriv = minpriv_;
819 d_display = display_;
820 d_object =
dynamic_cast<T*
>(
822 #ifdef GR_RPCSERVER_ENABLED
832 std::ostringstream oss(std::ostringstream::out);
833 oss << block_alias <<
"::" << functionbase;
864 const char* functionbase,
866 void (T::*
function)(Tto),
870 const char* units_ =
"",
871 const char* desc_ =
"",
880 d_minpriv = minpriv_;
881 d_display = display_;
883 #ifdef GR_RPCSERVER_ENABLED
893 std::ostringstream oss(std::ostringstream::out);
894 oss << name <<
"::" << functionbase;
903 #ifdef GR_RPCSERVER_ENABLED
912 std::string
units()
const {
return d_units; }
920 void units(std::string u) { d_units = u; }
928 std::string d_units, d_desc;
959 template <
typename T>
983 const char* functionbase,
984 void (T::*
function)(),
985 const char* desc_ =
"",
989 d_minpriv = minpriv_;
990 d_object =
dynamic_cast<T*
>(
992 #ifdef GR_RPCSERVER_ENABLED
997 std::ostringstream oss(std::ostringstream::out);
998 oss << block_alias <<
"::" << functionbase;
1024 const char* functionbase,
1026 void (T::*
function)(),
1027 const char* desc_ =
"",
1031 d_minpriv = minpriv_;
1033 #ifdef GR_RPCSERVER_ENABLED
1037 std::string(desc_));
1038 std::ostringstream oss(std::ostringstream::out);
1039 oss << name <<
"::" << functionbase;
1048 #ifdef GR_RPCSERVER_ENABLED
1103 template <
typename T,
typename Tfrom>
1134 const char* functionbase,
1135 Tfrom (T::*
function)(),
1139 const char* units_ =
"",
1140 const char* desc_ =
"",
1149 d_minpriv = minpriv_;
1150 d_display = display_;
1151 d_object =
dynamic_cast<T*
>(
1153 #ifdef GR_RPCSERVER_ENABLED
1157 std::string(units_),
1163 std::ostringstream oss(std::ostringstream::out);
1164 oss << block_alias <<
"::" << functionbase;
1177 const char* functionbase,
1178 Tfrom (T::*
function)()
const,
1182 const char* units_ =
"",
1183 const char* desc_ =
"",
1192 d_minpriv = minpriv_;
1193 d_display = display_;
1194 d_object =
dynamic_cast<T*
>(
1196 #ifdef GR_RPCSERVER_ENABLED
1200 std::string(units_),
1206 std::ostringstream oss(std::ostringstream::out);
1207 oss << block_alias <<
"::" << functionbase;
1240 const char* functionbase,
1242 Tfrom (T::*
function)(),
1246 const char* units_ =
"",
1247 const char* desc_ =
"",
1256 d_minpriv = minpriv_;
1257 d_display = display_;
1259 #ifdef GR_RPCSERVER_ENABLED
1263 std::string(units_),
1269 std::ostringstream oss(std::ostringstream::out);
1270 oss << name <<
"::" << functionbase;
1283 const char* functionbase,
1285 Tfrom (T::*
function)()
const,
1289 const char* units_ =
"",
1290 const char* desc_ =
"",
1299 d_minpriv = minpriv_;
1300 d_display = display_;
1302 #ifdef GR_RPCSERVER_ENABLED
1306 std::string(units_),
1312 std::ostringstream oss(std::ostringstream::out);
1313 oss << name <<
"::" << functionbase;
1323 #ifdef GR_RPCSERVER_ENABLED
1331 std::string
units()
const {
return d_units; }
1339 void units(std::string u) { d_units = u; }
1347 std::string d_units, d_desc;
1391 template <
typename Tfrom>
1422 throw std::runtime_error(
1423 "ERROR: rpcbasic_register_variable called with no args. If this happens, "
1424 "someone has tried to use rpcbasic_register_variable incorrectly.");
1446 const char* functionbase,
1451 const char* units_ =
"",
1452 const char* desc_ =
"",
1508 template <
typename Tfrom>
1519 : d_rpc_regset(
"FAIL",
1531 throw std::runtime_error(
1532 "ERROR: rpcbasic_register_variable_rw called with no args. if this happens "
1533 "someone used rpcbasic_register_variable_rw incorrectly.\n");
1560 const char* functionbase,
1565 const char* units_ =
"",
1566 const char* desc_ =
"",
1570 namebase, functionbase, variable, min, max, def, units_, desc_),
1571 d_rpc_regset(namebase,
1592 template <
typename T>
1613 const char* handler,
1614 const char* units_ =
"",
1615 const char* desc_ =
"",
1621 d_minpriv = minpriv_;
1622 d_display = display_;
1623 d_object =
dynamic_cast<T*
>(
1625 #ifdef GR_RPCSERVER_ENABLED
1629 std::string(units_),
1635 std::ostringstream oss(std::ostringstream::out);
1636 oss << block_alias <<
"::" << handler;
1645 #ifdef GR_RPCSERVER_ENABLED
1650 std::string
units()
const {
return d_units; }
1655 void units(std::string u) { d_units = u; }
1662 std::string d_units, d_desc;
Definition: rpcregisterhelpers.h:731
virtual void registerConfigureCallback(const std::string &id, const configureCallback_t callback)=0
Definition: rpccallbackregister_base.h:94
~rpcbasic_register_trigger()
Definition: rpcregisterhelpers.h:1046
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:592
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:450
Tfrom get()
Definition: rpcregisterhelpers.h:1397
PMT_API pmt_t from_complex(double re, double im)
Return a complex number constructed of the given real and imaginary parts.
~rpchandler_base()
Definition: rpcregisterhelpers.h:174
rpcbasic_inserter(T *source, std::complex< double >(T::*func)())
Definition: rpcregisterhelpers.h:702
T * _source
Definition: rpcregisterhelpers.h:179
rpcbasic_register_get(const std::string &name, const char *functionbase, T *obj, Tfrom(T::*function)() const, const pmt::pmt_t &min, const pmt::pmt_t &max, const pmt::pmt_t &def, const char *units_="", const char *desc_="", priv_lvl_t minpriv_=RPC_PRIVLVL_MIN, DisplayType display_=DISPNULL)
Same as above that allows using '[variable]() const' getter functions.
Definition: rpcregisterhelpers.h:1282
rpcbasic_inserter(T *source, std::vector< signed char >(T::*func)())
Definition: rpcregisterhelpers.h:471
PMT_API pmt_t init_s32vector(size_t k, const int32_t *data)
Templated parent class for registering a ControlPort Extractor.
Definition: rpcregisterhelpers.h:188
rpcbasic_register_variable()
Definition: rpcregisterhelpers.h:1408
std::string units() const
Definition: rpcregisterhelpers.h:912
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:621
pmt::pmt_t def() const
Definition: rpcregisterhelpers.h:911
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:1657
void set(Tfrom _variable)
Definition: rpcregisterhelpers.h:1536
PMT_API std::complex< double > to_complex(pmt_t z)
rpcbasic_inserter(T *source, std::vector< int >(T::*func)())
Definition: rpcregisterhelpers.h:529
T * _source
Definition: rpcregisterhelpers.h:125
rpcbasic_register_variable_rw()
Definition: rpcregisterhelpers.h:1518
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:118
std::string units() const
Definition: rpcregisterhelpers.h:1650
float min(float a, float b)
rpcbasic_register_set(const std::string &block_alias, const char *functionbase, void(T::*function)(Tto), const pmt::pmt_t &min, const pmt::pmt_t &max, const pmt::pmt_t &def, const char *units_="", const char *desc_="", priv_lvl_t minpriv_=RPC_PRIVLVL_MIN, DisplayType display_=DISPNULL)
Adds the ability to set the variable over ControlPort.
Definition: rpcregisterhelpers.h:802
static purpose_t msg
Definition: source_logger.h:39
rpcbasic_inserter(T *source, std::vector< short >(T::*func)() const)
Definition: rpcregisterhelpers.h:494
PMT_API pmt_t init_u8vector(size_t k, const uint8_t *data)
rpcbasic_inserter(T *source, std::complex< float >(T::*func)())
Definition: rpcregisterhelpers.h:673
Tfrom * d_variable
Definition: rpcregisterhelpers.h:1396
void units(std::string u)
Definition: rpcregisterhelpers.h:1655
DisplayType default_display() const
Definition: rpcregisterhelpers.h:1653
Registers a read/write function to get and set a parameter over ControlPort.
Definition: rpcregisterhelpers.h:1509
Base class for registering a ControlPort Handler. Acts as a message acceptor.
Definition: rpcregisterhelpers.h:167
rpcbasic_handler(T *source, const char *handler)
Definition: rpcregisterhelpers.h:191
rpcbasic_inserter(T *source, std::vector< int64_t >(T::*func)() const)
Definition: rpcregisterhelpers.h:551
Base class for registering a ControlPort function.
Definition: rpcregisterhelpers.h:721
rpcbasic_inserter(T *source, std::vector< short >(T::*func)())
Definition: rpcregisterhelpers.h:500
std::string description() const
Definition: rpcregisterhelpers.h:1651
PMT_API pmt_t init_s8vector(size_t k, const int8_t *data)
void description(std::string d)
Definition: rpcregisterhelpers.h:1057
Virtual base class that produces messages.
Definition: msg_producer.h:35
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:679
rpcbasic_inserter(T *source, std::vector< uint8_t >(T::*func)())
Definition: rpcregisterhelpers.h:644
std::string description() const
Definition: rpcregisterhelpers.h:913
priv_lvl_t
Definition: rpccallbackregister_base.h:46
void default_display(DisplayType d)
Definition: rpcregisterhelpers.h:923
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:563
Registers a message handler function to post a message to a block's handler.
Definition: rpcregisterhelpers.h:1593
void description(std::string d)
Definition: rpcregisterhelpers.h:1656
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:1341
pmt::pmt_t max() const
Definition: rpcregisterhelpers.h:910
void units(std::string u)
Definition: rpcregisterhelpers.h:1339
Base class for registering a ControlPort Inserter. Produces a message.
Definition: rpcregisterhelpers.h:112
PMT_API pmt_t intern(const std::string &s)
Alias for pmt_string_to_symbol.
virtual void unregisterConfigureCallback(const std::string &id)=0
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:477
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:650
PMT_API const std::string symbol_to_string(const pmt_t &sym)
static int count
Definition: rpcregisterhelpers.h:725
void set_max(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:1337
PMT_API bool to_bool(pmt_t val)
Return true if val is pmt::True, return false when val is pmt::PMT_F,.
rpcbasic_inserter(T *source, uint64_t(T::*func)())
Definition: rpcregisterhelpers.h:444
Definition: rpccallbackregister_base.h:46
Tfrom(T::* _func)()
Definition: rpcregisterhelpers.h:126
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:150
Registers a 'get' function to get a parameter over ControlPort.
Definition: rpcregisterhelpers.h:1104
virtual void registerQueryCallback(const std::string &id, const queryCallback_t callback)=0
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:922
Templated parent class for registering a ControlPort Inserter.
Definition: rpcregisterhelpers.h:135
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:535
PMT_API pmt_t from_uint64(uint64_t x)
Return the pmt value that represents the uint64 x.
rpcbasic_register_variable_rw(const std::string &namebase, const char *functionbase, Tfrom *variable, const pmt::pmt_t &min, const pmt::pmt_t &max, const pmt::pmt_t &def, const char *units_="", const char *desc_="", priv_lvl_t minpriv=RPC_PRIVLVL_MIN, DisplayType display_=DISPNULL)
Adds the ability to set and get the variable over ControlPort.
Definition: rpcregisterhelpers.h:1559
rpcbasic_register_set(const std::string &name, const char *functionbase, T *obj, void(T::*function)(Tto), const pmt::pmt_t &min, const pmt::pmt_t &max, const pmt::pmt_t &def, const char *units_="", const char *desc_="", priv_lvl_t minpriv_=RPC_PRIVLVL_MIN, DisplayType display_=DISPNULL)
Adds the ability to set the variable over ControlPort.
Definition: rpcregisterhelpers.h:863
virtual ~rpcbasic_base()
Definition: rpcregisterhelpers.h:735
rpcbasic_register_handler(const std::string &block_alias, const char *handler, const char *units_="", const char *desc_="", priv_lvl_t minpriv_=RPC_PRIVLVL_MIN, DisplayType display_=DISPNULL)
Adds the ability to pass a message over ControlPort.
Definition: rpcregisterhelpers.h:1612
void set_def(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:1338
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:1333
rpchandler_base(T *source, const char *handler)
Definition: rpcregisterhelpers.h:170
std::string description() const
Definition: rpcregisterhelpers.h:1054
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:1652
virtual void unregisterQueryCallback(const std::string &id)=0
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:1055
rpcbasic_register_variable(const std::string &namebase, const char *functionbase, Tfrom *variable, const pmt::pmt_t &min, const pmt::pmt_t &max, const pmt::pmt_t &def, const char *units_="", const char *desc_="", priv_lvl_t minpriv_=RPC_PRIVLVL_MIN, DisplayType display_=DISPNULL)
Adds the ability to get the variable over ControlPort.
Definition: rpcregisterhelpers.h:1445
rpcinserter_base(T *source, Tfrom(T::*func)())
Definition: rpcregisterhelpers.h:115
rpcbasic_register_get(const std::string &name, const char *functionbase, T *obj, Tfrom(T::*function)(), const pmt::pmt_t &min, const pmt::pmt_t &max, const pmt::pmt_t &def, const char *units_="", const char *desc_="", priv_lvl_t minpriv_=RPC_PRIVLVL_MIN, DisplayType display_=DISPNULL)
Adds the ability to get the variable over ControlPort.
Definition: rpcregisterhelpers.h:1239
rpcbasic_inserter(T *source, std::vector< int64_t >(T::*func)())
Definition: rpcregisterhelpers.h:557
rpcbasic_register_get(const std::string &block_alias, const char *functionbase, Tfrom(T::*function)(), const pmt::pmt_t &min, const pmt::pmt_t &max, const pmt::pmt_t &def, const char *units_="", const char *desc_="", priv_lvl_t minpriv_=RPC_PRIVLVL_MIN, DisplayType display_=DISPNULL)
Adds the ability to get the variable over ControlPort.
Definition: rpcregisterhelpers.h:1133
Virtual base class that accepts messages.
Definition: messages/msg_accepter.h:35
rpcbasic_inserter(T *source, uint64_t(T::*func)() const)
Definition: rpcregisterhelpers.h:438
void default_display(DisplayType d)
Definition: rpcregisterhelpers.h:1658
void set_max(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:918
PMT_API long to_long(pmt_t x)
Convert pmt to long if possible.
virtual rpcserver_base * i()=0
PMT_API double to_double(pmt_t x)
Convert pmt to double if possible.
void setptr(Tfrom *_variable)
Definition: rpcregisterhelpers.h:1400
virtual void unregisterHandlerCallback(const std::string &id)=0
static rpcserver_booter_base * get()
PMT_API pmt_t init_s64vector(size_t k, const int64_t *data)
pmt::pmt_t max() const
Definition: rpcregisterhelpers.h:1329
#define PMT_NIL
Definition: pmt.h:103
rpcbasic_inserter(T *source, std::vector< float >(T::*func)())
Definition: rpcregisterhelpers.h:615
~rpcbasic_register_get()
Definition: rpcregisterhelpers.h:1321
pmt::pmt_t min() const
Definition: rpcregisterhelpers.h:1328
rpcbasic_inserter(T *source, std::vector< int >(T::*func)() const)
Definition: rpcregisterhelpers.h:523
Registers a 'trigger' function to trigger an action over ControlPort.
Definition: rpcregisterhelpers.h:960
Registers a read-only function to get a parameter over ControlPort.
Definition: rpcregisterhelpers.h:1392
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:914
const uint32_t DISPNULL
DisplayType Plotting types.
Definition: rpccallbackregister_base.h:32
rpcbasic_inserter(T *source, std::vector< float >(T::*func)() const)
Definition: rpcregisterhelpers.h:609
void set_def(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:919
PMT_API pmt_t init_f32vector(size_t k, const float *data)
DisplayType default_display() const
Definition: rpcregisterhelpers.h:915
pmt::pmt_t def() const
Definition: rpcregisterhelpers.h:1330
rpcbasic_inserter(T *source, std::vector< uint8_t >(T::*func)() const)
Definition: rpcregisterhelpers.h:638
pmt::pmt_t min() const
Definition: rpcregisterhelpers.h:909
const char * _handler
Definition: rpcregisterhelpers.h:180
rpcbasic_register_get< rpcbasic_register_variable< Tfrom >, Tfrom > d_rpc_reg
Definition: rpcregisterhelpers.h:1395
virtual void registerHandlerCallback(const std::string &id, const handlerCallback_t callback)=0
rpcinserter_base()
Definition: rpcregisterhelpers.h:116
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:708
PMT_API pmt_t init_c32vector(size_t k, const std::complex< float > *data)
std::string units() const
Definition: rpcregisterhelpers.h:1331
GR_RUNTIME_API gr::block_registry global_block_registry
rpcbasic_inserter(T *source, std::complex< float >(T::*func)() const)
Definition: rpcregisterhelpers.h:667
rpcbasic_register_get(const std::string &block_alias, const char *functionbase, Tfrom(T::*function)() const, const pmt::pmt_t &min, const pmt::pmt_t &max, const pmt::pmt_t &def, const char *units_="", const char *desc_="", priv_lvl_t minpriv_=RPC_PRIVLVL_MIN, DisplayType display_=DISPNULL)
Same as rpcbasic_register_get::rpcbasic_register_get that allows using '[variable]() const' getter fu...
Definition: rpcregisterhelpers.h:1176
rpcbasic_inserter(T *source, Tfrom(T::*func)())
Definition: rpcregisterhelpers.h:144
void set_min(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:917
rpcbasic_base()
Definition: rpcregisterhelpers.h:734
std::string description() const
Definition: rpcregisterhelpers.h:1332
rpcbasic_register_trigger(const std::string &name, const char *functionbase, T *obj, void(T::*function)(), const char *desc_="", priv_lvl_t minpriv_=RPC_PRIVLVL_MIN)
Adds the ability to trigger a function over ControlPort.
Definition: rpcregisterhelpers.h:1023
void units(std::string u)
Definition: rpcregisterhelpers.h:920
~rpcbasic_register_set()
Definition: rpcregisterhelpers.h:901
void default_display(DisplayType d)
Definition: rpcregisterhelpers.h:1342
rpcbasic_inserter(T *source, std::complex< double >(T::*func)() const)
Definition: rpcregisterhelpers.h:696
void description(std::string d)
Definition: rpcregisterhelpers.h:921
boost::intrusive_ptr< pmt_base > pmt_t
typedef for shared pointer (transparent reference counting). See http://www.boost.org/libs/smart_ptr/smart_ptr.htm
Definition: pmt.h:56
void set_min(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:1336
rpcbasic_register_trigger(const std::string &block_alias, const char *functionbase, void(T::*function)(), const char *desc_="", priv_lvl_t minpriv_=RPC_PRIVLVL_MIN)
Adds the ability to trigger a function over ControlPort.
Definition: rpcregisterhelpers.h:982
rpc_register_base()
Definition: rpcregisterhelpers.h:722
rpcbasic_inserter(T *source, std::vector< std::complex< float > >(T::*func)() const)
Definition: rpcregisterhelpers.h:580
~rpcbasic_register_handler()
Definition: rpcregisterhelpers.h:1643
PMT_API pmt_t init_s16vector(size_t k, const int16_t *data)
rpcbasic_inserter(T *source, Tfrom(T::*func)() const)
Definition: rpcregisterhelpers.h:138
void post(pmt::pmt_t which_port, pmt::pmt_t msg)
send msg to msg_accepter on port which_port
Definition: rpcregisterhelpers.h:176
basic_block_sptr block_lookup(pmt::pmt_t symbol)
rpcbasic_inserter(T *source, std::vector< signed char >(T::*func)() const)
Definition: rpcregisterhelpers.h:465
void description(std::string d)
Definition: rpcregisterhelpers.h:1340
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:506
static pmt_t mp(const std::string &s)
Make pmt symbol.
Definition: pmt_sugar.h:35
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:1058
DisplayType default_display() const
Definition: rpcregisterhelpers.h:1334
rpcbasic_inserter(T *source, std::vector< std::complex< float > >(T::*func)())
Definition: rpcregisterhelpers.h:586
uint32_t DisplayType
Definition: rpccallbackregister_base.h:29
Registers a 'set' function to set a parameter over ControlPort.
Definition: rpcregisterhelpers.h:775