11 #ifndef RPCREGISTERHELPERS_H 12 #define RPCREGISTERHELPERS_H 22 typedef std::shared_ptr<rpcbasic_base> rpcbasic_sptr;
35 template <
typename T,
typename Tto>
49 throw std::runtime_error(
50 "rpcextractor_base: no post defined for this data type.");
69 throw std::runtime_error(
70 "rpcextractor_base: no post defined for this data type.");
81 template <
typename T,
typename Tto>
101 template <
typename T,
typename Tfrom>
124 template <
typename T,
typename Tfrom>
156 template <
typename T>
180 template <
typename T>
199 template <
typename T>
220 template <
typename T>
241 template <
typename T>
262 template <
typename T>
283 template <
typename T>
304 template <
typename T>
325 template <
typename T>
346 template <
typename T>
367 template <
typename T>
390 template <
typename T>
412 template <
typename T>
439 template <
typename T>
465 template <
typename T>
484 std::vector<signed char>
vec(
494 template <
typename T>
522 template <
typename T>
550 template <
typename T>
569 std::vector<int64_t>
vec(
579 template <
typename T>
598 std::vector<std::complex<float>>
vec(
608 template <
typename T>
636 template <
typename T>
655 std::vector<uint8_t>
vec(
665 template <
typename T>
693 template <
typename T>
712 std::complex<double> k(
722 template <
typename T>
776 template <
typename T,
typename Tto>
805 const char* functionbase,
806 void (T::*
function)(Tto),
810 const char* units_ =
"",
811 const char* desc_ =
"",
820 d_minpriv = minpriv_;
821 d_display = display_;
822 d_object =
dynamic_cast<T*
>(
824 #ifdef GR_RPCSERVER_ENABLED 834 std::ostringstream oss(std::ostringstream::out);
835 oss << block_alias <<
"::" << functionbase;
866 const char* functionbase,
868 void (T::*
function)(Tto),
872 const char* units_ =
"",
873 const char* desc_ =
"",
882 d_minpriv = minpriv_;
883 d_display = display_;
885 #ifdef GR_RPCSERVER_ENABLED 895 std::ostringstream oss(std::ostringstream::out);
896 oss << name <<
"::" << functionbase;
905 #ifdef GR_RPCSERVER_ENABLED 914 std::string
units()
const {
return d_units; }
922 void units(std::string u) { d_units = u; }
930 std::string d_units, d_desc;
961 template <
typename T>
985 const char* functionbase,
986 void (T::*
function)(),
987 const char* desc_ =
"",
991 d_minpriv = minpriv_;
992 d_object =
dynamic_cast<T*
>(
994 #ifdef GR_RPCSERVER_ENABLED 999 std::ostringstream oss(std::ostringstream::out);
1000 oss << block_alias <<
"::" << functionbase;
1026 const char* functionbase,
1028 void (T::*
function)(),
1029 const char* desc_ =
"",
1033 d_minpriv = minpriv_;
1035 #ifdef GR_RPCSERVER_ENABLED 1039 std::string(desc_));
1040 std::ostringstream oss(std::ostringstream::out);
1041 oss << name <<
"::" << functionbase;
1050 #ifdef GR_RPCSERVER_ENABLED 1105 template <
typename T,
typename Tfrom>
1136 const char* functionbase,
1137 Tfrom (T::*
function)(),
1141 const char* units_ =
"",
1142 const char* desc_ =
"",
1151 d_minpriv = minpriv_;
1152 d_display = display_;
1153 d_object =
dynamic_cast<T*
>(
1155 #ifdef GR_RPCSERVER_ENABLED 1159 std::string(units_),
1165 std::ostringstream oss(std::ostringstream::out);
1166 oss << block_alias <<
"::" << functionbase;
1179 const char* functionbase,
1180 Tfrom (T::*
function)()
const,
1184 const char* units_ =
"",
1185 const char* desc_ =
"",
1194 d_minpriv = minpriv_;
1195 d_display = display_;
1196 d_object =
dynamic_cast<T*
>(
1198 #ifdef GR_RPCSERVER_ENABLED 1202 std::string(units_),
1208 std::ostringstream oss(std::ostringstream::out);
1209 oss << block_alias <<
"::" << functionbase;
1242 const char* functionbase,
1244 Tfrom (T::*
function)(),
1248 const char* units_ =
"",
1249 const char* desc_ =
"",
1258 d_minpriv = minpriv_;
1259 d_display = display_;
1261 #ifdef GR_RPCSERVER_ENABLED 1265 std::string(units_),
1271 std::ostringstream oss(std::ostringstream::out);
1272 oss << name <<
"::" << functionbase;
1285 const char* functionbase,
1287 Tfrom (T::*
function)()
const,
1291 const char* units_ =
"",
1292 const char* desc_ =
"",
1301 d_minpriv = minpriv_;
1302 d_display = display_;
1304 #ifdef GR_RPCSERVER_ENABLED 1308 std::string(units_),
1314 std::ostringstream oss(std::ostringstream::out);
1315 oss << name <<
"::" << functionbase;
1325 #ifdef GR_RPCSERVER_ENABLED 1333 std::string
units()
const {
return d_units; }
1341 void units(std::string u) { d_units = u; }
1349 std::string d_units, d_desc;
1393 template <
typename Tfrom>
1424 throw std::runtime_error(
1425 "ERROR: rpcbasic_register_variable called with no args. If this happens, " 1426 "someone has tried to use rpcbasic_register_variable incorrectly.");
1448 const char* functionbase,
1453 const char* units_ =
"",
1454 const char* desc_ =
"",
1510 template <
typename Tfrom>
1521 : d_rpc_regset(
"FAIL",
1533 throw std::runtime_error(
1534 "ERROR: rpcbasic_register_variable_rw called with no args. if this happens " 1535 "someone used rpcbasic_register_variable_rw incorrectly.");
1538 void set(Tfrom _variable)
1562 const char* functionbase,
1567 const char* units_ =
"",
1568 const char* desc_ =
"",
1572 namebase, functionbase, variable,
min, max, def, units_, desc_),
1573 d_rpc_regset(namebase,
1594 template <
typename T>
1615 const char* handler,
1616 const char* units_ =
"",
1617 const char* desc_ =
"",
1623 d_minpriv = minpriv_;
1624 d_display = display_;
1625 d_object =
dynamic_cast<T*
>(
1627 #ifdef GR_RPCSERVER_ENABLED 1631 std::string(units_),
1637 std::ostringstream oss(std::ostringstream::out);
1638 oss << block_alias <<
"::" << handler;
1647 #ifdef GR_RPCSERVER_ENABLED 1652 std::string
units()
const {
return d_units; }
1657 void units(std::string u) { d_units = u; }
1664 std::string d_units, d_desc;
Definition: rpcregisterhelpers.h:733
void unregisterConfigureCallback(const std::string &id) override=0
Definition: rpccallbackregister_base.h:82
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:596
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:455
Tfrom get()
Definition: rpcregisterhelpers.h:1399
~rpcbasic_register_trigger() override
Definition: rpcregisterhelpers.h:1048
PMT_API pmt_t from_complex(double re, double im)
Return a complex number constructed of the given real and imaginary parts.
rpcbasic_inserter(T *source, std::complex< double >(T::*func)())
Definition: rpcregisterhelpers.h:704
pmt::pmt_t min() const
Definition: rpcregisterhelpers.h:1330
T * _source
Definition: rpcregisterhelpers.h:172
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:1284
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:1057
rpcbasic_inserter(T *source, std::vector< signed char >(T::*func)())
Definition: rpcregisterhelpers.h:476
GR_RUNTIME_API const pmt::pmt_t vec()
PMT_API pmt_t init_s32vector(size_t k, const int32_t *data)
Templated parent class for registering a ControlPort Extractor.
Definition: rpcregisterhelpers.h:181
rpcbasic_register_variable()
Definition: rpcregisterhelpers.h:1410
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:625
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:1659
void set(Tfrom _variable)
Definition: rpcregisterhelpers.h:1538
PMT_API std::complex< double > to_complex(pmt_t z)
rpcbasic_inserter(T *source, std::vector< int >(T::*func)())
Definition: rpcregisterhelpers.h:533
T * _source
Definition: rpcregisterhelpers.h:115
rpcbasic_register_variable_rw()
Definition: rpcregisterhelpers.h:1520
rpcbasic_inserter(T *source, std::vector< std::complex< float >>(T::*func)() const)
Definition: rpcregisterhelpers.h:584
void unregisterHandlerCallback(const std::string &id) override=0
GR_RUNTIME_API const pmt::pmt_t msg()
std::string description() const
Definition: rpcregisterhelpers.h:1653
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:804
rpcbasic_inserter(T *source, std::vector< short >(T::*func)() const)
Definition: rpcregisterhelpers.h:499
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:676
Tfrom * d_variable
Definition: rpcregisterhelpers.h:1398
void units(std::string u)
Definition: rpcregisterhelpers.h:1657
Registers a read/write function to get and set a parameter over ControlPort.
Definition: rpcregisterhelpers.h:1511
Base class for registering a ControlPort Handler. Acts as a message acceptor.
Definition: rpcregisterhelpers.h:157
~rpchandler_base() override
Definition: rpcregisterhelpers.h:164
rpcbasic_handler(T *source, const char *handler)
Definition: rpcregisterhelpers.h:184
rpcbasic_inserter(T *source, std::vector< int64_t >(T::*func)() const)
Definition: rpcregisterhelpers.h:555
Base class for registering a ControlPort function.
Definition: rpcregisterhelpers.h:723
rpcbasic_inserter(T *source, std::vector< short >(T::*func)())
Definition: rpcregisterhelpers.h:505
PMT_API pmt_t init_s8vector(size_t k, const int8_t *data)
void description(std::string d)
Definition: rpcregisterhelpers.h:1059
void registerHandlerCallback(const std::string &id, const handlerCallback_t callback) override=0
Virtual base class that produces messages.
Definition: msg_producer.h:24
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:682
DisplayType default_display() const
Definition: rpcregisterhelpers.h:1655
rpcbasic_inserter(T *source, std::vector< uint8_t >(T::*func)())
Definition: rpcregisterhelpers.h:647
priv_lvl_t
Definition: rpccallbackregister_base.h:34
void default_display(DisplayType d)
Definition: rpcregisterhelpers.h:925
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:567
pmt::pmt_t max() const
Definition: rpcregisterhelpers.h:912
Registers a message handler function to post a message to a block's handler.
Definition: rpcregisterhelpers.h:1595
void description(std::string d)
Definition: rpcregisterhelpers.h:1658
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:1343
void units(std::string u)
Definition: rpcregisterhelpers.h:1341
Base class for registering a ControlPort Inserter. Produces a message.
Definition: rpcregisterhelpers.h:102
~rpcbasic_register_handler() override
Definition: rpcregisterhelpers.h:1645
pmt::pmt_t max() const
Definition: rpcregisterhelpers.h:1331
PMT_API pmt_t intern(const std::string &s)
Alias for pmt_string_to_symbol.
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:1335
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:482
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:653
PMT_API const std::string symbol_to_string(const pmt_t &sym)
~rpcbasic_register_get() override
Definition: rpcregisterhelpers.h:1323
rpcbasic_inserter(T *source, std::vector< std::complex< float >>(T::*func)())
Definition: rpcregisterhelpers.h:590
static int count
Definition: rpcregisterhelpers.h:727
void set_max(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:1339
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:449
Definition: rpccallbackregister_base.h:34
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:140
Registers a 'get' function to get a parameter over ControlPort.
Definition: rpcregisterhelpers.h:1106
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:924
Templated parent class for registering a ControlPort Inserter.
Definition: rpcregisterhelpers.h:125
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:539
pmt::pmt_t min() const
Definition: rpcregisterhelpers.h:911
std::string description() const
Definition: rpcregisterhelpers.h:1056
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:1561
pmt::pmt_t def() const
Definition: rpcregisterhelpers.h:913
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:865
virtual ~rpcbasic_base()
Definition: rpcregisterhelpers.h:737
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:1614
void set_def(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:1340
std::string units() const
Definition: rpcregisterhelpers.h:1652
constexpr uint32_t DISPNULL
DisplayType Plotting types.
Definition: rpccallbackregister_base.h:20
rpchandler_base(T *source, const char *handler)
Definition: rpcregisterhelpers.h:160
void registerQueryCallback(const std::string &id, const queryCallback_t callback) override=0
std::string description() const
Definition: rpcregisterhelpers.h:915
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:1447
rpcinserter_base(T *source, Tfrom(T::*func)())
Definition: rpcregisterhelpers.h:105
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:1241
void registerConfigureCallback(const std::string &id, const configureCallback_t callback) override=0
rpcbasic_inserter(T *source, std::vector< int64_t >(T::*func)())
Definition: rpcregisterhelpers.h:561
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:1135
Virtual base class that accepts messages.
Definition: messages/msg_accepter.h:24
rpcbasic_inserter(T *source, uint64_t(T::*func)() const)
Definition: rpcregisterhelpers.h:443
void default_display(DisplayType d)
Definition: rpcregisterhelpers.h:1660
void set_max(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:920
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:1402
static rpcserver_booter_base * get()
PMT_API pmt_t init_s64vector(size_t k, const int64_t *data)
#define PMT_NIL
Definition: pmt.h:121
rpcbasic_inserter(T *source, std::vector< float >(T::*func)())
Definition: rpcregisterhelpers.h:619
std::string description() const
Definition: rpcregisterhelpers.h:1334
std::string units() const
Definition: rpcregisterhelpers.h:914
rpcbasic_inserter(T *source, std::vector< int >(T::*func)() const)
Definition: rpcregisterhelpers.h:527
pmt::pmt_t def() const
Definition: rpcregisterhelpers.h:1332
Registers a 'trigger' function to trigger an action over ControlPort.
Definition: rpcregisterhelpers.h:962
Registers a read-only function to get a parameter over ControlPort.
Definition: rpcregisterhelpers.h:1394
rpcbasic_inserter(T *source, std::vector< float >(T::*func)() const)
Definition: rpcregisterhelpers.h:613
~rpcbasic_register_set() override
Definition: rpcregisterhelpers.h:903
void set_def(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:921
PMT_API pmt_t init_f32vector(size_t k, const float *data)
void unregisterQueryCallback(const std::string &id) override=0
rpcbasic_inserter(T *source, std::vector< uint8_t >(T::*func)() const)
Definition: rpcregisterhelpers.h:641
const char * _handler
Definition: rpcregisterhelpers.h:173
rpcbasic_register_get< rpcbasic_register_variable< Tfrom >, Tfrom > d_rpc_reg
Definition: rpcregisterhelpers.h:1397
pmt::pmt_t retrieve() override
send msg to msg_producer
Definition: rpcregisterhelpers.h:108
rpcinserter_base()
Definition: rpcregisterhelpers.h:106
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:710
DisplayType default_display() const
Definition: rpcregisterhelpers.h:1336
Tfrom(T::* _func)()
Definition: rpcregisterhelpers.h:116
std::string units() const
Definition: rpcregisterhelpers.h:1333
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:1654
PMT_API pmt_t init_c32vector(size_t k, const std::complex< float > *data)
GR_RUNTIME_API gr::block_registry global_block_registry
rpcbasic_inserter(T *source, std::complex< float >(T::*func)() const)
Definition: rpcregisterhelpers.h:670
DisplayType default_display() const
Definition: rpcregisterhelpers.h:917
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:1178
rpcbasic_inserter(T *source, Tfrom(T::*func)())
Definition: rpcregisterhelpers.h:134
void set_min(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:919
rpcbasic_base()
Definition: rpcregisterhelpers.h:736
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:1025
void units(std::string u)
Definition: rpcregisterhelpers.h:922
void default_display(DisplayType d)
Definition: rpcregisterhelpers.h:1344
rpcbasic_inserter(T *source, std::complex< double >(T::*func)() const)
Definition: rpcregisterhelpers.h:698
void description(std::string d)
Definition: rpcregisterhelpers.h:923
void set_min(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:1338
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:984
rpc_register_base()
Definition: rpcregisterhelpers.h:724
PMT_API pmt_t init_s16vector(size_t k, const int16_t *data)
rpcbasic_inserter(T *source, Tfrom(T::*func)() const)
Definition: rpcregisterhelpers.h:128
basic_block_sptr block_lookup(pmt::pmt_t symbol)
rpcbasic_inserter(T *source, std::vector< signed char >(T::*func)() const)
Definition: rpcregisterhelpers.h:470
void description(std::string d)
Definition: rpcregisterhelpers.h:1342
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:511
static pmt_t mp(const std::string &s)
Make pmt symbol.
Definition: pmt_sugar.h:24
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:916
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:1060
std::shared_ptr< pmt_base > pmt_t
typedef for shared pointer (transparent reference counting).
Definition: pmt.h:83
void post(pmt::pmt_t which_port, pmt::pmt_t msg) override
send msg to msg_accepter on port which_port
Definition: rpcregisterhelpers.h:166
uint32_t DisplayType
Definition: rpccallbackregister_base.h:17
Registers a 'set' function to set a parameter over ControlPort.
Definition: rpcregisterhelpers.h:777