Mercurial > public > ostc4
comparison Discovery/Src/tMenuEditSystem.c @ 981:c6c781a2e85b default
Merge into default
| author | heinrichsweikamp |
|---|---|
| date | Tue, 11 Feb 2025 18:12:00 +0100 |
| parents | 5d5fa0a3b409 |
| children | d9290c76b840 |
comparison
equal
deleted
inserted
replaced
| 871:f7318457df4d | 981:c6c781a2e85b |
|---|---|
| 39 #include "tMenuEdit.h" | 39 #include "tMenuEdit.h" |
| 40 #include "tMenuSystem.h" | 40 #include "tMenuSystem.h" |
| 41 #include "tMenuEditCustom.h" | 41 #include "tMenuEditCustom.h" |
| 42 #include "motion.h" | 42 #include "motion.h" |
| 43 #include "t7.h" | 43 #include "t7.h" |
| 44 #include "math.h" | |
| 44 | 45 |
| 45 | 46 |
| 46 /*#define HAVE_DEBUG_VIEW */ | 47 /*#define HAVE_DEBUG_VIEW */ |
| 47 static uint8_t infoPage = 0; | 48 static uint8_t infoPage = 0; |
| 48 | 49 |
| 49 /* Private function prototypes -----------------------------------------------*/ | 50 /* Private function prototypes -----------------------------------------------*/ |
| 50 void openEdit_DateTime(void); | 51 void openEdit_DateTime(void); |
| 52 void openEdit_DateFormat(void); | |
| 51 void openEdit_Language(void); | 53 void openEdit_Language(void); |
| 52 void openEdit_Design(void); | 54 void openEdit_Design(void); |
| 53 void openEdit_Information(void); | 55 void openEdit_Information(void); |
| 54 void openEdit_Reset(void); | 56 void openEdit_Reset(void); |
| 57 void openEdit_Maintenance(void); | |
| 55 //void openEdit_ShowDebugInfo(void); | 58 //void openEdit_ShowDebugInfo(void); |
| 56 //void openEdit_Salinity(void); | 59 //void openEdit_Salinity(void); |
| 57 | 60 |
| 58 /* Announced function prototypes -----------------------------------------------*/ | 61 /* Announced function prototypes -----------------------------------------------*/ |
| 59 uint8_t OnAction_Date (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 62 uint8_t OnAction_Date (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 60 uint8_t OnAction_Time (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 63 uint8_t OnAction_Time (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 61 uint8_t OnAction_12HR (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 64 uint8_t OnAction_12HR (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 65 uint8_t OnAction_Format (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 62 uint8_t OnAction_DDMMYY (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 66 uint8_t OnAction_DDMMYY (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 63 uint8_t OnAction_MMDDYY (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 67 uint8_t OnAction_MMDDYY (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 64 uint8_t OnAction_YYMMDD (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 68 uint8_t OnAction_YYMMDD (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 65 uint8_t OnAction_DST (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 69 uint8_t OnAction_DST (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 70 uint8_t OnAction_UTC (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 71 uint8_t OnAction_SetGnss (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 66 uint8_t OnAction_English (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 72 uint8_t OnAction_English (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 67 uint8_t OnAction_German (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 73 uint8_t OnAction_German (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 68 uint8_t OnAction_French (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 74 uint8_t OnAction_French (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 69 uint8_t OnAction_Italian (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 75 uint8_t OnAction_Italian (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 70 uint8_t OnAction_Espanol (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 76 uint8_t OnAction_Espanol (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 76 uint8_t OnAction_Colorscheme (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 82 uint8_t OnAction_Colorscheme (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 77 uint8_t OnAction_DebugInfo (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 83 uint8_t OnAction_DebugInfo (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 78 | 84 |
| 79 uint8_t OnAction_Exit (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 85 uint8_t OnAction_Exit (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 80 uint8_t OnAction_Confirm (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 86 uint8_t OnAction_Confirm (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 87 uint8_t OnAction_Maintenance (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 81 uint8_t OnAction_RebootRTE (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 88 uint8_t OnAction_RebootRTE (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 82 uint8_t OnAction_ResetDeco (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 89 uint8_t OnAction_ResetDeco (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 83 uint8_t OnAction_ResetAll (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 90 uint8_t OnAction_ResetAll (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 84 uint8_t OnAction_ResetLogbook (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 91 uint8_t OnAction_ResetLogbook (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 85 uint8_t OnAction_RebootMainCPU (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 92 uint8_t OnAction_RebootMainCPU (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 86 uint8_t OnAction_Nothing (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 93 uint8_t OnAction_Nothing (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 87 uint8_t OnAction_LogbookOffset(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 94 uint8_t OnAction_LogbookOffset(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 88 uint8_t OnAction_SetFactoryDefaults(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 95 uint8_t OnAction_SetFactoryDefaults(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 89 uint8_t OnAction_SetBatteryCharge(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 96 uint8_t OnAction_SetBatteryCharge(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 97 uint8_t OnAction_AdjustSurfacePressure (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | |
| 90 #ifdef ENABLE_ANALYSE_SAMPLES | 98 #ifdef ENABLE_ANALYSE_SAMPLES |
| 91 uint8_t OnAction_RecoverSampleIdx(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 99 uint8_t OnAction_RecoverSampleIdx(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 92 #endif | 100 #endif |
| 93 #ifdef SCREENTEST | 101 #ifdef SCREENTEST |
| 94 uint8_t OnAction_ScreenTest (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); | 102 uint8_t OnAction_ScreenTest (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); |
| 228 } | 236 } |
| 229 | 237 |
| 230 /* Private functions ---------------------------------------------------------*/ | 238 /* Private functions ---------------------------------------------------------*/ |
| 231 | 239 |
| 232 | 240 |
| 233 void openEdit_DateTime(void) | 241 void refresh_DateTime() |
| 234 { | 242 { |
| 235 RTC_DateTypeDef Sdate; | 243 RTC_DateTypeDef Sdate; |
| 236 RTC_TimeTypeDef Stime; | 244 RTC_TimeTypeDef Stime; |
| 237 uint8_t day,month,year,hour,minute, dateFormat, ddmmyy, mmddyy, yymmdd; | 245 uint8_t day,month,year,hour,minute; |
| 238 char text[32]; | 246 char text[32]; |
| 247 char formatStr[20]; | |
| 239 SSettings *pSettings; | 248 SSettings *pSettings; |
| 240 const SFirmwareData *pFirmwareInfo; | 249 const SFirmwareData *pFirmwareInfo; |
| 250 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2 | |
| 251 uint8_t localHours = 0; | |
| 252 uint8_t localMinutes = 0; | |
| 253 #endif | |
| 241 pFirmwareInfo = firmwareDataGetPointer(); | 254 pFirmwareInfo = firmwareDataGetPointer(); |
| 242 const SDiveState * pStateReal = stateRealGetPointer(); | 255 const SDiveState * pStateReal = stateRealGetPointer(); |
| 243 | 256 |
| 244 pSettings = settingsGetPointer(); | 257 pSettings = settingsGetPointer(); |
| 258 | |
| 245 translateDate(pStateReal->lifeData.dateBinaryFormat, &Sdate); | 259 translateDate(pStateReal->lifeData.dateBinaryFormat, &Sdate); |
| 246 translateTime(pStateReal->lifeData.timeBinaryFormat, &Stime); | 260 translateTime(pStateReal->lifeData.timeBinaryFormat, &Stime); |
| 247 year = Sdate.Year; | 261 year = Sdate.Year; |
| 248 month = Sdate.Month; | 262 month = Sdate.Month; |
| 249 day = Sdate.Date; | 263 day = Sdate.Date; |
| 257 month = 1; | 271 month = 1; |
| 258 | 272 |
| 259 if(day < 1) | 273 if(day < 1) |
| 260 day = 1; | 274 day = 1; |
| 261 | 275 |
| 262 // daylightsaving = Stime.DayLightSaving; | 276 getStringOfFormat_DDMMYY(formatStr, 20); |
| 263 dateFormat = pSettings->date_format; | |
| 264 ddmmyy = 0; | |
| 265 mmddyy = 0; | |
| 266 yymmdd = 0; | |
| 267 | |
| 268 if(dateFormat == DDMMYY) | |
| 269 ddmmyy = 1; | |
| 270 else | |
| 271 if(dateFormat == MMDDYY) | |
| 272 mmddyy = 1; | |
| 273 else | |
| 274 yymmdd = 1; | |
| 275 | 277 |
| 276 text[0] = '\001'; | 278 text[0] = '\001'; |
| 277 text[1] = TXT_DateAndTime; | 279 text[1] = TXT_DateAndTime; |
| 278 text[2] = 0; | 280 text[2] = 0; |
| 279 | 281 |
| 280 write_topline(text); | 282 write_topline(text); |
| 281 | 283 |
| 282 write_label_fix( 20, 340, ME_Y_LINE1, &FontT42, TXT_TimeConfig); | 284 write_label_fix( 20, 340, ME_Y_LINE1, &FontT42, TXT_TimeConfig); |
| 283 write_label_fix( 20, 340, ME_Y_LINE2, &FontT42, TXT_Format); | 285 write_label_fix( 20, 340, ME_Y_LINE2, &FontT42, TXT_Format); |
| 284 write_label_fix( 20, 340, ME_Y_LINE3, &FontT42, TXT_DateConfig); | 286 write_label_fix( 20, 340, ME_Y_LINE3, &FontT42, TXT_DateConfig); |
| 285 write_label_var( 600, 800, ME_Y_LINE4, &FontT48, "\016\016DDMMYY\017"); | 287 write_label_fix( 20, 790, ME_Y_LINE4, &FontT42, TXT_Format); |
| 286 write_label_fix( 20, 790, ME_Y_LINE5, &FontT42, TXT_Format); | 288 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2 |
| 287 // write_label_fix( 350 ,580, 250, &FontT42, TXT_Daylightsaving); | 289 write_label_var( 20, 340, ME_Y_LINE5, &FontT42, "GNSS"); |
| 290 snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_TIMEZONE); | |
| 291 write_label_var( 20, 340, ME_Y_LINE6, &FontT42, text); | |
| 292 #endif | |
| 293 | |
| 294 | |
| 295 tMenuEdit_newInput(StMSYS1_Time, hour, minute, 0, 0); | |
| 296 tMenuEdit_set_on_off(StMSYS1_12HR, pSettings->amPMTime); | |
| 297 | |
| 298 switch(pSettings->date_format) | |
| 299 { | |
| 300 default: | |
| 301 case DDMMYY: tMenuEdit_newInput(StMSYS1_Date, day, month, year, 0); | |
| 302 break; | |
| 303 case MMDDYY: tMenuEdit_newInput(StMSYS1_Date, month, day, year, 0); | |
| 304 break; | |
| 305 case YYMMDD: tMenuEdit_newInput(StMSYS1_Date, year, month, day, 0); | |
| 306 break; | |
| 307 } | |
| 308 tMenuEdit_newButtonText(StMSYS1_FORMAT, formatStr); | |
| 309 | |
| 310 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2 | |
| 311 if(pStateReal->lifeData.gnssData.alive & GNSS_ALIVE_STATE_TIME) | |
| 312 { | |
| 313 convertUTCToLocal(pStateReal->lifeData.gnssData.DateTime.hour, pStateReal->lifeData.gnssData.DateTime.min, &localHours, &localMinutes); | |
| 314 convertStringOfDate_DDMMYY(formatStr, 20, pStateReal->lifeData.gnssData.DateTime.day | |
| 315 , pStateReal->lifeData.gnssData.DateTime.month | |
| 316 , pStateReal->lifeData.gnssData.DateTime.year); | |
| 317 snprintf(text, 32, "%02d:%02d - %s", localHours, localMinutes, formatStr); | |
| 318 tMenuEdit_newButtonText(StMSYS1_GNSSDT, text); | |
| 319 } | |
| 320 else | |
| 321 { | |
| 322 snprintf(text, 32, "--:--"); | |
| 323 write_label_var( 320, 790, ME_Y_LINE5, &FontT42, text); | |
| 324 } | |
| 325 tMenuEdit_newInput(StMSYS1_ZONE, pSettings->timeZone.hours, pSettings->timeZone.minutes, 0, 0); | |
| 326 #endif | |
| 327 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 328 } | |
| 329 void openEdit_DateTime(void) | |
| 330 { | |
| 331 RTC_DateTypeDef Sdate; | |
| 332 RTC_TimeTypeDef Stime; | |
| 333 uint8_t day,month,year,hour,minute; | |
| 334 char text[32]; | |
| 335 char formatStr[20]; | |
| 336 SSettings *pSettings; | |
| 337 const SFirmwareData *pFirmwareInfo; | |
| 338 | |
| 339 pFirmwareInfo = firmwareDataGetPointer(); | |
| 340 const SDiveState * pStateReal = stateRealGetPointer(); | |
| 341 | |
| 342 pSettings = settingsGetPointer(); | |
| 343 | |
| 344 set_globalState(StMSYS1_DateTime); | |
| 345 resetMenuEdit(CLUT_MenuPageSystem); | |
| 346 | |
| 347 translateDate(pStateReal->lifeData.dateBinaryFormat, &Sdate); | |
| 348 translateTime(pStateReal->lifeData.timeBinaryFormat, &Stime); | |
| 349 year = Sdate.Year; | |
| 350 month = Sdate.Month; | |
| 351 day = Sdate.Date; | |
| 352 hour = Stime.Hours; | |
| 353 minute= Stime.Minutes; | |
| 354 | |
| 355 if(year < pFirmwareInfo->release_year) | |
| 356 year = pFirmwareInfo->release_year; | |
| 357 | |
| 358 if(month < 1) | |
| 359 month = 1; | |
| 360 | |
| 361 if(day < 1) | |
| 362 day = 1; | |
| 363 | |
| 364 getStringOfFormat_DDMMYY(formatStr, 20); | |
| 365 | |
| 366 text[0] = '\001'; | |
| 367 text[1] = TXT_DateAndTime; | |
| 368 text[2] = 0; | |
| 369 | |
| 370 write_topline(text); | |
| 371 | |
| 372 write_label_fix( 20, 340, ME_Y_LINE1, &FontT42, TXT_TimeConfig); | |
| 373 write_label_fix( 20, 340, ME_Y_LINE2, &FontT42, TXT_Format); | |
| 374 write_label_fix( 20, 340, ME_Y_LINE3, &FontT42, TXT_DateConfig); | |
| 375 write_label_fix( 20, 790, ME_Y_LINE4, &FontT42, TXT_Format); | |
| 376 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2 | |
| 377 write_label_var( 20, 340, ME_Y_LINE5, &FontT42, "GNSS"); | |
| 378 snprintf(text, 32, "%c%c", TXT_2BYTE, TXT2BYTE_TIMEZONE); | |
| 379 write_label_var( 20, 340, ME_Y_LINE6, &FontT42, text); | |
| 380 #endif | |
| 288 | 381 |
| 289 write_field_2digit(StMSYS1_Time, 320, 780, ME_Y_LINE1, &FontT48, "##:##", (uint32_t)hour, (uint32_t)minute, 0, 0); | 382 write_field_2digit(StMSYS1_Time, 320, 780, ME_Y_LINE1, &FontT48, "##:##", (uint32_t)hour, (uint32_t)minute, 0, 0); |
| 290 write_field_on_off(StMSYS1_12HR, 320, 790, ME_Y_LINE2, &FontT48, "12 HR", pSettings->amPMTime); | 383 write_field_on_off(StMSYS1_12HR, 320, 790, ME_Y_LINE2, &FontT48, "12 HR", pSettings->amPMTime); |
| 291 write_field_2digit(StMSYS1_Date, 320, 780, ME_Y_LINE3, &FontT48, "##-##-20##", (uint32_t)day, (uint32_t)month, (uint32_t)year, 0); | 384 |
| 292 write_field_on_off(StMSYS1_DDMMYY, 320, 790, ME_Y_LINE4, &FontT48, "DDMMYY", ddmmyy); | 385 switch(pSettings->date_format) |
| 293 write_field_on_off(StMSYS1_MMDDYY, 320, 790, ME_Y_LINE5, &FontT48, "MMDDYY", mmddyy); | 386 { |
| 294 write_field_on_off(StMSYS1_YYMMDD, 320, 790, ME_Y_LINE6, &FontT48, "YYMMDD", yymmdd); | 387 default: |
| 295 // write_field_on_off(StMSYS1_DST, 350, 580, 310, &FontT48, "Active", daylightsaving); | 388 case DDMMYY: write_field_2digit(StMSYS1_Date, 320, 780, ME_Y_LINE3, &FontT48, "##-##-20##", (uint32_t)day, (uint32_t)month, (uint32_t)year, 0); |
| 389 break; | |
| 390 case MMDDYY: write_field_2digit(StMSYS1_Date, 320, 780, ME_Y_LINE3, &FontT48, "##-##-20##", (uint32_t)month, (uint32_t)day, (uint32_t)year, 0); | |
| 391 break; | |
| 392 case YYMMDD: write_field_2digit(StMSYS1_Date, 320, 780, ME_Y_LINE3, &FontT48, "20##-##-##", (uint32_t)year, (uint32_t)month, (uint32_t)day, 0); | |
| 393 break; | |
| 394 } | |
| 395 | |
| 396 write_field_button(StMSYS1_FORMAT, 320, 790, ME_Y_LINE4, &FontT48, formatStr); | |
| 397 | |
| 398 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2 | |
| 399 snprintf(text, 32, "--:--"); | |
| 400 write_field_button(StMSYS1_GNSSDT, 320, 790, ME_Y_LINE5, &FontT48, text); | |
| 401 write_field_sdigit(StMSYS1_ZONE, 320, 780, ME_Y_LINE6, &FontT48, "UTC: ###:###", pSettings->timeZone.hours, pSettings->timeZone.minutes,0,0); | |
| 402 #endif | |
| 296 | 403 |
| 297 setEvent(StMSYS1_Date, (uint32_t)OnAction_Date); | 404 setEvent(StMSYS1_Date, (uint32_t)OnAction_Date); |
| 298 setEvent(StMSYS1_Time, (uint32_t)OnAction_Time); | 405 setEvent(StMSYS1_Time, (uint32_t)OnAction_Time); |
| 299 setEvent(StMSYS1_12HR, (uint32_t)OnAction_12HR); | 406 setEvent(StMSYS1_12HR, (uint32_t)OnAction_12HR); |
| 300 setEvent(StMSYS1_DDMMYY, (uint32_t)OnAction_DDMMYY); | 407 setEvent(StMSYS1_FORMAT, (uint32_t)OnAction_Format); |
| 301 setEvent(StMSYS1_MMDDYY, (uint32_t)OnAction_MMDDYY); | 408 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2 |
| 302 setEvent(StMSYS1_YYMMDD, (uint32_t)OnAction_YYMMDD); | 409 setEvent(StMSYS1_GNSSDT, (uint32_t)OnAction_SetGnss); |
| 303 // setEvent(StMSYS1_DST, (uint32_t)OnAction_DST); | 410 setEvent(StMSYS1_ZONE, (uint32_t)OnAction_UTC); |
| 304 | 411 #endif |
| 305 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | 412 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); |
| 306 } | 413 } |
| 307 | 414 |
| 308 | 415 |
| 309 uint8_t OnAction_Date(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | 416 uint8_t OnAction_Date(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 313 RTC_DateTypeDef sdatestructure; | 420 RTC_DateTypeDef sdatestructure; |
| 314 | 421 |
| 315 const SFirmwareData *pFirmwareInfo; | 422 const SFirmwareData *pFirmwareInfo; |
| 316 pFirmwareInfo = firmwareDataGetPointer(); | 423 pFirmwareInfo = firmwareDataGetPointer(); |
| 317 | 424 |
| 425 uint8_t mapDMY[3]; | |
| 426 switch(settingsGetPointer()->date_format) | |
| 427 { | |
| 428 default: | |
| 429 case DDMMYY: mapDMY[0] = 0; | |
| 430 mapDMY[1] = 1; | |
| 431 mapDMY[2] = 2; | |
| 432 break; | |
| 433 case MMDDYY: mapDMY[0] = 1; | |
| 434 mapDMY[1] = 0; | |
| 435 mapDMY[2] = 2; | |
| 436 break; | |
| 437 case YYMMDD: mapDMY[0] = 2; | |
| 438 mapDMY[1] = 1; | |
| 439 mapDMY[2] = 0; | |
| 440 break; | |
| 441 } | |
| 442 | |
| 318 if(action == ACTION_BUTTON_ENTER) | 443 if(action == ACTION_BUTTON_ENTER) |
| 319 { | 444 { |
| 320 return digitContent; | 445 return digitContent; |
| 321 } | 446 } |
| 322 if(action == ACTION_BUTTON_ENTER_FINAL) | 447 if(action == ACTION_BUTTON_ENTER_FINAL) |
| 323 { | 448 { |
| 324 evaluateNewString(editId, &newDay, &newMonth, &newYear, 0); | 449 switch(settingsGetPointer()->date_format) |
| 450 { | |
| 451 default: | |
| 452 case DDMMYY: evaluateNewString(editId, &newDay, &newMonth, &newYear, 0); | |
| 453 break; | |
| 454 case MMDDYY: evaluateNewString(editId, &newMonth, &newDay, &newYear, 0); | |
| 455 break; | |
| 456 case YYMMDD: evaluateNewString(editId, &newYear, &newMonth, &newDay, 0); | |
| 457 break; | |
| 458 } | |
| 459 | |
| 325 if(newDay == 0) | 460 if(newDay == 0) |
| 326 newDay = 1; | 461 newDay = 1; |
| 327 if(newDay > 31) | 462 if(newDay > 31) |
| 328 newDay = 31; | 463 newDay = 31; |
| 329 if(newMonth == 0) | 464 if(newMonth == 0) |
| 344 sdatestructure.Year = newYear; | 479 sdatestructure.Year = newYear; |
| 345 setWeekday(&sdatestructure); | 480 setWeekday(&sdatestructure); |
| 346 | 481 |
| 347 setDate(sdatestructure); | 482 setDate(sdatestructure); |
| 348 | 483 |
| 349 tMenuEdit_newInput(editId, newDay, newMonth, newYear, 0); | 484 switch(settingsGetPointer()->date_format) |
| 485 { | |
| 486 default: | |
| 487 case DDMMYY: tMenuEdit_newInput(editId, newDay, newMonth, newYear, 0); | |
| 488 break; | |
| 489 case MMDDYY: tMenuEdit_newInput(editId, newMonth, newDay, newYear, 0); | |
| 490 break; | |
| 491 case YYMMDD: tMenuEdit_newInput(editId, newYear, newMonth, newDay, 0); | |
| 492 break; | |
| 493 } | |
| 494 | |
| 350 return UNSPECIFIC_RETURN; | 495 return UNSPECIFIC_RETURN; |
| 351 } | 496 } |
| 352 if(action == ACTION_BUTTON_NEXT) /* clip values to a specific range e.g. 12 months */ | 497 if(action == ACTION_BUTTON_NEXT) /* clip values to a specific range e.g. 12 months */ |
| 353 { | 498 { |
| 354 digitContentNew = digitContent + 1; | 499 digitContentNew = digitContent + 1; |
| 355 if((blockNumber == 0) && (digitContentNew > '0' + 31)) | 500 |
| 501 if((blockNumber == mapDMY[0]) && (digitContentNew > '0' + 31)) | |
| 502 { | |
| 356 digitContentNew = '1'; | 503 digitContentNew = '1'; |
| 357 if((blockNumber == 1) && (digitContentNew > '0' + 12)) | 504 } |
| 505 if((blockNumber == mapDMY[1]) && (digitContentNew > '0' + 12)) | |
| 506 { | |
| 358 digitContentNew = '1'; | 507 digitContentNew = '1'; |
| 359 if((blockNumber == 2) && (digitContentNew > '0' + pFirmwareInfo->release_year + 10)) | 508 } |
| 509 if((blockNumber == mapDMY[2]) && (digitContentNew > '0' + pFirmwareInfo->release_year + 10)) | |
| 510 { | |
| 360 digitContentNew = '0' + pFirmwareInfo->release_year; | 511 digitContentNew = '0' + pFirmwareInfo->release_year; |
| 512 } | |
| 361 return digitContentNew; | 513 return digitContentNew; |
| 362 } | 514 } |
| 363 if(action == ACTION_BUTTON_BACK) /* clip values to a specific range e.g. 12 months */ | 515 if(action == ACTION_BUTTON_BACK) /* clip values to a specific range e.g. 12 months */ |
| 364 { | 516 { |
| 365 digitContentNew = digitContent - 1; | 517 digitContentNew = digitContent - 1; |
| 366 if((blockNumber == 0) && (digitContentNew < '1')) | 518 if((blockNumber == mapDMY[0]) && (digitContentNew < '1')) |
| 519 { | |
| 367 digitContentNew = '0' + 31; | 520 digitContentNew = '0' + 31; |
| 368 if((blockNumber == 1) && (digitContentNew < '1')) | 521 } |
| 522 if((blockNumber == mapDMY[1]) && (digitContentNew < '1')) | |
| 523 { | |
| 369 digitContentNew = '0' + 12; | 524 digitContentNew = '0' + 12; |
| 370 if((blockNumber == 2) && (digitContentNew < '0' + pFirmwareInfo->release_year)) | 525 } |
| 526 if((blockNumber == mapDMY[2]) && (digitContentNew < '0' + pFirmwareInfo->release_year)) | |
| 527 { | |
| 371 digitContentNew = '0' + pFirmwareInfo->release_year + 10; | 528 digitContentNew = '0' + pFirmwareInfo->release_year + 10; |
| 529 } | |
| 372 return digitContentNew; | 530 return digitContentNew; |
| 373 } | 531 } |
| 374 /* | 532 /* |
| 375 if(action == ACTION_BUTTON_NEXT) | 533 if(action == ACTION_BUTTON_NEXT) |
| 376 { | 534 { |
| 485 tMenuEdit_set_on_off(editId, pSettings->amPMTime); | 643 tMenuEdit_set_on_off(editId, pSettings->amPMTime); |
| 486 | 644 |
| 487 return UNSPECIFIC_RETURN; | 645 return UNSPECIFIC_RETURN; |
| 488 } | 646 } |
| 489 | 647 |
| 648 uint8_t OnAction_SetGnss(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 649 { | |
| 650 RTC_DateTypeDef sdatestructure; | |
| 651 RTC_TimeTypeDef stimestructure; | |
| 652 uint8_t localHours = 0; | |
| 653 uint8_t localMinutes = 0; | |
| 654 | |
| 655 const SDiveState * pStateReal = stateRealGetPointer(); | |
| 656 | |
| 657 if(pStateReal->lifeData.gnssData.alive & GNSS_ALIVE_STATE_TIME) | |
| 658 { | |
| 659 convertUTCToLocal(pStateReal->lifeData.gnssData.DateTime.hour, pStateReal->lifeData.gnssData.DateTime.min, &localHours, &localMinutes); | |
| 660 stimestructure.Hours = localHours; | |
| 661 stimestructure.Minutes = localMinutes; | |
| 662 stimestructure.Seconds = 0; | |
| 663 setTime(stimestructure); | |
| 664 | |
| 665 sdatestructure.Date = pStateReal->lifeData.gnssData.DateTime.day; | |
| 666 sdatestructure.Month = pStateReal->lifeData.gnssData.DateTime.month; | |
| 667 sdatestructure.Year = pStateReal->lifeData.gnssData.DateTime.year; | |
| 668 setWeekday(&sdatestructure); | |
| 669 setDate(sdatestructure); | |
| 670 } | |
| 671 return UNSPECIFIC_RETURN; | |
| 672 } | |
| 673 | |
| 674 void openEdit_DateFormat(void) | |
| 675 { | |
| 676 char text[32]; | |
| 677 SSettings *pSettings; | |
| 678 | |
| 679 uint8_t ddmmyy = 0; | |
| 680 uint8_t mmddyy= 0; | |
| 681 uint8_t yymmdd = 0; | |
| 682 | |
| 683 pSettings = settingsGetPointer(); | |
| 684 | |
| 685 | |
| 686 set_globalState(StMSYS1_FORMAT); | |
| 687 resetMenuEdit(CLUT_MenuPageSystem); | |
| 688 setBackMenu((uint32_t)openEdit_DateTime,0,4); | |
| 689 | |
| 690 switch(pSettings->date_format) | |
| 691 { | |
| 692 default: | |
| 693 case DDMMYY: ddmmyy = 1; | |
| 694 break; | |
| 695 case MMDDYY: mmddyy = 1; | |
| 696 break; | |
| 697 case YYMMDD: yymmdd = 1; | |
| 698 break; | |
| 699 }; | |
| 700 | |
| 701 text[0] = '\001'; | |
| 702 text[1] = TXT_Format; | |
| 703 text[2] = 0; | |
| 704 | |
| 705 write_topline(text); | |
| 706 | |
| 707 write_label_fix( 20, 790, ME_Y_LINE2, &FontT42, TXT_Format); | |
| 708 | |
| 709 write_field_on_off(StMSYS1_DDMMYY, 320, 790, ME_Y_LINE1, &FontT48, "DDMMYY", ddmmyy); | |
| 710 write_field_on_off(StMSYS1_MMDDYY, 320, 790, ME_Y_LINE2, &FontT48, "MMDDYY", mmddyy); | |
| 711 write_field_on_off(StMSYS1_YYMMDD, 320, 790, ME_Y_LINE3, &FontT48, "YYMMDD", yymmdd); | |
| 712 | |
| 713 setEvent(StMSYS1_DDMMYY, (uint32_t)OnAction_DDMMYY); | |
| 714 setEvent(StMSYS1_MMDDYY, (uint32_t)OnAction_MMDDYY); | |
| 715 setEvent(StMSYS1_YYMMDD, (uint32_t)OnAction_YYMMDD); | |
| 716 | |
| 717 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
| 718 } | |
| 719 | |
| 720 uint8_t OnAction_Format(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 721 { | |
| 722 openEdit_DateFormat(); | |
| 723 | |
| 724 return UNSPECIFIC_RETURN; | |
| 725 } | |
| 726 | |
| 490 uint8_t OnAction_DDMMYY(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | 727 uint8_t OnAction_DDMMYY(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 491 { | 728 { |
| 492 SSettings *pSettings; | 729 SSettings *pSettings; |
| 493 | 730 |
| 494 pSettings = settingsGetPointer(); | 731 pSettings = settingsGetPointer(); |
| 526 | 763 |
| 527 tMenuEdit_set_on_off(editId, 1); | 764 tMenuEdit_set_on_off(editId, 1); |
| 528 tMenuEdit_set_on_off(StMSYS1_MMDDYY, 0); | 765 tMenuEdit_set_on_off(StMSYS1_MMDDYY, 0); |
| 529 tMenuEdit_set_on_off(StMSYS1_DDMMYY, 0); | 766 tMenuEdit_set_on_off(StMSYS1_DDMMYY, 0); |
| 530 | 767 |
| 768 return UNSPECIFIC_RETURN; | |
| 769 } | |
| 770 | |
| 771 uint8_t OnAction_UTC(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 772 { | |
| 773 SSettings *settings = settingsGetPointer(); | |
| 774 const SDiveState * pStateReal = stateRealGetPointer(); | |
| 775 int32_t utcHour; | |
| 776 uint32_t utcMinutes; | |
| 777 uint8_t digitContentNew; | |
| 778 uint8_t localHours = 0; | |
| 779 uint8_t localMinutes = 0; | |
| 780 char text[32]; | |
| 781 char timeStr[20]; | |
| 782 | |
| 783 switch (action) { | |
| 784 case ACTION_BUTTON_ENTER: | |
| 785 | |
| 786 return digitContent; | |
| 787 case ACTION_BUTTON_ENTER_FINAL: | |
| 788 { | |
| 789 | |
| 790 evaluateNewString(editId, (uint32_t *)&utcHour, &utcMinutes, NULL, NULL); | |
| 791 | |
| 792 if (utcHour > 14) { | |
| 793 utcHour = 14; | |
| 794 } else if (utcHour < -12) { | |
| 795 utcHour = -12; | |
| 796 } | |
| 797 | |
| 798 if (utcMinutes % 15 != 0) | |
| 799 { | |
| 800 utcMinutes = (utcMinutes / 15) * 15; | |
| 801 } | |
| 802 if(utcMinutes > 45) | |
| 803 { | |
| 804 utcMinutes = 45; | |
| 805 } else if (utcMinutes < 0) { | |
| 806 utcMinutes = 0; | |
| 807 } | |
| 808 settings->timeZone.hours = utcHour; | |
| 809 settings->timeZone.minutes = utcMinutes; | |
| 810 | |
| 811 tMenuEdit_newInput(editId, ((input_u)utcHour).uint32, utcMinutes, 0, 0); | |
| 812 convertUTCToLocal(pStateReal->lifeData.gnssData.DateTime.hour, pStateReal->lifeData.gnssData.DateTime.min, &localHours, &localMinutes); | |
| 813 convertStringOfDate_DDMMYY(timeStr, 20, pStateReal->lifeData.gnssData.DateTime.day | |
| 814 , pStateReal->lifeData.gnssData.DateTime.month | |
| 815 , pStateReal->lifeData.gnssData.DateTime.year); | |
| 816 snprintf(text, 32, "%2d:%2d - %s", localHours, localMinutes, timeStr); | |
| 817 tMenuEdit_newButtonText(StMSYS1_GNSSDT, text); | |
| 818 } | |
| 819 | |
| 820 break; | |
| 821 case ACTION_BUTTON_NEXT: | |
| 822 if ((blockNumber == 0) && (digitNumber == 0)) { | |
| 823 digitContentNew = togglePlusMinus(digitContent); | |
| 824 } else { | |
| 825 digitContentNew = digitContent + 1; | |
| 826 if (digitContentNew > '9') { | |
| 827 digitContentNew = '0'; | |
| 828 } | |
| 829 } | |
| 830 | |
| 831 return digitContentNew; | |
| 832 case ACTION_BUTTON_BACK: | |
| 833 if ((blockNumber == 0) && (digitNumber == 0)) { | |
| 834 digitContentNew = togglePlusMinus(digitContent); | |
| 835 } else { | |
| 836 digitContentNew = digitContent - 1; | |
| 837 if (digitContentNew < '0') { | |
| 838 digitContentNew = '9'; | |
| 839 } | |
| 840 } | |
| 841 return digitContentNew; | |
| 842 } | |
| 531 return UNSPECIFIC_RETURN; | 843 return UNSPECIFIC_RETURN; |
| 532 } | 844 } |
| 533 | 845 |
| 534 | 846 |
| 535 uint8_t OnAction_DST(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | 847 uint8_t OnAction_DST(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 732 text[1] = 0; | 1044 text[1] = 0; |
| 733 write_content( 30, 700, ME_Y_LINE4, &FontT24, text, CLUT_Font031); | 1045 write_content( 30, 700, ME_Y_LINE4, &FontT24, text, CLUT_Font031); |
| 734 write_content( 30, 700, ME_Y_LINE4 + 30 + 70, &FontT48, "___________", CLUT_DIVE_FieldSeperatorLines); | 1046 write_content( 30, 700, ME_Y_LINE4 + 30 + 70, &FontT48, "___________", CLUT_DIVE_FieldSeperatorLines); |
| 735 write_content(280, 700, ME_Y_LINE4 + 30 + 70 - 3, &FontT48, "|", CLUT_DIVE_pluginbox); | 1047 write_content(280, 700, ME_Y_LINE4 + 30 + 70 - 3, &FontT48, "|", CLUT_DIVE_pluginbox); |
| 736 write_content(290, 700, ME_Y_LINE4 + 30 + 70 - 37, &FontT48, "_______________", CLUT_DIVE_pluginbox); | 1048 write_content(290, 700, ME_Y_LINE4 + 30 + 70 - 37, &FontT48, "_______________", CLUT_DIVE_pluginbox); |
| 737 write_content( 30, 700, ME_Y_LINE4 + 30, &FontT144, "24.7", CLUT_Font027); | 1049 write_content( 30, 700, ME_Y_LINE4 + 42, &FontT144, "24.7", CLUT_Font027); |
| 738 | 1050 |
| 739 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | 1051 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); |
| 740 } | 1052 } |
| 741 | 1053 |
| 742 | 1054 |
| 833 text[2] = 0; | 1145 text[2] = 0; |
| 834 | 1146 |
| 835 write_field_button(StMSYS4_Info, 30, 800, ME_Y_LINE6, &FontT48, text); | 1147 write_field_button(StMSYS4_Info, 30, 800, ME_Y_LINE6, &FontT48, text); |
| 836 | 1148 |
| 837 setEvent(StMSYS4_Info, (uint32_t)OnAction_Information); | 1149 setEvent(StMSYS4_Info, (uint32_t)OnAction_Information); |
| 1150 tMenuEdit_select(StMSYS4_Info); | |
| 838 } | 1151 } |
| 839 | 1152 |
| 840 | 1153 |
| 841 uint8_t OnAction_Information (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | 1154 uint8_t OnAction_Information (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 842 { | 1155 { |
| 1073 | 1386 |
| 1074 setEvent(StMSYS5_LogbookOffset, (uint32_t)OnAction_LogbookOffset); | 1387 setEvent(StMSYS5_LogbookOffset, (uint32_t)OnAction_LogbookOffset); |
| 1075 setEvent(StMSYS5_ResetAll, (uint32_t)OnAction_Confirm); | 1388 setEvent(StMSYS5_ResetAll, (uint32_t)OnAction_Confirm); |
| 1076 setEvent(StMSYS5_ResetDeco, (uint32_t)OnAction_Confirm); | 1389 setEvent(StMSYS5_ResetDeco, (uint32_t)OnAction_Confirm); |
| 1077 setEvent(StMSYS5_Reboot, (uint32_t)OnAction_Confirm); | 1390 setEvent(StMSYS5_Reboot, (uint32_t)OnAction_Confirm); |
| 1078 setEvent(StMSYS5_Maintenance, (uint32_t)OnAction_Confirm); | 1391 setEvent(StMSYS5_Maintenance, (uint32_t)OnAction_Maintenance); |
| 1079 #ifndef RESETLOGBLOCK | 1392 #ifndef RESETLOGBLOCK |
| 1080 setEvent(StMSYS5_ResetLogbook, (uint32_t)OnAction_Confirm); | 1393 setEvent(StMSYS5_ResetLogbook, (uint32_t)OnAction_Confirm); |
| 1081 #else | 1394 #else |
| 1082 setEvent(StMSYS5_ResetLogbook, (uint32_t)OnAction_Nothing); | 1395 setEvent(StMSYS5_ResetLogbook, (uint32_t)OnAction_Nothing); |
| 1083 #endif | 1396 #endif |
| 1148 text[1] = TXT2BYTE_ResetLogbook; | 1461 text[1] = TXT2BYTE_ResetLogbook; |
| 1149 write_field_button(editIdOfCaller, 30, 800, ME_Y_LINE2, &FontT48, text); | 1462 write_field_button(editIdOfCaller, 30, 800, ME_Y_LINE2, &FontT48, text); |
| 1150 setEvent(StMSYS5_Exit, (uint32_t)OnAction_Exit); | 1463 setEvent(StMSYS5_Exit, (uint32_t)OnAction_Exit); |
| 1151 setEvent(editIdOfCaller, (uint32_t)OnAction_ResetLogbook); | 1464 setEvent(editIdOfCaller, (uint32_t)OnAction_ResetLogbook); |
| 1152 break; | 1465 break; |
| 1153 | 1466 } |
| 1154 case StMSYS5_Maintenance: | 1467 |
| 1155 case StMSYS5_SetBattCharge: | 1468 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); |
| 1156 case StMSYS5_SetSampleIndx: | 1469 } |
| 1470 | |
| 1471 void openEdit_Maintenance(void) | |
| 1472 { | |
| 1473 char text[32]; | |
| 1474 unsigned char index = 0; | |
| 1475 SSettings *pSettings = settingsGetPointer(); | |
| 1476 SSensorDataDiveO2* pDiveO2Data = NULL; | |
| 1477 | |
| 1478 resetMenuEdit(CLUT_MenuPageSystem); | |
| 1479 | |
| 1480 text[0] = '\001'; | |
| 1481 text[1] = TXT_2BYTE; | |
| 1482 text[2] = TXT2BYTE_Maintenance; | |
| 1483 text[3] = 0; | |
| 1484 write_topline(text); | |
| 1485 | |
| 1486 text[0] = TXT_2BYTE; | |
| 1487 text[1] = TXT2BYTE_SetFactoryDefaults; | |
| 1488 text[2] = 0; | |
| 1489 write_field_button(StMSYS5_SetFactoryBC, 30, 800, ME_Y_LINE1, &FontT48, text); | |
| 1490 | |
| 1491 | |
| 1492 if(stateRealGetPointer()->lifeData.battery_charge <= 0) | |
| 1493 { | |
| 1157 text[0] = TXT_2BYTE; | 1494 text[0] = TXT_2BYTE; |
| 1158 text[1] = TXT2BYTE_SetFactoryDefaults; | 1495 text[1] = TXT2BYTE_SetBatteryCharge; |
| 1159 text[2] = 0; | 1496 text[2] = 0; |
| 1160 write_field_button(StMSYS5_SetFactoryBC, 30, 800, ME_Y_LINE2, &FontT48, text); | 1497 snprintf(&text[2],10,": %u%%",pSettings->lastKnownBatteryPercentage); |
| 1498 write_field_button(StMSYS5_SetBattCharge, 30, 800, ME_Y_LINE2, &FontT48, text); | |
| 1499 } | |
| 1500 | |
| 1501 if((pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_ANADIG) || (pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_DIGITAL)) | |
| 1502 { | |
| 1503 for (index = 0; index < 3; index++) | |
| 1504 { | |
| 1505 if(pSettings->ext_sensor_map[index] == SENSOR_DIGO2M) | |
| 1506 { | |
| 1507 pDiveO2Data = (SSensorDataDiveO2*)stateRealGetPointer()->lifeData.extIf_sensor_data[index]; | |
| 1508 if(pDiveO2Data->pressure != 0) | |
| 1509 { | |
| 1510 snprintf(text,32,"%c%c (%1.3lf => %1.3f)\016\016Bar",TXT_2BYTE,TXT2BYTE_AdjustAmbPressure,(float)(pDiveO2Data->pressure/1000000.0), | |
| 1511 stateRealGetPointer()->lifeData.pressure_surface_bar); | |
| 1512 | |
| 1513 write_field_button(StMSYS5_AdjustSurfPres, 30, 800, ME_Y_LINE4, &FontT48, text); | |
| 1514 } | |
| 1515 break; | |
| 1516 } | |
| 1517 } | |
| 1518 } | |
| 1161 | 1519 |
| 1162 #ifdef ENABLE_ANALYSE_SAMPLES | 1520 #ifdef ENABLE_ANALYSE_SAMPLES |
| 1163 text[0] = TXT_2BYTE; | 1521 text[0] = TXT_2BYTE; |
| 1164 text[1] = TXT2BYTE_SetSampleIndex; | 1522 text[1] = TXT2BYTE_SetSampleIndex; |
| 1165 text[2] = 0; | 1523 text[2] = 0; |
| 1166 write_field_button(StMSYS5_SetSampleIndx, 30, 800, ME_Y_LINE3, &FontT48, text); | 1524 write_field_button(StMSYS5_SetSampleIndx, 30, 800, ME_Y_LINE4, &FontT48, text); |
| 1167 #endif | 1525 #endif |
| 1168 | 1526 |
| 1169 | 1527 setEvent(StMSYS5_SetFactoryBC, (uint32_t)OnAction_SetFactoryDefaults); |
| 1170 if(stateRealGetPointer()->lifeData.battery_charge <= 0) | 1528 if(stateRealGetPointer()->lifeData.battery_charge <= 0) |
| 1171 { | 1529 { |
| 1172 text[0] = TXT_2BYTE; | 1530 setEvent(StMSYS5_SetBattCharge, (uint32_t)OnAction_SetBatteryCharge); |
| 1173 text[1] = TXT2BYTE_SetBatteryCharge; | 1531 } |
| 1174 text[2] = 0; | 1532 if((pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_ANADIG) || (pSettings->ppo2sensors_source == O2_SENSOR_SOURCE_DIGITAL)) |
| 1175 snprintf(&text[2],10,": %u%%",settingsGetPointer()->lastKnownBatteryPercentage); | 1533 { |
| 1534 if(pDiveO2Data != NULL) | |
| 1535 { | |
| 1536 setEvent(StMSYS5_AdjustSurfPres, (uint32_t)OnAction_AdjustSurfacePressure); | |
| 1537 } | |
| 1538 } | |
| 1176 #ifdef ENABLE_ANALYSE_SAMPLES | 1539 #ifdef ENABLE_ANALYSE_SAMPLES |
| 1177 write_field_button(StMSYS5_SetBattCharge, 30, 800, ME_Y_LINE4, &FontT48, text); | 1540 setEvent(StMSYS5_SetSampleIndx, (uint32_t)OnAction_RecoverSampleIdx); |
| 1178 #else | |
| 1179 write_field_button(StMSYS5_SetBattCharge, 30, 800, ME_Y_LINE3, &FontT48, text); | |
| 1180 #endif | 1541 #endif |
| 1181 | 1542 |
| 1182 setEvent(StMSYS5_Exit, (uint32_t)OnAction_Exit); | 1543 |
| 1183 setEvent(StMSYS5_SetFactoryBC, (uint32_t)OnAction_SetFactoryDefaults); | 1544 text[0] = TXT_2BYTE; |
| 1184 #ifdef ENABLE_ANALYSE_SAMPLES | 1545 text[1] = TXT2BYTE_WarnBatteryLow; |
| 1185 setEvent(StMSYS5_SetSampleIndx, (uint32_t)OnAction_RecoverSampleIdx); | 1546 text[2] = 0; |
| 1186 #endif | 1547 snprintf(&text[2],10,": %01.2fV",stateRealGetPointer()->lifeData.battery_voltage); |
| 1187 setEvent(StMSYS5_SetBattCharge, (uint32_t)OnAction_SetBatteryCharge); | 1548 write_label_var( 30, 800, ME_Y_LINE5, &FontT42, text); |
| 1188 } | 1549 |
| 1189 else | 1550 snprintf(&text[0],30,"Code: %X",getLicence()); |
| 1190 { | 1551 write_label_var( 30, 800, ME_Y_LINE6, &FontT42, text); |
| 1191 setEvent(StMSYS5_Exit, (uint32_t)OnAction_Exit); | |
| 1192 setEvent(StMSYS5_SetFactoryBC, (uint32_t)OnAction_SetFactoryDefaults); | |
| 1193 #ifdef ENABLE_ANALYSE_SAMPLES | |
| 1194 setEvent(StMSYS5_SetSampleIndx, (uint32_t)OnAction_RecoverSampleIdx); | |
| 1195 #endif | |
| 1196 } | |
| 1197 // write_field_button(StMSYS5_ScreenTest, 30, 800, ME_Y_LINE3, &FontT48, "Screen Test"); | |
| 1198 // setEvent(StMSYS5_ScreenTest, (uint32_t)OnAction_ScreenTest); | |
| 1199 | |
| 1200 text[0] = TXT_2BYTE; | |
| 1201 text[1] = TXT2BYTE_WarnBatteryLow; | |
| 1202 text[2] = 0; | |
| 1203 snprintf(&text[2],10,": %01.2fV",stateRealGetPointer()->lifeData.battery_voltage); | |
| 1204 write_label_var( 30, 800, ME_Y_LINE5, &FontT42, text); | |
| 1205 | |
| 1206 snprintf(&text[0],30,"Code: %X",getLicence()); | |
| 1207 write_label_var( 30, 800, ME_Y_LINE6, &FontT42, text); | |
| 1208 break; | |
| 1209 | |
| 1210 } | |
| 1211 | 1552 |
| 1212 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | 1553 write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); |
| 1213 } | 1554 } |
| 1214 | 1555 |
| 1215 uint8_t OnAction_LogbookOffset(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | 1556 uint8_t OnAction_LogbookOffset(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1261 { | 1602 { |
| 1262 openEdit_ResetConfirmation(editId); | 1603 openEdit_ResetConfirmation(editId); |
| 1263 return UNSPECIFIC_RETURN; | 1604 return UNSPECIFIC_RETURN; |
| 1264 } | 1605 } |
| 1265 | 1606 |
| 1607 uint8_t OnAction_Maintenance (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1608 { | |
| 1609 openEdit_Maintenance(); | |
| 1610 return UNSPECIFIC_RETURN; | |
| 1611 } | |
| 1612 | |
| 1266 uint8_t OnAction_RebootRTE (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | 1613 uint8_t OnAction_RebootRTE (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1267 { | 1614 { |
| 1268 MX_SmallCPU_Reset_To_Standard(); | 1615 MX_SmallCPU_Reset_To_Standard(); |
| 1269 return EXIT_TO_MENU; | 1616 return EXIT_TO_MENU; |
| 1270 } | 1617 } |
| 1332 { | 1679 { |
| 1333 setBatteryPercentage(settingsGetPointer()->lastKnownBatteryPercentage); | 1680 setBatteryPercentage(settingsGetPointer()->lastKnownBatteryPercentage); |
| 1334 // setBatteryPercentage(100); | 1681 // setBatteryPercentage(100); |
| 1335 return EXIT_TO_MENU; | 1682 return EXIT_TO_MENU; |
| 1336 } | 1683 } |
| 1684 | |
| 1685 uint8_t OnAction_AdjustSurfacePressure (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | |
| 1686 { | |
| 1687 SSensorDataDiveO2* pDiveO2Data; | |
| 1688 const SDiveState* pDiveState = stateRealGetPointer(); | |
| 1689 SSettings* pSettings = settingsGetPointer(); | |
| 1690 uint8_t index = 0; | |
| 1691 float orgpressure_surface_mbar; | |
| 1692 float DiveO2_mbar; | |
| 1693 int8_t newOffset_mbar = 0; | |
| 1694 | |
| 1695 | |
| 1696 char text[32]; | |
| 1697 | |
| 1698 | |
| 1699 | |
| 1700 for (index = 0; index < 3; index++) | |
| 1701 { | |
| 1702 if(settingsGetPointer()->ext_sensor_map[index] == SENSOR_DIGO2M) | |
| 1703 { | |
| 1704 pDiveO2Data = (SSensorDataDiveO2*)stateRealGetPointer()->lifeData.extIf_sensor_data[index]; | |
| 1705 DiveO2_mbar = (pDiveO2Data->pressure/1000.0); | |
| 1706 | |
| 1707 orgpressure_surface_mbar = (pDiveState->lifeData.pressure_surface_bar * 1000) - (settingsGetPointer()->offsetPressure_mbar); | |
| 1708 newOffset_mbar = DiveO2_mbar - orgpressure_surface_mbar; | |
| 1709 | |
| 1710 if(fabs(orgpressure_surface_mbar + ((float)newOffset_mbar) - DiveO2_mbar) > 0.5) /* there might be a rounding difference => compensate */ | |
| 1711 { | |
| 1712 if((orgpressure_surface_mbar + ((float)newOffset_mbar)) - (pDiveO2Data->pressure/1000.0) > 0.0) | |
| 1713 { | |
| 1714 newOffset_mbar -=1; | |
| 1715 } | |
| 1716 else | |
| 1717 { | |
| 1718 newOffset_mbar +=1; | |
| 1719 } | |
| 1720 } | |
| 1721 | |
| 1722 pSettings->offsetPressure_mbar = newOffset_mbar; | |
| 1723 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); | |
| 1724 tMenuEdit_newButtonText(StMSYS5_AdjustSurfPres,text); | |
| 1725 break; | |
| 1726 } | |
| 1727 } | |
| 1728 | |
| 1729 return UNSPECIFIC_RETURN; | |
| 1730 } | |
| 1731 | |
| 1337 | 1732 |
| 1338 #ifdef SCREENTEST | 1733 #ifdef SCREENTEST |
| 1339 uint8_t OnAction_ScreenTest (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) | 1734 uint8_t OnAction_ScreenTest (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) |
| 1340 { | 1735 { |
| 1341 static uint8_t FrameCount = 1; // 0 is invisible frame | 1736 static uint8_t FrameCount = 1; // 0 is invisible frame |
