# HG changeset patch # User Jan Mulder # Date 1553601615 -3600 # Node ID b2a9e9b02df00f9acdda9156a6ce51ffce9256ac # Parent 2de856965c557373efa796b894dd2ffb17155b0b New feature: make selected customviews persistent Add the set of selected customviews during dive time to the persistent settings. Nothing has changed to the menu, so a user still has to access the on/off page from the simulator or during an actual dive, but once changed here, the settings are preserved for later dives. It feels a bit as waste of menu space to add a second page for something that is already available. And further, I have to admit the adding a page is rather complex to get the navigation right, so that is a 2nd argument not to add a page. Further, getting this one setting saved to the persist preferences is a bit of a hack. Misused an existing global bool value (WriteSettings) to force a actual write despite not being in surface mode. Signed-off-by: Jan Mulder diff -r 2de856965c55 -r b2a9e9b02df0 Common/Inc/settings.h --- a/Common/Inc/settings.h Sun Mar 24 22:09:37 2019 +0000 +++ b/Common/Inc/settings.h Tue Mar 26 13:00:15 2019 +0100 @@ -212,11 +212,11 @@ // new in 0xFFFF0017 uint8_t FactoryButtonBase; uint8_t FactoryButtonBalance[3]; - /* new in 0xFFFF0018 */ uint8_t FlipDisplay; + /* new in 0xFFFF0019 */ + uint32_t cv_configuration; -//to be continued } SSettings; typedef struct diff -r 2de856965c55 -r b2a9e9b02df0 Discovery/Inc/tHome.h --- a/Discovery/Inc/tHome.h Sun Mar 24 22:09:37 2019 +0000 +++ b/Discovery/Inc/tHome.h Tue Mar 26 13:00:15 2019 +0100 @@ -84,7 +84,6 @@ // for custom view switch on/off 161122 hw extern const uint8_t cv_changelist[6]; -extern uint32_t cv_configuration; #define CHECK_BIT_THOME(var,pos) (((var)>>(pos)) & 1) typedef struct diff -r 2de856965c55 -r b2a9e9b02df0 Discovery/Src/settings.c --- a/Discovery/Src/settings.c Sun Mar 24 22:09:37 2019 +0000 +++ b/Discovery/Src/settings.c Tue Mar 26 13:00:15 2019 +0100 @@ -82,7 +82,7 @@ * There might even be entries with fixed values that have no range */ const SSettings SettingsStandard = { - .header = 0xFFFF0018, + .header = 0xFFFF0019, .warning_blink_dsec = 8 * 2, .lastDiveLogId = 0, .logFlashNextSampleStartAddress = 0, @@ -306,6 +306,7 @@ .FactoryButtonBalance[1] = 3, .FactoryButtonBalance[2] = 3, .FlipDisplay = 0, + .cv_configuration = 0xFFFFFFFF, }; /* Private function prototypes -----------------------------------------------*/ @@ -446,8 +447,11 @@ case 0xFFFF0017: pSettings->FlipDisplay = 0; // no break + case 0xFFFF0018: + pSettings->cv_configuration = 0xFFFFFFFF; + // no break default: - pSettings->header = pStandard->header; + pSettings->header = pStandard->header; break; // no break before!! } } diff -r 2de856965c55 -r b2a9e9b02df0 Discovery/Src/t7.c --- a/Discovery/Src/t7.c Sun Mar 24 22:09:37 2019 +0000 +++ b/Discovery/Src/t7.c Tue Mar 26 13:00:15 2019 +0100 @@ -1517,7 +1517,7 @@ cv_disabled = 0; for(int i=0;i<6;i++) { - if((*pViews == cv_changelist[i]) && !CHECK_BIT_THOME(cv_configuration, cv_changelist[i])) + if((*pViews == cv_changelist[i]) && !CHECK_BIT_THOME(settingsGetPointer()->cv_configuration, cv_changelist[i])) { cv_disabled = 1; break; diff -r 2de856965c55 -r b2a9e9b02df0 Discovery/Src/tHome.c --- a/Discovery/Src/tHome.c Sun Mar 24 22:09:37 2019 +0000 +++ b/Discovery/Src/tHome.c Tue Mar 26 13:00:15 2019 +0100 @@ -56,7 +56,6 @@ static uint16_t tHome_tick_count_cview; static uint16_t tHome_tick_count_field; -uint32_t cv_configuration = 0xFFFFFFFF; const uint8_t cv_changelist[6] = {CVIEW_Compass, CVIEW_SummaryOfLeftCorner, CVIEW_Tissues, CVIEW_Profile, CVIEW_EADTime, CVIEW_Gaslist}; /* Private function prototypes -----------------------------------------------*/ diff -r 2de856965c55 -r b2a9e9b02df0 Discovery/Src/tMenuEditSystem.c --- a/Discovery/Src/tMenuEditSystem.c Sun Mar 24 22:09:37 2019 +0000 +++ b/Discovery/Src/tMenuEditSystem.c Tue Mar 26 13:00:15 2019 +0100 @@ -149,7 +149,11 @@ void openEdit_CustomviewDivemode(uint8_t line) { - cv_configuration ^= 1 << (cv_changelist[line-1]); + SSettings *pSettings = settingsGetPointer(); + extern _Bool WriteSettings; + + pSettings->cv_configuration ^= 1 << (cv_changelist[line-1]); + WriteSettings = 1; exitMenuEdit_to_Menu_with_Menu_Update(); } diff -r 2de856965c55 -r b2a9e9b02df0 Discovery/Src/tMenuSystem.c --- a/Discovery/Src/tMenuSystem.c Sun Mar 24 22:09:37 2019 +0000 +++ b/Discovery/Src/tMenuSystem.c Tue Mar 26 13:00:15 2019 +0100 @@ -59,7 +59,7 @@ for(int i=0; i<6;i++) { id = cv_changelist[i]; - text[textPointer++] = '\006' - CHECK_BIT_THOME(cv_configuration,id); + text[textPointer++] = '\006' - CHECK_BIT_THOME(data->cv_configuration,id); text[textPointer++] = ' '; textPointer += snprintf(&text[textPointer], 60, "%c%c\n\r",