Skip to content

Commit 841d59c

Browse files
committed
esp_rmaker_params: Fixes for issues seen when sending buffer is re-allocated
1 parent 669b6f7 commit 841d59c

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

components/esp_rainmaker/src/core/esp_rmaker_param.c

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,6 @@ static esp_err_t esp_rmaker_populate_params(char *buf, size_t *buf_len, uint8_t
134134
device_added = true;
135135
}
136136
esp_rmaker_report_value(&param->val, param->name, &jstr);
137-
if (reset_flags) {
138-
param->flags &= ~flags;
139-
}
140137
}
141138
param = param->next;
142139
}
@@ -148,6 +145,23 @@ static esp_err_t esp_rmaker_populate_params(char *buf, size_t *buf_len, uint8_t
148145
if (json_gen_end_object(&jstr) < 0) {
149146
err = ESP_ERR_NO_MEM;
150147
}
148+
/* Resetting the flags after creating the JSON in order to handle cases wherein
149+
* memory has been insufficient and this same function would have to be called
150+
* again with a larger buffer.
151+
*/
152+
if (err == ESP_OK) {
153+
device = esp_rmaker_node_get_first_device(esp_rmaker_get_node());
154+
while (device) {
155+
_esp_rmaker_param_t *param = device->params;
156+
while (param) {
157+
if (reset_flags) {
158+
param->flags &= ~flags;
159+
}
160+
param = param->next;
161+
}
162+
device = device->next;
163+
}
164+
}
151165
*buf_len = json_gen_str_end(&jstr);
152166
return err;
153167
}

0 commit comments

Comments
 (0)