Mercurial > public > ostc4
annotate Discovery/Src/t7.c @ 899:2225c467f1e9 Evo_2_23
Added data path and visualization for position data:
The GNSS data exchange is now initialized and triggered on a cyclic basis (once a second). RTE verion has been increased because of interface change. For now only the position data is shown in a T7 surface views. The functionality may be switched on/off using the compile switch ENABLE_GNSS.
author | Ideenmodellierer |
---|---|
date | Mon, 30 Sep 2024 21:56:05 +0200 |
parents | f29369fff71e |
children | 46a21ff3f5ab |
rev | line source |
---|---|
38 | 1 /////////////////////////////////////////////////////////////////////////////// |
2 /// -*- coding: UTF-8 -*- | |
3 /// | |
4 /// \file Discovery/Src/t7.c | |
5 /// \brief Main Template file for dive mode 7x | |
6 /// \author Heinrichs Weikamp gmbh | |
7 /// \date 23-April-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 ------------------------------------------------------------------*/ | |
737
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
30 #include <stdlib.h> |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
31 |
38 | 32 #include "t7.h" |
595 | 33 #include "t3.h" |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
34 #include "settings.h" |
38 | 35 #include "data_exchange_main.h" |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
36 #include "data_central.h" |
38 | 37 #include "decom.h" |
38 #include "gfx_fonts.h" | |
39 #include "logbook_miniLive.h" | |
40 #include "math.h" | |
662 | 41 #include "tComm.h" |
38 | 42 #include "tHome.h" |
43 #include "simulation.h" | |
44 #include "timer.h" | |
45 #include "unit.h" | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
46 #include "motion.h" |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
47 #include "configuration.h" |
740
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
48 #include "base.h" |
775
46c6d2380d4e
Add a shortcuts to change the setpoint to the loop to the 'normal' display when diving. It is only shown when diving in CCR mode and on the loop.
heinrichsweikamp
parents:
773
diff
changeset
|
49 #include "tMenuEditSetpoint.h" |
38 | 50 |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
51 #define TIMER_ACTION_DELAY_S 10 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
52 |
38 | 53 /* Private function prototypes -----------------------------------------------*/ |
54 | |
55 void t7_refresh_surface(void); | |
56 void t7_refresh_surface_debugmode(void); | |
57 void t7_refresh_divemode(void); | |
58 void t7_refresh_sleep_design_fun(void); | |
59 void t7_refresh_divemode_userselected_left_lower_corner(void); | |
60 void t7_refresh_customview(void); | |
405 | 61 uint8_t t7_customview_disabled(uint8_t view); |
38 | 62 |
63 void draw_frame(_Bool PluginBoxHeader, _Bool LinesOnTheSides, uint8_t colorBox, uint8_t colorLinesOnTheSide); | |
64 | |
65 void t7_tissues(const SDiveState * pState); | |
66 void t7_compass(uint16_t ActualHeading, uint16_t UserSetHeading); | |
67 void t7_SummaryOfLeftCorner(void); | |
68 void t7_debug(void); | |
69 | |
70 void t7_miniLiveLogProfile(void); | |
71 void t7_logo_OSTC(void); | |
672 | 72 void t7_ChargerView(void); |
38 | 73 |
74 uint8_t t7_test_customview_warnings(void); | |
75 void t7_show_customview_warnings(void); | |
76 | |
77 uint8_t t7_test_customview_warnings_surface_mode(void); | |
78 void t7_show_customview_warnings_surface_mode(void); | |
79 | |
80 uint8_t t7_customtextPrepare(char * text); | |
81 | |
882 | 82 static void t7_drawAcentGraph(uint8_t color); |
83 static uint8_t t7_drawSlowExitGraph(void); | |
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
84 static void t7_showPosition(void); |
882 | 85 |
193
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
86 /* Imported function prototypes ---------------------------------------------*/ |
38 | 87 extern uint8_t write_gas(char *text, uint8_t oxygen, uint8_t helium); |
88 | |
89 /* Exported variables --------------------------------------------------------*/ | |
90 | |
91 /* Private variables ---------------------------------------------------------*/ | |
92 | |
93 GFX_DrawCfgScreen t7screen; | |
94 GFX_DrawCfgScreen t7screenCompass; | |
95 | |
96 /* left 3 fields | |
97 * right 3 fields | |
98 * centered one field on top of customview, one below | |
99 * customview header + customview + warning | |
100 */ | |
101 GFX_DrawCfgWindow t7l1, t7l2, t7l3; | |
102 GFX_DrawCfgWindow t7r1, t7r2, t7r3; | |
103 GFX_DrawCfgWindow t7c1, t7batt, t7c2, t7charge, t7voltage; | |
104 GFX_DrawCfgWindow t7cH, t7cC, t7cW, t7cY0free; | |
105 GFX_DrawCfgWindow t7pCompass; | |
106 GFX_DrawCfgWindow t7surfaceL, t7surfaceR; | |
107 | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
108 uint8_t selection_customview = LLC_Temperature; |
38 | 109 |
110 uint8_t updateNecessary = 0; | |
111 | |
112 typedef struct{ | |
113 uint32_t pointer; | |
114 uint32_t x0; | |
115 uint32_t y0; | |
116 uint32_t width; | |
117 uint32_t height; | |
118 } SBackground; | |
119 | |
120 SBackground background = | |
121 { | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
122 .pointer = 0, |
38 | 123 }; |
124 | |
125 | |
126 /* Private types -------------------------------------------------------------*/ | |
127 | |
882 | 128 typedef enum |
129 { | |
130 SE_INIT = 0, | |
131 SE_ACTIVE, | |
132 SE_END | |
133 } SSlowExitState; | |
134 | |
38 | 135 const uint8_t customviewsSurfaceStandard[] = |
136 { | |
137 // CVIEW_CompassDebug, | |
138 CVIEW_Hello, | |
139 CVIEW_sensors, | |
140 CVIEW_Compass, | |
141 CVIEW_Tissues, | |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
142 CVIEW_Gaslist, |
38 | 143 CVIEW_sensors_mV, |
672 | 144 CVIEW_Charger, |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
145 CVIEW_CcrSummary, |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
146 CVIEW_Timer, |
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
147 #ifdef ENABLE_GNSS |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
148 CVIEW_Position, |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
149 #endif |
38 | 150 CVIEW_END |
151 }; | |
152 | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
153 |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
154 static uint8_t selection_custom_field = LLC_Temperature; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
155 |
837 | 156 const uint8_t *customviewsDive = cv_changelist; |
38 | 157 const uint8_t *customviewsSurface = customviewsSurfaceStandard; |
158 | |
656 | 159 #define TEXTSIZE 30 |
38 | 160 /* offset includes line: 2 = line +1 |
161 * box (line) is 300 px | |
162 * inside is 296 px | |
163 * left of box are 249 px ( 0..248) | |
164 * right of box are 249 px (551 .. 799) | |
165 */ | |
166 | |
167 #define CUSTOMBOX_LINE_LEFT (250) | |
168 #define CUSTOMBOX_LINE_RIGHT (549) | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
169 #define CUSTOMBOX_LINE_TOP (0) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
170 #define CUSTOMBOX_LINE_MIDDLE (142) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
171 #define CUSTOMBOX_LINE_BOTTOM (318) |
38 | 172 #define CUSTOMBOX_INSIDE_OFFSET (2) |
173 #define CUSTOMBOX_OUTSIDE_OFFSET (2) | |
174 #define CUSTOMBOX_SPACE_INSIDE (CUSTOMBOX_LINE_RIGHT + 1 - (CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + CUSTOMBOX_INSIDE_OFFSET)) | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
175 #define TOP_LINE_HIGHT (25) |
38 | 176 |
336
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
177 #define SHOW_AMBIENTE_SURFACE_DELTA (0.02f) |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
178 #define SHOW_AMBIENTE_DEBOUNCE (0.003f) |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
179 |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
180 #define MAX_NUM_SUMMARY_LINES 6 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
181 |
38 | 182 /* Exported functions --------------------------------------------------------*/ |
183 | |
184 void t7_init(void) | |
185 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
186 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
187 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
188 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
189 |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
190 selection_custom_field = LLC_Temperature; |
38 | 191 selection_customview = customviewsSurface[0]; |
192 | |
193 t7screen.FBStartAdress = 0; | |
194 t7screen.ImageHeight = 480; | |
195 t7screen.ImageWidth = 800; | |
196 t7screen.LayerIndex = 1; | |
197 | |
198 t7screenCompass.FBStartAdress = 0; | |
199 t7screenCompass.ImageHeight = 240; | |
200 t7screenCompass.ImageWidth = 1600; | |
201 t7screenCompass.LayerIndex = 0; | |
202 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
203 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
204 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
205 t7l1.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
206 t7l1.WindowNumberOfTextLines = 2; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
207 t7l1.WindowLineSpacing = 19; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
208 t7l1.WindowTab = 100; // vermtl. ohne Verwendung in diesem Fenster |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
209 t7l1.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
210 t7l1.WindowX1 = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
211 t7l1.WindowY0 = 318; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
212 t7l1.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
213 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
214 t7l2.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
215 t7l2.WindowNumberOfTextLines = 2; |
884 | 216 t7l2.WindowLineSpacing = 12; // Abstand von Y0 |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
217 t7l2.WindowTab = 100; // vermtl. ohne Verwendung in diesem Fenster |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
218 t7l2.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
219 t7l2.WindowX1 = t7l1.WindowX1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
220 t7l2.WindowY0 = 142; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
221 t7l2.WindowY1 = t7l1.WindowY0 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
222 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
223 t7l3.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
224 t7l3.WindowNumberOfTextLines = 2; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
225 t7l3.WindowLineSpacing = 58; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
226 t7l3.WindowTab = 100; // vermtl. ohne Verwendung in diesem Fenster |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
227 t7l3.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
228 t7l3.WindowX1 = t7l1.WindowX1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
229 t7l3.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
230 t7l3.WindowY1 = t7l2.WindowY0 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
231 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
232 t7r1.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
233 t7r1.WindowNumberOfTextLines = 2; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
234 t7r1.WindowLineSpacing = t7l1.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
235 t7r1.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
236 t7r1.WindowX0 = 550; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
237 t7r1.WindowX1 = 799; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
238 t7r1.WindowY0 = t7l1.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
239 t7r1.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
240 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
241 t7r2.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
242 t7r2.WindowNumberOfTextLines = 2; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
243 t7r2.WindowLineSpacing = t7l2.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
244 t7r2.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
245 t7r2.WindowX0 = 550; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
246 t7r2.WindowX1 = 799; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
247 t7r2.WindowY0 = t7l2.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
248 t7r2.WindowY1 = t7l2.WindowY1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
249 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
250 t7r3.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
251 t7r3.WindowNumberOfTextLines = 2; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
252 t7r3.WindowLineSpacing = 0;//t7l3.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
253 t7r3.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
254 t7r3.WindowX0 = CUSTOMBOX_LINE_RIGHT + CUSTOMBOX_OUTSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
255 t7r3.WindowX1 = 799; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
256 t7r3.WindowY0 = t7l3.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
257 t7r3.WindowY1 = t7l3.WindowY1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
258 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
259 t7cC.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
260 t7cC.WindowNumberOfTextLines = 3; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
261 t7cC.WindowLineSpacing = 95; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
262 t7cC.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
263 t7cC.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
264 t7cC.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
265 t7cC.WindowY0 = 90; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
266 t7cC.WindowY1 = 434 - 95; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
267 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
268 t7cH.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
269 t7cH.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
270 t7cH.WindowLineSpacing = 95; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
271 t7cH.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
272 t7cH.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
273 t7cH.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
274 t7cH.WindowY0 = 434 - 94; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
275 t7cH.WindowY1 = 434; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
276 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
277 t7cW.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
278 t7cW.WindowNumberOfTextLines = 3; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
279 t7cW.WindowLineSpacing = 95; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
280 t7cW.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
281 t7cW.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
282 t7cW.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
283 t7cW.WindowY0 = 90; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
284 t7cW.WindowY1 = 434 - 95; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
285 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
286 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
287 t7surfaceL.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
288 t7surfaceL.WindowNumberOfTextLines = 9; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
289 t7surfaceL.WindowLineSpacing = 53; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
290 t7surfaceL.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
291 t7surfaceL.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
292 t7surfaceL.WindowX1 = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
293 t7surfaceL.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
294 t7surfaceL.WindowY1 = 480; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
295 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
296 t7surfaceR.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
297 t7surfaceR.WindowNumberOfTextLines = 9; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
298 t7surfaceR.WindowLineSpacing = 53; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
299 t7surfaceR.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
300 t7surfaceR.WindowX0 = CUSTOMBOX_LINE_RIGHT + CUSTOMBOX_OUTSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
301 t7surfaceR.WindowX1 = 800; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
302 t7surfaceR.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
303 t7surfaceR.WindowY1 = 480; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
304 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
305 t7cY0free.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
306 t7cY0free.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
307 t7cY0free.WindowLineSpacing = 95; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
308 t7cY0free.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
309 t7cY0free.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
310 t7cY0free.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
311 t7cY0free.WindowY0 = 90; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
312 t7cY0free.WindowY1 = 434 - 95; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
313 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
314 t7batt.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
315 t7batt.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
316 t7batt.WindowLineSpacing = 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
317 t7batt.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
318 t7batt.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
319 t7batt.WindowX0 = t7batt.WindowX1 - (52+52); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
320 t7batt.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
321 t7batt.WindowY0 = t7batt.WindowY1 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
322 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
323 t7charge.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
324 t7charge.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
325 t7charge.WindowLineSpacing = 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
326 t7charge.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
327 t7charge.WindowX1 = t7batt.WindowX1 - 18; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
328 t7charge.WindowX0 = t7charge.WindowX1 - 14; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
329 t7charge.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
330 t7charge.WindowY0 = t7batt.WindowY1 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
331 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
332 t7voltage.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
333 t7voltage.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
334 t7voltage.WindowLineSpacing = 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
335 t7voltage.WindowTab = 100; |
145 | 336 t7voltage.WindowX0 = t7charge.WindowX0 - 10; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
337 t7voltage.WindowX1 = t7voltage.WindowX0 + (18*3)+ 9; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
338 t7voltage.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
339 t7voltage.WindowY0 = t7batt.WindowY1 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
340 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
341 t7c1.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
342 t7c1.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
343 t7c1.WindowLineSpacing = 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
344 t7c1.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
345 t7c1.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
346 t7c1.WindowX1 = t7batt.WindowX0 - 18; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
347 t7c1.WindowY0 = 435; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
348 t7c1.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
349 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
350 t7c2.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
351 t7c2.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
352 t7c2.WindowLineSpacing = 0; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
353 t7c2.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
354 t7c2.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
355 t7c2.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
356 t7c2.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
357 t7c2.WindowY1 = 69; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
358 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
359 t7pCompass.Image = &t7screenCompass; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
360 t7pCompass.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
361 t7pCompass.WindowLineSpacing = 100; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
362 t7pCompass.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
363 t7pCompass.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
364 t7pCompass.WindowX1 = 1600-1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
365 t7pCompass.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
366 t7pCompass.WindowY1 = 100-1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
367 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
368 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
369 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
370 /* 6 segments (left / right) used to show data during dive */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
371 |
38 | 372 t7l1.Image = &t7screen; |
373 t7l1.WindowNumberOfTextLines = 2; | |
374 t7l1.WindowLineSpacing = 19; // Abstand von Y0 | |
375 t7l1.WindowTab = 100; // vermtl. ohne Verwendung in diesem Fenster | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
376 t7l1.WindowX0 = CUSTOMBOX_LINE_RIGHT + CUSTOMBOX_OUTSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
377 t7l1.WindowX1 = 799; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
378 t7l1.WindowY0 = CUSTOMBOX_LINE_TOP; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
379 t7l1.WindowY1 = 150 + TOP_LINE_HIGHT; |
38 | 380 |
381 t7l2.Image = &t7screen; | |
382 t7l2.WindowNumberOfTextLines = 2; | |
884 | 383 t7l2.WindowLineSpacing = 12; // Abstand von Y0 |
38 | 384 t7l2.WindowTab = 100; // vermtl. ohne Verwendung in diesem Fenster |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
385 t7l2.WindowX0 = t7l1.WindowX0; |
38 | 386 t7l2.WindowX1 = t7l1.WindowX1; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
387 t7l2.WindowY0 = t7l1.WindowY1 + 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
388 t7l2.WindowY1 = t7l2.WindowY0 + 146; |
38 | 389 |
390 t7l3.Image = &t7screen; | |
391 t7l3.WindowNumberOfTextLines = 2; | |
392 t7l3.WindowLineSpacing = 58; // Abstand von Y0 | |
393 t7l3.WindowTab = 100; // vermtl. ohne Verwendung in diesem Fenster | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
394 t7l3.WindowX0 = t7l1.WindowX0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
395 t7l3.WindowX1 = t7l1.WindowX1;; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
396 t7l3.WindowY0 = 479 - 150; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
397 t7l3.WindowY1 = 479; |
38 | 398 |
399 t7r1.Image = &t7screen; | |
400 t7r1.WindowNumberOfTextLines = 2; | |
401 t7r1.WindowLineSpacing = t7l1.WindowLineSpacing; | |
402 t7r1.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
403 t7r1.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
404 t7r1.WindowX1 = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET; |
38 | 405 t7r1.WindowY0 = t7l1.WindowY0; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
406 t7r1.WindowY1 = t7l1.WindowY1; |
38 | 407 |
408 t7r2.Image = &t7screen; | |
409 t7r2.WindowNumberOfTextLines = 2; | |
410 t7r2.WindowLineSpacing = t7l2.WindowLineSpacing; | |
411 t7r2.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
412 t7r2.WindowX0 = t7r1.WindowX0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
413 t7r2.WindowX1 = t7r1.WindowX1; |
38 | 414 t7r2.WindowY0 = t7l2.WindowY0; |
415 t7r2.WindowY1 = t7l2.WindowY1; | |
416 | |
417 t7r3.Image = &t7screen; | |
418 t7r3.WindowNumberOfTextLines = 2; | |
419 t7r3.WindowLineSpacing = 0;//t7l3.WindowLineSpacing; | |
420 t7r3.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
421 t7r3.WindowX0 = t7r1.WindowX0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
422 t7r3.WindowX1 = t7r1.WindowX1; |
38 | 423 t7r3.WindowY0 = t7l3.WindowY0; |
424 t7r3.WindowY1 = t7l3.WindowY1; | |
425 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
426 /* screen for CustomText / serial number */ |
38 | 427 t7cC.Image = &t7screen; |
428 t7cC.WindowNumberOfTextLines = 3; | |
429 t7cC.WindowLineSpacing = 95; // Abstand von Y0 | |
430 t7cC.WindowTab = 100; | |
431 t7cC.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
432 t7cC.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
433 t7cC.WindowY0 = 165; //90; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
434 t7cC.WindowY1 = 415; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
435 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
436 /* used by warning message box */ |
38 | 437 t7cH.Image = &t7screen; |
438 t7cH.WindowNumberOfTextLines = 1; | |
439 t7cH.WindowLineSpacing = 95; // Abstand von Y0 | |
440 t7cH.WindowTab = 100; | |
441 t7cH.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
442 t7cH.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
443 t7cH.WindowY0 = 46; //480 - 434; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
444 t7cH.WindowY1 = 390 - 46;// - 90; //46 + 390; //480 - (434 - 94); //434; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
445 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
446 /* used by warning custom box */ |
38 | 447 t7cW.Image = &t7screen; |
448 t7cW.WindowNumberOfTextLines = 3; | |
449 t7cW.WindowLineSpacing = 95; // Abstand von Y0 | |
450 t7cW.WindowTab = 100; | |
451 t7cW.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
452 t7cW.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
453 t7cW.WindowY0 = 480 - (434 - 90); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
454 t7cW.WindowY1 = 480 - 90; //434 - 95; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
455 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
456 /* time and environment */ |
38 | 457 t7surfaceL.Image = &t7screen; |
458 t7surfaceL.WindowNumberOfTextLines = 9; | |
459 t7surfaceL.WindowLineSpacing = 53; | |
460 t7surfaceL.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
461 t7surfaceL.WindowX0 = CUSTOMBOX_LINE_RIGHT + CUSTOMBOX_OUTSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
462 t7surfaceL.WindowX1 = 799; |
38 | 463 t7surfaceL.WindowY0 = 0; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
464 t7surfaceL.WindowY1 = 479; |
38 | 465 |
466 t7surfaceR.Image = &t7screen; | |
467 t7surfaceR.WindowNumberOfTextLines = 9; | |
468 t7surfaceR.WindowLineSpacing = 53; | |
469 t7surfaceR.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
470 t7surfaceR.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
471 t7surfaceR.WindowX1 = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET; |
38 | 472 t7surfaceR.WindowY0 = 0; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
473 t7surfaceR.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
474 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
475 /* info screen in the middle */ |
38 | 476 t7cY0free.Image = &t7screen; |
477 t7cY0free.WindowNumberOfTextLines = 1; | |
478 t7cY0free.WindowLineSpacing = 95; | |
479 t7cY0free.WindowTab = 100; | |
480 t7cY0free.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
481 t7cY0free.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
482 t7cY0free.WindowY0 = 115; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
483 t7cY0free.WindowY1 = 365; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
484 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
485 /* voltage value (V or %) */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
486 t7voltage.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
487 t7voltage.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
488 t7voltage.WindowLineSpacing = 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
489 t7voltage.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
490 t7voltage.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
491 t7voltage.WindowX1 = t7voltage.WindowX0 + (18*3) +9; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
492 t7voltage.WindowY1 = TOP_LINE_HIGHT; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
493 t7voltage.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
494 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
495 /* battery symbol */ |
38 | 496 t7batt.Image = &t7screen; |
497 t7batt.WindowNumberOfTextLines = 1; | |
498 t7batt.WindowLineSpacing = 10; | |
499 t7batt.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
500 t7batt.WindowX0 = t7voltage.WindowX1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
501 t7batt.WindowX1 = t7batt.WindowX0 + (52); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
502 t7batt.WindowY1 = TOP_LINE_HIGHT; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
503 t7batt.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
504 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
505 /* charger symbol */ |
38 | 506 t7charge.Image = &t7screen; |
507 t7charge.WindowNumberOfTextLines = 1; | |
508 t7charge.WindowLineSpacing = 10; | |
509 t7charge.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
510 t7charge.WindowX1 = t7batt.WindowX0 - 18; |
38 | 511 t7charge.WindowX0 = t7charge.WindowX1 - 14; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
512 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
513 t7charge.WindowY1 = TOP_LINE_HIGHT; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
514 t7charge.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
515 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
516 /* show dive mode OC / CC */ |
38 | 517 t7c1.Image = &t7screen; |
518 t7c1.WindowNumberOfTextLines = 1; | |
519 t7c1.WindowLineSpacing = 10; | |
520 t7c1.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
521 t7c1.WindowX0 = t7batt.WindowX1 + 18; //CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
522 t7c1.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; //t7batt.WindowX1 + 18; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
523 t7c1.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
524 t7c1.WindowY1 = 479 - 435; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
525 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
526 /* Gas warnings and exit Sim*/ |
38 | 527 t7c2.Image = &t7screen; |
528 t7c2.WindowNumberOfTextLines = 1; | |
529 t7c2.WindowLineSpacing = 0; // Abstand von Y0 | |
530 t7c2.WindowTab = 100; | |
531 t7c2.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
532 t7c2.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
533 t7c2.WindowY0 = 480 - 69; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
534 t7c2.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
535 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
536 /* Rotating compass */ |
38 | 537 t7pCompass.Image = &t7screenCompass; |
538 t7pCompass.WindowNumberOfTextLines = 1; | |
539 t7pCompass.WindowLineSpacing = 100; // Abstand von Y0 | |
540 t7pCompass.WindowTab = 100; | |
541 t7pCompass.WindowX0 = 0; | |
542 t7pCompass.WindowX1 = 1600-1; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
543 t7pCompass.WindowY0 = 479 - 75; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
544 t7pCompass.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
545 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
546 } |
38 | 547 |
548 init_t7_compass(); | |
549 } | |
550 | |
551 | |
552 void t7_refresh_sleepmode_fun(void) | |
553 { | |
554 uint32_t oldScreen; | |
555 | |
556 oldScreen = t7screen.FBStartAdress; | |
557 t7screen.FBStartAdress = getFrame(22); | |
558 | |
559 t7_refresh_sleep_design_fun(); | |
560 | |
561 if(get_globalState() == StStop) | |
562 { | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
563 GFX_SetFramesTopBottom(t7screen.FBStartAdress, 0,480); |
38 | 564 } |
565 releaseFrame(22,oldScreen); | |
566 } | |
567 | |
568 | |
569 void t7_refresh(void) | |
570 { | |
571 static uint8_t last_mode = MODE_SURFACE; | |
572 SStateList status; | |
573 get_globalStateList(&status); | |
574 | |
575 t7screen.FBStartAdress = getFrame(22); | |
576 | |
577 background.pointer = 0; | |
578 | |
579 if(stateUsed->mode == MODE_DIVE) | |
580 { | |
837 | 581 /* T7 refresh is usally called at start of dive. Based on divesettings the design will be changed and T7 no longer called */ |
38 | 582 if(stateUsed->diveSettings.diveMode == DIVEMODE_Gauge) |
583 { | |
584 settingsGetPointer()->design = 5; | |
585 releaseAllFramesExcept(22,t7screen.FBStartAdress); | |
586 releaseFrame(22,t7screen.FBStartAdress); | |
587 return; | |
588 } | |
589 else if(stateUsed->diveSettings.diveMode == DIVEMODE_Apnea) | |
590 { | |
591 settingsGetPointer()->design = 6; | |
592 releaseAllFramesExcept(22,t7screen.FBStartAdress); | |
593 releaseFrame(22,t7screen.FBStartAdress); | |
594 return; | |
595 } | |
596 else | |
597 { | |
837 | 598 if(last_mode != MODE_DIVE) |
599 { | |
600 last_mode = MODE_DIVE; | |
601 /* lower left corner primary */ | |
602 selection_custom_field = settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary; | |
603 /* custom view primary OR debug if automatic return is off | T7 is default dive view => also initialize big font view */ | |
604 if((settingsGetPointer()->tX_customViewTimeout == 0) && (settingsGetPointer()->showDebugInfo)) | |
605 { | |
606 selection_customview = CVIEW_noneOrDebug; | |
607 t3_select_customview(CVIEW_noneOrDebug); | |
608 } | |
609 else | |
610 { | |
611 selection_customview = settingsGetPointer()->tX_customViewPrimary; | |
612 } | |
613 t7_change_customview(ACTION_END); | |
614 | |
615 if((settingsGetPointer()->MotionDetection != MOTION_DETECT_OFF)) | |
616 { | |
617 InitMotionDetection(); | |
618 } | |
619 | |
620 if((settingsGetPointer()->extraDisplay == EXTRADISPLAY_BFACTIVE) && ( settingsGetPointer()->design == 7)) | |
621 { | |
622 settingsGetPointer()->design = 3; | |
623 t3_set_customview_to_primary(); | |
624 releaseAllFramesExcept(22,t7screen.FBStartAdress); | |
625 releaseFrame(22,t7screen.FBStartAdress); | |
626 set_globalState(StD); | |
627 return; | |
628 } | |
629 } | |
630 | |
631 if(status.page == PageSurface) | |
632 set_globalState(StD); | |
633 | |
634 t7_refresh_divemode(); | |
635 } | |
38 | 636 } |
637 else // from if(stateUsed->mode == MODE_DIVE) | |
638 { | |
639 if(last_mode != MODE_SURFACE) | |
640 { | |
641 last_mode = MODE_SURFACE; | |
642 selection_customview = customviewsSurface[0]; | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
643 InitMotionDetection(); |
553 | 644 resetFocusState(); |
38 | 645 } |
646 if(status.page == PageDive) | |
647 set_globalState(StS); | |
648 | |
649 if(settingsGetPointer()->showDebugInfo) | |
650 t7_refresh_surface_debugmode(); | |
651 else | |
652 t7_refresh_surface(); | |
653 } | |
654 | |
655 tHome_show_lost_connection_count(&t7screen); | |
656 | |
657 if(status.base == BaseHome) | |
658 { | |
659 if(background.pointer) | |
660 { | |
661 GFX_SetFrameTop(t7screen.FBStartAdress); | |
662 GFX_SetFrameBottom(background.pointer,background.x0 , background.y0, background.width, background.height); | |
663 } | |
664 else | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
665 GFX_SetFramesTopBottom(t7screen.FBStartAdress, 0,480); |
38 | 666 } |
667 | |
668 releaseAllFramesExcept(22,t7screen.FBStartAdress); | |
669 } | |
670 | |
671 /* Private functions ---------------------------------------------------------*/ | |
672 | |
673 void t7_fill_surfacetime_helper(SSurfacetime *outArray, uint32_t inputMinutes, uint32_t inputSeconds) | |
674 { | |
675 inputSeconds += inputMinutes * 60; | |
676 | |
677 outArray->Total = inputSeconds; | |
678 | |
679 outArray->Days = inputSeconds / 86400;// (24*60*60); | |
680 inputSeconds -= 86400 * (uint32_t)outArray->Days; | |
681 | |
682 outArray->Hours = inputSeconds / 3600;// (60*60); | |
683 inputSeconds -= 3600 * (uint32_t)outArray->Hours; | |
684 | |
685 outArray->Minutes = inputSeconds / 60;; | |
686 inputSeconds -= 60 * (uint32_t)outArray->Minutes; | |
687 | |
688 outArray->Seconds = inputSeconds; | |
689 } | |
690 | |
691 void t7_refresh_sleep_design_fun(void) | |
692 { | |
693 static uint16_t state = 0; | |
694 uint16_t ytop = 0; | |
695 | |
696 state +=1; | |
697 if(state > 800) | |
698 state = 1; | |
699 | |
700 if(state > 400) | |
701 ytop = 800 - state; | |
702 else | |
703 ytop = 0 + state; | |
178
d36596281501
Minor: Replace stupid "Sleep Sleep Sleep" message with something more meaningful
heinrichsweikamp
parents:
174
diff
changeset
|
704 Gfx_write_label_var(&t7screen, 300,800, ytop,&FontT48,CLUT_Font020,"Shutting down..."); |
38 | 705 } |
706 | |
707 void t7_refresh_surface(void) | |
708 { | |
336
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
709 static float debounceAmbientPressure = 0; |
672 | 710 static uint8_t lastChargeStatus = 0; |
38 | 711 char text[256]; |
567 | 712 char timeSuffix; |
713 uint8_t hours; | |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
714 uint8_t loop, textIdx; |
38 | 715 uint8_t date[3], year,month,day; |
716 uint32_t color; | |
717 uint8_t customview_warnings = 0; | |
740
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
718 SButtonLock ButtonLockState; |
38 | 719 |
720 RTC_DateTypeDef Sdate; | |
721 RTC_TimeTypeDef Stime; | |
722 RTC_DateTypeDef SdateFirmware; | |
723 | |
724 uint8_t dateNotSet = 0; | |
725 | |
726 uint8_t oxygen_percentage, gasOffset, actualGasID; | |
457 | 727 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
728 uint16_t bottleFirstGas_bar; |
457 | 729 #endif |
38 | 730 point_t start, stop;//, other; |
731 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
732 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
733 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
734 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
735 |
38 | 736 // update in all customview modes |
737 if(DataEX_check_RTE_version__needs_update() || font_update_required()) | |
738 updateNecessary = 1; | |
739 else | |
740 updateNecessary = 0; | |
741 | |
742 /* buttons */ | |
740
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
743 ButtonLockState = get_ButtonLock(); |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
744 if(ButtonLockState == LOCK_OFF) |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
745 { |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
746 text[0] = TXT_2BYTE; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
747 text[1] = TXT2BYTE_ButtonLogbook; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
748 text[2] = 0; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
749 write_content_simple(&t7screen, 0, 799, 479-TOP_LINE_HIGHT, &FontT24,text,CLUT_ButtonSurfaceScreen); |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
750 |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
751 text[0] = '\001'; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
752 text[1] = TXT_2BYTE; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
753 text[2] = TXT2BYTE_ButtonView; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
754 text[3] = 0; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
755 write_content_simple(&t7screen, 0, 799, 479-TOP_LINE_HIGHT, &FontT24,text,CLUT_ButtonSurfaceScreen); |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
756 |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
757 text[0] = '\002'; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
758 text[1] = TXT_2BYTE; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
759 text[2] = TXT2BYTE_ButtonMenu; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
760 text[3] = 0; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
761 write_content_simple(&t7screen, 0, 799, 479-TOP_LINE_HIGHT, &FontT24,text,CLUT_ButtonSurfaceScreen); |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
762 } |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
763 else |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
764 { |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
765 switch(ButtonLockState) |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
766 { |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
767 default: |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
768 case LOCK_1: snprintf(text,255,"\a\001 "); |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
769 break; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
770 case LOCK_2: snprintf(text,255,"\a\002 "); |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
771 break; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
772 case LOCK_3: snprintf(text,255,"\a "); |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
773 break; |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
774 } |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
775 write_content_simple(&t7screen, 0, 799, 479-TOP_LINE_HIGHT, &FontT24,text,CLUT_ButtonSurfaceScreen); |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
776 // GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); |
5078da3845c0
Added button lock after wakeup in surface mode:
Ideenmodellierer
parents:
737
diff
changeset
|
777 } |
38 | 778 /* was power on reset */ |
779 //..... | |
780 /* removed hw 160802 in V1.1.1 | |
781 if(errorsInSettings) | |
782 { | |
783 sprintf(text,"Settings: %u",errorsInSettings); | |
784 GFX_write_string_color(&FontT42,&t7surfaceR,text,4,CLUT_WarningRed); | |
785 } | |
786 else | |
787 */ | |
662 | 788 if(DataEX_was_power_on()) { |
38 | 789 GFX_write_string_color(&FontT42,&t7surfaceR,"cold start",4,CLUT_WarningRed); |
662 | 790 } |
38 | 791 |
792 /* time and date */ | |
793 translateDate(stateUsed->lifeData.dateBinaryFormat, &Sdate); | |
794 translateTime(stateUsed->lifeData.timeBinaryFormat, &Stime); | |
795 | |
796 firmwareGetDate(&SdateFirmware); | |
797 if(tHome_DateCode(&Sdate) < tHome_DateCode(&SdateFirmware)) | |
798 dateNotSet = 1; | |
799 else | |
800 dateNotSet = 0; | |
801 /* | |
802 if(Stime.Seconds % 2) | |
803 snprintf(text,255,"\001%02d:%02d",Stime.Hours,Stime.Minutes); | |
804 else | |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
805 snprintf(text,255,"\001%02d\031:\020%02d",Stime.Hours,Stime.Minutes); |
38 | 806 GFX_write_string(&FontT54,&t7surfaceR,text,3); |
807 */ | |
808 // debug version: | |
567 | 809 |
810 if (settingsGetPointer()->amPMTime) | |
811 { | |
812 if (Stime.Hours > 11) | |
813 { | |
814 timeSuffix = 'P'; | |
815 } | |
816 else | |
817 { | |
818 timeSuffix = 'A'; | |
819 } | |
820 | |
821 if (Stime.Hours % 12 == 0) | |
822 { | |
823 hours = 12; | |
824 } | |
825 else | |
826 { | |
827 hours = (Stime.Hours % 12); | |
828 } | |
829 | |
830 if(Stime.Seconds % 2) | |
831 snprintf(text,255,"\001%02d:%02d:%02d\016\016%cM\017",hours,Stime.Minutes,Stime.Seconds,timeSuffix); | |
832 else if(dateNotSet) | |
833 snprintf(text,255,"\001\031%02d:%02d:%02d\016\016%cM\017\020",hours,Stime.Minutes,Stime.Seconds,timeSuffix); | |
834 else | |
835 snprintf(text,255,"\001%02d\031:\020%02d:%02d\016\016%cM\017",hours,Stime.Minutes,Stime.Seconds,timeSuffix); | |
836 GFX_write_string(&FontT48,&t7surfaceR,text,3); | |
837 } | |
38 | 838 else |
567 | 839 { |
840 if(Stime.Seconds % 2) | |
841 snprintf(text,255,"\001%02d:%02d:%02d",Stime.Hours,Stime.Minutes,Stime.Seconds); | |
842 else if(dateNotSet) | |
843 snprintf(text,255,"\001\031%02d:%02d:%02d\020",Stime.Hours,Stime.Minutes,Stime.Seconds); | |
844 else | |
845 snprintf(text,255,"\001%02d\031:\020%02d:%02d",Stime.Hours,Stime.Minutes,Stime.Seconds); | |
846 GFX_write_string(&FontT54,&t7surfaceR,text,3); | |
847 } | |
38 | 848 |
849 if(settingsGetPointer()->date_format == DDMMYY) | |
850 { | |
851 day = 0; | |
852 month = 1; | |
853 year = 2; | |
854 } | |
855 else | |
856 if(settingsGetPointer()->date_format == MMDDYY) | |
857 { | |
858 day = 1; | |
859 month = 0; | |
860 year = 2; | |
861 } | |
862 else | |
863 { | |
864 day = 2; | |
865 month = 1; | |
866 year = 0; | |
867 } | |
868 date[day] = Sdate.Date; | |
869 date[month] = Sdate.Month; | |
870 date[year] = Sdate.Year; | |
871 | |
872 if((Stime.Seconds % 2) || (dateNotSet == 0)) | |
873 snprintf(text,255,"\001%02d.%02d.%02d",date[0],date[1],date[2]); | |
874 else | |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
875 snprintf(text,255,"\001\031%02d.%02d.%02d",date[0],date[1],date[2]); |
38 | 876 |
877 GFX_write_string(&FontT54,&t7surfaceR,text,5); | |
878 | |
879 if(!DataEX_was_power_on() && !errorsInSettings) | |
880 { | |
881 text[0] = '\001'; | |
882 text[1] = '\004'; | |
481
89f6857276f8
Bugfix calculation of string center position:
ideenmodellierer
parents:
477
diff
changeset
|
883 text[2] = '\016'; |
89f6857276f8
Bugfix calculation of string center position:
ideenmodellierer
parents:
477
diff
changeset
|
884 text[3] = '\016'; |
89f6857276f8
Bugfix calculation of string center position:
ideenmodellierer
parents:
477
diff
changeset
|
885 text[4] = TXT_2BYTE; |
89f6857276f8
Bugfix calculation of string center position:
ideenmodellierer
parents:
477
diff
changeset
|
886 text[5] = TXT2BYTE_Sunday; |
89f6857276f8
Bugfix calculation of string center position:
ideenmodellierer
parents:
477
diff
changeset
|
887 text[6] = 0; |
38 | 888 if(Sdate.WeekDay != RTC_WEEKDAY_SUNDAY) |
481
89f6857276f8
Bugfix calculation of string center position:
ideenmodellierer
parents:
477
diff
changeset
|
889 text[5] += Sdate.WeekDay; |
38 | 890 |
891 if(!(Stime.Seconds % 2) && (dateNotSet == 1)) | |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
892 text[1] = '\031'; |
38 | 893 |
481
89f6857276f8
Bugfix calculation of string center position:
ideenmodellierer
parents:
477
diff
changeset
|
894 GFX_write_string(&FontT48,&t7surfaceR,text,4); |
38 | 895 } |
896 | |
897 /* DEBUG uTick Pressure and Compass */ | |
898 /* | |
899 snprintf(text,255,"\001%u",stateRealGetPointer()->pressure_uTick_new - stateRealGetPointer()->pressure_uTick_old); | |
900 GFX_write_string(&FontT42,&t7surfaceR,text,1); | |
901 snprintf(text,255,"\001%u",HAL_GetTick() - stateRealGetPointer()->pressure_uTick_local_new); | |
902 GFX_write_string(&FontT42,&t7surfaceR,text,2); | |
903 | |
904 snprintf(text,255,"\001%u",stateRealGetPointer()->compass_uTick_new - stateRealGetPointer()->compass_uTick_old); | |
905 GFX_write_string(&FontT42,&t7surfaceR,text,6); | |
906 snprintf(text,255,"\001%u",HAL_GetTick() - stateRealGetPointer()->compass_uTick_local_new); | |
907 GFX_write_string(&FontT42,&t7surfaceR,text,7); | |
908 | |
909 static uint32_t bildschirmRefresh = 0; | |
910 snprintf(text,255,"\001%u",HAL_GetTick() - bildschirmRefresh); | |
911 GFX_write_string(&FontT42,&t7surfaceR,text,8); | |
912 bildschirmRefresh = HAL_GetTick(); | |
913 | |
914 static uint16_t bildschirmRefreshCount = 1; | |
915 if(bildschirmRefreshCount>10) | |
916 bildschirmRefreshCount = 1; | |
917 for(int i=0;i<bildschirmRefreshCount;i++) | |
918 text[i] = '.'; | |
919 text[bildschirmRefreshCount++] = 0; | |
920 GFX_write_string(&FontT42,&t7surfaceR,text,4); | |
921 */ | |
922 | |
923 /* noFlyTime or DesaturationTime */ | |
477
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
924 if((stateUsed->lifeData.no_fly_time_minutes) && ((!display_count_high_time) || (stateUsed->lifeData.desaturation_time_minutes == 0))) |
38 | 925 { |
926 SSurfacetime NoFlyTime = {0,0,0,0}; | |
927 t7_fill_surfacetime_helper(&NoFlyTime,stateUsed->lifeData.no_fly_time_minutes, 0); | |
928 | |
929 if(NoFlyTime.Days) | |
930 { | |
931 snprintf(text,30,"\001%02d\016\016d\017 %02d\016\016h\017",NoFlyTime.Days, NoFlyTime.Hours); | |
932 } | |
933 else | |
934 { | |
935 snprintf(text,20,"\001%02d:%02d",NoFlyTime.Hours, NoFlyTime.Minutes); | |
936 } | |
937 | |
938 GFX_write_string(&FontT54,&t7surfaceR,text,7); | |
939 | |
940 text[0] = '\001'; | |
941 text[1] = '\022'; | |
942 text[2] = '\016'; | |
943 text[3] = '\016'; | |
944 text[4] = TXT_2BYTE; | |
945 text[5] = TXT2BYTE_noFly; | |
946 text[6] = 0; | |
947 GFX_write_string(&FontT48,&t7surfaceR,text,6); | |
948 } | |
949 else | |
950 if(stateUsed->lifeData.desaturation_time_minutes) | |
951 { | |
952 SSurfacetime DesatTime = {0,0,0,0}; | |
953 t7_fill_surfacetime_helper(&DesatTime,stateUsed->lifeData.desaturation_time_minutes, 0); | |
954 | |
955 if(DesatTime.Days) | |
956 { | |
957 snprintf(text,30,"\001%02d\016\016d\017 %02d\016\016h\017",DesatTime.Days, DesatTime.Hours); | |
958 } | |
959 else | |
960 { | |
961 snprintf(text,20,"\001%02d:%02d",DesatTime.Hours, DesatTime.Minutes); | |
962 } | |
963 GFX_write_string(&FontT54,&t7surfaceR,text,7); | |
964 | |
965 text[0] = '\001'; | |
966 text[1] = '\022'; | |
967 text[2] = '\016'; | |
968 text[3] = '\016'; | |
969 text[4] = TXT_2BYTE; | |
970 text[5] = TXT2BYTE_Desaturation; | |
971 text[6] = 0; | |
972 GFX_write_string(&FontT48,&t7surfaceR,text,6); | |
973 } | |
974 | |
975 /* Time since last dive */ | |
976 if(stateUsed->lifeData.surface_time_seconds) | |
977 { | |
978 SSurfacetime SurfTime = {0,0,0,0}; | |
979 t7_fill_surfacetime_helper(&SurfTime, 0, stateUsed->lifeData.surface_time_seconds); | |
980 | |
981 if(SurfTime.Days == 0) | |
982 { | |
983 snprintf(text,20,"\001\022%02d:%02d",SurfTime.Hours, SurfTime.Minutes); | |
984 } | |
985 else | |
986 { | |
987 snprintf(text,30,"\001\022%02d\016\016d\017 %02d\016\016h\017",SurfTime.Days, SurfTime.Hours); | |
988 } | |
989 | |
990 GFX_write_string(&FontT54,&t7surfaceR,text,2); | |
991 | |
992 | |
993 text[0] = '\001'; | |
994 text[1] = '\022'; | |
995 text[2] = '\016'; | |
996 text[3] = '\016'; | |
997 text[4] = TXT_2BYTE; | |
998 text[5] = TXT2BYTE_TimeSinceLastDive; | |
999 text[6] = 0; | |
1000 GFX_write_string(&FontT48,&t7surfaceR,text,1); | |
1001 } | |
1002 | |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
1003 if (stateUsed->timerState == TIMER_STATE_RUNNING && selection_customview != CVIEW_Timer) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
1004 int timerRemainingS = pSettings->timerDurationS - (current_second() - stateUsed->timerStartedS); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
1005 snprintf(text, 20, "\001%u:%02u", timerRemainingS / 60, timerRemainingS % 60); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
1006 GFX_write_string(&FontT54, &t7surfaceR, text, 8); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
1007 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
1008 |
38 | 1009 /* beta version */ |
1010 if( firmwareDataGetPointer()->versionBeta ) | |
1011 { | |
1012 snprintf(text,255,"\025 BETA"); | |
1013 GFX_write_string(&FontT48,&t7surfaceL,text,2); | |
1014 } | |
1015 | |
1016 /* surface pressure and temperature */ | |
1017 if(stateUsed->sensorErrorsRTE == 0) | |
1018 { | |
336
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1019 if(fabs(stateUsed->lifeData.pressure_surface_bar - stateUsed->lifeData.pressure_ambient_bar) < SHOW_AMBIENTE_SURFACE_DELTA) /* show ambient pressure if difference to surface is significant*/ |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1020 { |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1021 snprintf(text,30,"%01.0f\022\016\016 %s", stateUsed->lifeData.pressure_surface_bar * 1000.0f,TEXT_PRESSURE_UNIT); |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1022 } |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1023 else |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1024 { |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1025 if(fabsf(debounceAmbientPressure - stateUsed->lifeData.pressure_ambient_bar) > SHOW_AMBIENTE_DEBOUNCE) /* there might be a jitter ~+-1 HPa on the pressure signal => update only if delta is bigger */ |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1026 { |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1027 debounceAmbientPressure = stateUsed->lifeData.pressure_ambient_bar; |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1028 } |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1029 snprintf(text,30,"%01.0f\022\016\016 %s", debounceAmbientPressure * 1000.0f,TEXT_PRESSURE_UNIT); |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1030 } |
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1031 |
38 | 1032 GFX_write_string(&FontT48,&t7surfaceL,text,3); |
1033 | |
1034 if(settingsGetPointer()->nonMetricalSystem) | |
1035 snprintf(text,40,"%01.0f\140\022\016\016 fahrenheit",unit_temperature_float(stateUsed->lifeData.temperature_celsius)); | |
1036 else | |
1037 snprintf(text,30,"%01.0f\140\022\016\016 celsius",stateUsed->lifeData.temperature_celsius); | |
1038 GFX_write_string(&FontT48,&t7surfaceL,text,4); | |
1039 } | |
1040 else | |
1041 { | |
103
f5d2f02dc73f
Generalize TEXT of pressure unit
Dmitry Romanov <kitt@bk.ru>
parents:
102
diff
changeset
|
1042 snprintf(text,30,"ERR\022\016\016 %s",TEXT_PRESSURE_UNIT); |
38 | 1043 GFX_write_string(&FontT48,&t7surfaceL,text,3); |
1044 | |
1045 if(settingsGetPointer()->nonMetricalSystem) | |
1046 snprintf(text,40,"ERR\022\016\016 fahrenheit"); | |
1047 else | |
1048 snprintf(text,30,"ERR\022\016\016 celsius"); | |
1049 GFX_write_string(&FontT48,&t7surfaceL,text,4); | |
1050 } | |
1051 | |
1052 | |
1053 /* gas mix and selection */ | |
1054 if((stateUsed->diveSettings.diveMode == DIVEMODE_Gauge) || (stateUsed->diveSettings.diveMode == DIVEMODE_Apnea)) | |
1055 { | |
1056 if(stateUsed->diveSettings.diveMode == DIVEMODE_Gauge) | |
1057 text[0] = TXT_Gauge; | |
1058 else | |
1059 text[0] = TXT_Apnoe; | |
1060 | |
1061 text[1] = 0; | |
1062 GFX_write_string(&FontT48,&t7surfaceL,text,6); | |
1063 } | |
1064 else | |
1065 { | |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1066 textIdx = 0; |
662 | 1067 if(isLoopMode(stateUsed->diveSettings.diveMode)) |
38 | 1068 gasOffset = NUM_OFFSET_DILUENT; |
1069 else | |
1070 gasOffset = 0; | |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1071 |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1072 /* Display gas setup */ |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1073 for(loop = 1; loop <= NUM_GASES; loop++) |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1074 { |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1075 #ifdef ENABLE_UNUSED_GAS_HIDING |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1076 if(stateUsed->diveSettings.gas[loop+gasOffset].note.ub.off) |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1077 { |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1078 text[textIdx++] = '\021'; |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1079 } |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1080 else |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1081 #endif |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1082 if(stateUsed->diveSettings.gas[loop+gasOffset].note.ub.active) |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1083 { |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1084 text[textIdx++]= '\020'; |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1085 } |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1086 else |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1087 { |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1088 text[textIdx++]= '\031'; |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1089 } |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1090 |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1091 text[textIdx++] = '0' + loop; |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1092 text[textIdx++] = '\177'; |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1093 text[textIdx++] = '\177'; |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1094 text[textIdx++] = 10; |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1095 } |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1096 text[textIdx++] = 0; |
38 | 1097 GFX_write_string(&FontT48,&t7surfaceL,text,6); |
1098 | |
1099 | |
1100 oxygen_percentage = 100; | |
1101 oxygen_percentage -= stateUsed->lifeData.actualGas.nitrogen_percentage; | |
1102 oxygen_percentage -= stateUsed->lifeData.actualGas.helium_percentage; | |
1103 | |
1104 tHome_gas_writer(oxygen_percentage,stateUsed->lifeData.actualGas.helium_percentage,&text[0]); | |
1105 GFX_write_string(&FontT48,&t7surfaceL,text,7); | |
1106 | |
1107 actualGasID = stateUsed->lifeData.actualGas.GasIdInSettings; | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
1108 |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1109 #ifdef ENABLE_BOTTLE_SENSOR |
38 | 1110 bottleFirstGas_bar = stateUsed->lifeData.bottle_bar[actualGasID]; |
1111 if(bottleFirstGas_bar) | |
1112 { | |
1113 snprintf(text,255,"%3u\022\016\016 bar",bottleFirstGas_bar); | |
1114 GFX_write_string(&FontT48,&t7surfaceL,text,8); | |
1115 } | |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1116 #endif |
38 | 1117 // after gas name :-) |
1118 if(actualGasID > gasOffset) // security | |
1119 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1120 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1121 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1122 start.y = t7surfaceL.WindowY0 + (3 * t7surfaceL.WindowLineSpacing); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1123 start.x = t7surfaceL.WindowX0 + ((stateUsed->lifeData.actualGas.GasIdInSettings - gasOffset - 1) * 35); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1124 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1125 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1126 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1127 start.y = t7surfaceR.WindowY0 + (3 * t7surfaceR.WindowLineSpacing); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1128 start.x = t7surfaceR.WindowX0 + ((stateUsed->lifeData.actualGas.GasIdInSettings - gasOffset - 1) * 35); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1129 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1130 |
38 | 1131 stop.x = start.x + 25; |
1132 stop.y = start.y + 52; | |
1133 GFX_draw_box2(&t7screen, start, stop, CLUT_Font020, 1); | |
1134 } | |
1135 } | |
1136 | |
1137 /* dive mode */ | |
193
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1138 switch (stateUsed->diveSettings.diveMode) { |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1139 case DIVEMODE_CCR: |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1140 GFX_write_string(&FontT24, &t7c1, "\f\002" "CCR", 0); |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1141 break; |
662 | 1142 case DIVEMODE_PSCR: |
1143 GFX_write_string(&FontT24, &t7c1, "\f\002" "PSCR", 0); | |
1144 break; | |
193
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1145 case DIVEMODE_OC: |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1146 GFX_write_string(&FontT24, &t7c1, "\f\002" "OC", 0); |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1147 break; |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1148 case DIVEMODE_Gauge: |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1149 GFX_write_string(&FontT24, &t7c1, "\f\002" "Gauge", 0); |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1150 break; |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1151 case DIVEMODE_Apnea: |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1152 GFX_write_string(&FontT24, &t7c1, "\f\002" "Apnea", 0); |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1153 break; |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1154 default: |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1155 GFX_write_string(&FontT24, &t7c1, "\f\002" "OC", 0); |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1156 } |
38 | 1157 |
1158 /*battery */ | |
1159 | |
1160 text[0] = '3'; | |
1161 text[1] = '1'; | |
1162 text[2] = '1'; | |
1163 text[3] = '1'; | |
1164 text[4] = '1'; | |
1165 text[5] = '1'; | |
1166 text[6] = '1'; | |
1167 text[7] = '1'; | |
1168 text[8] = '1'; | |
1169 text[9] = '1'; | |
1170 text[10] = '1'; | |
1171 text[11] = '0'; | |
1172 text[12] = 0; | |
1173 | |
1174 for(int i=1;i<=10;i++) | |
1175 { | |
1176 if( stateUsed->lifeData.battery_charge > (9 * i)) | |
1177 text[i] += 1; | |
1178 } | |
1179 | |
1180 if(stateUsed->chargeStatus == CHARGER_off) | |
1181 { | |
1182 if(stateUsed->warnings.lowBattery) | |
1183 { | |
1184 if(warning_count_high_time) | |
1185 { | |
1186 for(int i=1;i<=10;i++) | |
1187 text[i] = '1'; | |
1188 } | |
1189 else | |
1190 { | |
1191 text[1] = '2'; | |
1192 } | |
1193 GFX_write_string_color(&Batt24,&t7batt,text,0,CLUT_WarningRed); | |
1194 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
1195 { | |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1196 #ifdef ALWAYS_SHOW_VOLTAGE |
432
2b4440f75434
show battery percent and voltage and surfacemode. That gives additional
heinrichsweikamp
parents:
405
diff
changeset
|
1197 // show battery percent and voltage |
2b4440f75434
show battery percent and voltage and surfacemode. That gives additional
heinrichsweikamp
parents:
405
diff
changeset
|
1198 snprintf(text,16,"\f\002%u%% \f%.1fV",(uint8_t)stateUsed->lifeData.battery_charge,stateUsed->lifeData.battery_voltage); |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1199 #else |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1200 snprintf(text,16,"\004\025\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1201 #endif |
38 | 1202 if(warning_count_high_time) |
1203 text[0] = '\a'; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1204 GFX_write_string(&FontT24,&t7voltage,text,0); |
38 | 1205 } |
1206 else | |
1207 { | |
1208 snprintf(text,6,"\f%.1fV",stateUsed->lifeData.battery_voltage); | |
1209 GFX_write_string(&FontT24,&t7voltage,text,0); | |
1210 } | |
1211 } | |
1212 else | |
1213 { | |
1214 GFX_write_string_color(&Batt24,&t7batt,text,0,CLUT_BatteryStandard); | |
1215 | |
1216 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
1217 { | |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1218 #ifdef ALWAYS_SHOW_VOLTAGE |
432
2b4440f75434
show battery percent and voltage and surfacemode. That gives additional
heinrichsweikamp
parents:
405
diff
changeset
|
1219 // show battery percent and voltage |
2b4440f75434
show battery percent and voltage and surfacemode. That gives additional
heinrichsweikamp
parents:
405
diff
changeset
|
1220 snprintf(text,16,"\f\002%u%% \f%.1fV",(uint8_t)stateUsed->lifeData.battery_charge,stateUsed->lifeData.battery_voltage); |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1221 #else |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1222 snprintf(text,16,"\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1223 #endif |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1224 GFX_write_string(&FontT24,&t7voltage,text,0); |
38 | 1225 } |
1226 else | |
1227 { | |
1228 snprintf(text,6,"\f%.1fV",stateUsed->lifeData.battery_voltage); | |
1229 GFX_write_string(&FontT24,&t7voltage,text,0); | |
1230 } | |
1231 } | |
1232 } | |
1233 else | |
1234 { | |
672 | 1235 if(lastChargeStatus == CHARGER_off) |
1236 { | |
1237 t7_select_customview(CVIEW_Charger); | |
1238 } | |
1239 | |
38 | 1240 GFX_write_string_color(&Batt24,&t7batt,text,0,CLUT_BatteryCharging); |
1241 | |
1242 switch(stateUsed->chargeStatus) | |
1243 { | |
1244 case CHARGER_running: | |
1245 default: | |
1246 color = CLUT_BatteryStandard; | |
1247 break; | |
1248 case CHARGER_complete: | |
1249 color = CLUT_BatteryCharging; | |
1250 break; | |
1251 case CHARGER_lostConnection: | |
1252 color = CLUT_BatteryProblem; | |
1253 break; | |
1254 } | |
1255 text[0] = '4'; | |
1256 text[1] = 0; | |
1257 GFX_write_string_color(&Batt24,&t7charge,text,0,color); | |
1258 } | |
1259 | |
672 | 1260 lastChargeStatus = stateUsed->chargeStatus; |
38 | 1261 |
1262 | |
1263 customview_warnings = t7_test_customview_warnings_surface_mode(); | |
1264 if(customview_warnings && warning_count_high_time) | |
1265 t7_show_customview_warnings_surface_mode(); | |
1266 else | |
1267 t7_refresh_customview(); | |
1268 draw_frame(0,0, CLUT_pluginboxSurface, CLUT_Font020); | |
1269 } | |
1270 | |
1271 void t7_refresh_surface_debugmode(void) | |
1272 { | |
1273 // could be warning, now just to set RTE variables | |
1274 DataEX_check_RTE_version__needs_update(); | |
1275 | |
1276 | |
1277 char TextL1[4*TEXTSIZE]; | |
1278 uint32_t color; | |
1279 // uint8_t gasIdFirst; | |
1280 SSettings* pSettings = settingsGetPointer(); | |
198
878dc9e0dbc5
cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents:
196
diff
changeset
|
1281 SDataExchangeSlaveToMaster *dataIn = get_dataInPointer(); |
38 | 1282 |
1283 SWindowGimpStyle windowGimp; | |
1284 | |
1285 RTC_DateTypeDef Sdate; | |
1286 RTC_TimeTypeDef Stime; | |
1287 | |
1288 translateDate(stateUsed->lifeData.dateBinaryFormat, &Sdate); | |
1289 translateTime(stateUsed->lifeData.timeBinaryFormat, &Stime); | |
1290 | |
1291 | |
1292 if(stateUsed->data_old__lost_connection_to_slave) | |
1293 { | |
1294 Gfx_write_label_var(&t7screen, 500,800, 0,&FontT42,CLUT_DiveMainLabel,"old"); | |
198
878dc9e0dbc5
cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents:
196
diff
changeset
|
1295 snprintf(TextL1,TEXTSIZE,"%X %X %X %X",dataIn->header.checkCode[0],dataIn->header.checkCode[1],dataIn->header.checkCode[2],dataIn->header.checkCode[3]); |
38 | 1296 Gfx_write_label_var(&t7screen, 500,800, 45,&FontT48,CLUT_Font020,TextL1); |
1297 } | |
1298 else | |
1299 if(DataEX_lost_connection_count()) | |
1300 { | |
336
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1301 snprintf(TextL1,TEXTSIZE,"\002%ld",DataEX_lost_connection_count()); |
38 | 1302 Gfx_write_label_var(&t7screen, 600,800, 45,&FontT48,CLUT_Font020,TextL1); |
1303 } | |
1304 | |
1305 snprintf(TextL1,TEXTSIZE,"\002%i",blockedFramesCount()); | |
1306 Gfx_write_label_var(&t7screen, 600,800, 0,&FontT48,CLUT_Font020,TextL1); | |
1307 | |
1308 if(stateUsed->lifeData.compass_DX_f | stateUsed->lifeData.compass_DY_f | stateUsed->lifeData.compass_DZ_f) | |
1309 { | |
1310 snprintf(TextL1,TEXTSIZE,"X %i",stateUsed->lifeData.compass_DX_f); | |
1311 Gfx_write_label_var(&t7screen, 0,400, 45,&FontT48,CLUT_Font020,TextL1); | |
1312 snprintf(TextL1,TEXTSIZE,"Y %i",stateUsed->lifeData.compass_DY_f); | |
1313 Gfx_write_label_var(&t7screen, 0,400,145,&FontT48,CLUT_Font020,TextL1); | |
1314 snprintf(TextL1,TEXTSIZE,"Z %i",stateUsed->lifeData.compass_DZ_f); | |
1315 Gfx_write_label_var(&t7screen, 0,400,255,&FontT48,CLUT_Font020,TextL1); | |
1316 return; | |
1317 } | |
103
f5d2f02dc73f
Generalize TEXT of pressure unit
Dmitry Romanov <kitt@bk.ru>
parents:
102
diff
changeset
|
1318 snprintf(TextL1,TEXTSIZE,"%01.0f %s",stateUsed->lifeData.pressure_ambient_bar * 1000.0f,TEXT_PRESSURE_UNIT); |
38 | 1319 Gfx_write_label_var(&t7screen, 0,400, 0,&FontT42,CLUT_DiveMainLabel,"Ambient Pressure"); |
1320 Gfx_write_label_var(&t7screen, 0,400, 45,&FontT48,CLUT_Font020,TextL1); | |
1321 | |
1322 snprintf(TextL1,TEXTSIZE,"%01.2f C",stateUsed->lifeData.temperature_celsius); | |
1323 Gfx_write_label_var(&t7screen, 0,400,100,&FontT42,CLUT_DiveMainLabel,"Temperature"); | |
1324 Gfx_write_label_var(&t7screen, 0,400,145,&FontT48,CLUT_Font020,TextL1); | |
1325 | |
1326 snprintf(TextL1,TEXTSIZE,"%03.0f %03.0f %03.0f",stateUsed->lifeData.compass_heading,stateUsed->lifeData.compass_roll,stateUsed->lifeData.compass_pitch); | |
1327 Gfx_write_label_var(&t7screen, 0,400,200,&FontT42,CLUT_DiveMainLabel,"Heading Roll Pitch"); | |
1328 Gfx_write_label_var(&t7screen, 0,400,255,&FontT48,CLUT_Font020,TextL1); | |
1329 | |
103
f5d2f02dc73f
Generalize TEXT of pressure unit
Dmitry Romanov <kitt@bk.ru>
parents:
102
diff
changeset
|
1330 snprintf(TextL1,TEXTSIZE,"%01.0f %s",stateUsed->lifeData.pressure_surface_bar * 1000.0f,TEXT_PRESSURE_UNIT); |
38 | 1331 Gfx_write_label_var(&t7screen, 0,400,310,&FontT42,CLUT_DiveMainLabel,"Surface Pressure"); |
1332 Gfx_write_label_var(&t7screen, 0,400,355,&FontT48,CLUT_Font020,TextL1); | |
1333 | |
1334 // gasIdFirst = stateUsed->lifeData.actualGas.GasIdInSettings; | |
198
878dc9e0dbc5
cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents:
196
diff
changeset
|
1335 snprintf(TextL1,TEXTSIZE,"%u.%u",dataIn->RTE_VERSION_high,dataIn->RTE_VERSION_low); |
38 | 1336 Gfx_write_label_var(&t7screen, 320,500,100,&FontT42,CLUT_DiveMainLabel,"RTE"); |
1337 Gfx_write_label_var(&t7screen, 320,500,145,&FontT48,CLUT_Font020,TextL1); | |
1338 | |
1339 Gfx_write_label_var(&t7screen, 500,800,100,&FontT42,CLUT_DiveMainLabel,"Battery"); | |
1340 snprintf(TextL1,TEXTSIZE,"%01.4f V",stateUsed->lifeData.battery_voltage); | |
1341 Gfx_write_label_var(&t7screen, 500,800,145,&FontT48,CLUT_Font020,TextL1); | |
1342 snprintf(TextL1,TEXTSIZE,"%03.1f %%",stateUsed->lifeData.battery_charge); | |
1343 Gfx_write_label_var(&t7screen, 500,800,200,&FontT48,CLUT_Font020,TextL1); | |
1344 if(stateUsed->chargeStatus != CHARGER_off) | |
1345 { | |
1346 switch(stateUsed->chargeStatus) | |
1347 { | |
1348 case CHARGER_running: | |
1349 default: | |
1350 color = CLUT_BatteryStandard; | |
1351 break; | |
1352 case CHARGER_complete: | |
1353 color = CLUT_BatteryCharging; | |
1354 break; | |
1355 case CHARGER_lostConnection: | |
1356 color = CLUT_BatteryProblem; | |
1357 break; | |
1358 } | |
1359 TextL1[0] = '4'; | |
1360 TextL1[1] = 0; | |
1361 Gfx_write_label_var(&t7screen, 660,800,200,&Batt24,color,TextL1); | |
1362 } | |
1363 | |
1364 extern uint32_t base_tempLightLevel; | |
1365 | |
336
449e9e9632e4
Show actual instead of surface (30minute old) pressure if the actual differs significant (e.g. in plane or during pressure testing)
ideenmodellierer
parents:
315
diff
changeset
|
1366 snprintf(TextL1,TEXTSIZE,"# %u (%ld)",stateUsed->lifeData.ambient_light_level, base_tempLightLevel); |
38 | 1367 Gfx_write_label_var(&t7screen, 401,600,310,&FontT42,CLUT_DiveMainLabel,"Light"); |
1368 Gfx_write_label_var(&t7screen, 401,800,355,&FontT48,CLUT_Font020,TextL1); | |
1369 | |
1370 // snprintf(TextL1,TEXTSIZE,"# %u",stateUsed->lifeData.ambient_light_level); | |
1371 // Gfx_write_label_var(&t7screen, 601,800,310,&FontT42,CLUT_DiveMainLabel,"Light"); | |
1372 // Gfx_write_label_var(&t7screen, 601,800,355,&FontT48,CLUT_Font020,TextL1); | |
1373 | |
348 | 1374 /* show surface pressure state */ |
1375 if(stateUsed->lifeData.bool_temp1 ) | |
1376 { | |
1377 snprintf(TextL1,TEXTSIZE,"stable"); | |
1378 } | |
1379 else | |
1380 { | |
1381 snprintf(TextL1,TEXTSIZE,"unstable"); | |
1382 } | |
1383 Gfx_write_label_var(&t7screen, 500,800,400,&FontT48,CLUT_Font020,TextL1); | |
38 | 1384 |
1385 | |
1386 if(Sdate.Year < 15) | |
1387 { | |
1388 if(warning_count_high_time) | |
1389 { | |
1390 snprintf(TextL1,4*TEXTSIZE,"\017 %02d-%02d-%02d %02d:%02d:%02d", Sdate.Date, Sdate.Month, 2000 + Sdate.Year,Stime.Hours, Stime.Minutes, Stime.Seconds); | |
1391 Gfx_write_label_var(&t7screen, 0,800,420,&FontT48,CLUT_Font020,TextL1); | |
1392 } | |
1393 } | |
1394 else | |
1395 { | |
1396 if(pSettings->customtext[0]) | |
1397 { | |
1398 if(pSettings->customtext[59]) | |
1399 pSettings->customtext[59] = 0; | |
1400 Gfx_write_label_var(&t7screen, 0,400,420,&FontT24,CLUT_Font020,pSettings->customtext); | |
1401 } | |
1402 else | |
1403 { | |
1404 snprintf(TextL1,4*TEXTSIZE,"\017 %02d-%02d-%02d %02d:%02d:%02d Dives: %u", Sdate.Date, Sdate.Month, 2000 + Sdate.Year,Stime.Hours, Stime.Minutes, Stime.Seconds,pSettings->totalDiveCounter ); | |
1405 Gfx_write_label_var(&t7screen, 0,800,420,&FontT48,CLUT_Font020,TextL1); | |
1406 } | |
1407 } | |
1408 | |
1409 windowGimp.left = 400; | |
1410 windowGimp.top = 0; | |
1411 GFX_draw_image_monochrome(&t7screen, windowGimp, &ImgOSTC, 0); | |
1412 } | |
1413 | |
1414 /* CUSTOMVIEW | |
1415 * in the middle of the screen | |
1416 */ | |
1417 | |
1418 uint8_t t7_test_customview_warnings(void) | |
1419 { | |
1420 uint8_t count = 0; | |
1421 | |
1422 count = 0; | |
1423 count += stateUsed->warnings.decoMissed; | |
1424 count += stateUsed->warnings.ppO2Low; | |
1425 count += stateUsed->warnings.ppO2High; | |
1426 //count += stateUsed->warnings.lowBattery; | |
1427 count += stateUsed->warnings.sensorLinkLost; | |
1428 count += stateUsed->warnings.fallback; | |
756 | 1429 count += stateUsed->warnings.co2High; |
477
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1430 #ifdef ENABLE_BOTTLE_SENSOR |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1431 if(stateUsed->warnings.newPressure) |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1432 { |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1433 count++; |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1434 } |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1435 #endif |
857 | 1436 #ifdef HAVE_DEBUG_WARNINGS |
1437 count += stateUsed->warnings.debug; | |
1438 #endif | |
38 | 1439 return count; |
1440 } | |
1441 | |
1442 | |
1443 uint8_t t7_test_customview_warnings_surface_mode(void) | |
1444 { | |
1445 uint8_t count = 0; | |
1446 count = 0; | |
1447 count += stateUsed->cnsHigh_at_the_end_of_dive; | |
1448 count += stateUsed->decoMissed_at_the_end_of_dive; | |
477
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1449 #ifdef ENABLE_BOTTLE_SENSOR |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1450 if(stateUsed->warnings.newPressure) |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1451 { |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1452 count++; |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1453 } |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1454 #endif |
38 | 1455 return count; |
1456 } | |
1457 | |
1458 | |
1459 void t7_show_customview_warnings_surface_mode(void) | |
1460 { | |
1461 char text[256]; | |
1462 uint8_t textpointer, lineFree; | |
1463 | |
1464 text[0] = '\025'; | |
1465 text[1] = '\f'; | |
1466 text[2] = '\001'; | |
1467 text[3] = TXT_Warning; | |
1468 text[4] = 0; | |
1469 GFX_write_string(&FontT42,&t7cH,text,0); | |
1470 | |
1471 textpointer = 0; | |
1472 lineFree = 5; | |
1473 | |
1474 if(stateUsed->decoMissed_at_the_end_of_dive) | |
1475 { | |
1476 text[textpointer++] = TXT_2BYTE; | |
1477 text[textpointer++] = TXT2BYTE_WarnDecoMissed; | |
1478 text[textpointer++] = '\n'; | |
1479 text[textpointer++] = '\r'; | |
1480 text[textpointer] = 0; | |
1481 lineFree--; | |
1482 } | |
1483 | |
1484 if(stateUsed->cnsHigh_at_the_end_of_dive) | |
1485 { | |
1486 text[textpointer++] = TXT_2BYTE; | |
1487 text[textpointer++] = TXT2BYTE_WarnCnsHigh; | |
1488 text[textpointer++] = '\n'; | |
1489 text[textpointer++] = '\r'; | |
1490 text[textpointer] = 0; | |
1491 lineFree--; | |
1492 } | |
477
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1493 #ifdef ENABLE_BOTTLE_SENSOR |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1494 if(stateUsed->warnings.newPressure) |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1495 { |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1496 sprintf(&text[textpointer] ," %u Bar\n", stateUsed->warnings.newPressure); |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1497 textpointer++; |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1498 lineFree--; |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1499 } |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1500 #endif |
38 | 1501 if(textpointer != 0) |
1502 GFX_write_string(&FontT48,&t7cW,text,1); | |
1503 } | |
1504 | |
1505 | |
1506 void t7_show_customview_warnings(void) | |
1507 { | |
1508 char text[256]; | |
1509 uint8_t textpointer, lineFree; | |
857 | 1510 uint8_t index = 0; |
38 | 1511 |
1512 text[0] = '\025'; | |
1513 text[1] = '\f'; | |
1514 text[2] = '\001'; | |
1515 text[3] = TXT_Warning; | |
1516 text[4] = 0; | |
1517 GFX_write_string(&FontT42,&t7cH,text,0); | |
1518 | |
1519 textpointer = 0; | |
1520 lineFree = 5; | |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
1521 |
38 | 1522 if(lineFree && stateUsed->warnings.decoMissed) |
1523 { | |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
1524 text[textpointer++] = '\001'; |
38 | 1525 text[textpointer++] = TXT_2BYTE; |
1526 text[textpointer++] = TXT2BYTE_WarnDecoMissed; | |
1527 text[textpointer++] = '\n'; | |
1528 text[textpointer++] = '\r'; | |
1529 text[textpointer] = 0; | |
1530 lineFree--; | |
1531 } | |
1532 | |
1533 if(lineFree && stateUsed->warnings.fallback) | |
1534 { | |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
1535 text[textpointer++] = '\001'; |
38 | 1536 text[textpointer++] = TXT_2BYTE; |
1537 text[textpointer++] = TXT2BYTE_WarnFallback; | |
1538 text[textpointer++] = '\n'; | |
1539 text[textpointer++] = '\r'; | |
1540 text[textpointer] = 0; | |
1541 lineFree--; | |
1542 } | |
1543 | |
1544 if(lineFree && stateUsed->warnings.ppO2Low) | |
1545 { | |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
1546 text[textpointer++] = '\001'; |
38 | 1547 text[textpointer++] = TXT_2BYTE; |
1548 text[textpointer++] = TXT2BYTE_WarnPPO2Low; | |
1549 text[textpointer++] = '\n'; | |
1550 text[textpointer++] = '\r'; | |
1551 text[textpointer] = 0; | |
1552 lineFree--; | |
1553 } | |
1554 | |
1555 if(lineFree && stateUsed->warnings.ppO2High) | |
1556 { | |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
1557 text[textpointer++] = '\001'; |
38 | 1558 text[textpointer++] = TXT_2BYTE; |
1559 text[textpointer++] = TXT2BYTE_WarnPPO2High; | |
1560 text[textpointer++] = '\n'; | |
1561 text[textpointer++] = '\r'; | |
1562 text[textpointer] = 0; | |
1563 lineFree--; | |
1564 } | |
1565 | |
1566 if(lineFree && stateUsed->warnings.sensorLinkLost) | |
1567 { | |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
1568 text[textpointer++] = '\001'; |
38 | 1569 text[textpointer++] = TXT_2BYTE; |
1570 text[textpointer++] = TXT2BYTE_WarnSensorLinkLost; | |
1571 text[textpointer++] = '\n'; | |
1572 text[textpointer++] = '\r'; | |
1573 text[textpointer] = 0; | |
1574 lineFree--; | |
1575 } | |
477
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1576 #ifdef ENABLE_BOTTLE_SENSOR |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1577 if(stateUsed->warnings.newPressure) |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1578 { |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
1579 text[textpointer++] = '\001'; |
477
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1580 sprintf(&text[textpointer]," %u Bar\n", stateUsed->warnings.newPressure); |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1581 textpointer++; |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1582 lineFree--; |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1583 } |
5e6a612d03b5
Only switch between "no fly" and "desaturation" in case there is desaturation time left:
ideenmodellierer
parents:
457
diff
changeset
|
1584 #endif |
756 | 1585 #ifdef ENABLE_CO2_SUPPORT |
1586 if(lineFree && stateUsed->warnings.co2High) | |
1587 { | |
1588 text[textpointer++] = '\001'; | |
1589 text[textpointer++] = TXT_2BYTE; | |
1590 text[textpointer++] = TXT2BYTE_WarnCO2High; | |
1591 text[textpointer++] = '\n'; | |
1592 text[textpointer++] = '\r'; | |
1593 text[textpointer] = 0; | |
1594 lineFree--; | |
1595 } | |
1596 #endif | |
857 | 1597 #ifdef HAVE_DEBUG_WARNINGS |
1598 if(lineFree && stateUsed->warnings.debug) | |
1599 { | |
1600 for(index=0; index<3; index++) | |
1601 { | |
1602 if(((stateUsed->lifeData.extIf_sensor_map[index] == SENSOR_DIGO2M) && (((SSensorDataDiveO2*)(stateUsed->lifeData.extIf_sensor_data[index]))->status & DVO2_FATAL_ERROR))) | |
1603 { | |
1604 textpointer += snprintf(&text[textpointer],32,"\001Debug: %lx\n",((SSensorDataDiveO2*)(stateUsed->lifeData.extIf_sensor_data[index]))->status); | |
1605 } | |
1606 } | |
1607 lineFree--; | |
1608 } | |
1609 #endif | |
38 | 1610 /* |
1611 if(lineFree && stateUsed->warnings.lowBattery) | |
1612 { | |
1613 text[textpointer++] = TXT_2BYTE; | |
1614 text[textpointer++] = TXT2BYTE_WarnBatteryLow; | |
1615 text[textpointer++] = '\n'; | |
1616 text[textpointer++] = '\r'; | |
1617 text[textpointer] = 0; | |
1618 lineFree--; | |
1619 } | |
1620 */ | |
1621 GFX_write_string(&FontT48,&t7cW,text,1); | |
1622 } | |
1623 | |
1624 | |
1625 void t7_set_customview_to_primary(void) | |
1626 { | |
1627 if(stateUsed->mode == MODE_DIVE) | |
1628 selection_customview = settingsGetPointer()->tX_customViewPrimary; | |
1629 } | |
1630 | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1631 uint8_t t7_GetEnabled_customviews() |
38 | 1632 { |
379 | 1633 int8_t i; |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1634 uint8_t *pViews; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1635 uint8_t increment = 1; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1636 |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1637 uint8_t enabledViewCnt = 0; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1638 uint32_t cv_config = settingsGetPointer()->cv_configuration; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1639 |
530
c880907fd1d7
Bugfix: No need to consider surface custom view in count of enabled view:
Ideenmodellierer
parents:
527
diff
changeset
|
1640 pViews = (uint8_t*)customviewsDive; |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1641 |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1642 while((*pViews != CVIEW_END)) |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1643 { |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1644 increment = 1; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1645 /* check if view is enabled */ |
379 | 1646 i=0; |
1647 do | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1648 { |
379 | 1649 if(*pViews == cv_changelist[i]) |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1650 { |
379 | 1651 if(!CHECK_BIT_THOME(cv_config, cv_changelist[i])) |
1652 { | |
1653 increment = 0; | |
1654 } | |
1655 break; | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1656 } |
379 | 1657 i++; |
1658 } while(cv_changelist[i] != CVIEW_END); | |
1659 if(cv_changelist[i] == CVIEW_END) | |
1660 { | |
1661 increment = 0; | |
1662 } | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1663 if (((*pViews == CVIEW_sensors) || (*pViews == CVIEW_sensors_mV)) && |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
1664 ((stateUsed->diveSettings.ppo2sensors_deactivated == 0x07) || (stateUsed->diveSettings.ccrOption == 0))) |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1665 { |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1666 increment = 0; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1667 } |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1668 |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1669 pViews++; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1670 enabledViewCnt += increment; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1671 } |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1672 return enabledViewCnt; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1673 } |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1674 |
405 | 1675 uint8_t t7_customview_disabled(uint8_t view) |
1676 { | |
1677 uint8_t i = 0; | |
1678 uint8_t cv_disabled = 0; | |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1679 SSettings *settings = settingsGetPointer(); |
405 | 1680 |
1681 while(cv_changelist[i] != CVIEW_END) | |
1682 { | |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1683 if((view == cv_changelist[i]) && !CHECK_BIT_THOME(settings->cv_configuration, cv_changelist[i])) |
405 | 1684 { |
1685 cv_disabled = 1; | |
1686 break; | |
1687 } | |
1688 i++; | |
1689 } | |
1690 | |
1691 if (((view == CVIEW_sensors) || (view == CVIEW_sensors_mV)) && | |
582
64bf41faab83
Show Fallback if no valid sensor value is available:
Ideenmodellierer
parents:
577
diff
changeset
|
1692 ((stateUsed->diveSettings.ppo2sensors_deactivated == 0x07) || (stateUsed->diveSettings.ccrOption == 0) || (stateUsed->warnings.fallback))) |
405 | 1693 { |
1694 cv_disabled = 1; | |
1695 } | |
672 | 1696 |
1697 if ((view == CVIEW_Charger) && (stateUsed->chargeStatus != CHARGER_running) && (stateUsed->chargeStatus != CHARGER_lostConnection)) | |
1698 { | |
1699 cv_disabled = 1; | |
1700 } | |
1701 | |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1702 if (view == CVIEW_CcrSummary && !isLoopMode(settings->dive_mode)) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1703 cv_disabled = 1; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1704 } |
672 | 1705 |
405 | 1706 return cv_disabled; |
1707 } | |
1708 | |
592
f52bc70e380f
MotionCtrl - Sectorview Map sectors directly to custom views:
Ideenmodellierer
parents:
582
diff
changeset
|
1709 uint8_t t7_change_customview(uint8_t action) |
38 | 1710 { |
365
c18aebb03fed
Bugfix: selection of current view not working
ideenmodellierer
parents:
361
diff
changeset
|
1711 uint8_t *pViews; |
662 | 1712 uint8_t *pStartView,*pLastView; |
1713 uint8_t *pCurView = NULL; | |
38 | 1714 _Bool cv_disabled = 0; |
1715 | |
1716 if(stateUsed->mode == MODE_DIVE) | |
374 | 1717 pViews = (uint8_t*)customviewsDive; |
38 | 1718 else |
374 | 1719 pViews = (uint8_t*)customviewsSurface; |
38 | 1720 |
361
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1721 pStartView = pViews; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1722 /* set pointer to currently selected view and count number of entries */ |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1723 while((*pViews != CVIEW_END)) |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1724 { |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1725 if (*pViews == selection_customview) |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1726 { |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1727 pCurView = pViews; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1728 } |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1729 pViews++; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1730 } |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1731 pLastView = pViews; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1732 pViews = pCurView; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1733 |
366 | 1734 do |
1735 { | |
495 | 1736 switch(action) |
1737 { | |
1738 case ACTION_BUTTON_ENTER: | |
1739 case ACTION_PITCH_POS: | |
510
0004704906d0
Display warning in t7 using centered strings
Ideenmodellierer
parents:
495
diff
changeset
|
1740 if(*pViews != CVIEW_END) |
495 | 1741 pViews++; |
510
0004704906d0
Display warning in t7 using centered strings
Ideenmodellierer
parents:
495
diff
changeset
|
1742 if(*pViews == CVIEW_END) |
366 | 1743 { |
1744 pViews = pStartView; | |
1745 } | |
495 | 1746 break; |
1747 case ACTION_PITCH_NEG: | |
1748 if(pViews == pStartView) | |
1749 { | |
1750 pViews = pLastView - 1; | |
1751 } | |
1752 else | |
1753 { | |
1754 pViews--; | |
1755 } | |
1756 break; | |
1757 default: | |
1758 break; | |
1759 } | |
1760 | |
1761 cv_disabled = t7_customview_disabled(*pViews); | |
1762 if((cv_disabled) && (action == ACTION_END)) | |
1763 { | |
1764 action = ACTION_BUTTON_ENTER; | |
1765 } | |
366 | 1766 } while(cv_disabled); |
1767 | |
38 | 1768 selection_customview = *pViews; |
592
f52bc70e380f
MotionCtrl - Sectorview Map sectors directly to custom views:
Ideenmodellierer
parents:
582
diff
changeset
|
1769 return *pViews; |
38 | 1770 } |
1771 | |
577
9bb9a52d6ae5
Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents:
567
diff
changeset
|
1772 void t7_select_customview(uint8_t selectedCustomview) |
9bb9a52d6ae5
Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents:
567
diff
changeset
|
1773 { |
9bb9a52d6ae5
Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents:
567
diff
changeset
|
1774 if(selectedCustomview < CVIEW_END) |
9bb9a52d6ae5
Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents:
567
diff
changeset
|
1775 { |
9bb9a52d6ae5
Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents:
567
diff
changeset
|
1776 selection_customview = selectedCustomview; |
9bb9a52d6ae5
Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents:
567
diff
changeset
|
1777 } |
9bb9a52d6ae5
Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents:
567
diff
changeset
|
1778 } |
38 | 1779 |
1780 uint8_t t7_get_length_of_customtext(void) | |
1781 { | |
1782 uint8_t i = 0; | |
1783 settingsGetPointer()->customtext[60-1] = 0; | |
1784 while(settingsGetPointer()->customtext[i] > 0) | |
1785 i++; | |
1786 return i; | |
1787 } | |
1788 | |
1789 | |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1790 static bool setpointIsActive(SSettings *settings, unsigned setpointIndex) |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1791 { |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1792 if (settings->autoSetpoint && setpointIndex == SETPOINT_INDEX_AUTO_DECO) { |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1793 return settings->setpoint[setpointIndex].note.ub.active; |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1794 } |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1795 |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1796 return true; |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1797 } |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1798 |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1799 |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1800 static void t7_CcrSummary(SSettings *settings) |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1801 { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1802 unsigned numLines = 1; // CCR Mode |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1803 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1804 SGasLine *diluentsToShow[MAX_NUM_SUMMARY_LINES - 1] = { NULL }; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1805 unsigned i = NUM_OFFSET_DILUENT + 1; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1806 // Add diluent at start of dive |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1807 while (i <= NUM_OFFSET_DILUENT + 1 + NUM_GASES) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1808 if (settings->gas[i].note.ub.active && settings->gas[i].note.ub.first) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1809 diluentsToShow[0] = &settings->gas[i]; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1810 numLines++; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1811 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1812 break; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1813 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1814 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1815 i++; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1816 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1817 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1818 bool showScrubberTime = false; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1819 if (settings->scrubTimerMode != SCRUB_TIMER_OFF) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1820 numLines++; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1821 showScrubberTime = true; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1822 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1823 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1824 bool showManualSetpoints = false; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1825 unsigned offset; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1826 SSetpointLine *setpointsToShow[MAX_NUM_SUMMARY_LINES - 1] = { NULL }; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1827 if (settings->CCR_Mode == CCRMODE_FixedSetpoint || settings->fallbackToFixedSetpoint) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1828 offset = numLines; |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1829 if (settings->autoSetpoint) { |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1830 setpointsToShow[numLines++ - offset] = &settings->setpoint[SETPOINT_INDEX_AUTO_LOW]; |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1831 setpointsToShow[numLines++ - offset] = &settings->setpoint[SETPOINT_INDEX_AUTO_HIGH]; |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1832 if (setpointIsActive(settings, SETPOINT_INDEX_AUTO_DECO)) { |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1833 setpointsToShow[numLines++ - offset] = &settings->setpoint[SETPOINT_INDEX_AUTO_DECO]; |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1834 } |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1835 } else { |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1836 // Add setpoint at start of dive |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1837 i = 1; |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1838 while (i <= NUM_GASES) { |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1839 if (setpointIsActive(settings, i) && settings->setpoint[i].note.ub.first) { |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1840 setpointsToShow[numLines - offset] = &settings->setpoint[i]; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1841 numLines++; |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1842 |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1843 break; |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1844 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1845 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1846 i++; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1847 } |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1848 |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1849 showManualSetpoints = true; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1850 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1851 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1852 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1853 // Add remaining active diluents |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1854 i = NUM_OFFSET_DILUENT + 1; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1855 offset = numLines; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1856 if (diluentsToShow[0]) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1857 offset--; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1858 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1859 while (i < NUM_OFFSET_DILUENT + 1 + NUM_GASES && numLines < MAX_NUM_SUMMARY_LINES) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1860 if (settings->gas[i].note.ub.active && !settings->gas[i].note.ub.first) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1861 diluentsToShow[numLines - offset] = &settings->gas[i]; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1862 numLines++; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1863 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1864 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1865 i++; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1866 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1867 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1868 if (showManualSetpoints) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1869 // Fill up the remaining lines with setpoints |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1870 offset = numLines; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1871 if (setpointsToShow[0]) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1872 offset--; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1873 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1874 i = 2; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1875 while (i <= NUM_GASES && numLines < MAX_NUM_SUMMARY_LINES) { |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1876 if (setpointIsActive(settings, i) && !settings->setpoint[i].note.ub.first) { |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1877 setpointsToShow[numLines - offset] = &settings->setpoint[i]; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1878 numLines++; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1879 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1880 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1881 i++; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1882 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1883 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1884 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1885 char heading[128]; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1886 unsigned headingIndex = 0; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1887 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1888 char data[128]; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1889 unsigned dataIndex = 0; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1890 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1891 heading[headingIndex++] = '\032'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1892 heading[headingIndex++] = '\016'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1893 heading[headingIndex++] = '\016'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1894 heading[headingIndex++] = TXT_CCRmode; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1895 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1896 data[dataIndex++] = '\t'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1897 char *modeText; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1898 if (settings->CCR_Mode == CCRMODE_Sensors) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1899 if (settings->fallbackToFixedSetpoint) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1900 modeText = (char *)&"Sens/FB"; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1901 } else { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1902 modeText = (char *)&"Sensor"; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1903 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1904 } else { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1905 modeText = (char *)&"Fixed"; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1906 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1907 dataIndex += snprintf(&data[dataIndex], 10, "\020%s", modeText); |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1908 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1909 i = 0; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1910 while (setpointsToShow[i] != NULL && i < MAX_NUM_SUMMARY_LINES - 1) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1911 heading[headingIndex++] = '\n'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1912 heading[headingIndex++] = '\r'; |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1913 if (settings->autoSetpoint) { |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1914 heading[headingIndex++] = TXT_2BYTE; |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1915 heading[headingIndex++] = TXT2BYTE_SetpointShort; |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1916 headingIndex += printSetpointName(&heading[headingIndex], i + 1, settings, true); |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1917 } else if (i == 0) { |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1918 heading[headingIndex++] = TXT_2BYTE; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1919 heading[headingIndex++] = TXT2BYTE_Setpoint; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1920 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1921 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1922 data[dataIndex++] = '\n'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1923 data[dataIndex++] = '\r'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1924 data[dataIndex++] = '\t'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1925 dataIndex += snprintf(&data[dataIndex], 10, "\020%01.2f", setpointsToShow[i]->setpoint_cbar / 100.0); |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1926 if (setpointsToShow[i]->depth_meter && !(settings->autoSetpoint && i + 1 == SETPOINT_INDEX_AUTO_DECO)) { |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1927 bool setpointDelayed = settings->autoSetpoint && i + 1 == SETPOINT_INDEX_AUTO_LOW && settings->delaySetpointLow; |
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
1928 dataIndex += snprintf(&data[dataIndex], 10, "\016\016 %um%s\017", setpointsToShow[i]->depth_meter, setpointDelayed ? "(d)" : ""); |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1929 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1930 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1931 i++; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1932 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1933 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1934 i = 0; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1935 while (diluentsToShow[i] != NULL && i < MAX_NUM_SUMMARY_LINES - 1) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1936 heading[headingIndex++] = '\n'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1937 heading[headingIndex++] = '\r'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1938 if (i == 0) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1939 heading[headingIndex++] = TXT_Diluent_Gas_Edit; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1940 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1941 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1942 data[dataIndex++] = '\n'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1943 data[dataIndex++] = '\r'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1944 data[dataIndex++] = '\t'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1945 data[dataIndex++] = '\020'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1946 dataIndex += write_gas(&data[dataIndex], diluentsToShow[i]->oxygen_percentage, diluentsToShow[i]->helium_percentage); |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1947 if (diluentsToShow[i]->note.ub.deco) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1948 char *space = " "; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1949 if (diluentsToShow[i]->depth_meter > 99) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1950 space = (char *)""; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1951 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1952 dataIndex += snprintf(&data[dataIndex], 10, "\016\016%s%um\017", space, diluentsToShow[i]->depth_meter); |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1953 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1954 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1955 i++; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1956 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1957 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1958 if (showScrubberTime) { |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1959 heading[headingIndex++] = '\n'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1960 heading[headingIndex++] = '\r'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1961 heading[headingIndex++] = TXT_2BYTE; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1962 heading[headingIndex++] = TXT2BYTE_Scrubber; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1963 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1964 data[dataIndex++] = '\n'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1965 data[dataIndex++] = '\r'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1966 data[dataIndex++] = '\t'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1967 dataIndex += printScrubberText(&data[dataIndex], 10, settings); |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1968 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1969 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1970 heading[headingIndex++] = '\017'; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1971 heading[headingIndex++] = 0; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1972 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1973 data[dataIndex++] = 0; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1974 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1975 t7cY0free.WindowLineSpacing = 48; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1976 t7cY0free.WindowNumberOfTextLines = 6; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1977 t7cY0free.WindowTab = 375; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1978 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1979 if (!settings->FlipDisplay) { |
824 | 1980 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1981 t7cY0free.WindowX0 += 10; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1982 t7cY0free.WindowY0 += 10; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1983 t7cY0free.WindowY1 = 355; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1984 GFX_write_string(&FontT24, &t7cY0free, heading, 1); |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1985 t7cY0free.WindowX0 -= 10; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1986 t7cY0free.WindowY0 -= 10; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1987 } else { |
824 | 1988 t7cY0free.WindowY1 = 400; |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1989 t7cY0free.WindowY1 -= 10; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1990 t7cY0free.WindowX1 -= 10; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1991 GFX_write_string(&FontT24, &t7cY0free, heading, 1); |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1992 t7cY0free.WindowY1 += 10; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1993 t7cY0free.WindowX1 += 10; |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1994 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1995 |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
1996 Gfx_colorsscheme_mod(data, 0); |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1997 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1998 GFX_write_string(&FontT42, &t7cY0free, data, 1); |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1999 } |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
2000 |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
2001 |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2002 static void setTimerPrestart(int startTimeS) |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2003 { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2004 stateUsedWrite->timerState = TIMER_STATE_PRESTART; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2005 stateUsedWrite->timerStartedS = startTimeS; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2006 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2007 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2008 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2009 static void setTimerFinished(int startTimeS) |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2010 { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2011 stateUsedWrite->timerState = TIMER_STATE_FINISHED; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2012 stateUsedWrite->timerStartedS = startTimeS; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2013 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2014 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2015 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2016 static void updateTimer(SSettings *settings, int nowS, bool switchedToTimerView) |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2017 { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2018 int timerElapsedS = nowS - stateUsed->timerStartedS; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2019 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2020 if (stateUsed->timerState && timerElapsedS < 0) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2021 disableTimer(); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2022 } else { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2023 switch (stateUsed->timerState) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2024 case TIMER_STATE_OFF: |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2025 if (switchedToTimerView) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2026 setTimerPrestart(nowS); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2027 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2028 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2029 break; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2030 case TIMER_STATE_PRESTART: |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2031 if (timerElapsedS <= TIMER_ACTION_DELAY_S) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2032 if (switchedToTimerView) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2033 setTimerPrestart(nowS); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2034 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2035 } else { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2036 if (selection_customview == CVIEW_Timer) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2037 stateUsedWrite->timerState = TIMER_STATE_RUNNING; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2038 stateUsedWrite->timerStartedS = stateUsed->timerStartedS + TIMER_ACTION_DELAY_S; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2039 } else { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2040 disableTimer(); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2041 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2042 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2043 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2044 break; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2045 case TIMER_STATE_RUNNING: |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2046 if (timerElapsedS >= settings->timerDurationS) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2047 if (selection_customview == CVIEW_Timer) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2048 setTimerFinished(stateUsed->timerStartedS + settings->timerDurationS); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2049 } else { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2050 stateUsedWrite->timerState = TIMER_STATE_WAIT_FINISHED; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2051 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2052 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2053 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2054 break; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2055 case TIMER_STATE_WAIT_FINISHED: |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2056 if (switchedToTimerView) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2057 setTimerFinished(nowS); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2058 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2059 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2060 break; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2061 case TIMER_STATE_FINISHED: |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2062 if (timerElapsedS <= TIMER_ACTION_DELAY_S) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2063 if (switchedToTimerView) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2064 setTimerPrestart(stateUsed->timerStartedS); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2065 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2066 } else { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2067 disableTimer(); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2068 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2069 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2070 break; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2071 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2072 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2073 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2074 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2075 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2076 bool t7_isTimerRunning(bool includeBackground) |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2077 { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2078 return stateUsed->timerState && (selection_customview == CVIEW_Timer || (includeBackground && stateUsed->timerState == TIMER_STATE_RUNNING)); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2079 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2080 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2081 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2082 static void showTimer(SSettings *settings, int nowS) |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2083 { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2084 char heading[32]; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2085 unsigned headingIndex = 0; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2086 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2087 char data[32]; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2088 unsigned dataIndex = 0; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2089 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2090 heading[headingIndex++] = '\032'; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2091 heading[headingIndex++] = '\016'; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2092 heading[headingIndex++] = '\016'; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2093 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2094 data[dataIndex++] = '\t'; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2095 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2096 int timerRemainingS = settings->timerDurationS; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2097 switch (stateUsed->timerState) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2098 case TIMER_STATE_RUNNING: |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2099 timerRemainingS = settings->timerDurationS - (nowS - stateUsed->timerStartedS); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2100 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2101 break; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2102 case TIMER_STATE_PRESTART: |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2103 case TIMER_STATE_FINISHED: |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2104 if (stateUsed->timerState == TIMER_STATE_PRESTART) { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2105 heading[headingIndex++] = TXT_2BYTE; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2106 heading[headingIndex++] = TXT2BYTE_Starting; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2107 } else { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2108 heading[headingIndex++] = TXT_2BYTE; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2109 heading[headingIndex++] = TXT2BYTE_Finished; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2110 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2111 timerRemainingS = 0; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2112 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2113 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2114 dataIndex += snprintf(&data[dataIndex], 10, "\020%u", TIMER_ACTION_DELAY_S - (nowS - stateUsed->timerStartedS)); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2115 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2116 break; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2117 default: |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2118 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2119 break; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2120 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2121 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2122 char timer[16]; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2123 snprintf(timer, 10, "\001\020%u:%02u", timerRemainingS / 60, timerRemainingS % 60); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2124 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2125 heading[headingIndex++] = 0; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2126 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2127 data[dataIndex++] = 0; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2128 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2129 t7cY0free.WindowLineSpacing = 48; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2130 t7cY0free.WindowNumberOfTextLines = 6; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2131 t7cY0free.WindowTab = 375; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2132 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2133 if (!settings->FlipDisplay) { |
824 | 2134 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2135 t7cY0free.WindowX0 += 10; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2136 t7cY0free.WindowY0 += 10; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2137 t7cY0free.WindowY1 = 355; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2138 GFX_write_string(&FontT24, &t7cY0free, heading, 1); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2139 t7cY0free.WindowX0 -= 10; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2140 t7cY0free.WindowY0 -= 10; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2141 } else { |
824 | 2142 t7cY0free.WindowY1 = 400; |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2143 t7cY0free.WindowY1 -= 10; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2144 t7cY0free.WindowX1 -= 10; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2145 GFX_write_string(&FontT24, &t7cY0free, heading, 1); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2146 t7cY0free.WindowY1 += 10; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2147 t7cY0free.WindowX1 += 10; |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2148 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2149 |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2150 Gfx_colorsscheme_mod(data, 0); |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2151 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2152 GFX_write_string(&FontT42, &t7cY0free, data, 1); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2153 |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2154 Gfx_colorsscheme_mod(timer, 0); |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2155 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2156 GFX_write_string(&FontT105, &t7cY0free, timer, 4); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2157 } |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2158 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2159 |
38 | 2160 void t7_refresh_customview(void) |
2161 { | |
405 | 2162 static uint8_t last_customview = CVIEW_END; |
38 | 2163 |
2164 char text[256]; | |
567 | 2165 char timeSuffix; |
2166 uint8_t hoursToDisplay; | |
662 | 2167 #ifdef ENABLE_PSCR_MODE |
2168 uint8_t showSimPPO2 = 1; | |
2169 #endif | |
38 | 2170 uint16_t textpointer = 0; |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2171 uint16_t heading = 0; |
38 | 2172 int16_t start; |
51
8f8ea3a32e82
Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents:
38
diff
changeset
|
2173 uint8_t lineCountCustomtext = 0; |
38 | 2174 int16_t shiftWindowY0; |
2175 RTC_DateTypeDef Sdate; | |
2176 RTC_TimeTypeDef Stime; | |
2177 float fPpO2limitHigh, fPpO2limitLow, fPpO2ofGasAtThisDepth; // CVIEW_Gaslist | |
2178 const SGasLine * pGasLine; // CVIEW_Gaslist | |
2179 uint8_t oxygen, helium; // CVIEW_Gaslist | |
2180 float depth, surface, fraction_nitrogen, fraction_helium, ead, end; // CVIEW_EADTime | |
819
24b39a432bc2
Added debug information in case an error in the settings has been detected:
Ideenmodellierer
parents:
805
diff
changeset
|
2181 SSettingsStatus SettingsStatus; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2182 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2183 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2184 |
701 | 2185 uint8_t local_ppo2sensors_deactivated = 0; |
2186 | |
2187 if(stateUsed->mode == MODE_DIVE) /* show sensors based on current dive settings */ | |
2188 { | |
2189 local_ppo2sensors_deactivated = stateUsed->diveSettings.ppo2sensors_deactivated; | |
2190 } | |
2191 else | |
2192 { | |
2193 local_ppo2sensors_deactivated = pSettings->ppo2sensors_deactivated; | |
2194 } | |
2195 | |
405 | 2196 if(last_customview != selection_customview) /* check if current selection is disabled and should be skipped */ |
2197 { | |
2198 if(t7_customview_disabled(selection_customview)) | |
2199 { | |
2200 t7_change_customview(ACTION_BUTTON_ENTER); | |
2201 } | |
2202 } | |
38 | 2203 switch(selection_customview) |
2204 { | |
2205 case CVIEW_noneOrDebug: | |
2206 if(settingsGetPointer()->showDebugInfo) | |
2207 { | |
2208 // header | |
2209 strcpy(text,"\032\f\001Debug"); | |
2210 GFX_write_string(&FontT42,&t7cH,text,0); | |
2211 // content | |
2212 t7_debug(); | |
2213 } | |
2214 break; | |
2215 | |
672 | 2216 case CVIEW_Charger: |
2217 snprintf(text,100,"\032\f\001%c",TXT_Charging); | |
2218 GFX_write_string(&FontT42,&t7cH,text,0); | |
2219 t7_ChargerView(); | |
2220 | |
2221 break; | |
2222 | |
38 | 2223 case CVIEW_SummaryOfLeftCorner: |
2224 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Summary); | |
2225 GFX_write_string(&FontT42,&t7cH,text,0); | |
2226 // content | |
2227 t7_SummaryOfLeftCorner(); | |
2228 break; | |
2229 | |
2230 case CVIEW_CompassDebug: | |
2231 snprintf(text,100,"\032\f\001Compass raw"); | |
2232 GFX_write_string(&FontT42,&t7cH,text,0); | |
2233 snprintf(text,255,"%1.1f\n\r%1.1f\n\r%1.1f\n\r%i\n\r%i\n\r%i" | |
2234 ,stateUsed->lifeData.compass_heading | |
2235 ,stateUsed->lifeData.compass_roll | |
2236 ,stateUsed->lifeData.compass_pitch | |
2237 ,stateUsed->lifeData.compass_DX_f | |
2238 ,stateUsed->lifeData.compass_DY_f | |
2239 ,stateUsed->lifeData.compass_DZ_f | |
2240 ); | |
2241 | |
2242 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
2243 t7cY0free.WindowLineSpacing = 48; | |
2244 t7cY0free.WindowNumberOfTextLines = 6; | |
2245 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
2246 break; | |
2247 | |
2248 case CVIEW_Hello: | |
2249 t7_logo_OSTC(); | |
2250 t7cC.WindowLineSpacing = 53; | |
2251 t7cC.WindowNumberOfTextLines = 5; | |
2252 shiftWindowY0 = 18; | |
2253 | |
2254 if(updateNecessary)//if(DataEX_check_RTE_version__needs_update() || font_update_required()) | |
2255 { | |
2256 if(warning_count_high_time) | |
2257 { | |
2258 shiftWindowY0 += 20; | |
2259 t7cC.WindowY0 -= shiftWindowY0; | |
2260 textpointer = 0; | |
2261 text[textpointer++] = TXT_2BYTE; | |
2262 text[textpointer++] = TXT2BYTE_PleaseUpdate; | |
2263 text[textpointer++] = '\n'; | |
2264 text[textpointer++] = '\r'; | |
2265 if(DataEX_check_RTE_version__needs_update()) | |
2266 { | |
2267 text[textpointer++] = TXT_2BYTE; | |
2268 text[textpointer++] = TXT2BYTE_RTE; | |
2269 text[textpointer++] = '\n'; | |
2270 text[textpointer++] = '\r'; | |
2271 } | |
2272 if(font_update_required()) | |
2273 { | |
2274 text[textpointer++] = TXT_2BYTE; | |
2275 text[textpointer++] = TXT2BYTE_Fonts; | |
2276 } | |
2277 text[textpointer++] = 0; | |
2278 GFX_write_string_color(&FontT42,&t7cC,text,1, CLUT_WarningRed); | |
2279 t7cC.WindowY0 += shiftWindowY0; | |
2280 } | |
2281 t7cC.WindowNumberOfTextLines = 3; | |
2282 } | |
662 | 2283 else if(isSettingsWarning()) |
2284 { | |
2285 if(warning_count_high_time) | |
2286 { | |
819
24b39a432bc2
Added debug information in case an error in the settings has been detected:
Ideenmodellierer
parents:
805
diff
changeset
|
2287 get_CorrectionStatus(&SettingsStatus); |
662 | 2288 shiftWindowY0 += 20; |
2289 t7cC.WindowY0 -= shiftWindowY0; | |
2290 textpointer = 0; | |
819
24b39a432bc2
Added debug information in case an error in the settings has been detected:
Ideenmodellierer
parents:
805
diff
changeset
|
2291 snprintf(text,255,"\001%c%c\n\r\001%d|%d",TXT_2BYTE,TXT2BYTE_CheckSettings,SettingsStatus.FirstCorrection,SettingsStatus.Corrections); |
662 | 2292 GFX_write_string_color(&FontT42,&t7cC,text,1, CLUT_WarningRed); |
2293 t7cC.WindowY0 += shiftWindowY0; | |
2294 } | |
2295 t7cC.WindowNumberOfTextLines = 1; | |
2296 } | |
759 | 2297 else if(!isCompassCalibrated()) { |
2298 if(warning_count_high_time) { | |
2299 shiftWindowY0 += 20; | |
2300 t7cC.WindowY0 -= shiftWindowY0; | |
2301 textpointer = 0; | |
2302 text[textpointer++] = '\001'; | |
2303 text[textpointer++] = TXT_2BYTE; | |
2304 text[textpointer++] = TXT2BYTE_Compass; | |
2305 text[textpointer++] = '\n'; | |
2306 text[textpointer++] = '\r'; | |
2307 text[textpointer++] = '\001'; | |
2308 text[textpointer++] = TXT_2BYTE; | |
2309 text[textpointer++] = TXT2BYTE_NotCalibrated; | |
2310 text[textpointer++] = '\n'; | |
2311 text[textpointer++] = '\r'; | |
2312 text[textpointer++] = 0; | |
2313 GFX_write_string_color(&FontT42, &t7cC,text, 1, CLUT_WarningRed); | |
2314 t7cC.WindowY0 += shiftWindowY0; | |
2315 } | |
2316 t7cC.WindowNumberOfTextLines = 2; | |
2317 } | |
38 | 2318 else // customtext |
2319 { | |
2320 lineCountCustomtext = t7_customtextPrepare(text); | |
2321 if(lineCountCustomtext <= 2) | |
2322 shiftWindowY0 += 20+26; // nach unten | |
2323 else | |
2324 if(lineCountCustomtext <= 3) | |
2325 shiftWindowY0 += 20; // nach unten | |
2326 t7cC.WindowY0 -= shiftWindowY0; | |
2327 | |
2328 GFX_write_string(&FontT42,&t7cC,text,1); | |
2329 t7cC.WindowNumberOfTextLines = 3; | |
2330 t7cC.WindowY0 += shiftWindowY0; | |
2331 } | |
2332 if(lineCountCustomtext <= 4) | |
2333 { | |
2334 snprintf(text,100,"\001#%0u V%01u.%01u.%01u", | |
2335 settingsGetPointer()->serialLow + (256 * settingsGetPointer()->serialHigh), | |
2336 firmwareDataGetPointer()->versionFirst, | |
2337 firmwareDataGetPointer()->versionSecond, | |
2338 firmwareDataGetPointer()->versionThird | |
2339 ); | |
2340 GFX_write_string(&FontT24,&t7cC,text,0); | |
2341 } | |
2342 break; | |
2343 | |
2344 case CVIEW_Gaslist: | |
2345 // a lot of code taken from tMenuGas.c | |
2346 // header | |
2347 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Gaslist); | |
2348 GFX_write_string(&FontT42,&t7cH,text,0); | |
2349 // content | |
2350 textpointer = 0; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2351 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2352 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2353 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2354 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2355 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2356 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2357 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2358 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2359 } |
38 | 2360 t7cY0free.WindowLineSpacing = 48+9; |
2361 t7cY0free.WindowNumberOfTextLines = 5; // NUM_GASES == 5 | |
2362 t7cY0free.WindowTab = 420; | |
2363 | |
2364 pGasLine = settingsGetPointer()->gas; | |
2365 if(actualLeftMaxDepth(stateUsed)) | |
2366 fPpO2limitHigh = (float)(settingsGetPointer()->ppO2_max_deco) / 100; | |
2367 else | |
2368 fPpO2limitHigh = (float)(settingsGetPointer()->ppO2_max_std) / 100; | |
2369 fPpO2limitLow = (float)(settingsGetPointer()->ppO2_min) / 100; | |
2370 for(int gasId=1;gasId<=NUM_GASES;gasId++) | |
2371 { | |
2372 textpointer = 0; | |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2373 #ifdef ENABLE_UNUSED_GAS_HIDING |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2374 if(!pGasLine[gasId].note.ub.off) |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2375 { |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2376 #endif |
38 | 2377 fPpO2ofGasAtThisDepth = (stateUsed->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * pGasLine[gasId].oxygen_percentage / 100; |
2378 if(pGasLine[gasId].note.ub.active == 0) | |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2379 strcpy(&text[textpointer++],"\031"); |
517 | 2380 else if(stateUsed->lifeData.actualGas.GasIdInSettings == gasId) /* actual selected gas */ |
2381 { | |
2382 strcpy(&text[textpointer++],"\030"); | |
2383 } | |
38 | 2384 else if((fPpO2ofGasAtThisDepth > fPpO2limitHigh) || (fPpO2ofGasAtThisDepth < fPpO2limitLow)) |
2385 strcpy(&text[textpointer++],"\025"); | |
517 | 2386 else if(actualBetterGasId() == gasId) |
2387 { | |
2388 strcpy(&text[textpointer++],"\026"); /* Highlight better gas */ | |
2389 } | |
38 | 2390 else |
517 | 2391 strcpy(&text[textpointer++],"\023"); |
38 | 2392 |
2393 text[textpointer++] = ' '; | |
2394 oxygen = pGasLine[gasId].oxygen_percentage; | |
2395 helium = pGasLine[gasId].helium_percentage; | |
2396 textpointer += write_gas(&text[textpointer], oxygen, helium); | |
2397 // Wechseltiefe | |
2398 if(pGasLine[gasId].depth_meter) | |
2399 { | |
631 | 2400 textpointer += snprintf(&text[textpointer],10,"\t%u %c%c",unit_depth_integer(pGasLine[gasId].depth_meter), unit_depth_char1(), unit_depth_char2()); |
38 | 2401 } |
2402 GFX_write_string(&FontT42, &t7cY0free, text, gasId); | |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2403 #ifdef ENABLE_UNUSED_GAS_HIDING |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2404 } |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2405 #endif |
38 | 2406 } |
2407 break; | |
2408 | |
2409 case CVIEW_EADTime: | |
2410 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Info ); | |
2411 GFX_write_string(&FontT42,&t7cH,text,0); | |
2412 textpointer = 0; | |
2413 | |
2414 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2415 if(pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2416 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2417 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2418 } |
38 | 2419 t7cY0free.WindowLineSpacing = 48; |
2420 t7cY0free.WindowNumberOfTextLines = 6; | |
2421 | |
2422 // time | |
2423 snprintf(text,100,"\032\001%c%c",TXT_2BYTE,TXT2BYTE_Clock ); | |
2424 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
2425 | |
2426 translateDate(stateRealGetPointer()->lifeData.dateBinaryFormat, &Sdate); | |
2427 translateTime(stateRealGetPointer()->lifeData.timeBinaryFormat, &Stime); | |
567 | 2428 |
2429 if (settingsGetPointer()->amPMTime) | |
2430 { | |
2431 if (Stime.Hours > 11) | |
2432 { | |
2433 timeSuffix = 'P'; | |
2434 } | |
2435 else | |
2436 { | |
2437 timeSuffix = 'A'; | |
2438 } | |
2439 | |
2440 if (Stime.Hours % 12 == 0) | |
2441 { | |
2442 hoursToDisplay = 12; | |
2443 } | |
2444 else | |
2445 { | |
2446 hoursToDisplay = (Stime.Hours % 12); | |
2447 } | |
2448 | |
2449 if(Stime.Seconds % 2) | |
2450 textpointer += snprintf(&text[textpointer],100,"\030\001%02d:%02d %cM",hoursToDisplay,Stime.Minutes,timeSuffix); | |
2451 else | |
2452 textpointer += snprintf(&text[textpointer],100,"\030\001%02d\031:\030%02d %cM",hoursToDisplay,Stime.Minutes,timeSuffix); | |
2453 } | |
38 | 2454 else |
567 | 2455 { |
2456 if(Stime.Seconds % 2) | |
2457 textpointer += snprintf(&text[textpointer],100,"\030\001%02d:%02d",Stime.Hours,Stime.Minutes); | |
2458 else | |
2459 textpointer += snprintf(&text[textpointer],100,"\030\001%02d\031:\030%02d",Stime.Hours,Stime.Minutes); | |
2460 } | |
2461 | |
38 | 2462 GFX_write_string(&FontT42, &t7cY0free, text, 2); |
2463 | |
2464 // EAD / END | |
2465 // The equivalent air depth can be calculated for depths in metres as follows: | |
2466 // EAD = (Depth + 10) � Fraction of N2 / 0.79 - 10 (wikipedia) | |
2467 // The equivalent narcotic depth can be calculated for depths in metres as follows: | |
2468 // END = (Depth + 10) � (1 - Fraction of helium) - 10 (wikipedia) | |
2469 decom_get_inert_gases((float)stateUsed->lifeData.pressure_ambient_bar,&(stateUsed->lifeData.actualGas),&fraction_nitrogen,&fraction_helium); | |
2470 depth = stateUsed->lifeData.pressure_ambient_bar; | |
2471 surface = stateUsed->lifeData.pressure_surface_bar; | |
2472 ead = 10.f * ((depth * fraction_nitrogen/0.79f) - surface); | |
2473 end = 10.0f * ((depth * (1.f - fraction_helium)) - surface); | |
2474 if(ead < 0) | |
2475 ead = 0; | |
2476 if(end < 0) | |
2477 end = 0; | |
2478 | |
2479 snprintf(text,100,"\032\001EAD"); | |
2480 GFX_write_string(&FontT42, &t7cY0free, text, 3); | |
2481 snprintf(text,100,"\030\001%01.1f %c%c" | |
2482 , unit_depth_float(ead) | |
2483 , unit_depth_char1() | |
2484 , unit_depth_char2() | |
2485 ); | |
2486 GFX_write_string(&FontT42, &t7cY0free, text, 4); | |
2487 | |
2488 snprintf(text,100,"\032\001END"); | |
2489 GFX_write_string(&FontT42, &t7cY0free, text, 5); | |
2490 snprintf(text,100,"\030\001%01.1f %c%c" | |
2491 , unit_depth_float(ead) | |
2492 , unit_depth_char1() | |
2493 , unit_depth_char2() | |
2494 ); | |
2495 GFX_write_string(&FontT42, &t7cY0free, text, 6); | |
2496 break; | |
2497 | |
2498 case CVIEW_Profile: | |
2499 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Profile); | |
2500 GFX_write_string(&FontT42,&t7cH,text,0); | |
2501 textpointer = 0; | |
2502 t7_miniLiveLogProfile(); | |
2503 break; | |
2504 | |
2505 case CVIEW_Tissues: | |
2506 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Tissues); | |
2507 GFX_write_string(&FontT42,&t7cH,text,0); | |
2508 textpointer = 0; | |
2509 t7_tissues(stateUsed); | |
2510 break; | |
2511 | |
2512 case CVIEW_sensors: | |
2513 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_O2monitor); | |
2514 GFX_write_string(&FontT42,&t7cH,text,0); | |
2515 textpointer = 0; | |
2516 text[textpointer++] = '\030'; // main color | |
2517 for(int i=0;i<3;i++) | |
2518 { | |
701 | 2519 if((local_ppo2sensors_deactivated & (1<<i)) || (stateUsed->lifeData.ppO2Sensor_bar[i] == 0.0)) |
38 | 2520 { |
662 | 2521 #ifdef ENABLE_PSCR_MODE |
2522 if((stateUsed->diveSettings.diveMode == DIVEMODE_PSCR) && (showSimPPO2) && (stateUsed->mode == MODE_DIVE)) /* display ppo2 sim in blue letters in case a slot is not used in the ppo2 custom view */ | |
2523 { | |
2524 text[textpointer++] = '\023'; | |
2525 textpointer += snprintf(&text[textpointer],100,"\001%01.2f\n\r\030",stateUsed->lifeData.ppo2Simulated_bar); | |
2526 showSimPPO2 = 0; | |
2527 } | |
2528 else | |
2529 #endif | |
2530 { | |
2531 text[textpointer++] = '\031'; // labelcolor | |
2532 text[textpointer++] = '\001'; | |
2533 text[textpointer++] = '-'; | |
2534 text[textpointer++] = '\n'; | |
2535 text[textpointer++] = '\r'; | |
2536 text[textpointer++] = '\030'; // main color | |
2537 text[textpointer] = 0; | |
2538 } | |
38 | 2539 } |
2540 else | |
2541 { | |
2542 if(stateUsed->warnings.sensorOutOfBounds[i]) | |
2543 text[textpointer++] = '\025'; // Warning Red | |
2544 textpointer += snprintf(&text[textpointer],100,"\001%01.2f\n\r\030",stateUsed->lifeData.ppO2Sensor_bar[i]); | |
2545 } | |
2546 } | |
2547 t7cC.WindowLineSpacing = 95; | |
2548 t7cC.WindowNumberOfTextLines = 3; | |
2549 text[textpointer] = 0; | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2550 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2551 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2552 t7cC.WindowY1 -= 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2553 } |
38 | 2554 GFX_write_string(&FontT105,&t7cC,text,1); |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2555 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2556 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2557 t7cC.WindowY1 += 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2558 } |
38 | 2559 break; |
2560 | |
2561 case CVIEW_sensors_mV: | |
2562 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_O2voltage); | |
2563 GFX_write_string(&FontT42,&t7cH,text,0); | |
2564 textpointer = 0; | |
2565 text[textpointer++] = '\030'; | |
2566 for(int i=0;i<3;i++) | |
2567 { | |
701 | 2568 if(local_ppo2sensors_deactivated & (1<<i)) |
38 | 2569 { |
2570 text[textpointer++] = '\031'; | |
2571 text[textpointer++] = '\001'; | |
2572 text[textpointer++] = '-'; | |
2573 text[textpointer++] = '\n'; | |
2574 text[textpointer++] = '\r'; | |
2575 text[textpointer++] = '\030'; | |
2576 text[textpointer] = 0; | |
2577 } | |
2578 else | |
2579 { | |
2580 if(stateUsed->warnings.sensorOutOfBounds[i]) | |
2581 text[textpointer++] = '\025'; | |
2582 textpointer += snprintf(&text[textpointer],100,"\001%01.1f mV\n\r\030",(stateUsed->lifeData.sensorVoltage_mV[i])); | |
2583 } | |
2584 } | |
2585 t7cC.WindowLineSpacing = 95; | |
2586 t7cC.WindowNumberOfTextLines = 3; | |
2587 text[textpointer] = 0; | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2588 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2589 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2590 t7cC.WindowY1 -= 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2591 } |
38 | 2592 GFX_write_string(&FontT48,&t7cC,text,1); |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2593 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2594 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2595 t7cC.WindowY1 += 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2596 } |
38 | 2597 break; |
2598 | |
2599 case CVIEW_Compass: | |
2600 default: | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2601 |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2602 if(pSettings->compassInertia) |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2603 { |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2604 heading = (uint16_t)compass_getCompensated(); |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2605 } |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2606 else |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2607 { |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2608 heading = (uint16_t)stateUsed->lifeData.compass_heading; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2609 } |
38 | 2610 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE, TXT2BYTE_Compass); |
2611 GFX_write_string(&FontT42,&t7cH,text,0); | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2612 t7_compass(heading, stateUsed->diveSettings.compassHeading); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2613 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2614 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2615 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2616 t7cY0free.WindowX0 += 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2617 t7cY0free.WindowY0 = 230; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2618 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2619 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2620 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2621 t7cY0free.WindowX0 -= 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2622 t7cY0free.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2623 t7cY0free.WindowY1 = 250; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2624 } |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2625 snprintf(text,100,"\030\001%03i`",heading); |
38 | 2626 GFX_write_string(&FontT54,&t7cY0free,text,0); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2627 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2628 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2629 t7cY0free.WindowX0 -= 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2630 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2631 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2632 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2633 t7cY0free.WindowX0 += 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2634 } |
38 | 2635 break; |
2636 | |
2637 case CVIEW_Decolist: | |
2638 snprintf(text,100,"\032\f\001 %c%c", TXT_2BYTE, TXT2BYTE_Decolist); | |
2639 GFX_write_string(&FontT42,&t7cH,text,0); | |
2640 | |
2641 uint8_t depthNext, depthLast, depthSecond, depthInc; | |
2642 | |
2643 depthLast = (uint8_t)(stateUsed->diveSettings.last_stop_depth_bar * 10); | |
2644 depthSecond = (uint8_t)(stateUsed->diveSettings.input_second_to_last_stop_depth_bar * 10); | |
2645 depthInc = (uint8_t)(stateUsed->diveSettings.input_next_stop_increment_depth_bar * 10); | |
2646 | |
2647 if(settingsGetPointer()->nonMetricalSystem) | |
2648 { | |
2649 depthLast = (uint8_t)unit_depth_integer(depthLast); | |
2650 depthSecond = (uint8_t)unit_depth_integer(depthSecond); | |
2651 depthInc = (uint8_t)unit_depth_integer(depthInc); | |
2652 } | |
2653 | |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
2654 const SDecoinfo * pDecoinfo = getDecoInfo(); |
38 | 2655 for(start=DECOINFO_STRUCT_MAX_STOPS-1; start>0; start--) |
2656 if(pDecoinfo->output_stop_length_seconds[start]) break; | |
2657 start -= 6; | |
2658 if(start < 0) start = 0; | |
2659 | |
2660 textpointer = 0; | |
2661 for(int i=start;i<6+start;i++) | |
2662 { | |
2663 if(i == 0) | |
2664 depthNext = depthLast; | |
2665 else | |
2666 depthNext = depthSecond + (( i - 1 )* depthInc); | |
2667 | |
2668 if(pDecoinfo->output_stop_length_seconds[i]) | |
2669 textpointer += snprintf(&text[textpointer],20,"\030\034 %2u\016\016%c%c\017%3i'\n\r",depthNext, unit_depth_char1(), unit_depth_char2(), (pDecoinfo->output_stop_length_seconds[i]+59)/60); | |
2670 else | |
2671 textpointer += snprintf(&text[textpointer],20,"\031\034 %2u\016\016%c%c\017\n\r",depthNext, unit_depth_char1(), unit_depth_char2()); | |
2672 if(textpointer > 200) break; | |
2673 } | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2674 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2675 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2676 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2677 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2678 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2679 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2680 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2681 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2682 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2683 |
38 | 2684 t7cY0free.WindowLineSpacing = 48; |
2685 t7cY0free.WindowNumberOfTextLines = 6; | |
2686 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
2687 break; | |
770
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
2688 case CVIEW_CcrSummary: |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
2689 snprintf(text, 100, "\032\f\001%c%c", TXT_2BYTE, TXT2BYTE_CcrSummary); |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
2690 GFX_write_string(&FontT42, &t7cH, text, 0); |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
2691 t7_CcrSummary(pSettings); |
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
2692 break; |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2693 case CVIEW_Timer: |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2694 snprintf(text, 100, "\032\f\001%c%c", TXT_2BYTE, TXT2BYTE_Timer); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2695 GFX_write_string(&FontT42, &t7cH, text, 0); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2696 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2697 int nowS = current_second(); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2698 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2699 updateTimer(pSettings, nowS, last_customview != CVIEW_Timer); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2700 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2701 showTimer(pSettings, nowS); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2702 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2703 break; |
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
2704 |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
2705 case CVIEW_Position: |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
2706 snprintf(text, 100, "\032\f\001%c%c", TXT_2BYTE, TXT2BYTE_Position); |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
2707 GFX_write_string(&FontT42, &t7cH, text, 0); |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
2708 t7_showPosition(); |
38 | 2709 } |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2710 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2711 last_customview = selection_customview; |
38 | 2712 } |
2713 | |
2714 | |
2715 /* DIVE MODE | |
2716 */ | |
2717 void t7_refresh_divemode(void) | |
2718 { | |
2719 char TextL1[TEXTSIZE]; | |
2720 char TextL2[TEXTSIZE]; | |
2721 | |
2722 char TextR1[TEXTSIZE]; | |
2723 char TextR2[TEXTSIZE]; | |
2724 char TextR3[TEXTSIZE]; | |
2725 | |
2726 char TextC1[2*TEXTSIZE]; | |
2727 char TextC2[TEXTSIZE]; | |
2728 uint8_t textPointer; | |
2729 | |
884 | 2730 uint8_t color = 0; |
38 | 2731 int textlength; |
2732 | |
2733 uint16_t nextstopLengthSeconds = 0; | |
2734 uint8_t nextstopDepthMeter = 0; | |
2735 uint8_t oxygen_percentage = 0; | |
2736 SDivetime Divetime = {0,0,0, 0}; | |
2737 SDivetime SafetyStopTime = {0,0,0,0}; | |
2738 SDivetime TimeoutTime = {0,0,0,0}; | |
2739 uint8_t customview_warnings = 0; | |
2740 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2741 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2742 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2743 |
38 | 2744 Divetime.Total = stateUsed->lifeData.dive_time_seconds_without_surface_time; |
2745 Divetime.Minutes = Divetime.Total / 60; | |
2746 Divetime.Seconds = Divetime.Total - ( Divetime.Minutes * 60 ); | |
2747 | |
2748 SafetyStopTime.Total = timer_Safetystop_GetCountDown(); | |
2749 SafetyStopTime.Minutes = SafetyStopTime.Total / 60; | |
2750 SafetyStopTime.Seconds = SafetyStopTime.Total - (SafetyStopTime.Minutes * 60); | |
2751 | |
882 | 2752 TimeoutTime.Total = pSettings->timeoutDiveReachedZeroDepth - stateUsed->lifeData.counterSecondsShallowDepth; |
2753 if(TimeoutTime.Total > pSettings->timeoutDiveReachedZeroDepth) | |
38 | 2754 { |
2755 TimeoutTime.Total = 0; | |
2756 } | |
2757 TimeoutTime.Minutes = TimeoutTime.Total / 60; | |
2758 TimeoutTime.Seconds = TimeoutTime.Total - (TimeoutTime.Minutes * 60); | |
2759 | |
788
4abfb8a2a435
Define explicit setpoints for low / high / deco. Add an option to delay the switch to SPlow until all decompression has been cleared. (mikeller)
heinrichsweikamp
parents:
778
diff
changeset
|
2760 const SDecoinfo * pDecoinfo = getDecoInfo(); |
38 | 2761 if(pDecoinfo->output_time_to_surface_seconds) |
2762 { | |
2763 tHome_findNextStop(pDecoinfo->output_stop_length_seconds, &nextstopDepthMeter, &nextstopLengthSeconds); | |
2764 } | |
2765 else | |
2766 { | |
2767 nextstopDepthMeter = 0; | |
2768 nextstopLengthSeconds = 0; | |
2769 } | |
2770 | |
882 | 2771 |
2772 /* max depth */ | |
2773 snprintf(TextL2,TEXTSIZE,"\032\f%c",TXT_MaxDepth); | |
2774 GFX_write_string(&FontT42,&t7l2,TextL2,0); | |
2775 | |
2776 if(unit_depth_float(stateUsed->lifeData.max_depth_meter) < 100) | |
2777 snprintf(TextL2,TEXTSIZE,"\020%01.1f",unit_depth_float(stateUsed->lifeData.max_depth_meter)); | |
2778 else | |
2779 snprintf(TextL2,TEXTSIZE,"\020%01.0f",unit_depth_float(stateUsed->lifeData.max_depth_meter)); | |
2780 | |
2781 Gfx_colorsscheme_mod(TextL2, 0); | |
2782 GFX_write_string(&FontT105,&t7l2,TextL2,1); | |
2783 | |
2784 /* ascent rate graph */ | |
2785 | |
892 | 2786 if((pSettings->slowExitTime != 0) && (pDecoinfo->output_time_to_surface_seconds == 0) && (stateUsed->lifeData.depth_meter < pSettings->last_stop_depth_meter)) |
882 | 2787 { |
2788 color = t7_drawSlowExitGraph(); | |
2789 } | |
2790 else if(stateUsed->lifeData.ascent_rate_meter_per_min > 1) /* a value < 1 would cause a bar in negative direction brush rectangle of 12 and step width of 6 */ | |
2791 { | |
2792 color = drawingColor_from_ascentspeed(stateUsed->lifeData.ascent_rate_meter_per_min); | |
2793 t7_drawAcentGraph(color); | |
2794 } | |
2795 | |
2796 | |
38 | 2797 /* depth */ |
174
ecb71521d004
Bugfix: make max depth move with current depth (part 2)
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
2798 float depth = unit_depth_float(stateUsed->lifeData.depth_meter); |
38 | 2799 |
2800 if(depth <= 0.3f) | |
2801 depth = 0; | |
2802 | |
2803 if(settingsGetPointer()->nonMetricalSystem) | |
2804 snprintf(TextL1,TEXTSIZE,"\032\f[feet]"); | |
2805 else | |
2806 snprintf(TextL1,TEXTSIZE,"\032\f%c",TXT_Depth); | |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2807 |
38 | 2808 GFX_write_string(&FontT24,&t7l1,TextL1,0); |
2809 | |
2810 if((stateUsed->lifeData.ascent_rate_meter_per_min > 8) || (stateUsed->lifeData.ascent_rate_meter_per_min < -10)) | |
2811 { | |
2812 snprintf(TextL1,TEXTSIZE,"\f\002%.0f %c%c/min " | |
2813 , unit_depth_float(stateUsed->lifeData.ascent_rate_meter_per_min) | |
2814 , unit_depth_char1() | |
2815 , unit_depth_char2() | |
2816 ); | |
2817 GFX_write_string(&FontT24,&t7l1,TextL1,0); | |
2818 } | |
2819 | |
2820 if( depth < 100) | |
2821 snprintf(TextL1,TEXTSIZE,"\020%01.1f",depth); | |
2822 else | |
2823 snprintf(TextL1,TEXTSIZE,"\020%01.0f",depth); | |
2824 | |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2825 Gfx_colorsscheme_mod(TextL1, color); |
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2826 |
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2827 GFX_write_string(&FontT144,&t7l1,TextL1,0); |
38 | 2828 |
882 | 2829 /* divetime */ |
38 | 2830 if(stateUsed->lifeData.counterSecondsShallowDepth) |
2831 { | |
2832 snprintf(TextR1,TEXTSIZE,"\f\002\136 %u:%02u",TimeoutTime.Minutes, TimeoutTime.Seconds); | |
2833 GFX_write_string(&FontT42,&t7r1,TextR1,0); | |
2834 } | |
2835 else | |
2836 { | |
2837 snprintf(TextR1,TEXTSIZE,"\032\f\002%c",TXT_Divetime); | |
2838 GFX_write_string(&FontT42,&t7r1,TextR1,0); | |
2839 } | |
2840 | |
2841 if(Divetime.Minutes < 1000) | |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
2842 snprintf(TextR1,TEXTSIZE,"\020\002\016%u:%02u",Divetime.Minutes, Divetime.Seconds); |
38 | 2843 else |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
2844 snprintf(TextR1,TEXTSIZE,"\020\002\016%u'",Divetime.Minutes); |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2845 Gfx_colorsscheme_mod(TextR1, 0); |
38 | 2846 GFX_write_string(&FontT105,&t7r1,TextR1,1); |
2847 | |
2848 /* next deco stop */ | |
2849 if(nextstopDepthMeter) | |
2850 { | |
2851 snprintf(TextR2,TEXTSIZE,"\032\f\002%c",TXT_Decostop); | |
2852 GFX_write_string(&FontT42,&t7r2,TextR2,0); | |
2853 textlength = snprintf(TextR2,TEXTSIZE,"\020\002%u%c%c %u'" | |
2854 , unit_depth_integer(nextstopDepthMeter) | |
2855 , unit_depth_char1_T105() | |
2856 , unit_depth_char2_T105() | |
2857 , (nextstopLengthSeconds+59)/60); | |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2858 Gfx_colorsscheme_mod(TextR2, 0); |
38 | 2859 if(time_elapsed_ms(pDecoinfo->tickstamp, HAL_GetTick()) > MAX_AGE_DECOINFO_MS) |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2860 TextR2[0] = '\031'; |
38 | 2861 if(textlength <= 9) |
2862 GFX_write_string(&FontT105,&t7r2,TextR2,1); | |
567 | 2863 else if(textlength <= 10) |
2864 GFX_write_string(&FontT84Spaced,&t7r2,TextR2,1); | |
38 | 2865 else |
2866 GFX_write_string(&FontT54,&t7r2,TextR2,1); | |
2867 } | |
2868 else if(SafetyStopTime.Total && (depth > timer_Safetystop_GetDepthUpperLimit())) | |
2869 { | |
2870 snprintf(TextR2,TEXTSIZE,"\032\f\002%c%c",TXT_2BYTE,TXT2BYTE_SafetyStop2); | |
2871 GFX_write_string(&FontT42,&t7r2,TextR2,0); | |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
2872 snprintf(TextR2,TEXTSIZE,"\020\002\016%u:%02u",SafetyStopTime.Minutes,SafetyStopTime.Seconds); |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2873 Gfx_colorsscheme_mod(TextR2, 0); |
38 | 2874 GFX_write_string(&FontT105,&t7r2,TextR2,1); |
2875 } | |
2876 | |
2877 /* tts - option 1 | |
2878 * ndl - option 2 | |
2879 * empty - option 3 */ | |
2880 if(pDecoinfo->output_time_to_surface_seconds) | |
2881 { | |
2882 snprintf(TextR3,TEXTSIZE,"\032\f\002%c",TXT_TTS); | |
2883 GFX_write_string(&FontT42,&t7r3,TextR3,0); | |
2884 if(pDecoinfo->output_time_to_surface_seconds < 1000 * 60) | |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2885 snprintf(TextR3,TEXTSIZE,"\020\002%i'",(pDecoinfo->output_time_to_surface_seconds + 59)/ 60); |
38 | 2886 else |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2887 snprintf(TextR3,TEXTSIZE,"\020\002%ih",(pDecoinfo->output_time_to_surface_seconds + 59)/ 3600); |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2888 Gfx_colorsscheme_mod(TextR3, 0); |
38 | 2889 if(time_elapsed_ms(pDecoinfo->tickstamp, HAL_GetTick()) > MAX_AGE_DECOINFO_MS) |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2890 TextR2[0] = '\031'; |
38 | 2891 GFX_write_string(&FontT105,&t7r3,TextR3,1); |
2892 } | |
2893 else if(pDecoinfo->output_ndl_seconds) | |
2894 { | |
2895 snprintf(TextR3,TEXTSIZE,"\032\f\002%c",TXT_Nullzeit); | |
2896 GFX_write_string(&FontT42,&t7r3,TextR3,0); | |
2897 if(pDecoinfo->output_ndl_seconds < 1000 * 60) | |
2898 snprintf(TextR3,TEXTSIZE,"\020\002%i'",pDecoinfo->output_ndl_seconds/60); | |
2899 else | |
2900 snprintf(TextR3,TEXTSIZE,"\020\002%ih",pDecoinfo->output_ndl_seconds/3600); | |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2901 Gfx_colorsscheme_mod(TextR3, 0); |
38 | 2902 if(time_elapsed_ms(pDecoinfo->tickstamp, HAL_GetTick()) > MAX_AGE_DECOINFO_MS) |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2903 TextR2[0] = '\031'; |
38 | 2904 GFX_write_string(&FontT105,&t7r3,TextR3,1); |
2905 } | |
2906 | |
2907 /* Menu Selection (and gas mix) */ | |
2908 if(get_globalState() == StDMGAS) | |
2909 { | |
2910 textPointer = 0; | |
2911 TextR1[textPointer++] = '\a'; | |
2912 // TextR1[textPointer++] = '\f'; | |
2913 TextR1[textPointer++] = '\001'; | |
2914 TextR1[textPointer++] = ' '; | |
2915 textPointer += tHome_gas_writer(stateUsed->diveSettings.gas[actualBetterGasId()].oxygen_percentage,stateUsed->diveSettings.gas[actualBetterGasId()].helium_percentage,&TextR1[textPointer]); | |
2916 TextR1[textPointer++] = '?'; | |
2917 TextR1[textPointer++] = ' '; | |
2918 TextR1[textPointer++] = 0; | |
2919 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2920 } | |
2921 else if(get_globalState() == StDMSPT) | |
2922 { | |
2923 textPointer = 0; | |
2924 TextR1[textPointer++] = '\a'; | |
2925 TextR1[textPointer++] = '\001'; | |
2926 TextR1[textPointer++] = ' '; | |
680 | 2927 textPointer += snprintf(&TextR1[textPointer],TEXTSIZE,"%01.2f",(float)(stateUsed->diveSettings.setpoint[actualBetterSetpointId()].setpoint_cbar) / 100.0); |
38 | 2928 TextR1[textPointer++] = '?'; |
2929 TextR1[textPointer++] = ' '; | |
2930 TextR1[textPointer++] = 0; | |
2931 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2932 } | |
2933 else if(get_globalState() == StDMENU) | |
2934 { | |
2935 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveMenuQ); | |
2936 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
773
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2937 } else if (get_globalState() == StDBAILOUT) { |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2938 if (isLoopMode(stateUsed->diveSettings.diveMode)) { |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2939 textPointer = snprintf(TextR1, TEXTSIZE, "\a\001 %c%c ", TXT_2BYTE, TXT2BYTE_BailoutShort); |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2940 textPointer += tHome_gas_writer(stateUsed->diveSettings.gas[actualBetterBailoutGasId()].oxygen_percentage, stateUsed->diveSettings.gas[actualBetterBailoutGasId()].helium_percentage, &TextR1[textPointer]); |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2941 TextR1[textPointer++] = ' '; |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2942 TextR1[textPointer++] = '?'; |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2943 } else { |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2944 textPointer = snprintf(TextR1, TEXTSIZE, "\a\001 %c%c %01.2f/", TXT_2BYTE, TXT2BYTE_LoopShort, stateUsed->diveSettings.setpoint[actualBetterSetpointId()].setpoint_cbar / 100.0); |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2945 textPointer += tHome_gas_writer(stateUsed->diveSettings.gas[stateUsed->lifeData.lastDiluent_GasIdInSettings].oxygen_percentage, stateUsed->diveSettings.gas[stateUsed->lifeData.lastDiluent_GasIdInSettings].helium_percentage, &TextR1[textPointer]); |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2946 TextR1[textPointer++] = ' '; |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2947 TextR1[textPointer++] = '?'; |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2948 } |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2949 |
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
2950 GFX_write_string_color(&FontT48, &t7c2, TextR1, 0, CLUT_WarningYellow); |
775
46c6d2380d4e
Add a shortcuts to change the setpoint to the loop to the 'normal' display when diving. It is only shown when diving in CCR mode and on the loop.
heinrichsweikamp
parents:
773
diff
changeset
|
2951 } else if (get_globalState() == StDSETPOINT) { |
46c6d2380d4e
Add a shortcuts to change the setpoint to the loop to the 'normal' display when diving. It is only shown when diving in CCR mode and on the loop.
heinrichsweikamp
parents:
773
diff
changeset
|
2952 snprintf(TextR1, TEXTSIZE, "\a\001 %c%c %01.2f? ", TXT_2BYTE, TXT2BYTE_SetpointShort, getSwitchToSetpointCbar() / 100.0); |
46c6d2380d4e
Add a shortcuts to change the setpoint to the loop to the 'normal' display when diving. It is only shown when diving in CCR mode and on the loop.
heinrichsweikamp
parents:
773
diff
changeset
|
2953 |
46c6d2380d4e
Add a shortcuts to change the setpoint to the loop to the 'normal' display when diving. It is only shown when diving in CCR mode and on the loop.
heinrichsweikamp
parents:
773
diff
changeset
|
2954 GFX_write_string_color(&FontT48, &t7c2, TextR1, 0, CLUT_WarningYellow); |
38 | 2955 } |
777
6a8cf91e5b22
This is only showing if one of the compass views is visible. It should make it possible to verify that a correct heading is set as the user can see the compass readout when pushing the button. (mikeller)
heinrichsweikamp
parents:
775
diff
changeset
|
2956 else if(get_globalState() == StDBEAR) |
6a8cf91e5b22
This is only showing if one of the compass views is visible. It should make it possible to verify that a correct heading is set as the user can see the compass readout when pushing the button. (mikeller)
heinrichsweikamp
parents:
775
diff
changeset
|
2957 { |
6a8cf91e5b22
This is only showing if one of the compass views is visible. It should make it possible to verify that a correct heading is set as the user can see the compass readout when pushing the button. (mikeller)
heinrichsweikamp
parents:
775
diff
changeset
|
2958 snprintf(TextR1, TEXTSIZE, "\a\001 %c%c? ", TXT_2BYTE, TXT2BYTE_DiveBearingQ); |
6a8cf91e5b22
This is only showing if one of the compass views is visible. It should make it possible to verify that a correct heading is set as the user can see the compass readout when pushing the button. (mikeller)
heinrichsweikamp
parents:
775
diff
changeset
|
2959 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); |
6a8cf91e5b22
This is only showing if one of the compass views is visible. It should make it possible to verify that a correct heading is set as the user can see the compass readout when pushing the button. (mikeller)
heinrichsweikamp
parents:
775
diff
changeset
|
2960 } |
38 | 2961 else if(get_globalState() == StDSIM1) |
2962 { | |
2963 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveQuitQ); | |
2964 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2965 } | |
2966 else if(get_globalState() == StDSIM2) | |
2967 { | |
2968 if(settingsGetPointer()->nonMetricalSystem) | |
2969 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-3.33ft "); | |
2970 else | |
2971 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-1m "); | |
2972 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2973 | |
2974 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2975 , unit_depth_integer(simulation_get_aim_depth()) | |
2976 , unit_depth_char1() | |
2977 , unit_depth_char2() | |
2978 ); | |
2979 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2980 | |
2981 } | |
2982 else if(get_globalState() == StDSIM3) | |
2983 { | |
2984 if(settingsGetPointer()->nonMetricalSystem) | |
2985 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+3.33ft "); | |
2986 else | |
2987 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+1m "); | |
2988 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2989 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2990 , unit_depth_integer(simulation_get_aim_depth()) | |
2991 , unit_depth_char1() | |
2992 , unit_depth_char2() | |
2993 ); | |
2994 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2995 } | |
2996 else if(get_globalState() == StDSIM4) | |
2997 { | |
2998 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+5' "); | |
2999 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
3000 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
3001 , unit_depth_integer(simulation_get_aim_depth()) | |
3002 , unit_depth_char1() | |
3003 , unit_depth_char2() | |
3004 ); | |
3005 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
3006 } | |
3007 else | |
3008 { | |
3009 /* gas mix */ | |
3010 oxygen_percentage = 100; | |
3011 oxygen_percentage -= stateUsed->lifeData.actualGas.nitrogen_percentage; | |
3012 oxygen_percentage -= stateUsed->lifeData.actualGas.helium_percentage; | |
3013 | |
3014 textPointer = 0; | |
3015 TextC2[textPointer++] = '\020'; | |
3016 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
3017 { | |
3018 TextC2[textPointer++] = '\a'; | |
3019 } | |
3020 else | |
3021 { | |
3022 float fPpO2limitHigh, fPpO2now; | |
3023 | |
3024 if(actualLeftMaxDepth(stateUsed)) | |
3025 fPpO2limitHigh = settingsGetPointer()->ppO2_max_deco; | |
3026 else | |
3027 fPpO2limitHigh = settingsGetPointer()->ppO2_max_std; | |
3028 | |
3029 fPpO2now = (stateUsed->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * oxygen_percentage; | |
3030 | |
3031 if((fPpO2now > fPpO2limitHigh) || (fPpO2now < (float)(settingsGetPointer()->ppO2_min))) | |
3032 TextC2[textPointer++] = '\025'; | |
3033 } | |
3034 TextC2[textPointer++] = '\002'; | |
3035 textPointer += tHome_gas_writer(oxygen_percentage,stateUsed->lifeData.actualGas.helium_percentage,&TextC2[textPointer]); | |
3036 | |
3037 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
3038 { | |
3039 if(TextC2[0] == '\020') | |
3040 { | |
3041 TextC2[0] = '\004'; // NOP | |
3042 } | |
3043 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
3044 } | |
3045 else | |
3046 { | |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
3047 Gfx_colorsscheme_mod(TextC2, 0); |
38 | 3048 GFX_write_string(&FontT48,&t7c2,TextC2,0); // T54 has only numbers |
3049 } | |
3050 | |
3051 if(stateUsed->diveSettings.ccrOption) | |
3052 { | |
662 | 3053 if(isLoopMode(stateUsed->diveSettings.diveMode)) |
38 | 3054 { |
3055 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
662 | 3056 |
38 | 3057 if(stateUsed->warnings.betterSetpoint && warning_count_high_time && (stateUsed->diveSettings.diveMode == DIVEMODE_CCR)) |
3058 { | |
3059 TextC2[0] = '\a'; // inverse instead of color \020 | |
3060 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
3061 } | |
3062 else | |
3063 { | |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
3064 Gfx_colorsscheme_mod(TextC2, 0); |
38 | 3065 GFX_write_string(&FontT48,&t7c2,TextC2,0); |
3066 } | |
3067 } | |
3068 } | |
3069 else if(settingsGetPointer()->alwaysShowPPO2) | |
3070 { | |
3071 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
3072 Gfx_colorsscheme_mod(TextC2, 0); |
38 | 3073 GFX_write_string(&FontT48,&t7c2,TextC2,0); |
3074 } | |
3075 } | |
3076 | |
3077 /* algorithm, ccr, bailout and battery */ | |
3078 /* and permanent warnings (CNS) */ | |
3079 | |
3080 if((stateUsed->warnings.cnsHigh) && display_count_high_time) | |
3081 { | |
3082 TextC2[0] = '\f'; | |
3083 TextC2[1] = TXT_2BYTE; | |
3084 TextC2[2] = TXT2BYTE_WarnCnsHigh; | |
3085 TextC2[3] = 0; | |
662 | 3086 GFX_write_string_color(&FontT42,&t7c1,TextC2,0,CLUT_WarningRed); |
38 | 3087 } |
3088 else | |
3089 { | |
3090 if(stateUsed->warnings.aGf) | |
3091 { | |
3092 GFX_write_string_color(&FontT48,&t7c1,"\f" "aGF",0,CLUT_WarningYellow); | |
3093 } | |
3094 else if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
3095 { | |
3096 GFX_write_string(&FontT48,&t7c1,"\027\f" "GF",0); | |
3097 } | |
3098 else | |
3099 { | |
3100 GFX_write_string(&FontT48,&t7c1,"\027\f" "VPM",0); | |
3101 } | |
3102 | |
3103 if(stateUsed->diveSettings.diveMode == DIVEMODE_CCR) | |
3104 GFX_write_string(&FontT24,&t7c1,"\027\f\002" "CCR",0); | |
3105 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80" "CCR",0); | |
3106 else | |
662 | 3107 if(stateUsed->diveSettings.diveMode == DIVEMODE_PSCR) |
3108 GFX_write_string(&FontT24,&t7c1,"\027\f\002" "PSCR",0); | |
3109 else | |
38 | 3110 if(stateUsed->diveSettings.ccrOption) |
3111 GFX_write_string(&FontT24,&t7c1,"\f\002\024" "Bailout",0); | |
3112 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80\024" "Bailout",0); | |
3113 } | |
3114 TextC1[0] = '\020'; | |
3115 TextC1[1] = '3'; | |
3116 TextC1[2] = '1'; | |
3117 TextC1[3] = '1'; | |
3118 TextC1[4] = '1'; | |
3119 TextC1[5] = '1'; | |
3120 TextC1[6] = '1'; | |
3121 TextC1[7] = '1'; | |
3122 TextC1[8] = '1'; | |
3123 TextC1[9] = '1'; | |
3124 TextC1[10] = '1'; | |
3125 TextC1[11] = '1'; | |
3126 TextC1[12] = '0'; | |
3127 TextC1[13] = 0; | |
3128 | |
3129 for(int i=1;i<=10;i++) | |
3130 { | |
3131 if( stateUsed->lifeData.battery_charge > (9 * i)) | |
3132 TextC1[i+1] += 1; | |
3133 } | |
3134 | |
3135 if(stateUsed->warnings.lowBattery) | |
3136 { | |
3137 TextC1[0] = '\025'; | |
3138 if(warning_count_high_time) | |
3139 { | |
3140 for(int i=2;i<=11;i++) | |
3141 TextC1[i] = '1'; | |
3142 } | |
3143 else | |
3144 { | |
3145 TextC1[2] = '2'; | |
3146 } | |
3147 GFX_write_string(&Batt24,&t7batt,TextC1,0); | |
3148 | |
3149 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
3150 { | |
3151 snprintf(TextC1,16,"\004\025\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
3152 if(warning_count_high_time) | |
3153 TextC1[0] = '\a'; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3154 GFX_write_string(&FontT24,&t7voltage,TextC1,0); |
38 | 3155 } |
3156 } | |
3157 else | |
3158 { | |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
3159 Gfx_colorsscheme_mod(TextC1, 0); |
38 | 3160 GFX_write_string(&Batt24,&t7batt,TextC1,0); |
3161 | |
3162 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
3163 { | |
3164 snprintf(TextC1,16,"\020\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
3165 Gfx_colorsscheme_mod(TextC1, 0); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3166 GFX_write_string(&FontT24,&t7voltage,TextC1,0); // t7batt |
38 | 3167 } |
3168 } | |
3169 | |
3170 /* customizable left lower corner */ | |
3171 t7_refresh_divemode_userselected_left_lower_corner(); | |
3172 | |
3173 | |
3174 /* customview - option 1 | |
3175 * warning - option 2 */ | |
3176 if(stateUsed->warnings.numWarnings) | |
3177 customview_warnings = t7_test_customview_warnings(); | |
3178 | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
3179 background.pointer = 0; |
38 | 3180 if(customview_warnings && warning_count_high_time) |
3181 t7_show_customview_warnings(); | |
3182 else | |
3183 t7_refresh_customview(); | |
3184 | |
3185 /* the frame */ | |
3186 draw_frame(1,1, CLUT_DIVE_pluginbox, CLUT_DIVE_FieldSeperatorLines); | |
3187 } | |
3188 | |
3189 void t7_set_field_to_primary(void) | |
3190 { | |
3191 if(stateUsed->mode == MODE_DIVE) | |
3192 selection_custom_field = settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary; | |
3193 } | |
3194 | |
3195 void t7_change_field(void) | |
3196 { | |
3197 selection_custom_field++; | |
3198 | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3199 if((stateUsed->diveSettings.deco_type.ub.standard == VPM_MODE) && (selection_custom_field == LLC_GF)) /* no GF if in VPM mode */ |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3200 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3201 selection_custom_field++; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3202 } |
662 | 3203 if((selection_custom_field == LLC_ScrubberTime) && ((settingsGetPointer()->scrubTimerMode == SCRUB_TIMER_OFF) || (!isLoopMode(settingsGetPointer()->dive_mode)))) |
656 | 3204 { |
3205 selection_custom_field++; | |
3206 } | |
662 | 3207 #ifdef ENABLE_PSCR_MODE |
3208 if((selection_custom_field == LCC_SimPpo2) && (settingsGetPointer()->dive_mode != DIVEMODE_PSCR)) | |
3209 { | |
3210 selection_custom_field++; | |
3211 } | |
3212 #endif | |
840 | 3213 #ifdef ENABLE_CO2_SUPPORT |
3214 if((selection_custom_field == LCC_CO2) && (settingsGetPointer()->co2_sensor_active == 0)) | |
3215 { | |
3216 selection_custom_field++; | |
3217 } | |
3218 | |
3219 #endif | |
3220 | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3221 if(selection_custom_field >= LLC_END) |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3222 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3223 selection_custom_field = LLC_Empty; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3224 } |
38 | 3225 } |
3226 | |
3227 | |
3228 void t7_refresh_divemode_userselected_left_lower_corner(void) | |
3229 { | |
3230 if(!selection_custom_field) | |
3231 return; | |
3232 | |
3233 char headerText[10]; | |
3234 char text[TEXTSIZE]; | |
3235 uint8_t textpointer = 0; | |
3236 _Bool tinyHeaderFont = 0; | |
3237 uint8_t line = 0; | |
457 | 3238 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3239 uint16_t agedColor = 0; |
457 | 3240 #endif |
38 | 3241 |
3242 SDivetime Stopwatch = {0,0,0,0}; | |
3243 float fAverageDepth, fAverageDepthAbsolute; | |
3244 const SDecoinfo * pDecoinfoStandard; | |
3245 const SDecoinfo * pDecoinfoFuture; | |
3246 float fCNS; | |
3247 float temperature; | |
710 | 3248 SSettings* pSettings = settingsGetPointer(); |
38 | 3249 |
3250 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
3251 { | |
3252 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
3253 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
3254 } | |
3255 else | |
3256 { | |
3257 pDecoinfoStandard = &stateUsed->decolistVPM; | |
3258 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
3259 } | |
3260 | |
3261 Stopwatch.Total = timer_Stopwatch_GetTime(); | |
3262 Stopwatch.Minutes = Stopwatch.Total / 60; | |
3263 Stopwatch.Seconds = Stopwatch.Total - ( Stopwatch.Minutes * 60 ); | |
3264 fAverageDepth = timer_Stopwatch_GetAvarageDepth_Meter(); | |
3265 fAverageDepthAbsolute = stateUsed->lifeData.average_depth_meter; | |
3266 | |
3267 headerText[0] = '\032'; | |
3268 headerText[1] = '\f'; | |
3269 | |
3270 switch(selection_custom_field) | |
3271 { | |
3272 /* Temperature */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3273 case LLC_Temperature: |
38 | 3274 default: |
189
8b8074080d7b
Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents:
187
diff
changeset
|
3275 temperature = unit_temperature_float(stateUsed->lifeData.temperature_celsius); |
38 | 3276 headerText[2] = TXT_Temperature; |
3277 textpointer = snprintf(text,TEXTSIZE,"\020\016%01.1f \140",temperature); // "\016\016%01.1f `" + C or F | |
3278 if(settingsGetPointer()->nonMetricalSystem == 0) | |
3279 text[textpointer++] = 'C'; | |
3280 else | |
3281 text[textpointer++] = 'F'; | |
3282 text[textpointer++] = 0; | |
3283 tinyHeaderFont = 0; | |
3284 break; | |
3285 | |
3286 /* Average Depth */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3287 case LLC_AverageDepth: |
38 | 3288 headerText[2] = TXT_AvgDepth; |
710 | 3289 if(pSettings->nonMetricalSystem) |
38 | 3290 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(fAverageDepthAbsolute)); |
3291 else | |
3292 snprintf(text,TEXTSIZE,"\020%01.1f",fAverageDepthAbsolute); | |
3293 break; | |
3294 | |
3295 /* ppO2 */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3296 case LLC_ppO2: |
38 | 3297 headerText[2] = TXT_ppO2; |
3298 snprintf(text,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
3299 break; | |
3300 | |
3301 /* Stop Uhr */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3302 case LLC_Stopwatch: |
38 | 3303 headerText[2] = TXT_Stopwatch; |
710 | 3304 if(pSettings->nonMetricalSystem) |
38 | 3305 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.0f",Stopwatch.Minutes, Stopwatch.Seconds,unit_depth_float(fAverageDepth)); |
3306 else | |
3307 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.1f",Stopwatch.Minutes, Stopwatch.Seconds,fAverageDepth); | |
3308 tinyHeaderFont = 1; | |
3309 line = 1; | |
3310 break; | |
3311 | |
3312 /* Ceiling */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3313 case LLC_Ceiling: |
38 | 3314 headerText[2] = TXT_Ceiling; |
710 | 3315 if((pDecoinfoStandard->output_ceiling_meter > 99.9f) || (pSettings->nonMetricalSystem)) |
38 | 3316 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); |
3317 else | |
3318 snprintf(text,TEXTSIZE,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); | |
3319 break; | |
3320 | |
3321 /* Future TTS */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3322 case LLC_FutureTTS: |
38 | 3323 headerText[2] = TXT_FutureTTS; |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3324 if (pDecoinfoFuture->output_time_to_surface_seconds < 1000 * 60) |
710 | 3325 snprintf(text,TEXTSIZE,"\020\016\016@+%u'\n\r" "%i' TTS",pSettings->future_TTS, (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 60); |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3326 else |
710 | 3327 snprintf(text,TEXTSIZE,"\020\016\016@+%u'\n\r" "%ih TTS",pSettings->future_TTS, (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
38 | 3328 tinyHeaderFont = 1; |
3329 line = 1; | |
3330 break; | |
3331 | |
3332 /* CNS */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3333 case LLC_CNS: |
38 | 3334 headerText[2] = TXT_CNS; |
3335 fCNS = stateUsed->lifeData .cns; | |
3336 if(fCNS > 999) | |
3337 fCNS = 999; | |
3338 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",fCNS); | |
3339 break; | |
3340 | |
3341 /* actual GF */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3342 case LLC_GF: |
38 | 3343 headerText[2] = TXT_ActualGradient; |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
3344 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",100 * pDecoinfoStandard->super_saturation); |
38 | 3345 break; |
656 | 3346 |
3347 case LLC_ScrubberTime: | |
3348 tinyHeaderFont = 1; | |
3349 headerText[2] = TXT_ScrubTime; | |
758
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
3350 |
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
3351 printScrubberText(text, TEXTSIZE, pSettings); |
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
3352 |
656 | 3353 break; |
662 | 3354 #ifdef ENABLE_PSCR_MODE |
3355 case LCC_SimPpo2: | |
3356 headerText[2] = TXT_SimPpo2; | |
3357 snprintf(text,TEXTSIZE,"\020%.2f\016\016Bar\017",stateUsed->lifeData.ppo2Simulated_bar); | |
3358 break; | |
3359 #endif | |
656 | 3360 |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3361 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3362 case LCC_BottleBar: |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3363 headerText[2] = TXT_AtemGasVorrat; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3364 tinyHeaderFont = 1; |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3365 snprintf(text,TEXTSIZE,"%d\016\016\017", stateUsed->lifeData.bottle_bar[stateUsed->lifeData.actualGas.GasIdInSettings]); |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3366 break; |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3367 #endif |
749 | 3368 #ifdef ENABLE_CO2_SUPPORT |
3369 case LCC_CO2: | |
3370 headerText[2] = TXT_CO2Sensor; | |
3371 if(stateUsed->lifeData.CO2_data.CO2_ppm < CO2_WARNING_LEVEL_PPM) | |
3372 { | |
3373 text[textpointer++] = '\020'; | |
3374 } | |
3375 else if(stateUsed->lifeData.CO2_data.CO2_ppm < CO2_ALARM_LEVEL_PPM) | |
3376 { | |
3377 text[textpointer++] = '\024'; /* yellow */ | |
3378 } | |
3379 else | |
3380 { | |
3381 text[textpointer++] = '\025'; /* red */ | |
3382 } | |
3383 snprintf(&text[textpointer],TEXTSIZE,"\%5ldppm", stateUsed->lifeData.CO2_data.CO2_ppm); | |
799 | 3384 break; |
749 | 3385 #endif |
737
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3386 case LLC_Compass: |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3387 headerText[2] = TXT_2BYTE; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3388 headerText[3] = TXT2BYTE_Compass; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3389 tinyHeaderFont = 1; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3390 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3391 uint16_t heading; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3392 if(settingsGetPointer()->compassInertia) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3393 heading = (uint16_t)compass_getCompensated(); |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3394 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3395 heading = (uint16_t)stateUsed->lifeData.compass_heading; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3396 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3397 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3398 uint16_t userSetHeading = stateUsed->diveSettings.compassHeading; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3399 if (!userSetHeading) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3400 snprintf(text, TEXTSIZE, "\020\002\034%u ", heading); |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3401 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3402 snprintf(text, TEXTSIZE, "\020\002\034\016\016%u ", heading); |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3403 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3404 int16_t declinationFromForwardMark = ((userSetHeading - heading + 180 + 360) % 360) - 180; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3405 int16_t declinationFromNearestMark = ((declinationFromForwardMark + 90 + 180) % 180) - 90; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3406 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3407 uint16_t colour; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3408 if (abs(declinationFromForwardMark) <= 90) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3409 colour = CLUT_CompassUserHeadingTick; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3410 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3411 colour = CLUT_CompassUserBackHeadingTick; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3412 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3413 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3414 char direction[] = "\001 \004 \004 "; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3415 if (abs(declinationFromNearestMark) <= 10) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3416 direction[2] = '>'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3417 direction[6] = '<'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3418 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3419 if (abs(declinationFromForwardMark) <= 10) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3420 direction[4] = 'X'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3421 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3422 direction[4] = 'O'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3423 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3424 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3425 if (abs(declinationFromNearestMark) <= 3) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3426 direction[3] = '\a'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3427 direction[5] = '\a'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3428 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3429 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3430 if (declinationFromForwardMark < -90) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3431 direction[7] = 'O'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3432 } else if (declinationFromForwardMark < 0) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3433 direction[1] = 'X'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3434 } else if (declinationFromForwardMark <= 90) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3435 direction[7] = 'X'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3436 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3437 direction[1] = 'O'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3438 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3439 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3440 if (declinationFromNearestMark >= 0) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3441 direction[6] = '>'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3442 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3443 if (declinationFromNearestMark > 30) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3444 direction[4] = '>'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3445 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3446 if (declinationFromNearestMark > 60 || declinationFromForwardMark == 90) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3447 direction[2] = '>'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3448 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3449 if (declinationFromNearestMark < 0) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3450 direction[2] = '<'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3451 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3452 if (declinationFromNearestMark < -30) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3453 direction[4] = '<'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3454 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3455 if (declinationFromNearestMark < -60 || declinationFromForwardMark == -90) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3456 direction[6] = '<'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3457 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3458 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3459 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3460 GFX_write_string_color(&FontT48, &t7l3, direction, 1, colour); |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3461 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3462 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3463 break; |
38 | 3464 } |
737
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3465 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3466 if (headerText[2] != TXT_2BYTE) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3467 headerText[3] = 0; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3468 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3469 headerText[4] = 0; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3470 } |
38 | 3471 |
3472 if(tinyHeaderFont) | |
3473 GFX_write_string(&FontT24,&t7l3,headerText,0); | |
3474 else | |
3475 GFX_write_string(&FontT42,&t7l3,headerText,0); | |
3476 | |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
3477 Gfx_colorsscheme_mod(text, 0); |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3478 #ifndef ENABLE_BOTTLE_SENSOR |
748 | 3479 #ifdef ENABLE_CO2_SUPPORT |
3480 if(selection_custom_field != LCC_CO2) | |
3481 { | |
3482 GFX_write_string(&FontT105,&t7l3,text,line); | |
3483 } | |
3484 else | |
3485 { | |
3486 GFX_write_string(&FontT48,&t7l3,text,line); | |
3487 } | |
3488 #else | |
3489 GFX_write_string(&FontT105,&t7l3,text,line); | |
3490 #endif | |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3491 #else |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3492 if(selection_custom_field != LCC_BottleBar) /* a changing color set is used for bar display */ |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3493 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3494 GFX_write_string(&FontT105,&t7l3,text,line); |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3495 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3496 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3497 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3498 agedColor = stateUsed->lifeData.bottle_bar_age_MilliSeconds[stateUsed->lifeData.actualGas.GasIdInSettings]; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3499 if(agedColor > 1200) |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3500 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3501 agedColor = CLUT_WarningRed; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3502 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3503 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3504 if(agedColor > 600) |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3505 { |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3506 agedColor = CLUT_MenuLineUnselected; |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3507 } |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3508 else |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3509 if(agedColor > 20) |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3510 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3511 agedColor = CLUT_Font031; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3512 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3513 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3514 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3515 agedColor = CLUT_Font020; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3516 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3517 |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3518 GFX_write_string_color(&FontT105,&t7l3,text,line,agedColor); |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3519 } |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3520 #endif |
38 | 3521 } |
3522 | |
3523 /* Private functions ---------------------------------------------------------*/ | |
3524 | |
3525 uint8_t t7_customtextPrepare(char * text) | |
3526 { | |
3527 uint8_t i, j, textptr, lineCount; | |
3528 char nextChar; | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3529 uint8_t alignmentChanged = 0; |
38 | 3530 |
3531 textptr = 0; | |
3532 lineCount = 0; | |
3533 | |
3534 text[textptr++] = TXT_MINIMAL; | |
3535 | |
3536 j = 0; | |
3537 i = 0; | |
3538 do | |
3539 { | |
3540 j += i; | |
3541 i = 0; | |
3542 do | |
3543 { | |
3544 nextChar = settingsGetPointer()->customtext[i+j]; | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3545 if((nextChar == '^') && (alignmentChanged == 0)) /* center */ |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3546 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3547 text[textptr++] = '\001'; |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3548 alignmentChanged = 1; |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3549 i++; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3550 }else |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3551 if((nextChar == 180) && (alignmentChanged == 0)) /* '�' => Right */ |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3552 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3553 text[textptr++] = '\002'; |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3554 alignmentChanged = 1; |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3555 i++; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3556 }else |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3557 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3558 i++; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3559 if((!nextChar) || (nextChar =='\n') || (nextChar =='\r')) |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3560 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3561 break; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3562 } |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3563 text[textptr++] = nextChar; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3564 } |
38 | 3565 } while (i < 12); |
3566 | |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3567 if(i == 12) /* exit by limit => check for blanks at the end of the string */ |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3568 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3569 while((textptr - 1 > 0) && (text[textptr - 1] == 32)) |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3570 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3571 textptr--; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3572 } |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3573 } |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3574 |
38 | 3575 if(!nextChar) |
3576 break; | |
3577 | |
3578 if(lineCount < 3) | |
3579 { | |
3580 text[textptr++] = '\n'; | |
3581 text[textptr++] = '\r'; | |
3582 } | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3583 alignmentChanged = 0; |
38 | 3584 lineCount++; |
3585 for(uint8_t k=0;k<2;k++) | |
3586 { | |
3587 nextChar = settingsGetPointer()->customtext[i+j+k]; | |
3588 if((nextChar =='\n') || (nextChar =='\r')) | |
3589 i++; | |
3590 else | |
3591 break; | |
3592 } | |
3593 | |
3594 } while (lineCount < 4); | |
3595 | |
3596 text[textptr] = 0; | |
3597 return lineCount; | |
3598 } | |
3599 | |
3600 void draw_frame(_Bool PluginBoxHeader, _Bool LinesOnTheSides, uint8_t colorBox, uint8_t colorLinesOnTheSide) | |
3601 { | |
3602 point_t LeftLow, WidthHeight; | |
3603 point_t start, stop; | |
3604 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3605 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3606 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3607 |
38 | 3608 // plugin box |
3609 LeftLow.x = CUSTOMBOX_LINE_LEFT; | |
3610 WidthHeight.x = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_LINE_LEFT; | |
3611 LeftLow.y = 60; | |
3612 WidthHeight.y = 440 - LeftLow.y; | |
642
c737cf5d9067
Do not show focus indicator in case motion detection is suspended:
Ideenmodellierer
parents:
631
diff
changeset
|
3613 if((viewInFocus() && (!viewDetectionSuspended()))) |
553 | 3614 { |
3615 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, CLUT_Font023); | |
3616 } | |
3617 else | |
3618 { | |
3619 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, colorBox); | |
3620 } | |
38 | 3621 |
3622 if(PluginBoxHeader) | |
3623 { | |
3624 // plugin box - header | |
3625 start.x = CUSTOMBOX_LINE_LEFT; | |
3626 stop.x = CUSTOMBOX_LINE_RIGHT; | |
3627 stop.y = start.y = 440 - 60; | |
3628 GFX_draw_line(&t7screen, start, stop, colorBox); | |
3629 } | |
3630 | |
3631 if(LinesOnTheSides) | |
3632 { | |
3633 // aufteilung links | |
3634 start.x = 0; | |
3635 stop.x = CUSTOMBOX_LINE_LEFT; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3636 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3637 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3638 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3639 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3640 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3641 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3642 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3643 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3644 |
38 | 3645 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3646 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3647 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3648 stop.y = start.y = t7l2.WindowY0 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3649 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3650 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3651 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3652 stop.y = start.y = 480 - t7l2.WindowY1 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3653 } |
38 | 3654 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
3655 | |
3656 // aufteilung rechts | |
3657 start.x = CUSTOMBOX_LINE_RIGHT; | |
3658 stop.x = 799; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3659 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3660 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3661 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3662 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3663 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3664 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3665 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3666 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3667 |
38 | 3668 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3669 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3670 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3671 stop.y = start.y = t7l2.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3672 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3673 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3674 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3675 stop.y = start.y = 480 - t7l2.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3676 } |
38 | 3677 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
3678 } | |
3679 } | |
3680 | |
3681 | |
3682 /* Compass like TCOS shellfish | |
3683 * input is 0 to 359 | |
3684 * 2 px / 1 degree | |
3685 * Range is 148 degree with CUSTOMBOX_SPACE_INSIDE = 296 | |
3686 * one side is 74 degree (less than 90 degree) | |
3687 * internal 360 + 180 degree of freedom | |
3688 * use positive values only, shift by 360 below 90 mid position | |
3689 */ | |
3690 | |
3691 | |
3692 point_t t7_compass_circle(uint8_t id, uint16_t degree) | |
3693 { | |
3694 float fCos, fSin; | |
3695 const float piMult = ((2 * 3.14159) / 360); | |
3696 // const int radius[4] = {95,105,115,60}; | |
3697 const int radius[4] = {95,105,115,100}; | |
3698 const point_t offset = {.x = 400, .y = 250}; | |
3699 | |
3700 static point_t r[4][360] = { 0 }; | |
3701 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3702 if(r[0][0].y == 0) /* calc table at first call only */ |
38 | 3703 { |
3704 for(int i=0;i<360;i++) | |
3705 { | |
3706 fCos = cos(i * piMult); | |
3707 fSin = sin(i * piMult); | |
3708 for(int j=0;j<4;j++) | |
3709 { | |
3710 r[j][i].x = offset.x + (int)(fSin * radius[j]); | |
3711 r[j][i].y = offset.y + (int)(fCos * radius[j]); | |
3712 } | |
3713 } | |
3714 } | |
3715 if(id > 3) id = 0; | |
3716 if(degree > 359) degree = 0; | |
3717 return r[id][degree]; | |
3718 } | |
3719 | |
3720 /* range should be 0 to 30 bar if 300 meter with 100% of nitrogen or helium | |
3721 * T24 is 28 high | |
3722 */ | |
3723 void t7_tissues(const SDiveState * pState) | |
3724 { | |
3725 point_t start, change, stop; | |
3726 float value; | |
3727 uint16_t front, cns100pixel; | |
3728 char text[256]; | |
3729 uint8_t textpointer = 0; | |
3730 uint8_t color; | |
3731 | |
3732 float percent_N2; | |
3733 float percent_He; | |
3734 float partial_pressure_N2; | |
3735 float partial_pressure_He; | |
3736 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3737 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3738 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3739 |
38 | 3740 |
3741 /* N2 */ | |
3742 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3743 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3744 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3745 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3746 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3747 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3748 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3749 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3750 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3751 } |
38 | 3752 t7cY0free.WindowNumberOfTextLines = 3; |
3753 | |
3754 text[textpointer++] = '\030'; | |
3755 text[textpointer++] = TXT_2BYTE; | |
3756 text[textpointer++] = TXT2BYTE_Nitrogen; | |
3757 text[textpointer++] = '\n'; | |
3758 text[textpointer++] = '\r'; | |
3759 text[textpointer++] = TXT_2BYTE; | |
3760 text[textpointer++] = TXT2BYTE_Helium; | |
3761 text[textpointer++] = '\n'; | |
3762 text[textpointer++] = '\r'; | |
3763 text[textpointer++] = TXT_2BYTE; | |
3764 text[textpointer++] = TXT2BYTE_CNS; | |
3765 text[textpointer++] = 0; | |
3766 | |
3767 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3768 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3769 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3770 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3771 start.y = t7cH.WindowY0 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3772 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3773 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3774 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3775 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3776 } |
38 | 3777 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
3778 stop.x = start.x + CUSTOMBOX_SPACE_INSIDE; | |
3779 | |
3780 for(int i=0;i<16;i++) | |
3781 { | |
3782 stop.y = start.y; | |
3783 change.y = start.y; | |
3784 | |
3785 value = pState->lifeData.tissue_nitrogen_bar[i] - 0.7512f; | |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3786 value *= 80; |
38 | 3787 |
3788 if(value < 0) | |
3789 front = 0; | |
3790 else | |
3791 if(value > CUSTOMBOX_SPACE_INSIDE) | |
3792 front = CUSTOMBOX_SPACE_INSIDE; | |
3793 else | |
3794 front = (uint16_t)value; | |
3795 | |
3796 change.x = start.x + front; | |
3797 if(change.x != start.x) | |
3798 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
3799 if(change.x != stop.x) | |
3800 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3801 | |
3802 start.y -= 3; | |
3803 } | |
3804 | |
3805 /* He */ | |
3806 start.y -= 28 + 14; | |
3807 for(int i=0;i<16;i++) | |
3808 { | |
3809 stop.y = start.y; | |
3810 change.y = start.y; | |
3811 | |
3812 value = pState->lifeData.tissue_helium_bar[i]; | |
3813 value *= 80;//20 | |
3814 | |
3815 if(value < 0) | |
3816 front = 0; | |
3817 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
3818 front = CUSTOMBOX_SPACE_INSIDE; | |
3819 else | |
3820 front = (uint16_t)value; | |
3821 | |
3822 change.x = start.x + front; | |
3823 if(change.x != start.x) | |
3824 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
3825 if(change.x != stop.x) | |
3826 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3827 | |
3828 start.y -= 3; | |
3829 } | |
3830 | |
3831 /* CNS == Oxygen */ | |
3832 start.y -= 28 + 14; | |
3833 | |
3834 cns100pixel = (8 * CUSTOMBOX_SPACE_INSIDE) / 10; | |
3835 value = pState->lifeData.cns; | |
3836 value *= cns100pixel; | |
3837 value /= 100; | |
3838 | |
3839 if(value < 0) | |
3840 front = 0; | |
3841 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
3842 front = CUSTOMBOX_SPACE_INSIDE; | |
3843 else | |
3844 front = (uint16_t)value; | |
3845 | |
3846 if(pState->lifeData.cns < 95) | |
3847 color = CLUT_Font030; | |
3848 else if(pState->lifeData.cns < 100) | |
3849 color = CLUT_WarningYellow; | |
3850 else | |
3851 color = CLUT_WarningRed; | |
3852 | |
3853 for(int i=0;i<16;i++) | |
3854 { | |
3855 stop.y = start.y; | |
3856 change.y = start.y; | |
3857 | |
3858 change.x = start.x + front; | |
3859 if(change.x != start.x) | |
3860 GFX_draw_thick_line(1,&t7screen, start, change, color); | |
3861 if(change.x != stop.x) | |
3862 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3863 | |
3864 start.y -= 3; | |
3865 } | |
3866 | |
3867 /* where is the onload/offload limit for N2 and He */ | |
3868 decom_get_inert_gases(pState->lifeData.pressure_ambient_bar, &pState->lifeData.actualGas, &percent_N2, &percent_He); | |
3869 partial_pressure_N2 = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_N2; | |
3870 partial_pressure_He = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_He; | |
3871 | |
3872 // Nitrogen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3873 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3874 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3875 start.y = t7cH.WindowY0 + 1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3876 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3877 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3878 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3879 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3880 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3881 |
38 | 3882 stop.y = start.y - (3 * 15) - 1; |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3883 if((percent_N2 > 0) && (partial_pressure_N2 > 0.7512f)) |
38 | 3884 { |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3885 value = partial_pressure_N2 - 0.7512f; |
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3886 value *= 80; |
38 | 3887 |
3888 if(value < 0) | |
3889 front = 3; | |
3890 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
3891 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
3892 else | |
3893 front = (uint16_t)value; | |
3894 } | |
3895 else | |
3896 { | |
3897 front = 1; | |
3898 } | |
3899 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
3900 stop.x = start.x; | |
3901 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
3902 | |
3903 | |
3904 // Helium vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3905 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3906 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3907 start.y = t7cH.WindowY0 + 1 - 5 - 3*16 - 28 - 14; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3908 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3909 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3910 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3911 start.y = t7cH.WindowY1 - 5 - 3*16 - 28 - 14; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3912 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3913 |
38 | 3914 stop.y = start.y - (3 * 15) - 1; |
3915 if((percent_He > 0) && (partial_pressure_He > 0.01f)) // 0.5f | |
3916 { | |
3917 | |
3918 value = partial_pressure_He; | |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3919 value *= 80; |
38 | 3920 |
3921 if(value < 0) | |
3922 front = 3; | |
3923 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
3924 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
3925 else | |
3926 front = (uint16_t)value; | |
3927 } | |
3928 else | |
3929 { | |
3930 front = 1; | |
3931 } | |
3932 | |
3933 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
3934 stop.x = start.x; | |
3935 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
3936 | |
3937 // Oxygen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3938 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3939 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3940 start.y = t7cH.WindowY0 + 1 - 5 - 6*16 - 2*28 - 2*14; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3941 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3942 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3943 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3944 start.y = t7cH.WindowY1 - 5 - 6*16 - 2*28 - 2*14; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3945 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3946 |
38 | 3947 stop.y = start.y - (3 * 15) - 1; |
3948 | |
3949 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + cns100pixel; | |
3950 stop.x = start.x; | |
3951 GFX_draw_thick_line(2, &t7screen, start, stop, CLUT_WarningRed); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3952 |
38 | 3953 } |
3954 | |
3955 | |
3956 void t7_debug(void) | |
3957 { | |
3958 char text[256+50]; | |
3959 uint8_t textpointer = 0; | |
3960 | |
3961 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
3962 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
3963 t7cY0free.WindowNumberOfTextLines = 3; | |
3964 | |
896 | 3965 #ifdef T7_DEBUG_RUNTIME |
3966 textpointer += snprintf(&text[textpointer],50,"Main loop %ld\n\r",getMainLoopTime()); | |
3967 textpointer += snprintf(&text[textpointer],50,"Grafic loop %ld\n\r",getGfxLoopTime()); | |
3968 textpointer += snprintf(&text[textpointer],50,"Decoloop %ld\n\r",getDecoLoopTime()); | |
3969 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3970 #else | |
38 | 3971 textpointer += snprintf(&text[textpointer],50,"Ambient [bar]\n\r"); |
3972 textpointer += snprintf(&text[textpointer],50,"Surface [bar] + salt\n\r"); | |
3973 // textpointer += snprintf(&text[textpointer],50,"Difference [mbar]\n\r"); | |
3974 textpointer += snprintf(&text[textpointer],50,"ShallowCounter [s]\n\r"); | |
3975 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3976 | |
3977 t7cY0free.WindowY0 -= 52; | |
3978 // snprintf(text,60,"%0.2f\n\r%0.2f %u%%\n\r%0.0f",stateUsed->lifeData.pressure_ambient_bar, stateUsed->lifeData.pressure_surface_bar, settingsGetPointer()->salinity, 1000 * (stateUsed->lifeData.pressure_ambient_bar-stateUsed->lifeData.pressure_surface_bar)); | |
3979 snprintf(text,60, | |
3980 "%0.2f\n\r" | |
3981 "%0.2f %u%%\n\r" | |
3982 "%u" | |
3983 ,stateUsed->lifeData.pressure_ambient_bar | |
3984 ,stateUsed->lifeData.pressure_surface_bar | |
3985 ,settingsGetPointer()->salinity | |
3986 ,stateUsed->lifeData.counterSecondsShallowDepth); | |
3987 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
896 | 3988 #endif |
38 | 3989 } |
3990 | |
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
3991 void t7_showPosition(void) |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
3992 { |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
3993 char text[256+50]; |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
3994 uint8_t textpointer = 0; |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
3995 |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
3996 t7cY0free.WindowLineSpacing = 28 + 48 + 14; |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
3997 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
3998 t7cY0free.WindowNumberOfTextLines = 3; |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
3999 |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4000 textpointer += snprintf(&text[textpointer],50,"\001Longitude\n\r"); |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4001 textpointer += snprintf(&text[textpointer],50,"\001Latitude\n\r"); |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4002 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4003 |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4004 t7cY0free.WindowY0 -= 52; |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4005 snprintf(text,60, |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4006 "\001%0.5f\n\r" |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4007 "\001%0.5f\n\r" |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4008 ,stateUsed->lifeData.gnssPosition.Longitude |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4009 ,stateUsed->lifeData.gnssPosition.Latitude ); |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4010 |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4011 GFX_write_string(&FontT42, &t7cY0free, text, 1); |
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4012 } |
38 | 4013 void t7_SummaryOfLeftCorner(void) |
4014 { | |
4015 char text[256+60]; | |
4016 uint8_t textpointer = 0; | |
656 | 4017 SSettings* pSettings = settingsGetPointer(); |
38 | 4018 |
4019 const SDecoinfo * pDecoinfoStandard; | |
4020 const SDecoinfo * pDecoinfoFuture; | |
4021 float fCNS; | |
4022 | |
4023 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
4024 { | |
4025 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
4026 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
4027 } | |
4028 else | |
4029 { | |
4030 pDecoinfoStandard = &stateUsed->decolistVPM; | |
4031 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
4032 } | |
4033 | |
4034 fCNS = stateUsed->lifeData .cns; | |
4035 if(fCNS > 999) | |
4036 fCNS = 999; | |
4037 | |
4038 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
656 | 4039 if(pSettings->FlipDisplay) |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4040 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4041 t7cY0free.WindowY1 = 400; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4042 } |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4043 |
38 | 4044 t7cY0free.WindowLineSpacing = 48; |
4045 t7cY0free.WindowNumberOfTextLines = 6; | |
4046 t7cY0free.WindowTab = 420; | |
4047 | |
4048 // header | |
4049 textpointer = 0; | |
4050 text[textpointer++] = '\032'; | |
4051 text[textpointer++] = '\016'; | |
4052 text[textpointer++] = '\016'; | |
4053 text[textpointer++] = TXT_ppO2; | |
4054 text[textpointer++] = '\n'; | |
4055 text[textpointer++] = '\r'; | |
4056 text[textpointer++] = TXT_Ceiling; | |
4057 text[textpointer++] = '\n'; | |
4058 text[textpointer++] = '\r'; | |
4059 text[textpointer++] = TXT_ActualGradient; | |
4060 text[textpointer++] = '\n'; | |
4061 text[textpointer++] = '\r'; | |
4062 text[textpointer++] = TXT_CNS; | |
4063 text[textpointer++] = '\n'; | |
4064 text[textpointer++] = '\r'; | |
4065 text[textpointer++] = TXT_FutureTTS; | |
656 | 4066 text[textpointer++] = '\n'; |
4067 text[textpointer++] = '\r'; | |
662 | 4068 if((pSettings->scrubTimerMode != SCRUB_TIMER_OFF) && (isLoopMode(pSettings->dive_mode))) |
656 | 4069 { |
4070 text[textpointer++] = TXT_ScrubTime; | |
4071 | |
4072 } | |
38 | 4073 text[textpointer++] = '\017'; |
656 | 4074 text[textpointer++] = 0; |
4075 if(!pSettings->FlipDisplay) | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4076 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4077 t7cY0free.WindowX0 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4078 t7cY0free.WindowY0 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4079 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4080 t7cY0free.WindowX0 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4081 t7cY0free.WindowY0 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4082 } |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4083 else |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4084 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4085 t7cY0free.WindowY1 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4086 t7cY0free.WindowX1 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4087 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4088 t7cY0free.WindowY1 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4089 t7cY0free.WindowX1 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4090 } |
38 | 4091 textpointer = 0; |
4092 text[textpointer++] = '\t'; | |
4093 textpointer += snprintf(&text[textpointer],10,"\020%01.2f", stateUsed->lifeData.ppO2); | |
4094 text[textpointer++] = '\n'; | |
4095 text[textpointer++] = '\r'; | |
4096 text[textpointer++] = '\t'; | |
4097 if((pDecoinfoStandard->output_ceiling_meter > 99.9f) || (settingsGetPointer()->nonMetricalSystem)) | |
215
4a0ebade04f5
Bugfix, trivial: correctly present avg depth in overview custom
Jan Mulder <jlmulder@xs4all.nl>
parents:
214
diff
changeset
|
4098 textpointer += snprintf(&text[textpointer],10,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); |
38 | 4099 else |
215
4a0ebade04f5
Bugfix, trivial: correctly present avg depth in overview custom
Jan Mulder <jlmulder@xs4all.nl>
parents:
214
diff
changeset
|
4100 textpointer += snprintf(&text[textpointer],10,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); |
38 | 4101 text[textpointer++] = '\n'; |
4102 text[textpointer++] = '\r'; | |
4103 text[textpointer++] = '\t'; | |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
4104 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017", 100 * pDecoinfoStandard->super_saturation); |
38 | 4105 text[textpointer++] = '\n'; |
4106 text[textpointer++] = '\r'; | |
4107 text[textpointer++] = '\t'; | |
4108 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017",fCNS); | |
4109 text[textpointer++] = '\n'; | |
4110 text[textpointer++] = '\r'; | |
4111 text[textpointer++] = '\t'; | |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
4112 if (pDecoinfoFuture->output_time_to_surface_seconds < 1000 * 60) |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
4113 textpointer += snprintf(&text[textpointer],10,"\020%i'", (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 60); |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
4114 else |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
4115 textpointer += snprintf(&text[textpointer],10,"\020%ih", (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
656 | 4116 |
662 | 4117 if((pSettings->scrubTimerMode != SCRUB_TIMER_OFF) && (isLoopMode(pSettings->dive_mode))) |
656 | 4118 { |
4119 text[textpointer++] = '\n'; | |
4120 text[textpointer++] = '\r'; | |
4121 text[textpointer++] = '\t'; | |
758
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
4122 |
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
4123 textpointer += printScrubberText(&text[textpointer], 10, pSettings); |
656 | 4124 } |
38 | 4125 text[textpointer++] = 0; |
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
4126 Gfx_colorsscheme_mod(text, 0); |
38 | 4127 GFX_write_string(&FontT42, &t7cY0free, text, 1); |
4128 } | |
4129 | |
4130 void t7_compass(uint16_t ActualHeading, uint16_t UserSetHeading) | |
4131 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4132 uint16_t ActualHeadingRose; |
38 | 4133 uint16_t LeftBorderHeading, LineHeading; |
4134 uint32_t offsetPicture; | |
4135 point_t start, stop, center; | |
4136 static int32_t LastHeading = 0; | |
4137 int32_t newHeading = 0; | |
4138 int32_t diff = 0; | |
4139 int32_t diff2 = 0; | |
4140 | |
4141 int32_t diffAbs = 0; | |
4142 int32_t diffAbs2 = 0; | |
4143 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4144 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4145 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4146 |
38 | 4147 newHeading = ActualHeading; |
4148 | |
4149 diff = newHeading - LastHeading; | |
4150 | |
4151 if(newHeading < LastHeading) | |
4152 diff2 = newHeading + 360 - LastHeading; | |
4153 else | |
4154 diff2 = newHeading - 360 - LastHeading; | |
4155 | |
4156 diffAbs = diff; | |
4157 if(diffAbs < 0) | |
4158 diffAbs *= -1; | |
4159 | |
4160 diffAbs2 = diff2; | |
4161 if(diffAbs2 < 0) | |
4162 diffAbs2 *= -1; | |
4163 | |
4164 | |
4165 if(diffAbs <= diffAbs2) | |
4166 newHeading = LastHeading + (diff / 2); | |
4167 else | |
4168 newHeading = LastHeading + (diff2 / 2); | |
4169 | |
4170 if(newHeading < 0) | |
4171 newHeading += 360; | |
4172 else | |
4173 if(newHeading >= 360) | |
4174 newHeading -= 360; | |
4175 | |
4176 LastHeading = newHeading; | |
4177 ActualHeading = newHeading; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4178 ActualHeadingRose = ActualHeading; |
225
2bb1db22b5f5
cleanup: random set of cleanups
Jan Mulder <jlmulder@xs4all.nl>
parents:
222
diff
changeset
|
4179 |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4180 if(pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4181 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4182 ActualHeadingRose = 360 - ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4183 if (ActualHeadingRose < 170) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4184 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4185 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4186 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4187 if (ActualHeadingRose < 90) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4188 ActualHeading = ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4189 } |
38 | 4190 |
4191 // new hw 160822 | |
4192 // if (ActualHeading >= 360 + 90) | |
4193 // ActualHeading = 360; | |
4194 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4195 LeftBorderHeading = 2 * (ActualHeadingRose - (CUSTOMBOX_SPACE_INSIDE/4)); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4196 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4197 if(pSettings->FlipDisplay) /* add offset caused by mirrowed drawing */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4198 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4199 LeftBorderHeading += 2 * 80; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4200 } |
38 | 4201 |
4202 offsetPicture = LeftBorderHeading * t7screenCompass.ImageHeight * 2; | |
4203 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4204 /* the background is used to draw the rotating compass rose */ |
38 | 4205 background.pointer = t7screenCompass.FBStartAdress+offsetPicture; |
4206 background.x0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4207 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4208 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4209 background.y0 = 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4210 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4211 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4212 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4213 background.y0 = 480 - t7screenCompass.ImageHeight - 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4214 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4215 |
38 | 4216 background.width = CUSTOMBOX_SPACE_INSIDE; |
4217 background.height = t7screenCompass.ImageHeight; | |
4218 | |
4219 | |
4220 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + (CUSTOMBOX_SPACE_INSIDE/2); | |
4221 stop.x = start.x; | |
4222 start.y = 65; | |
4223 stop.y = start.y + 55; | |
4224 GFX_draw_line(&t7screen, start, stop, CLUT_Font030); | |
4225 | |
4226 | |
4227 center.x = start.x; | |
4228 center.y = 300; | |
4229 | |
4230 stop.x = center.x + 44; | |
4231 stop.y = center.y + 24; | |
4232 | |
4233 | |
4234 while(ActualHeading > 359) ActualHeading -= 360; | |
4235 | |
4236 LineHeading = 360 - ActualHeading; | |
4237 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(0,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font030); // North | |
4238 LineHeading += 90; | |
4239 if(LineHeading > 359) LineHeading -= 360; | |
4240 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Maintick | |
4241 LineHeading += 90; | |
4242 if(LineHeading > 359) LineHeading -= 360; | |
4243 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4244 LineHeading += 90; | |
4245 if(LineHeading > 359) LineHeading -= 360; | |
4246 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4247 | |
4248 LineHeading = 360 - ActualHeading; | |
4249 LineHeading += 45; | |
4250 if(LineHeading > 359) LineHeading -= 360; | |
4251 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
4252 LineHeading += 90; | |
4253 if(LineHeading > 359) LineHeading -= 360; | |
4254 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4255 LineHeading += 90; | |
4256 if(LineHeading > 359) LineHeading -= 360; | |
4257 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4258 LineHeading += 90; | |
4259 if(LineHeading > 359) LineHeading -= 360; | |
4260 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4261 | |
4262 LineHeading = 360 - ActualHeading; | |
4263 LineHeading += 22; | |
4264 if(LineHeading > 359) LineHeading -= 360; | |
4265 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
4266 LineHeading += 45; | |
4267 if(LineHeading > 359) LineHeading -= 360; | |
4268 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4269 LineHeading += 45; | |
4270 if(LineHeading > 359) LineHeading -= 360; | |
4271 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4272 LineHeading += 45; | |
4273 if(LineHeading > 359) LineHeading -= 360; | |
4274 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4275 LineHeading += 45; | |
4276 if(LineHeading > 359) LineHeading -= 360; | |
4277 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
4278 LineHeading += 45; | |
4279 if(LineHeading > 359) LineHeading -= 360; | |
4280 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4281 LineHeading += 45; | |
4282 if(LineHeading > 359) LineHeading -= 360; | |
4283 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4284 LineHeading += 45; | |
4285 if(LineHeading > 359) LineHeading -= 360; | |
4286 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4287 | |
4288 if(UserSetHeading) | |
4289 { | |
4290 LineHeading = UserSetHeading + 360 - ActualHeading; | |
4291 if(LineHeading > 359) LineHeading -= 360; | |
4292 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserHeadingTick); | |
4293 | |
4294 // R�ckpeilung, User Back Heading | |
4295 LineHeading = UserSetHeading + 360 + 180 - ActualHeading; | |
4296 if(LineHeading > 359) LineHeading -= 360; | |
4297 if(LineHeading > 359) LineHeading -= 360; | |
4298 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserBackHeadingTick); | |
4299 } | |
4300 | |
4301 center.x = start.x; | |
4302 center.y = 250; | |
4303 GFX_draw_circle(&t7screen, center, 116, CLUT_Font030); | |
4304 GFX_draw_circle(&t7screen, center, 118, CLUT_Font030); | |
4305 GFX_draw_circle(&t7screen, center, 117, CLUT_Font030); | |
4306 | |
4307 | |
4308 } | |
4309 | |
4310 | |
4311 /* Font_T42: N is 27 px, S is 20 px, W is 36 px, E is 23 px | |
4312 * max is NW with 63 px | |
4313 * Font_T24: N is 15 px, S is 12 px, W is 20 px, E is 13 px | |
4314 * max is NW with 35 px | |
4315 * NE is 28 px | |
4316 * SW is 32 px | |
4317 * SE is 25 px | |
4318 * space between each is 45 px * 2 | |
4319 * FirstItem List | |
4320 * \177 \177 prepare for size | |
4321 */ | |
4322 void init_t7_compass(void) | |
4323 { | |
4324 t7screenCompass.FBStartAdress = getFrame(21); | |
4325 | |
4326 char text[256]; | |
4327 uint8_t textpointer = 0; | |
4328 | |
4329 text[textpointer++] = '\030'; | |
4330 text[textpointer++] = '\177'; | |
4331 text[textpointer++] = '\177'; | |
4332 text[textpointer++] = 76; // 90 - 14 | |
4333 text[textpointer++] = '\016'; | |
4334 text[textpointer++] = '\016'; | |
4335 text[textpointer++] = 'N'; | |
4336 text[textpointer++] = 'E'; // 96 + 28 = 124 total | |
4337 text[textpointer++] = '\017'; | |
4338 text[textpointer++] = '\177'; | |
4339 text[textpointer++] = '\177'; | |
4340 text[textpointer++] = 64; // 90 - 14 - 12 | |
4341 text[textpointer++] = 'E'; // 124 + 74 + 23 = 221 total | |
4342 text[textpointer++] = '\177'; | |
4343 text[textpointer++] = '\177'; | |
4344 text[textpointer++] = 66; // 90 - 11 - 13 | |
4345 text[textpointer++] = '\016'; | |
4346 text[textpointer++] = '\016'; | |
4347 text[textpointer++] = 'S'; | |
4348 text[textpointer++] = 'E'; | |
4349 text[textpointer++] = '\017'; | |
4350 text[textpointer++] = '\177'; | |
4351 text[textpointer++] = '\177'; | |
4352 text[textpointer++] = 68; // 90 - 12 - 10 | |
4353 text[textpointer++] = 'S'; | |
4354 text[textpointer++] = '\177'; | |
4355 text[textpointer++] = '\177'; | |
4356 text[textpointer++] = 64; // 90 - 10 - 16 | |
4357 text[textpointer++] = '\016'; | |
4358 text[textpointer++] = '\016'; | |
4359 text[textpointer++] = 'S'; | |
4360 text[textpointer++] = 'W'; | |
4361 text[textpointer++] = '\017'; | |
4362 text[textpointer++] = '\177'; | |
4363 text[textpointer++] = '\177'; | |
4364 text[textpointer++] = 56; // 90 - 16 - 18 | |
4365 text[textpointer++] = 'W'; | |
4366 text[textpointer++] = '\177'; | |
4367 text[textpointer++] = '\177'; | |
4368 text[textpointer++] = 54; // 90 - 18 - 18 | |
4369 text[textpointer++] = '\016'; | |
4370 text[textpointer++] = '\016'; | |
4371 text[textpointer++] = 'N'; | |
4372 text[textpointer++] = 'W'; | |
4373 text[textpointer++] = '\017'; | |
4374 text[textpointer++] = '\177'; | |
4375 text[textpointer++] = '\177'; | |
4376 text[textpointer++] = 59; // 90 - 17 - 14 | |
4377 text[textpointer++] = 'N'; | |
4378 text[textpointer++] = '\177'; | |
4379 text[textpointer++] = '\177'; | |
4380 text[textpointer++] = 63; // 90 - 13 - 14 | |
4381 text[textpointer++] = '\016'; | |
4382 text[textpointer++] = '\016'; | |
4383 text[textpointer++] = 'N'; | |
4384 text[textpointer++] = 'E'; | |
4385 text[textpointer++] = '\017'; | |
4386 text[textpointer++] = '\177'; | |
4387 text[textpointer++] = '\177'; | |
4388 text[textpointer++] = 64; // 90 - 14 - 12 | |
4389 text[textpointer++] = 'E'; | |
4390 text[textpointer++] = '\177'; | |
4391 text[textpointer++] = '\177'; | |
4392 text[textpointer++] = 66; // 90 - 11 - 13 | |
4393 text[textpointer++] = '\016'; | |
4394 text[textpointer++] = '\016'; | |
4395 text[textpointer++] = 'S'; | |
4396 text[textpointer++] = 'E'; | |
4397 text[textpointer++] = '\017'; | |
4398 text[textpointer++] = '\177'; | |
4399 text[textpointer++] = '\177'; | |
4400 text[textpointer++] = 68; // 90 - 12 - 10 | |
4401 text[textpointer++] = 'S'; | |
4402 text[textpointer++] = '\177'; | |
4403 text[textpointer++] = '\177'; | |
4404 text[textpointer++] = 64; // 90 - 10 - 16 | |
4405 text[textpointer++] = '\016'; | |
4406 text[textpointer++] = '\016'; | |
4407 text[textpointer++] = 'S'; | |
4408 text[textpointer++] = 'W'; | |
4409 text[textpointer++] = '\017'; | |
4410 text[textpointer++] = 0; // end | |
4411 | |
4412 GFX_write_string(&FontT42,&t7pCompass,text,1); | |
4413 | |
4414 releaseAllFramesExcept(21,t7screenCompass.FBStartAdress); | |
4415 } | |
4416 | |
4417 | |
4418 void t7_miniLiveLogProfile(void) | |
4419 { | |
4420 SWindowGimpStyle wintemp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4421 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4422 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4423 |
38 | 4424 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
4425 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4426 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4427 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4428 wintemp.top = 480 - t7l1.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4429 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4430 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4431 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4432 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4433 wintemp.top = t7l1.WindowY1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4434 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4435 } |
38 | 4436 |
4437 uint16_t max_depth = (uint16_t)(stateUsed->lifeData.max_depth_meter * 10); | |
4438 | |
4439 GFX_graph_print(&t7screen, &wintemp, 0,1,0, max_depth, getMiniLiveLogbookPointerToData(), getMiniLiveLogbookActualDataLength(), CLUT_Font030, NULL); | |
4440 } | |
4441 | |
4442 void t7_logo_OSTC(void) | |
4443 { | |
4444 SWindowGimpStyle windowGimp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4445 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4446 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4447 |
38 | 4448 /* OSTC logo */ |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4449 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4450 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4451 windowGimp.left = t7l1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4452 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4453 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4454 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4455 windowGimp.left = t7r1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4456 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4457 |
38 | 4458 windowGimp.top = 40 + 32; |
4459 GFX_draw_image_monochrome(&t7screen, windowGimp, &ImgOSTC, 0); | |
4460 } | |
672 | 4461 |
4462 static uint16_t ChargerLog[60] = {10,10,10,10,10,10,10,10,10,10, | |
4463 10,10,10,10,10,10,10,10,10,10, | |
4464 10,10,10,10,10,10,10,10,10,10, | |
4465 10,10,10,10,10,10,10,10,10,10, | |
4466 10,10,10,10,10,10,10,10,10,10, | |
4467 10,10,10,10,10,10,10,10,10,10}; | |
4468 | |
4469 uint16_t LogDeltaCharge(float charge) | |
4470 { | |
4471 static uint8_t curIndex = 0; | |
4472 static float averageSpeed = 0.0; | |
4473 uint16_t level = 0; | |
4474 uint16_t completeSec = 0; | |
4475 | |
4476 if(charge > 0.003) | |
4477 { | |
4478 level = 2; | |
4479 } | |
4480 else if(charge > 0.0025) | |
4481 { | |
4482 level = 3; | |
4483 } | |
4484 else if(charge > 0.002) | |
4485 { | |
4486 level = 4; | |
4487 } | |
4488 else if(charge > 0.0015) | |
4489 { | |
4490 level = 5; | |
4491 } | |
4492 else if(charge > 0.001) | |
4493 { | |
4494 level = 6; | |
4495 } | |
4496 else if(charge > 0.0005) | |
4497 { | |
4498 level = 7; | |
4499 } | |
4500 else if(charge > 0.00) | |
4501 { | |
4502 level = 8; | |
4503 } | |
4504 else | |
4505 { | |
4506 level = 10; | |
4507 } | |
859 | 4508 if(curIndex > 1) |
4509 { | |
4510 level = (level + ChargerLog[curIndex - 1]) / 2; /* smooth small jumps */ | |
4511 } | |
672 | 4512 if(curIndex < 59) |
4513 { | |
4514 ChargerLog[curIndex++] = level; | |
4515 } | |
4516 else | |
4517 { | |
4518 memcpy (&ChargerLog[0],&ChargerLog[1],sizeof(ChargerLog) - 1); | |
4519 ChargerLog[curIndex] = level; | |
4520 } | |
859 | 4521 if(curIndex > 1) /* estimate time til charging is complete */ |
672 | 4522 { |
4523 averageSpeed = ((averageSpeed * (curIndex-1)) + charge) / curIndex; | |
4524 completeSec = (100.0 - stateUsed->lifeData.battery_charge) / averageSpeed; | |
4525 } | |
4526 else | |
4527 { | |
4528 completeSec = 0xffff; | |
4529 } | |
4530 return completeSec; | |
4531 } | |
4532 | |
4533 uint16_t* getChargeLog() | |
4534 { | |
4535 return ChargerLog; | |
4536 } | |
4537 | |
4538 void t7_ChargerView(void) | |
4539 { | |
4540 static float lastCharge = 0.0; | |
4541 float localCharge = 0.0; | |
4542 static uint32_t lastTick = 0; | |
4543 uint32_t curTick = 0; | |
4544 static float speed = 0.0; | |
4545 float deltatime = 0.0; | |
4546 | |
4547 char text[256+50]; | |
4548 uint8_t textpointer = 0; | |
4549 static uint16_t remainingSec = 0; | |
4550 uint16_t hoursto100 = 0; | |
4551 char indicator = '~'; | |
4552 | |
4553 point_t start, stop; | |
4554 | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4555 SWindowGimpStyle wintemp; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4556 SSettings* pSettings; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4557 pSettings = settingsGetPointer(); |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4558 |
672 | 4559 t7cY0free.WindowLineSpacing = 28 + 48 + 14; |
4560 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
4561 t7cY0free.WindowNumberOfTextLines = 3; | |
4562 | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4563 |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4564 if(pSettings->FlipDisplay) |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4565 { |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4566 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4567 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4568 } |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4569 |
672 | 4570 localCharge = stateUsed->lifeData.battery_charge; |
4571 if(localCharge < 0.0) | |
4572 { | |
4573 localCharge *= -1.0; | |
4574 } | |
4575 | |
4576 if(stateUsed->chargeStatus != CHARGER_off) | |
4577 { | |
859 | 4578 curTick = HAL_GetTick(); |
4579 deltatime = (curTick - lastTick); | |
4580 | |
4581 if((deltatime > 3000) || (lastCharge != localCharge)) /* Charge value update is expected every 2 second. */ | |
4582 { /* Added timeout to keep graph moving in case charger is temporary idle */ | |
4583 if(lastCharge != localCharge) | |
672 | 4584 { |
859 | 4585 if(lastCharge < localCharge) |
4586 { | |
4587 speed = (localCharge - lastCharge) * 1000.0 / deltatime; | |
4588 } | |
4589 | |
4590 if(localCharge > 100.0) | |
4591 { | |
4592 localCharge = 100.0; | |
4593 } | |
4594 lastCharge = localCharge; | |
672 | 4595 } |
4596 deltatime = 0; | |
4597 remainingSec = LogDeltaCharge(speed); | |
4598 speed = 0; | |
859 | 4599 lastTick = curTick; |
672 | 4600 } |
4601 } | |
4602 textpointer += snprintf(&text[textpointer],50,"\n\r"); | |
4603 textpointer += snprintf(&text[textpointer],50,"\001%c\n\r",TXT_ChargeHour); | |
4604 | |
4605 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
4606 | |
4607 hoursto100 = remainingSec / 3600; /* reduce to hours */ | |
4608 if(hoursto100 < 1) | |
4609 { | |
4610 indicator = '<'; | |
4611 hoursto100 = 1; | |
4612 } | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4613 |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4614 if(!pSettings->FlipDisplay) |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4615 { |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4616 t7cY0free.WindowY0 -= 52; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4617 } |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4618 else |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4619 { |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4620 t7cY0free.WindowY1 += 52; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4621 } |
672 | 4622 |
4623 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->chargeStatus != CHARGER_off)) | |
4624 { | |
4625 snprintf(text,60, | |
693 | 4626 "\001%0.2f\016\016%%\017\n\r" |
672 | 4627 "\001%c%d\n\r" |
4628 ,stateUsed->lifeData.battery_charge | |
4629 ,indicator | |
4630 ,hoursto100); | |
4631 } | |
4632 else | |
4633 { | |
4634 snprintf(text,60, | |
4635 "\001---\n\r" | |
4636 "\001---\n\r"); | |
4637 } | |
4638 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
4639 | |
4640 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + 50; | |
4641 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE - 100; | |
4642 | |
4643 | |
4644 if(!pSettings->FlipDisplay) | |
4645 { | |
4646 wintemp.top = 480 - t7l1.WindowY0 + 115; | |
4647 wintemp.bottom = wintemp.top + 100; | |
4648 } | |
4649 else | |
4650 { | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4651 wintemp.top = t7l1.WindowY1 + 102; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4652 wintemp.bottom = wintemp.top + 100; |
672 | 4653 } |
4654 | |
4655 start.x = wintemp.left-5; | |
4656 start.y = 90; | |
4657 | |
4658 stop.x = wintemp.right + 5 - start.x; | |
4659 stop.y = 100; | |
4660 GFX_draw_box(&t7screen, start, stop,1, CLUT_Font020); | |
4661 | |
4662 if(stateUsed->chargeStatus != CHARGER_off) | |
4663 { | |
4664 GFX_graph_print(&t7screen, &wintemp, 1,1,0, 10, getChargeLog(), 60, CLUT_Font030, NULL); | |
4665 } | |
4666 else | |
4667 { | |
4668 GFX_graph_print(&t7screen, &wintemp, 1,1,0, 10, getChargeLog(), 60, CLUT_Font031, NULL); | |
4669 } | |
4670 | |
4671 } | |
777
6a8cf91e5b22
This is only showing if one of the compass views is visible. It should make it possible to verify that a correct heading is set as the user can see the compass readout when pushing the button. (mikeller)
heinrichsweikamp
parents:
775
diff
changeset
|
4672 |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4673 |
777
6a8cf91e5b22
This is only showing if one of the compass views is visible. It should make it possible to verify that a correct heading is set as the user can see the compass readout when pushing the button. (mikeller)
heinrichsweikamp
parents:
775
diff
changeset
|
4674 bool t7_isCompassShowing(void) |
6a8cf91e5b22
This is only showing if one of the compass views is visible. It should make it possible to verify that a correct heading is set as the user can see the compass readout when pushing the button. (mikeller)
heinrichsweikamp
parents:
775
diff
changeset
|
4675 { |
6a8cf91e5b22
This is only showing if one of the compass views is visible. It should make it possible to verify that a correct heading is set as the user can see the compass readout when pushing the button. (mikeller)
heinrichsweikamp
parents:
775
diff
changeset
|
4676 return selection_customview == CVIEW_Compass || selection_custom_field == LLC_Compass; |
6a8cf91e5b22
This is only showing if one of the compass views is visible. It should make it possible to verify that a correct heading is set as the user can see the compass readout when pushing the button. (mikeller)
heinrichsweikamp
parents:
775
diff
changeset
|
4677 } |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4678 |
882 | 4679 void t7_drawAcentGraph(uint8_t color) |
4680 { | |
4681 point_t start, stop; | |
4682 | |
4683 SSettings* pSettings; | |
4684 pSettings = settingsGetPointer(); | |
4685 | |
4686 | |
4687 if(!pSettings->FlipDisplay) | |
4688 { | |
4689 start.y = t7l1.WindowY0 - 1; | |
4690 } | |
4691 else | |
4692 { | |
4693 start.y = t7l3.WindowY0 - 25; | |
4694 } | |
4695 | |
4696 for(int i = 0; i<4;i++) | |
4697 { | |
4698 start.y += 5*6; | |
4699 stop.y = start.y; | |
4700 start.x = CUSTOMBOX_LINE_LEFT - 1; | |
4701 stop.x = start.x - 17; | |
4702 GFX_draw_line(&t7screen, start, stop, 0); | |
4703 // start.x = CUSTOMBOX_LINE_RIGHT + 2; old right too | |
4704 // stop.x = start.x + 17; | |
4705 // GFX_draw_line(&t7screen, start, stop, 0); | |
4706 } | |
4707 // new thick bar design Sept. 2015 | |
4708 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 3 - 5; | |
4709 stop.x = start.x; | |
4710 if(!pSettings->FlipDisplay) | |
4711 { | |
4712 start.y = t7l1.WindowY0 - 1; | |
4713 } | |
4714 else | |
4715 { | |
4716 start.y = t7l3.WindowY0 - 25; | |
4717 } | |
4718 stop.y = start.y + (uint16_t)(stateUsed->lifeData.ascent_rate_meter_per_min * 6); | |
4719 stop.y -= 3; // wegen der Liniendicke von 12 anstelle von 9 | |
4720 if(stop.y >= 470) | |
4721 stop.y = 470; | |
4722 start.y += 7; // starte etwas weiter oben | |
4723 if(color == 0) | |
4724 { | |
4725 color = CLUT_EverythingOkayGreen; /* do not use white color for drawing graph */ | |
4726 } | |
4727 | |
4728 GFX_draw_thick_line(12,&t7screen, start, stop, color); | |
4729 } | |
4730 | |
4731 #define ASCENT_GRAPH_YPIXEL 120 | |
4732 | |
4733 uint8_t t7_drawSlowExitGraph() | |
4734 { | |
4735 static SSlowExitState slowExitState = SE_END; | |
4736 static uint16_t countDownSec = 0; | |
4737 static uint8_t drawingMeterStep; | |
4738 static float exitDepthMeter = 0.0; | |
4739 static uint32_t exitSecTick = 0; | |
4740 | |
4741 uint8_t index = 0; | |
4742 static uint8_t color = 0; | |
4743 point_t start, stop; | |
4744 | |
4745 SSettings* pSettings; | |
4746 pSettings = settingsGetPointer(); | |
4747 | |
4748 if(stateUsed->lifeData.max_depth_meter < pSettings->last_stop_depth_meter) /* start of dive => reinit timer */ | |
4749 { | |
4750 if(slowExitState != SE_INIT) | |
4751 { | |
4752 //stepPerSecond = pSettings->last_stop_depth_meter / pSettings->slowExitTime; | |
4753 countDownSec = pSettings->slowExitTime * 60; | |
4754 drawingMeterStep = ASCENT_GRAPH_YPIXEL / pSettings->last_stop_depth_meter; /* based on 120 / 4 = 30 of standard ascent graph */ | |
4755 slowExitState = SE_INIT; | |
4756 exitDepthMeter = pSettings->last_stop_depth_meter; | |
4757 color = 0; | |
4758 } | |
4759 } | |
4760 else | |
4761 { | |
4762 if(slowExitState != SE_END) | |
4763 { | |
892 | 4764 if((slowExitState == SE_INIT) && (stateUsed->lifeData.dive_time_seconds > 900)) /* min 15min divetime */ |
882 | 4765 { |
4766 slowExitState = SE_ACTIVE; | |
4767 exitSecTick = HAL_GetTick(); | |
4768 } | |
892 | 4769 else if(slowExitState == SE_ACTIVE) |
882 | 4770 { |
892 | 4771 if(time_elapsed_ms(exitSecTick, HAL_GetTick()) > 1000) |
882 | 4772 { |
892 | 4773 exitSecTick = HAL_GetTick(); |
4774 | |
4775 /* select depth digit color */ | |
4776 if(fabsf(stateUsed->lifeData.depth_meter - exitDepthMeter) < 0.5 ) | |
4777 { | |
4778 color = CLUT_NiceGreen; | |
4779 } | |
4780 else if(fabsf(stateUsed->lifeData.depth_meter - exitDepthMeter) <= 1.5) | |
4781 { | |
4782 color = CLUT_WarningYellow; | |
4783 } | |
4784 else if(stateUsed->lifeData.depth_meter - exitDepthMeter < -1.5 ) | |
4785 { | |
4786 color = CLUT_WarningRed; | |
4787 } | |
4788 else | |
4789 { | |
4790 color = 0; | |
4791 } | |
4792 | |
4793 if((fabsf(stateUsed->lifeData.depth_meter - exitDepthMeter) <= 1.6 ) /* only decrease counter if diver is close to target depth */ | |
4794 || (color == CLUT_WarningRed)) /* or if diver is far ahead */ | |
4795 { | |
4796 countDownSec--; | |
4797 if(countDownSec == 0) | |
4798 { | |
4799 slowExitState = SE_END; | |
4800 color = 0; | |
4801 } | |
4802 exitDepthMeter -= (pSettings->last_stop_depth_meter / (float)(pSettings->slowExitTime * 60)); | |
4803 } | |
882 | 4804 } |
892 | 4805 if(!pSettings->FlipDisplay) |
882 | 4806 { |
892 | 4807 start.y = t7l1.WindowY0 - 1; |
882 | 4808 } |
4809 else | |
4810 { | |
892 | 4811 start.y = t7l3.WindowY0 - 25; |
882 | 4812 } |
4813 | |
892 | 4814 for(index = 0; index < pSettings->last_stop_depth_meter; index++) /* draw meter indicators */ |
882 | 4815 { |
892 | 4816 start.y += drawingMeterStep; |
4817 stop.y = start.y; | |
4818 start.x = CUSTOMBOX_LINE_LEFT - 1; | |
4819 stop.x = start.x - 40; | |
4820 GFX_draw_line(&t7screen, start, stop, 0); | |
882 | 4821 } |
892 | 4822 |
4823 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 20; | |
4824 stop.x = start.x; | |
4825 if(!pSettings->FlipDisplay) | |
4826 { | |
4827 start.y = t7l1.WindowY0 + ASCENT_GRAPH_YPIXEL; | |
4828 } | |
4829 else | |
4830 { | |
4831 start.y = t7l3.WindowY0 - 25; | |
4832 } | |
4833 stop.y = start.y - countDownSec * (ASCENT_GRAPH_YPIXEL / (float)(pSettings->slowExitTime * 60.0)); | |
4834 if(stop.y >= 470) | |
4835 stop.y = 470; | |
4836 | |
4837 GFX_draw_thick_line(15,&t7screen, start, stop, 3); | |
4838 /* mark diver depth */ | |
4839 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 25; | |
4840 stop.x = start.x + 15; | |
4841 | |
4842 start.y = start.y - (stateUsed->lifeData.depth_meter *120 / pSettings->last_stop_depth_meter); | |
882 | 4843 stop.y = start.y; |
892 | 4844 GFX_draw_thick_line(10,&t7screen, start, stop, 9); |
882 | 4845 } |
4846 } | |
4847 } | |
4848 return color; | |
4849 } | |
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4850 void t7_tick(void) |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4851 { |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4852 SSettings *settings = settingsGetPointer(); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4853 |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4854 int nowS = current_second(); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4855 updateTimer(settings, nowS, false); |
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4856 } |