Рефакторинг флагов и добавление флага для автоматической или ручного сохранения настроек

This commit is contained in:
2026-02-28 17:23:19 +03:00
parent c4bcabdac9
commit 2e869315b8
2 changed files with 19 additions and 14 deletions

View File

@@ -24,7 +24,7 @@
- Инициализировать каждый элемент структуры функцией @ref InitSettingsToMem - Инициализировать каждый элемент структуры функцией @ref InitSettingsToMem
- Добавить @ref WriteSettingsArrayToMem и @ref ReadSettingsArrayFromMem для записи/считывания - Добавить @ref WriteSettingsArrayToMem и @ref ReadSettingsArrayFromMem для записи/считывания
каждого элемента структуры в память каждого элемента структуры в память
- Выставлять флаг @ref f.settings_need_to_update для записи настроек в память, - Выставлять флаг @ref f.settings_request_to_save для записи настроек в память,
когда необходимо это сделать (само по себе оно не может определить когда надо записать, когда необходимо это сделать (само по себе оно не может определить когда надо записать,
т.к. нет буфера для отслеживания изменений) т.к. нет буфера для отслеживания изменений)
@@ -60,7 +60,8 @@ typedef struct
typedef struct typedef struct
{ {
unsigned settings_need_to_update:1; unsigned settings_autosave:1;
unsigned settings_request_to_save:1;
unsigned settings_is_updated:1; unsigned settings_is_updated:1;
}SettingsFlagsTypeDef; }SettingsFlagsTypeDef;

View File

@@ -105,6 +105,8 @@ void Settings_WriteSettings(SettingsTypeDef *settings)
#ifdef SETTINGS_USE_SETTINGS_FROM_BUFFER #ifdef SETTINGS_USE_SETTINGS_FROM_BUFFER
if(settings->f.settings_autosave) // если автосейв - проверяем и сохраняем сами
{
// Сравниваем текущие настройки с буфером // Сравниваем текущие настройки с буфером
for(int i = 0; i < settings->setarr_count; i++) for(int i = 0; i < settings->setarr_count; i++)
{ {
@@ -112,18 +114,19 @@ void Settings_WriteSettings(SettingsTypeDef *settings)
settings->setarr[i].real_ptr, settings->setarr[i].real_ptr,
settings->setarr[i].length) != 0) settings->setarr[i].length) != 0)
{ {
settings->f.settings_need_to_update = 1; settings->f.settings_request_to_save = 1;
break; break;
} }
} }
}
#endif #endif
// if(settings->f.settings_need_to_update) // if(settings->f.settings_request_to_save)
// { // {
//// if(GPIO_Read_Switch(&MZKT_DISCIN.err_24V)) //// if(GPIO_Read_Switch(&MZKT_DISCIN.err_24V))
//// { //// {
//// printf_memspi_err("Power Err, cancel writing"); //// printf_memspi_err("Power Err, cancel writing");
//// settings->f.settings_need_to_update = 0; //// settings->f.settings_request_to_save = 0;
//// update_start = 0; //// update_start = 0;
//// return; //// return;
//// } //// }
@@ -138,11 +141,12 @@ void Settings_WriteSettings(SettingsTypeDef *settings)
// update_start = 0; // update_start = 0;
// } // }
settings->f.settings_is_updated = 0; settings->f.settings_is_updated = 0;
if(settings->f.settings_need_to_update) if(settings->f.settings_request_to_save)
{ {
// Сбрасываем флаг обновления // Сбрасываем флаг обновления
settings->f.settings_need_to_update = 0; settings->f.settings_request_to_save = 0;
update_start = 0; update_start = 0;
#ifdef SETTINGS_USE_SETTINGS_FROM_BUFFER #ifdef SETTINGS_USE_SETTINGS_FROM_BUFFER