Mercurial > public > ostc4
annotate Discovery/Src/t7.c @ 706:10b7d271b9c4
Bugfix: only reset menu if a new sub menu is created:
In the previous version a short black screen (blink) happend while changing parameters. Root cause was that the menu structure was reset while no submenu was created because the value update happend at the actual menu. This has been fixed by only resetting the menu if it is really needed
author | Ideenmodellierer |
---|---|
date | Thu, 03 Nov 2022 20:37:06 +0100 |
parents | 8c48553a0176 |
children | 8adf9b8fc7fa |
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; | |
2776 | |
2777 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2778 { | |
2779 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
2780 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
2781 } | |
2782 else | |
2783 { | |
2784 pDecoinfoStandard = &stateUsed->decolistVPM; | |
2785 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
2786 } | |
2787 | |
2788 Stopwatch.Total = timer_Stopwatch_GetTime(); | |
2789 Stopwatch.Minutes = Stopwatch.Total / 60; | |
2790 Stopwatch.Seconds = Stopwatch.Total - ( Stopwatch.Minutes * 60 ); | |
2791 fAverageDepth = timer_Stopwatch_GetAvarageDepth_Meter(); | |
2792 fAverageDepthAbsolute = stateUsed->lifeData.average_depth_meter; | |
2793 | |
2794 headerText[0] = '\032'; | |
2795 headerText[1] = '\f'; | |
2796 | |
2797 switch(selection_custom_field) | |
2798 { | |
2799 /* Temperature */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2800 case LLC_Temperature: |
38 | 2801 default: |
189
8b8074080d7b
Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents:
187
diff
changeset
|
2802 temperature = unit_temperature_float(stateUsed->lifeData.temperature_celsius); |
38 | 2803 headerText[2] = TXT_Temperature; |
2804 textpointer = snprintf(text,TEXTSIZE,"\020\016%01.1f \140",temperature); // "\016\016%01.1f `" + C or F | |
2805 if(settingsGetPointer()->nonMetricalSystem == 0) | |
2806 text[textpointer++] = 'C'; | |
2807 else | |
2808 text[textpointer++] = 'F'; | |
2809 text[textpointer++] = 0; | |
2810 tinyHeaderFont = 0; | |
2811 break; | |
2812 | |
2813 /* Average Depth */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2814 case LLC_AverageDepth: |
38 | 2815 headerText[2] = TXT_AvgDepth; |
2816 if(settingsGetPointer()->nonMetricalSystem) | |
2817 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(fAverageDepthAbsolute)); | |
2818 else | |
2819 snprintf(text,TEXTSIZE,"\020%01.1f",fAverageDepthAbsolute); | |
2820 break; | |
2821 | |
2822 /* ppO2 */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2823 case LLC_ppO2: |
38 | 2824 headerText[2] = TXT_ppO2; |
2825 snprintf(text,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2826 break; | |
2827 | |
2828 /* Stop Uhr */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2829 case LLC_Stopwatch: |
38 | 2830 headerText[2] = TXT_Stopwatch; |
2831 if(settingsGetPointer()->nonMetricalSystem) | |
2832 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.0f",Stopwatch.Minutes, Stopwatch.Seconds,unit_depth_float(fAverageDepth)); | |
2833 else | |
2834 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.1f",Stopwatch.Minutes, Stopwatch.Seconds,fAverageDepth); | |
2835 tinyHeaderFont = 1; | |
2836 line = 1; | |
2837 break; | |
2838 | |
2839 /* Ceiling */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2840 case LLC_Ceiling: |
38 | 2841 headerText[2] = TXT_Ceiling; |
2842 if((pDecoinfoStandard->output_ceiling_meter > 99.9f) || (settingsGetPointer()->nonMetricalSystem)) | |
2843 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); | |
2844 else | |
2845 snprintf(text,TEXTSIZE,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); | |
2846 break; | |
2847 | |
2848 /* Future TTS */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2849 case LLC_FutureTTS: |
38 | 2850 headerText[2] = TXT_FutureTTS; |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2851 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
|
2852 snprintf(text,TEXTSIZE,"\020\016\016@+%u'\n\r" "%i' TTS",settingsGetPointer()->future_TTS, (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 60); |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2853 else |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2854 snprintf(text,TEXTSIZE,"\020\016\016@+%u'\n\r" "%ih TTS",settingsGetPointer()->future_TTS, (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
38 | 2855 tinyHeaderFont = 1; |
2856 line = 1; | |
2857 break; | |
2858 | |
2859 /* CNS */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2860 case LLC_CNS: |
38 | 2861 headerText[2] = TXT_CNS; |
2862 fCNS = stateUsed->lifeData .cns; | |
2863 if(fCNS > 999) | |
2864 fCNS = 999; | |
2865 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",fCNS); | |
2866 break; | |
2867 | |
2868 /* actual GF */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2869 case LLC_GF: |
38 | 2870 headerText[2] = TXT_ActualGradient; |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
2871 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",100 * pDecoinfoStandard->super_saturation); |
38 | 2872 break; |
656 | 2873 |
2874 case LLC_ScrubberTime: | |
2875 tinyHeaderFont = 1; | |
2876 headerText[2] = TXT_ScrubTime; | |
2877 if(settingsGetPointer()->scrubTimerMode == SCRUB_TIMER_MINUTES) | |
2878 { | |
2879 snprintf(text,TEXTSIZE,"\020%3u'",settingsGetPointer()->scrubTimerCur); | |
2880 } | |
2881 else | |
2882 { | |
2883 snprintf(text,TEXTSIZE,"\020%u\016\016%%\017", (settingsGetPointer()->scrubTimerCur * 100 / settingsGetPointer()->scrubTimerMax)); | |
2884 } | |
2885 break; | |
662 | 2886 #ifdef ENABLE_PSCR_MODE |
2887 case LCC_SimPpo2: | |
2888 headerText[2] = TXT_SimPpo2; | |
2889 snprintf(text,TEXTSIZE,"\020%.2f\016\016Bar\017",stateUsed->lifeData.ppo2Simulated_bar); | |
2890 break; | |
2891 #endif | |
656 | 2892 |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2893 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2894 case LCC_BottleBar: |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2895 headerText[2] = TXT_AtemGasVorrat; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2896 tinyHeaderFont = 1; |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2897 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
|
2898 break; |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2899 #endif |
38 | 2900 } |
2901 headerText[3] = 0; | |
2902 | |
2903 if(tinyHeaderFont) | |
2904 GFX_write_string(&FontT24,&t7l3,headerText,0); | |
2905 else | |
2906 GFX_write_string(&FontT42,&t7l3,headerText,0); | |
2907 | |
2908 t7_colorscheme_mod(text); | |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2909 #ifndef ENABLE_BOTTLE_SENSOR |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2910 GFX_write_string(&FontT105,&t7l3,text,line); |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2911 #else |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2912 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
|
2913 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2914 GFX_write_string(&FontT105,&t7l3,text,line); |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2915 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2916 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2917 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2918 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
|
2919 if(agedColor > 1200) |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2920 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2921 agedColor = CLUT_WarningRed; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2922 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2923 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2924 if(agedColor > 600) |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2925 { |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2926 agedColor = CLUT_MenuLineUnselected; |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2927 } |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2928 else |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2929 if(agedColor > 20) |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2930 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2931 agedColor = CLUT_Font031; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2932 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2933 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2934 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2935 agedColor = CLUT_Font020; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2936 } |
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 GFX_write_string_color(&FontT105,&t7l3,text,line,agedColor); |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2939 } |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2940 #endif |
38 | 2941 } |
2942 | |
2943 /* Private functions ---------------------------------------------------------*/ | |
2944 | |
2945 uint8_t t7_customtextPrepare(char * text) | |
2946 { | |
2947 uint8_t i, j, textptr, lineCount; | |
2948 char nextChar; | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2949 uint8_t alignmentChanged = 0; |
38 | 2950 |
2951 textptr = 0; | |
2952 lineCount = 0; | |
2953 | |
2954 text[textptr++] = TXT_MINIMAL; | |
2955 | |
2956 j = 0; | |
2957 i = 0; | |
2958 do | |
2959 { | |
2960 j += i; | |
2961 i = 0; | |
2962 do | |
2963 { | |
2964 nextChar = settingsGetPointer()->customtext[i+j]; | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2965 if((nextChar == '^') && (alignmentChanged == 0)) /* center */ |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2966 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2967 text[textptr++] = '\001'; |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2968 alignmentChanged = 1; |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2969 i++; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2970 }else |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2971 if((nextChar == 180) && (alignmentChanged == 0)) /* '�' => Right */ |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2972 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2973 text[textptr++] = '\002'; |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2974 alignmentChanged = 1; |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2975 i++; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2976 }else |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2977 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2978 i++; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2979 if((!nextChar) || (nextChar =='\n') || (nextChar =='\r')) |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2980 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2981 break; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2982 } |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2983 text[textptr++] = nextChar; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2984 } |
38 | 2985 } while (i < 12); |
2986 | |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2987 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
|
2988 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2989 while((textptr - 1 > 0) && (text[textptr - 1] == 32)) |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2990 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2991 textptr--; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2992 } |
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 |
38 | 2995 if(!nextChar) |
2996 break; | |
2997 | |
2998 if(lineCount < 3) | |
2999 { | |
3000 text[textptr++] = '\n'; | |
3001 text[textptr++] = '\r'; | |
3002 } | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3003 alignmentChanged = 0; |
38 | 3004 lineCount++; |
3005 for(uint8_t k=0;k<2;k++) | |
3006 { | |
3007 nextChar = settingsGetPointer()->customtext[i+j+k]; | |
3008 if((nextChar =='\n') || (nextChar =='\r')) | |
3009 i++; | |
3010 else | |
3011 break; | |
3012 } | |
3013 | |
3014 } while (lineCount < 4); | |
3015 | |
3016 text[textptr] = 0; | |
3017 return lineCount; | |
3018 } | |
3019 | |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3020 static void t7_colorscheme_mod(char *text) { |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3021 char *p = text; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3022 while (*p) { |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3023 if ((*p == '\020') && !GFX_is_colorschemeDiveStandard()) |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3024 *p = '\027'; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3025 p++; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3026 } |
38 | 3027 } |
3028 | |
3029 void draw_frame(_Bool PluginBoxHeader, _Bool LinesOnTheSides, uint8_t colorBox, uint8_t colorLinesOnTheSide) | |
3030 { | |
3031 point_t LeftLow, WidthHeight; | |
3032 point_t start, stop; | |
3033 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3034 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3035 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3036 |
38 | 3037 // plugin box |
3038 LeftLow.x = CUSTOMBOX_LINE_LEFT; | |
3039 WidthHeight.x = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_LINE_LEFT; | |
3040 LeftLow.y = 60; | |
3041 WidthHeight.y = 440 - LeftLow.y; | |
642
c737cf5d9067
Do not show focus indicator in case motion detection is suspended:
Ideenmodellierer
parents:
631
diff
changeset
|
3042 if((viewInFocus() && (!viewDetectionSuspended()))) |
553 | 3043 { |
3044 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, CLUT_Font023); | |
3045 } | |
3046 else | |
3047 { | |
3048 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, colorBox); | |
3049 } | |
38 | 3050 |
3051 if(PluginBoxHeader) | |
3052 { | |
3053 // plugin box - header | |
3054 start.x = CUSTOMBOX_LINE_LEFT; | |
3055 stop.x = CUSTOMBOX_LINE_RIGHT; | |
3056 stop.y = start.y = 440 - 60; | |
3057 GFX_draw_line(&t7screen, start, stop, colorBox); | |
3058 } | |
3059 | |
3060 if(LinesOnTheSides) | |
3061 { | |
3062 // aufteilung links | |
3063 start.x = 0; | |
3064 stop.x = CUSTOMBOX_LINE_LEFT; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3065 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3066 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3067 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3068 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3069 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3070 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3071 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3072 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3073 |
38 | 3074 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3075 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3076 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3077 stop.y = start.y = t7l2.WindowY0 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3078 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3079 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3080 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3081 stop.y = start.y = 480 - t7l2.WindowY1 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3082 } |
38 | 3083 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
3084 | |
3085 // aufteilung rechts | |
3086 start.x = CUSTOMBOX_LINE_RIGHT; | |
3087 stop.x = 799; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3088 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3089 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3090 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3091 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3092 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3093 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3094 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3095 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3096 |
38 | 3097 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3098 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3099 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3100 stop.y = start.y = t7l2.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3101 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3102 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3103 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3104 stop.y = start.y = 480 - t7l2.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3105 } |
38 | 3106 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
3107 } | |
3108 } | |
3109 | |
3110 | |
3111 /* Compass like TCOS shellfish | |
3112 * input is 0 to 359 | |
3113 * 2 px / 1 degree | |
3114 * Range is 148 degree with CUSTOMBOX_SPACE_INSIDE = 296 | |
3115 * one side is 74 degree (less than 90 degree) | |
3116 * internal 360 + 180 degree of freedom | |
3117 * use positive values only, shift by 360 below 90 mid position | |
3118 */ | |
3119 | |
3120 | |
3121 point_t t7_compass_circle(uint8_t id, uint16_t degree) | |
3122 { | |
3123 float fCos, fSin; | |
3124 const float piMult = ((2 * 3.14159) / 360); | |
3125 // const int radius[4] = {95,105,115,60}; | |
3126 const int radius[4] = {95,105,115,100}; | |
3127 const point_t offset = {.x = 400, .y = 250}; | |
3128 | |
3129 static point_t r[4][360] = { 0 }; | |
3130 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3131 if(r[0][0].y == 0) /* calc table at first call only */ |
38 | 3132 { |
3133 for(int i=0;i<360;i++) | |
3134 { | |
3135 fCos = cos(i * piMult); | |
3136 fSin = sin(i * piMult); | |
3137 for(int j=0;j<4;j++) | |
3138 { | |
3139 r[j][i].x = offset.x + (int)(fSin * radius[j]); | |
3140 r[j][i].y = offset.y + (int)(fCos * radius[j]); | |
3141 } | |
3142 } | |
3143 } | |
3144 if(id > 3) id = 0; | |
3145 if(degree > 359) degree = 0; | |
3146 return r[id][degree]; | |
3147 } | |
3148 | |
3149 /* range should be 0 to 30 bar if 300 meter with 100% of nitrogen or helium | |
3150 * T24 is 28 high | |
3151 */ | |
3152 void t7_tissues(const SDiveState * pState) | |
3153 { | |
3154 point_t start, change, stop; | |
3155 float value; | |
3156 uint16_t front, cns100pixel; | |
3157 char text[256]; | |
3158 uint8_t textpointer = 0; | |
3159 uint8_t color; | |
3160 | |
3161 float percent_N2; | |
3162 float percent_He; | |
3163 float partial_pressure_N2; | |
3164 float partial_pressure_He; | |
3165 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3166 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3167 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3168 |
38 | 3169 |
3170 /* N2 */ | |
3171 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3172 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3173 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3174 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3175 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3176 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3177 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3178 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3179 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3180 } |
38 | 3181 t7cY0free.WindowNumberOfTextLines = 3; |
3182 | |
3183 text[textpointer++] = '\030'; | |
3184 text[textpointer++] = TXT_2BYTE; | |
3185 text[textpointer++] = TXT2BYTE_Nitrogen; | |
3186 text[textpointer++] = '\n'; | |
3187 text[textpointer++] = '\r'; | |
3188 text[textpointer++] = TXT_2BYTE; | |
3189 text[textpointer++] = TXT2BYTE_Helium; | |
3190 text[textpointer++] = '\n'; | |
3191 text[textpointer++] = '\r'; | |
3192 text[textpointer++] = TXT_2BYTE; | |
3193 text[textpointer++] = TXT2BYTE_CNS; | |
3194 text[textpointer++] = 0; | |
3195 | |
3196 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3197 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3198 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3199 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3200 start.y = t7cH.WindowY0 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3201 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3202 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3203 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3204 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3205 } |
38 | 3206 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
3207 stop.x = start.x + CUSTOMBOX_SPACE_INSIDE; | |
3208 | |
3209 for(int i=0;i<16;i++) | |
3210 { | |
3211 stop.y = start.y; | |
3212 change.y = start.y; | |
3213 | |
3214 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
|
3215 value *= 80; |
38 | 3216 |
3217 if(value < 0) | |
3218 front = 0; | |
3219 else | |
3220 if(value > CUSTOMBOX_SPACE_INSIDE) | |
3221 front = CUSTOMBOX_SPACE_INSIDE; | |
3222 else | |
3223 front = (uint16_t)value; | |
3224 | |
3225 change.x = start.x + front; | |
3226 if(change.x != start.x) | |
3227 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
3228 if(change.x != stop.x) | |
3229 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3230 | |
3231 start.y -= 3; | |
3232 } | |
3233 | |
3234 /* He */ | |
3235 start.y -= 28 + 14; | |
3236 for(int i=0;i<16;i++) | |
3237 { | |
3238 stop.y = start.y; | |
3239 change.y = start.y; | |
3240 | |
3241 value = pState->lifeData.tissue_helium_bar[i]; | |
3242 value *= 80;//20 | |
3243 | |
3244 if(value < 0) | |
3245 front = 0; | |
3246 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
3247 front = CUSTOMBOX_SPACE_INSIDE; | |
3248 else | |
3249 front = (uint16_t)value; | |
3250 | |
3251 change.x = start.x + front; | |
3252 if(change.x != start.x) | |
3253 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
3254 if(change.x != stop.x) | |
3255 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3256 | |
3257 start.y -= 3; | |
3258 } | |
3259 | |
3260 /* CNS == Oxygen */ | |
3261 start.y -= 28 + 14; | |
3262 | |
3263 cns100pixel = (8 * CUSTOMBOX_SPACE_INSIDE) / 10; | |
3264 value = pState->lifeData.cns; | |
3265 value *= cns100pixel; | |
3266 value /= 100; | |
3267 | |
3268 if(value < 0) | |
3269 front = 0; | |
3270 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
3271 front = CUSTOMBOX_SPACE_INSIDE; | |
3272 else | |
3273 front = (uint16_t)value; | |
3274 | |
3275 if(pState->lifeData.cns < 95) | |
3276 color = CLUT_Font030; | |
3277 else if(pState->lifeData.cns < 100) | |
3278 color = CLUT_WarningYellow; | |
3279 else | |
3280 color = CLUT_WarningRed; | |
3281 | |
3282 for(int i=0;i<16;i++) | |
3283 { | |
3284 stop.y = start.y; | |
3285 change.y = start.y; | |
3286 | |
3287 change.x = start.x + front; | |
3288 if(change.x != start.x) | |
3289 GFX_draw_thick_line(1,&t7screen, start, change, color); | |
3290 if(change.x != stop.x) | |
3291 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3292 | |
3293 start.y -= 3; | |
3294 } | |
3295 | |
3296 /* where is the onload/offload limit for N2 and He */ | |
3297 decom_get_inert_gases(pState->lifeData.pressure_ambient_bar, &pState->lifeData.actualGas, &percent_N2, &percent_He); | |
3298 partial_pressure_N2 = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_N2; | |
3299 partial_pressure_He = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_He; | |
3300 | |
3301 // Nitrogen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3302 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3303 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3304 start.y = t7cH.WindowY0 + 1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3305 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3306 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3307 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3308 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3309 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3310 |
38 | 3311 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
|
3312 if((percent_N2 > 0) && (partial_pressure_N2 > 0.7512f)) |
38 | 3313 { |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3314 value = partial_pressure_N2 - 0.7512f; |
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3315 value *= 80; |
38 | 3316 |
3317 if(value < 0) | |
3318 front = 3; | |
3319 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
3320 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
3321 else | |
3322 front = (uint16_t)value; | |
3323 } | |
3324 else | |
3325 { | |
3326 front = 1; | |
3327 } | |
3328 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
3329 stop.x = start.x; | |
3330 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
3331 | |
3332 | |
3333 // Helium vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3334 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3335 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3336 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
|
3337 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3338 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3339 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3340 start.y = t7cH.WindowY1 - 5 - 3*16 - 28 - 14; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3341 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3342 |
38 | 3343 stop.y = start.y - (3 * 15) - 1; |
3344 if((percent_He > 0) && (partial_pressure_He > 0.01f)) // 0.5f | |
3345 { | |
3346 | |
3347 value = partial_pressure_He; | |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3348 value *= 80; |
38 | 3349 |
3350 if(value < 0) | |
3351 front = 3; | |
3352 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
3353 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
3354 else | |
3355 front = (uint16_t)value; | |
3356 } | |
3357 else | |
3358 { | |
3359 front = 1; | |
3360 } | |
3361 | |
3362 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
3363 stop.x = start.x; | |
3364 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
3365 | |
3366 // Oxygen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3367 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3368 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3369 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
|
3370 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3371 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3372 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3373 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
|
3374 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3375 |
38 | 3376 stop.y = start.y - (3 * 15) - 1; |
3377 | |
3378 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + cns100pixel; | |
3379 stop.x = start.x; | |
3380 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
|
3381 |
38 | 3382 } |
3383 | |
3384 | |
3385 void t7_debug(void) | |
3386 { | |
3387 char text[256+50]; | |
3388 uint8_t textpointer = 0; | |
3389 | |
3390 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
3391 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
3392 t7cY0free.WindowNumberOfTextLines = 3; | |
3393 | |
3394 textpointer += snprintf(&text[textpointer],50,"Ambient [bar]\n\r"); | |
3395 textpointer += snprintf(&text[textpointer],50,"Surface [bar] + salt\n\r"); | |
3396 // textpointer += snprintf(&text[textpointer],50,"Difference [mbar]\n\r"); | |
3397 textpointer += snprintf(&text[textpointer],50,"ShallowCounter [s]\n\r"); | |
3398 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3399 | |
3400 t7cY0free.WindowY0 -= 52; | |
3401 // 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)); | |
3402 snprintf(text,60, | |
3403 "%0.2f\n\r" | |
3404 "%0.2f %u%%\n\r" | |
3405 "%u" | |
3406 ,stateUsed->lifeData.pressure_ambient_bar | |
3407 ,stateUsed->lifeData.pressure_surface_bar | |
3408 ,settingsGetPointer()->salinity | |
3409 ,stateUsed->lifeData.counterSecondsShallowDepth); | |
3410 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
3411 } | |
3412 | |
3413 | |
3414 void t7_SummaryOfLeftCorner(void) | |
3415 { | |
3416 char text[256+60]; | |
3417 uint8_t textpointer = 0; | |
656 | 3418 SSettings* pSettings = settingsGetPointer(); |
38 | 3419 |
3420 const SDecoinfo * pDecoinfoStandard; | |
3421 const SDecoinfo * pDecoinfoFuture; | |
3422 float fCNS; | |
3423 | |
3424 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
3425 { | |
3426 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
3427 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
3428 } | |
3429 else | |
3430 { | |
3431 pDecoinfoStandard = &stateUsed->decolistVPM; | |
3432 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
3433 } | |
3434 | |
3435 fCNS = stateUsed->lifeData .cns; | |
3436 if(fCNS > 999) | |
3437 fCNS = 999; | |
3438 | |
3439 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
656 | 3440 if(pSettings->FlipDisplay) |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3441 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3442 t7cY0free.WindowY1 = 400; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3443 } |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3444 |
38 | 3445 t7cY0free.WindowLineSpacing = 48; |
3446 t7cY0free.WindowNumberOfTextLines = 6; | |
3447 t7cY0free.WindowTab = 420; | |
3448 | |
3449 // header | |
3450 textpointer = 0; | |
3451 text[textpointer++] = '\032'; | |
3452 text[textpointer++] = '\016'; | |
3453 text[textpointer++] = '\016'; | |
3454 text[textpointer++] = TXT_ppO2; | |
3455 text[textpointer++] = '\n'; | |
3456 text[textpointer++] = '\r'; | |
3457 text[textpointer++] = TXT_Ceiling; | |
3458 text[textpointer++] = '\n'; | |
3459 text[textpointer++] = '\r'; | |
3460 text[textpointer++] = TXT_ActualGradient; | |
3461 text[textpointer++] = '\n'; | |
3462 text[textpointer++] = '\r'; | |
3463 text[textpointer++] = TXT_CNS; | |
3464 text[textpointer++] = '\n'; | |
3465 text[textpointer++] = '\r'; | |
3466 text[textpointer++] = TXT_FutureTTS; | |
656 | 3467 text[textpointer++] = '\n'; |
3468 text[textpointer++] = '\r'; | |
662 | 3469 if((pSettings->scrubTimerMode != SCRUB_TIMER_OFF) && (isLoopMode(pSettings->dive_mode))) |
656 | 3470 { |
3471 text[textpointer++] = TXT_ScrubTime; | |
3472 | |
3473 } | |
38 | 3474 text[textpointer++] = '\017'; |
656 | 3475 text[textpointer++] = 0; |
3476 if(!pSettings->FlipDisplay) | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3477 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3478 t7cY0free.WindowX0 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3479 t7cY0free.WindowY0 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3480 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3481 t7cY0free.WindowX0 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3482 t7cY0free.WindowY0 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3483 } |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3484 else |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3485 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3486 t7cY0free.WindowY1 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3487 t7cY0free.WindowX1 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3488 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3489 t7cY0free.WindowY1 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3490 t7cY0free.WindowX1 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3491 } |
38 | 3492 textpointer = 0; |
3493 text[textpointer++] = '\t'; | |
3494 textpointer += snprintf(&text[textpointer],10,"\020%01.2f", stateUsed->lifeData.ppO2); | |
3495 text[textpointer++] = '\n'; | |
3496 text[textpointer++] = '\r'; | |
3497 text[textpointer++] = '\t'; | |
3498 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
|
3499 textpointer += snprintf(&text[textpointer],10,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); |
38 | 3500 else |
215
4a0ebade04f5
Bugfix, trivial: correctly present avg depth in overview custom
Jan Mulder <jlmulder@xs4all.nl>
parents:
214
diff
changeset
|
3501 textpointer += snprintf(&text[textpointer],10,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); |
38 | 3502 text[textpointer++] = '\n'; |
3503 text[textpointer++] = '\r'; | |
3504 text[textpointer++] = '\t'; | |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
3505 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017", 100 * pDecoinfoStandard->super_saturation); |
38 | 3506 text[textpointer++] = '\n'; |
3507 text[textpointer++] = '\r'; | |
3508 text[textpointer++] = '\t'; | |
3509 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017",fCNS); | |
3510 text[textpointer++] = '\n'; | |
3511 text[textpointer++] = '\r'; | |
3512 text[textpointer++] = '\t'; | |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3513 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
|
3514 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
|
3515 else |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3516 textpointer += snprintf(&text[textpointer],10,"\020%ih", (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
656 | 3517 |
662 | 3518 if((pSettings->scrubTimerMode != SCRUB_TIMER_OFF) && (isLoopMode(pSettings->dive_mode))) |
656 | 3519 { |
3520 text[textpointer++] = '\n'; | |
3521 text[textpointer++] = '\r'; | |
3522 text[textpointer++] = '\t'; | |
3523 if(settingsGetPointer()->scrubTimerMode == SCRUB_TIMER_MINUTES) | |
3524 { | |
3525 textpointer += snprintf(&text[textpointer],10,"\020%3u'", pSettings->scrubTimerCur); | |
3526 } | |
3527 else | |
3528 { | |
3529 textpointer += snprintf(&text[textpointer],10,"\020%u\016\016%%\017", (pSettings->scrubTimerCur * 100 / pSettings->scrubTimerMax)); | |
3530 } | |
3531 } | |
38 | 3532 text[textpointer++] = 0; |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3533 t7_colorscheme_mod(text); |
38 | 3534 GFX_write_string(&FontT42, &t7cY0free, text, 1); |
3535 } | |
3536 | |
3537 void t7_compass(uint16_t ActualHeading, uint16_t UserSetHeading) | |
3538 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3539 uint16_t ActualHeadingRose; |
38 | 3540 uint16_t LeftBorderHeading, LineHeading; |
3541 uint32_t offsetPicture; | |
3542 point_t start, stop, center; | |
3543 static int32_t LastHeading = 0; | |
3544 int32_t newHeading = 0; | |
3545 int32_t diff = 0; | |
3546 int32_t diff2 = 0; | |
3547 | |
3548 int32_t diffAbs = 0; | |
3549 int32_t diffAbs2 = 0; | |
3550 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3551 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3552 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3553 |
38 | 3554 newHeading = ActualHeading; |
3555 | |
3556 diff = newHeading - LastHeading; | |
3557 | |
3558 if(newHeading < LastHeading) | |
3559 diff2 = newHeading + 360 - LastHeading; | |
3560 else | |
3561 diff2 = newHeading - 360 - LastHeading; | |
3562 | |
3563 diffAbs = diff; | |
3564 if(diffAbs < 0) | |
3565 diffAbs *= -1; | |
3566 | |
3567 diffAbs2 = diff2; | |
3568 if(diffAbs2 < 0) | |
3569 diffAbs2 *= -1; | |
3570 | |
3571 | |
3572 if(diffAbs <= diffAbs2) | |
3573 newHeading = LastHeading + (diff / 2); | |
3574 else | |
3575 newHeading = LastHeading + (diff2 / 2); | |
3576 | |
3577 if(newHeading < 0) | |
3578 newHeading += 360; | |
3579 else | |
3580 if(newHeading >= 360) | |
3581 newHeading -= 360; | |
3582 | |
3583 LastHeading = newHeading; | |
3584 ActualHeading = newHeading; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3585 ActualHeadingRose = ActualHeading; |
225
2bb1db22b5f5
cleanup: random set of cleanups
Jan Mulder <jlmulder@xs4all.nl>
parents:
222
diff
changeset
|
3586 |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3587 if(pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3588 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3589 ActualHeadingRose = 360 - ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3590 if (ActualHeadingRose < 170) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3591 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3592 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3593 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3594 if (ActualHeadingRose < 90) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3595 ActualHeading = ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3596 } |
38 | 3597 |
3598 // new hw 160822 | |
3599 // if (ActualHeading >= 360 + 90) | |
3600 // ActualHeading = 360; | |
3601 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3602 LeftBorderHeading = 2 * (ActualHeadingRose - (CUSTOMBOX_SPACE_INSIDE/4)); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3603 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3604 if(pSettings->FlipDisplay) /* add offset caused by mirrowed drawing */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3605 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3606 LeftBorderHeading += 2 * 80; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3607 } |
38 | 3608 |
3609 offsetPicture = LeftBorderHeading * t7screenCompass.ImageHeight * 2; | |
3610 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3611 /* the background is used to draw the rotating compass rose */ |
38 | 3612 background.pointer = t7screenCompass.FBStartAdress+offsetPicture; |
3613 background.x0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3614 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3615 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3616 background.y0 = 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3617 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3618 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3619 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3620 background.y0 = 480 - t7screenCompass.ImageHeight - 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3621 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3622 |
38 | 3623 background.width = CUSTOMBOX_SPACE_INSIDE; |
3624 background.height = t7screenCompass.ImageHeight; | |
3625 | |
3626 | |
3627 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + (CUSTOMBOX_SPACE_INSIDE/2); | |
3628 stop.x = start.x; | |
3629 start.y = 65; | |
3630 stop.y = start.y + 55; | |
3631 GFX_draw_line(&t7screen, start, stop, CLUT_Font030); | |
3632 | |
3633 | |
3634 center.x = start.x; | |
3635 center.y = 300; | |
3636 | |
3637 stop.x = center.x + 44; | |
3638 stop.y = center.y + 24; | |
3639 | |
3640 | |
3641 while(ActualHeading > 359) ActualHeading -= 360; | |
3642 | |
3643 LineHeading = 360 - ActualHeading; | |
3644 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(0,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font030); // North | |
3645 LineHeading += 90; | |
3646 if(LineHeading > 359) LineHeading -= 360; | |
3647 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Maintick | |
3648 LineHeading += 90; | |
3649 if(LineHeading > 359) LineHeading -= 360; | |
3650 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3651 LineHeading += 90; | |
3652 if(LineHeading > 359) LineHeading -= 360; | |
3653 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3654 | |
3655 LineHeading = 360 - ActualHeading; | |
3656 LineHeading += 45; | |
3657 if(LineHeading > 359) LineHeading -= 360; | |
3658 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3659 LineHeading += 90; | |
3660 if(LineHeading > 359) LineHeading -= 360; | |
3661 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3662 LineHeading += 90; | |
3663 if(LineHeading > 359) LineHeading -= 360; | |
3664 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3665 LineHeading += 90; | |
3666 if(LineHeading > 359) LineHeading -= 360; | |
3667 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3668 | |
3669 LineHeading = 360 - ActualHeading; | |
3670 LineHeading += 22; | |
3671 if(LineHeading > 359) LineHeading -= 360; | |
3672 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3673 LineHeading += 45; | |
3674 if(LineHeading > 359) LineHeading -= 360; | |
3675 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3676 LineHeading += 45; | |
3677 if(LineHeading > 359) LineHeading -= 360; | |
3678 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3679 LineHeading += 45; | |
3680 if(LineHeading > 359) LineHeading -= 360; | |
3681 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3682 LineHeading += 45; | |
3683 if(LineHeading > 359) LineHeading -= 360; | |
3684 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3685 LineHeading += 45; | |
3686 if(LineHeading > 359) LineHeading -= 360; | |
3687 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3688 LineHeading += 45; | |
3689 if(LineHeading > 359) LineHeading -= 360; | |
3690 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3691 LineHeading += 45; | |
3692 if(LineHeading > 359) LineHeading -= 360; | |
3693 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3694 | |
3695 if(UserSetHeading) | |
3696 { | |
3697 LineHeading = UserSetHeading + 360 - ActualHeading; | |
3698 if(LineHeading > 359) LineHeading -= 360; | |
3699 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserHeadingTick); | |
3700 | |
3701 // R�ckpeilung, User Back Heading | |
3702 LineHeading = UserSetHeading + 360 + 180 - ActualHeading; | |
3703 if(LineHeading > 359) LineHeading -= 360; | |
3704 if(LineHeading > 359) LineHeading -= 360; | |
3705 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserBackHeadingTick); | |
3706 } | |
3707 | |
3708 center.x = start.x; | |
3709 center.y = 250; | |
3710 GFX_draw_circle(&t7screen, center, 116, CLUT_Font030); | |
3711 GFX_draw_circle(&t7screen, center, 118, CLUT_Font030); | |
3712 GFX_draw_circle(&t7screen, center, 117, CLUT_Font030); | |
3713 | |
3714 | |
3715 } | |
3716 | |
3717 | |
3718 /* Font_T42: N is 27 px, S is 20 px, W is 36 px, E is 23 px | |
3719 * max is NW with 63 px | |
3720 * Font_T24: N is 15 px, S is 12 px, W is 20 px, E is 13 px | |
3721 * max is NW with 35 px | |
3722 * NE is 28 px | |
3723 * SW is 32 px | |
3724 * SE is 25 px | |
3725 * space between each is 45 px * 2 | |
3726 * FirstItem List | |
3727 * \177 \177 prepare for size | |
3728 */ | |
3729 void init_t7_compass(void) | |
3730 { | |
3731 t7screenCompass.FBStartAdress = getFrame(21); | |
3732 | |
3733 char text[256]; | |
3734 uint8_t textpointer = 0; | |
3735 | |
3736 text[textpointer++] = '\030'; | |
3737 text[textpointer++] = '\177'; | |
3738 text[textpointer++] = '\177'; | |
3739 text[textpointer++] = 76; // 90 - 14 | |
3740 text[textpointer++] = '\016'; | |
3741 text[textpointer++] = '\016'; | |
3742 text[textpointer++] = 'N'; | |
3743 text[textpointer++] = 'E'; // 96 + 28 = 124 total | |
3744 text[textpointer++] = '\017'; | |
3745 text[textpointer++] = '\177'; | |
3746 text[textpointer++] = '\177'; | |
3747 text[textpointer++] = 64; // 90 - 14 - 12 | |
3748 text[textpointer++] = 'E'; // 124 + 74 + 23 = 221 total | |
3749 text[textpointer++] = '\177'; | |
3750 text[textpointer++] = '\177'; | |
3751 text[textpointer++] = 66; // 90 - 11 - 13 | |
3752 text[textpointer++] = '\016'; | |
3753 text[textpointer++] = '\016'; | |
3754 text[textpointer++] = 'S'; | |
3755 text[textpointer++] = 'E'; | |
3756 text[textpointer++] = '\017'; | |
3757 text[textpointer++] = '\177'; | |
3758 text[textpointer++] = '\177'; | |
3759 text[textpointer++] = 68; // 90 - 12 - 10 | |
3760 text[textpointer++] = 'S'; | |
3761 text[textpointer++] = '\177'; | |
3762 text[textpointer++] = '\177'; | |
3763 text[textpointer++] = 64; // 90 - 10 - 16 | |
3764 text[textpointer++] = '\016'; | |
3765 text[textpointer++] = '\016'; | |
3766 text[textpointer++] = 'S'; | |
3767 text[textpointer++] = 'W'; | |
3768 text[textpointer++] = '\017'; | |
3769 text[textpointer++] = '\177'; | |
3770 text[textpointer++] = '\177'; | |
3771 text[textpointer++] = 56; // 90 - 16 - 18 | |
3772 text[textpointer++] = 'W'; | |
3773 text[textpointer++] = '\177'; | |
3774 text[textpointer++] = '\177'; | |
3775 text[textpointer++] = 54; // 90 - 18 - 18 | |
3776 text[textpointer++] = '\016'; | |
3777 text[textpointer++] = '\016'; | |
3778 text[textpointer++] = 'N'; | |
3779 text[textpointer++] = 'W'; | |
3780 text[textpointer++] = '\017'; | |
3781 text[textpointer++] = '\177'; | |
3782 text[textpointer++] = '\177'; | |
3783 text[textpointer++] = 59; // 90 - 17 - 14 | |
3784 text[textpointer++] = 'N'; | |
3785 text[textpointer++] = '\177'; | |
3786 text[textpointer++] = '\177'; | |
3787 text[textpointer++] = 63; // 90 - 13 - 14 | |
3788 text[textpointer++] = '\016'; | |
3789 text[textpointer++] = '\016'; | |
3790 text[textpointer++] = 'N'; | |
3791 text[textpointer++] = 'E'; | |
3792 text[textpointer++] = '\017'; | |
3793 text[textpointer++] = '\177'; | |
3794 text[textpointer++] = '\177'; | |
3795 text[textpointer++] = 64; // 90 - 14 - 12 | |
3796 text[textpointer++] = 'E'; | |
3797 text[textpointer++] = '\177'; | |
3798 text[textpointer++] = '\177'; | |
3799 text[textpointer++] = 66; // 90 - 11 - 13 | |
3800 text[textpointer++] = '\016'; | |
3801 text[textpointer++] = '\016'; | |
3802 text[textpointer++] = 'S'; | |
3803 text[textpointer++] = 'E'; | |
3804 text[textpointer++] = '\017'; | |
3805 text[textpointer++] = '\177'; | |
3806 text[textpointer++] = '\177'; | |
3807 text[textpointer++] = 68; // 90 - 12 - 10 | |
3808 text[textpointer++] = 'S'; | |
3809 text[textpointer++] = '\177'; | |
3810 text[textpointer++] = '\177'; | |
3811 text[textpointer++] = 64; // 90 - 10 - 16 | |
3812 text[textpointer++] = '\016'; | |
3813 text[textpointer++] = '\016'; | |
3814 text[textpointer++] = 'S'; | |
3815 text[textpointer++] = 'W'; | |
3816 text[textpointer++] = '\017'; | |
3817 text[textpointer++] = 0; // end | |
3818 | |
3819 GFX_write_string(&FontT42,&t7pCompass,text,1); | |
3820 | |
3821 releaseAllFramesExcept(21,t7screenCompass.FBStartAdress); | |
3822 } | |
3823 | |
3824 | |
3825 void t7_miniLiveLogProfile(void) | |
3826 { | |
3827 SWindowGimpStyle wintemp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3828 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3829 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3830 |
38 | 3831 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
3832 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3833 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3834 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3835 wintemp.top = 480 - t7l1.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3836 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3837 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3838 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3839 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3840 wintemp.top = t7l1.WindowY1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3841 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3842 } |
38 | 3843 |
3844 uint16_t max_depth = (uint16_t)(stateUsed->lifeData.max_depth_meter * 10); | |
3845 | |
3846 GFX_graph_print(&t7screen, &wintemp, 0,1,0, max_depth, getMiniLiveLogbookPointerToData(), getMiniLiveLogbookActualDataLength(), CLUT_Font030, NULL); | |
3847 } | |
3848 | |
3849 void t7_logo_OSTC(void) | |
3850 { | |
3851 SWindowGimpStyle windowGimp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3852 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3853 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3854 |
38 | 3855 /* OSTC logo */ |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3856 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3857 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3858 windowGimp.left = t7l1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3859 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3860 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3861 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3862 windowGimp.left = t7r1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3863 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3864 |
38 | 3865 windowGimp.top = 40 + 32; |
3866 GFX_draw_image_monochrome(&t7screen, windowGimp, &ImgOSTC, 0); | |
3867 } | |
672 | 3868 |
3869 static uint16_t ChargerLog[60] = {10,10,10,10,10,10,10,10,10,10, | |
3870 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 | |
3876 uint16_t LogDeltaCharge(float charge) | |
3877 { | |
3878 static uint8_t curIndex = 0; | |
3879 static float averageSpeed = 0.0; | |
3880 uint16_t level = 0; | |
3881 uint16_t completeSec = 0; | |
3882 | |
3883 if(charge > 0.003) | |
3884 { | |
3885 level = 2; | |
3886 } | |
3887 else if(charge > 0.0025) | |
3888 { | |
3889 level = 3; | |
3890 } | |
3891 else if(charge > 0.002) | |
3892 { | |
3893 level = 4; | |
3894 } | |
3895 else if(charge > 0.0015) | |
3896 { | |
3897 level = 5; | |
3898 } | |
3899 else if(charge > 0.001) | |
3900 { | |
3901 level = 6; | |
3902 } | |
3903 else if(charge > 0.0005) | |
3904 { | |
3905 level = 7; | |
3906 } | |
3907 else if(charge > 0.00) | |
3908 { | |
3909 level = 8; | |
3910 } | |
3911 else | |
3912 { | |
3913 level = 10; | |
3914 } | |
3915 if(curIndex < 59) | |
3916 { | |
3917 ChargerLog[curIndex++] = level; | |
3918 } | |
3919 else | |
3920 { | |
3921 memcpy (&ChargerLog[0],&ChargerLog[1],sizeof(ChargerLog) - 1); | |
3922 ChargerLog[curIndex] = level; | |
3923 } | |
3924 if(curIndex > 1) | |
3925 { | |
3926 averageSpeed = ((averageSpeed * (curIndex-1)) + charge) / curIndex; | |
3927 completeSec = (100.0 - stateUsed->lifeData.battery_charge) / averageSpeed; | |
3928 } | |
3929 else | |
3930 { | |
3931 completeSec = 0xffff; | |
3932 } | |
3933 return completeSec; | |
3934 } | |
3935 | |
3936 uint16_t* getChargeLog() | |
3937 { | |
3938 return ChargerLog; | |
3939 } | |
3940 | |
3941 void t7_ChargerView(void) | |
3942 { | |
3943 static float lastCharge = 0.0; | |
3944 float localCharge = 0.0; | |
3945 static uint32_t lastTick = 0; | |
3946 uint32_t curTick = 0; | |
3947 static float speed = 0.0; | |
3948 float deltatime = 0.0; | |
3949 | |
3950 char text[256+50]; | |
3951 uint8_t textpointer = 0; | |
3952 static uint16_t remainingSec = 0; | |
3953 uint16_t hoursto100 = 0; | |
3954 char indicator = '~'; | |
3955 | |
3956 point_t start, stop; | |
3957 | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3958 SWindowGimpStyle wintemp; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3959 SSettings* pSettings; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3960 pSettings = settingsGetPointer(); |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3961 |
672 | 3962 t7cY0free.WindowLineSpacing = 28 + 48 + 14; |
3963 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
3964 t7cY0free.WindowNumberOfTextLines = 3; | |
3965 | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3966 |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3967 if(pSettings->FlipDisplay) |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3968 { |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3969 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3970 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3971 } |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3972 |
672 | 3973 localCharge = stateUsed->lifeData.battery_charge; |
3974 if(localCharge < 0.0) | |
3975 { | |
3976 localCharge *= -1.0; | |
3977 } | |
3978 | |
3979 if(stateUsed->chargeStatus != CHARGER_off) | |
3980 { | |
3981 if(lastCharge != localCharge) | |
3982 { | |
3983 curTick = HAL_GetTick(); | |
3984 deltatime = (curTick - lastTick); | |
3985 lastTick = curTick; | |
3986 if(lastCharge < localCharge) | |
3987 { | |
3988 speed = (localCharge - lastCharge) * 1000.0 / deltatime; | |
3989 } | |
3990 | |
693 | 3991 if(localCharge > 100.0) |
3992 { | |
3993 localCharge = 100.0; | |
3994 } | |
3995 | |
672 | 3996 lastCharge = localCharge; |
3997 } | |
3998 | |
693 | 3999 |
672 | 4000 if(deltatime > 1000) |
4001 { | |
4002 deltatime = 0; | |
4003 remainingSec = LogDeltaCharge(speed); | |
4004 speed = 0; | |
4005 } | |
4006 } | |
4007 textpointer += snprintf(&text[textpointer],50,"\n\r"); | |
4008 textpointer += snprintf(&text[textpointer],50,"\001%c\n\r",TXT_ChargeHour); | |
4009 | |
4010 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
4011 | |
4012 hoursto100 = remainingSec / 3600; /* reduce to hours */ | |
4013 if(hoursto100 < 1) | |
4014 { | |
4015 indicator = '<'; | |
4016 hoursto100 = 1; | |
4017 } | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4018 |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4019 if(!pSettings->FlipDisplay) |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4020 { |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4021 t7cY0free.WindowY0 -= 52; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4022 } |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4023 else |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4024 { |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4025 t7cY0free.WindowY1 += 52; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4026 } |
672 | 4027 |
4028 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->chargeStatus != CHARGER_off)) | |
4029 { | |
4030 snprintf(text,60, | |
693 | 4031 "\001%0.2f\016\016%%\017\n\r" |
672 | 4032 "\001%c%d\n\r" |
4033 ,stateUsed->lifeData.battery_charge | |
4034 ,indicator | |
4035 ,hoursto100); | |
4036 } | |
4037 else | |
4038 { | |
4039 snprintf(text,60, | |
4040 "\001---\n\r" | |
4041 "\001---\n\r"); | |
4042 } | |
4043 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
4044 | |
4045 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + 50; | |
4046 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE - 100; | |
4047 | |
4048 | |
4049 if(!pSettings->FlipDisplay) | |
4050 { | |
4051 wintemp.top = 480 - t7l1.WindowY0 + 115; | |
4052 wintemp.bottom = wintemp.top + 100; | |
4053 } | |
4054 else | |
4055 { | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4056 wintemp.top = t7l1.WindowY1 + 102; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4057 wintemp.bottom = wintemp.top + 100; |
672 | 4058 } |
4059 | |
4060 start.x = wintemp.left-5; | |
4061 start.y = 90; | |
4062 | |
4063 stop.x = wintemp.right + 5 - start.x; | |
4064 stop.y = 100; | |
4065 GFX_draw_box(&t7screen, start, stop,1, CLUT_Font020); | |
4066 | |
4067 if(stateUsed->chargeStatus != CHARGER_off) | |
4068 { | |
4069 GFX_graph_print(&t7screen, &wintemp, 1,1,0, 10, getChargeLog(), 60, CLUT_Font030, NULL); | |
4070 } | |
4071 else | |
4072 { | |
4073 GFX_graph_print(&t7screen, &wintemp, 1,1,0, 10, getChargeLog(), 60, CLUT_Font031, NULL); | |
4074 } | |
4075 | |
4076 } |