The KPN SenML library helps you create and parse senml documents in both json and cbor format. The library can be used for sending sensor data and receiving actuator commands.

Fork of kpn_senml by KPN IoT

Committer:
kpniot
Date:
Sat May 19 17:35:20 2018 +0000
Revision:
0:a9259748d982
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kpniot 0:a9259748d982 1 /* _ __ ____ _ _
kpniot 0:a9259748d982 2 * | |/ / | _ \ | \ | |
kpniot 0:a9259748d982 3 * | ' / | |_) | | \| |
kpniot 0:a9259748d982 4 * | . \ | __/ | |\ |
kpniot 0:a9259748d982 5 * |_|\_\ |_| |_| \_|
kpniot 0:a9259748d982 6 *
kpniot 0:a9259748d982 7 * (c) 2018 KPN
kpniot 0:a9259748d982 8 * License: MIT License.
kpniot 0:a9259748d982 9 * Author: Jan Bogaerts
kpniot 0:a9259748d982 10 *
kpniot 0:a9259748d982 11 * support for binary sensors
kpniot 0:a9259748d982 12 */
kpniot 0:a9259748d982 13
kpniot 0:a9259748d982 14 #include <senml_binary_record.h>
kpniot 0:a9259748d982 15 #include <senml_helpers.h>
kpniot 0:a9259748d982 16 #include <cbor.h>
kpniot 0:a9259748d982 17
kpniot 0:a9259748d982 18 SenMLBinaryRecord::SenMLBinaryRecord(const char* name): SenMLRecord(name)
kpniot 0:a9259748d982 19 {
kpniot 0:a9259748d982 20 }
kpniot 0:a9259748d982 21
kpniot 0:a9259748d982 22 SenMLBinaryRecord::SenMLBinaryRecord(const char* name, SenMLUnit unit): SenMLRecord(name, unit)
kpniot 0:a9259748d982 23 {
kpniot 0:a9259748d982 24 }
kpniot 0:a9259748d982 25
kpniot 0:a9259748d982 26 bool SenMLBinaryRecord::set(unsigned char* value, unsigned int length, double time)
kpniot 0:a9259748d982 27 {
kpniot 0:a9259748d982 28 this->_value = (unsigned char*)malloc(length);
kpniot 0:a9259748d982 29 memcpy(this->_value, value, length);
kpniot 0:a9259748d982 30 this->_length = length;
kpniot 0:a9259748d982 31 return this->setTime(time);
kpniot 0:a9259748d982 32 }
kpniot 0:a9259748d982 33
kpniot 0:a9259748d982 34
kpniot 0:a9259748d982 35 void SenMLBinaryRecord::fieldsToJson()
kpniot 0:a9259748d982 36 {
kpniot 0:a9259748d982 37 SenMLRecord::fieldsToJson();
kpniot 0:a9259748d982 38 printText(",\"vd\":\"", 7);
kpniot 0:a9259748d982 39 printBinaryAsBase64(this->_value, this->_length);
kpniot 0:a9259748d982 40 printText("\"", 1);
kpniot 0:a9259748d982 41 }
kpniot 0:a9259748d982 42
kpniot 0:a9259748d982 43 int SenMLBinaryRecord::fieldsToCbor()
kpniot 0:a9259748d982 44 {
kpniot 0:a9259748d982 45 int res = SenMLRecord::fieldsToCbor();
kpniot 0:a9259748d982 46 res += cbor_serialize_int(SENML_CBOR_VD_LABEL);
kpniot 0:a9259748d982 47 res += cbor_serialize_byte_string((const char*)this->_value, this->_length);
kpniot 0:a9259748d982 48 return res;
kpniot 0:a9259748d982 49 }
kpniot 0:a9259748d982 50
kpniot 0:a9259748d982 51
kpniot 0:a9259748d982 52
kpniot 0:a9259748d982 53
kpniot 0:a9259748d982 54
kpniot 0:a9259748d982 55
kpniot 0:a9259748d982 56