Mercurial > public > ostc4
annotate Discovery/Src/tHome.c @ 599:5a8f9126e4cb
Bugfix T3 skip deactivated views:
I previous version the OSTC hangs if only conditional views (like decoplan which is only displayed in case of deco time) are switched. Rootcause was that the select function could never switch to another view because no visible view was available. To avoid this use case a fallback option has been added. In case no other view is available, the current view will be kept. In case no view at all (even no conditional view) is available then a switch to the "None" view will be done independend if it is enabled or not.
T3_Profile: Added functionalty to show max depth and divetime of a profile provided by the replay block.
author | Ideenmodellierer |
---|---|
date | Mon, 04 Jan 2021 21:48:31 +0100 |
parents | 280c11153080 |
children | beeb23d18443 |
rev | line source |
---|---|
38 | 1 /////////////////////////////////////////////////////////////////////////////// |
2 /// -*- coding: UTF-8 -*- | |
3 /// | |
4 /// \file Discovery/Src/tHome.c | |
5 /// \brief Control for Surface and Dive Templates | |
6 /// \author heinrichs weikamp gmbh | |
7 /// \date 10-November-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 "tHome.h" | |
31 | |
32 #include "data_exchange_main.h" // for dataOutGetPointer() | |
33 #include "gfx_fonts.h" | |
34 #include "t3.h" | |
35 #include "t4_tetris.h" | |
36 #include "t5_gauge.h" | |
37 #include "t6_apnea.h" | |
38 #include "t7.h" | |
39 #include "tDebug.h" | |
40 #include "timer.h" // for timer_Stopwatch_Restart | |
41 #include "tMenu.h" | |
42 #include "tMenuEditGasOC.h" // for openEdit_DiveSelectBetterGas() | |
43 #include "tMenuEditSetpoint.h" // for openEdit_DiveSelectBetterSetpoint() | |
44 #include "simulation.h" | |
361
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
289
diff
changeset
|
45 #include "motion.h" |
38 | 46 |
47 /* Private types -------------------------------------------------------------*/ | |
48 | |
49 /* Exported variables --------------------------------------------------------*/ | |
50 _Bool warning_count_high_time = 0; | |
51 _Bool display_count_high_time = 0; | |
52 | |
53 uint8_t errorsInSettings = 0; | |
54 /* Private variables ---------------------------------------------------------*/ | |
55 static uint8_t warning_toogle_count; | |
56 static uint16_t display_toogle_count; | |
57 static uint16_t tHome_tick_count_cview; | |
58 static uint16_t tHome_tick_count_field; | |
576 | 59 static uint16_t tHome_tick_count_o2sens; |
38 | 60 |
379 | 61 const uint8_t cv_changelist[] = {CVIEW_Compass, CVIEW_SummaryOfLeftCorner, CVIEW_Tissues, CVIEW_Profile, CVIEW_EADTime, CVIEW_Gaslist, CVIEW_noneOrDebug, CVIEW_Decolist,CVIEW_sensors,CVIEW_sensors_mV, CVIEW_END}; |
594
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
576
diff
changeset
|
62 const uint8_t cv_changelist_BS[] = {CVIEW_T3_Decostop, CVIEW_sensors, CVIEW_Compass, CVIEW_T3_MaxDepth,CVIEW_T3_StopWatch, CVIEW_T3_TTS, CVIEW_T3_GasList, CVIEW_T3_ppO2andGas, CVIEW_noneOrDebug, |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
576
diff
changeset
|
63 CVIEW_T3_Navigation, CVIEW_T3_DepthData, CVIEW_T3_DecoTTS, |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
576
diff
changeset
|
64 #ifdef ENABLE_T3_PROFILE_VIEW |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
576
diff
changeset
|
65 CVIEW_T3_Profile, |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
576
diff
changeset
|
66 #endif |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
576
diff
changeset
|
67 CVIEW_T3_END}; |
38 | 68 |
69 /* Private function prototypes -----------------------------------------------*/ | |
70 | |
576 | 71 #define AUTORETURN_O2SENS (200u) /* return to sensor view after 20 seconds in case sensor is connected */ |
72 | |
73 | |
38 | 74 /* Exported functions --------------------------------------------------------*/ |
75 | |
76 void set_globalState_tHome(void) | |
77 { | |
78 if(stateUsed->mode == MODE_DIVE) | |
79 set_globalState(StD); | |
80 else | |
81 set_globalState(StS); | |
82 } | |
83 | |
84 | |
85 void tHome_init(void) | |
86 { | |
87 t7_init(); // standard + surface | |
88 t3_init(); // big font | |
89 t4_init(); // game | |
90 t5_init(); // gauge | |
91 t6_init(); // apnea | |
92 } | |
93 | |
94 | |
95 void tHome_init_compass(void) | |
96 { | |
97 init_t7_compass(); | |
98 } | |
99 | |
100 | |
101 void tHome_refresh(void) | |
102 { | |
103 SSettings* pSettings = settingsGetPointer(); | |
104 | |
105 warning_toogle_count++; | |
106 if(warning_toogle_count >= 2* pSettings->warning_blink_dsec) | |
107 warning_toogle_count = 0; | |
108 | |
109 if(warning_toogle_count >= pSettings->warning_blink_dsec) | |
110 warning_count_high_time = 1; | |
111 else | |
112 warning_count_high_time = 0; | |
113 | |
114 | |
115 display_toogle_count++; | |
116 if(display_toogle_count >= 2* pSettings->display_toogle_desc) | |
117 display_toogle_count = 0; | |
118 | |
119 if(display_toogle_count >= pSettings->display_toogle_desc) | |
120 display_count_high_time = 1; | |
121 else | |
122 display_count_high_time = 0; | |
123 | |
124 | |
125 if(pSettings->design == 6) | |
126 t6_refresh(); | |
127 else | |
128 if(pSettings->design == 5) | |
129 t5_refresh(); | |
130 else | |
131 if(pSettings->design == 4) | |
132 t4_refresh(); | |
133 else | |
134 if(pSettings->design == 3) | |
135 t3_refresh(); | |
136 else | |
137 if(pSettings->design == 7) | |
138 t7_refresh(); | |
139 else | |
140 { | |
141 pSettings->design = 7; | |
142 t7_refresh(); | |
143 } | |
144 } | |
145 | |
146 | |
147 void tHome_sleepmode_fun(void) | |
148 { | |
149 t7_refresh_sleepmode_fun(); | |
150 } | |
151 | |
152 | |
153 void tHomeDiveMenuControl(uint8_t sendAction) | |
154 { | |
155 if(sendAction == ACTION_BUTTON_NEXT) | |
156 { | |
157 if(settingsGetPointer()->design == 4) | |
158 return; | |
159 | |
160 switch(get_globalState()) | |
161 { | |
516
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
162 case StD: |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
163 if(settingsGetPointer()->design == 6) |
38 | 164 { |
165 if(is_stateUsedSetToSim()) | |
166 set_globalState(StDSIM1); | |
167 else | |
168 set_globalState(StDQUIT); | |
169 break; | |
170 } | |
171 | |
172 if(settingsGetPointer()->design == 5) | |
173 { | |
174 if(t5_getCustomView() == CVIEW_Compass) | |
175 set_globalState(StDBEAR); | |
176 else | |
177 set_globalState(StDRAVG); | |
178 break; | |
179 } | |
180 | |
516
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
181 if(settingsGetPointer()->design == 3) |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
182 { |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
183 switch(t3_getCustomView()) |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
184 { |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
185 case CVIEW_T3_Navigation: |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
186 case CVIEW_Compass: set_globalState(StDBEAR); |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
187 break; |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
188 case CVIEW_T3_StopWatch: set_globalState(StDRAVG); |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
189 break; |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
190 case CVIEW_T3_GasList: if(stateUsed->warnings.betterGas) |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
191 { |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
192 set_globalState(StDMGAS); |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
193 } |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
194 break; |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
195 default: |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
196 break; |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
197 } |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
198 break; |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
199 } |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
200 |
38 | 201 if(stateUsed->warnings.betterGas) |
202 set_globalState(StDMGAS); | |
203 else | |
204 if(stateUsed->warnings.betterSetpoint) | |
205 set_globalState(StDMSPT); | |
206 else | |
207 set_globalState(StDMENU); | |
208 break; | |
209 | |
210 case StDMGAS: | |
516
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
211 if(settingsGetPointer()->design == 3) |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
212 { |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
213 set_globalState(StD); |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
214 } |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
215 else |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
216 { |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
217 if(stateUsed->warnings.betterSetpoint) |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
218 set_globalState(StDMSPT); |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
219 else |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
220 set_globalState(StDMENU); |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
221 } |
38 | 222 break; |
223 | |
224 case StDMSPT: | |
225 set_globalState(StDMENU); | |
226 break; | |
227 | |
228 case StDMENU: | |
229 if(is_stateUsedSetToSim()) | |
230 set_globalState(StDSIM1); | |
231 else | |
232 set_globalState(StD); | |
233 break; | |
234 | |
235 case StDSIM1: | |
236 set_globalState(StDSIM2); | |
237 break; | |
238 | |
239 case StDSIM2: | |
240 set_globalState(StDSIM3); | |
241 break; | |
242 | |
243 case StDSIM3: | |
244 set_globalState(StDSIM4); | |
245 break; | |
246 | |
247 case StDSIM4: | |
248 set_globalState(StD); | |
249 break; | |
250 | |
516
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
251 case StDBEAR: |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
252 if(settingsGetPointer()->design == 5) |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
253 { |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
254 set_globalState(StDRAVG); |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
255 } |
38 | 256 |
516
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
257 if(settingsGetPointer()->design == 3) |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
258 { |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
259 if(t3_getCustomView() == CVIEW_T3_Navigation) |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
260 { |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
261 set_globalState(StDRAVG); |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
262 } |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
263 else |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
264 { |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
265 set_globalState(StD); |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
266 } |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
267 } |
38 | 268 break; |
516
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
269 case StDRAVG: |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
270 if(settingsGetPointer()->design == 5) |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
271 { |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
272 if(is_stateUsedSetToSim()) |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
273 set_globalState(StDSIM1); |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
274 else |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
275 set_globalState(StD); |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
276 break; |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
277 } |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
278 else |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
279 { |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
280 set_globalState(StD); |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
281 } |
bd66f4910993
Added quick menu function to big font view:
Ideenmodellierer
parents:
505
diff
changeset
|
282 break; |
38 | 283 case StDQUIT: // t6_apnea |
284 set_globalState(StD); | |
285 break; | |
286 | |
287 default: | |
288 set_globalState(StD); | |
289 } | |
290 } | |
291 | |
292 if(sendAction == ACTION_BUTTON_ENTER) | |
293 { | |
294 if(settingsGetPointer()->design == 4) | |
295 return; | |
296 | |
297 switch(get_globalState()) | |
298 { | |
299 case StDMGAS: | |
300 openEdit_DiveSelectBetterGas(); | |
301 set_globalState(StD); | |
302 break; | |
303 case StDMSPT: | |
304 openEdit_DiveSelectBetterSetpoint(); | |
305 set_globalState(StD); | |
306 break; | |
307 | |
308 case StDMENU: | |
309 openMenu_first_page_with_OC_gas_update(); | |
310 break; | |
311 | |
312 case StDSIM1: | |
313 Sim_Quit(); | |
314 break; | |
315 | |
316 case StDSIM2: | |
317 Sim_Ascend(); | |
318 break; | |
319 | |
320 case StDSIM3: | |
321 Sim_Descend(); | |
322 break; | |
323 | |
324 case StDSIM4: | |
325 Sim_Divetime(); | |
326 break; | |
327 | |
328 case StDBEAR: // t5_gauge | |
272
74a8296a2318
cleanup: simplify stateUsed usage
Jan Mulder <jlmulder@xs4all.nl>
parents:
210
diff
changeset
|
329 stateUsedWrite->diveSettings.compassHeading = (uint16_t)stateUsed->lifeData.compass_heading; |
38 | 330 set_globalState(StD); |
331 break; | |
332 | |
333 case StDRAVG: // t5_gauge | |
334 timer_Stopwatch_Restart(); | |
335 set_globalState(StD); | |
336 break; | |
337 | |
338 case StDQUIT: // t6_apnea | |
339 set_globalState(StD); // used to end StDQUIT, is called before everything else because changes are made in the next lines | |
340 if(is_stateUsedSetToSim()) | |
341 Sim_Quit(); | |
342 else | |
343 dataOutGetPointer()->setEndDive = 1; | |
344 break; | |
345 | |
346 default: | |
347 break; | |
348 } | |
349 } | |
350 } | |
351 | |
352 | |
353 void tHome_findNextStop(const uint16_t *list, uint8_t *depthOutMeter, uint16_t *lengthOutSeconds) | |
354 { | |
355 uint8_t ptr = DECOINFO_STRUCT_MAX_STOPS - 1; | |
356 | |
357 while(ptr && !list[ptr]) | |
358 ptr--; | |
359 | |
360 *lengthOutSeconds = list[ptr]; | |
361 if(!(*lengthOutSeconds)) | |
362 { | |
363 *depthOutMeter = 0; | |
364 } | |
365 else | |
366 if(ptr == 0) | |
367 { | |
368 *depthOutMeter = (uint8_t)((stateUsed->diveSettings.last_stop_depth_bar*10.0f) + 0.1f); | |
369 } | |
370 else | |
371 { | |
372 ptr -= 1; | |
373 *depthOutMeter = (uint8_t)(((stateUsed->diveSettings.input_second_to_last_stop_depth_bar + (stateUsed->diveSettings.input_next_stop_increment_depth_bar * ptr))*10.0f) + 0.1f); | |
374 } | |
375 } | |
376 | |
377 | |
378 void tHome_change_field_button_pressed(void) | |
379 { | |
380 tHome_tick_count_field = 0; | |
576 | 381 tHome_tick_count_o2sens = 0; |
38 | 382 if(settingsGetPointer()->design == 7) |
383 t7_change_field(); | |
384 } | |
385 | |
386 | |
361
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
289
diff
changeset
|
387 void tHome_change_customview_button_pressed(uint8_t action) |
38 | 388 { |
389 tHome_tick_count_cview = 0; | |
576 | 390 tHome_tick_count_o2sens = 0; |
391 | |
38 | 392 if(settingsGetPointer()->design == 7) |
361
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
289
diff
changeset
|
393 t7_change_customview(action); |
38 | 394 else |
395 if(settingsGetPointer()->design == 3) | |
386
39c147e47c1c
Added key direction awarness to t3, t5 and t6 views:
ideenmodellierer
parents:
384
diff
changeset
|
396 t3_change_customview(action); |
38 | 397 else |
398 if(settingsGetPointer()->design == 5) | |
386
39c147e47c1c
Added key direction awarness to t3, t5 and t6 views:
ideenmodellierer
parents:
384
diff
changeset
|
399 t5_change_customview(action); |
38 | 400 else |
401 if(settingsGetPointer()->design == 6) | |
386
39c147e47c1c
Added key direction awarness to t3, t5 and t6 views:
ideenmodellierer
parents:
384
diff
changeset
|
402 t6_change_customview(action); |
38 | 403 } |
404 | |
505 | 405 uint8_t tHome_getNumberOfAvailableCVs(const uint8_t* pcv_list) |
406 { | |
407 uint8_t cnt = 0; | |
408 | |
409 while((pcv_list[cnt] != CVIEW_END) && (pcv_list[cnt] != CVIEW_T3_END)) | |
410 { | |
411 cnt++; | |
412 if (cnt > 100) /* just in case an invalid list has been provided... */ | |
413 { | |
414 break; | |
415 } | |
416 } | |
417 cnt--; /* do not count end token */ | |
418 return cnt; | |
419 } | |
38 | 420 |
421 void tHome_tick(void) | |
422 { | |
423 uint16_t field = settingsGetPointer()->tX_userselectedLeftLowerCornerTimeout; | |
424 uint16_t cview = settingsGetPointer()->tX_customViewTimeout; | |
425 | |
426 if(field) | |
427 { | |
428 tHome_tick_count_field++; | |
429 if(tHome_tick_count_field > (field * 10)) | |
430 { | |
431 tHome_tick_count_field = 0; | |
432 if(settingsGetPointer()->design == 7) | |
433 { | |
434 t7_set_field_to_primary(); | |
435 } | |
436 } | |
437 } | |
438 | |
439 if(cview) | |
440 { | |
441 tHome_tick_count_cview++; | |
442 if(tHome_tick_count_cview > (cview *10)) | |
443 { | |
444 tHome_tick_count_cview = 0; | |
445 if(settingsGetPointer()->design == 7) | |
446 { | |
447 t7_set_customview_to_primary(); | |
448 } | |
541
6fbf7cd391cb
Added default view selection and auto return to view to t3 visualization:
Ideenmodellierer
parents:
516
diff
changeset
|
449 if(settingsGetPointer()->design == 3) |
6fbf7cd391cb
Added default view selection and auto return to view to t3 visualization:
Ideenmodellierer
parents:
516
diff
changeset
|
450 { |
6fbf7cd391cb
Added default view selection and auto return to view to t3 visualization:
Ideenmodellierer
parents:
516
diff
changeset
|
451 t3_set_customview_to_primary(); |
6fbf7cd391cb
Added default view selection and auto return to view to t3 visualization:
Ideenmodellierer
parents:
516
diff
changeset
|
452 } |
38 | 453 } |
454 } | |
576 | 455 |
456 if((stateUsed->mode == MODE_SURFACE) && (stateUsed->diveSettings.ppo2sensors_deactivated != 0x07) && (stateUsed->diveSettings.ccrOption != 0)) | |
457 { | |
458 tHome_tick_count_o2sens++; | |
459 if(tHome_tick_count_o2sens > AUTORETURN_O2SENS) | |
460 { | |
461 tHome_tick_count_o2sens = 0; | |
462 t7_select_customview(CVIEW_sensors); | |
463 } | |
464 } | |
38 | 465 } |
466 | |
467 | |
468 uint32_t tHome_DateCode(RTC_DateTypeDef *dateInput) | |
469 { | |
470 uint32_t answer = 0; | |
471 | |
472 answer = 0; | |
473 answer += (dateInput->Year & 0x7F)<< 9; | |
474 answer += (dateInput->Month & 0x0F)<< 5; | |
475 answer += (dateInput->Date & 0x1F); | |
476 | |
477 return answer; | |
478 } | |
479 | |
480 | |
481 uint8_t tHome_gas_writer(uint8_t oxygen_percentage, uint8_t helium_percentage, char *text) | |
482 { | |
483 if(oxygen_percentage == 100) | |
484 return (uint8_t) snprintf(text,10,"Oxy"); | |
485 else if((oxygen_percentage == 21) && (!helium_percentage)) | |
486 return (uint8_t) snprintf(text,10,"Air"); | |
487 else if(!helium_percentage) | |
488 return (uint8_t) snprintf(text,10,"NX%02i",oxygen_percentage); | |
489 else if((oxygen_percentage + helium_percentage) == 100) | |
490 return (uint8_t) snprintf(text,10,"HX%02i",oxygen_percentage); | |
491 else | |
492 return (uint8_t) snprintf(text,10,"%02i/%02i",oxygen_percentage,helium_percentage); | |
493 } | |
494 | |
495 uint8_t tHome_show_lost_connection_count(GFX_DrawCfgScreen *ScreenToWriteOn) | |
496 { | |
208 | 497 static uint8_t LastKnowRTEState = SPI_RX_STATE_INVALID; |
498 | |
99 | 499 if(!SPI_MIN_ERROR_SHOW) return 0; |
172
c659fda83e44
Minor: Button defaults, release date adjusted, use SPI_SHOW_SYNC_STATS
heinrichsweikamp
parents:
138
diff
changeset
|
500 if(DataEX_lost_connection_count()>=SPI_MIN_ERROR_SHOW && SPI_SHOW_SYNC_STATS){ |
38 | 501 |
99 | 502 char text[64]; |
38 | 503 |
82 | 504 SDataExchangeSlaveToMaster* dataIn=get_dataInPointer(); |
208 | 505 SDataReceiveFromMaster* pDataOut = dataOutGetPointer(); |
82 | 506 |
493
b560e474e319
Added possibility to switch between "classic" bigfont views and a selection with a new information combination
Ideenmodellierer
parents:
386
diff
changeset
|
507 snprintf(text,32,"spi err:\002 %ld/%ld",DataEX_lost_connection_count(),get_num_SPI_CALLBACKS()); |
99 | 508 Gfx_write_label_var(ScreenToWriteOn, 100,300, 0,&FontT24,CLUT_ButtonSymbols,text); |
82 | 509 |
104 | 510 // snprintf(text,32,"header:\002%X%X%X%X",dataIn->header.checkCode[0],dataIn->header.checkCode[1],dataIn->header.checkCode[2],dataIn->header.checkCode[3]); |
511 // Gfx_write_label_var(ScreenToWriteOn, 350,550, 0,&FontT24,CLUT_ButtonSymbols,text); | |
82 | 512 |
208 | 513 //snprintf(text,32,"footer:\002%X%X%X%X",dataIn->footer.checkCode[0],dataIn->footer.checkCode[1],dataIn->footer.checkCode[2],dataIn->footer.checkCode[3]); |
514 | |
515 /* data shifted => ignore received data */ | |
516 if((pDataOut->header.checkCode[SPI_HEADER_INDEX_RX_STATE] == SPI_RX_STATE_SHIFTED) || (pDataOut->header.checkCode[SPI_HEADER_INDEX_RX_STATE] == SPI_RX_STATE_OFFLINE)) | |
517 { | |
518 dataIn->header.checkCode[SPI_HEADER_INDEX_RX_STATE] = LastKnowRTEState; | |
519 } | |
520 else | |
521 { | |
522 LastKnowRTEState =dataIn->header.checkCode[SPI_HEADER_INDEX_RX_STATE]; | |
523 } | |
524 snprintf(text,32,"RX State M|R:\002%X|%X",pDataOut->header.checkCode[SPI_HEADER_INDEX_RX_STATE], dataIn->header.checkCode[SPI_HEADER_INDEX_RX_STATE] ); | |
99 | 525 Gfx_write_label_var(ScreenToWriteOn, 600,800, 0,&FontT24,CLUT_ButtonSymbols,text); |
526 } | |
82 | 527 |
99 | 528 |
529 | |
530 // snprintf(text,32,"cpt:\002%i",get_num_SPI_CALLBACKS()); | |
531 // Gfx_write_label_var(ScreenToWriteOn, 600,800, 90,&FontT24,CLUT_ButtonSymbols,text); | |
82 | 532 |
533 // snprintf(text,10,"i2c:\002%i",get_DataEX_Error_place()); | |
534 // Gfx_write_label_var(ScreenToWriteOn, 600,800, 90,&FontT24,CLUT_ButtonSymbols,text); | |
38 | 535 |
536 return DataEX_lost_connection_count(); | |
537 } |