Mercurial > public > ostc4
annotate Discovery/Src/t7.c @ 471:73da921869d9 fix-bat-2
bugfix: implement battery charge percentage in dive header
This commit is (much) less trivial than the related 919e5cb51c92.
First, rename the CCRmode attribute (corresponding to byte Ox59) of
the SLogbookHeaderOSTC3. This byte (according to the hwOS interface
document) does not contain any CCR related value, but it contains
"battery information". Already since 2017, this byte is used from
libdivecomputer to interface the charge percentage. So, its
renamed from CCRmode to batteryCharge, to reflect its true purpose.
Now, simply add a batteryCharge attribute to the SLogbookHeader
(and see below why that is possible, without breaking things).
The remaining changes are trivial to implement battery charge
percentage in dive header.
Caveat: do not get confused by the exact role of the individual
logbook header types. SLogbookHeaderOSTC3 is the formal type of
the logbook format that the OSTC4 produces. This format is
supposed to identical to the format, as is used in hwOS for the
series of small OSTCs. Only some values of attributes are different.
For example, the OSTC4 supports VPM, so byte 0x79 (deco model used
for this dive) also has a value for VPM. But the SLogbookHeader
type, despite its name and structure, is *not* a true logbook
header, as it includes attributes that are not available in the
SLogbookHeaderOSTC3 formal header type.
Signed-off-by: Jan Mulder <jan@jlmulder.nl>
author | Jan Mulder <jlmulder@xs4all.nl> |
---|---|
date | Wed, 22 Apr 2020 13:08:57 +0200 |
parents | 4bd01f48c285 |
children | 5e6a612d03b5 |
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 ------------------------------------------------------------------*/ | |
30 #include "t7.h" | |
31 | |
32 #include "data_exchange_main.h" | |
33 #include "decom.h" | |
34 #include "gfx_fonts.h" | |
35 #include "logbook_miniLive.h" | |
36 #include "math.h" | |
37 #include "tHome.h" | |
38 #include "simulation.h" | |
39 #include "timer.h" | |
40 #include "unit.h" | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
41 #include "motion.h" |
38 | 42 |
43 /* Private function prototypes -----------------------------------------------*/ | |
44 | |
45 void t7_refresh_surface(void); | |
46 void t7_refresh_surface_debugmode(void); | |
47 void t7_refresh_divemode(void); | |
48 void t7_refresh_sleep_design_fun(void); | |
49 void t7_refresh_divemode_userselected_left_lower_corner(void); | |
50 void t7_refresh_customview(void); | |
405 | 51 uint8_t t7_customview_disabled(uint8_t view); |
38 | 52 |
53 void draw_frame(_Bool PluginBoxHeader, _Bool LinesOnTheSides, uint8_t colorBox, uint8_t colorLinesOnTheSide); | |
54 | |
55 void t7_tissues(const SDiveState * pState); | |
56 void t7_compass(uint16_t ActualHeading, uint16_t UserSetHeading); | |
57 void t7_SummaryOfLeftCorner(void); | |
58 void t7_debug(void); | |
59 | |
60 void t7_miniLiveLogProfile(void); | |
61 void t7_logo_OSTC(void); | |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
62 static void t7_colorscheme_mod(char *text); |
38 | 63 |
64 uint8_t t7_test_customview_warnings(void); | |
65 void t7_show_customview_warnings(void); | |
66 | |
67 uint8_t t7_test_customview_warnings_surface_mode(void); | |
68 void t7_show_customview_warnings_surface_mode(void); | |
69 | |
70 uint8_t t7_customtextPrepare(char * text); | |
71 | |
193
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
72 /* Imported function prototypes ---------------------------------------------*/ |
38 | 73 extern uint8_t write_gas(char *text, uint8_t oxygen, uint8_t helium); |
74 | |
75 /* Exported variables --------------------------------------------------------*/ | |
76 | |
77 /* Private variables ---------------------------------------------------------*/ | |
78 | |
79 GFX_DrawCfgScreen t7screen; | |
80 GFX_DrawCfgScreen t7screenCompass; | |
81 | |
82 /* left 3 fields | |
83 * right 3 fields | |
84 * centered one field on top of customview, one below | |
85 * customview header + customview + warning | |
86 */ | |
87 GFX_DrawCfgWindow t7l1, t7l2, t7l3; | |
88 GFX_DrawCfgWindow t7r1, t7r2, t7r3; | |
89 GFX_DrawCfgWindow t7c1, t7batt, t7c2, t7charge, t7voltage; | |
90 GFX_DrawCfgWindow t7cH, t7cC, t7cW, t7cY0free; | |
91 GFX_DrawCfgWindow t7pCompass; | |
92 GFX_DrawCfgWindow t7surfaceL, t7surfaceR; | |
93 | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
94 uint8_t selection_customview = LLC_Temperature; |
38 | 95 |
96 uint8_t updateNecessary = 0; | |
97 | |
98 typedef struct{ | |
99 uint32_t pointer; | |
100 uint32_t x0; | |
101 uint32_t y0; | |
102 uint32_t width; | |
103 uint32_t height; | |
104 } SBackground; | |
105 | |
106 SBackground background = | |
107 { | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
108 .pointer = 0, |
38 | 109 }; |
110 | |
111 | |
112 /* Private types -------------------------------------------------------------*/ | |
113 const uint8_t customviewsDiveStandard[] = | |
114 { | |
115 CVIEW_sensors, | |
116 CVIEW_Compass, | |
117 CVIEW_Decolist, | |
118 CVIEW_Tissues, | |
119 CVIEW_Profile, | |
120 CVIEW_Gaslist, | |
121 CVIEW_sensors_mV, | |
122 CVIEW_EADTime, | |
123 CVIEW_SummaryOfLeftCorner, | |
124 CVIEW_noneOrDebug, | |
125 CVIEW_END, | |
126 CVIEW_END | |
127 }; | |
128 | |
129 const uint8_t customviewsSurfaceStandard[] = | |
130 { | |
131 // CVIEW_CompassDebug, | |
132 CVIEW_Hello, | |
133 CVIEW_sensors, | |
134 CVIEW_Compass, | |
135 CVIEW_Tissues, | |
136 CVIEW_sensors_mV, | |
137 CVIEW_END, | |
138 CVIEW_END | |
139 }; | |
140 | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
141 |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
142 static uint8_t selection_custom_field = LLC_Temperature; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
143 |
38 | 144 const uint8_t *customviewsDive = customviewsDiveStandard; |
145 const uint8_t *customviewsSurface = customviewsSurfaceStandard; | |
146 | |
147 #define TEXTSIZE 16 | |
148 /* offset includes line: 2 = line +1 | |
149 * box (line) is 300 px | |
150 * inside is 296 px | |
151 * left of box are 249 px ( 0..248) | |
152 * right of box are 249 px (551 .. 799) | |
153 */ | |
154 | |
155 #define CUSTOMBOX_LINE_LEFT (250) | |
156 #define CUSTOMBOX_LINE_RIGHT (549) | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
157 #define CUSTOMBOX_LINE_TOP (0) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
158 #define CUSTOMBOX_LINE_MIDDLE (142) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
159 #define CUSTOMBOX_LINE_BOTTOM (318) |
38 | 160 #define CUSTOMBOX_INSIDE_OFFSET (2) |
161 #define CUSTOMBOX_OUTSIDE_OFFSET (2) | |
162 #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
|
163 #define TOP_LINE_HIGHT (25) |
38 | 164 |
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
|
165 #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
|
166 #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
|
167 |
38 | 168 /* Exported functions --------------------------------------------------------*/ |
169 | |
170 void t7_init(void) | |
171 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
172 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
173 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
174 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
175 |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
176 selection_custom_field = LLC_Temperature; |
38 | 177 selection_customview = customviewsSurface[0]; |
178 | |
179 t7screen.FBStartAdress = 0; | |
180 t7screen.ImageHeight = 480; | |
181 t7screen.ImageWidth = 800; | |
182 t7screen.LayerIndex = 1; | |
183 | |
184 t7screenCompass.FBStartAdress = 0; | |
185 t7screenCompass.ImageHeight = 240; | |
186 t7screenCompass.ImageWidth = 1600; | |
187 t7screenCompass.LayerIndex = 0; | |
188 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
189 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
190 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
191 t7l1.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
192 t7l1.WindowNumberOfTextLines = 2; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
193 t7l1.WindowLineSpacing = 19; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
194 t7l1.WindowTab = 100; // vermtl. ohne Verwendung in diesem Fenster |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
195 t7l1.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
196 t7l1.WindowX1 = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
197 t7l1.WindowY0 = 318; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
198 t7l1.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
199 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
200 t7l2.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
201 t7l2.WindowNumberOfTextLines = 2; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
202 t7l2.WindowLineSpacing = 22; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
203 t7l2.WindowTab = 100; // vermtl. ohne Verwendung in diesem Fenster |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
204 t7l2.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
205 t7l2.WindowX1 = t7l1.WindowX1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
206 t7l2.WindowY0 = 142; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
207 t7l2.WindowY1 = t7l1.WindowY0 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
208 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
209 t7l3.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
210 t7l3.WindowNumberOfTextLines = 2; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
211 t7l3.WindowLineSpacing = 58; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
212 t7l3.WindowTab = 100; // vermtl. ohne Verwendung in diesem Fenster |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
213 t7l3.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
214 t7l3.WindowX1 = t7l1.WindowX1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
215 t7l3.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
216 t7l3.WindowY1 = t7l2.WindowY0 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
217 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
218 t7r1.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
219 t7r1.WindowNumberOfTextLines = 2; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
220 t7r1.WindowLineSpacing = t7l1.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
221 t7r1.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
222 t7r1.WindowX0 = 550; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
223 t7r1.WindowX1 = 799; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
224 t7r1.WindowY0 = t7l1.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
225 t7r1.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
226 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
227 t7r2.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
228 t7r2.WindowNumberOfTextLines = 2; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
229 t7r2.WindowLineSpacing = t7l2.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
230 t7r2.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
231 t7r2.WindowX0 = 550; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
232 t7r2.WindowX1 = 799; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
233 t7r2.WindowY0 = t7l2.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
234 t7r2.WindowY1 = t7l2.WindowY1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
235 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
236 t7r3.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
237 t7r3.WindowNumberOfTextLines = 2; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
238 t7r3.WindowLineSpacing = 0;//t7l3.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
239 t7r3.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
240 t7r3.WindowX0 = CUSTOMBOX_LINE_RIGHT + CUSTOMBOX_OUTSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
241 t7r3.WindowX1 = 799; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
242 t7r3.WindowY0 = t7l3.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
243 t7r3.WindowY1 = t7l3.WindowY1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
244 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
245 t7cC.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
246 t7cC.WindowNumberOfTextLines = 3; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
247 t7cC.WindowLineSpacing = 95; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
248 t7cC.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
249 t7cC.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
250 t7cC.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
251 t7cC.WindowY0 = 90; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
252 t7cC.WindowY1 = 434 - 95; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
253 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
254 t7cH.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
255 t7cH.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
256 t7cH.WindowLineSpacing = 95; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
257 t7cH.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
258 t7cH.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
259 t7cH.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
260 t7cH.WindowY0 = 434 - 94; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
261 t7cH.WindowY1 = 434; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
262 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
263 t7cW.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
264 t7cW.WindowNumberOfTextLines = 3; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
265 t7cW.WindowLineSpacing = 95; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
266 t7cW.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
267 t7cW.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
268 t7cW.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
269 t7cW.WindowY0 = 90; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
270 t7cW.WindowY1 = 434 - 95; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
271 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
272 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
273 t7surfaceL.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
274 t7surfaceL.WindowNumberOfTextLines = 9; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
275 t7surfaceL.WindowLineSpacing = 53; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
276 t7surfaceL.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
277 t7surfaceL.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
278 t7surfaceL.WindowX1 = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
279 t7surfaceL.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
280 t7surfaceL.WindowY1 = 480; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
281 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
282 t7surfaceR.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
283 t7surfaceR.WindowNumberOfTextLines = 9; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
284 t7surfaceR.WindowLineSpacing = 53; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
285 t7surfaceR.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
286 t7surfaceR.WindowX0 = CUSTOMBOX_LINE_RIGHT + CUSTOMBOX_OUTSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
287 t7surfaceR.WindowX1 = 800; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
288 t7surfaceR.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
289 t7surfaceR.WindowY1 = 480; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
290 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
291 t7cY0free.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
292 t7cY0free.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
293 t7cY0free.WindowLineSpacing = 95; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
294 t7cY0free.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
295 t7cY0free.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
296 t7cY0free.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
297 t7cY0free.WindowY0 = 90; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
298 t7cY0free.WindowY1 = 434 - 95; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
299 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
300 t7batt.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
301 t7batt.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
302 t7batt.WindowLineSpacing = 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
303 t7batt.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
304 t7batt.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
305 t7batt.WindowX0 = t7batt.WindowX1 - (52+52); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
306 t7batt.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
307 t7batt.WindowY0 = t7batt.WindowY1 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
308 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
309 t7charge.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
310 t7charge.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
311 t7charge.WindowLineSpacing = 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
312 t7charge.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
313 t7charge.WindowX1 = t7batt.WindowX1 - 18; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
314 t7charge.WindowX0 = t7charge.WindowX1 - 14; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
315 t7charge.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
316 t7charge.WindowY0 = t7batt.WindowY1 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
317 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
318 t7voltage.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
319 t7voltage.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
320 t7voltage.WindowLineSpacing = 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
321 t7voltage.WindowTab = 100; |
145 | 322 t7voltage.WindowX0 = t7charge.WindowX0 - 10; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
323 t7voltage.WindowX1 = t7voltage.WindowX0 + (18*3)+ 9; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
324 t7voltage.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
325 t7voltage.WindowY0 = t7batt.WindowY1 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
326 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
327 t7c1.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
328 t7c1.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
329 t7c1.WindowLineSpacing = 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
330 t7c1.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
331 t7c1.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
332 t7c1.WindowX1 = t7batt.WindowX0 - 18; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
333 t7c1.WindowY0 = 435; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
334 t7c1.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
335 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
336 t7c2.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
337 t7c2.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
338 t7c2.WindowLineSpacing = 0; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
339 t7c2.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
340 t7c2.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
341 t7c2.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
342 t7c2.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
343 t7c2.WindowY1 = 69; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
344 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
345 t7pCompass.Image = &t7screenCompass; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
346 t7pCompass.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
347 t7pCompass.WindowLineSpacing = 100; // Abstand von Y0 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
348 t7pCompass.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
349 t7pCompass.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
350 t7pCompass.WindowX1 = 1600-1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
351 t7pCompass.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
352 t7pCompass.WindowY1 = 100-1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
353 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
354 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
355 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
356 /* 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
|
357 |
38 | 358 t7l1.Image = &t7screen; |
359 t7l1.WindowNumberOfTextLines = 2; | |
360 t7l1.WindowLineSpacing = 19; // Abstand von Y0 | |
361 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
|
362 t7l1.WindowX0 = CUSTOMBOX_LINE_RIGHT + CUSTOMBOX_OUTSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
363 t7l1.WindowX1 = 799; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
364 t7l1.WindowY0 = CUSTOMBOX_LINE_TOP; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
365 t7l1.WindowY1 = 150 + TOP_LINE_HIGHT; |
38 | 366 |
367 t7l2.Image = &t7screen; | |
368 t7l2.WindowNumberOfTextLines = 2; | |
369 t7l2.WindowLineSpacing = 22; // Abstand von Y0 | |
370 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
|
371 t7l2.WindowX0 = t7l1.WindowX0; |
38 | 372 t7l2.WindowX1 = t7l1.WindowX1; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
373 t7l2.WindowY0 = t7l1.WindowY1 + 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
374 t7l2.WindowY1 = t7l2.WindowY0 + 146; |
38 | 375 |
376 t7l3.Image = &t7screen; | |
377 t7l3.WindowNumberOfTextLines = 2; | |
378 t7l3.WindowLineSpacing = 58; // Abstand von Y0 | |
379 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
|
380 t7l3.WindowX0 = t7l1.WindowX0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
381 t7l3.WindowX1 = t7l1.WindowX1;; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
382 t7l3.WindowY0 = 479 - 150; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
383 t7l3.WindowY1 = 479; |
38 | 384 |
385 t7r1.Image = &t7screen; | |
386 t7r1.WindowNumberOfTextLines = 2; | |
387 t7r1.WindowLineSpacing = t7l1.WindowLineSpacing; | |
388 t7r1.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
389 t7r1.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
390 t7r1.WindowX1 = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET; |
38 | 391 t7r1.WindowY0 = t7l1.WindowY0; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
392 t7r1.WindowY1 = t7l1.WindowY1; |
38 | 393 |
394 t7r2.Image = &t7screen; | |
395 t7r2.WindowNumberOfTextLines = 2; | |
396 t7r2.WindowLineSpacing = t7l2.WindowLineSpacing; | |
397 t7r2.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
398 t7r2.WindowX0 = t7r1.WindowX0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
399 t7r2.WindowX1 = t7r1.WindowX1; |
38 | 400 t7r2.WindowY0 = t7l2.WindowY0; |
401 t7r2.WindowY1 = t7l2.WindowY1; | |
402 | |
403 t7r3.Image = &t7screen; | |
404 t7r3.WindowNumberOfTextLines = 2; | |
405 t7r3.WindowLineSpacing = 0;//t7l3.WindowLineSpacing; | |
406 t7r3.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
407 t7r3.WindowX0 = t7r1.WindowX0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
408 t7r3.WindowX1 = t7r1.WindowX1; |
38 | 409 t7r3.WindowY0 = t7l3.WindowY0; |
410 t7r3.WindowY1 = t7l3.WindowY1; | |
411 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
412 /* screen for CustomText / serial number */ |
38 | 413 t7cC.Image = &t7screen; |
414 t7cC.WindowNumberOfTextLines = 3; | |
415 t7cC.WindowLineSpacing = 95; // Abstand von Y0 | |
416 t7cC.WindowTab = 100; | |
417 t7cC.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
418 t7cC.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
419 t7cC.WindowY0 = 165; //90; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
420 t7cC.WindowY1 = 415; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
421 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
422 /* used by warning message box */ |
38 | 423 t7cH.Image = &t7screen; |
424 t7cH.WindowNumberOfTextLines = 1; | |
425 t7cH.WindowLineSpacing = 95; // Abstand von Y0 | |
426 t7cH.WindowTab = 100; | |
427 t7cH.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
428 t7cH.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
429 t7cH.WindowY0 = 46; //480 - 434; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
430 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
|
431 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
432 /* used by warning custom box */ |
38 | 433 t7cW.Image = &t7screen; |
434 t7cW.WindowNumberOfTextLines = 3; | |
435 t7cW.WindowLineSpacing = 95; // Abstand von Y0 | |
436 t7cW.WindowTab = 100; | |
437 t7cW.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
438 t7cW.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
439 t7cW.WindowY0 = 480 - (434 - 90); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
440 t7cW.WindowY1 = 480 - 90; //434 - 95; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
441 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
442 /* time and environment */ |
38 | 443 t7surfaceL.Image = &t7screen; |
444 t7surfaceL.WindowNumberOfTextLines = 9; | |
445 t7surfaceL.WindowLineSpacing = 53; | |
446 t7surfaceL.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
447 t7surfaceL.WindowX0 = CUSTOMBOX_LINE_RIGHT + CUSTOMBOX_OUTSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
448 t7surfaceL.WindowX1 = 799; |
38 | 449 t7surfaceL.WindowY0 = 0; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
450 t7surfaceL.WindowY1 = 479; |
38 | 451 |
452 t7surfaceR.Image = &t7screen; | |
453 t7surfaceR.WindowNumberOfTextLines = 9; | |
454 t7surfaceR.WindowLineSpacing = 53; | |
455 t7surfaceR.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
456 t7surfaceR.WindowX0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
457 t7surfaceR.WindowX1 = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET; |
38 | 458 t7surfaceR.WindowY0 = 0; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
459 t7surfaceR.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
460 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
461 /* info screen in the middle */ |
38 | 462 t7cY0free.Image = &t7screen; |
463 t7cY0free.WindowNumberOfTextLines = 1; | |
464 t7cY0free.WindowLineSpacing = 95; | |
465 t7cY0free.WindowTab = 100; | |
466 t7cY0free.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
467 t7cY0free.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
468 t7cY0free.WindowY0 = 115; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
469 t7cY0free.WindowY1 = 365; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
470 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
471 /* voltage value (V or %) */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
472 t7voltage.Image = &t7screen; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
473 t7voltage.WindowNumberOfTextLines = 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
474 t7voltage.WindowLineSpacing = 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
475 t7voltage.WindowTab = 100; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
476 t7voltage.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
477 t7voltage.WindowX1 = t7voltage.WindowX0 + (18*3) +9; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
478 t7voltage.WindowY1 = TOP_LINE_HIGHT; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
479 t7voltage.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
480 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
481 /* battery symbol */ |
38 | 482 t7batt.Image = &t7screen; |
483 t7batt.WindowNumberOfTextLines = 1; | |
484 t7batt.WindowLineSpacing = 10; | |
485 t7batt.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
486 t7batt.WindowX0 = t7voltage.WindowX1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
487 t7batt.WindowX1 = t7batt.WindowX0 + (52); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
488 t7batt.WindowY1 = TOP_LINE_HIGHT; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
489 t7batt.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
490 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
491 /* charger symbol */ |
38 | 492 t7charge.Image = &t7screen; |
493 t7charge.WindowNumberOfTextLines = 1; | |
494 t7charge.WindowLineSpacing = 10; | |
495 t7charge.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
496 t7charge.WindowX1 = t7batt.WindowX0 - 18; |
38 | 497 t7charge.WindowX0 = t7charge.WindowX1 - 14; |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
498 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
499 t7charge.WindowY1 = TOP_LINE_HIGHT; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
500 t7charge.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
501 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
502 /* show dive mode OC / CC */ |
38 | 503 t7c1.Image = &t7screen; |
504 t7c1.WindowNumberOfTextLines = 1; | |
505 t7c1.WindowLineSpacing = 10; | |
506 t7c1.WindowTab = 100; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
507 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
|
508 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
|
509 t7c1.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
510 t7c1.WindowY1 = 479 - 435; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
511 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
512 /* Gas warnings and exit Sim*/ |
38 | 513 t7c2.Image = &t7screen; |
514 t7c2.WindowNumberOfTextLines = 1; | |
515 t7c2.WindowLineSpacing = 0; // Abstand von Y0 | |
516 t7c2.WindowTab = 100; | |
517 t7c2.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
518 t7c2.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
519 t7c2.WindowY0 = 480 - 69; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
520 t7c2.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
521 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
522 /* Rotating compass */ |
38 | 523 t7pCompass.Image = &t7screenCompass; |
524 t7pCompass.WindowNumberOfTextLines = 1; | |
525 t7pCompass.WindowLineSpacing = 100; // Abstand von Y0 | |
526 t7pCompass.WindowTab = 100; | |
527 t7pCompass.WindowX0 = 0; | |
528 t7pCompass.WindowX1 = 1600-1; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
529 t7pCompass.WindowY0 = 479 - 75; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
530 t7pCompass.WindowY1 = 479; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
531 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
532 } |
38 | 533 |
534 init_t7_compass(); | |
535 } | |
536 | |
537 | |
538 void t7_refresh_sleepmode_fun(void) | |
539 { | |
540 uint32_t oldScreen; | |
541 | |
542 oldScreen = t7screen.FBStartAdress; | |
543 t7screen.FBStartAdress = getFrame(22); | |
544 | |
545 t7_refresh_sleep_design_fun(); | |
546 | |
547 if(get_globalState() == StStop) | |
548 { | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
549 GFX_SetFramesTopBottom(t7screen.FBStartAdress, 0,480); |
38 | 550 } |
551 releaseFrame(22,oldScreen); | |
552 } | |
553 | |
554 | |
555 void t7_refresh(void) | |
556 { | |
557 static uint8_t last_mode = MODE_SURFACE; | |
558 SStateList status; | |
559 get_globalStateList(&status); | |
560 | |
561 t7screen.FBStartAdress = getFrame(22); | |
562 | |
563 background.pointer = 0; | |
564 | |
565 if(stateUsed->mode == MODE_DIVE) | |
566 { | |
567 if(last_mode != MODE_DIVE) | |
568 { | |
569 last_mode = MODE_DIVE; | |
570 /* lower left corner primary */ | |
571 selection_custom_field = settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary; | |
572 /* custom view primary OR debug if automatic return is off */ | |
573 if((settingsGetPointer()->tX_customViewTimeout == 0) && (settingsGetPointer()->showDebugInfo)) | |
574 selection_customview = CVIEW_noneOrDebug; | |
575 else | |
576 selection_customview = settingsGetPointer()->tX_customViewPrimary; | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
577 |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
578 InitMotionDetection(); |
38 | 579 } |
580 | |
581 if(status.page == PageSurface) | |
582 set_globalState(StD); | |
583 | |
584 if(stateUsed->diveSettings.diveMode == DIVEMODE_Gauge) | |
585 { | |
586 settingsGetPointer()->design = 5; | |
587 releaseAllFramesExcept(22,t7screen.FBStartAdress); | |
588 releaseFrame(22,t7screen.FBStartAdress); | |
589 return; | |
590 } | |
591 else if(stateUsed->diveSettings.diveMode == DIVEMODE_Apnea) | |
592 { | |
593 settingsGetPointer()->design = 6; | |
594 releaseAllFramesExcept(22,t7screen.FBStartAdress); | |
595 releaseFrame(22,t7screen.FBStartAdress); | |
596 return; | |
597 } | |
598 else | |
599 { | |
600 t7_refresh_divemode(); | |
601 } | |
602 } | |
603 else // from if(stateUsed->mode == MODE_DIVE) | |
604 { | |
605 if(last_mode != MODE_SURFACE) | |
606 { | |
607 last_mode = MODE_SURFACE; | |
608 selection_customview = customviewsSurface[0]; | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
609 InitMotionDetection(); |
38 | 610 } |
611 if(status.page == PageDive) | |
612 set_globalState(StS); | |
613 | |
614 if(settingsGetPointer()->showDebugInfo) | |
615 t7_refresh_surface_debugmode(); | |
616 else | |
617 t7_refresh_surface(); | |
618 } | |
619 | |
620 tHome_show_lost_connection_count(&t7screen); | |
621 | |
622 if(status.base == BaseHome) | |
623 { | |
624 if(background.pointer) | |
625 { | |
626 GFX_SetFrameTop(t7screen.FBStartAdress); | |
627 GFX_SetFrameBottom(background.pointer,background.x0 , background.y0, background.width, background.height); | |
628 } | |
629 else | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
630 GFX_SetFramesTopBottom(t7screen.FBStartAdress, 0,480); |
38 | 631 } |
632 | |
633 releaseAllFramesExcept(22,t7screen.FBStartAdress); | |
634 } | |
635 | |
636 /* Private functions ---------------------------------------------------------*/ | |
637 | |
638 void t7_fill_surfacetime_helper(SSurfacetime *outArray, uint32_t inputMinutes, uint32_t inputSeconds) | |
639 { | |
640 inputSeconds += inputMinutes * 60; | |
641 | |
642 outArray->Total = inputSeconds; | |
643 | |
644 outArray->Days = inputSeconds / 86400;// (24*60*60); | |
645 inputSeconds -= 86400 * (uint32_t)outArray->Days; | |
646 | |
647 outArray->Hours = inputSeconds / 3600;// (60*60); | |
648 inputSeconds -= 3600 * (uint32_t)outArray->Hours; | |
649 | |
650 outArray->Minutes = inputSeconds / 60;; | |
651 inputSeconds -= 60 * (uint32_t)outArray->Minutes; | |
652 | |
653 outArray->Seconds = inputSeconds; | |
654 } | |
655 | |
656 void t7_refresh_sleep_design_fun(void) | |
657 { | |
658 static uint16_t state = 0; | |
659 uint16_t ytop = 0; | |
660 | |
661 state +=1; | |
662 if(state > 800) | |
663 state = 1; | |
664 | |
665 if(state > 400) | |
666 ytop = 800 - state; | |
667 else | |
668 ytop = 0 + state; | |
178
d36596281501
Minor: Replace stupid "Sleep Sleep Sleep" message with something more meaningful
heinrichsweikamp
parents:
174
diff
changeset
|
669 Gfx_write_label_var(&t7screen, 300,800, ytop,&FontT48,CLUT_Font020,"Shutting down..."); |
38 | 670 } |
671 | |
672 void t7_refresh_surface(void) | |
673 { | |
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
|
674 static float debounceAmbientPressure = 0; |
38 | 675 char text[256]; |
676 uint8_t date[3], year,month,day; | |
677 uint32_t color; | |
678 uint8_t customview_warnings = 0; | |
679 | |
680 RTC_DateTypeDef Sdate; | |
681 RTC_TimeTypeDef Stime; | |
682 RTC_DateTypeDef SdateFirmware; | |
683 | |
684 uint8_t dateNotSet = 0; | |
685 | |
686 uint8_t oxygen_percentage, gasOffset, actualGasID; | |
457 | 687 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
688 uint16_t bottleFirstGas_bar; |
457 | 689 #endif |
38 | 690 point_t start, stop;//, other; |
691 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
692 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
693 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
694 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
695 |
38 | 696 // update in all customview modes |
697 if(DataEX_check_RTE_version__needs_update() || font_update_required()) | |
698 updateNecessary = 1; | |
699 else | |
700 updateNecessary = 0; | |
701 | |
702 /* buttons */ | |
703 text[0] = TXT_2BYTE; | |
704 text[1] = TXT2BYTE_ButtonLogbook; | |
705 text[2] = 0; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
706 write_content_simple(&t7screen, 0, 799, 479-TOP_LINE_HIGHT, &FontT24,text,CLUT_ButtonSurfaceScreen); |
38 | 707 |
708 text[0] = '\001'; | |
709 text[1] = TXT_2BYTE; | |
710 text[2] = TXT2BYTE_ButtonView; | |
711 text[3] = 0; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
712 write_content_simple(&t7screen, 0, 799, 479-TOP_LINE_HIGHT, &FontT24,text,CLUT_ButtonSurfaceScreen); |
38 | 713 |
714 text[0] = '\002'; | |
715 text[1] = TXT_2BYTE; | |
716 text[2] = TXT2BYTE_ButtonMenu; | |
717 text[3] = 0; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
718 write_content_simple(&t7screen, 0, 799, 479-TOP_LINE_HIGHT, &FontT24,text,CLUT_ButtonSurfaceScreen); |
38 | 719 |
720 /* was power on reset */ | |
721 //..... | |
722 /* removed hw 160802 in V1.1.1 | |
723 if(errorsInSettings) | |
724 { | |
725 sprintf(text,"Settings: %u",errorsInSettings); | |
726 GFX_write_string_color(&FontT42,&t7surfaceR,text,4,CLUT_WarningRed); | |
727 } | |
728 else | |
729 */ | |
730 if(DataEX_was_power_on()) | |
731 GFX_write_string_color(&FontT42,&t7surfaceR,"cold start",4,CLUT_WarningRed); | |
732 | |
733 /* time and date */ | |
734 translateDate(stateUsed->lifeData.dateBinaryFormat, &Sdate); | |
735 translateTime(stateUsed->lifeData.timeBinaryFormat, &Stime); | |
736 | |
737 firmwareGetDate(&SdateFirmware); | |
738 if(tHome_DateCode(&Sdate) < tHome_DateCode(&SdateFirmware)) | |
739 dateNotSet = 1; | |
740 else | |
741 dateNotSet = 0; | |
742 /* | |
743 if(Stime.Seconds % 2) | |
744 snprintf(text,255,"\001%02d:%02d",Stime.Hours,Stime.Minutes); | |
745 else | |
746 snprintf(text,255,"\001%02d\021:\020%02d",Stime.Hours,Stime.Minutes); | |
747 GFX_write_string(&FontT54,&t7surfaceR,text,3); | |
748 */ | |
749 // debug version: | |
750 if(Stime.Seconds % 2) | |
751 snprintf(text,255,"\001%02d:%02d:%02d",Stime.Hours,Stime.Minutes,Stime.Seconds); | |
752 else if(dateNotSet) | |
753 snprintf(text,255,"\001\021%02d:%02d:%02d\020",Stime.Hours,Stime.Minutes,Stime.Seconds); | |
754 else | |
755 snprintf(text,255,"\001%02d\021:\020%02d:%02d",Stime.Hours,Stime.Minutes,Stime.Seconds); | |
756 GFX_write_string(&FontT54,&t7surfaceR,text,3); | |
757 | |
758 if(settingsGetPointer()->date_format == DDMMYY) | |
759 { | |
760 day = 0; | |
761 month = 1; | |
762 year = 2; | |
763 } | |
764 else | |
765 if(settingsGetPointer()->date_format == MMDDYY) | |
766 { | |
767 day = 1; | |
768 month = 0; | |
769 year = 2; | |
770 } | |
771 else | |
772 { | |
773 day = 2; | |
774 month = 1; | |
775 year = 0; | |
776 } | |
777 date[day] = Sdate.Date; | |
778 date[month] = Sdate.Month; | |
779 date[year] = Sdate.Year; | |
780 | |
781 if((Stime.Seconds % 2) || (dateNotSet == 0)) | |
782 snprintf(text,255,"\001%02d.%02d.%02d",date[0],date[1],date[2]); | |
783 else | |
784 snprintf(text,255,"\001\021%02d.%02d.%02d",date[0],date[1],date[2]); | |
785 | |
786 GFX_write_string(&FontT54,&t7surfaceR,text,5); | |
787 | |
788 if(!DataEX_was_power_on() && !errorsInSettings) | |
789 { | |
790 text[0] = '\001'; | |
791 text[1] = '\004'; | |
792 text[2] = TXT_2BYTE; | |
793 text[3] = TXT2BYTE_Sunday; | |
794 text[4] = 0; | |
795 if(Sdate.WeekDay != RTC_WEEKDAY_SUNDAY) | |
796 text[3] += Sdate.WeekDay; | |
797 | |
798 if(!(Stime.Seconds % 2) && (dateNotSet == 1)) | |
799 text[1] = '\021'; | |
800 | |
801 GFX_write_string(&FontT24,&t7surfaceR,text,4); | |
802 } | |
803 | |
804 /* DEBUG uTick Pressure and Compass */ | |
805 /* | |
806 snprintf(text,255,"\001%u",stateRealGetPointer()->pressure_uTick_new - stateRealGetPointer()->pressure_uTick_old); | |
807 GFX_write_string(&FontT42,&t7surfaceR,text,1); | |
808 snprintf(text,255,"\001%u",HAL_GetTick() - stateRealGetPointer()->pressure_uTick_local_new); | |
809 GFX_write_string(&FontT42,&t7surfaceR,text,2); | |
810 | |
811 snprintf(text,255,"\001%u",stateRealGetPointer()->compass_uTick_new - stateRealGetPointer()->compass_uTick_old); | |
812 GFX_write_string(&FontT42,&t7surfaceR,text,6); | |
813 snprintf(text,255,"\001%u",HAL_GetTick() - stateRealGetPointer()->compass_uTick_local_new); | |
814 GFX_write_string(&FontT42,&t7surfaceR,text,7); | |
815 | |
816 static uint32_t bildschirmRefresh = 0; | |
817 snprintf(text,255,"\001%u",HAL_GetTick() - bildschirmRefresh); | |
818 GFX_write_string(&FontT42,&t7surfaceR,text,8); | |
819 bildschirmRefresh = HAL_GetTick(); | |
820 | |
821 static uint16_t bildschirmRefreshCount = 1; | |
822 if(bildschirmRefreshCount>10) | |
823 bildschirmRefreshCount = 1; | |
824 for(int i=0;i<bildschirmRefreshCount;i++) | |
825 text[i] = '.'; | |
826 text[bildschirmRefreshCount++] = 0; | |
827 GFX_write_string(&FontT42,&t7surfaceR,text,4); | |
828 */ | |
829 | |
830 /* noFlyTime or DesaturationTime */ | |
831 | |
832 if((!display_count_high_time) && (stateUsed->lifeData.no_fly_time_minutes)) | |
833 { | |
834 SSurfacetime NoFlyTime = {0,0,0,0}; | |
835 t7_fill_surfacetime_helper(&NoFlyTime,stateUsed->lifeData.no_fly_time_minutes, 0); | |
836 | |
837 if(NoFlyTime.Days) | |
838 { | |
839 snprintf(text,30,"\001%02d\016\016d\017 %02d\016\016h\017",NoFlyTime.Days, NoFlyTime.Hours); | |
840 } | |
841 else | |
842 { | |
843 snprintf(text,20,"\001%02d:%02d",NoFlyTime.Hours, NoFlyTime.Minutes); | |
844 } | |
845 | |
846 GFX_write_string(&FontT54,&t7surfaceR,text,7); | |
847 | |
848 text[0] = '\001'; | |
849 text[1] = '\022'; | |
850 text[2] = '\016'; | |
851 text[3] = '\016'; | |
852 text[4] = TXT_2BYTE; | |
853 text[5] = TXT2BYTE_noFly; | |
854 text[6] = 0; | |
855 GFX_write_string(&FontT48,&t7surfaceR,text,6); | |
856 } | |
857 else | |
858 if(stateUsed->lifeData.desaturation_time_minutes) | |
859 { | |
860 SSurfacetime DesatTime = {0,0,0,0}; | |
861 t7_fill_surfacetime_helper(&DesatTime,stateUsed->lifeData.desaturation_time_minutes, 0); | |
862 | |
863 if(DesatTime.Days) | |
864 { | |
865 snprintf(text,30,"\001%02d\016\016d\017 %02d\016\016h\017",DesatTime.Days, DesatTime.Hours); | |
866 } | |
867 else | |
868 { | |
869 snprintf(text,20,"\001%02d:%02d",DesatTime.Hours, DesatTime.Minutes); | |
870 } | |
871 GFX_write_string(&FontT54,&t7surfaceR,text,7); | |
872 | |
873 text[0] = '\001'; | |
874 text[1] = '\022'; | |
875 text[2] = '\016'; | |
876 text[3] = '\016'; | |
877 text[4] = TXT_2BYTE; | |
878 text[5] = TXT2BYTE_Desaturation; | |
879 text[6] = 0; | |
880 GFX_write_string(&FontT48,&t7surfaceR,text,6); | |
881 } | |
882 | |
883 /* Time since last dive */ | |
884 if(stateUsed->lifeData.surface_time_seconds) | |
885 { | |
886 SSurfacetime SurfTime = {0,0,0,0}; | |
887 t7_fill_surfacetime_helper(&SurfTime, 0, stateUsed->lifeData.surface_time_seconds); | |
888 | |
889 if(SurfTime.Days == 0) | |
890 { | |
891 snprintf(text,20,"\001\022%02d:%02d",SurfTime.Hours, SurfTime.Minutes); | |
892 } | |
893 else | |
894 { | |
895 snprintf(text,30,"\001\022%02d\016\016d\017 %02d\016\016h\017",SurfTime.Days, SurfTime.Hours); | |
896 } | |
897 | |
898 GFX_write_string(&FontT54,&t7surfaceR,text,2); | |
899 | |
900 | |
901 text[0] = '\001'; | |
902 text[1] = '\022'; | |
903 text[2] = '\016'; | |
904 text[3] = '\016'; | |
905 text[4] = TXT_2BYTE; | |
906 text[5] = TXT2BYTE_TimeSinceLastDive; | |
907 text[6] = 0; | |
908 GFX_write_string(&FontT48,&t7surfaceR,text,1); | |
909 } | |
910 | |
911 /* beta version */ | |
912 if( firmwareDataGetPointer()->versionBeta ) | |
913 { | |
914 snprintf(text,255,"\025 BETA"); | |
915 GFX_write_string(&FontT48,&t7surfaceL,text,2); | |
916 } | |
917 | |
918 /* surface pressure and temperature */ | |
919 if(stateUsed->sensorErrorsRTE == 0) | |
920 { | |
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
|
921 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
|
922 { |
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
|
923 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
|
924 } |
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
|
925 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
|
926 { |
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
|
927 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
|
928 { |
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
|
929 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
|
930 } |
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
|
931 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
|
932 } |
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
|
933 |
38 | 934 GFX_write_string(&FontT48,&t7surfaceL,text,3); |
935 | |
936 if(settingsGetPointer()->nonMetricalSystem) | |
937 snprintf(text,40,"%01.0f\140\022\016\016 fahrenheit",unit_temperature_float(stateUsed->lifeData.temperature_celsius)); | |
938 else | |
939 snprintf(text,30,"%01.0f\140\022\016\016 celsius",stateUsed->lifeData.temperature_celsius); | |
940 GFX_write_string(&FontT48,&t7surfaceL,text,4); | |
941 } | |
942 else | |
943 { | |
103
f5d2f02dc73f
Generalize TEXT of pressure unit
Dmitry Romanov <kitt@bk.ru>
parents:
102
diff
changeset
|
944 snprintf(text,30,"ERR\022\016\016 %s",TEXT_PRESSURE_UNIT); |
38 | 945 GFX_write_string(&FontT48,&t7surfaceL,text,3); |
946 | |
947 if(settingsGetPointer()->nonMetricalSystem) | |
948 snprintf(text,40,"ERR\022\016\016 fahrenheit"); | |
949 else | |
950 snprintf(text,30,"ERR\022\016\016 celsius"); | |
951 GFX_write_string(&FontT48,&t7surfaceL,text,4); | |
952 } | |
953 | |
954 | |
955 /* gas mix and selection */ | |
956 if((stateUsed->diveSettings.diveMode == DIVEMODE_Gauge) || (stateUsed->diveSettings.diveMode == DIVEMODE_Apnea)) | |
957 { | |
958 if(stateUsed->diveSettings.diveMode == DIVEMODE_Gauge) | |
959 text[0] = TXT_Gauge; | |
960 else | |
961 text[0] = TXT_Apnoe; | |
962 | |
963 text[1] = 0; | |
964 GFX_write_string(&FontT48,&t7surfaceL,text,6); | |
965 } | |
966 else | |
967 { | |
968 text[0] = '\021'; | |
969 text[1] = '1'; | |
970 text[2] = '\177'; | |
971 text[3] = '\177'; | |
972 text[4] = 10; | |
973 text[5] = '\021'; | |
974 text[6] = '2'; | |
975 text[7] = '\177'; | |
976 text[8] = '\177'; | |
977 text[9] = 10; | |
978 text[10] = '\021'; | |
979 text[11] = '3'; | |
980 text[12] = '\177'; | |
981 text[13] = '\177'; | |
982 text[14] = 10; | |
983 text[15] = '\021'; | |
984 text[16] = '4'; | |
985 text[17] = '\177'; | |
986 text[18] = '\177'; | |
987 text[19] = 10; | |
988 text[20] = '\021'; | |
989 text[21] = '5'; | |
990 text[22] = 0; | |
991 | |
992 if(stateUsed->diveSettings.diveMode == DIVEMODE_CCR) | |
993 gasOffset = NUM_OFFSET_DILUENT; | |
994 else | |
995 gasOffset = 0; | |
996 for(int i=1;i<=5;i++) | |
997 { | |
998 if(stateUsed->diveSettings.gas[i+gasOffset].note.ub.active) | |
999 text[(i-1)*5] -= 1; | |
1000 } | |
1001 GFX_write_string(&FontT48,&t7surfaceL,text,6); | |
1002 | |
1003 | |
1004 oxygen_percentage = 100; | |
1005 oxygen_percentage -= stateUsed->lifeData.actualGas.nitrogen_percentage; | |
1006 oxygen_percentage -= stateUsed->lifeData.actualGas.helium_percentage; | |
1007 | |
1008 tHome_gas_writer(oxygen_percentage,stateUsed->lifeData.actualGas.helium_percentage,&text[0]); | |
1009 GFX_write_string(&FontT48,&t7surfaceL,text,7); | |
1010 | |
1011 actualGasID = stateUsed->lifeData.actualGas.GasIdInSettings; | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
1012 |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1013 #ifdef ENABLE_BOTTLE_SENSOR |
38 | 1014 bottleFirstGas_bar = stateUsed->lifeData.bottle_bar[actualGasID]; |
1015 if(bottleFirstGas_bar) | |
1016 { | |
1017 snprintf(text,255,"%3u\022\016\016 bar",bottleFirstGas_bar); | |
1018 GFX_write_string(&FontT48,&t7surfaceL,text,8); | |
1019 } | |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1020 #endif |
38 | 1021 // after gas name :-) |
1022 if(actualGasID > gasOffset) // security | |
1023 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1024 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1025 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1026 start.y = t7surfaceL.WindowY0 + (3 * t7surfaceL.WindowLineSpacing); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1027 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
|
1028 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1029 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1030 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1031 start.y = t7surfaceR.WindowY0 + (3 * t7surfaceR.WindowLineSpacing); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1032 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
|
1033 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1034 |
38 | 1035 stop.x = start.x + 25; |
1036 stop.y = start.y + 52; | |
1037 GFX_draw_box2(&t7screen, start, stop, CLUT_Font020, 1); | |
1038 } | |
1039 } | |
1040 | |
1041 /* dive mode */ | |
193
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1042 switch (stateUsed->diveSettings.diveMode) { |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1043 case DIVEMODE_CCR: |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1044 GFX_write_string(&FontT24, &t7c1, "\f\002" "CCR", 0); |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1045 break; |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1046 case DIVEMODE_OC: |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1047 GFX_write_string(&FontT24, &t7c1, "\f\002" "OC", 0); |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1048 break; |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1049 case DIVEMODE_Gauge: |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1050 GFX_write_string(&FontT24, &t7c1, "\f\002" "Gauge", 0); |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1051 break; |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1052 case DIVEMODE_Apnea: |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1053 GFX_write_string(&FontT24, &t7c1, "\f\002" "Apnea", 0); |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1054 break; |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1055 default: |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1056 GFX_write_string(&FontT24, &t7c1, "\f\002" "OC", 0); |
255326edf00b
Bugfix: show proper dive mode
Jan Mulder <jlmulder@xs4all.nl>
parents:
189
diff
changeset
|
1057 } |
38 | 1058 |
1059 /*battery */ | |
1060 | |
1061 text[0] = '3'; | |
1062 text[1] = '1'; | |
1063 text[2] = '1'; | |
1064 text[3] = '1'; | |
1065 text[4] = '1'; | |
1066 text[5] = '1'; | |
1067 text[6] = '1'; | |
1068 text[7] = '1'; | |
1069 text[8] = '1'; | |
1070 text[9] = '1'; | |
1071 text[10] = '1'; | |
1072 text[11] = '0'; | |
1073 text[12] = 0; | |
1074 | |
1075 for(int i=1;i<=10;i++) | |
1076 { | |
1077 if( stateUsed->lifeData.battery_charge > (9 * i)) | |
1078 text[i] += 1; | |
1079 } | |
1080 | |
1081 if(stateUsed->chargeStatus == CHARGER_off) | |
1082 { | |
1083 if(stateUsed->warnings.lowBattery) | |
1084 { | |
1085 if(warning_count_high_time) | |
1086 { | |
1087 for(int i=1;i<=10;i++) | |
1088 text[i] = '1'; | |
1089 } | |
1090 else | |
1091 { | |
1092 text[1] = '2'; | |
1093 } | |
1094 GFX_write_string_color(&Batt24,&t7batt,text,0,CLUT_WarningRed); | |
1095 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
1096 { | |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1097 #ifdef ALWAYS_SHOW_VOLTAGE |
432
2b4440f75434
show battery percent and voltage and surfacemode. That gives additional
heinrichsweikamp
parents:
405
diff
changeset
|
1098 // show battery percent and voltage |
2b4440f75434
show battery percent and voltage and surfacemode. That gives additional
heinrichsweikamp
parents:
405
diff
changeset
|
1099 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
|
1100 #else |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1101 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
|
1102 #endif |
38 | 1103 if(warning_count_high_time) |
1104 text[0] = '\a'; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1105 GFX_write_string(&FontT24,&t7voltage,text,0); |
38 | 1106 } |
1107 else | |
1108 { | |
1109 snprintf(text,6,"\f%.1fV",stateUsed->lifeData.battery_voltage); | |
1110 GFX_write_string(&FontT24,&t7voltage,text,0); | |
1111 } | |
1112 } | |
1113 else | |
1114 { | |
1115 GFX_write_string_color(&Batt24,&t7batt,text,0,CLUT_BatteryStandard); | |
1116 | |
1117 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
1118 { | |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1119 #ifdef ALWAYS_SHOW_VOLTAGE |
432
2b4440f75434
show battery percent and voltage and surfacemode. That gives additional
heinrichsweikamp
parents:
405
diff
changeset
|
1120 // show battery percent and voltage |
2b4440f75434
show battery percent and voltage and surfacemode. That gives additional
heinrichsweikamp
parents:
405
diff
changeset
|
1121 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
|
1122 #else |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
1123 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
|
1124 #endif |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1125 GFX_write_string(&FontT24,&t7voltage,text,0); |
38 | 1126 } |
1127 else | |
1128 { | |
1129 snprintf(text,6,"\f%.1fV",stateUsed->lifeData.battery_voltage); | |
1130 GFX_write_string(&FontT24,&t7voltage,text,0); | |
1131 } | |
1132 } | |
1133 } | |
1134 else | |
1135 { | |
1136 GFX_write_string_color(&Batt24,&t7batt,text,0,CLUT_BatteryCharging); | |
1137 | |
1138 switch(stateUsed->chargeStatus) | |
1139 { | |
1140 case CHARGER_running: | |
1141 default: | |
1142 color = CLUT_BatteryStandard; | |
1143 break; | |
1144 case CHARGER_complete: | |
1145 color = CLUT_BatteryCharging; | |
1146 break; | |
1147 case CHARGER_lostConnection: | |
1148 color = CLUT_BatteryProblem; | |
1149 break; | |
1150 } | |
1151 text[0] = '4'; | |
1152 text[1] = 0; | |
1153 GFX_write_string_color(&Batt24,&t7charge,text,0,color); | |
1154 } | |
1155 | |
1156 | |
1157 | |
1158 customview_warnings = t7_test_customview_warnings_surface_mode(); | |
1159 if(customview_warnings && warning_count_high_time) | |
1160 t7_show_customview_warnings_surface_mode(); | |
1161 else | |
1162 t7_refresh_customview(); | |
1163 draw_frame(0,0, CLUT_pluginboxSurface, CLUT_Font020); | |
1164 } | |
1165 | |
1166 void t7_refresh_surface_debugmode(void) | |
1167 { | |
1168 // could be warning, now just to set RTE variables | |
1169 DataEX_check_RTE_version__needs_update(); | |
1170 | |
1171 | |
1172 char TextL1[4*TEXTSIZE]; | |
1173 uint32_t color; | |
1174 // uint8_t gasIdFirst; | |
1175 SSettings* pSettings = settingsGetPointer(); | |
198
878dc9e0dbc5
cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents:
196
diff
changeset
|
1176 SDataExchangeSlaveToMaster *dataIn = get_dataInPointer(); |
38 | 1177 |
1178 SWindowGimpStyle windowGimp; | |
1179 | |
1180 RTC_DateTypeDef Sdate; | |
1181 RTC_TimeTypeDef Stime; | |
1182 | |
1183 translateDate(stateUsed->lifeData.dateBinaryFormat, &Sdate); | |
1184 translateTime(stateUsed->lifeData.timeBinaryFormat, &Stime); | |
1185 | |
1186 | |
1187 if(stateUsed->data_old__lost_connection_to_slave) | |
1188 { | |
1189 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
|
1190 snprintf(TextL1,TEXTSIZE,"%X %X %X %X",dataIn->header.checkCode[0],dataIn->header.checkCode[1],dataIn->header.checkCode[2],dataIn->header.checkCode[3]); |
38 | 1191 Gfx_write_label_var(&t7screen, 500,800, 45,&FontT48,CLUT_Font020,TextL1); |
1192 } | |
1193 else | |
1194 if(DataEX_lost_connection_count()) | |
1195 { | |
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
|
1196 snprintf(TextL1,TEXTSIZE,"\002%ld",DataEX_lost_connection_count()); |
38 | 1197 Gfx_write_label_var(&t7screen, 600,800, 45,&FontT48,CLUT_Font020,TextL1); |
1198 } | |
1199 | |
1200 snprintf(TextL1,TEXTSIZE,"\002%i",blockedFramesCount()); | |
1201 Gfx_write_label_var(&t7screen, 600,800, 0,&FontT48,CLUT_Font020,TextL1); | |
1202 | |
1203 if(stateUsed->lifeData.compass_DX_f | stateUsed->lifeData.compass_DY_f | stateUsed->lifeData.compass_DZ_f) | |
1204 { | |
1205 snprintf(TextL1,TEXTSIZE,"X %i",stateUsed->lifeData.compass_DX_f); | |
1206 Gfx_write_label_var(&t7screen, 0,400, 45,&FontT48,CLUT_Font020,TextL1); | |
1207 snprintf(TextL1,TEXTSIZE,"Y %i",stateUsed->lifeData.compass_DY_f); | |
1208 Gfx_write_label_var(&t7screen, 0,400,145,&FontT48,CLUT_Font020,TextL1); | |
1209 snprintf(TextL1,TEXTSIZE,"Z %i",stateUsed->lifeData.compass_DZ_f); | |
1210 Gfx_write_label_var(&t7screen, 0,400,255,&FontT48,CLUT_Font020,TextL1); | |
1211 return; | |
1212 } | |
103
f5d2f02dc73f
Generalize TEXT of pressure unit
Dmitry Romanov <kitt@bk.ru>
parents:
102
diff
changeset
|
1213 snprintf(TextL1,TEXTSIZE,"%01.0f %s",stateUsed->lifeData.pressure_ambient_bar * 1000.0f,TEXT_PRESSURE_UNIT); |
38 | 1214 Gfx_write_label_var(&t7screen, 0,400, 0,&FontT42,CLUT_DiveMainLabel,"Ambient Pressure"); |
1215 Gfx_write_label_var(&t7screen, 0,400, 45,&FontT48,CLUT_Font020,TextL1); | |
1216 | |
1217 snprintf(TextL1,TEXTSIZE,"%01.2f C",stateUsed->lifeData.temperature_celsius); | |
1218 Gfx_write_label_var(&t7screen, 0,400,100,&FontT42,CLUT_DiveMainLabel,"Temperature"); | |
1219 Gfx_write_label_var(&t7screen, 0,400,145,&FontT48,CLUT_Font020,TextL1); | |
1220 | |
1221 snprintf(TextL1,TEXTSIZE,"%03.0f %03.0f %03.0f",stateUsed->lifeData.compass_heading,stateUsed->lifeData.compass_roll,stateUsed->lifeData.compass_pitch); | |
1222 Gfx_write_label_var(&t7screen, 0,400,200,&FontT42,CLUT_DiveMainLabel,"Heading Roll Pitch"); | |
1223 Gfx_write_label_var(&t7screen, 0,400,255,&FontT48,CLUT_Font020,TextL1); | |
1224 | |
103
f5d2f02dc73f
Generalize TEXT of pressure unit
Dmitry Romanov <kitt@bk.ru>
parents:
102
diff
changeset
|
1225 snprintf(TextL1,TEXTSIZE,"%01.0f %s",stateUsed->lifeData.pressure_surface_bar * 1000.0f,TEXT_PRESSURE_UNIT); |
38 | 1226 Gfx_write_label_var(&t7screen, 0,400,310,&FontT42,CLUT_DiveMainLabel,"Surface Pressure"); |
1227 Gfx_write_label_var(&t7screen, 0,400,355,&FontT48,CLUT_Font020,TextL1); | |
1228 | |
1229 // gasIdFirst = stateUsed->lifeData.actualGas.GasIdInSettings; | |
198
878dc9e0dbc5
cleanup: another cleanup session (data_exchange_main.c)
Jan Mulder <jlmulder@xs4all.nl>
parents:
196
diff
changeset
|
1230 snprintf(TextL1,TEXTSIZE,"%u.%u",dataIn->RTE_VERSION_high,dataIn->RTE_VERSION_low); |
38 | 1231 Gfx_write_label_var(&t7screen, 320,500,100,&FontT42,CLUT_DiveMainLabel,"RTE"); |
1232 Gfx_write_label_var(&t7screen, 320,500,145,&FontT48,CLUT_Font020,TextL1); | |
1233 | |
1234 Gfx_write_label_var(&t7screen, 500,800,100,&FontT42,CLUT_DiveMainLabel,"Battery"); | |
1235 snprintf(TextL1,TEXTSIZE,"%01.4f V",stateUsed->lifeData.battery_voltage); | |
1236 Gfx_write_label_var(&t7screen, 500,800,145,&FontT48,CLUT_Font020,TextL1); | |
1237 snprintf(TextL1,TEXTSIZE,"%03.1f %%",stateUsed->lifeData.battery_charge); | |
1238 Gfx_write_label_var(&t7screen, 500,800,200,&FontT48,CLUT_Font020,TextL1); | |
1239 if(stateUsed->chargeStatus != CHARGER_off) | |
1240 { | |
1241 switch(stateUsed->chargeStatus) | |
1242 { | |
1243 case CHARGER_running: | |
1244 default: | |
1245 color = CLUT_BatteryStandard; | |
1246 break; | |
1247 case CHARGER_complete: | |
1248 color = CLUT_BatteryCharging; | |
1249 break; | |
1250 case CHARGER_lostConnection: | |
1251 color = CLUT_BatteryProblem; | |
1252 break; | |
1253 } | |
1254 TextL1[0] = '4'; | |
1255 TextL1[1] = 0; | |
1256 Gfx_write_label_var(&t7screen, 660,800,200,&Batt24,color,TextL1); | |
1257 } | |
1258 | |
1259 extern uint32_t base_tempLightLevel; | |
1260 | |
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
|
1261 snprintf(TextL1,TEXTSIZE,"# %u (%ld)",stateUsed->lifeData.ambient_light_level, base_tempLightLevel); |
38 | 1262 Gfx_write_label_var(&t7screen, 401,600,310,&FontT42,CLUT_DiveMainLabel,"Light"); |
1263 Gfx_write_label_var(&t7screen, 401,800,355,&FontT48,CLUT_Font020,TextL1); | |
1264 | |
1265 // snprintf(TextL1,TEXTSIZE,"# %u",stateUsed->lifeData.ambient_light_level); | |
1266 // Gfx_write_label_var(&t7screen, 601,800,310,&FontT42,CLUT_DiveMainLabel,"Light"); | |
1267 // Gfx_write_label_var(&t7screen, 601,800,355,&FontT48,CLUT_Font020,TextL1); | |
1268 | |
348 | 1269 /* show surface pressure state */ |
1270 if(stateUsed->lifeData.bool_temp1 ) | |
1271 { | |
1272 snprintf(TextL1,TEXTSIZE,"stable"); | |
1273 } | |
1274 else | |
1275 { | |
1276 snprintf(TextL1,TEXTSIZE,"unstable"); | |
1277 } | |
1278 Gfx_write_label_var(&t7screen, 500,800,400,&FontT48,CLUT_Font020,TextL1); | |
38 | 1279 |
1280 | |
1281 if(Sdate.Year < 15) | |
1282 { | |
1283 if(warning_count_high_time) | |
1284 { | |
1285 snprintf(TextL1,4*TEXTSIZE,"\017 %02d-%02d-%02d %02d:%02d:%02d", Sdate.Date, Sdate.Month, 2000 + Sdate.Year,Stime.Hours, Stime.Minutes, Stime.Seconds); | |
1286 Gfx_write_label_var(&t7screen, 0,800,420,&FontT48,CLUT_Font020,TextL1); | |
1287 } | |
1288 } | |
1289 else | |
1290 { | |
1291 if(pSettings->customtext[0]) | |
1292 { | |
1293 if(pSettings->customtext[59]) | |
1294 pSettings->customtext[59] = 0; | |
1295 Gfx_write_label_var(&t7screen, 0,400,420,&FontT24,CLUT_Font020,pSettings->customtext); | |
1296 } | |
1297 else | |
1298 { | |
1299 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 ); | |
1300 Gfx_write_label_var(&t7screen, 0,800,420,&FontT48,CLUT_Font020,TextL1); | |
1301 } | |
1302 } | |
1303 | |
1304 windowGimp.left = 400; | |
1305 windowGimp.top = 0; | |
1306 GFX_draw_image_monochrome(&t7screen, windowGimp, &ImgOSTC, 0); | |
1307 } | |
1308 | |
1309 /* CUSTOMVIEW | |
1310 * in the middle of the screen | |
1311 */ | |
1312 | |
1313 uint8_t t7_test_customview_warnings(void) | |
1314 { | |
1315 uint8_t count = 0; | |
1316 | |
1317 count = 0; | |
1318 count += stateUsed->warnings.decoMissed; | |
1319 count += stateUsed->warnings.ppO2Low; | |
1320 count += stateUsed->warnings.ppO2High; | |
1321 //count += stateUsed->warnings.lowBattery; | |
1322 count += stateUsed->warnings.sensorLinkLost; | |
1323 count += stateUsed->warnings.fallback; | |
1324 return count; | |
1325 } | |
1326 | |
1327 | |
1328 uint8_t t7_test_customview_warnings_surface_mode(void) | |
1329 { | |
1330 uint8_t count = 0; | |
1331 count = 0; | |
1332 count += stateUsed->cnsHigh_at_the_end_of_dive; | |
1333 count += stateUsed->decoMissed_at_the_end_of_dive; | |
1334 return count; | |
1335 } | |
1336 | |
1337 | |
1338 void t7_show_customview_warnings_surface_mode(void) | |
1339 { | |
1340 char text[256]; | |
1341 uint8_t textpointer, lineFree; | |
1342 | |
1343 text[0] = '\025'; | |
1344 text[1] = '\f'; | |
1345 text[2] = '\001'; | |
1346 text[3] = TXT_Warning; | |
1347 text[4] = 0; | |
1348 GFX_write_string(&FontT42,&t7cH,text,0); | |
1349 | |
1350 textpointer = 0; | |
1351 lineFree = 5; | |
1352 | |
1353 if(stateUsed->decoMissed_at_the_end_of_dive) | |
1354 { | |
1355 text[textpointer++] = TXT_2BYTE; | |
1356 text[textpointer++] = TXT2BYTE_WarnDecoMissed; | |
1357 text[textpointer++] = '\n'; | |
1358 text[textpointer++] = '\r'; | |
1359 text[textpointer] = 0; | |
1360 lineFree--; | |
1361 } | |
1362 | |
1363 if(stateUsed->cnsHigh_at_the_end_of_dive) | |
1364 { | |
1365 text[textpointer++] = TXT_2BYTE; | |
1366 text[textpointer++] = TXT2BYTE_WarnCnsHigh; | |
1367 text[textpointer++] = '\n'; | |
1368 text[textpointer++] = '\r'; | |
1369 text[textpointer] = 0; | |
1370 lineFree--; | |
1371 } | |
1372 if(textpointer != 0) | |
1373 GFX_write_string(&FontT48,&t7cW,text,1); | |
1374 } | |
1375 | |
1376 | |
1377 void t7_show_customview_warnings(void) | |
1378 { | |
1379 char text[256]; | |
1380 uint8_t textpointer, lineFree; | |
1381 | |
1382 text[0] = '\025'; | |
1383 text[1] = '\f'; | |
1384 text[2] = '\001'; | |
1385 text[3] = TXT_Warning; | |
1386 text[4] = 0; | |
1387 GFX_write_string(&FontT42,&t7cH,text,0); | |
1388 | |
1389 textpointer = 0; | |
1390 lineFree = 5; | |
1391 | |
1392 if(lineFree && stateUsed->warnings.decoMissed) | |
1393 { | |
1394 text[textpointer++] = TXT_2BYTE; | |
1395 text[textpointer++] = TXT2BYTE_WarnDecoMissed; | |
1396 text[textpointer++] = '\n'; | |
1397 text[textpointer++] = '\r'; | |
1398 text[textpointer] = 0; | |
1399 lineFree--; | |
1400 } | |
1401 | |
1402 if(lineFree && stateUsed->warnings.fallback) | |
1403 { | |
1404 text[textpointer++] = TXT_2BYTE; | |
1405 text[textpointer++] = TXT2BYTE_WarnFallback; | |
1406 text[textpointer++] = '\n'; | |
1407 text[textpointer++] = '\r'; | |
1408 text[textpointer] = 0; | |
1409 lineFree--; | |
1410 } | |
1411 | |
1412 if(lineFree && stateUsed->warnings.ppO2Low) | |
1413 { | |
1414 text[textpointer++] = TXT_2BYTE; | |
1415 text[textpointer++] = TXT2BYTE_WarnPPO2Low; | |
1416 text[textpointer++] = '\n'; | |
1417 text[textpointer++] = '\r'; | |
1418 text[textpointer] = 0; | |
1419 lineFree--; | |
1420 } | |
1421 | |
1422 if(lineFree && stateUsed->warnings.ppO2High) | |
1423 { | |
1424 text[textpointer++] = TXT_2BYTE; | |
1425 text[textpointer++] = TXT2BYTE_WarnPPO2High; | |
1426 text[textpointer++] = '\n'; | |
1427 text[textpointer++] = '\r'; | |
1428 text[textpointer] = 0; | |
1429 lineFree--; | |
1430 } | |
1431 | |
1432 if(lineFree && stateUsed->warnings.sensorLinkLost) | |
1433 { | |
1434 text[textpointer++] = TXT_2BYTE; | |
1435 text[textpointer++] = TXT2BYTE_WarnSensorLinkLost; | |
1436 text[textpointer++] = '\n'; | |
1437 text[textpointer++] = '\r'; | |
1438 text[textpointer] = 0; | |
1439 lineFree--; | |
1440 } | |
1441 /* | |
1442 if(lineFree && stateUsed->warnings.lowBattery) | |
1443 { | |
1444 text[textpointer++] = TXT_2BYTE; | |
1445 text[textpointer++] = TXT2BYTE_WarnBatteryLow; | |
1446 text[textpointer++] = '\n'; | |
1447 text[textpointer++] = '\r'; | |
1448 text[textpointer] = 0; | |
1449 lineFree--; | |
1450 } | |
1451 */ | |
1452 GFX_write_string(&FontT48,&t7cW,text,1); | |
1453 } | |
1454 | |
1455 | |
1456 void t7_set_customview_to_primary(void) | |
1457 { | |
1458 if(stateUsed->mode == MODE_DIVE) | |
1459 selection_customview = settingsGetPointer()->tX_customViewPrimary; | |
1460 } | |
1461 | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1462 uint8_t t7_GetEnabled_customviews() |
38 | 1463 { |
379 | 1464 int8_t i; |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1465 uint8_t *pViews; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1466 uint8_t increment = 1; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1467 |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1468 uint8_t enabledViewCnt = 0; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1469 uint32_t cv_config = settingsGetPointer()->cv_configuration; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1470 |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1471 if(stateUsed->mode == MODE_DIVE) |
374 | 1472 pViews = (uint8_t*)customviewsDive; |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1473 else |
374 | 1474 pViews = (uint8_t*)customviewsSurface; |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1475 |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1476 while((*pViews != CVIEW_END)) |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1477 { |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1478 increment = 1; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1479 /* check if view is enabled */ |
379 | 1480 i=0; |
1481 do | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1482 { |
379 | 1483 if(*pViews == cv_changelist[i]) |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1484 { |
379 | 1485 if(!CHECK_BIT_THOME(cv_config, cv_changelist[i])) |
1486 { | |
1487 increment = 0; | |
1488 } | |
1489 break; | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1490 } |
379 | 1491 i++; |
1492 } while(cv_changelist[i] != CVIEW_END); | |
1493 if(cv_changelist[i] == CVIEW_END) | |
1494 { | |
1495 increment = 0; | |
1496 } | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1497 if (((*pViews == CVIEW_sensors) || (*pViews == CVIEW_sensors_mV)) && |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1498 ((stateUsed->diveSettings.ppo2sensors_deactivated) || (stateUsed->diveSettings.ccrOption == 0))) |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1499 { |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1500 increment = 0; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1501 } |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1502 |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1503 pViews++; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1504 enabledViewCnt += increment; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1505 } |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1506 return enabledViewCnt; |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1507 } |
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1508 |
405 | 1509 uint8_t t7_customview_disabled(uint8_t view) |
1510 { | |
1511 uint8_t i = 0; | |
1512 uint8_t cv_disabled = 0; | |
1513 | |
1514 while(cv_changelist[i] != CVIEW_END) | |
1515 { | |
1516 if((view == cv_changelist[i]) && !CHECK_BIT_THOME(settingsGetPointer()->cv_configuration, cv_changelist[i])) | |
1517 { | |
1518 cv_disabled = 1; | |
1519 break; | |
1520 } | |
1521 i++; | |
1522 } | |
1523 | |
1524 if (((view == CVIEW_sensors) || (view == CVIEW_sensors_mV)) && | |
1525 ((stateUsed->diveSettings.ppo2sensors_deactivated) || (stateUsed->diveSettings.ccrOption == 0))) | |
1526 { | |
1527 cv_disabled = 1; | |
1528 } | |
1529 return cv_disabled; | |
1530 } | |
1531 | |
361
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1532 void t7_change_customview(uint8_t action) |
38 | 1533 { |
365
c18aebb03fed
Bugfix: selection of current view not working
ideenmodellierer
parents:
361
diff
changeset
|
1534 uint8_t *pViews; |
361
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1535 uint8_t *pStartView,*pCurView, *pLastView; |
38 | 1536 _Bool cv_disabled = 0; |
1537 | |
1538 if(stateUsed->mode == MODE_DIVE) | |
374 | 1539 pViews = (uint8_t*)customviewsDive; |
38 | 1540 else |
374 | 1541 pViews = (uint8_t*)customviewsSurface; |
38 | 1542 |
361
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1543 pStartView = pViews; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1544 /* set pointer to currently selected view and count number of entries */ |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1545 while((*pViews != CVIEW_END)) |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1546 { |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1547 if (*pViews == selection_customview) |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1548 { |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1549 pCurView = pViews; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1550 } |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1551 pViews++; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1552 } |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1553 pLastView = pViews; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1554 pViews = pCurView; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1555 |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1556 if((action == ACTION_BUTTON_ENTER) || (action == ACTION_PITCH_POS)) |
38 | 1557 { |
361
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1558 if(*pViews < CVIEW_END) |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1559 pViews++; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1560 |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1561 if(*pViews == CVIEW_END) |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1562 { |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1563 pViews = pStartView; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1564 } |
38 | 1565 } |
361
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1566 else |
38 | 1567 { |
365
c18aebb03fed
Bugfix: selection of current view not working
ideenmodellierer
parents:
361
diff
changeset
|
1568 if(pViews == pStartView) |
361
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1569 { |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1570 pViews = pLastView - 1; |
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1571 } |
365
c18aebb03fed
Bugfix: selection of current view not working
ideenmodellierer
parents:
361
diff
changeset
|
1572 else |
c18aebb03fed
Bugfix: selection of current view not working
ideenmodellierer
parents:
361
diff
changeset
|
1573 { |
c18aebb03fed
Bugfix: selection of current view not working
ideenmodellierer
parents:
361
diff
changeset
|
1574 pViews--; |
c18aebb03fed
Bugfix: selection of current view not working
ideenmodellierer
parents:
361
diff
changeset
|
1575 } |
361
b111fc4250e9
Pass action to customer vie update function.
Ideenmodellierer
parents:
247
diff
changeset
|
1576 } |
365
c18aebb03fed
Bugfix: selection of current view not working
ideenmodellierer
parents:
361
diff
changeset
|
1577 |
366 | 1578 do |
1579 { | |
405 | 1580 cv_disabled = t7_customview_disabled(*pViews); |
366 | 1581 if(cv_disabled) /* view is disabled => jump to next view */ |
1582 { | |
369
210bffc496a3
Added a function to count the active custom views.
ideenmodellierer
parents:
367
diff
changeset
|
1583 if((action == ACTION_BUTTON_ENTER) || (action == ACTION_PITCH_POS)) |
366 | 1584 { |
1585 pViews++; | |
1586 if(*pViews == CVIEW_END) | |
1587 { | |
1588 pViews = pStartView; | |
1589 } | |
1590 } | |
1591 else | |
1592 { | |
1593 if(pViews == pStartView) | |
1594 { | |
1595 pViews = pLastView - 1; | |
1596 } | |
1597 else | |
1598 { | |
1599 pViews--; | |
1600 } | |
1601 } | |
1602 } | |
1603 } while(cv_disabled); | |
1604 | |
38 | 1605 selection_customview = *pViews; |
1606 } | |
1607 | |
1608 | |
1609 uint8_t t7_get_length_of_customtext(void) | |
1610 { | |
1611 uint8_t i = 0; | |
1612 settingsGetPointer()->customtext[60-1] = 0; | |
1613 while(settingsGetPointer()->customtext[i] > 0) | |
1614 i++; | |
1615 return i; | |
1616 } | |
1617 | |
1618 | |
1619 void t7_refresh_customview(void) | |
1620 { | |
405 | 1621 static uint8_t last_customview = CVIEW_END; |
38 | 1622 |
1623 char text[256]; | |
1624 uint16_t textpointer = 0; | |
1625 int16_t start; | |
51
8f8ea3a32e82
Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents:
38
diff
changeset
|
1626 uint8_t lineCountCustomtext = 0; |
38 | 1627 int16_t shiftWindowY0; |
1628 RTC_DateTypeDef Sdate; | |
1629 RTC_TimeTypeDef Stime; | |
1630 float fPpO2limitHigh, fPpO2limitLow, fPpO2ofGasAtThisDepth; // CVIEW_Gaslist | |
1631 const SGasLine * pGasLine; // CVIEW_Gaslist | |
1632 uint8_t oxygen, helium; // CVIEW_Gaslist | |
1633 float depth, surface, fraction_nitrogen, fraction_helium, ead, end; // CVIEW_EADTime | |
1634 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1635 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1636 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1637 |
405 | 1638 if(last_customview != selection_customview) /* check if current selection is disabled and should be skipped */ |
1639 { | |
1640 if(t7_customview_disabled(selection_customview)) | |
1641 { | |
1642 t7_change_customview(ACTION_BUTTON_ENTER); | |
1643 } | |
1644 } | |
38 | 1645 switch(selection_customview) |
1646 { | |
1647 case CVIEW_noneOrDebug: | |
1648 if(settingsGetPointer()->showDebugInfo) | |
1649 { | |
1650 // header | |
1651 strcpy(text,"\032\f\001Debug"); | |
1652 GFX_write_string(&FontT42,&t7cH,text,0); | |
1653 // content | |
1654 t7_debug(); | |
1655 } | |
1656 break; | |
1657 | |
1658 case CVIEW_SummaryOfLeftCorner: | |
1659 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Summary); | |
1660 GFX_write_string(&FontT42,&t7cH,text,0); | |
1661 // content | |
1662 t7_SummaryOfLeftCorner(); | |
1663 break; | |
1664 | |
1665 case CVIEW_CompassDebug: | |
1666 snprintf(text,100,"\032\f\001Compass raw"); | |
1667 GFX_write_string(&FontT42,&t7cH,text,0); | |
1668 /* | |
1669 pStateReal->lifeData.compass_heading = dataIn.data[dataIn.boolCompassData].compass_heading; | |
1670 pStateReal->lifeData.compass_roll = dataIn.data[dataIn.boolCompassData].compass_roll; | |
1671 pStateReal->lifeData.compass_pitch = dataIn.data[dataIn.boolCompassData].compass_pitch; | |
1672 | |
1673 pStateReal->lifeData.compass_DX_f = dataIn.data[dataIn.boolCompassData].compass_DX_f; | |
1674 pStateReal->lifeData.compass_DY_f = dataIn.data[dataIn.boolCompassData].compass_DY_f; | |
1675 pStateReal->lifeData.compass_DZ_f = dataIn.data[dataIn.boolCompassData].compass_DZ_f; | |
1676 */ | |
1677 snprintf(text,255,"%1.1f\n\r%1.1f\n\r%1.1f\n\r%i\n\r%i\n\r%i" | |
1678 ,stateUsed->lifeData.compass_heading | |
1679 ,stateUsed->lifeData.compass_roll | |
1680 ,stateUsed->lifeData.compass_pitch | |
1681 ,stateUsed->lifeData.compass_DX_f | |
1682 ,stateUsed->lifeData.compass_DY_f | |
1683 ,stateUsed->lifeData.compass_DZ_f | |
1684 ); | |
1685 | |
1686 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
1687 t7cY0free.WindowLineSpacing = 48; | |
1688 t7cY0free.WindowNumberOfTextLines = 6; | |
1689 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
1690 break; | |
1691 | |
1692 case CVIEW_Hello: | |
1693 t7_logo_OSTC(); | |
1694 t7cC.WindowLineSpacing = 53; | |
1695 t7cC.WindowNumberOfTextLines = 5; | |
1696 shiftWindowY0 = 18; | |
1697 | |
1698 if(updateNecessary)//if(DataEX_check_RTE_version__needs_update() || font_update_required()) | |
1699 { | |
1700 if(warning_count_high_time) | |
1701 { | |
1702 shiftWindowY0 += 20; | |
1703 t7cC.WindowY0 -= shiftWindowY0; | |
1704 textpointer = 0; | |
1705 text[textpointer++] = TXT_2BYTE; | |
1706 text[textpointer++] = TXT2BYTE_PleaseUpdate; | |
1707 text[textpointer++] = '\n'; | |
1708 text[textpointer++] = '\r'; | |
1709 if(DataEX_check_RTE_version__needs_update()) | |
1710 { | |
1711 text[textpointer++] = TXT_2BYTE; | |
1712 text[textpointer++] = TXT2BYTE_RTE; | |
1713 text[textpointer++] = '\n'; | |
1714 text[textpointer++] = '\r'; | |
1715 } | |
1716 if(font_update_required()) | |
1717 { | |
1718 text[textpointer++] = TXT_2BYTE; | |
1719 text[textpointer++] = TXT2BYTE_Fonts; | |
1720 } | |
1721 text[textpointer++] = 0; | |
1722 GFX_write_string_color(&FontT42,&t7cC,text,1, CLUT_WarningRed); | |
1723 t7cC.WindowY0 += shiftWindowY0; | |
1724 } | |
1725 t7cC.WindowNumberOfTextLines = 3; | |
1726 } | |
1727 else // customtext | |
1728 { | |
1729 lineCountCustomtext = t7_customtextPrepare(text); | |
1730 if(lineCountCustomtext <= 2) | |
1731 shiftWindowY0 += 20+26; // nach unten | |
1732 else | |
1733 if(lineCountCustomtext <= 3) | |
1734 shiftWindowY0 += 20; // nach unten | |
1735 t7cC.WindowY0 -= shiftWindowY0; | |
1736 | |
1737 GFX_write_string(&FontT42,&t7cC,text,1); | |
1738 t7cC.WindowNumberOfTextLines = 3; | |
1739 t7cC.WindowY0 += shiftWindowY0; | |
1740 } | |
1741 if(lineCountCustomtext <= 4) | |
1742 { | |
1743 snprintf(text,100,"\001#%0u V%01u.%01u.%01u", | |
1744 settingsGetPointer()->serialLow + (256 * settingsGetPointer()->serialHigh), | |
1745 firmwareDataGetPointer()->versionFirst, | |
1746 firmwareDataGetPointer()->versionSecond, | |
1747 firmwareDataGetPointer()->versionThird | |
1748 ); | |
1749 GFX_write_string(&FontT24,&t7cC,text,0); | |
1750 } | |
1751 break; | |
1752 | |
1753 case CVIEW_Gaslist: | |
1754 // a lot of code taken from tMenuGas.c | |
1755 // header | |
1756 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Gaslist); | |
1757 GFX_write_string(&FontT42,&t7cH,text,0); | |
1758 // content | |
1759 textpointer = 0; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1760 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1761 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1762 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1763 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1764 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1765 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1766 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1767 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1768 } |
38 | 1769 t7cY0free.WindowLineSpacing = 48+9; |
1770 t7cY0free.WindowNumberOfTextLines = 5; // NUM_GASES == 5 | |
1771 t7cY0free.WindowTab = 420; | |
1772 | |
1773 pGasLine = settingsGetPointer()->gas; | |
1774 if(actualLeftMaxDepth(stateUsed)) | |
1775 fPpO2limitHigh = (float)(settingsGetPointer()->ppO2_max_deco) / 100; | |
1776 else | |
1777 fPpO2limitHigh = (float)(settingsGetPointer()->ppO2_max_std) / 100; | |
1778 fPpO2limitLow = (float)(settingsGetPointer()->ppO2_min) / 100; | |
1779 for(int gasId=1;gasId<=NUM_GASES;gasId++) | |
1780 { | |
1781 textpointer = 0; | |
1782 fPpO2ofGasAtThisDepth = (stateUsed->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * pGasLine[gasId].oxygen_percentage / 100; | |
1783 if(pGasLine[gasId].note.ub.active == 0) | |
1784 strcpy(&text[textpointer++],"\021"); | |
1785 else if((fPpO2ofGasAtThisDepth > fPpO2limitHigh) || (fPpO2ofGasAtThisDepth < fPpO2limitLow)) | |
1786 strcpy(&text[textpointer++],"\025"); | |
1787 else | |
1788 strcpy(&text[textpointer++],"\030"); | |
1789 | |
1790 text[textpointer++] = ' '; | |
1791 oxygen = pGasLine[gasId].oxygen_percentage; | |
1792 helium = pGasLine[gasId].helium_percentage; | |
1793 textpointer += write_gas(&text[textpointer], oxygen, helium); | |
1794 // Wechseltiefe | |
1795 if(pGasLine[gasId].depth_meter) | |
1796 { | |
1797 textpointer += snprintf(&text[textpointer],7,"\t%u %c%c",unit_depth_integer(pGasLine[gasId].depth_meter), unit_depth_char1(), unit_depth_char2()); | |
1798 } | |
1799 GFX_write_string(&FontT42, &t7cY0free, text, gasId); | |
1800 } | |
1801 break; | |
1802 | |
1803 case CVIEW_EADTime: | |
1804 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Info ); | |
1805 GFX_write_string(&FontT42,&t7cH,text,0); | |
1806 textpointer = 0; | |
1807 | |
1808 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1809 if(pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1810 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1811 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1812 } |
38 | 1813 t7cY0free.WindowLineSpacing = 48; |
1814 t7cY0free.WindowNumberOfTextLines = 6; | |
1815 | |
1816 // time | |
1817 snprintf(text,100,"\032\001%c%c",TXT_2BYTE,TXT2BYTE_Clock ); | |
1818 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
1819 | |
1820 translateDate(stateRealGetPointer()->lifeData.dateBinaryFormat, &Sdate); | |
1821 translateTime(stateRealGetPointer()->lifeData.timeBinaryFormat, &Stime); | |
1822 if(Stime.Seconds % 2) | |
1823 textpointer += snprintf(&text[textpointer],100,"\030\001%02d:%02d",Stime.Hours,Stime.Minutes); | |
1824 else | |
1825 textpointer += snprintf(&text[textpointer],100,"\030\001%02d\031:\030%02d",Stime.Hours,Stime.Minutes); | |
1826 GFX_write_string(&FontT42, &t7cY0free, text, 2); | |
1827 | |
1828 // EAD / END | |
1829 // The equivalent air depth can be calculated for depths in metres as follows: | |
1830 // EAD = (Depth + 10) � Fraction of N2 / 0.79 - 10 (wikipedia) | |
1831 // The equivalent narcotic depth can be calculated for depths in metres as follows: | |
1832 // END = (Depth + 10) � (1 - Fraction of helium) - 10 (wikipedia) | |
1833 decom_get_inert_gases((float)stateUsed->lifeData.pressure_ambient_bar,&(stateUsed->lifeData.actualGas),&fraction_nitrogen,&fraction_helium); | |
1834 depth = stateUsed->lifeData.pressure_ambient_bar; | |
1835 surface = stateUsed->lifeData.pressure_surface_bar; | |
1836 ead = 10.f * ((depth * fraction_nitrogen/0.79f) - surface); | |
1837 end = 10.0f * ((depth * (1.f - fraction_helium)) - surface); | |
1838 if(ead < 0) | |
1839 ead = 0; | |
1840 if(end < 0) | |
1841 end = 0; | |
1842 | |
1843 snprintf(text,100,"\032\001EAD"); | |
1844 GFX_write_string(&FontT42, &t7cY0free, text, 3); | |
1845 snprintf(text,100,"\030\001%01.1f %c%c" | |
1846 , unit_depth_float(ead) | |
1847 , unit_depth_char1() | |
1848 , unit_depth_char2() | |
1849 ); | |
1850 GFX_write_string(&FontT42, &t7cY0free, text, 4); | |
1851 | |
1852 snprintf(text,100,"\032\001END"); | |
1853 GFX_write_string(&FontT42, &t7cY0free, text, 5); | |
1854 snprintf(text,100,"\030\001%01.1f %c%c" | |
1855 , unit_depth_float(ead) | |
1856 , unit_depth_char1() | |
1857 , unit_depth_char2() | |
1858 ); | |
1859 GFX_write_string(&FontT42, &t7cY0free, text, 6); | |
1860 break; | |
1861 | |
1862 case CVIEW_Profile: | |
1863 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Profile); | |
1864 GFX_write_string(&FontT42,&t7cH,text,0); | |
1865 textpointer = 0; | |
1866 t7_miniLiveLogProfile(); | |
1867 break; | |
1868 | |
1869 case CVIEW_Tissues: | |
1870 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Tissues); | |
1871 GFX_write_string(&FontT42,&t7cH,text,0); | |
1872 textpointer = 0; | |
1873 t7_tissues(stateUsed); | |
1874 break; | |
1875 | |
1876 case CVIEW_sensors: | |
1877 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_O2monitor); | |
1878 GFX_write_string(&FontT42,&t7cH,text,0); | |
1879 textpointer = 0; | |
1880 text[textpointer++] = '\030'; // main color | |
1881 for(int i=0;i<3;i++) | |
1882 { | |
1883 if(stateUsed->diveSettings.ppo2sensors_deactivated & (1<<i)) | |
1884 { | |
1885 text[textpointer++] = '\031'; // labelcolor | |
1886 text[textpointer++] = '\001'; | |
1887 text[textpointer++] = '-'; | |
1888 text[textpointer++] = '\n'; | |
1889 text[textpointer++] = '\r'; | |
1890 text[textpointer++] = '\030'; // main color | |
1891 text[textpointer] = 0; | |
1892 } | |
1893 else | |
1894 { | |
1895 if(stateUsed->warnings.sensorOutOfBounds[i]) | |
1896 text[textpointer++] = '\025'; // Warning Red | |
1897 textpointer += snprintf(&text[textpointer],100,"\001%01.2f\n\r\030",stateUsed->lifeData.ppO2Sensor_bar[i]); | |
1898 } | |
1899 } | |
1900 t7cC.WindowLineSpacing = 95; | |
1901 t7cC.WindowNumberOfTextLines = 3; | |
1902 text[textpointer] = 0; | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1903 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1904 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1905 t7cC.WindowY1 -= 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1906 } |
38 | 1907 GFX_write_string(&FontT105,&t7cC,text,1); |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1908 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1909 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1910 t7cC.WindowY1 += 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1911 } |
38 | 1912 break; |
1913 | |
1914 case CVIEW_sensors_mV: | |
1915 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_O2voltage); | |
1916 GFX_write_string(&FontT42,&t7cH,text,0); | |
1917 textpointer = 0; | |
1918 text[textpointer++] = '\030'; | |
1919 for(int i=0;i<3;i++) | |
1920 { | |
1921 if(stateUsed->diveSettings.ppo2sensors_deactivated & (1<<i)) | |
1922 { | |
1923 text[textpointer++] = '\031'; | |
1924 text[textpointer++] = '\001'; | |
1925 text[textpointer++] = '-'; | |
1926 text[textpointer++] = '\n'; | |
1927 text[textpointer++] = '\r'; | |
1928 text[textpointer++] = '\030'; | |
1929 text[textpointer] = 0; | |
1930 } | |
1931 else | |
1932 { | |
1933 if(stateUsed->warnings.sensorOutOfBounds[i]) | |
1934 text[textpointer++] = '\025'; | |
1935 textpointer += snprintf(&text[textpointer],100,"\001%01.1f mV\n\r\030",(stateUsed->lifeData.sensorVoltage_mV[i])); | |
1936 } | |
1937 } | |
1938 t7cC.WindowLineSpacing = 95; | |
1939 t7cC.WindowNumberOfTextLines = 3; | |
1940 text[textpointer] = 0; | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1941 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1942 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1943 t7cC.WindowY1 -= 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1944 } |
38 | 1945 GFX_write_string(&FontT48,&t7cC,text,1); |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1946 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1947 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1948 t7cC.WindowY1 += 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1949 } |
38 | 1950 break; |
1951 | |
1952 case CVIEW_Compass: | |
1953 default: | |
1954 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE, TXT2BYTE_Compass); | |
1955 GFX_write_string(&FontT42,&t7cH,text,0); | |
1956 t7_compass((uint16_t)stateUsed->lifeData.compass_heading, stateUsed->diveSettings.compassHeading); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1957 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1958 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1959 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1960 t7cY0free.WindowX0 += 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1961 t7cY0free.WindowY0 = 230; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1962 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1963 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1964 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1965 t7cY0free.WindowX0 -= 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1966 t7cY0free.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1967 t7cY0free.WindowY1 = 250; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1968 } |
38 | 1969 snprintf(text,100,"\030\001%03i`",(uint16_t)stateUsed->lifeData.compass_heading); |
1970 GFX_write_string(&FontT54,&t7cY0free,text,0); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1971 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1972 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1973 t7cY0free.WindowX0 -= 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1974 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1975 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1976 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1977 t7cY0free.WindowX0 += 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1978 } |
38 | 1979 break; |
1980 | |
1981 case CVIEW_Decolist: | |
1982 snprintf(text,100,"\032\f\001 %c%c", TXT_2BYTE, TXT2BYTE_Decolist); | |
1983 GFX_write_string(&FontT42,&t7cH,text,0); | |
1984 | |
1985 const SDecoinfo * pDecoinfo; | |
1986 uint8_t depthNext, depthLast, depthSecond, depthInc; | |
1987 | |
1988 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
1989 pDecoinfo = &stateUsed->decolistBuehlmann; | |
1990 else | |
1991 pDecoinfo = &stateUsed->decolistVPM; | |
1992 | |
1993 depthLast = (uint8_t)(stateUsed->diveSettings.last_stop_depth_bar * 10); | |
1994 depthSecond = (uint8_t)(stateUsed->diveSettings.input_second_to_last_stop_depth_bar * 10); | |
1995 depthInc = (uint8_t)(stateUsed->diveSettings.input_next_stop_increment_depth_bar * 10); | |
1996 | |
1997 if(settingsGetPointer()->nonMetricalSystem) | |
1998 { | |
1999 depthLast = (uint8_t)unit_depth_integer(depthLast); | |
2000 depthSecond = (uint8_t)unit_depth_integer(depthSecond); | |
2001 depthInc = (uint8_t)unit_depth_integer(depthInc); | |
2002 } | |
2003 | |
2004 for(start=DECOINFO_STRUCT_MAX_STOPS-1; start>0; start--) | |
2005 if(pDecoinfo->output_stop_length_seconds[start]) break; | |
2006 start -= 6; | |
2007 if(start < 0) start = 0; | |
2008 | |
2009 textpointer = 0; | |
2010 for(int i=start;i<6+start;i++) | |
2011 { | |
2012 if(i == 0) | |
2013 depthNext = depthLast; | |
2014 else | |
2015 depthNext = depthSecond + (( i - 1 )* depthInc); | |
2016 | |
2017 if(pDecoinfo->output_stop_length_seconds[i]) | |
2018 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); | |
2019 else | |
2020 textpointer += snprintf(&text[textpointer],20,"\031\034 %2u\016\016%c%c\017\n\r",depthNext, unit_depth_char1(), unit_depth_char2()); | |
2021 if(textpointer > 200) break; | |
2022 } | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2023 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2024 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2025 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2026 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2027 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2028 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2029 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2030 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2031 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2032 |
38 | 2033 t7cY0free.WindowLineSpacing = 48; |
2034 t7cY0free.WindowNumberOfTextLines = 6; | |
2035 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
2036 break; | |
2037 } | |
2038 } | |
2039 | |
2040 | |
2041 | |
2042 /* DIVE MODE | |
2043 */ | |
2044 void t7_refresh_divemode(void) | |
2045 { | |
2046 char TextL1[TEXTSIZE]; | |
2047 char TextL2[TEXTSIZE]; | |
2048 | |
2049 char TextR1[TEXTSIZE]; | |
2050 char TextR2[TEXTSIZE]; | |
2051 char TextR3[TEXTSIZE]; | |
2052 | |
2053 char TextC1[2*TEXTSIZE]; | |
2054 char TextC2[TEXTSIZE]; | |
2055 uint8_t textPointer; | |
2056 | |
2057 point_t start, stop; | |
2058 uint8_t color; | |
2059 int textlength; | |
2060 | |
2061 uint16_t nextstopLengthSeconds = 0; | |
2062 uint8_t nextstopDepthMeter = 0; | |
2063 uint8_t oxygen_percentage = 0; | |
2064 SDivetime Divetime = {0,0,0, 0}; | |
2065 SDivetime SafetyStopTime = {0,0,0,0}; | |
2066 SDivetime TimeoutTime = {0,0,0,0}; | |
2067 uint8_t customview_warnings = 0; | |
2068 const SDecoinfo * pDecoinfo; | |
2069 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2070 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2071 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2072 |
38 | 2073 Divetime.Total = stateUsed->lifeData.dive_time_seconds_without_surface_time; |
2074 Divetime.Minutes = Divetime.Total / 60; | |
2075 Divetime.Seconds = Divetime.Total - ( Divetime.Minutes * 60 ); | |
2076 | |
2077 SafetyStopTime.Total = timer_Safetystop_GetCountDown(); | |
2078 SafetyStopTime.Minutes = SafetyStopTime.Total / 60; | |
2079 SafetyStopTime.Seconds = SafetyStopTime.Total - (SafetyStopTime.Minutes * 60); | |
2080 | |
2081 TimeoutTime.Total = settingsGetPointer()->timeoutDiveReachedZeroDepth - stateUsed->lifeData.counterSecondsShallowDepth; | |
2082 if(TimeoutTime.Total > settingsGetPointer()->timeoutDiveReachedZeroDepth) | |
2083 { | |
2084 TimeoutTime.Total = 0; | |
2085 } | |
2086 TimeoutTime.Minutes = TimeoutTime.Total / 60; | |
2087 TimeoutTime.Seconds = TimeoutTime.Total - (TimeoutTime.Minutes * 60); | |
2088 | |
2089 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2090 pDecoinfo = &stateUsed->decolistBuehlmann; | |
2091 else | |
2092 pDecoinfo = &stateUsed->decolistVPM; | |
2093 | |
2094 if(pDecoinfo->output_time_to_surface_seconds) | |
2095 { | |
2096 tHome_findNextStop(pDecoinfo->output_stop_length_seconds, &nextstopDepthMeter, &nextstopLengthSeconds); | |
2097 } | |
2098 else | |
2099 { | |
2100 nextstopDepthMeter = 0; | |
2101 nextstopLengthSeconds = 0; | |
2102 } | |
2103 | |
2104 /* depth */ | |
174
ecb71521d004
Bugfix: make max depth move with current depth (part 2)
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
2105 float depth = unit_depth_float(stateUsed->lifeData.depth_meter); |
38 | 2106 |
2107 if(depth <= 0.3f) | |
2108 depth = 0; | |
2109 | |
2110 if(settingsGetPointer()->nonMetricalSystem) | |
2111 snprintf(TextL1,TEXTSIZE,"\032\f[feet]"); | |
2112 else | |
2113 snprintf(TextL1,TEXTSIZE,"\032\f%c",TXT_Depth); | |
2114 GFX_write_string(&FontT24,&t7l1,TextL1,0); | |
2115 | |
2116 if((stateUsed->lifeData.ascent_rate_meter_per_min > 8) || (stateUsed->lifeData.ascent_rate_meter_per_min < -10)) | |
2117 { | |
2118 snprintf(TextL1,TEXTSIZE,"\f\002%.0f %c%c/min " | |
2119 , unit_depth_float(stateUsed->lifeData.ascent_rate_meter_per_min) | |
2120 , unit_depth_char1() | |
2121 , unit_depth_char2() | |
2122 ); | |
2123 GFX_write_string(&FontT24,&t7l1,TextL1,0); | |
2124 } | |
2125 | |
2126 if( depth < 100) | |
2127 snprintf(TextL1,TEXTSIZE,"\020%01.1f",depth); | |
2128 else | |
2129 snprintf(TextL1,TEXTSIZE,"\020%01.0f",depth); | |
2130 | |
2131 t7_colorscheme_mod(TextL1); | |
2132 GFX_write_string(&FontT144,&t7l1,TextL1,1); | |
2133 | |
2134 /* max depth */ | |
2135 snprintf(TextL2,TEXTSIZE,"\032\f%c",TXT_MaxDepth); | |
2136 GFX_write_string(&FontT42,&t7l2,TextL2,0); | |
2137 | |
2138 if(unit_depth_float(stateUsed->lifeData.max_depth_meter) < 100) | |
2139 snprintf(TextL2,TEXTSIZE,"\020%01.1f",unit_depth_float(stateUsed->lifeData.max_depth_meter)); | |
2140 else | |
2141 snprintf(TextL2,TEXTSIZE,"\020%01.0f",unit_depth_float(stateUsed->lifeData.max_depth_meter)); | |
2142 | |
2143 t7_colorscheme_mod(TextL2); | |
2144 GFX_write_string(&FontT105,&t7l2,TextL2,1); | |
2145 | |
187
485c5135cf7f
cleanup: forgotten cleanup from 9da7dd50e2ec
Jan Mulder <jlmulder@xs4all.nl>
parents:
178
diff
changeset
|
2146 /* ascent rate graph */ |
392 | 2147 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 */ |
38 | 2148 { |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2149 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2150 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2151 start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2152 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2153 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2154 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2155 start.y = t7l3.WindowY0 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2156 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2157 |
38 | 2158 for(int i = 0; i<4;i++) |
2159 { | |
2160 start.y += 5*6; | |
2161 stop.y = start.y; | |
2162 start.x = CUSTOMBOX_LINE_LEFT - 1; | |
2163 stop.x = start.x - 17; | |
2164 GFX_draw_line(&t7screen, start, stop, 0); | |
2165 // start.x = CUSTOMBOX_LINE_RIGHT + 2; old right too | |
2166 // stop.x = start.x + 17; | |
2167 // GFX_draw_line(&t7screen, start, stop, 0); | |
2168 } | |
2169 // new thick bar design Sept. 2015 | |
2170 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 3 - 5; | |
2171 stop.x = start.x; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2172 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2173 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2174 start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2175 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2176 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2177 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2178 start.y = t7l3.WindowY0 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2179 } |
38 | 2180 stop.y = start.y + (uint16_t)(stateUsed->lifeData.ascent_rate_meter_per_min * 6); |
2181 stop.y -= 3; // wegen der Liniendicke von 12 anstelle von 9 | |
2182 if(stop.y >= 470) | |
2183 stop.y = 470; | |
2184 start.y += 7; // starte etwas weiter oben | |
2185 if(stateUsed->lifeData.ascent_rate_meter_per_min <= 10) | |
2186 color = CLUT_EverythingOkayGreen; | |
2187 else | |
2188 if(stateUsed->lifeData.ascent_rate_meter_per_min <= 15) | |
2189 color = CLUT_WarningYellow; | |
2190 else | |
2191 color = CLUT_WarningRed; | |
2192 | |
2193 GFX_draw_thick_line(12,&t7screen, start, stop, color); | |
2194 } | |
2195 //snprintf(TextL2,TEXTSIZE,"\f%.1f m/min",stateUsed->lifeData.ascent_rate_meter_per_min); | |
2196 | |
2197 /* divetime */ | |
2198 if(stateUsed->lifeData.counterSecondsShallowDepth) | |
2199 { | |
2200 snprintf(TextR1,TEXTSIZE,"\f\002\136 %u:%02u",TimeoutTime.Minutes, TimeoutTime.Seconds); | |
2201 GFX_write_string(&FontT42,&t7r1,TextR1,0); | |
2202 } | |
2203 else | |
2204 { | |
2205 snprintf(TextR1,TEXTSIZE,"\032\f\002%c",TXT_Divetime); | |
2206 GFX_write_string(&FontT42,&t7r1,TextR1,0); | |
2207 } | |
2208 | |
2209 if(Divetime.Minutes < 1000) | |
2210 snprintf(TextR1,TEXTSIZE,"\020\016\002%u:%02u",Divetime.Minutes, Divetime.Seconds); | |
2211 else | |
2212 snprintf(TextR1,TEXTSIZE,"\020\016\002%u'",Divetime.Minutes); | |
2213 t7_colorscheme_mod(TextR1); | |
2214 GFX_write_string(&FontT105,&t7r1,TextR1,1); | |
2215 | |
2216 /* next deco stop */ | |
2217 if(nextstopDepthMeter) | |
2218 { | |
2219 snprintf(TextR2,TEXTSIZE,"\032\f\002%c",TXT_Decostop); | |
2220 GFX_write_string(&FontT42,&t7r2,TextR2,0); | |
2221 textlength = snprintf(TextR2,TEXTSIZE,"\020\002%u%c%c %u'" | |
2222 , unit_depth_integer(nextstopDepthMeter) | |
2223 , unit_depth_char1_T105() | |
2224 , unit_depth_char2_T105() | |
2225 , (nextstopLengthSeconds+59)/60); | |
2226 t7_colorscheme_mod(TextR2); | |
2227 if(time_elapsed_ms(pDecoinfo->tickstamp, HAL_GetTick()) > MAX_AGE_DECOINFO_MS) | |
2228 TextR2[0] = '\021'; | |
2229 if(textlength <= 9) | |
2230 GFX_write_string(&FontT105,&t7r2,TextR2,1); | |
2231 else | |
2232 GFX_write_string(&FontT54,&t7r2,TextR2,1); | |
2233 } | |
2234 else if(SafetyStopTime.Total && (depth > timer_Safetystop_GetDepthUpperLimit())) | |
2235 { | |
2236 snprintf(TextR2,TEXTSIZE,"\032\f\002%c%c",TXT_2BYTE,TXT2BYTE_SafetyStop2); | |
2237 GFX_write_string(&FontT42,&t7r2,TextR2,0); | |
2238 snprintf(TextR2,TEXTSIZE,"\020\016\002%u:%02u",SafetyStopTime.Minutes,SafetyStopTime.Seconds); | |
2239 t7_colorscheme_mod(TextR2); | |
2240 GFX_write_string(&FontT105,&t7r2,TextR2,1); | |
2241 } | |
2242 | |
2243 /* tts - option 1 | |
2244 * ndl - option 2 | |
2245 * empty - option 3 */ | |
2246 if(pDecoinfo->output_time_to_surface_seconds) | |
2247 { | |
2248 snprintf(TextR3,TEXTSIZE,"\032\f\002%c",TXT_TTS); | |
2249 GFX_write_string(&FontT42,&t7r3,TextR3,0); | |
2250 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
|
2251 snprintf(TextR3,TEXTSIZE,"\020\002%i'",(pDecoinfo->output_time_to_surface_seconds + 59)/ 60); |
38 | 2252 else |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2253 snprintf(TextR3,TEXTSIZE,"\020\002%ih",(pDecoinfo->output_time_to_surface_seconds + 59)/ 3600); |
38 | 2254 t7_colorscheme_mod(TextR3); |
2255 if(time_elapsed_ms(pDecoinfo->tickstamp, HAL_GetTick()) > MAX_AGE_DECOINFO_MS) | |
2256 TextR2[0] = '\021'; | |
2257 GFX_write_string(&FontT105,&t7r3,TextR3,1); | |
2258 } | |
2259 else if(pDecoinfo->output_ndl_seconds) | |
2260 { | |
2261 snprintf(TextR3,TEXTSIZE,"\032\f\002%c",TXT_Nullzeit); | |
2262 GFX_write_string(&FontT42,&t7r3,TextR3,0); | |
2263 if(pDecoinfo->output_ndl_seconds < 1000 * 60) | |
2264 snprintf(TextR3,TEXTSIZE,"\020\002%i'",pDecoinfo->output_ndl_seconds/60); | |
2265 else | |
2266 snprintf(TextR3,TEXTSIZE,"\020\002%ih",pDecoinfo->output_ndl_seconds/3600); | |
2267 t7_colorscheme_mod(TextR3); | |
2268 if(time_elapsed_ms(pDecoinfo->tickstamp, HAL_GetTick()) > MAX_AGE_DECOINFO_MS) | |
2269 TextR2[0] = '\021'; | |
2270 GFX_write_string(&FontT105,&t7r3,TextR3,1); | |
2271 } | |
2272 | |
2273 /* Menu Selection (and gas mix) */ | |
2274 if(get_globalState() == StDMGAS) | |
2275 { | |
2276 textPointer = 0; | |
2277 TextR1[textPointer++] = '\a'; | |
2278 // TextR1[textPointer++] = '\f'; | |
2279 TextR1[textPointer++] = '\001'; | |
2280 TextR1[textPointer++] = ' '; | |
2281 textPointer += tHome_gas_writer(stateUsed->diveSettings.gas[actualBetterGasId()].oxygen_percentage,stateUsed->diveSettings.gas[actualBetterGasId()].helium_percentage,&TextR1[textPointer]); | |
2282 TextR1[textPointer++] = '?'; | |
2283 TextR1[textPointer++] = ' '; | |
2284 TextR1[textPointer++] = 0; | |
2285 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2286 } | |
2287 else if(get_globalState() == StDMSPT) | |
2288 { | |
2289 textPointer = 0; | |
2290 TextR1[textPointer++] = '\a'; | |
2291 TextR1[textPointer++] = '\001'; | |
2292 TextR1[textPointer++] = ' '; | |
2293 textPointer += snprintf(&TextR1[textPointer],5,"%f01.2",((float)(stateUsed->diveSettings.setpoint[actualBetterSetpointId()].setpoint_cbar))/100); | |
2294 TextR1[textPointer++] = '?'; | |
2295 TextR1[textPointer++] = ' '; | |
2296 TextR1[textPointer++] = 0; | |
2297 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2298 } | |
2299 else if(get_globalState() == StDMENU) | |
2300 { | |
2301 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveMenuQ); | |
2302 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2303 } | |
2304 else if(get_globalState() == StDSIM1) | |
2305 { | |
2306 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveQuitQ); | |
2307 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2308 } | |
2309 else if(get_globalState() == StDSIM2) | |
2310 { | |
2311 if(settingsGetPointer()->nonMetricalSystem) | |
2312 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-3.33ft "); | |
2313 else | |
2314 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-1m "); | |
2315 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2316 | |
2317 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2318 , unit_depth_integer(simulation_get_aim_depth()) | |
2319 , unit_depth_char1() | |
2320 , unit_depth_char2() | |
2321 ); | |
2322 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2323 | |
2324 } | |
2325 else if(get_globalState() == StDSIM3) | |
2326 { | |
2327 if(settingsGetPointer()->nonMetricalSystem) | |
2328 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+3.33ft "); | |
2329 else | |
2330 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+1m "); | |
2331 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2332 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2333 , unit_depth_integer(simulation_get_aim_depth()) | |
2334 , unit_depth_char1() | |
2335 , unit_depth_char2() | |
2336 ); | |
2337 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2338 } | |
2339 else if(get_globalState() == StDSIM4) | |
2340 { | |
2341 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+5' "); | |
2342 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2343 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2344 , unit_depth_integer(simulation_get_aim_depth()) | |
2345 , unit_depth_char1() | |
2346 , unit_depth_char2() | |
2347 ); | |
2348 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2349 } | |
2350 else | |
2351 { | |
2352 /* gas mix */ | |
2353 oxygen_percentage = 100; | |
2354 oxygen_percentage -= stateUsed->lifeData.actualGas.nitrogen_percentage; | |
2355 oxygen_percentage -= stateUsed->lifeData.actualGas.helium_percentage; | |
2356 | |
2357 textPointer = 0; | |
2358 TextC2[textPointer++] = '\020'; | |
2359 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
2360 { | |
2361 TextC2[textPointer++] = '\a'; | |
2362 } | |
2363 else | |
2364 { | |
2365 float fPpO2limitHigh, fPpO2now; | |
2366 | |
2367 if(actualLeftMaxDepth(stateUsed)) | |
2368 fPpO2limitHigh = settingsGetPointer()->ppO2_max_deco; | |
2369 else | |
2370 fPpO2limitHigh = settingsGetPointer()->ppO2_max_std; | |
2371 | |
2372 fPpO2now = (stateUsed->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * oxygen_percentage; | |
2373 | |
2374 if((fPpO2now > fPpO2limitHigh) || (fPpO2now < (float)(settingsGetPointer()->ppO2_min))) | |
2375 TextC2[textPointer++] = '\025'; | |
2376 } | |
2377 TextC2[textPointer++] = '\002'; | |
2378 textPointer += tHome_gas_writer(oxygen_percentage,stateUsed->lifeData.actualGas.helium_percentage,&TextC2[textPointer]); | |
2379 | |
2380 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
2381 { | |
2382 if(TextC2[0] == '\020') | |
2383 { | |
2384 TextC2[0] = '\004'; // NOP | |
2385 } | |
2386 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
2387 } | |
2388 else | |
2389 { | |
2390 t7_colorscheme_mod(TextC2); | |
2391 GFX_write_string(&FontT48,&t7c2,TextC2,0); // T54 has only numbers | |
2392 } | |
2393 | |
2394 if(stateUsed->diveSettings.ccrOption) | |
2395 { | |
2396 if(stateUsed->diveSettings.diveMode == DIVEMODE_CCR) | |
2397 { | |
2398 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2399 if(stateUsed->warnings.betterSetpoint && warning_count_high_time && (stateUsed->diveSettings.diveMode == DIVEMODE_CCR)) | |
2400 { | |
2401 TextC2[0] = '\a'; // inverse instead of color \020 | |
2402 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
2403 } | |
2404 else | |
2405 { | |
2406 t7_colorscheme_mod(TextC2); | |
2407 GFX_write_string(&FontT48,&t7c2,TextC2,0); | |
2408 } | |
2409 } | |
2410 } | |
2411 else if(settingsGetPointer()->alwaysShowPPO2) | |
2412 { | |
2413 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2414 t7_colorscheme_mod(TextC2); | |
2415 GFX_write_string(&FontT48,&t7c2,TextC2,0); | |
2416 } | |
2417 } | |
2418 | |
2419 /* algorithm, ccr, bailout and battery */ | |
2420 /* and permanent warnings (CNS) */ | |
2421 | |
2422 if((stateUsed->warnings.cnsHigh) && display_count_high_time) | |
2423 { | |
2424 TextC2[0] = '\f'; | |
2425 TextC2[1] = TXT_2BYTE; | |
2426 TextC2[2] = TXT2BYTE_WarnCnsHigh; | |
2427 TextC2[3] = 0; | |
2428 GFX_write_string_color(&FontT48,&t7c1,TextC2,0,CLUT_WarningRed); | |
2429 } | |
2430 else | |
2431 { | |
2432 if(stateUsed->warnings.aGf) | |
2433 { | |
2434 GFX_write_string_color(&FontT48,&t7c1,"\f" "aGF",0,CLUT_WarningYellow); | |
2435 } | |
2436 else if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2437 { | |
2438 GFX_write_string(&FontT48,&t7c1,"\027\f" "GF",0); | |
2439 } | |
2440 else | |
2441 { | |
2442 GFX_write_string(&FontT48,&t7c1,"\027\f" "VPM",0); | |
2443 } | |
2444 | |
2445 if(stateUsed->diveSettings.diveMode == DIVEMODE_CCR) | |
2446 GFX_write_string(&FontT24,&t7c1,"\027\f\002" "CCR",0); | |
2447 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80" "CCR",0); | |
2448 else | |
2449 if(stateUsed->diveSettings.ccrOption) | |
2450 GFX_write_string(&FontT24,&t7c1,"\f\002\024" "Bailout",0); | |
2451 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80\024" "Bailout",0); | |
2452 } | |
2453 TextC1[0] = '\020'; | |
2454 TextC1[1] = '3'; | |
2455 TextC1[2] = '1'; | |
2456 TextC1[3] = '1'; | |
2457 TextC1[4] = '1'; | |
2458 TextC1[5] = '1'; | |
2459 TextC1[6] = '1'; | |
2460 TextC1[7] = '1'; | |
2461 TextC1[8] = '1'; | |
2462 TextC1[9] = '1'; | |
2463 TextC1[10] = '1'; | |
2464 TextC1[11] = '1'; | |
2465 TextC1[12] = '0'; | |
2466 TextC1[13] = 0; | |
2467 | |
2468 for(int i=1;i<=10;i++) | |
2469 { | |
2470 if( stateUsed->lifeData.battery_charge > (9 * i)) | |
2471 TextC1[i+1] += 1; | |
2472 } | |
2473 | |
2474 if(stateUsed->warnings.lowBattery) | |
2475 { | |
2476 TextC1[0] = '\025'; | |
2477 if(warning_count_high_time) | |
2478 { | |
2479 for(int i=2;i<=11;i++) | |
2480 TextC1[i] = '1'; | |
2481 } | |
2482 else | |
2483 { | |
2484 TextC1[2] = '2'; | |
2485 } | |
2486 GFX_write_string(&Batt24,&t7batt,TextC1,0); | |
2487 | |
2488 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
2489 { | |
2490 snprintf(TextC1,16,"\004\025\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
2491 if(warning_count_high_time) | |
2492 TextC1[0] = '\a'; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2493 GFX_write_string(&FontT24,&t7voltage,TextC1,0); |
38 | 2494 } |
2495 } | |
2496 else | |
2497 { | |
2498 t7_colorscheme_mod(TextC1); | |
2499 GFX_write_string(&Batt24,&t7batt,TextC1,0); | |
2500 | |
2501 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
2502 { | |
2503 snprintf(TextC1,16,"\020\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
2504 t7_colorscheme_mod(TextC1); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2505 GFX_write_string(&FontT24,&t7voltage,TextC1,0); // t7batt |
38 | 2506 } |
2507 } | |
2508 | |
2509 /* customizable left lower corner */ | |
2510 t7_refresh_divemode_userselected_left_lower_corner(); | |
2511 | |
2512 | |
2513 /* customview - option 1 | |
2514 * warning - option 2 */ | |
2515 if(stateUsed->warnings.numWarnings) | |
2516 customview_warnings = t7_test_customview_warnings(); | |
2517 | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
2518 background.pointer = 0; |
38 | 2519 if(customview_warnings && warning_count_high_time) |
2520 t7_show_customview_warnings(); | |
2521 else | |
2522 t7_refresh_customview(); | |
2523 | |
2524 /* the frame */ | |
2525 draw_frame(1,1, CLUT_DIVE_pluginbox, CLUT_DIVE_FieldSeperatorLines); | |
2526 } | |
2527 | |
2528 void t7_set_field_to_primary(void) | |
2529 { | |
2530 if(stateUsed->mode == MODE_DIVE) | |
2531 selection_custom_field = settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary; | |
2532 } | |
2533 | |
2534 void t7_change_field(void) | |
2535 { | |
2536 selection_custom_field++; | |
2537 | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2538 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
|
2539 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2540 selection_custom_field++; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2541 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2542 |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2543 if(selection_custom_field >= LLC_END) |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2544 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2545 selection_custom_field = LLC_Empty; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2546 } |
38 | 2547 } |
2548 | |
2549 | |
2550 void t7_refresh_divemode_userselected_left_lower_corner(void) | |
2551 { | |
2552 if(!selection_custom_field) | |
2553 return; | |
2554 | |
2555 char headerText[10]; | |
2556 char text[TEXTSIZE]; | |
2557 uint8_t textpointer = 0; | |
2558 _Bool tinyHeaderFont = 0; | |
2559 uint8_t line = 0; | |
457 | 2560 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2561 uint16_t agedColor = 0; |
457 | 2562 #endif |
38 | 2563 |
2564 SDivetime Stopwatch = {0,0,0,0}; | |
2565 float fAverageDepth, fAverageDepthAbsolute; | |
2566 const SDecoinfo * pDecoinfoStandard; | |
2567 const SDecoinfo * pDecoinfoFuture; | |
2568 float fCNS; | |
2569 float temperature; | |
2570 | |
2571 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2572 { | |
2573 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
2574 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
2575 } | |
2576 else | |
2577 { | |
2578 pDecoinfoStandard = &stateUsed->decolistVPM; | |
2579 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
2580 } | |
2581 | |
2582 Stopwatch.Total = timer_Stopwatch_GetTime(); | |
2583 Stopwatch.Minutes = Stopwatch.Total / 60; | |
2584 Stopwatch.Seconds = Stopwatch.Total - ( Stopwatch.Minutes * 60 ); | |
2585 fAverageDepth = timer_Stopwatch_GetAvarageDepth_Meter(); | |
2586 fAverageDepthAbsolute = stateUsed->lifeData.average_depth_meter; | |
2587 | |
2588 headerText[0] = '\032'; | |
2589 headerText[1] = '\f'; | |
2590 | |
2591 switch(selection_custom_field) | |
2592 { | |
2593 /* Temperature */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2594 case LLC_Temperature: |
38 | 2595 default: |
189
8b8074080d7b
Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents:
187
diff
changeset
|
2596 temperature = unit_temperature_float(stateUsed->lifeData.temperature_celsius); |
38 | 2597 headerText[2] = TXT_Temperature; |
2598 textpointer = snprintf(text,TEXTSIZE,"\020\016%01.1f \140",temperature); // "\016\016%01.1f `" + C or F | |
2599 if(settingsGetPointer()->nonMetricalSystem == 0) | |
2600 text[textpointer++] = 'C'; | |
2601 else | |
2602 text[textpointer++] = 'F'; | |
2603 text[textpointer++] = 0; | |
2604 tinyHeaderFont = 0; | |
2605 break; | |
2606 | |
2607 /* Average Depth */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2608 case LLC_AverageDepth: |
38 | 2609 headerText[2] = TXT_AvgDepth; |
2610 if(settingsGetPointer()->nonMetricalSystem) | |
2611 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(fAverageDepthAbsolute)); | |
2612 else | |
2613 snprintf(text,TEXTSIZE,"\020%01.1f",fAverageDepthAbsolute); | |
2614 break; | |
2615 | |
2616 /* ppO2 */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2617 case LLC_ppO2: |
38 | 2618 headerText[2] = TXT_ppO2; |
2619 snprintf(text,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2620 break; | |
2621 | |
2622 /* Stop Uhr */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2623 case LLC_Stopwatch: |
38 | 2624 headerText[2] = TXT_Stopwatch; |
2625 if(settingsGetPointer()->nonMetricalSystem) | |
2626 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.0f",Stopwatch.Minutes, Stopwatch.Seconds,unit_depth_float(fAverageDepth)); | |
2627 else | |
2628 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.1f",Stopwatch.Minutes, Stopwatch.Seconds,fAverageDepth); | |
2629 tinyHeaderFont = 1; | |
2630 line = 1; | |
2631 break; | |
2632 | |
2633 /* Ceiling */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2634 case LLC_Ceiling: |
38 | 2635 headerText[2] = TXT_Ceiling; |
2636 if((pDecoinfoStandard->output_ceiling_meter > 99.9f) || (settingsGetPointer()->nonMetricalSystem)) | |
2637 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); | |
2638 else | |
2639 snprintf(text,TEXTSIZE,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); | |
2640 break; | |
2641 | |
2642 /* Future TTS */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2643 case LLC_FutureTTS: |
38 | 2644 headerText[2] = TXT_FutureTTS; |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2645 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
|
2646 snprintf(text,TEXTSIZE,"\020\016\016@+%u'\n\r" "%i' TTS",settingsGetPointer()->future_TTS, (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
|
2647 else |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2648 snprintf(text,TEXTSIZE,"\020\016\016@+%u'\n\r" "%ih TTS",settingsGetPointer()->future_TTS, (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
38 | 2649 tinyHeaderFont = 1; |
2650 line = 1; | |
2651 break; | |
2652 | |
2653 /* CNS */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2654 case LLC_CNS: |
38 | 2655 headerText[2] = TXT_CNS; |
2656 fCNS = stateUsed->lifeData .cns; | |
2657 if(fCNS > 999) | |
2658 fCNS = 999; | |
2659 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",fCNS); | |
2660 break; | |
2661 | |
2662 /* actual GF */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2663 case LLC_GF: |
38 | 2664 headerText[2] = TXT_ActualGradient; |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
2665 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",100 * pDecoinfoStandard->super_saturation); |
38 | 2666 break; |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2667 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2668 case LCC_BottleBar: |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2669 headerText[2] = TXT_AtemGasVorrat; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2670 tinyHeaderFont = 1; |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2671 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
|
2672 break; |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2673 #endif |
38 | 2674 } |
2675 headerText[3] = 0; | |
2676 | |
2677 if(tinyHeaderFont) | |
2678 GFX_write_string(&FontT24,&t7l3,headerText,0); | |
2679 else | |
2680 GFX_write_string(&FontT42,&t7l3,headerText,0); | |
2681 | |
2682 t7_colorscheme_mod(text); | |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2683 #ifndef ENABLE_BOTTLE_SENSOR |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2684 GFX_write_string(&FontT105,&t7l3,text,line); |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2685 #else |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2686 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
|
2687 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2688 GFX_write_string(&FontT105,&t7l3,text,line); |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2689 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2690 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2691 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2692 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
|
2693 if(agedColor > 1200) |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2694 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2695 agedColor = CLUT_WarningRed; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2696 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2697 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2698 if(agedColor > 600) |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2699 { |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2700 agedColor = CLUT_MenuLineUnselected; |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2701 } |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2702 else |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2703 if(agedColor > 20) |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2704 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2705 agedColor = CLUT_Font031; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2706 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2707 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2708 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2709 agedColor = CLUT_Font020; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2710 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2711 |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2712 GFX_write_string_color(&FontT105,&t7l3,text,line,agedColor); |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2713 } |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2714 #endif |
38 | 2715 } |
2716 | |
2717 /* Private functions ---------------------------------------------------------*/ | |
2718 | |
2719 uint8_t t7_customtextPrepare(char * text) | |
2720 { | |
2721 uint8_t i, j, textptr, lineCount; | |
2722 char nextChar; | |
2723 | |
2724 textptr = 0; | |
2725 lineCount = 0; | |
2726 | |
2727 text[textptr++] = TXT_MINIMAL; | |
2728 | |
2729 j = 0; | |
2730 i = 0; | |
2731 do | |
2732 { | |
2733 j += i; | |
2734 i = 0; | |
2735 do | |
2736 { | |
2737 nextChar = settingsGetPointer()->customtext[i+j]; | |
2738 i++; | |
2739 if((!nextChar) || (nextChar =='\n') || (nextChar =='\r')) | |
2740 break; | |
2741 text[textptr++] = nextChar; | |
2742 } while (i < 12); | |
2743 | |
2744 if(!nextChar) | |
2745 break; | |
2746 | |
2747 if(lineCount < 3) | |
2748 { | |
2749 text[textptr++] = '\n'; | |
2750 text[textptr++] = '\r'; | |
2751 } | |
2752 lineCount++; | |
2753 for(uint8_t k=0;k<2;k++) | |
2754 { | |
2755 nextChar = settingsGetPointer()->customtext[i+j+k]; | |
2756 if((nextChar =='\n') || (nextChar =='\r')) | |
2757 i++; | |
2758 else | |
2759 break; | |
2760 } | |
2761 | |
2762 } while (lineCount < 4); | |
2763 | |
2764 text[textptr] = 0; | |
2765 return lineCount; | |
2766 } | |
2767 | |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2768 static void t7_colorscheme_mod(char *text) { |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2769 char *p = text; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2770 while (*p) { |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2771 if ((*p == '\020') && !GFX_is_colorschemeDiveStandard()) |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2772 *p = '\027'; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2773 p++; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2774 } |
38 | 2775 } |
2776 | |
2777 void draw_frame(_Bool PluginBoxHeader, _Bool LinesOnTheSides, uint8_t colorBox, uint8_t colorLinesOnTheSide) | |
2778 { | |
2779 point_t LeftLow, WidthHeight; | |
2780 point_t start, stop; | |
2781 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2782 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2783 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2784 |
38 | 2785 // plugin box |
2786 LeftLow.x = CUSTOMBOX_LINE_LEFT; | |
2787 WidthHeight.x = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_LINE_LEFT; | |
2788 LeftLow.y = 60; | |
2789 WidthHeight.y = 440 - LeftLow.y; | |
2790 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, colorBox); | |
2791 | |
2792 if(PluginBoxHeader) | |
2793 { | |
2794 // plugin box - header | |
2795 start.x = CUSTOMBOX_LINE_LEFT; | |
2796 stop.x = CUSTOMBOX_LINE_RIGHT; | |
2797 stop.y = start.y = 440 - 60; | |
2798 GFX_draw_line(&t7screen, start, stop, colorBox); | |
2799 } | |
2800 | |
2801 if(LinesOnTheSides) | |
2802 { | |
2803 // aufteilung links | |
2804 start.x = 0; | |
2805 stop.x = CUSTOMBOX_LINE_LEFT; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2806 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2807 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2808 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2809 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2810 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2811 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2812 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2813 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2814 |
38 | 2815 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2816 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2817 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2818 stop.y = start.y = t7l2.WindowY0 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2819 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2820 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2821 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2822 stop.y = start.y = 480 - t7l2.WindowY1 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2823 } |
38 | 2824 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
2825 | |
2826 // aufteilung rechts | |
2827 start.x = CUSTOMBOX_LINE_RIGHT; | |
2828 stop.x = 799; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2829 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2830 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2831 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2832 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2833 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2834 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2835 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2836 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2837 |
38 | 2838 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2839 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2840 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2841 stop.y = start.y = t7l2.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2842 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2843 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2844 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2845 stop.y = start.y = 480 - t7l2.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2846 } |
38 | 2847 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
2848 } | |
2849 } | |
2850 | |
2851 | |
2852 /* Compass like TCOS shellfish | |
2853 * input is 0 to 359 | |
2854 * 2 px / 1 degree | |
2855 * Range is 148 degree with CUSTOMBOX_SPACE_INSIDE = 296 | |
2856 * one side is 74 degree (less than 90 degree) | |
2857 * internal 360 + 180 degree of freedom | |
2858 * use positive values only, shift by 360 below 90 mid position | |
2859 */ | |
2860 | |
2861 | |
2862 point_t t7_compass_circle(uint8_t id, uint16_t degree) | |
2863 { | |
2864 float fCos, fSin; | |
2865 const float piMult = ((2 * 3.14159) / 360); | |
2866 // const int radius[4] = {95,105,115,60}; | |
2867 const int radius[4] = {95,105,115,100}; | |
2868 const point_t offset = {.x = 400, .y = 250}; | |
2869 | |
2870 static point_t r[4][360] = { 0 }; | |
2871 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2872 if(r[0][0].y == 0) /* calc table at first call only */ |
38 | 2873 { |
2874 for(int i=0;i<360;i++) | |
2875 { | |
2876 fCos = cos(i * piMult); | |
2877 fSin = sin(i * piMult); | |
2878 for(int j=0;j<4;j++) | |
2879 { | |
2880 r[j][i].x = offset.x + (int)(fSin * radius[j]); | |
2881 r[j][i].y = offset.y + (int)(fCos * radius[j]); | |
2882 } | |
2883 } | |
2884 } | |
2885 if(id > 3) id = 0; | |
2886 if(degree > 359) degree = 0; | |
2887 return r[id][degree]; | |
2888 } | |
2889 | |
2890 /* range should be 0 to 30 bar if 300 meter with 100% of nitrogen or helium | |
2891 * T24 is 28 high | |
2892 */ | |
2893 void t7_tissues(const SDiveState * pState) | |
2894 { | |
2895 point_t start, change, stop; | |
2896 float value; | |
2897 uint16_t front, cns100pixel; | |
2898 char text[256]; | |
2899 uint8_t textpointer = 0; | |
2900 uint8_t color; | |
2901 | |
2902 float percent_N2; | |
2903 float percent_He; | |
2904 float partial_pressure_N2; | |
2905 float partial_pressure_He; | |
2906 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2907 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2908 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2909 |
38 | 2910 |
2911 /* N2 */ | |
2912 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2913 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2914 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2915 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2916 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2917 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2918 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2919 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2920 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2921 } |
38 | 2922 t7cY0free.WindowNumberOfTextLines = 3; |
2923 | |
2924 text[textpointer++] = '\030'; | |
2925 text[textpointer++] = TXT_2BYTE; | |
2926 text[textpointer++] = TXT2BYTE_Nitrogen; | |
2927 text[textpointer++] = '\n'; | |
2928 text[textpointer++] = '\r'; | |
2929 text[textpointer++] = TXT_2BYTE; | |
2930 text[textpointer++] = TXT2BYTE_Helium; | |
2931 text[textpointer++] = '\n'; | |
2932 text[textpointer++] = '\r'; | |
2933 text[textpointer++] = TXT_2BYTE; | |
2934 text[textpointer++] = TXT2BYTE_CNS; | |
2935 text[textpointer++] = 0; | |
2936 | |
2937 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
2938 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2939 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2940 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2941 start.y = t7cH.WindowY0 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2942 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2943 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2944 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2945 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2946 } |
38 | 2947 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
2948 stop.x = start.x + CUSTOMBOX_SPACE_INSIDE; | |
2949 | |
2950 for(int i=0;i<16;i++) | |
2951 { | |
2952 stop.y = start.y; | |
2953 change.y = start.y; | |
2954 | |
2955 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
|
2956 value *= 80; |
38 | 2957 |
2958 if(value < 0) | |
2959 front = 0; | |
2960 else | |
2961 if(value > CUSTOMBOX_SPACE_INSIDE) | |
2962 front = CUSTOMBOX_SPACE_INSIDE; | |
2963 else | |
2964 front = (uint16_t)value; | |
2965 | |
2966 change.x = start.x + front; | |
2967 if(change.x != start.x) | |
2968 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
2969 if(change.x != stop.x) | |
2970 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
2971 | |
2972 start.y -= 3; | |
2973 } | |
2974 | |
2975 /* He */ | |
2976 start.y -= 28 + 14; | |
2977 for(int i=0;i<16;i++) | |
2978 { | |
2979 stop.y = start.y; | |
2980 change.y = start.y; | |
2981 | |
2982 value = pState->lifeData.tissue_helium_bar[i]; | |
2983 value *= 80;//20 | |
2984 | |
2985 if(value < 0) | |
2986 front = 0; | |
2987 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
2988 front = CUSTOMBOX_SPACE_INSIDE; | |
2989 else | |
2990 front = (uint16_t)value; | |
2991 | |
2992 change.x = start.x + front; | |
2993 if(change.x != start.x) | |
2994 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
2995 if(change.x != stop.x) | |
2996 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
2997 | |
2998 start.y -= 3; | |
2999 } | |
3000 | |
3001 /* CNS == Oxygen */ | |
3002 start.y -= 28 + 14; | |
3003 | |
3004 cns100pixel = (8 * CUSTOMBOX_SPACE_INSIDE) / 10; | |
3005 value = pState->lifeData.cns; | |
3006 value *= cns100pixel; | |
3007 value /= 100; | |
3008 | |
3009 if(value < 0) | |
3010 front = 0; | |
3011 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
3012 front = CUSTOMBOX_SPACE_INSIDE; | |
3013 else | |
3014 front = (uint16_t)value; | |
3015 | |
3016 if(pState->lifeData.cns < 95) | |
3017 color = CLUT_Font030; | |
3018 else if(pState->lifeData.cns < 100) | |
3019 color = CLUT_WarningYellow; | |
3020 else | |
3021 color = CLUT_WarningRed; | |
3022 | |
3023 for(int i=0;i<16;i++) | |
3024 { | |
3025 stop.y = start.y; | |
3026 change.y = start.y; | |
3027 | |
3028 change.x = start.x + front; | |
3029 if(change.x != start.x) | |
3030 GFX_draw_thick_line(1,&t7screen, start, change, color); | |
3031 if(change.x != stop.x) | |
3032 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3033 | |
3034 start.y -= 3; | |
3035 } | |
3036 | |
3037 /* where is the onload/offload limit for N2 and He */ | |
3038 decom_get_inert_gases(pState->lifeData.pressure_ambient_bar, &pState->lifeData.actualGas, &percent_N2, &percent_He); | |
3039 partial_pressure_N2 = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_N2; | |
3040 partial_pressure_He = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_He; | |
3041 | |
3042 // Nitrogen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3043 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3044 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3045 start.y = t7cH.WindowY0 + 1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3046 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3047 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3048 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3049 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3050 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3051 |
38 | 3052 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
|
3053 if((percent_N2 > 0) && (partial_pressure_N2 > 0.7512f)) |
38 | 3054 { |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3055 value = partial_pressure_N2 - 0.7512f; |
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3056 value *= 80; |
38 | 3057 |
3058 if(value < 0) | |
3059 front = 3; | |
3060 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
3061 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
3062 else | |
3063 front = (uint16_t)value; | |
3064 } | |
3065 else | |
3066 { | |
3067 front = 1; | |
3068 } | |
3069 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
3070 stop.x = start.x; | |
3071 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
3072 | |
3073 | |
3074 // Helium vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3075 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3076 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3077 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
|
3078 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3079 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3080 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3081 start.y = t7cH.WindowY1 - 5 - 3*16 - 28 - 14; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3082 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3083 |
38 | 3084 stop.y = start.y - (3 * 15) - 1; |
3085 if((percent_He > 0) && (partial_pressure_He > 0.01f)) // 0.5f | |
3086 { | |
3087 | |
3088 value = partial_pressure_He; | |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3089 value *= 80; |
38 | 3090 |
3091 if(value < 0) | |
3092 front = 3; | |
3093 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
3094 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
3095 else | |
3096 front = (uint16_t)value; | |
3097 } | |
3098 else | |
3099 { | |
3100 front = 1; | |
3101 } | |
3102 | |
3103 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
3104 stop.x = start.x; | |
3105 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
3106 | |
3107 // Oxygen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3108 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3109 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3110 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
|
3111 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3112 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3113 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3114 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
|
3115 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3116 |
38 | 3117 stop.y = start.y - (3 * 15) - 1; |
3118 | |
3119 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + cns100pixel; | |
3120 stop.x = start.x; | |
3121 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
|
3122 |
38 | 3123 } |
3124 | |
3125 | |
3126 void t7_debug(void) | |
3127 { | |
3128 char text[256+50]; | |
3129 uint8_t textpointer = 0; | |
3130 | |
3131 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
3132 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
3133 t7cY0free.WindowNumberOfTextLines = 3; | |
3134 | |
3135 textpointer += snprintf(&text[textpointer],50,"Ambient [bar]\n\r"); | |
3136 textpointer += snprintf(&text[textpointer],50,"Surface [bar] + salt\n\r"); | |
3137 // textpointer += snprintf(&text[textpointer],50,"Difference [mbar]\n\r"); | |
3138 textpointer += snprintf(&text[textpointer],50,"ShallowCounter [s]\n\r"); | |
3139 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3140 | |
3141 t7cY0free.WindowY0 -= 52; | |
3142 // 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)); | |
3143 snprintf(text,60, | |
3144 "%0.2f\n\r" | |
3145 "%0.2f %u%%\n\r" | |
3146 "%u" | |
3147 ,stateUsed->lifeData.pressure_ambient_bar | |
3148 ,stateUsed->lifeData.pressure_surface_bar | |
3149 ,settingsGetPointer()->salinity | |
3150 ,stateUsed->lifeData.counterSecondsShallowDepth); | |
3151 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
3152 } | |
3153 | |
3154 | |
3155 void t7_SummaryOfLeftCorner(void) | |
3156 { | |
3157 char text[256+60]; | |
3158 uint8_t textpointer = 0; | |
3159 | |
3160 const SDecoinfo * pDecoinfoStandard; | |
3161 const SDecoinfo * pDecoinfoFuture; | |
3162 float fCNS; | |
3163 | |
3164 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
3165 { | |
3166 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
3167 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
3168 } | |
3169 else | |
3170 { | |
3171 pDecoinfoStandard = &stateUsed->decolistVPM; | |
3172 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
3173 } | |
3174 | |
3175 fCNS = stateUsed->lifeData .cns; | |
3176 if(fCNS > 999) | |
3177 fCNS = 999; | |
3178 | |
3179 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3180 if(settingsGetPointer()->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3181 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3182 t7cY0free.WindowY1 = 400; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3183 } |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3184 |
38 | 3185 t7cY0free.WindowLineSpacing = 48; |
3186 t7cY0free.WindowNumberOfTextLines = 6; | |
3187 t7cY0free.WindowTab = 420; | |
3188 | |
3189 // header | |
3190 textpointer = 0; | |
3191 text[textpointer++] = '\032'; | |
3192 text[textpointer++] = '\016'; | |
3193 text[textpointer++] = '\016'; | |
3194 text[textpointer++] = TXT_ppO2; | |
3195 text[textpointer++] = '\n'; | |
3196 text[textpointer++] = '\r'; | |
3197 text[textpointer++] = TXT_Ceiling; | |
3198 text[textpointer++] = '\n'; | |
3199 text[textpointer++] = '\r'; | |
3200 text[textpointer++] = TXT_ActualGradient; | |
3201 text[textpointer++] = '\n'; | |
3202 text[textpointer++] = '\r'; | |
3203 text[textpointer++] = TXT_CNS; | |
3204 text[textpointer++] = '\n'; | |
3205 text[textpointer++] = '\r'; | |
3206 text[textpointer++] = TXT_FutureTTS; | |
3207 text[textpointer++] = '\017'; | |
3208 text[textpointer++] = 0; | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3209 |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3210 if(!settingsGetPointer()->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3211 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3212 t7cY0free.WindowX0 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3213 t7cY0free.WindowY0 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3214 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3215 t7cY0free.WindowX0 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3216 t7cY0free.WindowY0 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3217 } |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3218 else |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3219 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3220 t7cY0free.WindowY1 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3221 t7cY0free.WindowX1 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3222 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3223 t7cY0free.WindowY1 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3224 t7cY0free.WindowX1 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3225 } |
38 | 3226 textpointer = 0; |
3227 text[textpointer++] = '\t'; | |
3228 textpointer += snprintf(&text[textpointer],10,"\020%01.2f", stateUsed->lifeData.ppO2); | |
3229 text[textpointer++] = '\n'; | |
3230 text[textpointer++] = '\r'; | |
3231 text[textpointer++] = '\t'; | |
3232 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
|
3233 textpointer += snprintf(&text[textpointer],10,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); |
38 | 3234 else |
215
4a0ebade04f5
Bugfix, trivial: correctly present avg depth in overview custom
Jan Mulder <jlmulder@xs4all.nl>
parents:
214
diff
changeset
|
3235 textpointer += snprintf(&text[textpointer],10,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); |
38 | 3236 text[textpointer++] = '\n'; |
3237 text[textpointer++] = '\r'; | |
3238 text[textpointer++] = '\t'; | |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
3239 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017", 100 * pDecoinfoStandard->super_saturation); |
38 | 3240 text[textpointer++] = '\n'; |
3241 text[textpointer++] = '\r'; | |
3242 text[textpointer++] = '\t'; | |
3243 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017",fCNS); | |
3244 text[textpointer++] = '\n'; | |
3245 text[textpointer++] = '\r'; | |
3246 text[textpointer++] = '\t'; | |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3247 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
|
3248 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
|
3249 else |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3250 textpointer += snprintf(&text[textpointer],10,"\020%ih", (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
38 | 3251 text[textpointer++] = 0; |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3252 t7_colorscheme_mod(text); |
38 | 3253 GFX_write_string(&FontT42, &t7cY0free, text, 1); |
3254 } | |
3255 | |
3256 void t7_compass(uint16_t ActualHeading, uint16_t UserSetHeading) | |
3257 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3258 uint16_t ActualHeadingRose; |
38 | 3259 uint16_t LeftBorderHeading, LineHeading; |
3260 uint32_t offsetPicture; | |
3261 point_t start, stop, center; | |
3262 static int32_t LastHeading = 0; | |
3263 int32_t newHeading = 0; | |
3264 int32_t diff = 0; | |
3265 int32_t diff2 = 0; | |
3266 | |
3267 int32_t diffAbs = 0; | |
3268 int32_t diffAbs2 = 0; | |
3269 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3270 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3271 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3272 |
38 | 3273 newHeading = ActualHeading; |
3274 | |
3275 diff = newHeading - LastHeading; | |
3276 | |
3277 if(newHeading < LastHeading) | |
3278 diff2 = newHeading + 360 - LastHeading; | |
3279 else | |
3280 diff2 = newHeading - 360 - LastHeading; | |
3281 | |
3282 diffAbs = diff; | |
3283 if(diffAbs < 0) | |
3284 diffAbs *= -1; | |
3285 | |
3286 diffAbs2 = diff2; | |
3287 if(diffAbs2 < 0) | |
3288 diffAbs2 *= -1; | |
3289 | |
3290 | |
3291 if(diffAbs <= diffAbs2) | |
3292 newHeading = LastHeading + (diff / 2); | |
3293 else | |
3294 newHeading = LastHeading + (diff2 / 2); | |
3295 | |
3296 if(newHeading < 0) | |
3297 newHeading += 360; | |
3298 else | |
3299 if(newHeading >= 360) | |
3300 newHeading -= 360; | |
3301 | |
3302 LastHeading = newHeading; | |
3303 ActualHeading = newHeading; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3304 ActualHeadingRose = ActualHeading; |
225
2bb1db22b5f5
cleanup: random set of cleanups
Jan Mulder <jlmulder@xs4all.nl>
parents:
222
diff
changeset
|
3305 |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3306 if(pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3307 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3308 ActualHeadingRose = 360 - ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3309 if (ActualHeadingRose < 170) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3310 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3311 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3312 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3313 if (ActualHeadingRose < 90) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3314 ActualHeading = ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3315 } |
38 | 3316 |
3317 // new hw 160822 | |
3318 // if (ActualHeading >= 360 + 90) | |
3319 // ActualHeading = 360; | |
3320 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3321 LeftBorderHeading = 2 * (ActualHeadingRose - (CUSTOMBOX_SPACE_INSIDE/4)); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3322 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3323 if(pSettings->FlipDisplay) /* add offset caused by mirrowed drawing */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3324 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3325 LeftBorderHeading += 2 * 80; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3326 } |
38 | 3327 |
3328 offsetPicture = LeftBorderHeading * t7screenCompass.ImageHeight * 2; | |
3329 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3330 /* the background is used to draw the rotating compass rose */ |
38 | 3331 background.pointer = t7screenCompass.FBStartAdress+offsetPicture; |
3332 background.x0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3333 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3334 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3335 background.y0 = 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3336 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3337 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3338 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3339 background.y0 = 480 - t7screenCompass.ImageHeight - 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3340 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3341 |
38 | 3342 background.width = CUSTOMBOX_SPACE_INSIDE; |
3343 background.height = t7screenCompass.ImageHeight; | |
3344 | |
3345 | |
3346 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + (CUSTOMBOX_SPACE_INSIDE/2); | |
3347 stop.x = start.x; | |
3348 start.y = 65; | |
3349 stop.y = start.y + 55; | |
3350 GFX_draw_line(&t7screen, start, stop, CLUT_Font030); | |
3351 | |
3352 | |
3353 center.x = start.x; | |
3354 center.y = 300; | |
3355 | |
3356 stop.x = center.x + 44; | |
3357 stop.y = center.y + 24; | |
3358 | |
3359 | |
3360 while(ActualHeading > 359) ActualHeading -= 360; | |
3361 | |
3362 LineHeading = 360 - ActualHeading; | |
3363 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(0,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font030); // North | |
3364 LineHeading += 90; | |
3365 if(LineHeading > 359) LineHeading -= 360; | |
3366 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Maintick | |
3367 LineHeading += 90; | |
3368 if(LineHeading > 359) LineHeading -= 360; | |
3369 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3370 LineHeading += 90; | |
3371 if(LineHeading > 359) LineHeading -= 360; | |
3372 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3373 | |
3374 LineHeading = 360 - ActualHeading; | |
3375 LineHeading += 45; | |
3376 if(LineHeading > 359) LineHeading -= 360; | |
3377 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3378 LineHeading += 90; | |
3379 if(LineHeading > 359) LineHeading -= 360; | |
3380 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3381 LineHeading += 90; | |
3382 if(LineHeading > 359) LineHeading -= 360; | |
3383 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3384 LineHeading += 90; | |
3385 if(LineHeading > 359) LineHeading -= 360; | |
3386 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3387 | |
3388 LineHeading = 360 - ActualHeading; | |
3389 LineHeading += 22; | |
3390 if(LineHeading > 359) LineHeading -= 360; | |
3391 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3392 LineHeading += 45; | |
3393 if(LineHeading > 359) LineHeading -= 360; | |
3394 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3395 LineHeading += 45; | |
3396 if(LineHeading > 359) LineHeading -= 360; | |
3397 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3398 LineHeading += 45; | |
3399 if(LineHeading > 359) LineHeading -= 360; | |
3400 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3401 LineHeading += 45; | |
3402 if(LineHeading > 359) LineHeading -= 360; | |
3403 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3404 LineHeading += 45; | |
3405 if(LineHeading > 359) LineHeading -= 360; | |
3406 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3407 LineHeading += 45; | |
3408 if(LineHeading > 359) LineHeading -= 360; | |
3409 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3410 LineHeading += 45; | |
3411 if(LineHeading > 359) LineHeading -= 360; | |
3412 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3413 | |
3414 if(UserSetHeading) | |
3415 { | |
3416 LineHeading = UserSetHeading + 360 - ActualHeading; | |
3417 if(LineHeading > 359) LineHeading -= 360; | |
3418 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserHeadingTick); | |
3419 | |
3420 // R�ckpeilung, User Back Heading | |
3421 LineHeading = UserSetHeading + 360 + 180 - ActualHeading; | |
3422 if(LineHeading > 359) LineHeading -= 360; | |
3423 if(LineHeading > 359) LineHeading -= 360; | |
3424 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserBackHeadingTick); | |
3425 } | |
3426 | |
3427 center.x = start.x; | |
3428 center.y = 250; | |
3429 GFX_draw_circle(&t7screen, center, 116, CLUT_Font030); | |
3430 GFX_draw_circle(&t7screen, center, 118, CLUT_Font030); | |
3431 GFX_draw_circle(&t7screen, center, 117, CLUT_Font030); | |
3432 | |
3433 | |
3434 } | |
3435 | |
3436 | |
3437 /* Font_T42: N is 27 px, S is 20 px, W is 36 px, E is 23 px | |
3438 * max is NW with 63 px | |
3439 * Font_T24: N is 15 px, S is 12 px, W is 20 px, E is 13 px | |
3440 * max is NW with 35 px | |
3441 * NE is 28 px | |
3442 * SW is 32 px | |
3443 * SE is 25 px | |
3444 * space between each is 45 px * 2 | |
3445 * FirstItem List | |
3446 * \177 \177 prepare for size | |
3447 */ | |
3448 void init_t7_compass(void) | |
3449 { | |
3450 t7screenCompass.FBStartAdress = getFrame(21); | |
3451 | |
3452 char text[256]; | |
3453 uint8_t textpointer = 0; | |
3454 | |
3455 text[textpointer++] = '\030'; | |
3456 text[textpointer++] = '\177'; | |
3457 text[textpointer++] = '\177'; | |
3458 text[textpointer++] = 76; // 90 - 14 | |
3459 text[textpointer++] = '\016'; | |
3460 text[textpointer++] = '\016'; | |
3461 text[textpointer++] = 'N'; | |
3462 text[textpointer++] = 'E'; // 96 + 28 = 124 total | |
3463 text[textpointer++] = '\017'; | |
3464 text[textpointer++] = '\177'; | |
3465 text[textpointer++] = '\177'; | |
3466 text[textpointer++] = 64; // 90 - 14 - 12 | |
3467 text[textpointer++] = 'E'; // 124 + 74 + 23 = 221 total | |
3468 text[textpointer++] = '\177'; | |
3469 text[textpointer++] = '\177'; | |
3470 text[textpointer++] = 66; // 90 - 11 - 13 | |
3471 text[textpointer++] = '\016'; | |
3472 text[textpointer++] = '\016'; | |
3473 text[textpointer++] = 'S'; | |
3474 text[textpointer++] = 'E'; | |
3475 text[textpointer++] = '\017'; | |
3476 text[textpointer++] = '\177'; | |
3477 text[textpointer++] = '\177'; | |
3478 text[textpointer++] = 68; // 90 - 12 - 10 | |
3479 text[textpointer++] = 'S'; | |
3480 text[textpointer++] = '\177'; | |
3481 text[textpointer++] = '\177'; | |
3482 text[textpointer++] = 64; // 90 - 10 - 16 | |
3483 text[textpointer++] = '\016'; | |
3484 text[textpointer++] = '\016'; | |
3485 text[textpointer++] = 'S'; | |
3486 text[textpointer++] = 'W'; | |
3487 text[textpointer++] = '\017'; | |
3488 text[textpointer++] = '\177'; | |
3489 text[textpointer++] = '\177'; | |
3490 text[textpointer++] = 56; // 90 - 16 - 18 | |
3491 text[textpointer++] = 'W'; | |
3492 text[textpointer++] = '\177'; | |
3493 text[textpointer++] = '\177'; | |
3494 text[textpointer++] = 54; // 90 - 18 - 18 | |
3495 text[textpointer++] = '\016'; | |
3496 text[textpointer++] = '\016'; | |
3497 text[textpointer++] = 'N'; | |
3498 text[textpointer++] = 'W'; | |
3499 text[textpointer++] = '\017'; | |
3500 text[textpointer++] = '\177'; | |
3501 text[textpointer++] = '\177'; | |
3502 text[textpointer++] = 59; // 90 - 17 - 14 | |
3503 text[textpointer++] = 'N'; | |
3504 text[textpointer++] = '\177'; | |
3505 text[textpointer++] = '\177'; | |
3506 text[textpointer++] = 63; // 90 - 13 - 14 | |
3507 text[textpointer++] = '\016'; | |
3508 text[textpointer++] = '\016'; | |
3509 text[textpointer++] = 'N'; | |
3510 text[textpointer++] = 'E'; | |
3511 text[textpointer++] = '\017'; | |
3512 text[textpointer++] = '\177'; | |
3513 text[textpointer++] = '\177'; | |
3514 text[textpointer++] = 64; // 90 - 14 - 12 | |
3515 text[textpointer++] = 'E'; | |
3516 text[textpointer++] = '\177'; | |
3517 text[textpointer++] = '\177'; | |
3518 text[textpointer++] = 66; // 90 - 11 - 13 | |
3519 text[textpointer++] = '\016'; | |
3520 text[textpointer++] = '\016'; | |
3521 text[textpointer++] = 'S'; | |
3522 text[textpointer++] = 'E'; | |
3523 text[textpointer++] = '\017'; | |
3524 text[textpointer++] = '\177'; | |
3525 text[textpointer++] = '\177'; | |
3526 text[textpointer++] = 68; // 90 - 12 - 10 | |
3527 text[textpointer++] = 'S'; | |
3528 text[textpointer++] = '\177'; | |
3529 text[textpointer++] = '\177'; | |
3530 text[textpointer++] = 64; // 90 - 10 - 16 | |
3531 text[textpointer++] = '\016'; | |
3532 text[textpointer++] = '\016'; | |
3533 text[textpointer++] = 'S'; | |
3534 text[textpointer++] = 'W'; | |
3535 text[textpointer++] = '\017'; | |
3536 text[textpointer++] = 0; // end | |
3537 | |
3538 GFX_write_string(&FontT42,&t7pCompass,text,1); | |
3539 | |
3540 releaseAllFramesExcept(21,t7screenCompass.FBStartAdress); | |
3541 } | |
3542 | |
3543 | |
3544 void t7_miniLiveLogProfile(void) | |
3545 { | |
3546 SWindowGimpStyle wintemp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3547 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3548 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3549 |
38 | 3550 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
3551 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3552 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3553 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3554 wintemp.top = 480 - t7l1.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3555 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3556 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3557 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3558 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3559 wintemp.top = t7l1.WindowY1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3560 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3561 } |
38 | 3562 |
3563 uint16_t max_depth = (uint16_t)(stateUsed->lifeData.max_depth_meter * 10); | |
3564 | |
3565 GFX_graph_print(&t7screen, &wintemp, 0,1,0, max_depth, getMiniLiveLogbookPointerToData(), getMiniLiveLogbookActualDataLength(), CLUT_Font030, NULL); | |
3566 } | |
3567 | |
3568 void t7_logo_OSTC(void) | |
3569 { | |
3570 SWindowGimpStyle windowGimp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3571 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3572 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3573 |
38 | 3574 /* OSTC logo */ |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3575 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3576 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3577 windowGimp.left = t7l1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3578 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3579 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3580 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3581 windowGimp.left = t7r1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3582 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3583 |
38 | 3584 windowGimp.top = 40 + 32; |
3585 GFX_draw_image_monochrome(&t7screen, windowGimp, &ImgOSTC, 0); | |
3586 } |