12#pragma GCC diagnostic ignored "-Wmissing-prototypes"
13#pragma GCC diagnostic ignored "-Wmissing-declarations"
38 size_t buffer_len =
sizeof(
buffer);
41 SensorMeasurement in = SensorMeasurement_init_zero;
45 in.meta.logger_id = 456;
46 in.meta.cell_id = 789;
48 in.type = SensorType_NONE;
50 in.which_value = SensorMeasurement_unsigned_int_tag;
51 in.value.unsigned_int = 1782861989UL;
55 TEST_ASSERT_GREATER_THAN(0, buffer_len);
58 SensorMeasurement out = SensorMeasurement_init_zero;
64 TEST_ASSERT_EQUAL(in.has_meta, out.has_meta);
65 TEST_ASSERT_EQUAL(in.meta.ts, out.meta.ts);
66 TEST_ASSERT_EQUAL(in.meta.logger_id, out.meta.logger_id);
67 TEST_ASSERT_EQUAL(in.meta.cell_id, out.meta.cell_id);
68 TEST_ASSERT_EQUAL(in.type, out.type);
69 TEST_ASSERT_EQUAL(in.which_value, out.which_value);
70 TEST_ASSERT_EQUAL(in.value.unsigned_int, out.value.unsigned_int);
79 size_t buffer_len = 0;
82 SensorMeasurement in_array[10] = {};
85 Metadata meta = Metadata_init_zero;
87 meta.logger_id = 2000;
90 for (
size_t i = 0;
i < len;
i++) {
91 SensorMeasurement* in = &in_array[
i];
94 in->meta.ts = 123 +
i;
95 in->meta.logger_id = 456 +
i;
96 in->meta.cell_id = 789 +
i;
97 in->type = SensorType_NONE;
99 in->which_value = SensorMeasurement_unsigned_int_tag;
100 in->value.unsigned_int = 9876543210ULL +
i;
104 sizeof(
buffer), &buffer_len);
106 TEST_ASSERT_GREATER_THAN(0, buffer_len);
109 RepeatedSensorMeasurements rep_out = RepeatedSensorMeasurements_init_zero;
114 TEST_ASSERT_EQUAL(10, rep_out.measurements_count);
116 for (
int i = 0;
i < 10;
i++) {
117 SensorMeasurement* in = &in_array[
i];
118 SensorMeasurement* out = &rep_out.measurements[
i];
121 TEST_ASSERT_EQUAL(in->has_meta, out->has_meta);
122 TEST_ASSERT_EQUAL(in->meta.ts, out->meta.ts);
123 TEST_ASSERT_EQUAL(in->meta.logger_id, out->meta.logger_id);
124 TEST_ASSERT_EQUAL(in->meta.cell_id, out->meta.cell_id);
125 TEST_ASSERT_EQUAL(in->type, out->type);
126 TEST_ASSERT_EQUAL(in->which_value, out->which_value);
127 TEST_ASSERT_EQUAL(in->value.unsigned_int, out->value.unsigned_int);
134 size_t buffer_len = 0;
137 SensorMeasurement in_array[10] = {};
140 Metadata meta = Metadata_init_zero;
145 for (
size_t i = 0;
i < len;
i++) {
146 SensorMeasurement* in = &in_array[
i];
150 in->meta.logger_id = 456;
151 in->meta.cell_id = 789;
152 in->type = SensorType_POWER_VOLTAGE;
154 in->which_value = SensorMeasurement_unsigned_int_tag;
155 in->value.unsigned_int = 9876543210ULL +
i;
159 sizeof(
buffer), &buffer_len);
162 TEST_ASSERT_GREATER_THAN(0, buffer_len);
165 RepeatedSensorMeasurements rep_out = RepeatedSensorMeasurements_init_zero;
170 TEST_ASSERT_EQUAL(10, rep_out.measurements_count);
172 for (
int i = 0;
i < 10;
i++) {
173 SensorMeasurement* in = &in_array[
i];
174 SensorMeasurement* out = &rep_out.measurements[
i];
177 TEST_ASSERT_EQUAL(in->has_meta, out->has_meta);
178 TEST_ASSERT_EQUAL(in->meta.ts, out->meta.ts);
179 TEST_ASSERT_EQUAL(in->meta.logger_id, out->meta.logger_id);
180 TEST_ASSERT_EQUAL(in->meta.cell_id, out->meta.cell_id);
181 TEST_ASSERT_EQUAL(in->type, out->type);
182 TEST_ASSERT_EQUAL(in->which_value, out->which_value);
183 TEST_ASSERT_EQUAL(in->value.unsigned_int, out->value.unsigned_int);
190 Metadata meta = Metadata_init_zero;
192 meta.logger_id = 2222;
195 uint64_t value = 1234567890123456789ULL;
198 size_t buffer_len =
sizeof(
buffer);
203 TEST_ASSERT_GREATER_THAN(0, buffer_len);
209 Metadata meta = Metadata_init_zero;
211 meta.logger_id = 2222;
214 int64_t value = -1234567890123456789LL;
217 size_t buffer_len =
sizeof(
buffer);
222 TEST_ASSERT_GREATER_THAN(0, buffer_len);
228 Metadata meta = Metadata_init_zero;
230 meta.logger_id = 2222;
233 double value = 12345.6789;
236 size_t buffer_len =
sizeof(
buffer);
241 TEST_ASSERT_GREATER_THAN(0, buffer_len);
248 RepeatedSensorResponses responses = RepeatedSensorResponses_init_zero;
249 responses.responses_count = 2;
251 responses.responses[0].idx = 1;
252 responses.responses[0].error = SensorError_OK;
254 responses.responses[1].idx = 2;
255 responses.responses[1].error = SensorError_DECODE;
259 size_t buffer_len =
sizeof(
buffer);
264 TEST_ASSERT_GREATER_THAN(0, buffer_len);
267 RepeatedSensorResponses decoded = RepeatedSensorResponses_init_zero;
272 TEST_ASSERT_EQUAL(2, decoded.responses_count);
274 TEST_ASSERT_EQUAL(responses.responses[0].idx, decoded.responses[0].idx);
275 TEST_ASSERT_EQUAL(responses.responses[0].error, decoded.responses[0].error);
277 TEST_ASSERT_EQUAL(responses.responses[1].idx, decoded.responses[1].idx);
278 TEST_ASSERT_EQUAL(responses.responses[1].error, decoded.responses[1].error);
283 SensorResponse resp = SensorResponse_init_zero;
288 resp.error = SensorError_OK;
295 resp.error = SensorError_GENERAL;
302 resp.error = SensorError_OK;
308 resp.error = SensorError_LOGGER;
314 resp.error = SensorError_INVALID;
322 Metadata meta = Metadata_init_zero;
324 meta.logger_id = 2000;
327 SensorMeasurement in_array[5] = {};
330 for (
size_t i = 0;
i < len;
i++) {
331 SensorMeasurement* in = &in_array[
i];
334 in->meta.ts = 123 +
i;
335 in->meta.logger_id = 456 +
i;
336 in->meta.cell_id = 789 +
i;
337 in->type = SensorType_NONE;
339 in->which_value = SensorMeasurement_unsigned_int_tag;
340 in->value.unsigned_int = 98765430ULL +
i;
346 TEST_ASSERT_GREATER_THAN(0, size);
SensorStatus DecodeSensorMeasurement(const uint8_t *data, const size_t len, SensorMeasurement *meas)
Decodes a sensor measurement from a buffer.
SensorStatus EncodeSensorMeasurement(const SensorMeasurement *meas, uint8_t *buffer, size_t *size)
Encodes a single sensor measurement into a buffer.
SensorStatus RepeatedSensorMeasurementsSize(Metadata meta, const SensorMeasurement meas[], size_t count, size_t *size)
Gets the size of multiple repeated sensor measurements when encoded.
SensorStatus EncodeInt32Measurement(Metadata meta, int32_t value, SensorType type, uint8_t *buffer, size_t *size)
Encodes an int64_t sensor measurement into a buffer.
SensorStatus CheckSensorResponse(const SensorResponse *resp)
Checks a single sensor response for errors.
SensorStatus EncodeRepeatedSensorMeasurements(Metadata meta, const SensorMeasurement meas[], size_t count, uint8_t *buffer, size_t size, size_t *length)
Encodes multiple sensor measurements into a buffer.
SensorStatus EncodeDoubleMeasurement(Metadata meta, double value, SensorType type, uint8_t *buffer, size_t *size)
Encodes a double sensor measurement into a buffer.
SensorStatus DecodeRepeatedSensorReponses(const uint8_t *data, const size_t len, RepeatedSensorResponses *resp)
Decodes multiple sensor responses from a buffer.
SensorStatus EncodeRepeatedSensorResponses(const RepeatedSensorResponses responses, uint8_t *buffer, size_t *size)
Encodes multiple sensor responses into a buffer.
enum _SensorStatus SensorStatus
SensorStatus DecodeRepeatedSensorMeasurements(const uint8_t *data, const size_t len, RepeatedSensorMeasurements *measurements)
Decodes multiple sensor measurements from a buffer.
SensorStatus EncodeUint32Measurement(Metadata meta, uint32_t value, SensorType type, uint8_t *buffer, size_t *size)
Encodes a uint64_t sensor measurement into a buffer.
Library for sensor measurement encoding/decoding.
void TestRepeatedSensorMeasurementsOptimize(void)
void TestTranscodeRepeatedSensorMeasurements(void)
Encodes then decodes repeated sensor measurements.
void TestRepeatedSensorMeasurementsSize(void)
void TestRepeatedSensorResponses(void)
void TestEncodeDoubleMeasurement(void)
void TestCheckSensorResponse(void)
void TestEncodeUint32Measurement(void)
void TestEncodeInt32Measurement(void)
void TestTranscodeSensorMeasurement(void)
Encodes then decodes single sensor measurement.