26     m_sensorLabel = 
"RFID";
    38     std::thread(dummy_startDriver, 
this).detach();
    50     std::stringstream cmdline;
    51     std::cout << 
"Waiting for the driver to start ... ";
    54     cmdline << driver_path << 
" " << reader_name.c_str() << 
" " << IPm.c_str()
    58     std::this_thread::sleep_for(2s);
    60     const int ret = ::system(cmdline.str().c_str());
    62         std::cerr << 
"[CImpinjRFID::startDriver] Error (" << ret
    63                   << 
") invoking command:\n"    64                   << cmdline.str() << std::endl;
    69     const std::string& iniSection)
    93     IPm = configSource.
read_string(iniSection, 
"local_IP", 
"127.0.0.1", 
false);
    94     reader_name = configSource.
read_string(iniSection, 
"reader_name", 
"", 
true);
    95     port = configSource.
read_int(iniSection, 
"listen_port", 0, 
true);
    96     driver_path = configSource.
read_string(iniSection, 
"driver_path", 
"", 
true);
   110         server = std::make_unique<mrpt::comms::CServerTCPSocket>(port);
   113     client = server->accept();
   115     std::this_thread::sleep_for(1s);
   127         bool receivedSomething = 
false;
   136         client->writeAsync(cmd, 10);
   139         while (client->readAsync(msg, 34, 100) > 0)
   141             receivedSomething = 
true;
   147                 std::cerr << 
"[CImpinjRFID::getObservation] Unexpected format "   148                              "in sensor data! (skipping).\n";
   151             const char ant_port = *ant_port_ptr;
   165             new_tag.
epc = std::string(epc);
   166             new_tag.
power = atof(rx_pwr);
   173         if (receivedSomething)
   178     catch (
const std::exception& e)
   180         std::cerr << e.what() << std::endl;
   194     client->writeAsync(cmd, 10);  
 std::string antennaPort
Port of the antenna that did the reading. 
 
std::string read_string(const std::string §ion, const std::string &name, const std::string &defaultValue, bool failIfNotFound=false) const
 
std::string std::string format(std::string_view fmt, ARGS &&... args)
 
This class implements an interface to an Impinj RFID reader. 
 
Contains classes for various device interfaces. 
 
char * strcpy(char *dest, size_t destSize, const char *source) noexcept
An OS-independent version of strcpy. 
 
int read_int(const std::string §ion, const std::string &name, int defaultValue, bool failIfNotFound=false) const
 
void loadConfig_sensorSpecific(const mrpt::config::CConfigFileBase &configSource, const std::string §ion) override
Loads specific configuration for the device from a given source of configuration parameters, for example, an ".ini" file, loading from the section "[iniSection]" (see config::CConfigFileBase and derived classes) 
 
This class allows loading and storing values and vectors of different types from a configuration text...
 
void initialize() override
This method can or cannot be implemented in the derived class, depending on the need for it...
 
std::string epc
EPC code of the observed tag. 
 
char * strtok(char *str, const char *strDelimit, char **context) noexcept
An OS-independent method for tokenizing a string. 
 
void startDriver()
start the external driver 
 
double power
The power or signal strength as sensed by the RFID receiver (in dBm) 
 
static Ptr Create(Args &&... args)
 
#define IMPLEMENTS_GENERIC_SENSOR(class_name, NameSpace)
This must be inserted in all CGenericSensor classes implementation files: 
 
static void dummy_startDriver(CImpinjRFID *o)
 
std::string sensorLabel
An arbitrary label that can be used to identify the sensor. 
 
void connect()
Connect to the reader. 
 
OBSERVATION_T::Ptr getObservation(mrpt::obs::CSensoryFrame::Ptr &observations, mrpt::obs::CObservation::Ptr &observation, bool priority_to_sf=true)
Given an mrpt::obs::CSensoryFrame and a mrpt::obs::CObservation pointer if a OBSERVATION_T type obser...
 
bool getObservation(mrpt::obs::CObservationRFID &obs)
Gets the information of the tags as a timestamped observation NOTE: Deprecated, use getObservations i...
 
std::vector< TTagReading > tag_readings
The vector of individual tag observations. 
 
Each of the individual readings of a RFID tag. 
 
void doProcess() override
This method will be invoked at a minimum rate of "process_rate" (Hz) 
 
This represents one or more RFID tags observed by a receiver. 
 
void closeReader()
Close the connection to the reader.