1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- /*
- * preferences.c
- *
- * Created on: Feb 22, 2022
- * Author: radioman
- */
- #include "preferences.h"
- #include "stm32l1xx_hal.h"
- static Pref_td Preferences[PREF_COUNT];
- static const Pref_td SavedPreferences[PREF_COUNT] = PREF_DEFAULT_VALUES;
- void PrefIncValue(PrefNames_t PrefName)
- {
- Preferences[PrefName].value = (Preferences[PrefName].value +
- Preferences[PrefName].step) % (Preferences[PrefName].max_val + 1);
- Preferences[PrefName].unsaved = true;
- }
- void PrefSetValue(PrefNames_t PrefName, int val)
- {
- Preferences[PrefName].value = val;
- Preferences[PrefName].unsaved = true;
- }
- int PrefGetValue(PrefNames_t PrefName)
- {
- return Preferences[PrefName].value;
- }
- void PrefLoadFromFlash()
- {
- for(int i = 0; i < PREF_COUNT; i++)
- {
- Preferences[i] = SavedPreferences[i];
- }
- }
- void PrefSaveToFlash()
- {
- HAL_FLASH_Unlock();
- for(int i = 0; i < PREF_COUNT; i++)
- {
- if(Preferences[i].unsaved)
- {
- if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, (uint32_t)(&(SavedPreferences[i].value)), Preferences[i].value) == HAL_OK)
- Preferences[i].unsaved = false;
- }
- }
- HAL_FLASH_Lock();
- }
|