Рефакторинг флагов и добавление флага для автоматической или ручного сохранения настроек
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
- Инициализировать каждый элемент структуры функцией @ref InitSettingsToMem
|
||||
- Добавить @ref WriteSettingsArrayToMem и @ref ReadSettingsArrayFromMem для записи/считывания
|
||||
каждого элемента структуры в память
|
||||
- Выставлять флаг @ref f.settings_need_to_update для записи настроек в память,
|
||||
- Выставлять флаг @ref f.settings_request_to_save для записи настроек в память,
|
||||
когда необходимо это сделать (само по себе оно не может определить когда надо записать,
|
||||
т.к. нет буфера для отслеживания изменений)
|
||||
|
||||
@@ -60,7 +60,8 @@ 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;
|
||||
}SettingsFlagsTypeDef;
|
||||
|
||||
|
||||
@@ -105,25 +105,28 @@ void Settings_WriteSettings(SettingsTypeDef *settings)
|
||||
|
||||
|
||||
#ifdef SETTINGS_USE_SETTINGS_FROM_BUFFER
|
||||
// Сравниваем текущие настройки с буфером
|
||||
for(int i = 0; i < settings->setarr_count; i++)
|
||||
if(settings->f.settings_autosave) // если автосейв - проверяем и сохраняем сами
|
||||
{
|
||||
if(memcmp(settings->setarr[i].mem_ptr,
|
||||
settings->setarr[i].real_ptr,
|
||||
settings->setarr[i].length) != 0)
|
||||
// Сравниваем текущие настройки с буфером
|
||||
for(int i = 0; i < settings->setarr_count; i++)
|
||||
{
|
||||
settings->f.settings_need_to_update = 1;
|
||||
break;
|
||||
if(memcmp(settings->setarr[i].mem_ptr,
|
||||
settings->setarr[i].real_ptr,
|
||||
settings->setarr[i].length) != 0)
|
||||
{
|
||||
settings->f.settings_request_to_save = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// if(settings->f.settings_need_to_update)
|
||||
// if(settings->f.settings_request_to_save)
|
||||
// {
|
||||
//// if(GPIO_Read_Switch(&MZKT_DISCIN.err_24V))
|
||||
//// {
|
||||
//// printf_memspi_err("Power Err, cancel writing");
|
||||
//// settings->f.settings_need_to_update = 0;
|
||||
//// settings->f.settings_request_to_save = 0;
|
||||
//// update_start = 0;
|
||||
//// return;
|
||||
//// }
|
||||
@@ -138,11 +141,12 @@ void Settings_WriteSettings(SettingsTypeDef *settings)
|
||||
// update_start = 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;
|
||||
|
||||
#ifdef SETTINGS_USE_SETTINGS_FROM_BUFFER
|
||||
|
||||
Reference in New Issue
Block a user