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