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