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