Mercurial > public > ostc4
annotate Discovery/Src/tMenuSystem.c @ 1007:65d35e66efb9 GasConsumption
Improve compass calibration dialog:
The previous calibration dialog showed some "magic" numbers and a 60 second count down. The new version is trying to guide the user through the calibration process: first rotate pitch, then roll and at last yaw angle. A step to the next angle is taken when enough data per angle is collected (change from red to green). To enable the yaw visualization a simple calibration is done while rotating the axis.
The function behind the calibration was not modified => the suggested process can be ignored and the same handling as the with old dialog may be applied. With the new process the dialog may be left early. Anyhow it will still be left after 60 seconds and the fine calibration is performed in the same way as before.
| author | Ideenmodellierer |
|---|---|
| date | Mon, 05 May 2025 21:02:34 +0200 |
| parents | 21142f4fa968 |
| children | 158100a84ebd |
| rev | line source |
|---|---|
| 38 | 1 /////////////////////////////////////////////////////////////////////////////// |
| 2 /// -*- coding: UTF-8 -*- | |
| 3 /// | |
| 4 /// \file Discovery/Src/tMenuSystem.c | |
| 5 /// \brief Main Template file for Menu Page 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 "tMenu.h" | |
| 31 #include "tMenuSystem.h" | |
| 32 #include "tHome.h" // for enum CUSTOMVIEWS and init_t7_compass() | |
| 851 | 33 #include "t7.h" |
| 38 | 34 |
| 379 | 35 static uint8_t customviewsSubpage = 0; |
| 36 | |
| 38 | 37 /* Private function prototypes -----------------------------------------------*/ |
| 38 char customview_TXT2BYTE_helper(uint8_t customViewId); | |
| 39 | |
| 379 | 40 void set_CustomsviewsSubpage(uint8_t page) |
| 41 { | |
| 42 customviewsSubpage = page; | |
| 43 } | |
| 44 | |
| 38 | 45 /* Exported functions --------------------------------------------------------*/ |
| 46 | |
| 47 uint32_t tMSystem_refresh(uint8_t line, char *text, uint16_t *tab, char *subtext) | |
| 48 { | |
| 49 SSettings *data; | |
| 379 | 50 int i; |
| 38 | 51 uint8_t textPointer; |
| 52 uint8_t RTEhigh, RTElow; | |
| 53 RTC_DateTypeDef Sdate; | |
| 54 RTC_TimeTypeDef Stime; | |
| 55 const SDiveState * pStateReal = stateRealGetPointer(); | |
| 56 | |
| 57 data = settingsGetPointer(); | |
| 58 textPointer = 0; | |
| 59 *tab = 300; | |
| 60 *subtext = 0; | |
| 944 | 61 char tmpString[15]; |
| 38 | 62 |
|
815
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
63 resetLineMask(StMSYS); |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
64 |
| 38 | 65 // dive mode |
| 66 if(actual_menu_content != MENU_SURFACE) | |
| 67 { | |
| 68 uint8_t id; | |
| 69 | |
| 379 | 70 for(i=0; i<5;i++) /* fill maximum 5 items and leave last one for sub page selection */ |
| 38 | 71 { |
| 379 | 72 id = cv_changelist[customviewsSubpage * 5 + i]; |
| 73 if(id == CVIEW_END) /* last list item? */ | |
| 74 { | |
| 75 break; | |
| 76 } | |
| 77 else | |
| 78 { | |
| 79 text[textPointer++] = '\006' - CHECK_BIT_THOME(data->cv_configuration,id); | |
| 80 text[textPointer++] = ' '; | |
| 81 textPointer += snprintf(&text[textPointer], 60, | |
| 82 "%c%c\n\r", | |
| 83 TXT_2BYTE, customview_TXT2BYTE_helper(id)); | |
| 84 } | |
| 38 | 85 } |
| 86 | |
| 379 | 87 for(;i<5;i++) /* clear empty lines in case menu shows less than 5 entries */ |
| 88 { | |
| 89 text[textPointer++]='\n'; | |
| 90 text[textPointer++]='\r'; | |
| 91 text[textPointer] = 0; | |
|
815
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
92 switch(i) |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
93 { |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
94 case 0: disableLine(StMSYS_Custom0); |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
95 break; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
96 case 1: disableLine(StMSYS_Custom1); |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
97 break; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
98 case 2: disableLine(StMSYS_Custom2); |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
99 break; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
100 case 3: disableLine(StMSYS_Custom3); |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
101 break; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
102 case 4: disableLine(StMSYS_Custom4); |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
103 break; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
104 default: |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
105 case 5: disableLine(StMSYS_Custom5); |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
106 break; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
107 } |
| 379 | 108 } |
| 109 | |
|
815
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
110 text[textPointer++] = TXT_2BYTE; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
111 text[textPointer++] = TXT2BYTE_ButtonNext; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
112 text[textPointer] = 0; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
805
diff
changeset
|
113 |
| 38 | 114 return StMSYS; |
| 115 } | |
| 116 | |
| 117 // surface mode | |
|
139
decb0461302a
Get version from local memory instead from incoming data
Ideenmodellierer
parents:
138
diff
changeset
|
118 getActualRTEandFONTversion(&RTEhigh,&RTElow,NULL,NULL); |
| 38 | 119 |
| 120 if((RTEhigh == 0xFF) || (RTElow == 0xFF)) | |
| 121 { | |
| 122 RTEhigh = 0; | |
| 123 RTElow = 0; | |
| 124 } | |
| 125 | |
| 126 if((line == 0) || (line == 1)) | |
| 127 { | |
| 128 translateDate(pStateReal->lifeData.dateBinaryFormat, &Sdate); | |
| 129 translateTime(pStateReal->lifeData.timeBinaryFormat, &Stime); | |
| 130 | |
| 944 | 131 text[textPointer++] = TXT_Date; |
| 132 getStringOfFormat_DDMMYY(tmpString,15); | |
| 133 textPointer += snprintf(&text[textPointer], 40,"\016\016 %s ",tmpString); | |
| 134 convertStringOfDate_DDMMYY(tmpString,15,Sdate.Date, Sdate.Month, Sdate.Year); | |
| 135 textPointer += snprintf(&text[textPointer], 40,"\017\t%s ",tmpString); | |
| 38 | 136 |
| 137 textPointer += snprintf(&text[textPointer], 60, | |
| 138 "%02d:%02d:%02d" | |
| 139 "\n\r" | |
| 140 ,Stime.Hours, Stime.Minutes, Stime.Seconds | |
| 141 ); | |
| 142 } | |
| 143 else | |
| 144 { | |
| 145 strcpy(&text[textPointer],"\n\r"); | |
| 146 textPointer += 2; | |
| 147 } | |
| 148 | |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
536
diff
changeset
|
149 if((line == 0) || (line == 3)) |
| 38 | 150 { |
| 151 text[textPointer++] = TXT_Language; | |
| 152 text[textPointer++] = '\t'; | |
| 153 text[textPointer++] = TXT_LanguageName; | |
| 154 text[textPointer++] = '\n'; | |
| 155 text[textPointer++] = '\r'; | |
| 156 text[textPointer] = 0; | |
| 157 } | |
| 158 else | |
| 159 { | |
| 160 strcpy(&text[textPointer],"\n\r"); | |
| 161 textPointer += 2; | |
| 162 } | |
| 163 | |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
536
diff
changeset
|
164 if((line == 0) || (line == 4)) |
| 38 | 165 { |
| 166 text[textPointer++] = TXT_2BYTE; | |
| 167 text[textPointer++] = TXT2BYTE_Layout; | |
| 168 text[textPointer++] = '\t'; | |
| 169 | |
| 170 if(!data->showDebugInfo) | |
| 171 { | |
| 172 text[textPointer++] = TXT_2BYTE; | |
| 173 if(data->nonMetricalSystem == 0) | |
| 174 text[textPointer++] = TXT2BYTE_Units_metric; | |
| 175 else | |
| 176 text[textPointer++] = TXT2BYTE_Units_feet; | |
| 177 | |
| 178 if(data->tX_colorscheme != 0) | |
| 179 { | |
|
536
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
180 text[textPointer++] = ' '; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
181 text[textPointer++] = '/'; |
| 38 | 182 text[textPointer++] = '\027'; |
| 183 text[textPointer++] = ' '; | |
| 184 text[textPointer++] = '0' + data->tX_colorscheme; | |
| 185 text[textPointer++] = '\020'; | |
| 186 } | |
| 187 } | |
| 188 else | |
| 189 { | |
| 190 if(data->nonMetricalSystem == 0) | |
| 191 { | |
| 192 text[textPointer++] = 'm'; | |
|
536
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
193 text[textPointer++] = ' '; |
| 38 | 194 text[textPointer++] = '/'; |
|
536
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
195 text[textPointer++] = ' '; |
| 38 | 196 text[textPointer++] = 'C'; |
|
536
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
197 text[textPointer++] = ' '; |
| 38 | 198 } |
| 199 else | |
| 200 { | |
| 201 text[textPointer++] = 'f'; | |
| 202 text[textPointer++] = 't'; | |
| 203 text[textPointer++] = ' '; | |
| 204 text[textPointer++] = '/'; | |
| 205 text[textPointer++] = ' '; | |
|
536
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
206 text[textPointer++] = 'F'; |
| 38 | 207 text[textPointer++] = ' '; |
|
536
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
208 } |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
209 if(data->tX_colorscheme != 0) |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
210 { |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
211 text[textPointer++] = '/'; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
212 text[textPointer++] = '\027'; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
213 text[textPointer++] = ' '; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
214 text[textPointer++] = '0' + data->tX_colorscheme; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
215 text[textPointer++] = ' '; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
216 text[textPointer++] = '\020'; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
217 } |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
218 text[textPointer++] = '/'; |
| 38 | 219 text[textPointer++] = ' '; |
| 220 text[textPointer++] = 'd'; | |
| 221 text[textPointer++] = 'e'; | |
| 222 text[textPointer++] = 'b'; | |
| 223 text[textPointer++] = 'u'; | |
| 224 text[textPointer++] = 'g'; | |
| 225 } | |
| 226 | |
| 227 text[textPointer++] = '\n'; | |
| 228 text[textPointer++] = '\r'; | |
| 229 text[textPointer] = 0; | |
| 230 } | |
| 231 else | |
| 232 { | |
| 233 strcpy(&text[textPointer],"\n\r"); | |
| 234 textPointer += 2; | |
| 235 } | |
| 236 | |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
536
diff
changeset
|
237 if((line == 0) || (line == 5)) |
| 38 | 238 { |
| 239 text[textPointer++] = TXT_Information; | |
| 240 text[textPointer++] = '\t'; | |
| 241 textPointer += snprintf(&text[textPointer],29,"RTE %u.%u OS %i.%i.%i" | |
| 242 ,RTEhigh | |
| 243 ,RTElow | |
| 244 ,firmwareDataGetPointer()->versionFirst | |
| 245 ,firmwareDataGetPointer()->versionSecond | |
| 246 ,firmwareDataGetPointer()->versionThird | |
| 247 ); | |
| 248 } | |
| 249 strcpy(&text[textPointer],"\n\r"); | |
| 250 textPointer += 2; | |
| 251 | |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
536
diff
changeset
|
252 if((line == 0) || (line == 6)) |
| 38 | 253 { |
| 254 text[textPointer++] = TXT_2BYTE; | |
| 255 text[textPointer++] = TXT2BYTE_ResetMenu; | |
| 256 text[textPointer] = 0; | |
| 257 } | |
| 258 strcpy(&text[textPointer],"\n\r"); | |
| 259 textPointer += 2; | |
| 260 | |
| 261 return StMSYS; | |
| 262 } | |
| 263 | |
| 264 | |
| 265 /* Private functions ---------------------------------------------------------*/ |
