11 #ifndef RPCREGISTERHELPERS_H
12 #define RPCREGISTERHELPERS_H
24 typedef std::shared_ptr<rpcbasic_base> rpcbasic_sptr;
37 template <
typename T,
typename Tto>
51 throw std::runtime_error(
52 "rpcextractor_base: no post defined for this data type.");
71 throw std::runtime_error(
72 "rpcextractor_base: no post defined for this data type.");
83 template <
typename T,
typename Tto>
103 template <
typename T,
typename Tfrom>
126 template <
typename T,
typename Tfrom>
158 template <
typename T>
170 _source->post(which_port, msg);
182 template <
typename T>
201 template <
typename T>
222 template <
typename T>
243 template <
typename T>
264 template <
typename T>
285 template <
typename T>
306 template <
typename T>
327 template <
typename T>
348 template <
typename T>
369 template <
typename T>
383 std::complex<float> k =
static_cast<std::complex<float>
>(
pmt::to_complex(msg));
392 template <
typename T>
414 template <
typename T>
441 template <
typename T>
467 template <
typename T>
486 std::vector<signed char> vec(
496 template <
typename T>
524 template <
typename T>
552 template <
typename T>
571 std::vector<int64_t> vec(
581 template <
typename T>
600 std::vector<std::complex<float>> vec(
610 template <
typename T>
638 template <
typename T>
657 std::vector<uint8_t> vec(
667 template <
typename T>
695 template <
typename T>
714 std::complex<double> k(
724 template <
typename T>
778 template <
typename T,
typename Tto>
807 const char* functionbase,
808 void (T::*
function)(Tto),
812 const char* units_ =
"",
813 const char* desc_ =
"",
822 d_minpriv = minpriv_;
823 d_display = display_;
824 d_object =
dynamic_cast<T*
>(
826 #ifdef GR_RPCSERVER_ENABLED
836 std::ostringstream oss(std::ostringstream::out);
837 oss << block_alias <<
"::" << functionbase;
868 const char* functionbase,
870 void (T::*
function)(Tto),
874 const char* units_ =
"",
875 const char* desc_ =
"",
884 d_minpriv = minpriv_;
885 d_display = display_;
887 #ifdef GR_RPCSERVER_ENABLED
897 std::ostringstream oss(std::ostringstream::out);
898 oss << name <<
"::" << functionbase;
907 #ifdef GR_RPCSERVER_ENABLED
916 std::string
units()
const {
return d_units; }
924 void units(std::string u) { d_units = u; }
932 std::string d_units, d_desc;
963 template <
typename T>
987 const char* functionbase,
988 void (T::*
function)(),
989 const char* desc_ =
"",
993 d_minpriv = minpriv_;
994 d_object =
dynamic_cast<T*
>(
996 #ifdef GR_RPCSERVER_ENABLED
1000 std::string(desc_));
1001 std::ostringstream oss(std::ostringstream::out);
1002 oss << block_alias <<
"::" << functionbase;
1028 const char* functionbase,
1030 void (T::*
function)(),
1031 const char* desc_ =
"",
1035 d_minpriv = minpriv_;
1037 #ifdef GR_RPCSERVER_ENABLED
1041 std::string(desc_));
1042 std::ostringstream oss(std::ostringstream::out);
1043 oss << name <<
"::" << functionbase;
1052 #ifdef GR_RPCSERVER_ENABLED
1107 template <
typename T,
typename Tfrom>
1138 const char* functionbase,
1139 Tfrom (T::*
function)(),
1143 const char* units_ =
"",
1144 const char* desc_ =
"",
1153 d_minpriv = minpriv_;
1154 d_display = display_;
1155 d_object =
dynamic_cast<T*
>(
1157 #ifdef GR_RPCSERVER_ENABLED
1161 std::string(units_),
1167 std::ostringstream oss(std::ostringstream::out);
1168 oss << block_alias <<
"::" << functionbase;
1181 const char* functionbase,
1182 Tfrom (T::*
function)()
const,
1186 const char* units_ =
"",
1187 const char* desc_ =
"",
1196 d_minpriv = minpriv_;
1197 d_display = display_;
1198 d_object =
dynamic_cast<T*
>(
1200 #ifdef GR_RPCSERVER_ENABLED
1204 std::string(units_),
1210 std::ostringstream oss(std::ostringstream::out);
1211 oss << block_alias <<
"::" << functionbase;
1244 const char* functionbase,
1246 Tfrom (T::*
function)(),
1250 const char* units_ =
"",
1251 const char* desc_ =
"",
1260 d_minpriv = minpriv_;
1261 d_display = display_;
1263 #ifdef GR_RPCSERVER_ENABLED
1267 std::string(units_),
1273 std::ostringstream oss(std::ostringstream::out);
1274 oss << name <<
"::" << functionbase;
1287 const char* functionbase,
1289 Tfrom (T::*
function)()
const,
1293 const char* units_ =
"",
1294 const char* desc_ =
"",
1303 d_minpriv = minpriv_;
1304 d_display = display_;
1306 #ifdef GR_RPCSERVER_ENABLED
1310 std::string(units_),
1316 std::ostringstream oss(std::ostringstream::out);
1317 oss << name <<
"::" << functionbase;
1327 #ifdef GR_RPCSERVER_ENABLED
1335 std::string
units()
const {
return d_units; }
1343 void units(std::string u) { d_units = u; }
1351 std::string d_units, d_desc;
1395 template <
typename Tfrom>
1426 throw std::runtime_error(
1427 "ERROR: rpcbasic_register_variable called with no args. If this happens, "
1428 "someone has tried to use rpcbasic_register_variable incorrectly.");
1450 const char* functionbase,
1455 const char* units_ =
"",
1456 const char* desc_ =
"",
1512 template <
typename Tfrom>
1523 : d_rpc_regset(
"FAIL",
1535 throw std::runtime_error(
1536 "ERROR: rpcbasic_register_variable_rw called with no args. if this happens "
1537 "someone used rpcbasic_register_variable_rw incorrectly.");
1564 const char* functionbase,
1569 const char* units_ =
"",
1570 const char* desc_ =
"",
1574 namebase, functionbase, variable,
min, max, def, units_, desc_),
1575 d_rpc_regset(namebase,
1596 template <
typename T>
1617 const char* handler,
1618 const char* units_ =
"",
1619 const char* desc_ =
"",
1625 d_minpriv = minpriv_;
1626 d_display = display_;
1627 d_object =
dynamic_cast<T*
>(
1629 #ifdef GR_RPCSERVER_ENABLED
1633 std::string(units_),
1639 std::ostringstream oss(std::ostringstream::out);
1640 oss << block_alias <<
"::" << handler;
1649 #ifdef GR_RPCSERVER_ENABLED
1654 std::string
units()
const {
return d_units; }
1659 void units(std::string u) { d_units = u; }
1666 std::string d_units, d_desc;
GR_RUNTIME_API gr::block_registry global_block_registry
Definition: rpccallbackregister_base.h:83
basic_block_sptr block_lookup(pmt::pmt_t symbol)
Virtual base class that accepts messages.
Definition: messages/msg_accepter.h:25
Virtual base class that produces messages.
Definition: msg_producer.h:25
Definition: rpcregisterhelpers.h:736
rpcbasic_base()
Definition: rpcregisterhelpers.h:738
virtual ~rpcbasic_base()
Definition: rpcregisterhelpers.h:739
Templated parent class for registering a ControlPort Extractor.
Definition: rpcregisterhelpers.h:184
rpcbasic_handler(T *source, const char *handler)
Definition: rpcregisterhelpers.h:186
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:712
rpcbasic_inserter(T *source, std::complex< double >(T::*func)())
Definition: rpcregisterhelpers.h:706
rpcbasic_inserter(T *source, std::complex< double >(T::*func)() const)
Definition: rpcregisterhelpers.h:700
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:684
rpcbasic_inserter(T *source, std::complex< float >(T::*func)())
Definition: rpcregisterhelpers.h:678
rpcbasic_inserter(T *source, std::complex< float >(T::*func)() const)
Definition: rpcregisterhelpers.h:672
rpcbasic_inserter(T *source, std::vector< float >(T::*func)())
Definition: rpcregisterhelpers.h:621
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:627
rpcbasic_inserter(T *source, std::vector< float >(T::*func)() const)
Definition: rpcregisterhelpers.h:615
rpcbasic_inserter(T *source, std::vector< int64_t >(T::*func)() const)
Definition: rpcregisterhelpers.h:557
rpcbasic_inserter(T *source, std::vector< int64_t >(T::*func)())
Definition: rpcregisterhelpers.h:563
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:569
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:541
rpcbasic_inserter(T *source, std::vector< int >(T::*func)())
Definition: rpcregisterhelpers.h:535
rpcbasic_inserter(T *source, std::vector< int >(T::*func)() const)
Definition: rpcregisterhelpers.h:529
rpcbasic_inserter(T *source, std::vector< short >(T::*func)() const)
Definition: rpcregisterhelpers.h:501
rpcbasic_inserter(T *source, std::vector< short >(T::*func)())
Definition: rpcregisterhelpers.h:507
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:513
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:484
rpcbasic_inserter(T *source, std::vector< signed char >(T::*func)() const)
Definition: rpcregisterhelpers.h:472
rpcbasic_inserter(T *source, std::vector< signed char >(T::*func)())
Definition: rpcregisterhelpers.h:478
rpcbasic_inserter(T *source, std::vector< std::complex< float >>(T::*func)())
Definition: rpcregisterhelpers.h:592
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:598
rpcbasic_inserter(T *source, std::vector< std::complex< float >>(T::*func)() const)
Definition: rpcregisterhelpers.h:586
rpcbasic_inserter(T *source, std::vector< uint8_t >(T::*func)() const)
Definition: rpcregisterhelpers.h:643
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:655
rpcbasic_inserter(T *source, std::vector< uint8_t >(T::*func)())
Definition: rpcregisterhelpers.h:649
rpcbasic_inserter(T *source, uint64_t(T::*func)() const)
Definition: rpcregisterhelpers.h:445
rpcbasic_inserter(T *source, uint64_t(T::*func)())
Definition: rpcregisterhelpers.h:451
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:457
Templated parent class for registering a ControlPort Inserter.
Definition: rpcregisterhelpers.h:128
rpcbasic_inserter(T *source, Tfrom(T::*func)() const)
Definition: rpcregisterhelpers.h:130
rpcbasic_inserter(T *source, Tfrom(T::*func)())
Definition: rpcregisterhelpers.h:136
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:142
Registers a 'get' function to get a parameter over ControlPort.
Definition: rpcregisterhelpers.h:1109
std::string units() const
Definition: rpcregisterhelpers.h:1335
void set_def(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:1342
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:1180
pmt::pmt_t def() const
Definition: rpcregisterhelpers.h:1334
DisplayType default_display() const
Definition: rpcregisterhelpers.h:1338
void description(std::string d)
Definition: rpcregisterhelpers.h:1344
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:1286
void set_min(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:1340
~rpcbasic_register_get() override
Definition: rpcregisterhelpers.h:1325
std::string description() const
Definition: rpcregisterhelpers.h:1336
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:1137
void default_display(DisplayType d)
Definition: rpcregisterhelpers.h:1346
pmt::pmt_t max() const
Definition: rpcregisterhelpers.h:1333
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:1337
void units(std::string u)
Definition: rpcregisterhelpers.h:1343
pmt::pmt_t min() const
Definition: rpcregisterhelpers.h:1332
void set_max(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:1341
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:1243
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:1345
Registers a message handler function to post a message to a block's handler.
Definition: rpcregisterhelpers.h:1598
void description(std::string d)
Definition: rpcregisterhelpers.h:1660
std::string description() const
Definition: rpcregisterhelpers.h:1655
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:1661
~rpcbasic_register_handler() override
Definition: rpcregisterhelpers.h:1647
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:1616
DisplayType default_display() const
Definition: rpcregisterhelpers.h:1657
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:1656
void units(std::string u)
Definition: rpcregisterhelpers.h:1659
std::string units() const
Definition: rpcregisterhelpers.h:1654
void default_display(DisplayType d)
Definition: rpcregisterhelpers.h:1662
Registers a read/write function to get and set a parameter over ControlPort.
Definition: rpcregisterhelpers.h:1514
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:1563
void set(Tfrom _variable)
Definition: rpcregisterhelpers.h:1540
rpcbasic_register_variable_rw()
Definition: rpcregisterhelpers.h:1522
Registers a read-only function to get a parameter over ControlPort.
Definition: rpcregisterhelpers.h:1397
Tfrom * d_variable
Definition: rpcregisterhelpers.h:1400
Tfrom get()
Definition: rpcregisterhelpers.h:1401
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:1449
void setptr(Tfrom *_variable)
Definition: rpcregisterhelpers.h:1404
rpcbasic_register_variable()
Definition: rpcregisterhelpers.h:1412
rpcbasic_register_get< rpcbasic_register_variable< Tfrom >, Tfrom > d_rpc_reg
Definition: rpcregisterhelpers.h:1399
Base class for registering a ControlPort Handler. Acts as a message acceptor.
Definition: rpcregisterhelpers.h:160
T * _source
Definition: rpcregisterhelpers.h:174
rpchandler_base(T *source, const char *handler)
Definition: rpcregisterhelpers.h:162
~rpchandler_base() override
Definition: rpcregisterhelpers.h:166
void post(pmt::pmt_t which_port, pmt::pmt_t msg) override
send msg to msg_accepter on port which_port
Definition: rpcregisterhelpers.h:168
const char * _handler
Definition: rpcregisterhelpers.h:175
Base class for registering a ControlPort Inserter. Produces a message.
Definition: rpcregisterhelpers.h:105
Tfrom(T::* _func)()
Definition: rpcregisterhelpers.h:118
pmt::pmt_t retrieve() override
send msg to msg_producer
Definition: rpcregisterhelpers.h:110
rpcinserter_base()
Definition: rpcregisterhelpers.h:108
T * _source
Definition: rpcregisterhelpers.h:117
rpcinserter_base(T *source, Tfrom(T::*func)())
Definition: rpcregisterhelpers.h:107
static rpcserver_booter_base * get()
void unregisterHandlerCallback(const std::string &id) override=0
void registerQueryCallback(const std::string &id, const queryCallback_t callback) override=0
void registerHandlerCallback(const std::string &id, const handlerCallback_t callback) override=0
void unregisterConfigureCallback(const std::string &id) override=0
void registerConfigureCallback(const std::string &id, const configureCallback_t callback) override=0
void unregisterQueryCallback(const std::string &id) override=0
virtual rpcserver_base * i()=0
float min(float a, float b)
PMT_API double to_double(pmt_t x)
Convert pmt to double if possible.
PMT_API pmt_t from_complex(double re, double im)
Return a complex number constructed of the given real and imaginary parts.
PMT_API pmt_t init_s8vector(size_t k, const int8_t *data)
PMT_API pmt_t init_s16vector(size_t k, const int16_t *data)
PMT_API pmt_t intern(const std::string &s)
Alias for pmt_string_to_symbol.
PMT_API pmt_t init_s32vector(size_t k, const int32_t *data)
PMT_API long to_long(pmt_t x)
Convert pmt to long if possible.
PMT_API pmt_t init_f32vector(size_t k, const float *data)
PMT_API bool to_bool(pmt_t val)
Return true if val is pmt::True, return false when val is pmt::PMT_F,.
PMT_API const std::string symbol_to_string(const pmt_t &sym)
PMT_API std::complex< double > to_complex(pmt_t z)
PMT_API pmt_t init_c32vector(size_t k, const std::complex< float > *data)
static pmt_t mp(const std::string &s)
Make pmt symbol.
Definition: pmt_sugar.h:24
std::shared_ptr< pmt_base > pmt_t
typedef for shared pointer (transparent reference counting).
Definition: pmt.h:84
PMT_API pmt_t init_u8vector(size_t k, const uint8_t *data)
PMT_API pmt_t init_s64vector(size_t k, const int64_t *data)
PMT_API pmt_t from_uint64(uint64_t x)
Return the pmt value that represents the uint64 x.
#define PMT_NIL
Definition: pmt.h:122
constexpr uint32_t DISPNULL
DisplayType Plotting types.
Definition: rpccallbackregister_base.h:20
priv_lvl_t
Definition: rpccallbackregister_base.h:34
@ RPC_PRIVLVL_MIN
Definition: rpccallbackregister_base.h:34
uint32_t DisplayType
Definition: rpccallbackregister_base.h:17
Base class for registering a ControlPort function.
Definition: rpcregisterhelpers.h:725
rpc_register_base()
Definition: rpcregisterhelpers.h:726
static int count
Definition: rpcregisterhelpers.h:729
Registers a 'set' function to set a parameter over ControlPort.
Definition: rpcregisterhelpers.h:779
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:867
std::string units() const
Definition: rpcregisterhelpers.h:916
void description(std::string d)
Definition: rpcregisterhelpers.h:925
pmt::pmt_t min() const
Definition: rpcregisterhelpers.h:913
~rpcbasic_register_set() override
Definition: rpcregisterhelpers.h:905
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:806
void set_max(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:922
std::string description() const
Definition: rpcregisterhelpers.h:917
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:926
void set_min(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:921
void set_def(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:923
pmt::pmt_t def() const
Definition: rpcregisterhelpers.h:915
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:918
void default_display(DisplayType d)
Definition: rpcregisterhelpers.h:927
DisplayType default_display() const
Definition: rpcregisterhelpers.h:919
pmt::pmt_t max() const
Definition: rpcregisterhelpers.h:914
void units(std::string u)
Definition: rpcregisterhelpers.h:924
Registers a 'trigger' function to trigger an action over ControlPort.
Definition: rpcregisterhelpers.h:964
void description(std::string d)
Definition: rpcregisterhelpers.h:1061
std::string description() const
Definition: rpcregisterhelpers.h:1058
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:1059
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:1062
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:1027
~rpcbasic_register_trigger() override
Definition: rpcregisterhelpers.h:1050
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:986