Skip to content

Commit 188e4f9

Browse files
committed
Proposal: fix map and array length
No functional change, some tests need to be modified
1 parent dd14625 commit 188e4f9

File tree

2 files changed

+6
-11
lines changed

2 files changed

+6
-11
lines changed

ArduinoCloudThing.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,14 @@ int ArduinoCloudThing::poll(uint8_t* data, size_t size) {
5656
if (diff > 0) {
5757
CborError err;
5858
CborEncoder encoder, arrayEncoder;
59-
cbor_encoder_init(&encoder, data, size, 0);
59+
cbor_encoder_init(&encoder, data, size, 0);
6060
// create a cbor array containing the property that should be updated.
61-
err = cbor_encoder_create_array(&encoder, &arrayEncoder, CborIndefiniteLength);
61+
err = cbor_encoder_create_array(&encoder, &arrayEncoder, diff);
6262
if (err) {
6363
Serial.println(cbor_error_string(err));
6464
return -1;
6565
}
66-
for (int i = 0; i < list.size(); i++) {
66+
for (int i = 0; i < list.size(); i++) {
6767
ArduinoCloudPropertyGeneric *p = list.get(i);
6868
// If a property should be updated and has read permission from the Cloud point of view
6969
if (p->shouldBeUpdated() && p->canRead()) {

ArduinoCloudThing.h

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,15 @@ class ArduinoCloudProperty : public ArduinoCloudPropertyGeneric
166166
return;
167167
}
168168
CborEncoder mapEncoder;
169-
cbor_encoder_create_map(encoder, &mapEncoder, CborIndefiniteLength);
169+
cbor_encoder_create_map(encoder, &mapEncoder, 2);
170170
if (tag != -1) {
171171
cbor_encode_text_stringz(&mapEncoder, "t");
172172
cbor_encode_int(&mapEncoder, tag);
173173
} else {
174174
cbor_encode_text_stringz(&mapEncoder, "n");
175-
cbor_encode_text_stringz(&mapEncoder, name.c_str());
175+
cbor_encode_text_string(&mapEncoder, name.c_str(), name.length());
176176
}
177+
cbor_encode_text_stringz(&mapEncoder, "v");
177178
appendValue(&mapEncoder);
178179
cbor_encoder_close_container(encoder, &mapEncoder);
179180
lastUpdated = millis();
@@ -226,37 +227,31 @@ inline bool ArduinoCloudProperty<float>::newData() {
226227

227228
template <>
228229
inline void ArduinoCloudProperty<int>::appendValue(CborEncoder* mapEncoder) {
229-
cbor_encode_text_stringz(mapEncoder, "v");
230230
cbor_encode_int(mapEncoder, property);
231231
};
232232

233233
template <>
234234
inline void ArduinoCloudProperty<bool>::appendValue(CborEncoder* mapEncoder) {
235-
cbor_encode_text_stringz(mapEncoder, "v");
236235
cbor_encode_boolean(mapEncoder, property);
237236
};
238237

239238
template <>
240239
inline void ArduinoCloudProperty<float>::appendValue(CborEncoder* mapEncoder) {
241-
cbor_encode_text_stringz(mapEncoder, "v");
242240
cbor_encode_float(mapEncoder, property);
243241
};
244242

245243
template <>
246244
inline void ArduinoCloudProperty<String>::appendValue(CborEncoder* mapEncoder) {
247-
cbor_encode_text_stringz(mapEncoder, "v");
248245
cbor_encode_text_stringz(mapEncoder, property.c_str());
249246
};
250247

251248
template <>
252249
inline void ArduinoCloudProperty<String*>::appendValue(CborEncoder* mapEncoder) {
253-
cbor_encode_text_stringz(mapEncoder, "v");
254250
cbor_encode_text_stringz(mapEncoder, property->c_str());
255251
};
256252

257253
template <>
258254
inline void ArduinoCloudProperty<char*>::appendValue(CborEncoder* mapEncoder) {
259-
cbor_encode_text_stringz(mapEncoder, "v");
260255
cbor_encode_text_stringz(mapEncoder, property);
261256
};
262257

0 commit comments

Comments
 (0)