@@ -296,21 +296,33 @@ ArduinoCloudThing::MapParserState ArduinoCloudThing::handle_BaseName(CborValue *
296
296
ArduinoCloudThing::MapParserState ArduinoCloudThing::handle_BaseTime (CborValue * value_iter, MapData * map_data) {
297
297
MapParserState next_state = MapParserState::Error;
298
298
299
+ if (cbor_value_is_integer (value_iter)) {
300
+ int val = 0 ;
301
+ if (cbor_value_get_int (value_iter, &val) == CborNoError) {
302
+ map_data->base_time .set (static_cast <double >(val));
303
+ }
304
+ }
305
+
299
306
if (cbor_value_is_double (value_iter)) {
300
307
double val = 0.0 ;
301
308
if (cbor_value_get_double (value_iter, &val) == CborNoError) {
302
309
map_data->base_time .set (val);
303
310
}
304
311
}
305
312
306
- if (cbor_value_is_integer (value_iter)) {
307
- int val = 0 ;
308
- if (cbor_value_get_int (value_iter, &val) == CborNoError) {
313
+ if (cbor_value_is_float (value_iter)) {
314
+ float val = 0. 0 ;
315
+ if (cbor_value_get_float (value_iter, &val) == CborNoError) {
309
316
map_data->base_time .set (static_cast <double >(val));
310
317
}
311
318
}
312
319
313
- /* TODO: Check for half float / float */
320
+ if (cbor_value_is_half_float (value_iter)) {
321
+ uint16_t val = 0 ;
322
+ if (cbor_value_get_half_float (value_iter, &val) == CborNoError) {
323
+ map_data->base_time .set (static_cast <double >(convertCborHalfFloatToDouble (val)));
324
+ }
325
+ }
314
326
315
327
if (cbor_value_advance (value_iter) == CborNoError) {
316
328
next_state = MapParserState::MapKey;
@@ -403,21 +415,33 @@ ArduinoCloudThing::MapParserState ArduinoCloudThing::handle_BooleanValue(CborVal
403
415
ArduinoCloudThing::MapParserState ArduinoCloudThing::handle_Time (CborValue * value_iter, MapData * map_data) {
404
416
MapParserState next_state = MapParserState::Error;
405
417
418
+ if (cbor_value_is_integer (value_iter)) {
419
+ int val = 0 ;
420
+ if (cbor_value_get_int (value_iter, &val) == CborNoError) {
421
+ map_data->time .set (static_cast <double >(val));
422
+ }
423
+ }
424
+
406
425
if (cbor_value_is_double (value_iter)) {
407
426
double val = 0.0 ;
408
427
if (cbor_value_get_double (value_iter, &val) == CborNoError) {
409
428
map_data->time .set (val);
410
429
}
411
430
}
412
431
413
- if (cbor_value_is_integer (value_iter)) {
414
- int val = 0 ;
415
- if (cbor_value_get_int (value_iter, &val) == CborNoError) {
432
+ if (cbor_value_is_float (value_iter)) {
433
+ float val = 0. 0 ;
434
+ if (cbor_value_get_float (value_iter, &val) == CborNoError) {
416
435
map_data->time .set (static_cast <double >(val));
417
436
}
418
437
}
419
438
420
- /* TODO: Check for half float / float */
439
+ if (cbor_value_is_half_float (value_iter)) {
440
+ uint16_t val = 0 ;
441
+ if (cbor_value_get_half_float (value_iter, &val) == CborNoError) {
442
+ map_data->time .set (static_cast <double >(convertCborHalfFloatToDouble (val)));
443
+ }
444
+ }
421
445
422
446
if (cbor_value_advance (value_iter) == CborNoError) {
423
447
next_state = MapParserState::MapKey;
0 commit comments