mirror of
https://github.com/espressif/esp-rainmaker.git
synced 2026-01-19 09:45:35 +00:00
bugfix: Callback for persistent parameters wasn't getting invoked
The RainMaker core has special handling for the "name" type of parameter and so, it does not call the application registered callback for this parameter. However, the internal check was erroneous and the callback was getting skipped even when the param type was NULL. The check has now been fixed.
This commit is contained in:
@@ -136,11 +136,19 @@ esp_err_t esp_rmaker_device_add_param(const esp_rmaker_device_t *device, const e
|
||||
}
|
||||
}
|
||||
_new_param->val = stored_val;
|
||||
if (_device->write_cb && (_new_param->type && strcmp(_new_param->type, ESP_RMAKER_PARAM_NAME) != 0)) {
|
||||
esp_rmaker_write_ctx_t ctx = {
|
||||
.src = ESP_RMAKER_REQ_SRC_INIT,
|
||||
};
|
||||
_device->write_cb(device, param, stored_val, _device->priv_data, &ctx);
|
||||
/* The device callback should be invoked once with the stored value, so
|
||||
* that applications can do initialisations as required.
|
||||
*/
|
||||
if (_device->write_cb) {
|
||||
/* However, the callback should be invoked, only if the parameter is not
|
||||
* of type ESP_RMAKER_PARAM_NAME, as it has special handling internally.
|
||||
*/
|
||||
if (!(_new_param->type && strcmp(_new_param->type, ESP_RMAKER_PARAM_NAME) == 0)) {
|
||||
esp_rmaker_write_ctx_t ctx = {
|
||||
.src = ESP_RMAKER_REQ_SRC_INIT,
|
||||
};
|
||||
_device->write_cb(device, param, stored_val, _device->priv_data, &ctx);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
esp_rmaker_param_store_value(_new_param);
|
||||
|
||||
Reference in New Issue
Block a user