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