Mercurial > public > ostc4
annotate Discovery/Src/tMenuEditSystem.c @ 1067:a7ed4eb3142b Icon_Integration
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
Write Progress and Success Messages when Flashing the Bootloader.
Only Show 'Flash Bootloader' if the Available Bootloader is Different from the Existing One.
(mikeller)
| author | heinrichsweikamp |
|---|---|
| date | Tue, 17 Feb 2026 09:49:37 +0100 |
| parents | 8fe6676f28c9 |
| children |
| rev | line source |
|---|---|
| 38 | 1 /////////////////////////////////////////////////////////////////////////////// |
| 2 /// -*- coding: UTF-8 -*- | |
| 3 /// | |
| 4 /// \file Discovery/Src/tMenuEditSystem.c | |
| 5 /// \brief Main Template file for Menu Edit System settings | |
| 6 /// \author heinrichs weikamp gmbh | |
| 7 /// \date 05-Aug-2014 | |
| 8 /// | |
| 9 /// \details | |
| 10 /// | |
| 11 /// $Id$ | |
| 12 /////////////////////////////////////////////////////////////////////////////// | |
| 13 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh | |
| 14 /// | |
| 15 /// This program is free software: you can redistribute it and/or modify | |
| 16 /// it under the terms of the GNU General Public License as published by | |
| 17 /// the Free Software Foundation, either version 3 of the License, or | |
| 18 /// (at your option) any later version. | |
| 19 /// | |
| 20 /// This program is distributed in the hope that it will be useful, | |
| 21 /// but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 22 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 23 /// GNU General Public License for more details. | |
| 24 /// | |
| 25 /// You should have received a copy of the GNU General Public License | |
| 26 /// along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 27 ////////////////////////////////////////////////////////////////////////////// | |
| 28 | |
| 29 /* Includes ------------------------------------------------------------------*/ | |
| 30 #include "tMenuEditSystem.h" | |
| 31 | |
| 138 | 32 #include "data_exchange_main.h" |
| 38 | 33 #include "externLogbookFlash.h" |
| 34 #include "gfx_fonts.h" | |
| 35 #include "ostc.h" | |
| 36 #include "settings.h" // for getLicence() | |
| 37 #include "tHome.h" // for enum CUSTOMVIEWS and init_t7_compass() | |
|
343
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
38 #include "tMenu.h" |
| 38 | 39 #include "tMenuEdit.h" |
|
343
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
40 #include "tMenuSystem.h" |
| 520 | 41 #include "tMenuEditCustom.h" |
|
389
ebc2b571a0b9
Fix case for case sensitive OS
Jan Mulder <jan@jlmulder.nl>
parents:
384
diff
changeset
|
42 #include "motion.h" |
|
343
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
43 #include "t7.h" |
|
959
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
44 #include "math.h" |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
45 #include "firmwareEraseProgram.h" |
|
343
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
46 |
|
493
b560e474e319
Added possibility to switch between "classic" bigfont views and a selection with a new information combination
Ideenmodellierer
parents:
468
diff
changeset
|
47 |
|
343
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
48 /*#define HAVE_DEBUG_VIEW */ |
| 379 | 49 static uint8_t infoPage = 0; |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
50 #ifdef ENABLE_SETTING_PROFILES |
| 1027 | 51 static uint32_t profileStartCrc[NUMBER_OF_PROFILES]; |
| 52 static uint8_t profileActiveStart = 0; | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
53 #endif |
| 38 | 54 |
| 55 /* Private function prototypes -----------------------------------------------*/ | |
| 56 void openEdit_DateTime(void); | |
| 944 | 57 void openEdit_DateFormat(void); |
| 38 | 58 void openEdit_Language(void); |
| 59 void openEdit_Design(void); | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
60 #ifdef ENABLE_SETTING_PROFILES |
| 1027 | 61 void openEdit_Profile(void); |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
62 #endif |
| 38 | 63 void openEdit_Information(void); |
| 64 void openEdit_Reset(void); | |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
65 void openEdit_Maintenance(void); |
| 38 | 66 //void openEdit_ShowDebugInfo(void); |
| 67 //void openEdit_Salinity(void); | |
| 68 | |
| 1017 | 69 static uint32_t swapBytes(uint32_t source) |
| 70 { | |
| 71 uint32_t ret = 0; | |
| 72 | |
| 73 ret = ((source & 0x000000FF) << 24) | |
| 74 | ((source & 0x0000FF00) << 8) | |
| 75 | ((source & 0x00FF0000) >> 8) | |
| 76 | ((source & 0xFF000000) >> 24); | |
| 77 | |
| 78 return ret; | |
| 79 } | |
| 80 | |
| 81 | |
| 38 | 82 /* Announced function prototypes -----------------------------------------------*/ |
| 83 uint8_t OnAction_Date (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 84 uint8_t OnAction_Time (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 567 | 85 uint8_t OnAction_12HR (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 944 | 86 uint8_t OnAction_Format (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 38 | 87 uint8_t OnAction_DDMMYY (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 88 uint8_t OnAction_MMDDYY (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 89 uint8_t OnAction_YYMMDD (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 90 uint8_t OnAction_DST (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 949 | 91 uint8_t OnAction_UTC (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 92 uint8_t OnAction_SetGnss (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 38 | 93 uint8_t OnAction_English (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 94 uint8_t OnAction_German (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 95 uint8_t OnAction_French (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 96 uint8_t OnAction_Italian (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 97 uint8_t OnAction_Espanol (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 98 //uint8_t OnAction_Design_t7 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 99 //uint8_t OnAction_Design_t7ft (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 100 //uint8_t OnAction_Design_t3 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 101 | |
| 102 uint8_t OnAction_Units (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 103 uint8_t OnAction_Colorscheme (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 104 uint8_t OnAction_DebugInfo (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
105 #ifdef ENABLE_SETTING_PROFILES |
| 1027 | 106 uint8_t OnAction_Profile(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 107 uint8_t OnAction_SetProfile(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
108 #endif |
| 38 | 109 uint8_t OnAction_Exit (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 110 uint8_t OnAction_Confirm (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
111 uint8_t OnAction_Maintenance (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 38 | 112 uint8_t OnAction_RebootRTE (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 113 uint8_t OnAction_ResetDeco (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 114 uint8_t OnAction_ResetAll (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 115 uint8_t OnAction_ResetLogbook (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 1054 | 116 uint8_t OnAction_ResetIcon (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 38 | 117 uint8_t OnAction_RebootMainCPU (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 118 uint8_t OnAction_Nothing (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 119 uint8_t OnAction_LogbookOffset(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 120 uint8_t OnAction_SetFactoryDefaults(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 121 uint8_t OnAction_SetBatteryCharge(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
122 uint8_t OnAction_AdjustSurfacePressure (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
|
468
aa1d71875e25
Moved and deactivated analyse sample buffer switch:
ideenmodellierer
parents:
446
diff
changeset
|
123 #ifdef ENABLE_ANALYSE_SAMPLES |
|
424
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
124 uint8_t OnAction_RecoverSampleIdx(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
|
468
aa1d71875e25
Moved and deactivated analyse sample buffer switch:
ideenmodellierer
parents:
446
diff
changeset
|
125 #endif |
| 38 | 126 #ifdef SCREENTEST |
| 127 uint8_t OnAction_ScreenTest (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 128 #endif | |
| 1017 | 129 uint8_t OnAction_Information (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 130 uint8_t OnAction_FlashBootloader (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 131 | |
| 38 | 132 /* |
| 133 uint8_t OnAction_Salinity (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 134 uint8_t OnAction_TestCLog (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 135 */ | |
| 136 | |
| 137 /* Exported functions --------------------------------------------------------*/ | |
| 138 | |
| 139 void openEdit_System(uint8_t line) | |
| 140 { | |
| 141 set_globalState_Menu_Line(line); | |
| 142 resetMenuEdit(CLUT_MenuPageSystem); | |
| 143 | |
| 144 if(actual_menu_content == MENU_SURFACE) | |
| 145 { | |
| 1027 | 146 |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
147 if(line == get_lineOfID(StMSYS1_DateTime)) |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
148 { |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
149 openEdit_DateTime(); |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
150 } |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
151 else if(line == get_lineOfID(StMSYS2_English)) |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
152 { |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
153 openEdit_Language(); |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
154 } |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
155 else if(line == get_lineOfID(StMSYS3_Units)) |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
156 { |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
157 openEdit_Design(); |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
158 } |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
159 else if(line == get_lineOfID(StMSYS4_Info)) |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
160 { |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
161 openEdit_Information(); |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
162 } |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
163 else if(line == get_lineOfID(StMSYS5_ResetAll)) |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
164 { |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
165 openEdit_Reset(); |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
166 } |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
167 #ifdef ENABLE_SETTING_PROFILES |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
168 else if(line == get_lineOfID(StMSYS_Profile)) |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
169 { |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
170 openEdit_Profile(); |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
171 } |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
172 #endif |
| 38 | 173 } |
| 174 else | |
| 175 { | |
| 520 | 176 openEdit_CustomviewDivemodeMenu(line); |
| 38 | 177 } |
| 178 | |
| 179 } | |
| 180 | |
| 181 /* Private functions ---------------------------------------------------------*/ | |
| 182 | |
| 183 | |
| 949 | 184 void refresh_DateTime() |
| 185 { | |
| 186 RTC_DateTypeDef Sdate; | |
| 187 RTC_TimeTypeDef Stime; | |
| 188 uint8_t day,month,year,hour,minute; | |
| 189 char text[32]; | |
| 190 char formatStr[20]; | |
| 191 SSettings *pSettings; | |
| 192 const SFirmwareData *pFirmwareInfo; | |
| 988 | 193 #if defined ENABLE_GNSS_INTERN || defined ENABLE_GNSS_EXTERN |
| 949 | 194 uint8_t localHours = 0; |
| 195 uint8_t localMinutes = 0; | |
| 196 #endif | |
| 197 pFirmwareInfo = firmwareDataGetPointer(); | |
| 198 const SDiveState * pStateReal = stateRealGetPointer(); | |
| 199 | |
| 200 pSettings = settingsGetPointer(); | |
| 201 | |
| 202 translateDate(pStateReal->lifeData.dateBinaryFormat, &Sdate); | |
| 203 translateTime(pStateReal->lifeData.timeBinaryFormat, &Stime); | |
| 204 year = Sdate.Year; | |
| 205 month = Sdate.Month; | |
| 206 day = Sdate.Date; | |
| 207 hour = Stime.Hours; | |
| 208 minute= Stime.Minutes; | |
| 209 | |
| 210 if(year < pFirmwareInfo->release_year) | |
| 211 year = pFirmwareInfo->release_year; | |
| 212 | |
| 213 if(month < 1) | |
| 214 month = 1; | |
| 215 | |
| 216 if(day < 1) | |
| 217 day = 1; | |
| 218 | |
| 219 getStringOfFormat_DDMMYY(formatStr, 20); | |
| 220 | |
| 221 text[0] = '\001'; | |
| 222 text[1] = TXT_DateAndTime; | |
| 223 text[2] = 0; | |
| 224 | |
| 225 write_topline(text); | |
| 226 | |
| 227 write_label_fix( 20, 340, ME_Y_LINE1, &FontT42, TXT_TimeConfig); | |
| 228 write_label_fix( 20, 340, ME_Y_LINE2, &FontT42, TXT_Format); | |
| 229 write_label_fix( 20, 340, ME_Y_LINE3, &FontT42, TXT_DateConfig); | |
| 230 write_label_fix( 20, 790, ME_Y_LINE4, &FontT42, TXT_Format); | |
| 988 | 231 #if defined ENABLE_GNSS_INTERN || defined ENABLE_GNSS_EXTERN |
| 949 | 232 write_label_var( 20, 340, ME_Y_LINE5, &FontT42, "GNSS"); |
| 233 snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_TIMEZONE); | |
| 234 write_label_var( 20, 340, ME_Y_LINE6, &FontT42, text); | |
| 235 #endif | |
| 236 | |
| 237 | |
| 238 tMenuEdit_newInput(StMSYS1_Time, hour, minute, 0, 0); | |
| 239 tMenuEdit_set_on_off(StMSYS1_12HR, pSettings->amPMTime); | |
| 240 | |
| 241 switch(pSettings->date_format) | |
| 242 { | |
| 243 default: | |
| 244 case DDMMYY: tMenuEdit_newInput(StMSYS1_Date, day, month, year, 0); | |
| 245 break; | |
| 246 case MMDDYY: tMenuEdit_newInput(StMSYS1_Date, month, day, year, 0); | |
| 247 break; | |
| 248 case YYMMDD: tMenuEdit_newInput(StMSYS1_Date, year, month, day, 0); | |
| 249 break; | |
| 250 } | |
| 251 tMenuEdit_newButtonText(StMSYS1_FORMAT, formatStr); | |
| 252 | |
| 988 | 253 #if defined ENABLE_GNSS_INTERN || defined ENABLE_GNSS_EXTERN |
| 949 | 254 if(pStateReal->lifeData.gnssData.alive & GNSS_ALIVE_STATE_TIME) |
| 255 { | |
| 256 convertUTCToLocal(pStateReal->lifeData.gnssData.DateTime.hour, pStateReal->lifeData.gnssData.DateTime.min, &localHours, &localMinutes); | |
| 257 convertStringOfDate_DDMMYY(formatStr, 20, pStateReal->lifeData.gnssData.DateTime.day | |
| 258 , pStateReal->lifeData.gnssData.DateTime.month | |
| 259 , pStateReal->lifeData.gnssData.DateTime.year); | |
| 260 snprintf(text, 32, "%02d:%02d - %s", localHours, localMinutes, formatStr); | |
| 261 tMenuEdit_newButtonText(StMSYS1_GNSSDT, text); | |
| 262 } | |
| 263 else | |
| 264 { | |
| 265 snprintf(text, 32, "--:--"); | |
| 266 write_label_var( 320, 790, ME_Y_LINE5, &FontT42, text); | |
| 267 } | |
| 268 tMenuEdit_newInput(StMSYS1_ZONE, pSettings->timeZone.hours, pSettings->timeZone.minutes, 0, 0); | |
| 269 #endif | |
| 270 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 271 } | |
| 38 | 272 void openEdit_DateTime(void) |
| 273 { | |
| 274 RTC_DateTypeDef Sdate; | |
| 275 RTC_TimeTypeDef Stime; | |
| 944 | 276 uint8_t day,month,year,hour,minute; |
| 38 | 277 char text[32]; |
| 949 | 278 char formatStr[20]; |
| 38 | 279 SSettings *pSettings; |
|
730
9c65d226f4f6
Update sensor menu support for automatic sensor detection:
Ideenmodellierer
parents:
720
diff
changeset
|
280 const SFirmwareData *pFirmwareInfo; |
| 949 | 281 |
| 720 | 282 pFirmwareInfo = firmwareDataGetPointer(); |
| 38 | 283 const SDiveState * pStateReal = stateRealGetPointer(); |
| 284 | |
| 285 pSettings = settingsGetPointer(); | |
| 944 | 286 |
| 287 set_globalState(StMSYS1_DateTime); | |
| 288 resetMenuEdit(CLUT_MenuPageSystem); | |
| 289 | |
| 38 | 290 translateDate(pStateReal->lifeData.dateBinaryFormat, &Sdate); |
| 291 translateTime(pStateReal->lifeData.timeBinaryFormat, &Stime); | |
| 292 year = Sdate.Year; | |
| 293 month = Sdate.Month; | |
| 294 day = Sdate.Date; | |
| 295 hour = Stime.Hours; | |
| 296 minute= Stime.Minutes; | |
| 297 | |
| 720 | 298 if(year < pFirmwareInfo->release_year) |
| 299 year = pFirmwareInfo->release_year; | |
| 38 | 300 |
| 301 if(month < 1) | |
| 302 month = 1; | |
| 303 | |
| 304 if(day < 1) | |
| 305 day = 1; | |
| 306 | |
| 949 | 307 getStringOfFormat_DDMMYY(formatStr, 20); |
| 38 | 308 |
| 309 text[0] = '\001'; | |
| 310 text[1] = TXT_DateAndTime; | |
| 311 text[2] = 0; | |
| 312 | |
| 313 write_topline(text); | |
| 314 | |
| 315 write_label_fix( 20, 340, ME_Y_LINE1, &FontT42, TXT_TimeConfig); | |
| 567 | 316 write_label_fix( 20, 340, ME_Y_LINE2, &FontT42, TXT_Format); |
| 317 write_label_fix( 20, 340, ME_Y_LINE3, &FontT42, TXT_DateConfig); | |
| 944 | 318 write_label_fix( 20, 790, ME_Y_LINE4, &FontT42, TXT_Format); |
| 988 | 319 #if defined ENABLE_GNSS_INTERN || defined ENABLE_GNSS_EXTERN |
| 949 | 320 write_label_var( 20, 340, ME_Y_LINE5, &FontT42, "GNSS"); |
| 321 snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_TIMEZONE); | |
| 322 write_label_var( 20, 340, ME_Y_LINE6, &FontT42, text); | |
| 323 #endif | |
| 38 | 324 |
| 325 write_field_2digit(StMSYS1_Time, 320, 780, ME_Y_LINE1, &FontT48, "##:##", (uint32_t)hour, (uint32_t)minute, 0, 0); | |
| 944 | 326 write_field_on_off(StMSYS1_12HR, 320, 790, ME_Y_LINE2, &FontT48, "12 HR", pSettings->amPMTime); |
| 327 | |
| 328 switch(pSettings->date_format) | |
| 329 { | |
| 330 default: | |
| 331 case DDMMYY: write_field_2digit(StMSYS1_Date, 320, 780, ME_Y_LINE3, &FontT48, "##-##-20##", (uint32_t)day, (uint32_t)month, (uint32_t)year, 0); | |
| 332 break; | |
| 333 case MMDDYY: write_field_2digit(StMSYS1_Date, 320, 780, ME_Y_LINE3, &FontT48, "##-##-20##", (uint32_t)month, (uint32_t)day, (uint32_t)year, 0); | |
| 334 break; | |
| 335 case YYMMDD: write_field_2digit(StMSYS1_Date, 320, 780, ME_Y_LINE3, &FontT48, "20##-##-##", (uint32_t)year, (uint32_t)month, (uint32_t)day, 0); | |
| 336 break; | |
| 337 } | |
| 338 | |
| 949 | 339 write_field_button(StMSYS1_FORMAT, 320, 790, ME_Y_LINE4, &FontT48, formatStr); |
| 944 | 340 |
| 988 | 341 #if defined ENABLE_GNSS_INTERN || defined ENABLE_GNSS_EXTERN |
| 949 | 342 snprintf(text, 32, "--:--"); |
| 343 write_field_button(StMSYS1_GNSSDT, 320, 790, ME_Y_LINE5, &FontT48, text); | |
| 344 write_field_sdigit(StMSYS1_ZONE, 320, 780, ME_Y_LINE6, &FontT48, "UTC: ###:###", pSettings->timeZone.hours, pSettings->timeZone.minutes,0,0); | |
| 345 #endif | |
| 38 | 346 |
| 347 setEvent(StMSYS1_Date, (uint32_t)OnAction_Date); | |
| 348 setEvent(StMSYS1_Time, (uint32_t)OnAction_Time); | |
| 567 | 349 setEvent(StMSYS1_12HR, (uint32_t)OnAction_12HR); |
| 944 | 350 setEvent(StMSYS1_FORMAT, (uint32_t)OnAction_Format); |
| 988 | 351 #if defined ENABLE_GNSS_INTERN || defined ENABLE_GNSS_EXTERN |
| 949 | 352 setEvent(StMSYS1_GNSSDT, (uint32_t)OnAction_SetGnss); |
| 353 setEvent(StMSYS1_ZONE, (uint32_t)OnAction_UTC); | |
| 354 #endif | |
| 38 | 355 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); |
| 356 } | |
| 357 | |
| 358 | |
| 359 uint8_t OnAction_Date(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 360 { | |
| 361 uint8_t digitContentNew; | |
| 362 uint32_t newDay, newMonth, newYear; | |
| 363 RTC_DateTypeDef sdatestructure; | |
| 364 | |
|
730
9c65d226f4f6
Update sensor menu support for automatic sensor detection:
Ideenmodellierer
parents:
720
diff
changeset
|
365 const SFirmwareData *pFirmwareInfo; |
| 720 | 366 pFirmwareInfo = firmwareDataGetPointer(); |
| 38 | 367 |
| 944 | 368 uint8_t mapDMY[3]; |
| 369 switch(settingsGetPointer()->date_format) | |
| 370 { | |
| 371 default: | |
| 372 case DDMMYY: mapDMY[0] = 0; | |
| 373 mapDMY[1] = 1; | |
| 374 mapDMY[2] = 2; | |
| 375 break; | |
| 376 case MMDDYY: mapDMY[0] = 1; | |
| 377 mapDMY[1] = 0; | |
| 378 mapDMY[2] = 2; | |
| 379 break; | |
| 380 case YYMMDD: mapDMY[0] = 2; | |
| 381 mapDMY[1] = 1; | |
| 382 mapDMY[2] = 0; | |
| 383 break; | |
| 384 } | |
| 385 | |
| 38 | 386 if(action == ACTION_BUTTON_ENTER) |
| 387 { | |
| 388 return digitContent; | |
| 389 } | |
| 390 if(action == ACTION_BUTTON_ENTER_FINAL) | |
| 391 { | |
| 944 | 392 switch(settingsGetPointer()->date_format) |
| 393 { | |
| 394 default: | |
| 395 case DDMMYY: evaluateNewString(editId, &newDay, &newMonth, &newYear, 0); | |
| 396 break; | |
| 397 case MMDDYY: evaluateNewString(editId, &newMonth, &newDay, &newYear, 0); | |
| 398 break; | |
| 399 case YYMMDD: evaluateNewString(editId, &newYear, &newMonth, &newDay, 0); | |
| 400 break; | |
| 401 } | |
| 402 | |
| 38 | 403 if(newDay == 0) |
| 404 newDay = 1; | |
| 405 if(newDay > 31) | |
| 406 newDay = 31; | |
| 407 if(newMonth == 0) | |
| 408 newMonth = 1; | |
| 409 if(newMonth > 12) | |
| 410 newMonth = 12; | |
| 411 if((newMonth == 2) && (newDay > 29)) | |
| 412 newDay = 29; | |
| 413 if((newDay > 30) && ((newMonth == 4) ||(newMonth == 6) ||(newMonth == 9) ||(newMonth == 11))) | |
| 414 newDay = 30; | |
| 415 if(newYear < 17) | |
| 416 newYear = 17; | |
| 417 if(newYear > 99) | |
| 418 newYear = 99; | |
| 419 | |
| 420 sdatestructure.Date = newDay; | |
| 421 sdatestructure.Month = newMonth; | |
| 422 sdatestructure.Year = newYear; | |
| 423 setWeekday(&sdatestructure); | |
| 424 | |
| 425 setDate(sdatestructure); | |
| 426 | |
| 944 | 427 switch(settingsGetPointer()->date_format) |
| 428 { | |
| 429 default: | |
| 430 case DDMMYY: tMenuEdit_newInput(editId, newDay, newMonth, newYear, 0); | |
| 431 break; | |
| 432 case MMDDYY: tMenuEdit_newInput(editId, newMonth, newDay, newYear, 0); | |
| 433 break; | |
| 434 case YYMMDD: tMenuEdit_newInput(editId, newYear, newMonth, newDay, 0); | |
| 435 break; | |
| 436 } | |
| 437 | |
| 38 | 438 return UNSPECIFIC_RETURN; |
| 439 } | |
| 720 | 440 if(action == ACTION_BUTTON_NEXT) /* clip values to a specific range e.g. 12 months */ |
| 38 | 441 { |
| 442 digitContentNew = digitContent + 1; | |
| 944 | 443 |
| 444 if((blockNumber == mapDMY[0]) && (digitContentNew > '0' + 31)) | |
| 445 { | |
| 38 | 446 digitContentNew = '1'; |
| 944 | 447 } |
| 448 if((blockNumber == mapDMY[1]) && (digitContentNew > '0' + 12)) | |
| 449 { | |
| 38 | 450 digitContentNew = '1'; |
| 944 | 451 } |
| 452 if((blockNumber == mapDMY[2]) && (digitContentNew > '0' + pFirmwareInfo->release_year + 10)) | |
| 453 { | |
| 720 | 454 digitContentNew = '0' + pFirmwareInfo->release_year; |
| 944 | 455 } |
| 38 | 456 return digitContentNew; |
| 457 } | |
| 720 | 458 if(action == ACTION_BUTTON_BACK) /* clip values to a specific range e.g. 12 months */ |
| 38 | 459 { |
| 460 digitContentNew = digitContent - 1; | |
| 944 | 461 if((blockNumber == mapDMY[0]) && (digitContentNew < '1')) |
| 462 { | |
| 38 | 463 digitContentNew = '0' + 31; |
| 944 | 464 } |
| 465 if((blockNumber == mapDMY[1]) && (digitContentNew < '1')) | |
| 466 { | |
| 38 | 467 digitContentNew = '0' + 12; |
| 944 | 468 } |
| 469 if((blockNumber == mapDMY[2]) && (digitContentNew < '0' + pFirmwareInfo->release_year)) | |
| 470 { | |
| 720 | 471 digitContentNew = '0' + pFirmwareInfo->release_year + 10; |
| 944 | 472 } |
| 38 | 473 return digitContentNew; |
| 474 } | |
| 475 /* | |
| 476 if(action == ACTION_BUTTON_NEXT) | |
| 477 { | |
| 478 digitContentNew = digitContent + 1; | |
| 479 if((blockNumber == 2) && (digitNumber == 0) && (digitContentNew > '2')) | |
| 480 digitContentNew = '1'; | |
| 481 if((blockNumber == 0) && (digitNumber == 0) && (digitContentNew > '3')) | |
| 482 digitContentNew = '0'; | |
| 483 if((blockNumber == 1) && (digitNumber == 0) && (digitContentNew > '1')) | |
| 484 digitContentNew = '0'; | |
| 485 if(digitContentNew > '9') | |
| 486 digitContentNew = '0'; | |
| 487 return digitContentNew; | |
| 488 } | |
| 489 if(action == ACTION_BUTTON_BACK) | |
| 490 { | |
| 491 digitContentNew = digitContent - 1; | |
| 492 if((blockNumber == 2) && (digitNumber == 0) && (digitContentNew < '1')) | |
| 493 digitContentNew = '2'; | |
| 494 if((blockNumber == 0) && (digitNumber == 0) && (digitContentNew < '0')) | |
| 495 digitContentNew = '3'; | |
| 496 if((blockNumber == 1) && (digitNumber == 0) && (digitContentNew < '0')) | |
| 497 digitContentNew = '1'; | |
| 498 if(digitContentNew < '0') | |
| 499 digitContentNew = '9'; | |
| 500 return digitContentNew; | |
| 501 } | |
| 502 */ | |
| 503 return UNSPECIFIC_RETURN; | |
| 504 } | |
| 505 | |
| 506 | |
| 507 uint8_t OnAction_Time(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 508 { | |
| 509 uint8_t digitContentNew; | |
| 510 uint32_t newHour, newMinute; | |
| 511 RTC_TimeTypeDef stimestructure; | |
| 512 | |
| 513 if(action == ACTION_BUTTON_ENTER) | |
| 514 { | |
| 515 return digitContent; | |
| 516 } | |
| 517 if(action == ACTION_BUTTON_ENTER_FINAL) | |
| 518 { | |
| 519 evaluateNewString(editId, &newHour, &newMinute, 0, 0); | |
| 520 if(newHour > 23) | |
| 521 newHour = 23; | |
| 522 if(newMinute > 59) | |
| 523 newMinute = 59; | |
| 524 | |
| 525 stimestructure.Hours = newHour; | |
| 526 stimestructure.Minutes = newMinute; | |
| 527 stimestructure.Seconds = 0; | |
| 528 | |
| 529 setTime(stimestructure); | |
| 530 | |
| 531 tMenuEdit_newInput(editId, newHour, newMinute, 0, 0); | |
| 532 return UNSPECIFIC_RETURN; | |
| 533 } | |
| 534 if(action == ACTION_BUTTON_NEXT) | |
| 535 { | |
| 536 digitContentNew = digitContent + 1; | |
| 537 if((blockNumber == 0) && (digitContentNew > '0' + 23)) | |
| 538 digitContentNew = '0'; | |
| 539 if((blockNumber == 1) && (digitContentNew > '0' + 59)) | |
| 540 digitContentNew = '0'; | |
| 541 return digitContentNew; | |
| 542 } | |
| 543 if(action == ACTION_BUTTON_BACK) | |
| 544 { | |
| 545 digitContentNew = digitContent - 1; | |
| 546 if((blockNumber == 0) && (digitContentNew < '0')) | |
| 547 digitContentNew = '0' + 23; | |
| 548 if((blockNumber == 1) && (digitContentNew < '0')) | |
| 549 digitContentNew = '0' + 59; | |
| 550 return digitContentNew; | |
| 551 } | |
| 552 /* | |
| 553 if(action == ACTION_BUTTON_NEXT) | |
| 554 { | |
| 555 digitContentNew = digitContent + 1; | |
| 556 if((blockNumber == 0) && (digitNumber == 0) && (digitContentNew > '2')) | |
| 557 digitContentNew = '0'; | |
| 558 if((blockNumber == 1) && (digitNumber == 0) && (digitContentNew > '5')) | |
| 559 digitContentNew = '0'; | |
| 560 if(digitContentNew > '9') | |
| 561 digitContentNew = '0'; | |
| 562 return digitContentNew; | |
| 563 } | |
| 564 if(action == ACTION_BUTTON_BACK) | |
| 565 { | |
| 566 digitContentNew = digitContent - 1; | |
| 567 if((blockNumber == 0) && (digitNumber == 0) && (digitContentNew < '0')) | |
| 568 digitContentNew = '2'; | |
| 569 if((blockNumber == 1) && (digitNumber == 0) && (digitContentNew < '0')) | |
| 570 digitContentNew = '5'; | |
| 571 if(digitContentNew < '0') | |
| 572 digitContentNew = '9'; | |
| 573 return digitContentNew; | |
| 574 } | |
| 575 */ | |
| 576 return UNSPECIFIC_RETURN; | |
| 577 } | |
| 578 | |
| 567 | 579 uint8_t OnAction_12HR(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 580 { | |
| 581 SSettings *pSettings; | |
| 582 | |
| 583 pSettings = settingsGetPointer(); | |
| 584 pSettings->amPMTime = !(pSettings->amPMTime); | |
| 585 | |
| 586 tMenuEdit_set_on_off(editId, pSettings->amPMTime); | |
| 587 | |
| 588 return UNSPECIFIC_RETURN; | |
| 589 } | |
| 38 | 590 |
| 949 | 591 uint8_t OnAction_SetGnss(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 592 { | |
| 593 RTC_DateTypeDef sdatestructure; | |
| 594 RTC_TimeTypeDef stimestructure; | |
| 595 uint8_t localHours = 0; | |
| 596 uint8_t localMinutes = 0; | |
| 597 | |
| 598 const SDiveState * pStateReal = stateRealGetPointer(); | |
| 599 | |
| 600 if(pStateReal->lifeData.gnssData.alive & GNSS_ALIVE_STATE_TIME) | |
| 601 { | |
| 602 convertUTCToLocal(pStateReal->lifeData.gnssData.DateTime.hour, pStateReal->lifeData.gnssData.DateTime.min, &localHours, &localMinutes); | |
| 603 stimestructure.Hours = localHours; | |
| 604 stimestructure.Minutes = localMinutes; | |
| 605 stimestructure.Seconds = 0; | |
| 606 setTime(stimestructure); | |
| 607 | |
| 608 sdatestructure.Date = pStateReal->lifeData.gnssData.DateTime.day; | |
| 609 sdatestructure.Month = pStateReal->lifeData.gnssData.DateTime.month; | |
| 610 sdatestructure.Year = pStateReal->lifeData.gnssData.DateTime.year; | |
| 611 setWeekday(&sdatestructure); | |
| 612 setDate(sdatestructure); | |
| 613 } | |
| 614 return UNSPECIFIC_RETURN; | |
| 615 } | |
| 616 | |
| 944 | 617 void openEdit_DateFormat(void) |
| 618 { | |
| 619 char text[32]; | |
| 620 SSettings *pSettings; | |
| 621 | |
| 622 uint8_t ddmmyy = 0; | |
| 623 uint8_t mmddyy= 0; | |
| 624 uint8_t yymmdd = 0; | |
| 625 | |
| 626 pSettings = settingsGetPointer(); | |
| 627 | |
| 628 | |
| 629 set_globalState(StMSYS1_FORMAT); | |
| 630 resetMenuEdit(CLUT_MenuPageSystem); | |
| 631 setBackMenu((uint32_t)openEdit_DateTime,0,4); | |
| 632 | |
| 633 switch(pSettings->date_format) | |
| 634 { | |
| 635 default: | |
| 636 case DDMMYY: ddmmyy = 1; | |
| 637 break; | |
| 638 case MMDDYY: mmddyy = 1; | |
| 639 break; | |
| 640 case YYMMDD: yymmdd = 1; | |
| 641 break; | |
| 642 }; | |
| 643 | |
| 644 text[0] = '\001'; | |
| 645 text[1] = TXT_Format; | |
| 646 text[2] = 0; | |
| 647 | |
| 648 write_topline(text); | |
| 649 | |
| 650 write_label_fix( 20, 790, ME_Y_LINE2, &FontT42, TXT_Format); | |
| 651 | |
| 652 write_field_on_off(StMSYS1_DDMMYY, 320, 790, ME_Y_LINE1, &FontT48, "DDMMYY", ddmmyy); | |
| 653 write_field_on_off(StMSYS1_MMDDYY, 320, 790, ME_Y_LINE2, &FontT48, "MMDDYY", mmddyy); | |
| 654 write_field_on_off(StMSYS1_YYMMDD, 320, 790, ME_Y_LINE3, &FontT48, "YYMMDD", yymmdd); | |
| 655 | |
| 656 setEvent(StMSYS1_DDMMYY, (uint32_t)OnAction_DDMMYY); | |
| 657 setEvent(StMSYS1_MMDDYY, (uint32_t)OnAction_MMDDYY); | |
| 658 setEvent(StMSYS1_YYMMDD, (uint32_t)OnAction_YYMMDD); | |
| 659 | |
| 660 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 661 } | |
| 662 | |
| 663 uint8_t OnAction_Format(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 664 { | |
| 665 openEdit_DateFormat(); | |
| 666 | |
| 667 return UNSPECIFIC_RETURN; | |
| 668 } | |
| 669 | |
| 38 | 670 uint8_t OnAction_DDMMYY(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 671 { | |
| 672 SSettings *pSettings; | |
| 673 | |
| 674 pSettings = settingsGetPointer(); | |
| 675 pSettings->date_format = DDMMYY; | |
| 676 | |
| 677 tMenuEdit_set_on_off(editId, 1); | |
| 678 tMenuEdit_set_on_off(StMSYS1_MMDDYY, 0); | |
| 679 tMenuEdit_set_on_off(StMSYS1_YYMMDD, 0); | |
| 680 | |
| 681 return UNSPECIFIC_RETURN; | |
| 682 } | |
| 683 | |
| 684 | |
| 685 uint8_t OnAction_MMDDYY(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 686 { | |
| 687 SSettings *pSettings; | |
| 688 | |
| 689 pSettings = settingsGetPointer(); | |
| 690 pSettings->date_format = MMDDYY; | |
| 691 | |
| 692 tMenuEdit_set_on_off(editId, 1); | |
| 693 tMenuEdit_set_on_off(StMSYS1_DDMMYY, 0); | |
| 694 tMenuEdit_set_on_off(StMSYS1_YYMMDD, 0); | |
| 695 | |
| 696 return UNSPECIFIC_RETURN; | |
| 697 } | |
| 698 | |
| 699 | |
| 700 uint8_t OnAction_YYMMDD(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 701 { | |
| 702 SSettings *pSettings; | |
| 703 | |
| 704 pSettings = settingsGetPointer(); | |
| 705 pSettings->date_format = YYMMDD; | |
| 706 | |
| 707 tMenuEdit_set_on_off(editId, 1); | |
| 708 tMenuEdit_set_on_off(StMSYS1_MMDDYY, 0); | |
| 709 tMenuEdit_set_on_off(StMSYS1_DDMMYY, 0); | |
| 710 | |
| 711 return UNSPECIFIC_RETURN; | |
| 712 } | |
| 713 | |
| 949 | 714 uint8_t OnAction_UTC(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 715 { | |
| 716 SSettings *settings = settingsGetPointer(); | |
| 717 const SDiveState * pStateReal = stateRealGetPointer(); | |
| 718 int32_t utcHour; | |
| 719 uint32_t utcMinutes; | |
| 720 uint8_t digitContentNew; | |
| 721 uint8_t localHours = 0; | |
| 722 uint8_t localMinutes = 0; | |
| 723 char text[32]; | |
| 724 char timeStr[20]; | |
| 725 | |
| 726 switch (action) { | |
| 727 case ACTION_BUTTON_ENTER: | |
| 728 | |
| 729 return digitContent; | |
| 730 case ACTION_BUTTON_ENTER_FINAL: | |
| 731 { | |
| 732 | |
| 733 evaluateNewString(editId, (uint32_t *)&utcHour, &utcMinutes, NULL, NULL); | |
| 734 | |
| 735 if (utcHour > 14) { | |
| 736 utcHour = 14; | |
| 737 } else if (utcHour < -12) { | |
| 738 utcHour = -12; | |
| 739 } | |
| 740 | |
| 741 if (utcMinutes % 15 != 0) | |
| 742 { | |
| 743 utcMinutes = (utcMinutes / 15) * 15; | |
| 744 } | |
| 745 if(utcMinutes > 45) | |
| 746 { | |
| 747 utcMinutes = 45; | |
| 748 } else if (utcMinutes < 0) { | |
| 749 utcMinutes = 0; | |
| 750 } | |
| 751 settings->timeZone.hours = utcHour; | |
| 752 settings->timeZone.minutes = utcMinutes; | |
| 753 | |
| 754 tMenuEdit_newInput(editId, ((input_u)utcHour).uint32, utcMinutes, 0, 0); | |
| 755 convertUTCToLocal(pStateReal->lifeData.gnssData.DateTime.hour, pStateReal->lifeData.gnssData.DateTime.min, &localHours, &localMinutes); | |
| 756 convertStringOfDate_DDMMYY(timeStr, 20, pStateReal->lifeData.gnssData.DateTime.day | |
| 757 , pStateReal->lifeData.gnssData.DateTime.month | |
| 758 , pStateReal->lifeData.gnssData.DateTime.year); | |
| 759 snprintf(text, 32, "%2d:%2d - %s", localHours, localMinutes, timeStr); | |
| 760 tMenuEdit_newButtonText(StMSYS1_GNSSDT, text); | |
| 761 } | |
| 762 | |
| 763 break; | |
| 764 case ACTION_BUTTON_NEXT: | |
| 765 if ((blockNumber == 0) && (digitNumber == 0)) { | |
| 766 digitContentNew = togglePlusMinus(digitContent); | |
| 767 } else { | |
| 768 digitContentNew = digitContent + 1; | |
| 769 if (digitContentNew > '9') { | |
| 770 digitContentNew = '0'; | |
| 771 } | |
| 772 } | |
| 773 | |
| 774 return digitContentNew; | |
| 775 case ACTION_BUTTON_BACK: | |
| 776 if ((blockNumber == 0) && (digitNumber == 0)) { | |
| 777 digitContentNew = togglePlusMinus(digitContent); | |
| 778 } else { | |
| 779 digitContentNew = digitContent - 1; | |
| 780 if (digitContentNew < '0') { | |
| 781 digitContentNew = '9'; | |
| 782 } | |
| 783 } | |
| 784 return digitContentNew; | |
| 785 } | |
| 786 return UNSPECIFIC_RETURN; | |
| 787 } | |
| 788 | |
| 38 | 789 |
| 790 uint8_t OnAction_DST(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 791 { | |
| 792 RTC_TimeTypeDef stimestructure; | |
| 793 uint8_t newDST; | |
| 794 | |
| 795 get_RTC_DateTime(0, &stimestructure); | |
| 796 newDST = stimestructure.DayLightSaving; | |
| 797 if(newDST) | |
| 798 newDST = 0; | |
| 799 else | |
| 800 newDST = 1; | |
| 801 stimestructure.DayLightSaving = newDST; | |
| 802 set_RTC_DateTime(0, &stimestructure); | |
| 803 | |
| 804 tMenuEdit_set_on_off(editId, newDST); | |
| 805 | |
| 806 return UNSPECIFIC_RETURN; | |
| 807 } | |
| 808 | |
| 809 | |
| 810 void openEdit_Language(void) | |
| 811 { | |
| 812 char text[32]; | |
| 813 uint8_t actualLanguage, active; | |
| 814 SSettings *pSettings; | |
| 815 | |
| 816 pSettings = settingsGetPointer(); | |
| 817 actualLanguage = pSettings->selected_language; | |
| 818 | |
| 819 text[0] = '\001'; | |
| 820 text[1] = TXT_Language; | |
| 821 text[2] = 0; | |
| 822 write_topline(text); | |
| 823 | |
| 824 text[0] = TXT_LanguageName; | |
| 825 text[1] = 0; | |
| 826 | |
| 827 pSettings->selected_language = LANGUAGE_English; | |
| 828 if( actualLanguage == pSettings->selected_language) | |
| 829 active = 1; | |
| 830 else | |
| 831 active = 0; | |
| 832 write_field_on_off(StMSYS2_English, 30, 500, ME_Y_LINE1, &FontT48, text, active); | |
| 833 | |
| 834 pSettings->selected_language = LANGUAGE_German; | |
| 835 if( actualLanguage == pSettings->selected_language) | |
| 836 active = 1; | |
| 837 else | |
| 838 active = 0; | |
| 839 write_field_on_off(StMSYS2_German, 30, 800, ME_Y_LINE2, &FontT48, text, active); | |
| 840 | |
| 841 pSettings->selected_language = LANGUAGE_French; | |
| 842 if( actualLanguage == pSettings->selected_language) | |
| 843 active = 1; | |
| 844 else | |
| 845 active = 0; | |
| 846 write_field_on_off(StMSYS2_French, 30, 800, ME_Y_LINE3, &FontT48, text, active); | |
|
55
a7683f9765da
Italian activated (needs some fine tuning), special characters (?,?,?,?,? and others) currently not working...
heinrichsweikamp
parents:
38
diff
changeset
|
847 |
| 38 | 848 |
| 849 pSettings->selected_language = LANGUAGE_Italian; | |
| 850 if( actualLanguage == pSettings->selected_language) | |
| 851 active = 1; | |
| 852 else | |
| 853 active = 0; | |
| 854 write_field_on_off(StMSYS2_Italian, 30, 800, ME_Y_LINE4, &FontT48, text, active); | |
| 855 | |
|
102
4276d56eb37c
hPa instead of mbar, enabled Spanish language
heinrichsweikamp
parents:
64
diff
changeset
|
856 |
| 38 | 857 pSettings->selected_language = LANGUAGE_Espanol; |
| 858 if( actualLanguage == pSettings->selected_language) | |
| 859 active = 1; | |
| 860 else | |
| 861 active = 0; | |
| 862 write_field_on_off(StMSYS2_Espanol, 30, 800, ME_Y_LINE5, &FontT48, text, active); | |
|
102
4276d56eb37c
hPa instead of mbar, enabled Spanish language
heinrichsweikamp
parents:
64
diff
changeset
|
863 |
| 38 | 864 pSettings->selected_language = actualLanguage; |
| 865 | |
| 866 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 867 | |
| 868 setEvent(StMSYS2_English, (uint32_t)OnAction_English); | |
| 869 setEvent(StMSYS2_German, (uint32_t)OnAction_German); | |
| 870 setEvent(StMSYS2_French, (uint32_t)OnAction_French); | |
|
55
a7683f9765da
Italian activated (needs some fine tuning), special characters (?,?,?,?,? and others) currently not working...
heinrichsweikamp
parents:
38
diff
changeset
|
871 setEvent(StMSYS2_Italian, (uint32_t)OnAction_Italian); |
|
102
4276d56eb37c
hPa instead of mbar, enabled Spanish language
heinrichsweikamp
parents:
64
diff
changeset
|
872 setEvent(StMSYS2_Espanol, (uint32_t)OnAction_Espanol); |
| 38 | 873 } |
| 874 | |
| 875 | |
| 876 uint8_t OnAction_English (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 877 { | |
| 878 SSettings *pSettings = settingsGetPointer(); | |
| 879 pSettings->selected_language = LANGUAGE_English; | |
| 880 return EXIT_TO_MENU_WITH_LOGO; | |
| 881 } | |
| 882 | |
| 883 | |
| 884 uint8_t OnAction_German (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 885 { | |
| 886 SSettings *pSettings = settingsGetPointer(); | |
| 887 pSettings->selected_language = LANGUAGE_German; | |
| 888 return EXIT_TO_MENU_WITH_LOGO; | |
| 889 } | |
| 890 | |
| 891 | |
| 892 uint8_t OnAction_French (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 893 { | |
| 894 SSettings *pSettings = settingsGetPointer(); | |
| 895 pSettings->selected_language = LANGUAGE_French; | |
| 896 return EXIT_TO_MENU_WITH_LOGO; | |
| 897 } | |
| 898 | |
| 899 | |
| 900 uint8_t OnAction_Italian (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 901 { | |
| 902 SSettings *pSettings = settingsGetPointer(); | |
| 903 pSettings->selected_language = LANGUAGE_Italian; | |
| 904 return EXIT_TO_MENU_WITH_LOGO; | |
| 905 } | |
| 906 | |
| 907 | |
| 908 uint8_t OnAction_Espanol (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 909 { | |
| 910 SSettings *pSettings = settingsGetPointer(); | |
| 911 pSettings->selected_language = LANGUAGE_Espanol; | |
| 912 return EXIT_TO_MENU_WITH_LOGO; | |
| 913 } | |
| 914 | |
| 915 | |
| 916 void openEdit_Design(void) | |
| 917 { | |
| 918 refresh_Design(); | |
| 919 | |
| 920 write_field_button(StMSYS3_Units, 400, 700, ME_Y_LINE1, &FontT48, ""); | |
| 921 write_field_button(StMSYS3_Colors, 400, 700, ME_Y_LINE2, &FontT48, ""); | |
|
343
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
922 #ifdef HAVE_DEBUG_VIEW |
|
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
923 write_field_button(StMSYS3_Debug, 400, 700, ME_Y_LINE3, &FontT48, ""); |
|
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
924 #endif |
| 38 | 925 setEvent(StMSYS3_Units, (uint32_t)OnAction_Units); |
| 926 setEvent(StMSYS3_Colors, (uint32_t)OnAction_Colorscheme); | |
|
343
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
927 #ifdef HAVE_DEBUG_VIEW |
|
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
928 setEvent(StMSYS3_Debug, (uint32_t)OnAction_DebugInfo); |
|
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
929 #endif |
| 38 | 930 } |
| 931 | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
932 #ifdef ENABLE_SETTING_PROFILES |
| 1027 | 933 void changeActiveProfil(uint8_t newProfile) |
| 934 { | |
| 935 SSettings *pSettings = settingsGetPointer(); | |
| 936 SSettings* pOldProfile = profileGetPointer(pSettings->activeProfile); | |
| 937 SSettings* pNewProfile = profileGetPointer(newProfile); | |
| 938 uint16_t personalDiveCountBackup; | |
| 939 uint8_t lastDiveLogIdBackup; | |
| 940 uint32_t sampleStartBackup; | |
| 941 char customTextBackup[60]; | |
| 942 | |
| 943 if( newProfile < NUMBER_OF_PROFILES) | |
| 944 { | |
| 945 /* some data needs to be the same in all profiles => make backup before gettings the new profile */ | |
| 946 personalDiveCountBackup = pSettings->personalDiveCount; | |
| 947 lastDiveLogIdBackup = pSettings->lastDiveLogId; | |
| 948 sampleStartBackup = pSettings->logFlashNextSampleStartAddress; | |
| 949 memcpy(customTextBackup, pSettings->customtext, 60); | |
| 950 | |
| 951 | |
| 952 memcpy(pOldProfile,pSettings,sizeof(SSettings)); | |
| 953 memcpy(pSettings,pNewProfile,sizeof(SSettings)); | |
| 954 | |
| 955 set_new_settings_missing_in_ext_flash(EF_PROFILE0 + newProfile); | |
| 956 check_and_correct_settings(EF_PROFILE0 + newProfile); | |
| 957 | |
| 958 pSettings->personalDiveCount = personalDiveCountBackup; | |
| 959 pSettings->lastDiveLogId = lastDiveLogIdBackup; | |
| 960 pSettings->logFlashNextSampleStartAddress = sampleStartBackup; | |
| 961 | |
| 962 pSettings->firmwareVersion[0] = firmware_FirmwareData.versionFirst; | |
| 963 pSettings->firmwareVersion[1] = firmware_FirmwareData.versionSecond; | |
| 964 pSettings->firmwareVersion[2] = firmware_FirmwareData.versionThird; | |
| 965 pSettings->firmwareVersion[3] = firmware_FirmwareData.versionBeta; | |
| 966 | |
| 967 memcpy(pSettings->customtext, customTextBackup, 60); | |
| 968 | |
| 969 if(pOldProfile->tX_colorscheme != pSettings->tX_colorscheme) | |
| 970 { | |
| 971 GFX_use_colorscheme(pSettings->tX_colorscheme); | |
| 972 tHome_init_compass(); | |
| 973 } | |
| 974 } | |
| 975 } | |
| 976 | |
| 977 void exitMenuProfil() | |
| 978 { | |
| 979 uint8_t index = 0; | |
| 980 SSettings* pProfile; | |
| 981 uint8_t writeFlash = 0; | |
| 982 uint32_t profileExitCrc; | |
| 983 | |
| 984 for(index = 0; index < NUMBER_OF_PROFILES; index++) | |
| 985 { | |
| 986 pProfile = profileGetPointer(index); | |
| 987 profileExitCrc = CalcFletcher32((uint32_t)pProfile, (uint32_t)pProfile + sizeof(SSettings)); | |
| 988 | |
| 989 if(profileExitCrc != profileStartCrc[index]) | |
| 990 { | |
| 991 writeFlash = 1; | |
| 992 break; | |
| 993 } | |
| 994 } | |
| 995 if(writeFlash) | |
| 996 { | |
| 997 for(index = EF_PROFILE0; index <= EF_PROFILE3; index++) | |
| 998 ext_flash_write_settings(index,0); | |
| 999 } | |
| 1000 if(profileActiveStart != settingsGetPointer()->activeProfile) | |
| 1001 { | |
| 1002 createDiveSettings(); | |
| 1003 } | |
| 1004 exitMenuEdit(1); | |
| 1005 } | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
1006 #endif |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
1007 #ifdef ENABLE_SETTING_PROFILES |
| 1027 | 1008 void openEdit_Profile(void) |
| 1009 { | |
| 1010 char text[50]; | |
| 1011 uint8_t index = 0; | |
| 1012 SSettings *pSettings = settingsGetPointer(); | |
| 1013 SSettings* pProfile; | |
| 1014 | |
| 1015 setBackMenu((uint32_t)exitMenuProfil,0,0); | |
| 1016 | |
| 1017 profileActiveStart = pSettings->activeProfile; | |
| 1018 | |
| 1019 /* read profiles from flash */ | |
| 1020 for(index = EF_PROFILE0; index <= EF_PROFILE3; index++) | |
| 1021 { | |
| 1022 set_settings_to_Standard(index); /* this is needed because details like header version are used by the read block function */ | |
| 1023 ext_flash_read_settings(index); /* will overwrite standard settings if reading is successfull */ | |
| 1024 pProfile = profileGetPointer(index - EF_PROFILE0); | |
| 1025 profileStartCrc[index - EF_PROFILE0] = CalcFletcher32((uint32_t)pProfile, (uint32_t)pProfile + sizeof(SSettings)); | |
| 1026 set_new_settings_missing_in_ext_flash(index); | |
| 1027 check_and_correct_settings(index); | |
| 1028 } | |
| 1029 | |
| 1030 sprintf(text,"\001%c%c",TXT_2BYTE,TXT2BYTE_Profile); | |
| 1031 write_topline(text); | |
| 1032 | |
| 1033 sprintf(text,"%c %c%c:",TXT_Active,TXT_2BYTE,TXT2BYTE_Profile); | |
| 1034 write_label_var( 30, 300, ME_Y_LINE1, &FontT48, text); | |
| 1035 sprintf(text,"%s",pSettings->profileName[pSettings->activeProfile]); | |
| 1036 write_field_button(StMSYS_Profile, 400, 700, ME_Y_LINE1, &FontT48, text); | |
| 1037 write_field_text(StMSYS_ProfileA, 400, 700, ME_Y_LINE3, &FontT48, "########", pSettings->profileName[0]); | |
| 1038 write_field_text(StMSYS_ProfileB, 400, 700, ME_Y_LINE4, &FontT48, "########", pSettings->profileName[1]); | |
| 1039 write_field_text(StMSYS_ProfileC, 400, 700, ME_Y_LINE5, &FontT48, "########", pSettings->profileName[2]); | |
| 1040 write_field_text(StMSYS_ProfileD, 400, 700, ME_Y_LINE6, &FontT48, "########", pSettings->profileName[3]); | |
| 1041 | |
| 1042 setEvent(StMSYS_Profile, (uint32_t)OnAction_SetProfile); | |
| 1043 setEvent(StMSYS_ProfileA, (uint32_t)OnAction_Profile); | |
| 1044 setEvent(StMSYS_ProfileB, (uint32_t)OnAction_Profile); | |
| 1045 setEvent(StMSYS_ProfileC, (uint32_t)OnAction_Profile); | |
| 1046 setEvent(StMSYS_ProfileD, (uint32_t)OnAction_Profile); | |
| 1047 | |
| 1048 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 1049 } | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
1050 #endif |
| 1027 | 1051 |
| 38 | 1052 |
| 1053 void refresh_Design(void) | |
| 1054 { | |
| 1027 | 1055 char text[32]; |
| 1056 SSettings *pSettings = settingsGetPointer(); | |
| 38 | 1057 |
| 1058 // header | |
| 1059 text[0] = '\001'; | |
| 1060 text[1] = TXT_2BYTE; | |
| 1061 text[2] = TXT2BYTE_Layout; | |
| 1062 text[3] = 0; | |
| 1063 write_topline(text); | |
| 1064 | |
| 1065 // units | |
| 1066 text[0] = TXT_2BYTE; | |
| 1067 text[1] = TXT2BYTE_Units; | |
| 1068 text[2] = 0; | |
| 1069 write_label_var( 30, 200, ME_Y_LINE1, &FontT48, text); | |
| 1070 | |
| 1027 | 1071 if(pSettings->nonMetricalSystem) |
| 38 | 1072 { |
| 1073 text[1] = TXT2BYTE_Units_feet; | |
| 1074 } | |
| 1075 else | |
| 1076 { | |
| 1077 text[1] = TXT2BYTE_Units_metric; | |
| 1078 } | |
| 1079 write_label_var( 400, 700, ME_Y_LINE1, &FontT48, text); | |
| 1080 | |
| 1081 // colorscheme | |
| 1082 text[0] = TXT_2BYTE; | |
| 1083 text[1] = TXT2BYTE_Farbschema; | |
| 1084 text[2] = 0; | |
|
118
ee7f2cd9b9b4
Enlarge text limits to get string displayed completly
Ideenmodellierer
parents:
103
diff
changeset
|
1085 write_label_var( 30, 300, ME_Y_LINE2, &FontT48, text); |
| 38 | 1086 |
| 1027 | 1087 text[0] = '0' + pSettings->tX_colorscheme; |
| 38 | 1088 text[1] = 0; |
| 1089 write_label_var( 400, 700, ME_Y_LINE2, &FontT48, text); | |
| 1090 | |
|
343
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
1091 #ifdef HAVE_DEBUG_VIEW |
| 38 | 1092 // specials |
| 1093 text[0] = TXT_2BYTE; | |
| 1094 text[1] = TXT2BYTE_ShowDebug; | |
| 1095 text[2] = 0; | |
| 1096 write_label_var( 30, 700, ME_Y_LINE3, &FontT48, text); | |
| 1097 | |
| 1098 if(settingsGetPointer()->showDebugInfo) | |
| 1099 text[0] = '\005'; | |
| 1100 else | |
| 1101 text[0] = '\006'; | |
| 1102 text[1] = 0; | |
| 1103 write_label_var( 400, 700, ME_Y_LINE3, &FontT48, text); | |
|
343
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
1104 #endif |
| 38 | 1105 |
| 1106 // design | |
| 1107 text[0] = TXT_Depth; | |
| 1108 text[1] = 0; | |
| 1109 write_content( 30, 700, ME_Y_LINE4, &FontT24, text, CLUT_Font031); | |
| 1110 write_content( 30, 700, ME_Y_LINE4 + 30 + 70, &FontT48, "___________", CLUT_DIVE_FieldSeperatorLines); | |
| 1111 write_content(280, 700, ME_Y_LINE4 + 30 + 70 - 3, &FontT48, "|", CLUT_DIVE_pluginbox); | |
| 1112 write_content(290, 700, ME_Y_LINE4 + 30 + 70 - 37, &FontT48, "_______________", CLUT_DIVE_pluginbox); | |
| 884 | 1113 write_content( 30, 700, ME_Y_LINE4 + 42, &FontT144, "24.7", CLUT_Font027); |
| 38 | 1114 |
| 1115 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 1116 } | |
| 1117 | |
| 1118 | |
| 1119 uint8_t OnAction_Units(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1120 { | |
| 1121 settingsGetPointer()->nonMetricalSystem = !(settingsGetPointer()->nonMetricalSystem); | |
| 1122 return EXIT_TO_MENU_WITH_LOGO;//UPDATE_DIVESETTINGS; | |
| 1123 } | |
| 1124 | |
| 1125 | |
| 1126 uint8_t OnAction_Colorscheme(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1127 { | |
| 1128 uint8_t newColorscheme; | |
| 1129 | |
| 1130 newColorscheme = settingsGetPointer()->tX_colorscheme + 1; | |
| 1131 | |
| 1132 if(newColorscheme > 3) | |
| 1133 newColorscheme = 0; | |
| 1134 | |
| 1135 settingsGetPointer()->tX_colorscheme = newColorscheme; | |
| 1136 GFX_use_colorscheme(newColorscheme); | |
| 1137 tHome_init_compass(); | |
| 1138 return UNSPECIFIC_RETURN; | |
| 1139 } | |
| 1140 | |
| 1141 | |
| 1142 uint8_t OnAction_DebugInfo(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1143 { | |
| 1144 settingsGetPointer()->showDebugInfo = !(settingsGetPointer()->showDebugInfo); | |
| 1145 return UPDATE_DIVESETTINGS; | |
| 1146 } | |
| 1147 | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
1148 #ifdef ENABLE_SETTING_PROFILES |
| 1027 | 1149 uint8_t OnAction_SetProfile(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1150 { | |
| 1151 SSettings *pSettings = settingsGetPointer(); | |
| 38 | 1152 |
| 1027 | 1153 uint8_t newProfile = pSettings->activeProfile + 1; |
| 1154 | |
| 1155 if(newProfile == NUMBER_OF_PROFILES) | |
| 1156 { | |
| 1157 newProfile = 0; | |
| 1158 } | |
| 1159 changeActiveProfil(newProfile); | |
| 1160 pSettings->activeProfile = newProfile; | |
| 1161 | |
| 1162 tMenuEdit_newButtonText(editId,(char*)pSettings->profileName[pSettings->activeProfile]); | |
| 1163 return UNSPECIFIC_RETURN; | |
| 1164 } | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
1165 |
| 1027 | 1166 uint8_t OnAction_Profile(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1167 { | |
| 1168 SSettings *pSettings = settingsGetPointer(); | |
| 1169 SSettings *pProfile; | |
| 1170 uint8_t digitContentNew; | |
| 1171 uint8_t profilName[9]; | |
| 1172 uint8_t updateProfilIndex = 0; | |
| 1173 uint8_t index = 0; | |
| 1174 | |
| 1175 uint8_t returnValue = UNSPECIFIC_RETURN; | |
| 1176 | |
| 1177 switch (editId) | |
| 1178 { | |
| 1179 default: | |
| 1180 case StMSYS_ProfileA: updateProfilIndex = 0; | |
| 1181 break; | |
| 1182 case StMSYS_ProfileB: updateProfilIndex = 1; | |
| 1183 break; | |
| 1184 case StMSYS_ProfileC: updateProfilIndex = 2; | |
| 1185 break; | |
| 1186 case StMSYS_ProfileD: updateProfilIndex = 3; | |
| 1187 break; | |
| 1188 } | |
| 1189 | |
| 1190 switch (action) | |
| 1191 { | |
| 1192 case ACTION_BUTTON_ENTER: returnValue = digitContent; | |
| 1193 break; | |
| 1194 case ACTION_BUTTON_ENTER_FINAL: | |
| 1195 { | |
| 1196 evaluateNewStringText(editId, profilName); | |
| 1197 tMenuEdit_newInputText(editId, profilName); | |
| 1198 if(pSettings->activeProfile == updateProfilIndex) | |
| 1199 { | |
| 1200 tMenuEdit_newButtonText(StMSYS_Profile, (char*)profilName); | |
| 1201 } | |
| 1202 strcpy((char*)pSettings->profileName[updateProfilIndex],(char*)profilName); | |
| 1203 for (index = 0; index < NUMBER_OF_PROFILES; index++) | |
| 1204 { | |
| 1205 pProfile = profileGetPointer(index); | |
| 1206 strcpy((char*)pProfile->profileName[updateProfilIndex],(char*)profilName); | |
| 1207 } | |
| 1208 } | |
| 1209 | |
| 1210 break; | |
| 1211 case ACTION_BUTTON_NEXT: | |
| 1212 if(digitContent == 'Z') | |
| 1213 { | |
| 1214 digitContentNew = '_'; | |
| 1215 } | |
| 1216 else if (digitContent == '_') | |
| 1217 { | |
| 1218 digitContentNew = 'A'; | |
| 1219 } | |
| 1220 else | |
| 1221 { | |
| 1222 digitContentNew = digitContent + 1; | |
| 1223 } | |
| 1224 returnValue = digitContentNew; | |
| 1225 break; | |
| 1226 case ACTION_BUTTON_BACK: | |
| 1227 if(digitContent == 'A') | |
| 1228 { | |
| 1229 digitContentNew = '_'; | |
| 1230 } | |
| 1231 else if (digitContent == '_') | |
| 1232 { | |
| 1233 digitContentNew = 'Z'; | |
| 1234 } | |
| 1235 else | |
| 1236 { | |
| 1237 digitContentNew = digitContent - 1; | |
| 1238 } | |
| 1239 returnValue = digitContentNew; | |
| 1240 break; | |
| 1241 } | |
| 1242 return returnValue; | |
| 1243 } | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
1244 #endif |
| 38 | 1245 |
| 1246 /* | |
| 1247 uint8_t OnAction_Design_t7ft (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1248 { | |
| 1249 SSettings *pSettings = settingsGetPointer(); | |
| 1250 if((pSettings->design == 7) && pSettings->nonMetricalSystem) | |
| 1251 return EXIT_TO_MENU; | |
| 1252 pSettings->design = 7; | |
| 1253 pSettings->nonMetricalSystem = 1; | |
| 1254 tMenuEdit_set_on_off(StMSYS3_t7, 0); | |
| 1255 tMenuEdit_set_on_off(StMSYS3_t7ft, 1); | |
| 1256 tMenuEdit_set_on_off(StMSYS3_t3, 0); | |
| 1257 return UPDATE_DIVESETTINGS; | |
| 1258 } | |
| 1259 | |
| 1260 | |
| 1261 uint8_t OnAction_Design_t7 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1262 { | |
| 1263 SSettings *pSettings = settingsGetPointer(); | |
| 1264 if((pSettings->design == 7) && (pSettings->nonMetricalSystem == 0)) | |
| 1265 return EXIT_TO_MENU; | |
| 1266 pSettings->design = 7; | |
| 1267 pSettings->nonMetricalSystem = 0; | |
| 1268 tMenuEdit_set_on_off(StMSYS3_t7, 1); | |
| 1269 tMenuEdit_set_on_off(StMSYS3_t7ft, 0); | |
| 1270 tMenuEdit_set_on_off(StMSYS3_t3, 0); | |
| 1271 return UPDATE_DIVESETTINGS; | |
| 1272 } | |
| 1273 | |
| 1274 | |
| 1275 uint8_t OnAction_Design_t3 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1276 { | |
| 1277 SSettings *pSettings = settingsGetPointer(); | |
| 1278 if(pSettings->design == 3) | |
| 1279 return EXIT_TO_MENU; | |
| 1280 pSettings->design = 3; | |
| 1281 pSettings->nonMetricalSystem = 0; | |
| 1282 tMenuEdit_set_on_off(StMSYS3_t7, 0); | |
| 1283 tMenuEdit_set_on_off(StMSYS3_t7ft,0); | |
| 1284 tMenuEdit_set_on_off(StMSYS3_t3, 1); | |
| 1285 return UPDATE_DIVESETTINGS; | |
| 1286 } | |
| 1287 */ | |
| 1288 | |
| 1289 | |
|
368
50ea68c7a153
Added menu item for motion detection. There are several possibility to use motion detection for user action input. To select of the a new menu entry has been added to the Sys2 =>Custom View Menu (Variables in german)
ideenmodellierer
parents:
259
diff
changeset
|
1290 |
| 38 | 1291 void openEdit_Information(void) |
| 1292 { | |
| 1293 char text[70]; | |
| 1294 | |
| 1295 infoPage = 0; | |
| 1296 | |
| 1297 text[0] = '\001'; | |
| 1298 text[1] = TXT_Information; | |
| 1299 text[2] = 0; | |
| 1300 write_topline(text); | |
| 1301 | |
| 1302 text[0] = TXT_2BYTE; | |
| 1303 text[1] = TXT2BYTE_ButtonNext; | |
| 1304 text[2] = 0; | |
| 1305 | |
| 520 | 1306 write_field_button(StMSYS4_Info, 30, 800, ME_Y_LINE6, &FontT48, text); |
| 38 | 1307 |
| 520 | 1308 setEvent(StMSYS4_Info, (uint32_t)OnAction_Information); |
| 854 | 1309 tMenuEdit_select(StMSYS4_Info); |
| 38 | 1310 } |
| 1311 | |
| 1312 | |
| 1313 uint8_t OnAction_Information (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1314 { | |
| 1315 resetEnterPressedToStateBeforeButtonAction(); | |
| 1316 | |
| 1317 infoPage++; | |
| 1318 if(infoPage > 3) | |
| 1319 return EXIT_TO_MENU; | |
| 1320 else | |
| 1321 return UNSPECIFIC_RETURN; | |
| 1322 } | |
| 1323 | |
| 1324 | |
| 1325 void refresh_InformationPage(void) | |
| 1326 { | |
| 1327 char text_header[5]; | |
| 1328 char text_button[5]; | |
| 1329 char text_content[256]; | |
| 1330 uint8_t date[3], year,month,day; | |
| 1331 | |
| 1332 RTC_DateTypeDef Sdate, Sdate2; | |
| 1333 float temperature1, temperature2, voltage, offsetTemperature; | |
| 1334 | |
| 1335 //RTC_TimeTypeDef Stime; | |
| 1336 | |
| 1337 /* | |
| 1338 SDeviceLine batteryChargeCycles; | |
| 1339 SDeviceLine batteryChargeCompleteCycles; | |
| 1340 SDeviceLine temperatureMinimum; | |
| 1341 SDeviceLine temperatureMaximum; | |
| 1342 SDeviceLine depthMaximum; | |
| 1343 SDeviceLine diveCycles; | |
| 1344 SDeviceLine voltageMinimum; | |
| 1345 */ | |
| 1346 | |
| 1347 switch(infoPage) | |
| 1348 { | |
| 1349 case 0: | |
| 1350 text_header[0] = '\001'; | |
| 1351 text_header[1] = TXT_Information; | |
| 1352 text_header[2] = 0; | |
| 1353 | |
| 1013 | 1354 if(isNewDisplay()) |
| 1355 { | |
| 1356 write_label_var( 20, 800, ME_Y_LINE1, &FontT42, "Dive Computer OSTC5"); | |
| 1357 } | |
| 1358 else | |
| 1359 { | |
| 1360 write_label_var( 20, 800, ME_Y_LINE1, &FontT42, "Dive Computer OSTC4"); | |
| 1361 } | |
| 38 | 1362 write_label_var( 20, 800, ME_Y_LINE2, &FontT42, "Design heinrichs/weikamp"); |
| 1363 | |
| 1364 Sdate.Year = firmwareDataGetPointer()->release_year; | |
| 1365 Sdate.Month = firmwareDataGetPointer()->release_month; | |
| 1366 Sdate.Date = firmwareDataGetPointer()->release_day; | |
| 1367 | |
| 1368 if(settingsGetPointer()->date_format == DDMMYY) | |
| 1369 { | |
| 1370 day = 0; | |
| 1371 month = 1; | |
| 1372 year = 2; | |
| 1373 } | |
| 1374 else | |
| 1375 if(settingsGetPointer()->date_format == MMDDYY) | |
| 1376 { | |
| 1377 day = 1; | |
| 1378 month = 0; | |
| 1379 year = 2; | |
| 1380 } | |
| 1381 else | |
| 1382 { | |
| 1383 day = 2; | |
| 1384 month = 1; | |
| 1385 year = 0; | |
| 1386 } | |
| 1387 date[day] = Sdate.Date; | |
| 1388 date[month] = Sdate.Month; | |
| 1389 date[year] = Sdate.Year; | |
| 1390 snprintf(text_content,40,"Firmware release date: %02d.%02d.%02d",date[0],date[1],date[2]); | |
| 1391 write_label_var( 20, 800, ME_Y_LINE3, &FontT42, text_content); | |
| 1392 write_label_var( 20, 800, ME_Y_LINE4, &FontT42, "for more information"); | |
| 64 | 1393 write_label_var( 20, 800, ME_Y_LINE5, &FontT42, "info@heinrichsweikamp.com"); |
| 38 | 1394 |
| 1395 text_button[0] = TXT_2BYTE; | |
| 1396 text_button[1] = TXT2BYTE_ButtonNext; | |
| 1397 text_button[2] = 0; | |
| 1398 break; | |
| 1399 | |
| 1400 case 1: | |
| 1401 text_header[0] = '\001'; | |
| 1402 text_header[1] = TXT_2BYTE; | |
| 1403 text_header[2] = TXT2BYTE_Usage_Battery; | |
| 1404 text_header[3] = 0; | |
| 1405 | |
| 1406 text_content[0] = TXT_2BYTE; | |
| 1407 text_content[1] = TXT2BYTE_ChargeCycles; | |
| 1408 text_content[2] = 0; | |
| 1409 write_label_var( 20, 800, ME_Y_LINE1, &FontT42, text_content); | |
|
646
0fc1b47d2482
Remove battery charge counter from information menu:
Ideenmodellierer
parents:
567
diff
changeset
|
1410 /* snprintf(text_content,80,"%ld (%ld)",stateDeviceGetPointer()->batteryChargeCycles.value_int32,stateDeviceGetPointer()->batteryChargeCompleteCycles.value_int32); |
|
0fc1b47d2482
Remove battery charge counter from information menu:
Ideenmodellierer
parents:
567
diff
changeset
|
1411 write_label_var( 20, 800, ME_Y_LINE2, &FontT42, text_content); */ |
| 38 | 1412 |
| 1413 translateDate(stateDeviceGetPointer()->batteryChargeCycles.date_rtc_dr, &Sdate); | |
| 1414 translateDate(stateDeviceGetPointer()->batteryChargeCompleteCycles.date_rtc_dr, &Sdate2); | |
| 1415 snprintf(text_content,80,"%u.%u.20%02u (%u.%u.20%02u)",Sdate.Date,Sdate.Month,Sdate.Year, Sdate2.Date,Sdate2.Month,Sdate2.Year); | |
|
646
0fc1b47d2482
Remove battery charge counter from information menu:
Ideenmodellierer
parents:
567
diff
changeset
|
1416 write_label_var( 20, 800, ME_Y_LINE2, &FontT42, text_content); |
| 38 | 1417 |
| 1418 text_content[0] = TXT_2BYTE; | |
| 1419 text_content[1] = TXT2BYTE_LowestVoltage; | |
| 1420 text_content[2] = 0; | |
| 1421 write_label_var( 20, 800, ME_Y_LINE4, &FontT42, text_content); | |
| 1422 | |
|
404
e729b8e7654d
Bugfix: display of time of minimum voltag:
ideenmodellierer
parents:
389
diff
changeset
|
1423 translateDate(stateDeviceGetPointer()->voltageMinimum.date_rtc_dr, &Sdate); |
| 38 | 1424 voltage = ((float)stateDeviceGetPointer()->voltageMinimum.value_int32) / 1000; |
| 1425 snprintf(text_content,80,"%0.3fV (%u.%u.20%02u)",voltage, Sdate.Date,Sdate.Month,Sdate.Year); | |
| 1426 write_label_var( 20, 800, ME_Y_LINE5, &FontT42, text_content); | |
| 1427 | |
| 1428 text_button[0] = TXT_2BYTE; | |
| 1429 text_button[1] = TXT2BYTE_ButtonNext; | |
| 1430 text_button[2] = 0; | |
| 1431 break; | |
| 1432 | |
| 1433 case 2: | |
| 1434 text_header[0] = '\001'; | |
| 1435 text_header[1] = TXT_2BYTE; | |
| 1436 text_header[2] = TXT2BYTE_Usage_Dives; | |
| 1437 text_header[3] = 0; | |
| 1438 | |
| 1439 text_content[0] = TXT_2BYTE; | |
| 1440 text_content[1] = TXT2BYTE_NumberOfDives; | |
| 1441 text_content[2] = 0; | |
| 1442 write_label_var( 20, 800, ME_Y_LINE1, &FontT42, text_content); | |
| 1443 | |
| 57 | 1444 snprintf(text_content,80,"%ld (%ld)",stateDeviceGetPointer()->diveCycles.value_int32,(stateDeviceGetPointer()->depthMaximum.value_int32 - 1000) / 100); |
| 38 | 1445 write_label_var( 20, 800, ME_Y_LINE2, &FontT42, text_content); |
| 1446 | |
| 1447 translateDate(stateDeviceGetPointer()->diveCycles.date_rtc_dr, &Sdate); | |
| 1448 translateDate(stateDeviceGetPointer()->depthMaximum.date_rtc_dr, &Sdate2); | |
| 1449 snprintf(text_content,80,"%u.%u.20%02u (%u.%u.20%02u)",Sdate.Date,Sdate.Month,Sdate.Year, Sdate2.Date,Sdate2.Month,Sdate2.Year); | |
| 1450 write_label_var( 20, 800, ME_Y_LINE3, &FontT42, text_content); | |
| 1451 | |
| 1452 text_content[0] = TXT_2BYTE; | |
| 1453 text_content[1] = TXT2BYTE_HoursOfOperation; | |
| 1454 text_content[2] = 0; | |
| 1455 write_label_var( 20, 800, ME_Y_LINE4, &FontT42, text_content); | |
| 1456 | |
| 57 | 1457 snprintf(text_content,80,"%ld",(stateDeviceGetPointer()->hoursOfOperation.value_int32)/3600); |
| 38 | 1458 write_label_var( 20, 800, ME_Y_LINE5, &FontT42, text_content); |
| 1459 | |
| 1460 text_button[0] = TXT_2BYTE; | |
| 1461 text_button[1] = TXT2BYTE_ButtonNext; | |
| 1462 text_button[2] = 0; | |
| 1463 break; | |
| 1464 | |
| 1465 case 3: | |
| 1466 text_header[0] = '\001'; | |
| 1467 text_header[1] = TXT_2BYTE; | |
| 1468 text_header[2] = TXT2BYTE_Usage_Environment; | |
| 1469 text_header[3] = 0; | |
| 1470 | |
| 1471 text_content[0] = TXT_2BYTE; | |
| 1472 text_content[1] = TXT2BYTE_AmbientTemperature; | |
| 1473 text_content[2] = 0; | |
| 1474 write_label_var( 20, 800, ME_Y_LINE1, &FontT42, text_content); | |
| 1475 | |
| 1476 temperature1 = ((float)stateDeviceGetPointer()->temperatureMinimum.value_int32) / 100; | |
| 1477 temperature2 = ((float)stateDeviceGetPointer()->temperatureMaximum.value_int32) / 100; | |
| 1478 snprintf(text_content,80,"%0.2f\140C / %0.2f\140C",temperature1,temperature2); | |
| 1479 write_label_var( 20, 800, ME_Y_LINE2, &FontT42, text_content); | |
| 1480 | |
| 1481 translateDate(stateDeviceGetPointer()->temperatureMinimum.date_rtc_dr, &Sdate); | |
| 1482 translateDate(stateDeviceGetPointer()->temperatureMaximum.date_rtc_dr, &Sdate2); | |
| 1483 snprintf(text_content,80,"(%u.%u.20%02u / %u.%u.20%02u)",Sdate.Date,Sdate.Month,Sdate.Year, Sdate2.Date,Sdate2.Month,Sdate2.Year); | |
| 1484 write_label_var( 20, 800, ME_Y_LINE3, &FontT42, text_content); | |
| 1485 | |
| 1486 text_content[0] = TXT_2BYTE; | |
| 1487 text_content[1] = TXT2BYTE_Korrekturwerte; | |
| 1488 text_content[2] = 0; | |
| 1489 write_label_var( 20, 800, ME_Y_LINE4, &FontT42, text_content); | |
| 1490 | |
| 1491 offsetTemperature = ((float)settingsGetPointer()->offsetTemperature_centigrad) / 10; | |
|
103
f5d2f02dc73f
Generalize TEXT of pressure unit
Dmitry Romanov <kitt@bk.ru>
parents:
102
diff
changeset
|
1492 snprintf(text_content,80,"%i %s / %0.2f\140C",settingsGetPointer()->offsetPressure_mbar, TEXT_PRESSURE_UNIT, offsetTemperature); |
| 38 | 1493 write_label_var( 20, 800, ME_Y_LINE5, &FontT42, text_content); |
| 1494 | |
| 1495 text_button[0] = TXT_2BYTE; | |
| 1496 text_button[1] = TXT2BYTE_Exit; | |
| 1497 text_button[2] = 0; | |
| 1498 break; | |
| 1499 } | |
| 1500 | |
| 1501 write_topline(text_header); | |
| 520 | 1502 tMenuEdit_newButtonText(StMSYS4_Info, text_button); |
| 38 | 1503 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonNext,0); |
| 1504 } | |
| 1505 | |
| 1506 | |
| 1507 void openEdit_Reset(void) | |
| 1508 { | |
| 1509 char text[32]; | |
| 1510 | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1511 resetMenuEdit(CLUT_MenuPageSystem); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1512 setBackMenu((uint32_t)openEdit_System, 0, 5); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1513 |
| 38 | 1514 text[0] = '\001'; |
| 1515 text[1] = TXT_2BYTE; | |
| 1516 text[2] = TXT2BYTE_ResetMenu; | |
| 1517 text[3] = 0; | |
| 1518 write_topline(text); | |
| 1519 | |
| 1520 text[0] = TXT_2BYTE; | |
| 1521 text[1] = TXT2BYTE_LogbookOffset; | |
| 1522 text[7] = 0; | |
| 1523 | |
| 1524 write_label_var( 30, 400, ME_Y_LINE1, &FontT48, text); | |
| 1525 | |
| 520 | 1526 write_field_udigit(StMSYS5_LogbookOffset,420, 800, ME_Y_LINE1, &FontT48, "####", settingsGetPointer()->logbookOffset,0,0,0); |
| 38 | 1527 |
| 1528 text[0] = TXT_2BYTE; | |
| 1529 text[2] = 0; | |
| 1530 | |
| 1054 | 1531 text[1] = TXT2BYTE_ResetMenu; |
| 1532 write_field_button(StMSYS5_Reset, 30, 800, ME_Y_LINE2, &FontT48, text); | |
| 38 | 1533 |
| 1534 text[1] = TXT2BYTE_Reboot; | |
| 1054 | 1535 write_field_button(StMSYS5_Reboot, 30, 800, ME_Y_LINE3, &FontT48, text); |
| 38 | 1536 |
| 1537 text[1] = TXT2BYTE_Maintenance; | |
| 1054 | 1538 write_field_button(StMSYS5_Maintenance, 30, 800, ME_Y_LINE4, &FontT48, text); |
| 38 | 1539 |
| 520 | 1540 setEvent(StMSYS5_LogbookOffset, (uint32_t)OnAction_LogbookOffset); |
| 1054 | 1541 setEvent(StMSYS5_Reset, (uint32_t)OnAction_Confirm); |
| 1542 setEvent(StMSYS5_Reboot, (uint32_t)OnAction_Confirm); | |
| 1543 setEvent(StMSYS5_Maintenance, (uint32_t)OnAction_Maintenance); | |
| 38 | 1544 |
| 1545 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 1546 } | |
| 1547 | |
| 1548 | |
| 1549 void openEdit_ResetConfirmation(uint32_t editIdOfCaller) | |
| 1550 { | |
| 1551 char text[32]; | |
| 1054 | 1552 SIconHeader* pIconHeader = (SIconHeader*) ICON_HEADER_ADDR; |
| 1553 | |
| 38 | 1554 |
| 1555 resetMenuEdit(CLUT_MenuPageSystem); | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1556 setBackMenu((uint32_t)openEdit_Reset, 0, 0); |
| 38 | 1557 |
| 1558 text[0] = '\001'; | |
| 1559 text[1] = TXT_2BYTE; | |
| 1560 text[2] = TXT2BYTE_AreYouSure; | |
| 1561 text[3] = 0; | |
| 1562 write_topline(text); | |
| 1563 | |
| 1564 text[0] = TXT_2BYTE; | |
| 1565 text[2] = 0; | |
| 1566 text[1] = TXT2BYTE_Abort; | |
| 1567 | |
| 520 | 1568 write_field_button(StMSYS5_Exit, 30, 800, ME_Y_LINE1, &FontT48, text); |
| 38 | 1569 |
| 1570 text[2] = 0; | |
| 1571 text[3] = 0; | |
| 1572 switch(editIdOfCaller) | |
| 1573 { | |
| 520 | 1574 case StMSYS5_Reboot: |
| 1575 case StMSYS5_RebootRTE: | |
| 1576 case StMSYS5_RebootMainCPU: | |
| 38 | 1577 text[1] = TXT2BYTE_RebootMainCPU; |
| 520 | 1578 write_field_button(StMSYS5_RebootMainCPU, 30, 800, ME_Y_LINE2, &FontT48, text); |
| 38 | 1579 text[1] = TXT2BYTE_RebootRTE; |
| 520 | 1580 write_field_button(StMSYS5_RebootRTE, 30, 800, ME_Y_LINE3, &FontT48, text); |
| 1581 setEvent(StMSYS5_Exit, (uint32_t)OnAction_Exit); | |
| 1582 setEvent(StMSYS5_RebootMainCPU, (uint32_t)OnAction_RebootMainCPU); | |
| 1583 setEvent(StMSYS5_RebootRTE, (uint32_t)OnAction_RebootRTE); | |
| 38 | 1584 text[0] = '\025'; |
| 1585 text[1] = TXT_2BYTE; | |
| 1586 text[2] = TXT2BYTE_DecoDataLost; | |
| 1587 text[3] = 0; | |
| 1588 write_label_var( 30, 800, ME_Y_LINE4, &FontT48, text); | |
| 1589 break; | |
| 1590 | |
| 1054 | 1591 case StMSYS5_Reset: |
| 520 | 1592 case StMSYS5_ResetDeco: |
| 1054 | 1593 case StMSYS5_ResetAll: |
| 1594 case StMSYS5_ResetLogbook: | |
| 1595 case StMSYS5_ResetIcon: | |
| 1596 text[1] = TXT2BYTE_ResetDeco; | |
| 1597 write_field_button(StMSYS5_ResetDeco, 30, 800, ME_Y_LINE2, &FontT48, text); | |
| 1598 text[1] = TXT2BYTE_ResetAll; | |
| 1599 write_field_button(StMSYS5_ResetAll, 30, 800, ME_Y_LINE3, &FontT48, text); | |
| 1600 text[1] = TXT2BYTE_ResetLogbook; | |
| 1601 write_field_button(StMSYS5_ResetLogbook, 30, 800, ME_Y_LINE4, &FontT48, text); | |
| 38 | 1602 |
| 1054 | 1603 if(pIconHeader->type == 0x20) |
| 1604 { | |
| 1605 text[1] = TXT2BYTE_ResetIcon; | |
| 1606 write_field_button(StMSYS5_ResetIcon, 30, 800, ME_Y_LINE5, &FontT48, text); | |
| 1607 } | |
| 520 | 1608 setEvent(StMSYS5_Exit, (uint32_t)OnAction_Exit); |
| 1054 | 1609 setEvent(StMSYS5_ResetDeco, (uint32_t)OnAction_ResetDeco); |
| 1610 setEvent(StMSYS5_ResetAll, (uint32_t)OnAction_ResetAll); | |
| 1611 setEvent(StMSYS5_ResetLogbook, (uint32_t)OnAction_ResetLogbook); | |
| 1612 if(pIconHeader->type == 0x20) | |
| 1613 { | |
| 1614 setEvent(StMSYS5_ResetIcon, (uint32_t)OnAction_ResetIcon); | |
| 1615 } | |
| 38 | 1616 break; |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1617 } |
| 38 | 1618 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1619 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1620 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1621 |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1622 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1623 static bool isValidBootloaderBlock(const customBlockInfo_t *info, uint32_t checksum) |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1624 { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1625 if (info == NULL) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1626 return false; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1627 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1628 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1629 return (info->Type & 0x0000FF00) == 0x0100 && checksum == info->fletcher; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1630 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1631 |
| 1017 | 1632 customBlockInfo_t blockInfo; |
| 1633 | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1634 static bool isBootloaderEqualToSource(const customBlockInfo_t *info) |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1635 { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1636 if (info == NULL) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1637 return false; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1638 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1639 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1640 const uint8_t *pSource = (const uint8_t *)0x08100000; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1641 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1642 /* We only compare the bootloader bytes actually present in the source |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1643 * image (info->length). Hardware data is device-specific and must be |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1644 * skipped in both flash and source when overlapping. */ |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1645 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1646 const uint32_t boot_start = FLASH_BOOT_START_ADDR; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1647 const uint32_t hw_off = HARDWAREDATA_ADDRESS - FLASH_BOOT_START_ADDR; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1648 const uint32_t total_boot_capacity = (FLASH_BOOT_END_ADDR - FLASH_BOOT_START_ADDR) + 1; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1649 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1650 /* Bound total to compare by the source-provided length and boot capacity */ |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1651 uint32_t total = info->length; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1652 if (total > total_boot_capacity) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1653 total = total_boot_capacity; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1654 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1655 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1656 /* Region 1: from start to just before hardware data (if covered) */ |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1657 uint32_t r1_len = (total > hw_off) ? hw_off : total; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1658 if (r1_len) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1659 if (memcmp((void *)boot_start, pSource, r1_len) != 0) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1660 return false; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1661 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1662 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1663 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1664 /* If total is within the hardware block, there's nothing more to compare */ |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1665 if (total <= hw_off) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1666 return true; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1667 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1668 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1669 /* Skip hardware block overlap in both flash and source */ |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1670 uint32_t after_hw_in_source = hw_off + sizeof(SHardwareData); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1671 uint32_t bytes_past_hw = 0; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1672 if (total > after_hw_in_source) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1673 bytes_past_hw = total - after_hw_in_source; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1674 } else { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1675 /* Source length ends within or at the end of the hardware block */ |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1676 return true; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1677 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1678 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1679 /* Region 2: bytes after hardware data */ |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1680 uint32_t r2_flash = HARDWAREDATA_ADDRESS + sizeof(SHardwareData); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1681 uint32_t r2_src = after_hw_in_source; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1682 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1683 if (memcmp((void *)r2_flash, pSource + r2_src, bytes_past_hw) != 0) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1684 return false; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1685 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1686 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1687 return true; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1688 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1689 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1690 void openEdit_Maintenance(void) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1691 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1692 char text[32]; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1693 unsigned char index = 0; |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1694 unsigned char nextLine = ME_Y_LINE3; |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1695 SSettings *pSettings = settingsGetPointer(); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1696 SSensorDataDiveO2* pDiveO2Data = NULL; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1697 |
| 1017 | 1698 customBlockInfo_t* pCustumBlockInfo = (customBlockInfo_t *) CUSTOM_BLOCK_INFO_ADDR; |
| 1699 | |
| 1700 blockInfo.Type = swapBytes(pCustumBlockInfo->Type); | |
| 1701 blockInfo.fletcher = swapBytes(pCustumBlockInfo->fletcher); | |
| 1702 blockInfo.length = swapBytes(pCustumBlockInfo->length); | |
| 1703 | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1704 uint32_t checksum = CalcFletcher32(0x08100000,0x0811FFEF); /* last nibble contains block info => exclude */ |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1705 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1706 resetMenuEdit(CLUT_MenuPageSystem); |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1707 setBackMenu((uint32_t)openEdit_Reset, 0, 5); |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1708 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1709 text[0] = '\001'; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1710 text[1] = TXT_2BYTE; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1711 text[2] = TXT2BYTE_Maintenance; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1712 text[3] = 0; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1713 write_topline(text); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1714 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1715 text[0] = TXT_2BYTE; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1716 text[1] = TXT2BYTE_SetFactoryDefaults; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1717 text[2] = 0; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1718 write_field_button(StMSYS5_SetFactoryBC, 30, 800, ME_Y_LINE1, &FontT48, text); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1719 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1720 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1721 if(stateRealGetPointer()->lifeData.battery_charge <= 0) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1722 { |
| 38 | 1723 text[0] = TXT_2BYTE; |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1724 text[1] = TXT2BYTE_SetBatteryCharge; |
| 38 | 1725 text[2] = 0; |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1726 snprintf(&text[2],10,": %u%%",pSettings->lastKnownBatteryPercentage); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1727 write_field_button(StMSYS5_SetBattCharge, 30, 800, ME_Y_LINE2, &FontT48, text); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1728 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1729 |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1730 /* No need to remember line; we'll update the field text directly */ |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1731 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1732 #ifdef ENABLE_ANALYSE_SAMPLES |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1733 text[0] = TXT_2BYTE; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1734 text[1] = TXT2BYTE_SetSampleIndex; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1735 text[2] = 0; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1736 write_field_button(StMSYS5_SetSampleIndx, 30, 800, nextLine, &FontT48, text); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1737 nextLine += ME_Y_LINE_STEP; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1738 #endif |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1739 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1740 if((pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_ANADIG) || (pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_DIGITAL)) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1741 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1742 for (index = 0; index < 3; index++) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1743 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1744 if(pSettings->ext_sensor_map[index] == SENSOR_DIGO2M) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1745 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1746 pDiveO2Data = (SSensorDataDiveO2*)stateRealGetPointer()->lifeData.extIf_sensor_data[index]; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1747 if(pDiveO2Data->pressure != 0) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1748 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1749 snprintf(text,32,"%c%c (%1.3lf => %1.3f)\016\016Bar",TXT_2BYTE,TXT2BYTE_AdjustAmbPressure,(float)(pDiveO2Data->pressure/1000000.0), |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1750 stateRealGetPointer()->lifeData.pressure_surface_bar); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1751 |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1752 write_field_button(StMSYS5_AdjustSurfPres, 30, 800, nextLine, &FontT48, text); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1753 nextLine += ME_Y_LINE_STEP; |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1754 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1755 break; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1756 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1757 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1758 } |
| 38 | 1759 |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1760 if (isValidBootloaderBlock(&blockInfo, checksum)) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1761 if (!isBootloaderEqualToSource(&blockInfo)) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1762 snprintf(text,32,"Flash Bootloader"); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1763 if (nextLine < ME_Y_LINE5) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1764 write_field_button(StMSYS5_FlashBoot, 30, 800, nextLine, &FontT48, text); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1765 nextLine += ME_Y_LINE_STEP; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1766 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1767 } |
| 1017 | 1768 } |
| 1769 | |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1770 setEvent(StMSYS5_SetFactoryBC, (uint32_t)OnAction_SetFactoryDefaults); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1771 if(stateRealGetPointer()->lifeData.battery_charge <= 0) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1772 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1773 setEvent(StMSYS5_SetBattCharge, (uint32_t)OnAction_SetBatteryCharge); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1774 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1775 if((pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_ANADIG) || (pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_DIGITAL)) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1776 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1777 if(pDiveO2Data != NULL) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1778 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1779 setEvent(StMSYS5_AdjustSurfPres, (uint32_t)OnAction_AdjustSurfacePressure); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1780 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1781 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1782 #ifdef ENABLE_ANALYSE_SAMPLES |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1783 setEvent(StMSYS5_SetSampleIndx, (uint32_t)OnAction_RecoverSampleIdx); |
|
424
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1784 #endif |
|
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1785 |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1786 if (isValidBootloaderBlock(&blockInfo, checksum) && !isBootloaderEqualToSource(&blockInfo)) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1787 setEvent(StMSYS5_FlashBoot, (uint32_t)OnAction_FlashBootloader); |
| 1017 | 1788 } |
| 1789 | |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1790 text[0] = TXT_2BYTE; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1791 text[1] = TXT2BYTE_WarnBatteryLow; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1792 text[2] = 0; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1793 snprintf(&text[2],10,": %01.2fV",stateRealGetPointer()->lifeData.battery_voltage); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1794 write_label_var( 30, 800, ME_Y_LINE5, &FontT42, text); |
| 38 | 1795 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1796 snprintf(&text[0],30,"Code: %X",getLicence()); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1797 write_label_var( 30, 800, ME_Y_LINE6, &FontT42, text); |
| 38 | 1798 |
| 1799 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 1800 } | |
| 1801 | |
| 1802 uint8_t OnAction_LogbookOffset(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1803 { | |
| 1804 uint8_t digitContentNew; | |
| 1805 uint32_t newOffset; | |
| 1806 | |
| 1807 if(action == ACTION_BUTTON_ENTER) | |
| 1808 return digitContent; | |
| 1809 | |
| 1810 if(action == ACTION_BUTTON_ENTER_FINAL) | |
| 1811 { | |
| 1812 evaluateNewString(editId, &newOffset, 0, 0, 0); | |
| 1813 if(newOffset > 9000) | |
| 1814 newOffset = 0; | |
| 1815 tMenuEdit_newInput(editId, newOffset, 0, 0, 0); | |
| 1816 settingsGetPointer()->logbookOffset = (uint16_t)newOffset; | |
| 1817 return UPDATE_DIVESETTINGS; | |
| 1818 } | |
| 1819 | |
| 1820 if(action == ACTION_BUTTON_NEXT) | |
| 1821 { | |
| 1822 digitContentNew = digitContent + 1; | |
| 1823 if(digitContentNew > '9') | |
| 1824 digitContentNew = '0'; | |
| 1825 return digitContentNew; | |
| 1826 } | |
| 1827 | |
| 1828 if(action == ACTION_BUTTON_BACK) | |
| 1829 { | |
| 1830 digitContentNew = digitContent - 1; | |
| 1831 if(digitContentNew < '0') | |
| 1832 digitContentNew = '9'; | |
| 1833 return digitContentNew; | |
| 1834 } | |
| 1835 return UNSPECIFIC_RETURN; | |
| 1836 } | |
| 1837 | |
| 1838 uint8_t OnAction_Nothing (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1839 { | |
| 1840 return UNSPECIFIC_RETURN; | |
| 1841 } | |
| 1842 | |
| 1843 uint8_t OnAction_Exit (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1844 { | |
| 1845 return EXIT_TO_MENU; | |
| 1846 } | |
| 1847 uint8_t OnAction_Confirm (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1848 { | |
| 1849 openEdit_ResetConfirmation(editId); | |
| 1850 return UNSPECIFIC_RETURN; | |
| 1851 } | |
| 1852 | |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1853 uint8_t OnAction_Maintenance (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1854 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1855 openEdit_Maintenance(); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1856 return UNSPECIFIC_RETURN; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1857 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1858 |
| 38 | 1859 uint8_t OnAction_RebootRTE (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1860 { | |
| 1861 MX_SmallCPU_Reset_To_Standard(); | |
| 1862 return EXIT_TO_MENU; | |
| 1863 } | |
| 1864 | |
| 1865 uint8_t OnAction_ResetDeco (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1866 { | |
| 1867 clearDeco(); | |
| 1868 return EXIT_TO_MENU; | |
| 1869 } | |
| 1870 | |
| 1871 uint8_t OnAction_ResetAll (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1872 { | |
| 1027 | 1873 set_settings_to_Standard(EF_SETTINGS); |
| 1874 check_and_correct_settings(EF_SETTINGS); | |
| 38 | 1875 |
| 1876 return UPDATE_AND_EXIT_TO_HOME; | |
| 1877 } | |
| 1878 | |
| 1879 uint8_t OnAction_ResetLogbook (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1880 { | |
| 1881 write_label_var( 430, 740, 350, &FontT42, "Wait"); | |
| 1882 ext_flash_erase_logbook(); | |
| 1883 | |
| 1884 SSettings * pSettings = settingsGetPointer(); | |
| 1885 pSettings->lastDiveLogId = 255; | |
| 1886 pSettings->logFlashNextSampleStartAddress = 0; | |
| 1887 | |
| 1888 return EXIT_TO_MENU; | |
| 1889 } | |
| 1890 | |
| 1054 | 1891 uint8_t OnAction_ResetIcon (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1892 { | |
| 1893 SIconHeader* pIconHeader = (SIconHeader*) ICON_HEADER_ADDR; | |
| 1894 uint32_t Address = (uint32_t)&(pIconHeader->type); | |
| 1895 uint64_t clear = 0x0; | |
| 1896 | |
| 1897 HAL_FLASH_Unlock(); | |
| 1898 HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, Address, clear); | |
| 1899 HAL_FLASH_Lock(); | |
| 1900 GFX_build_logo_frame(); | |
| 1901 return EXIT_TO_MENU; | |
| 1902 } | |
| 38 | 1903 uint8_t OnAction_RebootMainCPU (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1904 { | |
| 1905 settingsGetPointer()->showDebugInfo = 0; | |
| 1906 extern uint8_t bootToBootloader; | |
| 1907 bootToBootloader = 1; | |
| 1908 return UNSPECIFIC_RETURN; | |
| 1909 } | |
| 1910 | |
| 1911 | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1912 |
| 38 | 1913 uint8_t OnAction_SetFactoryDefaults(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1914 { | |
| 1915 settingsWriteFactoryDefaults(settingsGetPointer()->ButtonResponsiveness[3], settingsGetPointer()->buttonBalance); | |
| 1916 return EXIT_TO_MENU; | |
| 1917 } | |
| 1918 | |
|
468
aa1d71875e25
Moved and deactivated analyse sample buffer switch:
ideenmodellierer
parents:
446
diff
changeset
|
1919 #ifdef ENABLE_ANALYSE_SAMPLES |
|
424
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1920 uint8_t OnAction_RecoverSampleIdx(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
|
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1921 { |
|
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1922 char text[32]; |
|
558
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1923 uint8_t openSec; |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1924 uint8_t retval = UNSPECIFIC_RETURN; |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1925 openSec = ext_flash_AnalyseSampleBuffer(); |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1926 snprintf(&text[0],30,"OpenSec: %d",openSec); |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1927 write_label_var( 30, 800, ME_Y_LINE6, &FontT42, text); |
|
424
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1928 |
|
558
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1929 if(openSec == 2) |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1930 { |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1931 retval = UPDATE_DIVESETTINGS; |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1932 } |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1933 return retval; |
|
424
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1934 } |
|
468
aa1d71875e25
Moved and deactivated analyse sample buffer switch:
ideenmodellierer
parents:
446
diff
changeset
|
1935 #endif |
|
424
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1936 |
| 38 | 1937 uint8_t OnAction_SetBatteryCharge(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1938 { | |
| 1939 setBatteryPercentage(settingsGetPointer()->lastKnownBatteryPercentage); | |
| 1940 // setBatteryPercentage(100); | |
| 1941 return EXIT_TO_MENU; | |
| 1942 } | |
| 1943 | |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1944 uint8_t OnAction_AdjustSurfacePressure (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1945 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1946 SSensorDataDiveO2* pDiveO2Data; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1947 const SDiveState* pDiveState = stateRealGetPointer(); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1948 SSettings* pSettings = settingsGetPointer(); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1949 uint8_t index = 0; |
|
959
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1950 float orgpressure_surface_mbar; |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1951 float DiveO2_mbar; |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1952 int8_t newOffset_mbar = 0; |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1953 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1954 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1955 char text[32]; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1956 |
|
959
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1957 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1958 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1959 for (index = 0; index < 3; index++) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1960 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1961 if(settingsGetPointer()->ext_sensor_map[index] == SENSOR_DIGO2M) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1962 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1963 pDiveO2Data = (SSensorDataDiveO2*)stateRealGetPointer()->lifeData.extIf_sensor_data[index]; |
|
959
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1964 DiveO2_mbar = (pDiveO2Data->pressure/1000.0); |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1965 |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1966 orgpressure_surface_mbar = (pDiveState->lifeData.pressure_surface_bar * 1000) - (settingsGetPointer()->offsetPressure_mbar); |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1967 newOffset_mbar = DiveO2_mbar - orgpressure_surface_mbar; |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1968 |
|
959
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1969 if(fabs(orgpressure_surface_mbar + ((float)newOffset_mbar) - DiveO2_mbar) > 0.5) /* there might be a rounding difference => compensate */ |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1970 { |
|
959
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1971 if((orgpressure_surface_mbar + ((float)newOffset_mbar)) - (pDiveO2Data->pressure/1000.0) > 0.0) |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1972 { |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1973 newOffset_mbar -=1; |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1974 } |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1975 else |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1976 { |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1977 newOffset_mbar +=1; |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1978 } |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1979 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1980 |
|
959
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1981 pSettings->offsetPressure_mbar = newOffset_mbar; |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1982 snprintf(text,32,"%c%c (%1.3lf => %1.3f)\016\016Bar",TXT_2BYTE,TXT2BYTE_AdjustAmbPressure,(float)(pDiveO2Data->pressure/1000000.0), (orgpressure_surface_mbar + pSettings->offsetPressure_mbar) / 1000.0); |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1983 tMenuEdit_newButtonText(StMSYS5_AdjustSurfPres,text); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1984 break; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1985 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1986 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1987 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1988 return UNSPECIFIC_RETURN; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1989 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1990 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1991 |
| 38 | 1992 #ifdef SCREENTEST |
| 1993 uint8_t OnAction_ScreenTest (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1994 { | |
| 1995 static uint8_t FrameCount = 1; // 0 is invisible frame | |
| 1996 char text[5]; | |
| 1997 GFX_DrawCfgScreen tTestScreen; | |
| 1998 tTestScreen.FBStartAdress = 0; | |
| 1999 tTestScreen.ImageHeight = 480; | |
| 2000 tTestScreen.ImageWidth = 800; | |
| 2001 tTestScreen.LayerIndex = 1; | |
| 2002 | |
| 520 | 2003 set_globalState(StMSYS5_ScreenTest); |
| 38 | 2004 tTestScreen.FBStartAdress = getFrameByNumber(FrameCount); |
| 2005 if(tTestScreen.FBStartAdress == 0) | |
| 2006 { | |
| 2007 extern uint8_t bootToBootloader; | |
| 2008 bootToBootloader = 1; | |
| 2009 } | |
| 2010 GFX_fill_buffer(tTestScreen.FBStartAdress, 0xFF, FrameCount); | |
| 2011 snprintf(text,5,"%u",FrameCount); | |
| 2012 Gfx_write_label_var(&tTestScreen, 10,100,10,&FontT48,CLUT_Font027,text); | |
| 2013 GFX_SetFramesTopBottom(tTestScreen.FBStartAdress, NULL,480); | |
| 2014 FrameCount++; | |
| 2015 } | |
| 2016 #endif | |
| 1017 | 2017 |
| 2018 uint8_t OnAction_FlashBootloader (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 2019 { | |
| 2020 SHardwareData HwInfo; | |
| 2021 customBlockInfo_t* pCustumBlockInfo = (customBlockInfo_t *) CUSTOM_BLOCK_INFO_ADDR; | |
| 2022 customBlockInfo_t blockInfo; | |
| 2023 uint32_t checksum; | |
| 2024 uint8_t* pSource = (uint8_t *) 0x08100000; | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2025 uint8_t eraseResult; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2026 uint8_t progResult; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2027 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2028 // Update the button's text directly to show progress |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2029 tMenuEdit_newButtonText(editId, "Flashing, please wait"); |
| 1017 | 2030 |
| 2031 checksum = CalcFletcher32(0x08100000,0x0811FFEF); /* last nibble contains block info => exclude */ | |
| 2032 | |
| 2033 blockInfo.Type = swapBytes(pCustumBlockInfo->Type); | |
| 2034 blockInfo.fletcher = swapBytes(pCustumBlockInfo->fletcher); | |
| 2035 blockInfo.length = swapBytes(pCustumBlockInfo->length); | |
| 2036 | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2037 if (isValidBootloaderBlock(&blockInfo, checksum)) { |
| 1017 | 2038 memcpy (&HwInfo, hardwareDataGetPointer(), sizeof(SHardwareData)); /* create backup copy because data will be overwritten during flash erase */ |
| 2039 | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2040 eraseResult = bootloader_eraseFlashMemory(); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2041 if (eraseResult != 0) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2042 // Lock flash before returning on error |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2043 HAL_FLASH_Lock(); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2044 // Show error on the button itself |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2045 tMenuEdit_newButtonText(editId, "Erase failed!"); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2046 return UNSPECIFIC_RETURN; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2047 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2048 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2049 progResult = bootloader_programFlashMemory(pSource, blockInfo.length, &HwInfo); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2050 if (progResult != 0) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2051 // Lock flash before returning on error (in case program failed before locking) |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2052 HAL_FLASH_Lock(); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2053 // Show error on the button itself |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2054 tMenuEdit_newButtonText(editId, "Program failed!"); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2055 return UNSPECIFIC_RETURN; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2056 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2057 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2058 // Show success on the button itself |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2059 tMenuEdit_newButtonText(editId, "Flash complete"); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2060 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2061 // Give user time to see the message, then return to the previous menu |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2062 // which will cause a refresh and hide the "Flash Bootloader" button |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2063 HAL_Delay(1500); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2064 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2065 return EXIT_TO_MENU; |
| 1017 | 2066 } |
| 2067 return UNSPECIFIC_RETURN; | |
| 2068 } | |
| 2069 | |
| 38 | 2070 /* |
| 2071 uint8_t OnAction_TestCLog (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 2072 { | |
| 2073 write_label_var( 430, 740, 350, &FontT42, "Wait"); | |
| 2074 | |
| 2075 test_log_only(20, 5); | |
| 2076 test_log_only(30, 10); | |
| 2077 ext_flash_write_settings(); | |
| 2078 return EXIT_TO_MENU; | |
| 2079 } | |
| 2080 */ | |
| 2081 |
