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