23#ifndef RPCREGISTERHELPERS_H
24#define RPCREGISTERHELPERS_H
36typedef boost::shared_ptr<rpcbasic_base> rpcbasic_sptr;
49template <
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");
91template <
typename T,
typename Tto>
111template <
typename T,
typename Tfrom>
134template <
typename T,
typename Tfrom>
479 std::vector<signed char> vec(
508 std::vector<short> vec(
565 std::vector<int64_t> vec(
594 std::vector<std::complex<float> > vec(
623 std::vector<float> vec(
652 std::vector<uint8_t> vec(
681 std::complex<float> k(
710 std::complex<double> k(
774template <
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;
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
1103template <
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;
1391template <
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_ =
"",
1508template <
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,
1592template <
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;
GR_RUNTIME_API gr::block_registry global_block_registry
Definition: rpccallbackregister_base.h:95
basic_block_sptr block_lookup(pmt::pmt_t symbol)
Virtual base class that accepts messages.
Definition: messages/msg_accepter.h:36
Virtual base class that produces messages.
Definition: msg_producer.h:36
Definition: rpcregisterhelpers.h:732
rpcbasic_base()
Definition: rpcregisterhelpers.h:734
virtual ~rpcbasic_base()
Definition: rpcregisterhelpers.h:735
Templated parent class for registering a ControlPort Extractor.
Definition: rpcregisterhelpers.h:189
rpcbasic_handler(T *source, const char *handler)
Definition: rpcregisterhelpers.h:191
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:708
rpcbasic_inserter(T *source, std::complex< double >(T::*func)())
Definition: rpcregisterhelpers.h:702
rpcbasic_inserter(T *source, std::complex< double >(T::*func)() const)
Definition: rpcregisterhelpers.h:696
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:679
rpcbasic_inserter(T *source, std::complex< float >(T::*func)())
Definition: rpcregisterhelpers.h:673
rpcbasic_inserter(T *source, std::complex< float >(T::*func)() const)
Definition: rpcregisterhelpers.h:667
rpcbasic_inserter(T *source, std::vector< float >(T::*func)())
Definition: rpcregisterhelpers.h:615
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:621
rpcbasic_inserter(T *source, std::vector< float >(T::*func)() const)
Definition: rpcregisterhelpers.h:609
rpcbasic_inserter(T *source, std::vector< int64_t >(T::*func)() const)
Definition: rpcregisterhelpers.h:551
rpcbasic_inserter(T *source, std::vector< int64_t >(T::*func)())
Definition: rpcregisterhelpers.h:557
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:563
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:535
rpcbasic_inserter(T *source, std::vector< int >(T::*func)())
Definition: rpcregisterhelpers.h:529
rpcbasic_inserter(T *source, std::vector< int >(T::*func)() const)
Definition: rpcregisterhelpers.h:523
rpcbasic_inserter(T *source, std::vector< short >(T::*func)() const)
Definition: rpcregisterhelpers.h:494
rpcbasic_inserter(T *source, std::vector< short >(T::*func)())
Definition: rpcregisterhelpers.h:500
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:506
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:477
rpcbasic_inserter(T *source, std::vector< signed char >(T::*func)() const)
Definition: rpcregisterhelpers.h:465
rpcbasic_inserter(T *source, std::vector< signed char >(T::*func)())
Definition: rpcregisterhelpers.h:471
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:592
rpcbasic_inserter(T *source, std::vector< std::complex< float > >(T::*func)())
Definition: rpcregisterhelpers.h:586
rpcbasic_inserter(T *source, std::vector< std::complex< float > >(T::*func)() const)
Definition: rpcregisterhelpers.h:580
rpcbasic_inserter(T *source, std::vector< uint8_t >(T::*func)() const)
Definition: rpcregisterhelpers.h:638
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:650
rpcbasic_inserter(T *source, std::vector< uint8_t >(T::*func)())
Definition: rpcregisterhelpers.h:644
rpcbasic_inserter(T *source, uint64_t(T::*func)() const)
Definition: rpcregisterhelpers.h:438
rpcbasic_inserter(T *source, uint64_t(T::*func)())
Definition: rpcregisterhelpers.h:444
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:450
Templated parent class for registering a ControlPort Inserter.
Definition: rpcregisterhelpers.h:136
rpcbasic_inserter(T *source, Tfrom(T::*func)() const)
Definition: rpcregisterhelpers.h:138
rpcbasic_inserter(T *source, Tfrom(T::*func)())
Definition: rpcregisterhelpers.h:144
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:1105
std::string units() const
Definition: rpcregisterhelpers.h:1331
void set_def(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:1338
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
pmt::pmt_t def() const
Definition: rpcregisterhelpers.h:1330
DisplayType default_display() const
Definition: rpcregisterhelpers.h:1334
void description(std::string d)
Definition: rpcregisterhelpers.h:1340
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
void set_min(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:1336
std::string description() const
Definition: rpcregisterhelpers.h:1332
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
void default_display(DisplayType d)
Definition: rpcregisterhelpers.h:1342
pmt::pmt_t max() const
Definition: rpcregisterhelpers.h:1329
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:1333
void units(std::string u)
Definition: rpcregisterhelpers.h:1339
pmt::pmt_t min() const
Definition: rpcregisterhelpers.h:1328
void set_max(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:1337
~rpcbasic_register_get()
Definition: rpcregisterhelpers.h:1321
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
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:1341
Registers a message handler function to post a message to a block's handler.
Definition: rpcregisterhelpers.h:1594
void description(std::string d)
Definition: rpcregisterhelpers.h:1656
std::string description() const
Definition: rpcregisterhelpers.h:1651
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:1657
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
DisplayType default_display() const
Definition: rpcregisterhelpers.h:1653
~rpcbasic_register_handler()
Definition: rpcregisterhelpers.h:1643
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:1652
void units(std::string u)
Definition: rpcregisterhelpers.h:1655
std::string units() const
Definition: rpcregisterhelpers.h:1650
void default_display(DisplayType d)
Definition: rpcregisterhelpers.h:1658
Registers a read/write function to get and set a parameter over ControlPort.
Definition: rpcregisterhelpers.h:1510
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
void set(Tfrom _variable)
Definition: rpcregisterhelpers.h:1536
rpcbasic_register_variable_rw()
Definition: rpcregisterhelpers.h:1518
Registers a read-only function to get a parameter over ControlPort.
Definition: rpcregisterhelpers.h:1393
Tfrom * d_variable
Definition: rpcregisterhelpers.h:1396
Tfrom get()
Definition: rpcregisterhelpers.h:1397
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
void setptr(Tfrom *_variable)
Definition: rpcregisterhelpers.h:1400
rpcbasic_register_variable()
Definition: rpcregisterhelpers.h:1408
rpcbasic_register_get< rpcbasic_register_variable< Tfrom >, Tfrom > d_rpc_reg
Definition: rpcregisterhelpers.h:1395
Base class for registering a ControlPort Handler. Acts as a message acceptor.
Definition: rpcregisterhelpers.h:168
T * _source
Definition: rpcregisterhelpers.h:179
rpchandler_base(T *source, const char *handler)
Definition: rpcregisterhelpers.h:170
void post(pmt::pmt_t which_port, pmt::pmt_t msg)
send msg to msg_accepter on port which_port
Definition: rpcregisterhelpers.h:176
~rpchandler_base()
Definition: rpcregisterhelpers.h:174
const char * _handler
Definition: rpcregisterhelpers.h:180
Base class for registering a ControlPort Inserter. Produces a message.
Definition: rpcregisterhelpers.h:113
Tfrom(T::* _func)()
Definition: rpcregisterhelpers.h:126
rpcinserter_base()
Definition: rpcregisterhelpers.h:116
pmt::pmt_t retrieve()
send msg to msg_producer
Definition: rpcregisterhelpers.h:118
T * _source
Definition: rpcregisterhelpers.h:125
rpcinserter_base(T *source, Tfrom(T::*func)())
Definition: rpcregisterhelpers.h:115
static rpcserver_booter_base * get()
virtual void registerConfigureCallback(const std::string &id, const configureCallback_t callback)=0
virtual void unregisterQueryCallback(const std::string &id)=0
virtual void unregisterHandlerCallback(const std::string &id)=0
virtual void registerHandlerCallback(const std::string &id, const handlerCallback_t callback)=0
virtual void unregisterConfigureCallback(const std::string &id)=0
virtual void registerQueryCallback(const std::string &id, const queryCallback_t callback)=0
virtual rpcserver_base * i()=0
static purpose_t msg
Definition: source_logger.h:39
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 std::complex< double > to_complex(pmt_t z)
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 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:35
boost::intrusive_ptr< pmt_base > pmt_t
typedef for shared pointer (transparent reference counting). See http://www.boost....
Definition: pmt.h:56
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:103
priv_lvl_t
Definition: rpccallbackregister_base.h:46
@ RPC_PRIVLVL_MIN
Definition: rpccallbackregister_base.h:46
uint32_t DisplayType
Definition: rpccallbackregister_base.h:29
const uint32_t DISPNULL
DisplayType Plotting types.
Definition: rpccallbackregister_base.h:32
Base class for registering a ControlPort function.
Definition: rpcregisterhelpers.h:721
rpc_register_base()
Definition: rpcregisterhelpers.h:722
static int count
Definition: rpcregisterhelpers.h:725
Registers a 'set' function to set a parameter over ControlPort.
Definition: rpcregisterhelpers.h:775
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
std::string units() const
Definition: rpcregisterhelpers.h:912
void description(std::string d)
Definition: rpcregisterhelpers.h:921
pmt::pmt_t min() const
Definition: rpcregisterhelpers.h:909
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
void set_max(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:918
std::string description() const
Definition: rpcregisterhelpers.h:913
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:922
void set_min(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:917
void set_def(pmt::pmt_t p)
Definition: rpcregisterhelpers.h:919
pmt::pmt_t def() const
Definition: rpcregisterhelpers.h:911
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:914
void default_display(DisplayType d)
Definition: rpcregisterhelpers.h:923
DisplayType default_display() const
Definition: rpcregisterhelpers.h:915
pmt::pmt_t max() const
Definition: rpcregisterhelpers.h:910
void units(std::string u)
Definition: rpcregisterhelpers.h:920
~rpcbasic_register_set()
Definition: rpcregisterhelpers.h:901
Registers a 'trigger' function to trigger an action over ControlPort.
Definition: rpcregisterhelpers.h:960
~rpcbasic_register_trigger()
Definition: rpcregisterhelpers.h:1046
void description(std::string d)
Definition: rpcregisterhelpers.h:1057
std::string description() const
Definition: rpcregisterhelpers.h:1054
priv_lvl_t privilege_level() const
Definition: rpcregisterhelpers.h:1055
void privilege_level(priv_lvl_t p)
Definition: rpcregisterhelpers.h:1058
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
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