Skip to content

Commit 41fb58c

Browse files
aentingermattiabertorello
authored andcommitted
Implementing parsing for base version
1 parent ff214f8 commit 41fb58c

File tree

2 files changed

+15
-20
lines changed

2 files changed

+15
-20
lines changed

ArduinoCloudThing.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,14 @@ ArduinoCloudThing::MapParserState ArduinoCloudThing::handle_UndefinedKey(CborVal
263263
ArduinoCloudThing::MapParserState ArduinoCloudThing::handle_BaseVersion(CborValue * value_iter, MapData * map_data) {
264264
MapParserState next_state = MapParserState::Error;
265265

266-
/* TODO: Parse BaseVersion */
267-
268-
if(cbor_value_advance(value_iter) == CborNoError) {
269-
next_state = MapParserState::MapKey;
266+
if(cbor_value_is_integer(value_iter)) {
267+
int val = 0;
268+
if(cbor_value_get_int(value_iter, &val) == CborNoError) {
269+
map_data->base_version.set(val);
270+
if(cbor_value_advance(value_iter) == CborNoError) {
271+
next_state = MapParserState::MapKey;
272+
}
273+
}
270274
}
271275

272276
return next_state;
@@ -323,25 +327,25 @@ ArduinoCloudThing::MapParserState ArduinoCloudThing::handle_Name(CborValue * val
323327
ArduinoCloudThing::MapParserState ArduinoCloudThing::handle_Value(CborValue * value_iter, MapData * map_data) {
324328
MapParserState next_state = MapParserState::Error;
325329

326-
if (value_iter->type == CborIntegerType) {
330+
if(value_iter->type == CborIntegerType) {
327331
int val = 0;
328332
if(cbor_value_get_int(value_iter, &val) == CborNoError) {
329333
map_data->int_val.set(val);
330334
}
331335
}
332-
else if (value_iter->type == CborDoubleType) {
336+
else if(value_iter->type == CborDoubleType) {
333337
double val = 0.0;
334338
if(cbor_value_get_double(value_iter, &val) == CborNoError) {
335339
map_data->float_val.set(static_cast<float>(val));
336340
}
337341
}
338-
else if (value_iter->type == CborFloatType) {
342+
else if(value_iter->type == CborFloatType) {
339343
float val = 0.0f;
340344
if(cbor_value_get_float(value_iter, &val) == CborNoError) {
341345
map_data->float_val.set(val);
342346
}
343347
}
344-
else if (value_iter->type == CborHalfFloatType) {
348+
else if(value_iter->type == CborHalfFloatType) {
345349
uint16_t val = 0;
346350
if(cbor_value_get_half_float(value_iter, &val) == CborNoError) {
347351
map_data->float_val.set(static_cast<float>(convertCborHalfFloatToDouble(val)));

ArduinoCloudThing.h

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -75,18 +75,9 @@ class ArduinoCloudThing {
7575

7676
MapEntry() : _is_set(false) { }
7777

78-
void set(T const & entry) {
79-
_entry = entry;
80-
_is_set = true;
81-
}
82-
83-
bool isSet() const {
84-
return _is_set;
85-
}
86-
87-
T const get() const {
88-
return _entry;
89-
}
78+
inline void set (T const & entry) { _entry = entry; _is_set = true; }
79+
inline bool isSet() const { return _is_set; }
80+
inline T const get () const { return _entry; }
9081

9182
private:
9283

0 commit comments

Comments
 (0)