Mercurial > public > ostc4
annotate Discovery/Src/tMenuSystem.c @ 1037:2af07aa38531 GasConsumption
Merge with external development branches:
Some features have been prepared for integration: Profiles, DMA UART on Firmware part, Bluetooth discovery and messges logging for development phase. All these new function are deactivated by compile switch and may be activated using the configuration.h for testing purpose.
| author | Ideenmodellierer |
|---|---|
| date | Mon, 15 Sep 2025 21:12:44 +0200 |
| parents | 158100a84ebd |
| children | 677d293c669f |
| 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 } | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
148 #ifdef ENABLE_SETTING_PROFILES |
| 1027 | 149 if((line == 0) || (line == 2)) |
| 150 { | |
| 151 textPointer += snprintf(&text[textPointer], 40,"%c%c:\t%s\n\r",TXT_2BYTE,TXT2BYTE_Profile,data->profileName[data->activeProfile]); | |
| 152 } | |
| 153 else | |
| 154 { | |
| 155 strcpy(&text[textPointer],"\n\r"); | |
| 156 textPointer += 2; | |
| 157 } | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
158 #endif |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
159 #ifdef ENABLE_SETTING_PROFILES |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
536
diff
changeset
|
160 if((line == 0) || (line == 3)) |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
161 #else |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
162 if((line == 0) || (line == 2)) |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
163 #endif |
| 38 | 164 { |
| 165 text[textPointer++] = TXT_Language; | |
| 166 text[textPointer++] = '\t'; | |
| 167 text[textPointer++] = TXT_LanguageName; | |
| 168 text[textPointer++] = '\n'; | |
| 169 text[textPointer++] = '\r'; | |
| 170 text[textPointer] = 0; | |
| 171 } | |
| 172 else | |
| 173 { | |
| 174 strcpy(&text[textPointer],"\n\r"); | |
| 175 textPointer += 2; | |
| 176 } | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
177 #ifdef ENABLE_SETTING_PROFILES |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
536
diff
changeset
|
178 if((line == 0) || (line == 4)) |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
179 #else |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
180 if((line == 0) || (line == 3)) |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
181 #endif |
| 38 | 182 { |
| 183 text[textPointer++] = TXT_2BYTE; | |
| 184 text[textPointer++] = TXT2BYTE_Layout; | |
| 185 text[textPointer++] = '\t'; | |
| 186 | |
| 187 if(!data->showDebugInfo) | |
| 188 { | |
| 189 text[textPointer++] = TXT_2BYTE; | |
| 190 if(data->nonMetricalSystem == 0) | |
| 191 text[textPointer++] = TXT2BYTE_Units_metric; | |
| 192 else | |
| 193 text[textPointer++] = TXT2BYTE_Units_feet; | |
| 194 | |
| 195 if(data->tX_colorscheme != 0) | |
| 196 { | |
|
536
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
197 text[textPointer++] = ' '; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
198 text[textPointer++] = '/'; |
| 38 | 199 text[textPointer++] = '\027'; |
| 200 text[textPointer++] = ' '; | |
| 201 text[textPointer++] = '0' + data->tX_colorscheme; | |
| 202 text[textPointer++] = '\020'; | |
| 203 } | |
| 204 } | |
| 205 else | |
| 206 { | |
| 207 if(data->nonMetricalSystem == 0) | |
| 208 { | |
| 209 text[textPointer++] = 'm'; | |
|
536
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
210 text[textPointer++] = ' '; |
| 38 | 211 text[textPointer++] = '/'; |
|
536
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
212 text[textPointer++] = ' '; |
| 38 | 213 text[textPointer++] = 'C'; |
|
536
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
214 text[textPointer++] = ' '; |
| 38 | 215 } |
| 216 else | |
| 217 { | |
| 218 text[textPointer++] = 'f'; | |
| 219 text[textPointer++] = 't'; | |
| 220 text[textPointer++] = ' '; | |
| 221 text[textPointer++] = '/'; | |
| 222 text[textPointer++] = ' '; | |
|
536
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
223 text[textPointer++] = 'F'; |
| 38 | 224 text[textPointer++] = ' '; |
|
536
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
225 } |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
226 if(data->tX_colorscheme != 0) |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
227 { |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
228 text[textPointer++] = '/'; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
229 text[textPointer++] = '\027'; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
230 text[textPointer++] = ' '; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
231 text[textPointer++] = '0' + data->tX_colorscheme; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
232 text[textPointer++] = ' '; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
233 text[textPointer++] = '\020'; |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
234 } |
|
54c5ec8416c4
Changed visualization of Depth / temperatur / debugview entry
Ideenmodellierer
parents:
520
diff
changeset
|
235 text[textPointer++] = '/'; |
| 38 | 236 text[textPointer++] = ' '; |
| 237 text[textPointer++] = 'd'; | |
| 238 text[textPointer++] = 'e'; | |
| 239 text[textPointer++] = 'b'; | |
| 240 text[textPointer++] = 'u'; | |
| 241 text[textPointer++] = 'g'; | |
| 242 } | |
| 243 | |
| 244 text[textPointer++] = '\n'; | |
| 245 text[textPointer++] = '\r'; | |
| 246 text[textPointer] = 0; | |
| 247 } | |
| 248 else | |
| 249 { | |
| 250 strcpy(&text[textPointer],"\n\r"); | |
| 251 textPointer += 2; | |
| 252 } | |
| 253 | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
254 #ifdef ENABLE_SETTING_PROFILES |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
536
diff
changeset
|
255 if((line == 0) || (line == 5)) |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
256 #else |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
257 if((line == 0) || (line == 4)) |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
258 #endif |
| 38 | 259 { |
| 260 text[textPointer++] = TXT_Information; | |
| 261 text[textPointer++] = '\t'; | |
| 262 textPointer += snprintf(&text[textPointer],29,"RTE %u.%u OS %i.%i.%i" | |
| 263 ,RTEhigh | |
| 264 ,RTElow | |
| 265 ,firmwareDataGetPointer()->versionFirst | |
| 266 ,firmwareDataGetPointer()->versionSecond | |
| 267 ,firmwareDataGetPointer()->versionThird | |
| 268 ); | |
| 269 } | |
| 270 strcpy(&text[textPointer],"\n\r"); | |
| 271 textPointer += 2; | |
| 272 | |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
273 #ifdef ENABLE_SETTING_PROFILES |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
536
diff
changeset
|
274 if((line == 0) || (line == 6)) |
|
1037
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
275 #else |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
276 if((line == 0) || (line == 5)) |
|
2af07aa38531
Merge with external development branches:
Ideenmodellierer
parents:
1027
diff
changeset
|
277 #endif |
| 38 | 278 { |
| 279 text[textPointer++] = TXT_2BYTE; | |
| 280 text[textPointer++] = TXT2BYTE_ResetMenu; | |
| 281 text[textPointer] = 0; | |
| 282 } | |
| 283 strcpy(&text[textPointer],"\n\r"); | |
| 284 textPointer += 2; | |
| 285 | |
| 286 return StMSYS; | |
| 287 } | |
| 288 | |
| 289 | |
| 290 /* Private functions ---------------------------------------------------------*/ |
