KPN Things Device SDK
senml_pack.h
Go to the documentation of this file.
1/* _ __ ____ _ _
2 * | |/ / | _ \ | \ | |
3 * | ' / | |_) | | \| |
4 * | . \ | __/ | |\ |
5 * |_|\_\ |_| |_| \_|
6 *
7 * (c) 2020 KPN
8 * License: MIT License.
9 * Author: Joseph Verburg, Jan Bogaerts
10 *
11 * pack (document) without base values headers
12 */
13
14#ifndef THINGSML_SENML_PACK
15#define THINGSML_SENML_PACK
16
17#include "defaults.h"
18#include "senml_basepack.h"
19
20#define PACK_ACTUATOR_SIGNATURE void (*callback)(const char *, const char *, const void *, int, SenMLDataType)
21
68class SenMLPack : public SenMLBasePack {
69 friend class SenMLJsonListener;
70 friend class SenMLCborParser;
71
72 public:
76 SenMLPack() : _bn(NULL), _bu(SENML_UNIT_NONE), _bt(NAN){};
77
83 SenMLPack(const char *baseName)
84 : _bn(baseName), // mbed compiler doesnt support delegating constructors
85 _bu(SENML_UNIT_NONE), _bt(NAN){};
86
94 SenMLPack(const char *baseName, SenMLUnit baseUnit) : _bn(baseName), _bu(baseUnit), _bt(NAN){};
95
107 SenMLPack(const char *baseName, SenMLUnit baseUnit, double baseTime)
108 : _bn(baseName), _bu(baseUnit), _bt(baseTime){};
109
123 SenMLPack(PACK_ACTUATOR_SIGNATURE) : _bn(NULL), _bu(SENML_UNIT_NONE), _bt(NAN), callback(callback){};
124
140 SenMLPack(const char *baseName, PACK_ACTUATOR_SIGNATURE)
141 : _bn(baseName), _bu(SENML_UNIT_NONE), _bt(NAN), callback(callback){};
142
160 SenMLPack(const char *baseName, SenMLUnit baseUnit, PACK_ACTUATOR_SIGNATURE)
161 : _bn(baseName), _bu(baseUnit), _bt(NAN), callback(callback){};
162
184 SenMLPack(const char *baseName, SenMLUnit baseUnit, double baseTime, PACK_ACTUATOR_SIGNATURE)
185 : _bn(baseName), _bu(baseUnit), _bt(baseTime), callback(callback){};
186
191
201 void setBaseName(const char *name);
202
208 const char *getBaseName();
209
217 void setBaseUnit(SenMLUnit unit);
218
226 return this->_bu;
227 };
228
235 void setBaseTime(double time);
236
243 void setBaseTimeSilently(double time);
244
251 inline double getBaseTime() {
252 return this->_bt;
253 };
254
262 virtual int fieldsToJson();
263
272 virtual int fieldsToCbor();
273
274 protected:
275 bool isActuator() {
276 return true;
277 }
278
279 // when the user did not register a specific record actuator, this will be called.
280 inline void actuate(const char *pack, const char *record, const void *value, int valueLength,
281 SenMLDataType dataType) {
282 if (this->callback)
283 this->callback(pack, record, value, valueLength, dataType);
284 };
285
286 virtual int getFieldLength();
287
288 private:
289 const char *_bn = NULL;
290 SenMLUnit _bu;
291 double _bt;
292
294};
295
296#endif // THINGSML_SENML_PACK
Definition: senml_basepack.h:24
Definition: senml_cbor_parser.h:31
Definition: senml_json_parser.h:23
Definition: senml_pack.h:68
bool isActuator()
Definition: senml_pack.h:275
SenMLPack(const char *baseName)
Definition: senml_pack.h:83
SenMLPack(const char *baseName, SenMLUnit baseUnit, double baseTime, PACK_ACTUATOR_SIGNATURE)
Definition: senml_pack.h:184
void setBaseName(const char *name)
Definition: senml_pack.cpp:28
~SenMLPack()
Definition: senml_pack.h:190
SenMLPack(const char *baseName, SenMLUnit baseUnit, PACK_ACTUATOR_SIGNATURE)
Definition: senml_pack.h:160
virtual int getFieldLength()
Definition: senml_pack.cpp:54
SenMLPack(const char *baseName, SenMLUnit baseUnit, double baseTime)
Definition: senml_pack.h:107
SenMLPack(const char *baseName, PACK_ACTUATOR_SIGNATURE)
Definition: senml_pack.h:140
SenMLPack(PACK_ACTUATOR_SIGNATURE)
Definition: senml_pack.h:123
void setBaseTime(double time)
Definition: senml_pack.cpp:40
void setBaseTimeSilently(double time)
Definition: senml_pack.cpp:50
SenMLPack()
Definition: senml_pack.h:76
virtual int fieldsToCbor()
Definition: senml_pack.cpp:102
const char * getBaseName()
Definition: senml_pack.cpp:32
SenMLPack(const char *baseName, SenMLUnit baseUnit)
Definition: senml_pack.h:94
SenMLUnit getBaseUnit()
Definition: senml_pack.h:225
void actuate(const char *pack, const char *record, const void *value, int valueLength, SenMLDataType dataType)
Definition: senml_pack.h:280
void setBaseUnit(SenMLUnit unit)
Definition: senml_pack.cpp:36
double getBaseTime()
Definition: senml_pack.h:251
virtual int fieldsToJson()
Definition: senml_pack.cpp:74
SenMLUnit
Definition: senml_enums.h:97
@ SENML_UNIT_NONE
Definition: senml_enums.h:98
SenMLDataType
Definition: senml_enums.h:25
#define PACK_ACTUATOR_SIGNATURE
Definition: senml_pack.h:20