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