Mercurial > public > ostc4
annotate Discovery/Src/tMenuEditSystem.c @ 1078:082825daccb5 Icon_Integration tip
Added control views for HUD:
The HUD implementation may now be activated by the compile switch ENABLE_HUD_SUPPORT. The HUD will become visible onces detected in the CvOpt overview menu. The first implementation is for testing only => The LEDs may be operated by a number field. Positiv values activate the red, negativ the green LEDs. Depending on the value blink sequences will be scheduled.
At the moment no dive specific data is mapped to the LED operation (like e.g. warnings).
| author | Ideenmodellierer |
|---|---|
| date | Mon, 02 Mar 2026 17:30:38 +0100 |
| parents | ad61a2c9095a |
| 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 } | |
| 1074 | 1000 if(profileActiveStart != settingsGetPointer()->activeProfile) /* changes need to be done because of profile switch ?*/ |
| 1027 | 1001 { |
| 1002 createDiveSettings(); | |
| 1074 | 1003 reset_ButtonLock(); |
| 1004 DataEX_setExtInterface_Cmd(EXT_INTERFACE_COPY_SENSORMAP, 0); | |
| 1027 | 1005 } |
| 1006 exitMenuEdit(1); | |
| 1007 } | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
1008 #endif |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
1009 #ifdef ENABLE_SETTING_PROFILES |
| 1027 | 1010 void openEdit_Profile(void) |
| 1011 { | |
| 1012 char text[50]; | |
| 1013 uint8_t index = 0; | |
| 1014 SSettings *pSettings = settingsGetPointer(); | |
| 1015 SSettings* pProfile; | |
| 1016 | |
| 1017 setBackMenu((uint32_t)exitMenuProfil,0,0); | |
| 1018 | |
| 1019 profileActiveStart = pSettings->activeProfile; | |
| 1020 | |
| 1021 /* read profiles from flash */ | |
| 1022 for(index = EF_PROFILE0; index <= EF_PROFILE3; index++) | |
| 1023 { | |
| 1024 set_settings_to_Standard(index); /* this is needed because details like header version are used by the read block function */ | |
| 1025 ext_flash_read_settings(index); /* will overwrite standard settings if reading is successfull */ | |
| 1026 pProfile = profileGetPointer(index - EF_PROFILE0); | |
| 1027 profileStartCrc[index - EF_PROFILE0] = CalcFletcher32((uint32_t)pProfile, (uint32_t)pProfile + sizeof(SSettings)); | |
| 1028 set_new_settings_missing_in_ext_flash(index); | |
| 1029 check_and_correct_settings(index); | |
| 1030 } | |
| 1031 | |
| 1032 sprintf(text,"\001%c%c",TXT_2BYTE,TXT2BYTE_Profile); | |
| 1033 write_topline(text); | |
| 1034 | |
| 1035 sprintf(text,"%c %c%c:",TXT_Active,TXT_2BYTE,TXT2BYTE_Profile); | |
| 1036 write_label_var( 30, 300, ME_Y_LINE1, &FontT48, text); | |
| 1037 sprintf(text,"%s",pSettings->profileName[pSettings->activeProfile]); | |
| 1038 write_field_button(StMSYS_Profile, 400, 700, ME_Y_LINE1, &FontT48, text); | |
| 1039 write_field_text(StMSYS_ProfileA, 400, 700, ME_Y_LINE3, &FontT48, "########", pSettings->profileName[0]); | |
| 1040 write_field_text(StMSYS_ProfileB, 400, 700, ME_Y_LINE4, &FontT48, "########", pSettings->profileName[1]); | |
| 1041 write_field_text(StMSYS_ProfileC, 400, 700, ME_Y_LINE5, &FontT48, "########", pSettings->profileName[2]); | |
| 1042 write_field_text(StMSYS_ProfileD, 400, 700, ME_Y_LINE6, &FontT48, "########", pSettings->profileName[3]); | |
| 1043 | |
| 1044 setEvent(StMSYS_Profile, (uint32_t)OnAction_SetProfile); | |
| 1045 setEvent(StMSYS_ProfileA, (uint32_t)OnAction_Profile); | |
| 1046 setEvent(StMSYS_ProfileB, (uint32_t)OnAction_Profile); | |
| 1047 setEvent(StMSYS_ProfileC, (uint32_t)OnAction_Profile); | |
| 1048 setEvent(StMSYS_ProfileD, (uint32_t)OnAction_Profile); | |
| 1049 | |
| 1050 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 1051 } | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
1052 #endif |
| 1027 | 1053 |
| 38 | 1054 |
| 1055 void refresh_Design(void) | |
| 1056 { | |
| 1027 | 1057 char text[32]; |
| 1058 SSettings *pSettings = settingsGetPointer(); | |
| 38 | 1059 |
| 1060 // header | |
| 1061 text[0] = '\001'; | |
| 1062 text[1] = TXT_2BYTE; | |
| 1063 text[2] = TXT2BYTE_Layout; | |
| 1064 text[3] = 0; | |
| 1065 write_topline(text); | |
| 1066 | |
| 1067 // units | |
| 1068 text[0] = TXT_2BYTE; | |
| 1069 text[1] = TXT2BYTE_Units; | |
| 1070 text[2] = 0; | |
| 1071 write_label_var( 30, 200, ME_Y_LINE1, &FontT48, text); | |
| 1072 | |
| 1027 | 1073 if(pSettings->nonMetricalSystem) |
| 38 | 1074 { |
| 1075 text[1] = TXT2BYTE_Units_feet; | |
| 1076 } | |
| 1077 else | |
| 1078 { | |
| 1079 text[1] = TXT2BYTE_Units_metric; | |
| 1080 } | |
| 1081 write_label_var( 400, 700, ME_Y_LINE1, &FontT48, text); | |
| 1082 | |
| 1083 // colorscheme | |
| 1084 text[0] = TXT_2BYTE; | |
| 1085 text[1] = TXT2BYTE_Farbschema; | |
| 1086 text[2] = 0; | |
|
118
ee7f2cd9b9b4
Enlarge text limits to get string displayed completly
Ideenmodellierer
parents:
103
diff
changeset
|
1087 write_label_var( 30, 300, ME_Y_LINE2, &FontT48, text); |
| 38 | 1088 |
| 1027 | 1089 text[0] = '0' + pSettings->tX_colorscheme; |
| 38 | 1090 text[1] = 0; |
| 1091 write_label_var( 400, 700, ME_Y_LINE2, &FontT48, text); | |
| 1092 | |
|
343
c9d217b110cc
Added compile switch to enable debug view option in system menu
ideenmodellierer
parents:
259
diff
changeset
|
1093 #ifdef HAVE_DEBUG_VIEW |
| 38 | 1094 // specials |
| 1095 text[0] = TXT_2BYTE; | |
| 1096 text[1] = TXT2BYTE_ShowDebug; | |
| 1097 text[2] = 0; | |
| 1098 write_label_var( 30, 700, ME_Y_LINE3, &FontT48, text); | |
| 1099 | |
| 1100 if(settingsGetPointer()->showDebugInfo) | |
| 1101 text[0] = '\005'; | |
| 1102 else | |
| 1103 text[0] = '\006'; | |
| 1104 text[1] = 0; | |
| 1105 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
|
1106 #endif |
| 38 | 1107 |
| 1108 // design | |
| 1109 text[0] = TXT_Depth; | |
| 1110 text[1] = 0; | |
| 1111 write_content( 30, 700, ME_Y_LINE4, &FontT24, text, CLUT_Font031); | |
| 1112 write_content( 30, 700, ME_Y_LINE4 + 30 + 70, &FontT48, "___________", CLUT_DIVE_FieldSeperatorLines); | |
| 1113 write_content(280, 700, ME_Y_LINE4 + 30 + 70 - 3, &FontT48, "|", CLUT_DIVE_pluginbox); | |
| 1114 write_content(290, 700, ME_Y_LINE4 + 30 + 70 - 37, &FontT48, "_______________", CLUT_DIVE_pluginbox); | |
| 884 | 1115 write_content( 30, 700, ME_Y_LINE4 + 42, &FontT144, "24.7", CLUT_Font027); |
| 38 | 1116 |
| 1117 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 1118 } | |
| 1119 | |
| 1120 | |
| 1121 uint8_t OnAction_Units(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1122 { | |
| 1123 settingsGetPointer()->nonMetricalSystem = !(settingsGetPointer()->nonMetricalSystem); | |
| 1124 return EXIT_TO_MENU_WITH_LOGO;//UPDATE_DIVESETTINGS; | |
| 1125 } | |
| 1126 | |
| 1127 | |
| 1128 uint8_t OnAction_Colorscheme(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1129 { | |
| 1130 uint8_t newColorscheme; | |
| 1131 | |
| 1132 newColorscheme = settingsGetPointer()->tX_colorscheme + 1; | |
| 1133 | |
| 1134 if(newColorscheme > 3) | |
| 1135 newColorscheme = 0; | |
| 1136 | |
| 1137 settingsGetPointer()->tX_colorscheme = newColorscheme; | |
| 1138 GFX_use_colorscheme(newColorscheme); | |
| 1139 tHome_init_compass(); | |
| 1140 return UNSPECIFIC_RETURN; | |
| 1141 } | |
| 1142 | |
| 1143 | |
| 1144 uint8_t OnAction_DebugInfo(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1145 { | |
| 1146 settingsGetPointer()->showDebugInfo = !(settingsGetPointer()->showDebugInfo); | |
| 1147 return UPDATE_DIVESETTINGS; | |
| 1148 } | |
| 1149 | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
1150 #ifdef ENABLE_SETTING_PROFILES |
| 1027 | 1151 uint8_t OnAction_SetProfile(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1152 { | |
| 1153 SSettings *pSettings = settingsGetPointer(); | |
| 38 | 1154 |
| 1027 | 1155 uint8_t newProfile = pSettings->activeProfile + 1; |
| 1156 | |
| 1157 if(newProfile == NUMBER_OF_PROFILES) | |
| 1158 { | |
| 1159 newProfile = 0; | |
| 1160 } | |
| 1161 changeActiveProfil(newProfile); | |
| 1162 pSettings->activeProfile = newProfile; | |
| 1163 | |
| 1164 tMenuEdit_newButtonText(editId,(char*)pSettings->profileName[pSettings->activeProfile]); | |
| 1165 return UNSPECIFIC_RETURN; | |
| 1166 } | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
1167 |
| 1027 | 1168 uint8_t OnAction_Profile(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1169 { | |
| 1170 SSettings *pSettings = settingsGetPointer(); | |
| 1171 SSettings *pProfile; | |
| 1172 uint8_t digitContentNew; | |
| 1173 uint8_t profilName[9]; | |
| 1174 uint8_t updateProfilIndex = 0; | |
| 1175 uint8_t index = 0; | |
| 1176 | |
| 1177 uint8_t returnValue = UNSPECIFIC_RETURN; | |
| 1178 | |
| 1179 switch (editId) | |
| 1180 { | |
| 1181 default: | |
| 1182 case StMSYS_ProfileA: updateProfilIndex = 0; | |
| 1183 break; | |
| 1184 case StMSYS_ProfileB: updateProfilIndex = 1; | |
| 1185 break; | |
| 1186 case StMSYS_ProfileC: updateProfilIndex = 2; | |
| 1187 break; | |
| 1188 case StMSYS_ProfileD: updateProfilIndex = 3; | |
| 1189 break; | |
| 1190 } | |
| 1191 | |
| 1192 switch (action) | |
| 1193 { | |
| 1194 case ACTION_BUTTON_ENTER: returnValue = digitContent; | |
| 1195 break; | |
| 1196 case ACTION_BUTTON_ENTER_FINAL: | |
| 1197 { | |
| 1198 evaluateNewStringText(editId, profilName); | |
| 1199 tMenuEdit_newInputText(editId, profilName); | |
| 1200 if(pSettings->activeProfile == updateProfilIndex) | |
| 1201 { | |
| 1202 tMenuEdit_newButtonText(StMSYS_Profile, (char*)profilName); | |
| 1203 } | |
| 1204 strcpy((char*)pSettings->profileName[updateProfilIndex],(char*)profilName); | |
| 1205 for (index = 0; index < NUMBER_OF_PROFILES; index++) | |
| 1206 { | |
| 1207 pProfile = profileGetPointer(index); | |
| 1208 strcpy((char*)pProfile->profileName[updateProfilIndex],(char*)profilName); | |
| 1209 } | |
| 1210 } | |
| 1211 | |
| 1212 break; | |
| 1213 case ACTION_BUTTON_NEXT: | |
| 1214 if(digitContent == 'Z') | |
| 1215 { | |
| 1216 digitContentNew = '_'; | |
| 1217 } | |
| 1218 else if (digitContent == '_') | |
| 1219 { | |
| 1220 digitContentNew = 'A'; | |
| 1221 } | |
| 1222 else | |
| 1223 { | |
| 1224 digitContentNew = digitContent + 1; | |
| 1225 } | |
| 1226 returnValue = digitContentNew; | |
| 1227 break; | |
| 1228 case ACTION_BUTTON_BACK: | |
| 1229 if(digitContent == 'A') | |
| 1230 { | |
| 1231 digitContentNew = '_'; | |
| 1232 } | |
| 1233 else if (digitContent == '_') | |
| 1234 { | |
| 1235 digitContentNew = 'Z'; | |
| 1236 } | |
| 1237 else | |
| 1238 { | |
| 1239 digitContentNew = digitContent - 1; | |
| 1240 } | |
| 1241 returnValue = digitContentNew; | |
| 1242 break; | |
| 1243 } | |
| 1244 return returnValue; | |
| 1245 } | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
1246 #endif |
| 38 | 1247 |
| 1248 /* | |
| 1249 uint8_t OnAction_Design_t7ft (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1250 { | |
| 1251 SSettings *pSettings = settingsGetPointer(); | |
| 1252 if((pSettings->design == 7) && pSettings->nonMetricalSystem) | |
| 1253 return EXIT_TO_MENU; | |
| 1254 pSettings->design = 7; | |
| 1255 pSettings->nonMetricalSystem = 1; | |
| 1256 tMenuEdit_set_on_off(StMSYS3_t7, 0); | |
| 1257 tMenuEdit_set_on_off(StMSYS3_t7ft, 1); | |
| 1258 tMenuEdit_set_on_off(StMSYS3_t3, 0); | |
| 1259 return UPDATE_DIVESETTINGS; | |
| 1260 } | |
| 1261 | |
| 1262 | |
| 1263 uint8_t OnAction_Design_t7 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1264 { | |
| 1265 SSettings *pSettings = settingsGetPointer(); | |
| 1266 if((pSettings->design == 7) && (pSettings->nonMetricalSystem == 0)) | |
| 1267 return EXIT_TO_MENU; | |
| 1268 pSettings->design = 7; | |
| 1269 pSettings->nonMetricalSystem = 0; | |
| 1270 tMenuEdit_set_on_off(StMSYS3_t7, 1); | |
| 1271 tMenuEdit_set_on_off(StMSYS3_t7ft, 0); | |
| 1272 tMenuEdit_set_on_off(StMSYS3_t3, 0); | |
| 1273 return UPDATE_DIVESETTINGS; | |
| 1274 } | |
| 1275 | |
| 1276 | |
| 1277 uint8_t OnAction_Design_t3 (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1278 { | |
| 1279 SSettings *pSettings = settingsGetPointer(); | |
| 1280 if(pSettings->design == 3) | |
| 1281 return EXIT_TO_MENU; | |
| 1282 pSettings->design = 3; | |
| 1283 pSettings->nonMetricalSystem = 0; | |
| 1284 tMenuEdit_set_on_off(StMSYS3_t7, 0); | |
| 1285 tMenuEdit_set_on_off(StMSYS3_t7ft,0); | |
| 1286 tMenuEdit_set_on_off(StMSYS3_t3, 1); | |
| 1287 return UPDATE_DIVESETTINGS; | |
| 1288 } | |
| 1289 */ | |
| 1290 | |
| 1291 | |
|
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
|
1292 |
| 38 | 1293 void openEdit_Information(void) |
| 1294 { | |
| 1295 char text[70]; | |
| 1296 | |
| 1297 infoPage = 0; | |
| 1298 | |
| 1299 text[0] = '\001'; | |
| 1300 text[1] = TXT_Information; | |
| 1301 text[2] = 0; | |
| 1302 write_topline(text); | |
| 1303 | |
| 1304 text[0] = TXT_2BYTE; | |
| 1305 text[1] = TXT2BYTE_ButtonNext; | |
| 1306 text[2] = 0; | |
| 1307 | |
| 520 | 1308 write_field_button(StMSYS4_Info, 30, 800, ME_Y_LINE6, &FontT48, text); |
| 38 | 1309 |
| 520 | 1310 setEvent(StMSYS4_Info, (uint32_t)OnAction_Information); |
| 854 | 1311 tMenuEdit_select(StMSYS4_Info); |
| 38 | 1312 } |
| 1313 | |
| 1314 | |
| 1315 uint8_t OnAction_Information (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1316 { | |
| 1317 resetEnterPressedToStateBeforeButtonAction(); | |
| 1318 | |
| 1319 infoPage++; | |
| 1320 if(infoPage > 3) | |
| 1321 return EXIT_TO_MENU; | |
| 1322 else | |
| 1323 return UNSPECIFIC_RETURN; | |
| 1324 } | |
| 1325 | |
| 1326 | |
| 1327 void refresh_InformationPage(void) | |
| 1328 { | |
| 1329 char text_header[5]; | |
| 1330 char text_button[5]; | |
| 1331 char text_content[256]; | |
| 1332 uint8_t date[3], year,month,day; | |
| 1333 | |
| 1334 RTC_DateTypeDef Sdate, Sdate2; | |
| 1335 float temperature1, temperature2, voltage, offsetTemperature; | |
| 1336 | |
| 1337 //RTC_TimeTypeDef Stime; | |
| 1338 | |
| 1339 /* | |
| 1340 SDeviceLine batteryChargeCycles; | |
| 1341 SDeviceLine batteryChargeCompleteCycles; | |
| 1342 SDeviceLine temperatureMinimum; | |
| 1343 SDeviceLine temperatureMaximum; | |
| 1344 SDeviceLine depthMaximum; | |
| 1345 SDeviceLine diveCycles; | |
| 1346 SDeviceLine voltageMinimum; | |
| 1347 */ | |
| 1348 | |
| 1349 switch(infoPage) | |
| 1350 { | |
| 1351 case 0: | |
| 1352 text_header[0] = '\001'; | |
| 1353 text_header[1] = TXT_Information; | |
| 1354 text_header[2] = 0; | |
| 1355 | |
| 1013 | 1356 if(isNewDisplay()) |
| 1357 { | |
| 1358 write_label_var( 20, 800, ME_Y_LINE1, &FontT42, "Dive Computer OSTC5"); | |
| 1359 } | |
| 1360 else | |
| 1361 { | |
| 1362 write_label_var( 20, 800, ME_Y_LINE1, &FontT42, "Dive Computer OSTC4"); | |
| 1363 } | |
| 38 | 1364 write_label_var( 20, 800, ME_Y_LINE2, &FontT42, "Design heinrichs/weikamp"); |
| 1365 | |
| 1366 Sdate.Year = firmwareDataGetPointer()->release_year; | |
| 1367 Sdate.Month = firmwareDataGetPointer()->release_month; | |
| 1368 Sdate.Date = firmwareDataGetPointer()->release_day; | |
| 1369 | |
| 1370 if(settingsGetPointer()->date_format == DDMMYY) | |
| 1371 { | |
| 1372 day = 0; | |
| 1373 month = 1; | |
| 1374 year = 2; | |
| 1375 } | |
| 1376 else | |
| 1377 if(settingsGetPointer()->date_format == MMDDYY) | |
| 1378 { | |
| 1379 day = 1; | |
| 1380 month = 0; | |
| 1381 year = 2; | |
| 1382 } | |
| 1383 else | |
| 1384 { | |
| 1385 day = 2; | |
| 1386 month = 1; | |
| 1387 year = 0; | |
| 1388 } | |
| 1389 date[day] = Sdate.Date; | |
| 1390 date[month] = Sdate.Month; | |
| 1391 date[year] = Sdate.Year; | |
| 1392 snprintf(text_content,40,"Firmware release date: %02d.%02d.%02d",date[0],date[1],date[2]); | |
| 1393 write_label_var( 20, 800, ME_Y_LINE3, &FontT42, text_content); | |
| 1394 write_label_var( 20, 800, ME_Y_LINE4, &FontT42, "for more information"); | |
| 64 | 1395 write_label_var( 20, 800, ME_Y_LINE5, &FontT42, "info@heinrichsweikamp.com"); |
| 38 | 1396 |
| 1397 text_button[0] = TXT_2BYTE; | |
| 1398 text_button[1] = TXT2BYTE_ButtonNext; | |
| 1399 text_button[2] = 0; | |
| 1400 break; | |
| 1401 | |
| 1402 case 1: | |
| 1403 text_header[0] = '\001'; | |
| 1404 text_header[1] = TXT_2BYTE; | |
| 1405 text_header[2] = TXT2BYTE_Usage_Battery; | |
| 1406 text_header[3] = 0; | |
| 1407 | |
| 1408 text_content[0] = TXT_2BYTE; | |
| 1409 text_content[1] = TXT2BYTE_ChargeCycles; | |
| 1410 text_content[2] = 0; | |
| 1411 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
|
1412 /* 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
|
1413 write_label_var( 20, 800, ME_Y_LINE2, &FontT42, text_content); */ |
| 38 | 1414 |
| 1415 translateDate(stateDeviceGetPointer()->batteryChargeCycles.date_rtc_dr, &Sdate); | |
| 1416 translateDate(stateDeviceGetPointer()->batteryChargeCompleteCycles.date_rtc_dr, &Sdate2); | |
| 1417 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
|
1418 write_label_var( 20, 800, ME_Y_LINE2, &FontT42, text_content); |
| 38 | 1419 |
| 1420 text_content[0] = TXT_2BYTE; | |
| 1421 text_content[1] = TXT2BYTE_LowestVoltage; | |
| 1422 text_content[2] = 0; | |
| 1423 write_label_var( 20, 800, ME_Y_LINE4, &FontT42, text_content); | |
| 1424 | |
|
404
e729b8e7654d
Bugfix: display of time of minimum voltag:
ideenmodellierer
parents:
389
diff
changeset
|
1425 translateDate(stateDeviceGetPointer()->voltageMinimum.date_rtc_dr, &Sdate); |
| 38 | 1426 voltage = ((float)stateDeviceGetPointer()->voltageMinimum.value_int32) / 1000; |
| 1427 snprintf(text_content,80,"%0.3fV (%u.%u.20%02u)",voltage, Sdate.Date,Sdate.Month,Sdate.Year); | |
| 1428 write_label_var( 20, 800, ME_Y_LINE5, &FontT42, text_content); | |
| 1429 | |
| 1430 text_button[0] = TXT_2BYTE; | |
| 1431 text_button[1] = TXT2BYTE_ButtonNext; | |
| 1432 text_button[2] = 0; | |
| 1433 break; | |
| 1434 | |
| 1435 case 2: | |
| 1436 text_header[0] = '\001'; | |
| 1437 text_header[1] = TXT_2BYTE; | |
| 1438 text_header[2] = TXT2BYTE_Usage_Dives; | |
| 1439 text_header[3] = 0; | |
| 1440 | |
| 1441 text_content[0] = TXT_2BYTE; | |
| 1442 text_content[1] = TXT2BYTE_NumberOfDives; | |
| 1443 text_content[2] = 0; | |
| 1444 write_label_var( 20, 800, ME_Y_LINE1, &FontT42, text_content); | |
| 1445 | |
| 57 | 1446 snprintf(text_content,80,"%ld (%ld)",stateDeviceGetPointer()->diveCycles.value_int32,(stateDeviceGetPointer()->depthMaximum.value_int32 - 1000) / 100); |
| 38 | 1447 write_label_var( 20, 800, ME_Y_LINE2, &FontT42, text_content); |
| 1448 | |
| 1449 translateDate(stateDeviceGetPointer()->diveCycles.date_rtc_dr, &Sdate); | |
| 1450 translateDate(stateDeviceGetPointer()->depthMaximum.date_rtc_dr, &Sdate2); | |
| 1451 snprintf(text_content,80,"%u.%u.20%02u (%u.%u.20%02u)",Sdate.Date,Sdate.Month,Sdate.Year, Sdate2.Date,Sdate2.Month,Sdate2.Year); | |
| 1452 write_label_var( 20, 800, ME_Y_LINE3, &FontT42, text_content); | |
| 1453 | |
| 1454 text_content[0] = TXT_2BYTE; | |
| 1455 text_content[1] = TXT2BYTE_HoursOfOperation; | |
| 1456 text_content[2] = 0; | |
| 1457 write_label_var( 20, 800, ME_Y_LINE4, &FontT42, text_content); | |
| 1458 | |
| 57 | 1459 snprintf(text_content,80,"%ld",(stateDeviceGetPointer()->hoursOfOperation.value_int32)/3600); |
| 38 | 1460 write_label_var( 20, 800, ME_Y_LINE5, &FontT42, text_content); |
| 1461 | |
| 1462 text_button[0] = TXT_2BYTE; | |
| 1463 text_button[1] = TXT2BYTE_ButtonNext; | |
| 1464 text_button[2] = 0; | |
| 1465 break; | |
| 1466 | |
| 1467 case 3: | |
| 1468 text_header[0] = '\001'; | |
| 1469 text_header[1] = TXT_2BYTE; | |
| 1470 text_header[2] = TXT2BYTE_Usage_Environment; | |
| 1471 text_header[3] = 0; | |
| 1472 | |
| 1473 text_content[0] = TXT_2BYTE; | |
| 1474 text_content[1] = TXT2BYTE_AmbientTemperature; | |
| 1475 text_content[2] = 0; | |
| 1476 write_label_var( 20, 800, ME_Y_LINE1, &FontT42, text_content); | |
| 1477 | |
| 1478 temperature1 = ((float)stateDeviceGetPointer()->temperatureMinimum.value_int32) / 100; | |
| 1479 temperature2 = ((float)stateDeviceGetPointer()->temperatureMaximum.value_int32) / 100; | |
| 1480 snprintf(text_content,80,"%0.2f\140C / %0.2f\140C",temperature1,temperature2); | |
| 1481 write_label_var( 20, 800, ME_Y_LINE2, &FontT42, text_content); | |
| 1482 | |
| 1483 translateDate(stateDeviceGetPointer()->temperatureMinimum.date_rtc_dr, &Sdate); | |
| 1484 translateDate(stateDeviceGetPointer()->temperatureMaximum.date_rtc_dr, &Sdate2); | |
| 1485 snprintf(text_content,80,"(%u.%u.20%02u / %u.%u.20%02u)",Sdate.Date,Sdate.Month,Sdate.Year, Sdate2.Date,Sdate2.Month,Sdate2.Year); | |
| 1486 write_label_var( 20, 800, ME_Y_LINE3, &FontT42, text_content); | |
| 1487 | |
| 1488 text_content[0] = TXT_2BYTE; | |
| 1489 text_content[1] = TXT2BYTE_Korrekturwerte; | |
| 1490 text_content[2] = 0; | |
| 1491 write_label_var( 20, 800, ME_Y_LINE4, &FontT42, text_content); | |
| 1492 | |
| 1493 offsetTemperature = ((float)settingsGetPointer()->offsetTemperature_centigrad) / 10; | |
|
103
f5d2f02dc73f
Generalize TEXT of pressure unit
Dmitry Romanov <kitt@bk.ru>
parents:
102
diff
changeset
|
1494 snprintf(text_content,80,"%i %s / %0.2f\140C",settingsGetPointer()->offsetPressure_mbar, TEXT_PRESSURE_UNIT, offsetTemperature); |
| 38 | 1495 write_label_var( 20, 800, ME_Y_LINE5, &FontT42, text_content); |
| 1496 | |
| 1497 text_button[0] = TXT_2BYTE; | |
| 1498 text_button[1] = TXT2BYTE_Exit; | |
| 1499 text_button[2] = 0; | |
| 1500 break; | |
| 1501 } | |
| 1502 | |
| 1503 write_topline(text_header); | |
| 520 | 1504 tMenuEdit_newButtonText(StMSYS4_Info, text_button); |
| 38 | 1505 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonNext,0); |
| 1506 } | |
| 1507 | |
| 1508 | |
| 1509 void openEdit_Reset(void) | |
| 1510 { | |
| 1511 char text[32]; | |
| 1512 | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1513 resetMenuEdit(CLUT_MenuPageSystem); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1514 setBackMenu((uint32_t)openEdit_System, 0, 5); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1515 |
| 38 | 1516 text[0] = '\001'; |
| 1517 text[1] = TXT_2BYTE; | |
| 1518 text[2] = TXT2BYTE_ResetMenu; | |
| 1519 text[3] = 0; | |
| 1520 write_topline(text); | |
| 1521 | |
| 1522 text[0] = TXT_2BYTE; | |
| 1523 text[1] = TXT2BYTE_LogbookOffset; | |
| 1524 text[7] = 0; | |
| 1525 | |
| 1526 write_label_var( 30, 400, ME_Y_LINE1, &FontT48, text); | |
| 1527 | |
| 520 | 1528 write_field_udigit(StMSYS5_LogbookOffset,420, 800, ME_Y_LINE1, &FontT48, "####", settingsGetPointer()->logbookOffset,0,0,0); |
| 38 | 1529 |
| 1530 text[0] = TXT_2BYTE; | |
| 1531 text[2] = 0; | |
| 1532 | |
| 1054 | 1533 text[1] = TXT2BYTE_ResetMenu; |
| 1534 write_field_button(StMSYS5_Reset, 30, 800, ME_Y_LINE2, &FontT48, text); | |
| 38 | 1535 |
| 1536 text[1] = TXT2BYTE_Reboot; | |
| 1054 | 1537 write_field_button(StMSYS5_Reboot, 30, 800, ME_Y_LINE3, &FontT48, text); |
| 38 | 1538 |
| 1539 text[1] = TXT2BYTE_Maintenance; | |
| 1054 | 1540 write_field_button(StMSYS5_Maintenance, 30, 800, ME_Y_LINE4, &FontT48, text); |
| 38 | 1541 |
| 520 | 1542 setEvent(StMSYS5_LogbookOffset, (uint32_t)OnAction_LogbookOffset); |
| 1054 | 1543 setEvent(StMSYS5_Reset, (uint32_t)OnAction_Confirm); |
| 1544 setEvent(StMSYS5_Reboot, (uint32_t)OnAction_Confirm); | |
| 1545 setEvent(StMSYS5_Maintenance, (uint32_t)OnAction_Maintenance); | |
| 38 | 1546 |
| 1547 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 1548 } | |
| 1549 | |
| 1550 | |
| 1551 void openEdit_ResetConfirmation(uint32_t editIdOfCaller) | |
| 1552 { | |
| 1553 char text[32]; | |
| 1054 | 1554 SIconHeader* pIconHeader = (SIconHeader*) ICON_HEADER_ADDR; |
| 1555 | |
| 38 | 1556 |
| 1557 resetMenuEdit(CLUT_MenuPageSystem); | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1558 setBackMenu((uint32_t)openEdit_Reset, 0, 0); |
| 38 | 1559 |
| 1560 text[0] = '\001'; | |
| 1561 text[1] = TXT_2BYTE; | |
| 1562 text[2] = TXT2BYTE_AreYouSure; | |
| 1563 text[3] = 0; | |
| 1564 write_topline(text); | |
| 1565 | |
| 1566 text[0] = TXT_2BYTE; | |
| 1567 text[2] = 0; | |
| 1568 text[1] = TXT2BYTE_Abort; | |
| 1569 | |
| 520 | 1570 write_field_button(StMSYS5_Exit, 30, 800, ME_Y_LINE1, &FontT48, text); |
| 38 | 1571 |
| 1572 text[2] = 0; | |
| 1573 text[3] = 0; | |
| 1574 switch(editIdOfCaller) | |
| 1575 { | |
| 520 | 1576 case StMSYS5_Reboot: |
| 1577 case StMSYS5_RebootRTE: | |
| 1578 case StMSYS5_RebootMainCPU: | |
| 38 | 1579 text[1] = TXT2BYTE_RebootMainCPU; |
| 520 | 1580 write_field_button(StMSYS5_RebootMainCPU, 30, 800, ME_Y_LINE2, &FontT48, text); |
| 38 | 1581 text[1] = TXT2BYTE_RebootRTE; |
| 520 | 1582 write_field_button(StMSYS5_RebootRTE, 30, 800, ME_Y_LINE3, &FontT48, text); |
| 1583 setEvent(StMSYS5_Exit, (uint32_t)OnAction_Exit); | |
| 1584 setEvent(StMSYS5_RebootMainCPU, (uint32_t)OnAction_RebootMainCPU); | |
| 1585 setEvent(StMSYS5_RebootRTE, (uint32_t)OnAction_RebootRTE); | |
| 38 | 1586 text[0] = '\025'; |
| 1587 text[1] = TXT_2BYTE; | |
| 1588 text[2] = TXT2BYTE_DecoDataLost; | |
| 1589 text[3] = 0; | |
| 1590 write_label_var( 30, 800, ME_Y_LINE4, &FontT48, text); | |
| 1591 break; | |
| 1592 | |
| 1054 | 1593 case StMSYS5_Reset: |
| 520 | 1594 case StMSYS5_ResetDeco: |
| 1054 | 1595 case StMSYS5_ResetAll: |
| 1596 case StMSYS5_ResetLogbook: | |
| 1597 case StMSYS5_ResetIcon: | |
| 1598 text[1] = TXT2BYTE_ResetDeco; | |
| 1599 write_field_button(StMSYS5_ResetDeco, 30, 800, ME_Y_LINE2, &FontT48, text); | |
| 1600 text[1] = TXT2BYTE_ResetAll; | |
| 1601 write_field_button(StMSYS5_ResetAll, 30, 800, ME_Y_LINE3, &FontT48, text); | |
| 1602 text[1] = TXT2BYTE_ResetLogbook; | |
| 1603 write_field_button(StMSYS5_ResetLogbook, 30, 800, ME_Y_LINE4, &FontT48, text); | |
| 38 | 1604 |
| 1054 | 1605 if(pIconHeader->type == 0x20) |
| 1606 { | |
| 1607 text[1] = TXT2BYTE_ResetIcon; | |
| 1608 write_field_button(StMSYS5_ResetIcon, 30, 800, ME_Y_LINE5, &FontT48, text); | |
| 1609 } | |
| 520 | 1610 setEvent(StMSYS5_Exit, (uint32_t)OnAction_Exit); |
| 1054 | 1611 setEvent(StMSYS5_ResetDeco, (uint32_t)OnAction_ResetDeco); |
| 1612 setEvent(StMSYS5_ResetAll, (uint32_t)OnAction_ResetAll); | |
| 1613 setEvent(StMSYS5_ResetLogbook, (uint32_t)OnAction_ResetLogbook); | |
| 1614 if(pIconHeader->type == 0x20) | |
| 1615 { | |
| 1616 setEvent(StMSYS5_ResetIcon, (uint32_t)OnAction_ResetIcon); | |
| 1617 } | |
| 38 | 1618 break; |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1619 } |
| 38 | 1620 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1621 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1622 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1623 |
|
1067
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 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
|
1626 { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1627 if (info == NULL) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1628 return false; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1629 } |
|
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 return (info->Type & 0x0000FF00) == 0x0100 && checksum == info->fletcher; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1632 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1633 |
| 1017 | 1634 customBlockInfo_t blockInfo; |
| 1635 | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1636 static bool isBootloaderEqualToSource(const customBlockInfo_t *info) |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1637 { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1638 if (info == NULL) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1639 return false; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1640 } |
|
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 const uint8_t *pSource = (const uint8_t *)0x08100000; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1643 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1644 /* 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
|
1645 * 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
|
1646 * skipped in both flash and source when overlapping. */ |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1647 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1648 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
|
1649 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
|
1650 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
|
1651 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1652 /* 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
|
1653 uint32_t total = info->length; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1654 if (total > total_boot_capacity) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1655 total = total_boot_capacity; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1656 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1657 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1658 /* 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
|
1659 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
|
1660 if (r1_len) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1661 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
|
1662 return false; |
|
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 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1665 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1666 /* 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
|
1667 if (total <= hw_off) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1668 return true; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1669 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1670 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1671 /* 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
|
1672 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
|
1673 uint32_t bytes_past_hw = 0; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1674 if (total > after_hw_in_source) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1675 bytes_past_hw = total - after_hw_in_source; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1676 } else { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1677 /* 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
|
1678 return true; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1679 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1680 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1681 /* Region 2: bytes after hardware data */ |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1682 uint32_t r2_flash = HARDWAREDATA_ADDRESS + sizeof(SHardwareData); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1683 uint32_t r2_src = after_hw_in_source; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1684 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1685 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
|
1686 return false; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1687 } |
|
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 return true; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1690 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1691 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1692 void openEdit_Maintenance(void) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1693 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1694 char text[32]; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1695 unsigned char index = 0; |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1696 unsigned char nextLine = ME_Y_LINE3; |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1697 SSettings *pSettings = settingsGetPointer(); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1698 SSensorDataDiveO2* pDiveO2Data = NULL; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1699 |
| 1017 | 1700 customBlockInfo_t* pCustumBlockInfo = (customBlockInfo_t *) CUSTOM_BLOCK_INFO_ADDR; |
| 1701 | |
| 1702 blockInfo.Type = swapBytes(pCustumBlockInfo->Type); | |
| 1703 blockInfo.fletcher = swapBytes(pCustumBlockInfo->fletcher); | |
| 1704 blockInfo.length = swapBytes(pCustumBlockInfo->length); | |
| 1705 | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1706 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
|
1707 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1708 resetMenuEdit(CLUT_MenuPageSystem); |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1709 setBackMenu((uint32_t)openEdit_Reset, 0, 5); |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1710 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1711 text[0] = '\001'; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1712 text[1] = TXT_2BYTE; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1713 text[2] = TXT2BYTE_Maintenance; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1714 text[3] = 0; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1715 write_topline(text); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1716 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1717 text[0] = TXT_2BYTE; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1718 text[1] = TXT2BYTE_SetFactoryDefaults; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1719 text[2] = 0; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1720 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
|
1721 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1722 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1723 if(stateRealGetPointer()->lifeData.battery_charge <= 0) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1724 { |
| 38 | 1725 text[0] = TXT_2BYTE; |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1726 text[1] = TXT2BYTE_SetBatteryCharge; |
| 38 | 1727 text[2] = 0; |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1728 snprintf(&text[2],10,": %u%%",pSettings->lastKnownBatteryPercentage); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1729 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
|
1730 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1731 |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1732 /* 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
|
1733 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1734 #ifdef ENABLE_ANALYSE_SAMPLES |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1735 text[0] = TXT_2BYTE; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1736 text[1] = TXT2BYTE_SetSampleIndex; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1737 text[2] = 0; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1738 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
|
1739 nextLine += ME_Y_LINE_STEP; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1740 #endif |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1741 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1742 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
|
1743 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1744 for (index = 0; index < 3; index++) |
|
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 if(pSettings->ext_sensor_map[index] == SENSOR_DIGO2M) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1747 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1748 pDiveO2Data = (SSensorDataDiveO2*)stateRealGetPointer()->lifeData.extIf_sensor_data[index]; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1749 if(pDiveO2Data->pressure != 0) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1750 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1751 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
|
1752 stateRealGetPointer()->lifeData.pressure_surface_bar); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1753 |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1754 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
|
1755 nextLine += ME_Y_LINE_STEP; |
|
844
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 break; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1758 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1759 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1760 } |
| 38 | 1761 |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1762 if (isValidBootloaderBlock(&blockInfo, checksum)) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1763 if (!isBootloaderEqualToSource(&blockInfo)) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1764 snprintf(text,32,"Flash Bootloader"); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1765 if (nextLine < ME_Y_LINE5) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1766 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
|
1767 nextLine += ME_Y_LINE_STEP; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1768 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1769 } |
| 1017 | 1770 } |
| 1771 | |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1772 setEvent(StMSYS5_SetFactoryBC, (uint32_t)OnAction_SetFactoryDefaults); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1773 if(stateRealGetPointer()->lifeData.battery_charge <= 0) |
|
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 setEvent(StMSYS5_SetBattCharge, (uint32_t)OnAction_SetBatteryCharge); |
|
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((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
|
1778 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1779 if(pDiveO2Data != NULL) |
|
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 setEvent(StMSYS5_AdjustSurfPres, (uint32_t)OnAction_AdjustSurfacePressure); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1782 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1783 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1784 #ifdef ENABLE_ANALYSE_SAMPLES |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1785 setEvent(StMSYS5_SetSampleIndx, (uint32_t)OnAction_RecoverSampleIdx); |
|
424
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1786 #endif |
|
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1787 |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1788 if (isValidBootloaderBlock(&blockInfo, checksum) && !isBootloaderEqualToSource(&blockInfo)) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1789 setEvent(StMSYS5_FlashBoot, (uint32_t)OnAction_FlashBootloader); |
| 1017 | 1790 } |
| 1791 | |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1792 text[0] = TXT_2BYTE; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1793 text[1] = TXT2BYTE_WarnBatteryLow; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1794 text[2] = 0; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1795 snprintf(&text[2],10,": %01.2fV",stateRealGetPointer()->lifeData.battery_voltage); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1796 write_label_var( 30, 800, ME_Y_LINE5, &FontT42, text); |
| 38 | 1797 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1798 snprintf(&text[0],30,"Code: %X",getLicence()); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1799 write_label_var( 30, 800, ME_Y_LINE6, &FontT42, text); |
| 38 | 1800 |
| 1801 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 1802 } | |
| 1803 | |
| 1804 uint8_t OnAction_LogbookOffset(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1805 { | |
| 1806 uint8_t digitContentNew; | |
| 1807 uint32_t newOffset; | |
| 1808 | |
| 1809 if(action == ACTION_BUTTON_ENTER) | |
| 1810 return digitContent; | |
| 1811 | |
| 1812 if(action == ACTION_BUTTON_ENTER_FINAL) | |
| 1813 { | |
| 1814 evaluateNewString(editId, &newOffset, 0, 0, 0); | |
| 1815 if(newOffset > 9000) | |
| 1816 newOffset = 0; | |
| 1817 tMenuEdit_newInput(editId, newOffset, 0, 0, 0); | |
| 1818 settingsGetPointer()->logbookOffset = (uint16_t)newOffset; | |
| 1819 return UPDATE_DIVESETTINGS; | |
| 1820 } | |
| 1821 | |
| 1822 if(action == ACTION_BUTTON_NEXT) | |
| 1823 { | |
| 1824 digitContentNew = digitContent + 1; | |
| 1825 if(digitContentNew > '9') | |
| 1826 digitContentNew = '0'; | |
| 1827 return digitContentNew; | |
| 1828 } | |
| 1829 | |
| 1830 if(action == ACTION_BUTTON_BACK) | |
| 1831 { | |
| 1832 digitContentNew = digitContent - 1; | |
| 1833 if(digitContentNew < '0') | |
| 1834 digitContentNew = '9'; | |
| 1835 return digitContentNew; | |
| 1836 } | |
| 1837 return UNSPECIFIC_RETURN; | |
| 1838 } | |
| 1839 | |
| 1840 uint8_t OnAction_Nothing (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1841 { | |
| 1842 return UNSPECIFIC_RETURN; | |
| 1843 } | |
| 1844 | |
| 1845 uint8_t OnAction_Exit (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1846 { | |
| 1847 return EXIT_TO_MENU; | |
| 1848 } | |
| 1849 uint8_t OnAction_Confirm (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1850 { | |
| 1851 openEdit_ResetConfirmation(editId); | |
| 1852 return UNSPECIFIC_RETURN; | |
| 1853 } | |
| 1854 | |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1855 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
|
1856 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1857 openEdit_Maintenance(); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1858 return UNSPECIFIC_RETURN; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1859 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1860 |
| 38 | 1861 uint8_t OnAction_RebootRTE (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1862 { | |
| 1863 MX_SmallCPU_Reset_To_Standard(); | |
| 1864 return EXIT_TO_MENU; | |
| 1865 } | |
| 1866 | |
| 1867 uint8_t OnAction_ResetDeco (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1868 { | |
| 1869 clearDeco(); | |
| 1870 return EXIT_TO_MENU; | |
| 1871 } | |
| 1872 | |
| 1873 uint8_t OnAction_ResetAll (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1874 { | |
| 1027 | 1875 set_settings_to_Standard(EF_SETTINGS); |
| 1876 check_and_correct_settings(EF_SETTINGS); | |
| 38 | 1877 |
| 1878 return UPDATE_AND_EXIT_TO_HOME; | |
| 1879 } | |
| 1880 | |
| 1881 uint8_t OnAction_ResetLogbook (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1882 { | |
| 1883 write_label_var( 430, 740, 350, &FontT42, "Wait"); | |
| 1884 ext_flash_erase_logbook(); | |
| 1885 | |
| 1886 SSettings * pSettings = settingsGetPointer(); | |
| 1887 pSettings->lastDiveLogId = 255; | |
| 1888 pSettings->logFlashNextSampleStartAddress = 0; | |
| 1889 | |
| 1890 return EXIT_TO_MENU; | |
| 1891 } | |
| 1892 | |
| 1054 | 1893 uint8_t OnAction_ResetIcon (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1894 { | |
| 1895 SIconHeader* pIconHeader = (SIconHeader*) ICON_HEADER_ADDR; | |
| 1896 uint32_t Address = (uint32_t)&(pIconHeader->type); | |
| 1897 uint64_t clear = 0x0; | |
| 1898 | |
| 1899 HAL_FLASH_Unlock(); | |
| 1900 HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, Address, clear); | |
| 1901 HAL_FLASH_Lock(); | |
| 1902 GFX_build_logo_frame(); | |
| 1903 return EXIT_TO_MENU; | |
| 1904 } | |
| 38 | 1905 uint8_t OnAction_RebootMainCPU (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1906 { | |
| 1907 settingsGetPointer()->showDebugInfo = 0; | |
| 1908 extern uint8_t bootToBootloader; | |
| 1909 bootToBootloader = 1; | |
| 1910 return UNSPECIFIC_RETURN; | |
| 1911 } | |
| 1912 | |
| 1913 | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
1914 |
| 38 | 1915 uint8_t OnAction_SetFactoryDefaults(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1916 { | |
| 1917 settingsWriteFactoryDefaults(settingsGetPointer()->ButtonResponsiveness[3], settingsGetPointer()->buttonBalance); | |
| 1918 return EXIT_TO_MENU; | |
| 1919 } | |
| 1920 | |
|
468
aa1d71875e25
Moved and deactivated analyse sample buffer switch:
ideenmodellierer
parents:
446
diff
changeset
|
1921 #ifdef ENABLE_ANALYSE_SAMPLES |
|
424
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1922 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
|
1923 { |
|
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1924 char text[32]; |
|
558
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1925 uint8_t openSec; |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1926 uint8_t retval = UNSPECIFIC_RETURN; |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1927 openSec = ext_flash_AnalyseSampleBuffer(); |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1928 snprintf(&text[0],30,"OpenSec: %d",openSec); |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1929 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
|
1930 |
|
558
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1931 if(openSec == 2) |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1932 { |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1933 retval = UPDATE_DIVESETTINGS; |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1934 } |
|
66aef216828b
Changed operation mode of RecoverSampleIndex:
Ideenmodellierer
parents:
528
diff
changeset
|
1935 return retval; |
|
424
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1936 } |
|
468
aa1d71875e25
Moved and deactivated analyse sample buffer switch:
ideenmodellierer
parents:
446
diff
changeset
|
1937 #endif |
|
424
2b31cf1ebbcc
Added (optional) menu item to analyse log sample buffer:
ideenmodellierer
parents:
404
diff
changeset
|
1938 |
| 38 | 1939 uint8_t OnAction_SetBatteryCharge(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1940 { | |
| 1941 setBatteryPercentage(settingsGetPointer()->lastKnownBatteryPercentage); | |
| 1942 // setBatteryPercentage(100); | |
| 1943 return EXIT_TO_MENU; | |
| 1944 } | |
| 1945 | |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1946 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
|
1947 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1948 SSensorDataDiveO2* pDiveO2Data; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1949 const SDiveState* pDiveState = stateRealGetPointer(); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1950 SSettings* pSettings = settingsGetPointer(); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1951 uint8_t index = 0; |
|
959
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1952 float orgpressure_surface_mbar; |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1953 float DiveO2_mbar; |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1954 int8_t newOffset_mbar = 0; |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1955 |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1956 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1957 char text[32]; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1958 |
|
959
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1959 |
|
844
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 for (index = 0; index < 3; index++) |
|
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 if(settingsGetPointer()->ext_sensor_map[index] == SENSOR_DIGO2M) |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1964 { |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1965 pDiveO2Data = (SSensorDataDiveO2*)stateRealGetPointer()->lifeData.extIf_sensor_data[index]; |
|
959
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1966 DiveO2_mbar = (pDiveO2Data->pressure/1000.0); |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1967 |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1968 orgpressure_surface_mbar = (pDiveState->lifeData.pressure_surface_bar * 1000) - (settingsGetPointer()->offsetPressure_mbar); |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1969 newOffset_mbar = DiveO2_mbar - orgpressure_surface_mbar; |
|
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(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
|
1972 { |
|
959
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1973 if((orgpressure_surface_mbar + ((float)newOffset_mbar)) - (pDiveO2Data->pressure/1000.0) > 0.0) |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1974 { |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1975 newOffset_mbar -=1; |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1976 } |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1977 else |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1978 { |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1979 newOffset_mbar +=1; |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1980 } |
|
844
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1981 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1982 |
|
959
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1983 pSettings->offsetPressure_mbar = newOffset_mbar; |
|
5d5fa0a3b409
Devbugfix: external surface pressure calibration:
Ideenmodellierer
parents:
949
diff
changeset
|
1984 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
|
1985 tMenuEdit_newButtonText(StMSYS5_AdjustSurfPres,text); |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1986 break; |
|
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 } |
|
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 return UNSPECIFIC_RETURN; |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1991 } |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1992 |
|
e04d7dd199fb
Added option to adjust pressure to diveO2 reference:
Ideenmodellierer
parents:
805
diff
changeset
|
1993 |
| 38 | 1994 #ifdef SCREENTEST |
| 1995 uint8_t OnAction_ScreenTest (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1996 { | |
| 1997 static uint8_t FrameCount = 1; // 0 is invisible frame | |
| 1998 char text[5]; | |
| 1999 GFX_DrawCfgScreen tTestScreen; | |
| 2000 tTestScreen.FBStartAdress = 0; | |
| 2001 tTestScreen.ImageHeight = 480; | |
| 2002 tTestScreen.ImageWidth = 800; | |
| 2003 tTestScreen.LayerIndex = 1; | |
| 2004 | |
| 520 | 2005 set_globalState(StMSYS5_ScreenTest); |
| 38 | 2006 tTestScreen.FBStartAdress = getFrameByNumber(FrameCount); |
| 2007 if(tTestScreen.FBStartAdress == 0) | |
| 2008 { | |
| 2009 extern uint8_t bootToBootloader; | |
| 2010 bootToBootloader = 1; | |
| 2011 } | |
| 2012 GFX_fill_buffer(tTestScreen.FBStartAdress, 0xFF, FrameCount); | |
| 2013 snprintf(text,5,"%u",FrameCount); | |
| 2014 Gfx_write_label_var(&tTestScreen, 10,100,10,&FontT48,CLUT_Font027,text); | |
| 2015 GFX_SetFramesTopBottom(tTestScreen.FBStartAdress, NULL,480); | |
| 2016 FrameCount++; | |
| 2017 } | |
| 2018 #endif | |
| 1017 | 2019 |
| 2020 uint8_t OnAction_FlashBootloader (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 2021 { | |
| 2022 SHardwareData HwInfo; | |
| 2023 customBlockInfo_t* pCustumBlockInfo = (customBlockInfo_t *) CUSTOM_BLOCK_INFO_ADDR; | |
| 2024 customBlockInfo_t blockInfo; | |
| 2025 uint32_t checksum; | |
| 2026 uint8_t* pSource = (uint8_t *) 0x08100000; | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2027 uint8_t eraseResult; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2028 uint8_t progResult; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2029 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2030 // 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
|
2031 tMenuEdit_newButtonText(editId, "Flashing, please wait"); |
| 1017 | 2032 |
| 2033 checksum = CalcFletcher32(0x08100000,0x0811FFEF); /* last nibble contains block info => exclude */ | |
| 2034 | |
| 2035 blockInfo.Type = swapBytes(pCustumBlockInfo->Type); | |
| 2036 blockInfo.fletcher = swapBytes(pCustumBlockInfo->fletcher); | |
| 2037 blockInfo.length = swapBytes(pCustumBlockInfo->length); | |
| 2038 | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2039 if (isValidBootloaderBlock(&blockInfo, checksum)) { |
| 1017 | 2040 memcpy (&HwInfo, hardwareDataGetPointer(), sizeof(SHardwareData)); /* create backup copy because data will be overwritten during flash erase */ |
| 2041 | |
|
1067
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2042 eraseResult = bootloader_eraseFlashMemory(); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2043 if (eraseResult != 0) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2044 // Lock flash before returning on error |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2045 HAL_FLASH_Lock(); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2046 // Show error on the button itself |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2047 tMenuEdit_newButtonText(editId, "Erase failed!"); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2048 return UNSPECIFIC_RETURN; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2049 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2050 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2051 progResult = bootloader_programFlashMemory(pSource, blockInfo.length, &HwInfo); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2052 if (progResult != 0) { |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2053 // 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
|
2054 HAL_FLASH_Lock(); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2055 // Show error on the button itself |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2056 tMenuEdit_newButtonText(editId, "Program failed!"); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2057 return UNSPECIFIC_RETURN; |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2058 } |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2059 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2060 // Show success on the button itself |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2061 tMenuEdit_newButtonText(editId, "Flash complete"); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2062 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2063 // 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
|
2064 // 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
|
2065 HAL_Delay(1500); |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2066 |
|
a7ed4eb3142b
Exit to Correct Menu when Exiting from 'Reset Menu' Submenus.
heinrichsweikamp
parents:
1054
diff
changeset
|
2067 return EXIT_TO_MENU; |
| 1017 | 2068 } |
| 2069 return UNSPECIFIC_RETURN; | |
| 2070 } | |
| 2071 | |
| 38 | 2072 /* |
| 2073 uint8_t OnAction_TestCLog (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 2074 { | |
| 2075 write_label_var( 430, 740, 350, &FontT42, "Wait"); | |
| 2076 | |
| 2077 test_log_only(20, 5); | |
| 2078 test_log_only(30, 10); | |
| 2079 ext_flash_write_settings(); | |
| 2080 return EXIT_TO_MENU; | |
| 2081 } | |
| 2082 */ | |
| 2083 |
