Enhance NVS module with a dedicated background task
- Implemented a dedicated background task to decouple long-running code from the main application task. - Improved the NVS commit code logic, especially for batch writes to minimize flash wear. - Updated NVS functions to support asynchronous writes and synchronous reads. - Added default value parameters to `get` functions for better usability. - Improved error handling and logging in NVS operations. - Refactored related code in multiple source files to accommodate these changes. Refs #1085, #1096 and closes #1098
This commit is contained in:
@@ -636,24 +636,16 @@ static void relay_chn_tilt_timer_cb(void *arg)
|
||||
#if CONFIG_RELAY_CHN_ENABLE_NVS
|
||||
static esp_err_t relay_chn_tilt_load_sensitivity(uint8_t ch, uint8_t *sensitivity)
|
||||
{
|
||||
esp_err_t ret = relay_chn_nvs_get_tilt_sensitivity(ch, sensitivity);
|
||||
if (ret == ESP_ERR_NVS_NOT_FOUND) {
|
||||
*sensitivity = RELAY_CHN_TILT_DEFAULT_SENSITIVITY;
|
||||
return ESP_OK;
|
||||
}
|
||||
ESP_RETURN_ON_ERROR(ret, TAG, "Failed to load tilt sensitivity for channel %d", ch);
|
||||
ESP_RETURN_ON_ERROR(relay_chn_nvs_get_tilt_sensitivity(ch, sensitivity, RELAY_CHN_TILT_DEFAULT_SENSITIVITY),
|
||||
TAG, "Failed to load tilt sensitivity for channel %d", ch);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
static esp_err_t relay_chn_tilt_load_tilt_count(uint8_t ch, uint16_t *tilt_count)
|
||||
{
|
||||
esp_err_t ret = relay_chn_nvs_get_tilt_count(ch, tilt_count);
|
||||
if (ret == ESP_ERR_NVS_NOT_FOUND) {
|
||||
ESP_LOGD(TAG, "relay_chn_tilt_load_tilt_count: No tilt count found in NVS for channel %d, initializing to zero", ch);
|
||||
tilt_count = 0;
|
||||
return ESP_OK;
|
||||
}
|
||||
ESP_RETURN_ON_ERROR(ret, TAG, "Failed to load tilt counters for channel %d", ch);
|
||||
ESP_RETURN_ON_ERROR(relay_chn_nvs_get_tilt_count(ch, tilt_count, 0),
|
||||
TAG, "Failed to load tilt counters for channel %d", ch);
|
||||
ESP_LOGD(TAG, "Loaded tilt count for channel %d: %d", ch, *tilt_count);
|
||||
return ESP_OK;
|
||||
}
|
||||
#endif // CONFIG_RELAY_CHN_ENABLE_NVS
|
||||
|
||||
Reference in New Issue
Block a user