73#ifndef NIDAS_DYNLD_ISFF_WISARDMOTE_H
74#define NIDAS_DYNLD_ISFF_WISARDMOTE_H
90namespace nidas {
namespace dynld {
namespace isff {
133 std::list<const Sample*>& results);
151 (
const char *cp,
const char *eos,
152 unsigned int nfields,
198 const char *
checkEOM(
const char *cp,
205 const char *
checkCRC(
const char *cp,
219 int readMoteId(
const char* &cp,
const char*eos);
235 const char*
unpackInt16(
const char *,
const char *,
243 const char*
unpackInt32(
const char *,
const char *,
263 const char*
unpackTRH(
const char *,
const char *,
267 const char*
unpackTsoil(
const char *,
const char *,
271 const char*
unpackGsoil(
const char *,
const char *,
275 const char*
unpackQsoil(
const char *,
const char *,
279 const char*
unpackTP01(
const char *,
const char *,
287 const char*
unpackXbee(
const char *,
const char *,
291 const char*
unpackPower(
const char *,
const char *,
295 const char*
unpackRnet(
const char *,
const char *,
299 const char*
unpackRsw(
const char *,
const char *,
303 const char*
unpackRlw(
const char *,
const char *,
307 const char*
unpackRlwKZ(
const char *,
const char *,
311 const char*
unpackCNR2(
const char *,
const char *,
315 const char*
unpackNR01(
const char *,
const char *,
319 const char*
unpackRsw2(
const char *,
const char *,
343 static std::map<int, std::pair<unpack_t,unsigned int> >
_unpackMap;
Class describing a group of variables that are sampled and handled together.
Definition SampleTag.h:88
Interface to a data sample.
Definition Sample.h:190
Support for a sensor that is sending packets on a TCP socket, a UDP socket, a Bluetooth RF Comm socke...
Definition SerialSensor.h:65
Definition WisardMote.h:392
dsm_time_t timeLast[NTSOILS]
Definition WisardMote.h:395
TsoilData()
Definition WisardMote.h:396
float tempLast[NTSOILS]
Definition WisardMote.h:394
Definition WisardMote.h:126
static std::map< int, std::string > _typeNames
Definition WisardMote.h:345
void addMoteSampleTag(SampleTag *tag)
Private method to add tags of processed samples to this WisardMote.
Definition WisardMote.cc:243
const char * unpackRnet(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1288
const char * unpackTRH(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1026
static std::map< int, std::pair< unpack_t, unsigned int > > _unpackMap
Mapping between sensor type and function which parses the data.
Definition WisardMote.h:343
void addImpliedSampleTags(const std::vector< int > &motes)
Add processed sample tags for all sensor types indicated as WST_IMPLIED in _samps.
Definition WisardMote.cc:260
const char * unpackQsoil(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1152
const char * unpackXbee(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1236
static bool _functionsMapped
Definition WisardMote.h:338
const char * unpackInt16(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:780
WisardMote * _processorSensor
Pointer to the WisardMote that does the processing for the samples with this sensor id.
Definition WisardMote.h:361
static std::map< dsm_sample_id_t, WisardMote * > _processorSensors
Because the Wisard mote data has internal identifiers, more than one WisardMote can be declared with ...
Definition WisardMote.h:334
std::map< int, std::map< int, int > > _sensorSerialNumbersByMoteIdAndType
Sensor serial numbers, from message.
Definition WisardMote.h:366
const char * unpackRsw(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1305
const char * unpackInt32(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:816
std::map< int, int > _tdiffByMoteId
Definition WisardMote.h:372
const char * unpackTsoil(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1065
std::map< int, unsigned int > _unconfiguredMotes
Definition WisardMote.h:379
static SampInfo _samps[]
Definition WisardMote.h:336
const char * unpack10thSec(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:897
const char * checkEOM(const char *cp, const char *eom, nidas::core::dsm_time_t ttag)
Check for correct EOM.
Definition WisardMote.cc:549
void convert(SampleTag *stag, SampleT< float > *osamp, float *results=0)
After unpacking data from the Wisard block, pass it through the usual Variable conversions and option...
Definition WisardMote.cc:458
std::map< int, std::map< int, unsigned int > > _noSampleTags
Definition WisardMote.h:381
WisardMote & operator=(const WisardMote &)
No assignment.
void validate()
Implementation of DSMSensor::validate for a Character Sensor.
Definition WisardMote.cc:91
const char * unpackPower(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1253
bool readHead(const char *&cp, const char *eom, dsm_time_t ttag, struct MessageHeader *)
Read initial portion of a Wisard message, filling in struct MessageHeader.
Definition WisardMote.cc:488
const char * unpackAccumSec(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:834
std::map< int, unsigned int > _badCRCsByMoteId
Definition WisardMote.h:370
void createSampleTags(const SampleTag *stag, const std::vector< int > &motes, std::list< SampleTag * > &newtags)
Create SampleTags from the configuration SampleTag.
Definition WisardMote.cc:159
std::map< int, std::map< int, unsigned int > > _numBadSensorTypes
For each mote id, the number of unrecognized sensor types.
Definition WisardMote.h:377
std::set< int > _nowarnSensorTypes
Definition WisardMote.h:385
static void initFuncMap()
Definition WisardMote.cc:1432
std::set< int > _ignoredSensorTypes
Definition WisardMote.h:383
const char * unpackPicTime(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:742
const char * unpackGsoil(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1135
const char * unpackPicTimeFields(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:965
void checkLessUsedSensors(void)
Create sets of WST_IGNORED and WST_NOWARN sensors, by looping over _samps, and checking the type fiel...
Definition WisardMote.cc:280
SampleTag * createSampleTag(SampInfo &sinfo, int mote, int stype)
create a SampleTag from contents of a SampInfo object
Definition WisardMote.cc:304
std::map< int, int > _sequenceNumbersByMoteId
Definition WisardMote.h:368
const char * unpackRlw(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1322
const char * unpackRsw2(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1387
const char * unpackCNR2(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1369
const char * unpackRlwKZ(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1346
const char * unpackUint32(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:798
static const nidas::util::EndianConverter * fromLittle
Definition WisardMote.h:156
WisardMote(const WisardMote &)
No copying.
const char * checkCRC(const char *cp, const char *eom, nidas::core::dsm_time_t ttag)
Verify crc.
Definition WisardMote.cc:578
int readMoteId(const char *&cp, const char *eos)
read mote id from a Wisard message.
Definition WisardMote.cc:466
bool process(const Sample *insamp, std::list< const Sample * > &results)
Process a raw sample, which in this case means do a sscanf on the character string contents,...
Definition WisardMote.cc:359
const char *(WisardMote::* unpack_t)(const char *cp, const char *eos, unsigned int nfields, const struct MessageHeader *hdr, SampleTag *stag, SampleT< float > *osamp)
typedef for the functions that parse the message data for each sensor type.
Definition WisardMote.h:151
WisardMote()
Definition WisardMote.cc:70
const char * unpackUint16(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:762
const char * unpackTP01(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1169
const char * unpackNR01(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1405
const char * unpack100thSec(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:879
const char * unpackStatus(const char *, const char *, unsigned int, const struct MessageHeader *, SampleTag *, SampleT< float > *)
Definition WisardMote.cc:1210
std::map< dsm_sample_id_t, SampleTag * > _sampleTagsById
The processed sample tags for each id.
Definition WisardMote.h:353
std::map< dsm_sample_id_t, TsoilData > _tsoilData
Definition WisardMote.h:403
static const unsigned int NTSOILS
Definition WisardMote.h:387
Virtual base class declaring methods for converting numeric values between little-endian and big-endi...
Definition EndianConverter.h:304
The essential core classes of nidas.
Definition A2DConverter.h:31
const float floatNAN
Value of a float NAN for general use.
Definition Sample.cc:31
Sample * getSample(sampleType type, unsigned int len)
A convienence method for getting a sample of an enumerated type from a pool.
Definition Sample.cc:70
long long dsm_time_t
Posix time in microseconds, the number of non-leap microseconds since 1970 Jan 1 00:00 UTC.
Definition Sample.h:62
WISARD_SAMPLE_TYPE
WST_IMPLIED: create sample tags for these sensor types, even if they aren't found in the XML.
Definition WisardMote.h:111
@ WST_NORMAL
Definition WisardMote.h:111
@ WST_IGNORED
Definition WisardMote.h:111
@ WST_NOWARN
Definition WisardMote.h:111
@ WST_IMPLIED
Definition WisardMote.h:111
Root namespace for the NCAR In-Situ Data Acquisition Software.
Definition A2DConverter.h:31
Definition WisardMote.h:114
enum WISARD_SAMPLE_TYPE type
Definition WisardMote.h:122
int lastst
Definition WisardMote.h:120
struct VarInfo variables[9]
Definition WisardMote.h:121
int firstst
firstst and lastst are the range of sensor types containing the list of variables.
Definition WisardMote.h:119
Definition WisardMote.h:95
const char * name
Definition WisardMote.h:96
const char * units
Definition WisardMote.h:97
const char * longname
Definition WisardMote.h:98
const char * plotrange
Definition WisardMote.h:99