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