Mercurial > public > ostc4
annotate Discovery/Src/tMenuSystem.c @ 530:c880907fd1d7
Bugfix: No need to consider surface custom view in count of enabled view:
In early motion control versions the detection was also applied in surface mode (as development support). The condition check is no longer needed because motion control is only applied in dive mode.
author | Ideenmodellierer |
---|---|
date | Tue, 15 Sep 2020 20:54:54 +0200 |
parents | 970d8040c0e3 |
children | 54c5ec8416c4 |
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() | |
33 | |
379 | 34 static uint8_t customviewsSubpage = 0; |
35 | |
38 | 36 /* Private function prototypes -----------------------------------------------*/ |
37 char customview_TXT2BYTE_helper(uint8_t customViewId); | |
38 | |
379 | 39 void set_CustomsviewsSubpage(uint8_t page) |
40 { | |
41 customviewsSubpage = page; | |
42 } | |
43 | |
38 | 44 /* Exported functions --------------------------------------------------------*/ |
45 | |
46 uint32_t tMSystem_refresh(uint8_t line, char *text, uint16_t *tab, char *subtext) | |
47 { | |
48 SSettings *data; | |
379 | 49 int i; |
38 | 50 uint8_t textPointer; |
51 uint8_t dateFormat; | |
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; | |
61 | |
62 // dive mode | |
63 if(actual_menu_content != MENU_SURFACE) | |
64 { | |
65 uint8_t id; | |
66 | |
379 | 67 for(i=0; i<5;i++) /* fill maximum 5 items and leave last one for sub page selection */ |
38 | 68 { |
379 | 69 id = cv_changelist[customviewsSubpage * 5 + i]; |
70 if(id == CVIEW_END) /* last list item? */ | |
71 { | |
72 break; | |
73 } | |
74 else | |
75 { | |
76 text[textPointer++] = '\006' - CHECK_BIT_THOME(data->cv_configuration,id); | |
77 text[textPointer++] = ' '; | |
78 textPointer += snprintf(&text[textPointer], 60, | |
79 "%c%c\n\r", | |
80 TXT_2BYTE, customview_TXT2BYTE_helper(id)); | |
81 } | |
38 | 82 } |
379 | 83 text[textPointer++] = TXT_2BYTE; |
84 text[textPointer++] = TXT2BYTE_ButtonNext; | |
38 | 85 text[textPointer] = 0; |
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; | |
92 } | |
93 | |
38 | 94 return StMSYS; |
95 } | |
96 | |
97 // surface mode | |
139
decb0461302a
Get version from local memory instead from incoming data
Ideenmodellierer
parents:
138
diff
changeset
|
98 getActualRTEandFONTversion(&RTEhigh,&RTElow,NULL,NULL); |
38 | 99 |
100 if((RTEhigh == 0xFF) || (RTElow == 0xFF)) | |
101 { | |
102 RTEhigh = 0; | |
103 RTElow = 0; | |
104 } | |
105 | |
106 if((line == 0) || (line == 1)) | |
107 { | |
108 translateDate(pStateReal->lifeData.dateBinaryFormat, &Sdate); | |
109 translateTime(pStateReal->lifeData.timeBinaryFormat, &Stime); | |
110 | |
111 dateFormat = data->date_format; | |
112 | |
113 textPointer += snprintf(&text[textPointer], 40, | |
114 "Date" | |
115 "\016\016" | |
116 " " | |
117 ); | |
118 | |
119 if(dateFormat == DDMMYY) | |
120 { | |
121 textPointer += snprintf(&text[textPointer], 40, | |
122 "DDMMYY" | |
123 "\017" | |
124 "\t" | |
125 "%02d-%02d-%02d" | |
126 " " | |
127 , Sdate.Date, Sdate.Month, 2000 + Sdate.Year | |
128 ); | |
129 } | |
130 else | |
131 if(dateFormat == MMDDYY) | |
132 { | |
133 textPointer += snprintf(&text[textPointer], 40, | |
134 "MMDDYY" | |
135 "\017" | |
136 "\t" | |
137 "%02d-%02d-%02d" | |
138 " " | |
139 ,Sdate.Month, Sdate.Date, 2000 + Sdate.Year | |
140 ); | |
141 } | |
142 else | |
143 if(dateFormat == YYMMDD) | |
144 { | |
145 textPointer += snprintf(&text[textPointer], 40, | |
146 "YYMMDD" | |
147 "\017" | |
148 "\t" | |
149 "%02d-%02d-%02d" | |
150 " " | |
151 , 2000 + Sdate.Year, Sdate.Month, Sdate.Date | |
152 ); | |
153 } | |
154 | |
155 textPointer += snprintf(&text[textPointer], 60, | |
156 "%02d:%02d:%02d" | |
157 "\n\r" | |
158 ,Stime.Hours, Stime.Minutes, Stime.Seconds | |
159 ); | |
160 } | |
161 else | |
162 { | |
163 strcpy(&text[textPointer],"\n\r"); | |
164 textPointer += 2; | |
165 } | |
166 | |
167 if((line == 0) || (line == 2)) | |
168 { | |
169 text[textPointer++] = TXT_Language; | |
170 text[textPointer++] = '\t'; | |
171 text[textPointer++] = TXT_LanguageName; | |
172 text[textPointer++] = '\n'; | |
173 text[textPointer++] = '\r'; | |
174 text[textPointer] = 0; | |
175 } | |
176 else | |
177 { | |
178 strcpy(&text[textPointer],"\n\r"); | |
179 textPointer += 2; | |
180 } | |
181 | |
182 if((line == 0) || (line == 3)) | |
183 { | |
184 text[textPointer++] = TXT_2BYTE; | |
185 text[textPointer++] = TXT2BYTE_Layout; | |
186 text[textPointer++] = '\t'; | |
187 | |
188 if(!data->showDebugInfo) | |
189 { | |
190 text[textPointer++] = TXT_2BYTE; | |
191 if(data->nonMetricalSystem == 0) | |
192 text[textPointer++] = TXT2BYTE_Units_metric; | |
193 else | |
194 text[textPointer++] = TXT2BYTE_Units_feet; | |
195 | |
196 if(data->tX_colorscheme != 0) | |
197 { | |
198 text[textPointer++] = ' '; | |
199 text[textPointer++] = ' '; | |
200 text[textPointer++] = ' '; | |
201 text[textPointer++] = ' '; | |
202 text[textPointer++] = '\027'; | |
203 text[textPointer++] = '/'; | |
204 text[textPointer++] = ' '; | |
205 text[textPointer++] = '0' + data->tX_colorscheme; | |
206 text[textPointer++] = '\020'; | |
207 } | |
208 } | |
209 else | |
210 { | |
211 if(data->nonMetricalSystem == 0) | |
212 { | |
213 text[textPointer++] = 'm'; | |
214 text[textPointer++] = '/'; | |
215 text[textPointer++] = 'C'; | |
216 } | |
217 else | |
218 { | |
219 text[textPointer++] = 'f'; | |
220 text[textPointer++] = 't'; | |
221 text[textPointer++] = '/'; | |
222 text[textPointer++] = 'F'; | |
223 } | |
224 | |
225 text[textPointer++] = ' '; | |
226 text[textPointer++] = ' '; | |
227 text[textPointer++] = ' '; | |
228 text[textPointer++] = ' '; | |
229 text[textPointer++] = '\027'; | |
230 text[textPointer++] = '/'; | |
231 text[textPointer++] = ' '; | |
232 text[textPointer++] = '0' + data->tX_colorscheme; | |
233 text[textPointer++] = '\020'; | |
234 text[textPointer++] = ' '; | |
235 text[textPointer++] = ' '; | |
236 text[textPointer++] = 'd'; | |
237 text[textPointer++] = 'e'; | |
238 text[textPointer++] = 'b'; | |
239 text[textPointer++] = 'u'; | |
240 text[textPointer++] = 'g'; | |
241 } | |
242 | |
243 text[textPointer++] = '\n'; | |
244 text[textPointer++] = '\r'; | |
245 text[textPointer] = 0; | |
246 } | |
247 else | |
248 { | |
249 strcpy(&text[textPointer],"\n\r"); | |
250 textPointer += 2; | |
251 } | |
252 | |
253 if((line == 0) || (line == 4)) | |
254 { | |
255 text[textPointer++] = TXT_Information; | |
256 text[textPointer++] = '\t'; | |
257 textPointer += snprintf(&text[textPointer],29,"RTE %u.%u OS %i.%i.%i" | |
258 ,RTEhigh | |
259 ,RTElow | |
260 ,firmwareDataGetPointer()->versionFirst | |
261 ,firmwareDataGetPointer()->versionSecond | |
262 ,firmwareDataGetPointer()->versionThird | |
263 ); | |
264 } | |
265 strcpy(&text[textPointer],"\n\r"); | |
266 textPointer += 2; | |
267 | |
520 | 268 if((line == 0) || (line == 5)) |
38 | 269 { |
270 text[textPointer++] = TXT_2BYTE; | |
271 text[textPointer++] = TXT2BYTE_ResetMenu; | |
272 text[textPointer] = 0; | |
273 } | |
274 strcpy(&text[textPointer],"\n\r"); | |
275 textPointer += 2; | |
276 | |
277 return StMSYS; | |
278 } | |
279 | |
280 | |
281 /* Private functions ---------------------------------------------------------*/ |