Mercurial > public > ostc4
annotate Discovery/Src/t7.c @ 682:8775d3dc6325 Betatest
Bugfix low ppO2 warning in bailout mode:
the code has different sources for divesettings (real and simulated). The ppo2 calculation code used the pointer to the real structure. As result in simulation mode an error occured caused by the ppo2 calculation which was not aware that a bailout happened (because the real structure was references instead of the simulator ones). The problem has been fixed by using the "stateUsed" pointer which is refering to the structure currenty in use.
author | Ideenmodellierer |
---|---|
date | Mon, 25 Apr 2022 21:15:01 +0200 |
parents | 5575f21382d5 |
children | 79ce499e26aa |
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 |
405 | 1736 if(last_customview != selection_customview) /* check if current selection is disabled and should be skipped */ |
1737 { | |
1738 if(t7_customview_disabled(selection_customview)) | |
1739 { | |
1740 t7_change_customview(ACTION_BUTTON_ENTER); | |
1741 } | |
582
64bf41faab83
Show Fallback if no valid sensor value is available:
Ideenmodellierer
parents:
577
diff
changeset
|
1742 last_customview = selection_customview; |
405 | 1743 } |
38 | 1744 switch(selection_customview) |
1745 { | |
1746 case CVIEW_noneOrDebug: | |
1747 if(settingsGetPointer()->showDebugInfo) | |
1748 { | |
1749 // header | |
1750 strcpy(text,"\032\f\001Debug"); | |
1751 GFX_write_string(&FontT42,&t7cH,text,0); | |
1752 // content | |
1753 t7_debug(); | |
1754 } | |
1755 break; | |
1756 | |
672 | 1757 case CVIEW_Charger: |
1758 snprintf(text,100,"\032\f\001%c",TXT_Charging); | |
1759 GFX_write_string(&FontT42,&t7cH,text,0); | |
1760 t7_ChargerView(); | |
1761 | |
1762 break; | |
1763 | |
38 | 1764 case CVIEW_SummaryOfLeftCorner: |
1765 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Summary); | |
1766 GFX_write_string(&FontT42,&t7cH,text,0); | |
1767 // content | |
1768 t7_SummaryOfLeftCorner(); | |
1769 break; | |
1770 | |
1771 case CVIEW_CompassDebug: | |
1772 snprintf(text,100,"\032\f\001Compass raw"); | |
1773 GFX_write_string(&FontT42,&t7cH,text,0); | |
1774 snprintf(text,255,"%1.1f\n\r%1.1f\n\r%1.1f\n\r%i\n\r%i\n\r%i" | |
1775 ,stateUsed->lifeData.compass_heading | |
1776 ,stateUsed->lifeData.compass_roll | |
1777 ,stateUsed->lifeData.compass_pitch | |
1778 ,stateUsed->lifeData.compass_DX_f | |
1779 ,stateUsed->lifeData.compass_DY_f | |
1780 ,stateUsed->lifeData.compass_DZ_f | |
1781 ); | |
1782 | |
1783 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
1784 t7cY0free.WindowLineSpacing = 48; | |
1785 t7cY0free.WindowNumberOfTextLines = 6; | |
1786 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
1787 break; | |
1788 | |
1789 case CVIEW_Hello: | |
1790 t7_logo_OSTC(); | |
1791 t7cC.WindowLineSpacing = 53; | |
1792 t7cC.WindowNumberOfTextLines = 5; | |
1793 shiftWindowY0 = 18; | |
1794 | |
1795 if(updateNecessary)//if(DataEX_check_RTE_version__needs_update() || font_update_required()) | |
1796 { | |
1797 if(warning_count_high_time) | |
1798 { | |
1799 shiftWindowY0 += 20; | |
1800 t7cC.WindowY0 -= shiftWindowY0; | |
1801 textpointer = 0; | |
1802 text[textpointer++] = TXT_2BYTE; | |
1803 text[textpointer++] = TXT2BYTE_PleaseUpdate; | |
1804 text[textpointer++] = '\n'; | |
1805 text[textpointer++] = '\r'; | |
1806 if(DataEX_check_RTE_version__needs_update()) | |
1807 { | |
1808 text[textpointer++] = TXT_2BYTE; | |
1809 text[textpointer++] = TXT2BYTE_RTE; | |
1810 text[textpointer++] = '\n'; | |
1811 text[textpointer++] = '\r'; | |
1812 } | |
1813 if(font_update_required()) | |
1814 { | |
1815 text[textpointer++] = TXT_2BYTE; | |
1816 text[textpointer++] = TXT2BYTE_Fonts; | |
1817 } | |
1818 text[textpointer++] = 0; | |
1819 GFX_write_string_color(&FontT42,&t7cC,text,1, CLUT_WarningRed); | |
1820 t7cC.WindowY0 += shiftWindowY0; | |
1821 } | |
1822 t7cC.WindowNumberOfTextLines = 3; | |
1823 } | |
662 | 1824 else if(isSettingsWarning()) |
1825 { | |
1826 if(warning_count_high_time) | |
1827 { | |
1828 shiftWindowY0 += 20; | |
1829 t7cC.WindowY0 -= shiftWindowY0; | |
1830 textpointer = 0; | |
1831 text[textpointer++] = '\001'; | |
1832 text[textpointer++] = TXT_2BYTE; | |
1833 text[textpointer++] = TXT2BYTE_CheckSettings; | |
1834 text[textpointer++] = '\n'; | |
1835 text[textpointer++] = '\r'; | |
1836 text[textpointer++] = 0; | |
1837 GFX_write_string_color(&FontT42,&t7cC,text,1, CLUT_WarningRed); | |
1838 t7cC.WindowY0 += shiftWindowY0; | |
1839 } | |
1840 t7cC.WindowNumberOfTextLines = 1; | |
1841 } | |
38 | 1842 else // customtext |
1843 { | |
1844 lineCountCustomtext = t7_customtextPrepare(text); | |
1845 if(lineCountCustomtext <= 2) | |
1846 shiftWindowY0 += 20+26; // nach unten | |
1847 else | |
1848 if(lineCountCustomtext <= 3) | |
1849 shiftWindowY0 += 20; // nach unten | |
1850 t7cC.WindowY0 -= shiftWindowY0; | |
1851 | |
1852 GFX_write_string(&FontT42,&t7cC,text,1); | |
1853 t7cC.WindowNumberOfTextLines = 3; | |
1854 t7cC.WindowY0 += shiftWindowY0; | |
1855 } | |
1856 if(lineCountCustomtext <= 4) | |
1857 { | |
1858 snprintf(text,100,"\001#%0u V%01u.%01u.%01u", | |
1859 settingsGetPointer()->serialLow + (256 * settingsGetPointer()->serialHigh), | |
1860 firmwareDataGetPointer()->versionFirst, | |
1861 firmwareDataGetPointer()->versionSecond, | |
1862 firmwareDataGetPointer()->versionThird | |
1863 ); | |
1864 GFX_write_string(&FontT24,&t7cC,text,0); | |
1865 } | |
1866 break; | |
1867 | |
1868 case CVIEW_Gaslist: | |
1869 // a lot of code taken from tMenuGas.c | |
1870 // header | |
1871 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Gaslist); | |
1872 GFX_write_string(&FontT42,&t7cH,text,0); | |
1873 // content | |
1874 textpointer = 0; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1875 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1876 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1877 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1878 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1879 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1880 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1881 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1882 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1883 } |
38 | 1884 t7cY0free.WindowLineSpacing = 48+9; |
1885 t7cY0free.WindowNumberOfTextLines = 5; // NUM_GASES == 5 | |
1886 t7cY0free.WindowTab = 420; | |
1887 | |
1888 pGasLine = settingsGetPointer()->gas; | |
1889 if(actualLeftMaxDepth(stateUsed)) | |
1890 fPpO2limitHigh = (float)(settingsGetPointer()->ppO2_max_deco) / 100; | |
1891 else | |
1892 fPpO2limitHigh = (float)(settingsGetPointer()->ppO2_max_std) / 100; | |
1893 fPpO2limitLow = (float)(settingsGetPointer()->ppO2_min) / 100; | |
1894 for(int gasId=1;gasId<=NUM_GASES;gasId++) | |
1895 { | |
1896 textpointer = 0; | |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1897 #ifdef ENABLE_UNUSED_GAS_HIDING |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1898 if(!pGasLine[gasId].note.ub.off) |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1899 { |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1900 #endif |
38 | 1901 fPpO2ofGasAtThisDepth = (stateUsed->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * pGasLine[gasId].oxygen_percentage / 100; |
1902 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
|
1903 strcpy(&text[textpointer++],"\031"); |
517 | 1904 else if(stateUsed->lifeData.actualGas.GasIdInSettings == gasId) /* actual selected gas */ |
1905 { | |
1906 strcpy(&text[textpointer++],"\030"); | |
1907 } | |
38 | 1908 else if((fPpO2ofGasAtThisDepth > fPpO2limitHigh) || (fPpO2ofGasAtThisDepth < fPpO2limitLow)) |
1909 strcpy(&text[textpointer++],"\025"); | |
517 | 1910 else if(actualBetterGasId() == gasId) |
1911 { | |
1912 strcpy(&text[textpointer++],"\026"); /* Highlight better gas */ | |
1913 } | |
38 | 1914 else |
517 | 1915 strcpy(&text[textpointer++],"\023"); |
38 | 1916 |
1917 text[textpointer++] = ' '; | |
1918 oxygen = pGasLine[gasId].oxygen_percentage; | |
1919 helium = pGasLine[gasId].helium_percentage; | |
1920 textpointer += write_gas(&text[textpointer], oxygen, helium); | |
1921 // Wechseltiefe | |
1922 if(pGasLine[gasId].depth_meter) | |
1923 { | |
631 | 1924 textpointer += snprintf(&text[textpointer],10,"\t%u %c%c",unit_depth_integer(pGasLine[gasId].depth_meter), unit_depth_char1(), unit_depth_char2()); |
38 | 1925 } |
1926 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
|
1927 #ifdef ENABLE_UNUSED_GAS_HIDING |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1928 } |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1929 #endif |
38 | 1930 } |
1931 break; | |
1932 | |
1933 case CVIEW_EADTime: | |
1934 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Info ); | |
1935 GFX_write_string(&FontT42,&t7cH,text,0); | |
1936 textpointer = 0; | |
1937 | |
1938 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1939 if(pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1940 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1941 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1942 } |
38 | 1943 t7cY0free.WindowLineSpacing = 48; |
1944 t7cY0free.WindowNumberOfTextLines = 6; | |
1945 | |
1946 // time | |
1947 snprintf(text,100,"\032\001%c%c",TXT_2BYTE,TXT2BYTE_Clock ); | |
1948 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
1949 | |
1950 translateDate(stateRealGetPointer()->lifeData.dateBinaryFormat, &Sdate); | |
1951 translateTime(stateRealGetPointer()->lifeData.timeBinaryFormat, &Stime); | |
567 | 1952 |
1953 if (settingsGetPointer()->amPMTime) | |
1954 { | |
1955 if (Stime.Hours > 11) | |
1956 { | |
1957 timeSuffix = 'P'; | |
1958 } | |
1959 else | |
1960 { | |
1961 timeSuffix = 'A'; | |
1962 } | |
1963 | |
1964 if (Stime.Hours % 12 == 0) | |
1965 { | |
1966 hoursToDisplay = 12; | |
1967 } | |
1968 else | |
1969 { | |
1970 hoursToDisplay = (Stime.Hours % 12); | |
1971 } | |
1972 | |
1973 if(Stime.Seconds % 2) | |
1974 textpointer += snprintf(&text[textpointer],100,"\030\001%02d:%02d %cM",hoursToDisplay,Stime.Minutes,timeSuffix); | |
1975 else | |
1976 textpointer += snprintf(&text[textpointer],100,"\030\001%02d\031:\030%02d %cM",hoursToDisplay,Stime.Minutes,timeSuffix); | |
1977 } | |
38 | 1978 else |
567 | 1979 { |
1980 if(Stime.Seconds % 2) | |
1981 textpointer += snprintf(&text[textpointer],100,"\030\001%02d:%02d",Stime.Hours,Stime.Minutes); | |
1982 else | |
1983 textpointer += snprintf(&text[textpointer],100,"\030\001%02d\031:\030%02d",Stime.Hours,Stime.Minutes); | |
1984 } | |
1985 | |
38 | 1986 GFX_write_string(&FontT42, &t7cY0free, text, 2); |
1987 | |
1988 // EAD / END | |
1989 // The equivalent air depth can be calculated for depths in metres as follows: | |
1990 // EAD = (Depth + 10) � Fraction of N2 / 0.79 - 10 (wikipedia) | |
1991 // The equivalent narcotic depth can be calculated for depths in metres as follows: | |
1992 // END = (Depth + 10) � (1 - Fraction of helium) - 10 (wikipedia) | |
1993 decom_get_inert_gases((float)stateUsed->lifeData.pressure_ambient_bar,&(stateUsed->lifeData.actualGas),&fraction_nitrogen,&fraction_helium); | |
1994 depth = stateUsed->lifeData.pressure_ambient_bar; | |
1995 surface = stateUsed->lifeData.pressure_surface_bar; | |
1996 ead = 10.f * ((depth * fraction_nitrogen/0.79f) - surface); | |
1997 end = 10.0f * ((depth * (1.f - fraction_helium)) - surface); | |
1998 if(ead < 0) | |
1999 ead = 0; | |
2000 if(end < 0) | |
2001 end = 0; | |
2002 | |
2003 snprintf(text,100,"\032\001EAD"); | |
2004 GFX_write_string(&FontT42, &t7cY0free, text, 3); | |
2005 snprintf(text,100,"\030\001%01.1f %c%c" | |
2006 , unit_depth_float(ead) | |
2007 , unit_depth_char1() | |
2008 , unit_depth_char2() | |
2009 ); | |
2010 GFX_write_string(&FontT42, &t7cY0free, text, 4); | |
2011 | |
2012 snprintf(text,100,"\032\001END"); | |
2013 GFX_write_string(&FontT42, &t7cY0free, text, 5); | |
2014 snprintf(text,100,"\030\001%01.1f %c%c" | |
2015 , unit_depth_float(ead) | |
2016 , unit_depth_char1() | |
2017 , unit_depth_char2() | |
2018 ); | |
2019 GFX_write_string(&FontT42, &t7cY0free, text, 6); | |
2020 break; | |
2021 | |
2022 case CVIEW_Profile: | |
2023 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Profile); | |
2024 GFX_write_string(&FontT42,&t7cH,text,0); | |
2025 textpointer = 0; | |
2026 t7_miniLiveLogProfile(); | |
2027 break; | |
2028 | |
2029 case CVIEW_Tissues: | |
2030 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Tissues); | |
2031 GFX_write_string(&FontT42,&t7cH,text,0); | |
2032 textpointer = 0; | |
2033 t7_tissues(stateUsed); | |
2034 break; | |
2035 | |
2036 case CVIEW_sensors: | |
2037 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_O2monitor); | |
2038 GFX_write_string(&FontT42,&t7cH,text,0); | |
2039 textpointer = 0; | |
2040 text[textpointer++] = '\030'; // main color | |
2041 for(int i=0;i<3;i++) | |
2042 { | |
577
9bb9a52d6ae5
Handle o2 voltage values < 0.5mV as invalid:
Ideenmodellierer
parents:
567
diff
changeset
|
2043 if((stateUsed->diveSettings.ppo2sensors_deactivated & (1<<i)) || (stateUsed->lifeData.ppO2Sensor_bar[i] == 0.0)) |
38 | 2044 { |
662 | 2045 #ifdef ENABLE_PSCR_MODE |
2046 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 */ | |
2047 { | |
2048 text[textpointer++] = '\023'; | |
2049 textpointer += snprintf(&text[textpointer],100,"\001%01.2f\n\r\030",stateUsed->lifeData.ppo2Simulated_bar); | |
2050 showSimPPO2 = 0; | |
2051 } | |
2052 else | |
2053 #endif | |
2054 { | |
2055 text[textpointer++] = '\031'; // labelcolor | |
2056 text[textpointer++] = '\001'; | |
2057 text[textpointer++] = '-'; | |
2058 text[textpointer++] = '\n'; | |
2059 text[textpointer++] = '\r'; | |
2060 text[textpointer++] = '\030'; // main color | |
2061 text[textpointer] = 0; | |
2062 } | |
38 | 2063 } |
2064 else | |
2065 { | |
2066 if(stateUsed->warnings.sensorOutOfBounds[i]) | |
2067 text[textpointer++] = '\025'; // Warning Red | |
2068 textpointer += snprintf(&text[textpointer],100,"\001%01.2f\n\r\030",stateUsed->lifeData.ppO2Sensor_bar[i]); | |
2069 } | |
2070 } | |
2071 t7cC.WindowLineSpacing = 95; | |
2072 t7cC.WindowNumberOfTextLines = 3; | |
2073 text[textpointer] = 0; | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2074 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2075 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2076 t7cC.WindowY1 -= 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2077 } |
38 | 2078 GFX_write_string(&FontT105,&t7cC,text,1); |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2079 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2080 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2081 t7cC.WindowY1 += 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2082 } |
38 | 2083 break; |
2084 | |
2085 case CVIEW_sensors_mV: | |
2086 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_O2voltage); | |
2087 GFX_write_string(&FontT42,&t7cH,text,0); | |
2088 textpointer = 0; | |
2089 text[textpointer++] = '\030'; | |
2090 for(int i=0;i<3;i++) | |
2091 { | |
2092 if(stateUsed->diveSettings.ppo2sensors_deactivated & (1<<i)) | |
2093 { | |
2094 text[textpointer++] = '\031'; | |
2095 text[textpointer++] = '\001'; | |
2096 text[textpointer++] = '-'; | |
2097 text[textpointer++] = '\n'; | |
2098 text[textpointer++] = '\r'; | |
2099 text[textpointer++] = '\030'; | |
2100 text[textpointer] = 0; | |
2101 } | |
2102 else | |
2103 { | |
2104 if(stateUsed->warnings.sensorOutOfBounds[i]) | |
2105 text[textpointer++] = '\025'; | |
2106 textpointer += snprintf(&text[textpointer],100,"\001%01.1f mV\n\r\030",(stateUsed->lifeData.sensorVoltage_mV[i])); | |
2107 } | |
2108 } | |
2109 t7cC.WindowLineSpacing = 95; | |
2110 t7cC.WindowNumberOfTextLines = 3; | |
2111 text[textpointer] = 0; | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2112 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2113 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2114 t7cC.WindowY1 -= 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2115 } |
38 | 2116 GFX_write_string(&FontT48,&t7cC,text,1); |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2117 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2118 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2119 t7cC.WindowY1 += 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2120 } |
38 | 2121 break; |
2122 | |
2123 case CVIEW_Compass: | |
2124 default: | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2125 |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2126 if(pSettings->compassInertia) |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2127 { |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2128 heading = (uint16_t)compass_getCompensated(); |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2129 } |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2130 else |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2131 { |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2132 heading = (uint16_t)stateUsed->lifeData.compass_heading; |
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2133 } |
38 | 2134 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE, TXT2BYTE_Compass); |
2135 GFX_write_string(&FontT42,&t7cH,text,0); | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2136 t7_compass(heading, stateUsed->diveSettings.compassHeading); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2137 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2138 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2139 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2140 t7cY0free.WindowX0 += 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2141 t7cY0free.WindowY0 = 230; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2142 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2143 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2144 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2145 t7cY0free.WindowX0 -= 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2146 t7cY0free.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2147 t7cY0free.WindowY1 = 250; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2148 } |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2149 snprintf(text,100,"\030\001%03i`",heading); |
38 | 2150 GFX_write_string(&FontT54,&t7cY0free,text,0); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2151 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2152 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2153 t7cY0free.WindowX0 -= 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2154 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2155 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2156 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2157 t7cY0free.WindowX0 += 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2158 } |
38 | 2159 break; |
2160 | |
2161 case CVIEW_Decolist: | |
2162 snprintf(text,100,"\032\f\001 %c%c", TXT_2BYTE, TXT2BYTE_Decolist); | |
2163 GFX_write_string(&FontT42,&t7cH,text,0); | |
2164 | |
2165 const SDecoinfo * pDecoinfo; | |
2166 uint8_t depthNext, depthLast, depthSecond, depthInc; | |
2167 | |
2168 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2169 pDecoinfo = &stateUsed->decolistBuehlmann; | |
2170 else | |
2171 pDecoinfo = &stateUsed->decolistVPM; | |
2172 | |
2173 depthLast = (uint8_t)(stateUsed->diveSettings.last_stop_depth_bar * 10); | |
2174 depthSecond = (uint8_t)(stateUsed->diveSettings.input_second_to_last_stop_depth_bar * 10); | |
2175 depthInc = (uint8_t)(stateUsed->diveSettings.input_next_stop_increment_depth_bar * 10); | |
2176 | |
2177 if(settingsGetPointer()->nonMetricalSystem) | |
2178 { | |
2179 depthLast = (uint8_t)unit_depth_integer(depthLast); | |
2180 depthSecond = (uint8_t)unit_depth_integer(depthSecond); | |
2181 depthInc = (uint8_t)unit_depth_integer(depthInc); | |
2182 } | |
2183 | |
2184 for(start=DECOINFO_STRUCT_MAX_STOPS-1; start>0; start--) | |
2185 if(pDecoinfo->output_stop_length_seconds[start]) break; | |
2186 start -= 6; | |
2187 if(start < 0) start = 0; | |
2188 | |
2189 textpointer = 0; | |
2190 for(int i=start;i<6+start;i++) | |
2191 { | |
2192 if(i == 0) | |
2193 depthNext = depthLast; | |
2194 else | |
2195 depthNext = depthSecond + (( i - 1 )* depthInc); | |
2196 | |
2197 if(pDecoinfo->output_stop_length_seconds[i]) | |
2198 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); | |
2199 else | |
2200 textpointer += snprintf(&text[textpointer],20,"\031\034 %2u\016\016%c%c\017\n\r",depthNext, unit_depth_char1(), unit_depth_char2()); | |
2201 if(textpointer > 200) break; | |
2202 } | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2203 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2204 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2205 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2206 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2207 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2208 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2209 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2210 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2211 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2212 |
38 | 2213 t7cY0free.WindowLineSpacing = 48; |
2214 t7cY0free.WindowNumberOfTextLines = 6; | |
2215 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
2216 break; | |
2217 } | |
2218 } | |
2219 | |
2220 | |
2221 | |
2222 /* DIVE MODE | |
2223 */ | |
2224 void t7_refresh_divemode(void) | |
2225 { | |
2226 char TextL1[TEXTSIZE]; | |
2227 char TextL2[TEXTSIZE]; | |
2228 | |
2229 char TextR1[TEXTSIZE]; | |
2230 char TextR2[TEXTSIZE]; | |
2231 char TextR3[TEXTSIZE]; | |
2232 | |
2233 char TextC1[2*TEXTSIZE]; | |
2234 char TextC2[TEXTSIZE]; | |
2235 uint8_t textPointer; | |
2236 | |
2237 point_t start, stop; | |
2238 uint8_t color; | |
2239 int textlength; | |
2240 | |
2241 uint16_t nextstopLengthSeconds = 0; | |
2242 uint8_t nextstopDepthMeter = 0; | |
2243 uint8_t oxygen_percentage = 0; | |
2244 SDivetime Divetime = {0,0,0, 0}; | |
2245 SDivetime SafetyStopTime = {0,0,0,0}; | |
2246 SDivetime TimeoutTime = {0,0,0,0}; | |
2247 uint8_t customview_warnings = 0; | |
2248 const SDecoinfo * pDecoinfo; | |
2249 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2250 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2251 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2252 |
38 | 2253 Divetime.Total = stateUsed->lifeData.dive_time_seconds_without_surface_time; |
2254 Divetime.Minutes = Divetime.Total / 60; | |
2255 Divetime.Seconds = Divetime.Total - ( Divetime.Minutes * 60 ); | |
2256 | |
2257 SafetyStopTime.Total = timer_Safetystop_GetCountDown(); | |
2258 SafetyStopTime.Minutes = SafetyStopTime.Total / 60; | |
2259 SafetyStopTime.Seconds = SafetyStopTime.Total - (SafetyStopTime.Minutes * 60); | |
2260 | |
2261 TimeoutTime.Total = settingsGetPointer()->timeoutDiveReachedZeroDepth - stateUsed->lifeData.counterSecondsShallowDepth; | |
2262 if(TimeoutTime.Total > settingsGetPointer()->timeoutDiveReachedZeroDepth) | |
2263 { | |
2264 TimeoutTime.Total = 0; | |
2265 } | |
2266 TimeoutTime.Minutes = TimeoutTime.Total / 60; | |
2267 TimeoutTime.Seconds = TimeoutTime.Total - (TimeoutTime.Minutes * 60); | |
2268 | |
2269 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2270 pDecoinfo = &stateUsed->decolistBuehlmann; | |
2271 else | |
2272 pDecoinfo = &stateUsed->decolistVPM; | |
2273 | |
2274 if(pDecoinfo->output_time_to_surface_seconds) | |
2275 { | |
2276 tHome_findNextStop(pDecoinfo->output_stop_length_seconds, &nextstopDepthMeter, &nextstopLengthSeconds); | |
2277 } | |
2278 else | |
2279 { | |
2280 nextstopDepthMeter = 0; | |
2281 nextstopLengthSeconds = 0; | |
2282 } | |
2283 | |
2284 /* depth */ | |
174
ecb71521d004
Bugfix: make max depth move with current depth (part 2)
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
2285 float depth = unit_depth_float(stateUsed->lifeData.depth_meter); |
38 | 2286 |
2287 if(depth <= 0.3f) | |
2288 depth = 0; | |
2289 | |
2290 if(settingsGetPointer()->nonMetricalSystem) | |
2291 snprintf(TextL1,TEXTSIZE,"\032\f[feet]"); | |
2292 else | |
2293 snprintf(TextL1,TEXTSIZE,"\032\f%c",TXT_Depth); | |
2294 GFX_write_string(&FontT24,&t7l1,TextL1,0); | |
2295 | |
2296 if((stateUsed->lifeData.ascent_rate_meter_per_min > 8) || (stateUsed->lifeData.ascent_rate_meter_per_min < -10)) | |
2297 { | |
2298 snprintf(TextL1,TEXTSIZE,"\f\002%.0f %c%c/min " | |
2299 , unit_depth_float(stateUsed->lifeData.ascent_rate_meter_per_min) | |
2300 , unit_depth_char1() | |
2301 , unit_depth_char2() | |
2302 ); | |
2303 GFX_write_string(&FontT24,&t7l1,TextL1,0); | |
2304 } | |
2305 | |
2306 if( depth < 100) | |
2307 snprintf(TextL1,TEXTSIZE,"\020%01.1f",depth); | |
2308 else | |
2309 snprintf(TextL1,TEXTSIZE,"\020%01.0f",depth); | |
2310 | |
2311 t7_colorscheme_mod(TextL1); | |
2312 GFX_write_string(&FontT144,&t7l1,TextL1,1); | |
2313 | |
2314 /* max depth */ | |
2315 snprintf(TextL2,TEXTSIZE,"\032\f%c",TXT_MaxDepth); | |
2316 GFX_write_string(&FontT42,&t7l2,TextL2,0); | |
2317 | |
2318 if(unit_depth_float(stateUsed->lifeData.max_depth_meter) < 100) | |
2319 snprintf(TextL2,TEXTSIZE,"\020%01.1f",unit_depth_float(stateUsed->lifeData.max_depth_meter)); | |
2320 else | |
2321 snprintf(TextL2,TEXTSIZE,"\020%01.0f",unit_depth_float(stateUsed->lifeData.max_depth_meter)); | |
2322 | |
2323 t7_colorscheme_mod(TextL2); | |
2324 GFX_write_string(&FontT105,&t7l2,TextL2,1); | |
2325 | |
187
485c5135cf7f
cleanup: forgotten cleanup from 9da7dd50e2ec
Jan Mulder <jlmulder@xs4all.nl>
parents:
178
diff
changeset
|
2326 /* ascent rate graph */ |
392 | 2327 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 | 2328 { |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2329 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2330 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2331 start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2332 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2333 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2334 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2335 start.y = t7l3.WindowY0 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2336 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2337 |
38 | 2338 for(int i = 0; i<4;i++) |
2339 { | |
2340 start.y += 5*6; | |
2341 stop.y = start.y; | |
2342 start.x = CUSTOMBOX_LINE_LEFT - 1; | |
2343 stop.x = start.x - 17; | |
2344 GFX_draw_line(&t7screen, start, stop, 0); | |
2345 // start.x = CUSTOMBOX_LINE_RIGHT + 2; old right too | |
2346 // stop.x = start.x + 17; | |
2347 // GFX_draw_line(&t7screen, start, stop, 0); | |
2348 } | |
2349 // new thick bar design Sept. 2015 | |
2350 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 3 - 5; | |
2351 stop.x = start.x; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2352 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2353 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2354 start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2355 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2356 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2357 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2358 start.y = t7l3.WindowY0 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2359 } |
38 | 2360 stop.y = start.y + (uint16_t)(stateUsed->lifeData.ascent_rate_meter_per_min * 6); |
2361 stop.y -= 3; // wegen der Liniendicke von 12 anstelle von 9 | |
2362 if(stop.y >= 470) | |
2363 stop.y = 470; | |
2364 start.y += 7; // starte etwas weiter oben | |
2365 if(stateUsed->lifeData.ascent_rate_meter_per_min <= 10) | |
2366 color = CLUT_EverythingOkayGreen; | |
2367 else | |
2368 if(stateUsed->lifeData.ascent_rate_meter_per_min <= 15) | |
2369 color = CLUT_WarningYellow; | |
2370 else | |
2371 color = CLUT_WarningRed; | |
2372 | |
2373 GFX_draw_thick_line(12,&t7screen, start, stop, color); | |
2374 } | |
2375 //snprintf(TextL2,TEXTSIZE,"\f%.1f m/min",stateUsed->lifeData.ascent_rate_meter_per_min); | |
2376 | |
2377 /* divetime */ | |
2378 if(stateUsed->lifeData.counterSecondsShallowDepth) | |
2379 { | |
2380 snprintf(TextR1,TEXTSIZE,"\f\002\136 %u:%02u",TimeoutTime.Minutes, TimeoutTime.Seconds); | |
2381 GFX_write_string(&FontT42,&t7r1,TextR1,0); | |
2382 } | |
2383 else | |
2384 { | |
2385 snprintf(TextR1,TEXTSIZE,"\032\f\002%c",TXT_Divetime); | |
2386 GFX_write_string(&FontT42,&t7r1,TextR1,0); | |
2387 } | |
2388 | |
2389 if(Divetime.Minutes < 1000) | |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
2390 snprintf(TextR1,TEXTSIZE,"\020\002\016%u:%02u",Divetime.Minutes, Divetime.Seconds); |
38 | 2391 else |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
2392 snprintf(TextR1,TEXTSIZE,"\020\002\016%u'",Divetime.Minutes); |
38 | 2393 t7_colorscheme_mod(TextR1); |
2394 GFX_write_string(&FontT105,&t7r1,TextR1,1); | |
2395 | |
2396 /* next deco stop */ | |
2397 if(nextstopDepthMeter) | |
2398 { | |
2399 snprintf(TextR2,TEXTSIZE,"\032\f\002%c",TXT_Decostop); | |
2400 GFX_write_string(&FontT42,&t7r2,TextR2,0); | |
2401 textlength = snprintf(TextR2,TEXTSIZE,"\020\002%u%c%c %u'" | |
2402 , unit_depth_integer(nextstopDepthMeter) | |
2403 , unit_depth_char1_T105() | |
2404 , unit_depth_char2_T105() | |
2405 , (nextstopLengthSeconds+59)/60); | |
2406 t7_colorscheme_mod(TextR2); | |
2407 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
|
2408 TextR2[0] = '\031'; |
38 | 2409 if(textlength <= 9) |
2410 GFX_write_string(&FontT105,&t7r2,TextR2,1); | |
567 | 2411 else if(textlength <= 10) |
2412 GFX_write_string(&FontT84Spaced,&t7r2,TextR2,1); | |
38 | 2413 else |
2414 GFX_write_string(&FontT54,&t7r2,TextR2,1); | |
2415 } | |
2416 else if(SafetyStopTime.Total && (depth > timer_Safetystop_GetDepthUpperLimit())) | |
2417 { | |
2418 snprintf(TextR2,TEXTSIZE,"\032\f\002%c%c",TXT_2BYTE,TXT2BYTE_SafetyStop2); | |
2419 GFX_write_string(&FontT42,&t7r2,TextR2,0); | |
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
2420 snprintf(TextR2,TEXTSIZE,"\020\002\016%u:%02u",SafetyStopTime.Minutes,SafetyStopTime.Seconds); |
38 | 2421 t7_colorscheme_mod(TextR2); |
2422 GFX_write_string(&FontT105,&t7r2,TextR2,1); | |
2423 } | |
2424 | |
2425 /* tts - option 1 | |
2426 * ndl - option 2 | |
2427 * empty - option 3 */ | |
2428 if(pDecoinfo->output_time_to_surface_seconds) | |
2429 { | |
2430 snprintf(TextR3,TEXTSIZE,"\032\f\002%c",TXT_TTS); | |
2431 GFX_write_string(&FontT42,&t7r3,TextR3,0); | |
2432 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
|
2433 snprintf(TextR3,TEXTSIZE,"\020\002%i'",(pDecoinfo->output_time_to_surface_seconds + 59)/ 60); |
38 | 2434 else |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2435 snprintf(TextR3,TEXTSIZE,"\020\002%ih",(pDecoinfo->output_time_to_surface_seconds + 59)/ 3600); |
38 | 2436 t7_colorscheme_mod(TextR3); |
2437 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
|
2438 TextR2[0] = '\031'; |
38 | 2439 GFX_write_string(&FontT105,&t7r3,TextR3,1); |
2440 } | |
2441 else if(pDecoinfo->output_ndl_seconds) | |
2442 { | |
2443 snprintf(TextR3,TEXTSIZE,"\032\f\002%c",TXT_Nullzeit); | |
2444 GFX_write_string(&FontT42,&t7r3,TextR3,0); | |
2445 if(pDecoinfo->output_ndl_seconds < 1000 * 60) | |
2446 snprintf(TextR3,TEXTSIZE,"\020\002%i'",pDecoinfo->output_ndl_seconds/60); | |
2447 else | |
2448 snprintf(TextR3,TEXTSIZE,"\020\002%ih",pDecoinfo->output_ndl_seconds/3600); | |
2449 t7_colorscheme_mod(TextR3); | |
2450 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
|
2451 TextR2[0] = '\031'; |
38 | 2452 GFX_write_string(&FontT105,&t7r3,TextR3,1); |
2453 } | |
2454 | |
2455 /* Menu Selection (and gas mix) */ | |
2456 if(get_globalState() == StDMGAS) | |
2457 { | |
2458 textPointer = 0; | |
2459 TextR1[textPointer++] = '\a'; | |
2460 // TextR1[textPointer++] = '\f'; | |
2461 TextR1[textPointer++] = '\001'; | |
2462 TextR1[textPointer++] = ' '; | |
2463 textPointer += tHome_gas_writer(stateUsed->diveSettings.gas[actualBetterGasId()].oxygen_percentage,stateUsed->diveSettings.gas[actualBetterGasId()].helium_percentage,&TextR1[textPointer]); | |
2464 TextR1[textPointer++] = '?'; | |
2465 TextR1[textPointer++] = ' '; | |
2466 TextR1[textPointer++] = 0; | |
2467 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2468 } | |
2469 else if(get_globalState() == StDMSPT) | |
2470 { | |
2471 textPointer = 0; | |
2472 TextR1[textPointer++] = '\a'; | |
2473 TextR1[textPointer++] = '\001'; | |
2474 TextR1[textPointer++] = ' '; | |
680 | 2475 textPointer += snprintf(&TextR1[textPointer],TEXTSIZE,"%01.2f",(float)(stateUsed->diveSettings.setpoint[actualBetterSetpointId()].setpoint_cbar) / 100.0); |
38 | 2476 TextR1[textPointer++] = '?'; |
2477 TextR1[textPointer++] = ' '; | |
2478 TextR1[textPointer++] = 0; | |
2479 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2480 } | |
2481 else if(get_globalState() == StDMENU) | |
2482 { | |
2483 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveMenuQ); | |
2484 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2485 } | |
2486 else if(get_globalState() == StDSIM1) | |
2487 { | |
2488 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveQuitQ); | |
2489 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2490 } | |
2491 else if(get_globalState() == StDSIM2) | |
2492 { | |
2493 if(settingsGetPointer()->nonMetricalSystem) | |
2494 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-3.33ft "); | |
2495 else | |
2496 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-1m "); | |
2497 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2498 | |
2499 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2500 , unit_depth_integer(simulation_get_aim_depth()) | |
2501 , unit_depth_char1() | |
2502 , unit_depth_char2() | |
2503 ); | |
2504 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2505 | |
2506 } | |
2507 else if(get_globalState() == StDSIM3) | |
2508 { | |
2509 if(settingsGetPointer()->nonMetricalSystem) | |
2510 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+3.33ft "); | |
2511 else | |
2512 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+1m "); | |
2513 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2514 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2515 , unit_depth_integer(simulation_get_aim_depth()) | |
2516 , unit_depth_char1() | |
2517 , unit_depth_char2() | |
2518 ); | |
2519 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2520 } | |
2521 else if(get_globalState() == StDSIM4) | |
2522 { | |
2523 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+5' "); | |
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 | |
2533 { | |
2534 /* gas mix */ | |
2535 oxygen_percentage = 100; | |
2536 oxygen_percentage -= stateUsed->lifeData.actualGas.nitrogen_percentage; | |
2537 oxygen_percentage -= stateUsed->lifeData.actualGas.helium_percentage; | |
2538 | |
2539 textPointer = 0; | |
2540 TextC2[textPointer++] = '\020'; | |
2541 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
2542 { | |
2543 TextC2[textPointer++] = '\a'; | |
2544 } | |
2545 else | |
2546 { | |
2547 float fPpO2limitHigh, fPpO2now; | |
2548 | |
2549 if(actualLeftMaxDepth(stateUsed)) | |
2550 fPpO2limitHigh = settingsGetPointer()->ppO2_max_deco; | |
2551 else | |
2552 fPpO2limitHigh = settingsGetPointer()->ppO2_max_std; | |
2553 | |
2554 fPpO2now = (stateUsed->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * oxygen_percentage; | |
2555 | |
2556 if((fPpO2now > fPpO2limitHigh) || (fPpO2now < (float)(settingsGetPointer()->ppO2_min))) | |
2557 TextC2[textPointer++] = '\025'; | |
2558 } | |
2559 TextC2[textPointer++] = '\002'; | |
2560 textPointer += tHome_gas_writer(oxygen_percentage,stateUsed->lifeData.actualGas.helium_percentage,&TextC2[textPointer]); | |
2561 | |
2562 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
2563 { | |
2564 if(TextC2[0] == '\020') | |
2565 { | |
2566 TextC2[0] = '\004'; // NOP | |
2567 } | |
2568 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
2569 } | |
2570 else | |
2571 { | |
2572 t7_colorscheme_mod(TextC2); | |
2573 GFX_write_string(&FontT48,&t7c2,TextC2,0); // T54 has only numbers | |
2574 } | |
2575 | |
2576 if(stateUsed->diveSettings.ccrOption) | |
2577 { | |
662 | 2578 if(isLoopMode(stateUsed->diveSettings.diveMode)) |
38 | 2579 { |
2580 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
662 | 2581 |
38 | 2582 if(stateUsed->warnings.betterSetpoint && warning_count_high_time && (stateUsed->diveSettings.diveMode == DIVEMODE_CCR)) |
2583 { | |
2584 TextC2[0] = '\a'; // inverse instead of color \020 | |
2585 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
2586 } | |
2587 else | |
2588 { | |
2589 t7_colorscheme_mod(TextC2); | |
2590 GFX_write_string(&FontT48,&t7c2,TextC2,0); | |
2591 } | |
2592 } | |
2593 } | |
2594 else if(settingsGetPointer()->alwaysShowPPO2) | |
2595 { | |
2596 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2597 t7_colorscheme_mod(TextC2); | |
2598 GFX_write_string(&FontT48,&t7c2,TextC2,0); | |
2599 } | |
2600 } | |
2601 | |
2602 /* algorithm, ccr, bailout and battery */ | |
2603 /* and permanent warnings (CNS) */ | |
2604 | |
2605 if((stateUsed->warnings.cnsHigh) && display_count_high_time) | |
2606 { | |
2607 TextC2[0] = '\f'; | |
2608 TextC2[1] = TXT_2BYTE; | |
2609 TextC2[2] = TXT2BYTE_WarnCnsHigh; | |
2610 TextC2[3] = 0; | |
662 | 2611 GFX_write_string_color(&FontT42,&t7c1,TextC2,0,CLUT_WarningRed); |
38 | 2612 } |
2613 else | |
2614 { | |
2615 if(stateUsed->warnings.aGf) | |
2616 { | |
2617 GFX_write_string_color(&FontT48,&t7c1,"\f" "aGF",0,CLUT_WarningYellow); | |
2618 } | |
2619 else if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2620 { | |
2621 GFX_write_string(&FontT48,&t7c1,"\027\f" "GF",0); | |
2622 } | |
2623 else | |
2624 { | |
2625 GFX_write_string(&FontT48,&t7c1,"\027\f" "VPM",0); | |
2626 } | |
2627 | |
2628 if(stateUsed->diveSettings.diveMode == DIVEMODE_CCR) | |
2629 GFX_write_string(&FontT24,&t7c1,"\027\f\002" "CCR",0); | |
2630 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80" "CCR",0); | |
2631 else | |
662 | 2632 if(stateUsed->diveSettings.diveMode == DIVEMODE_PSCR) |
2633 GFX_write_string(&FontT24,&t7c1,"\027\f\002" "PSCR",0); | |
2634 else | |
38 | 2635 if(stateUsed->diveSettings.ccrOption) |
2636 GFX_write_string(&FontT24,&t7c1,"\f\002\024" "Bailout",0); | |
2637 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80\024" "Bailout",0); | |
2638 } | |
2639 TextC1[0] = '\020'; | |
2640 TextC1[1] = '3'; | |
2641 TextC1[2] = '1'; | |
2642 TextC1[3] = '1'; | |
2643 TextC1[4] = '1'; | |
2644 TextC1[5] = '1'; | |
2645 TextC1[6] = '1'; | |
2646 TextC1[7] = '1'; | |
2647 TextC1[8] = '1'; | |
2648 TextC1[9] = '1'; | |
2649 TextC1[10] = '1'; | |
2650 TextC1[11] = '1'; | |
2651 TextC1[12] = '0'; | |
2652 TextC1[13] = 0; | |
2653 | |
2654 for(int i=1;i<=10;i++) | |
2655 { | |
2656 if( stateUsed->lifeData.battery_charge > (9 * i)) | |
2657 TextC1[i+1] += 1; | |
2658 } | |
2659 | |
2660 if(stateUsed->warnings.lowBattery) | |
2661 { | |
2662 TextC1[0] = '\025'; | |
2663 if(warning_count_high_time) | |
2664 { | |
2665 for(int i=2;i<=11;i++) | |
2666 TextC1[i] = '1'; | |
2667 } | |
2668 else | |
2669 { | |
2670 TextC1[2] = '2'; | |
2671 } | |
2672 GFX_write_string(&Batt24,&t7batt,TextC1,0); | |
2673 | |
2674 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
2675 { | |
2676 snprintf(TextC1,16,"\004\025\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
2677 if(warning_count_high_time) | |
2678 TextC1[0] = '\a'; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2679 GFX_write_string(&FontT24,&t7voltage,TextC1,0); |
38 | 2680 } |
2681 } | |
2682 else | |
2683 { | |
2684 t7_colorscheme_mod(TextC1); | |
2685 GFX_write_string(&Batt24,&t7batt,TextC1,0); | |
2686 | |
2687 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
2688 { | |
2689 snprintf(TextC1,16,"\020\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
2690 t7_colorscheme_mod(TextC1); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2691 GFX_write_string(&FontT24,&t7voltage,TextC1,0); // t7batt |
38 | 2692 } |
2693 } | |
2694 | |
2695 /* customizable left lower corner */ | |
2696 t7_refresh_divemode_userselected_left_lower_corner(); | |
2697 | |
2698 | |
2699 /* customview - option 1 | |
2700 * warning - option 2 */ | |
2701 if(stateUsed->warnings.numWarnings) | |
2702 customview_warnings = t7_test_customview_warnings(); | |
2703 | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
2704 background.pointer = 0; |
38 | 2705 if(customview_warnings && warning_count_high_time) |
2706 t7_show_customview_warnings(); | |
2707 else | |
2708 t7_refresh_customview(); | |
2709 | |
2710 /* the frame */ | |
2711 draw_frame(1,1, CLUT_DIVE_pluginbox, CLUT_DIVE_FieldSeperatorLines); | |
2712 } | |
2713 | |
2714 void t7_set_field_to_primary(void) | |
2715 { | |
2716 if(stateUsed->mode == MODE_DIVE) | |
2717 selection_custom_field = settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary; | |
2718 } | |
2719 | |
2720 void t7_change_field(void) | |
2721 { | |
2722 selection_custom_field++; | |
2723 | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2724 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
|
2725 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2726 selection_custom_field++; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2727 } |
662 | 2728 if((selection_custom_field == LLC_ScrubberTime) && ((settingsGetPointer()->scrubTimerMode == SCRUB_TIMER_OFF) || (!isLoopMode(settingsGetPointer()->dive_mode)))) |
656 | 2729 { |
2730 selection_custom_field++; | |
2731 } | |
662 | 2732 #ifdef ENABLE_PSCR_MODE |
2733 if((selection_custom_field == LCC_SimPpo2) && (settingsGetPointer()->dive_mode != DIVEMODE_PSCR)) | |
2734 { | |
2735 selection_custom_field++; | |
2736 } | |
2737 #endif | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2738 if(selection_custom_field >= LLC_END) |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2739 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2740 selection_custom_field = LLC_Empty; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2741 } |
38 | 2742 } |
2743 | |
2744 | |
2745 void t7_refresh_divemode_userselected_left_lower_corner(void) | |
2746 { | |
2747 if(!selection_custom_field) | |
2748 return; | |
2749 | |
2750 char headerText[10]; | |
2751 char text[TEXTSIZE]; | |
2752 uint8_t textpointer = 0; | |
2753 _Bool tinyHeaderFont = 0; | |
2754 uint8_t line = 0; | |
457 | 2755 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2756 uint16_t agedColor = 0; |
457 | 2757 #endif |
38 | 2758 |
2759 SDivetime Stopwatch = {0,0,0,0}; | |
2760 float fAverageDepth, fAverageDepthAbsolute; | |
2761 const SDecoinfo * pDecoinfoStandard; | |
2762 const SDecoinfo * pDecoinfoFuture; | |
2763 float fCNS; | |
2764 float temperature; | |
2765 | |
2766 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2767 { | |
2768 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
2769 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
2770 } | |
2771 else | |
2772 { | |
2773 pDecoinfoStandard = &stateUsed->decolistVPM; | |
2774 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
2775 } | |
2776 | |
2777 Stopwatch.Total = timer_Stopwatch_GetTime(); | |
2778 Stopwatch.Minutes = Stopwatch.Total / 60; | |
2779 Stopwatch.Seconds = Stopwatch.Total - ( Stopwatch.Minutes * 60 ); | |
2780 fAverageDepth = timer_Stopwatch_GetAvarageDepth_Meter(); | |
2781 fAverageDepthAbsolute = stateUsed->lifeData.average_depth_meter; | |
2782 | |
2783 headerText[0] = '\032'; | |
2784 headerText[1] = '\f'; | |
2785 | |
2786 switch(selection_custom_field) | |
2787 { | |
2788 /* Temperature */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2789 case LLC_Temperature: |
38 | 2790 default: |
189
8b8074080d7b
Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents:
187
diff
changeset
|
2791 temperature = unit_temperature_float(stateUsed->lifeData.temperature_celsius); |
38 | 2792 headerText[2] = TXT_Temperature; |
2793 textpointer = snprintf(text,TEXTSIZE,"\020\016%01.1f \140",temperature); // "\016\016%01.1f `" + C or F | |
2794 if(settingsGetPointer()->nonMetricalSystem == 0) | |
2795 text[textpointer++] = 'C'; | |
2796 else | |
2797 text[textpointer++] = 'F'; | |
2798 text[textpointer++] = 0; | |
2799 tinyHeaderFont = 0; | |
2800 break; | |
2801 | |
2802 /* Average Depth */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2803 case LLC_AverageDepth: |
38 | 2804 headerText[2] = TXT_AvgDepth; |
2805 if(settingsGetPointer()->nonMetricalSystem) | |
2806 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(fAverageDepthAbsolute)); | |
2807 else | |
2808 snprintf(text,TEXTSIZE,"\020%01.1f",fAverageDepthAbsolute); | |
2809 break; | |
2810 | |
2811 /* ppO2 */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2812 case LLC_ppO2: |
38 | 2813 headerText[2] = TXT_ppO2; |
2814 snprintf(text,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2815 break; | |
2816 | |
2817 /* Stop Uhr */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2818 case LLC_Stopwatch: |
38 | 2819 headerText[2] = TXT_Stopwatch; |
2820 if(settingsGetPointer()->nonMetricalSystem) | |
2821 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.0f",Stopwatch.Minutes, Stopwatch.Seconds,unit_depth_float(fAverageDepth)); | |
2822 else | |
2823 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.1f",Stopwatch.Minutes, Stopwatch.Seconds,fAverageDepth); | |
2824 tinyHeaderFont = 1; | |
2825 line = 1; | |
2826 break; | |
2827 | |
2828 /* Ceiling */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2829 case LLC_Ceiling: |
38 | 2830 headerText[2] = TXT_Ceiling; |
2831 if((pDecoinfoStandard->output_ceiling_meter > 99.9f) || (settingsGetPointer()->nonMetricalSystem)) | |
2832 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); | |
2833 else | |
2834 snprintf(text,TEXTSIZE,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); | |
2835 break; | |
2836 | |
2837 /* Future TTS */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2838 case LLC_FutureTTS: |
38 | 2839 headerText[2] = TXT_FutureTTS; |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2840 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
|
2841 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
|
2842 else |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2843 snprintf(text,TEXTSIZE,"\020\016\016@+%u'\n\r" "%ih TTS",settingsGetPointer()->future_TTS, (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
38 | 2844 tinyHeaderFont = 1; |
2845 line = 1; | |
2846 break; | |
2847 | |
2848 /* CNS */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2849 case LLC_CNS: |
38 | 2850 headerText[2] = TXT_CNS; |
2851 fCNS = stateUsed->lifeData .cns; | |
2852 if(fCNS > 999) | |
2853 fCNS = 999; | |
2854 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",fCNS); | |
2855 break; | |
2856 | |
2857 /* actual GF */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2858 case LLC_GF: |
38 | 2859 headerText[2] = TXT_ActualGradient; |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
2860 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",100 * pDecoinfoStandard->super_saturation); |
38 | 2861 break; |
656 | 2862 |
2863 case LLC_ScrubberTime: | |
2864 tinyHeaderFont = 1; | |
2865 headerText[2] = TXT_ScrubTime; | |
2866 if(settingsGetPointer()->scrubTimerMode == SCRUB_TIMER_MINUTES) | |
2867 { | |
2868 snprintf(text,TEXTSIZE,"\020%3u'",settingsGetPointer()->scrubTimerCur); | |
2869 } | |
2870 else | |
2871 { | |
2872 snprintf(text,TEXTSIZE,"\020%u\016\016%%\017", (settingsGetPointer()->scrubTimerCur * 100 / settingsGetPointer()->scrubTimerMax)); | |
2873 } | |
2874 break; | |
662 | 2875 #ifdef ENABLE_PSCR_MODE |
2876 case LCC_SimPpo2: | |
2877 headerText[2] = TXT_SimPpo2; | |
2878 snprintf(text,TEXTSIZE,"\020%.2f\016\016Bar\017",stateUsed->lifeData.ppo2Simulated_bar); | |
2879 break; | |
2880 #endif | |
656 | 2881 |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2882 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2883 case LCC_BottleBar: |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2884 headerText[2] = TXT_AtemGasVorrat; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2885 tinyHeaderFont = 1; |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2886 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
|
2887 break; |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2888 #endif |
38 | 2889 } |
2890 headerText[3] = 0; | |
2891 | |
2892 if(tinyHeaderFont) | |
2893 GFX_write_string(&FontT24,&t7l3,headerText,0); | |
2894 else | |
2895 GFX_write_string(&FontT42,&t7l3,headerText,0); | |
2896 | |
2897 t7_colorscheme_mod(text); | |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2898 #ifndef ENABLE_BOTTLE_SENSOR |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2899 GFX_write_string(&FontT105,&t7l3,text,line); |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2900 #else |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2901 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
|
2902 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2903 GFX_write_string(&FontT105,&t7l3,text,line); |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2904 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2905 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2906 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2907 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
|
2908 if(agedColor > 1200) |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2909 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2910 agedColor = CLUT_WarningRed; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2911 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2912 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2913 if(agedColor > 600) |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2914 { |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2915 agedColor = CLUT_MenuLineUnselected; |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2916 } |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2917 else |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2918 if(agedColor > 20) |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2919 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2920 agedColor = CLUT_Font031; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2921 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2922 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2923 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2924 agedColor = CLUT_Font020; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2925 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2926 |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2927 GFX_write_string_color(&FontT105,&t7l3,text,line,agedColor); |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2928 } |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2929 #endif |
38 | 2930 } |
2931 | |
2932 /* Private functions ---------------------------------------------------------*/ | |
2933 | |
2934 uint8_t t7_customtextPrepare(char * text) | |
2935 { | |
2936 uint8_t i, j, textptr, lineCount; | |
2937 char nextChar; | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2938 uint8_t alignmentChanged = 0; |
38 | 2939 |
2940 textptr = 0; | |
2941 lineCount = 0; | |
2942 | |
2943 text[textptr++] = TXT_MINIMAL; | |
2944 | |
2945 j = 0; | |
2946 i = 0; | |
2947 do | |
2948 { | |
2949 j += i; | |
2950 i = 0; | |
2951 do | |
2952 { | |
2953 nextChar = settingsGetPointer()->customtext[i+j]; | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2954 if((nextChar == '^') && (alignmentChanged == 0)) /* center */ |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2955 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2956 text[textptr++] = '\001'; |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2957 alignmentChanged = 1; |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2958 i++; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2959 }else |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2960 if((nextChar == 180) && (alignmentChanged == 0)) /* '�' => Right */ |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2961 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2962 text[textptr++] = '\002'; |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2963 alignmentChanged = 1; |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2964 i++; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2965 }else |
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 i++; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2968 if((!nextChar) || (nextChar =='\n') || (nextChar =='\r')) |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2969 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2970 break; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2971 } |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2972 text[textptr++] = nextChar; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2973 } |
38 | 2974 } while (i < 12); |
2975 | |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2976 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
|
2977 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2978 while((textptr - 1 > 0) && (text[textptr - 1] == 32)) |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2979 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2980 textptr--; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2981 } |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2982 } |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
2983 |
38 | 2984 if(!nextChar) |
2985 break; | |
2986 | |
2987 if(lineCount < 3) | |
2988 { | |
2989 text[textptr++] = '\n'; | |
2990 text[textptr++] = '\r'; | |
2991 } | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2992 alignmentChanged = 0; |
38 | 2993 lineCount++; |
2994 for(uint8_t k=0;k<2;k++) | |
2995 { | |
2996 nextChar = settingsGetPointer()->customtext[i+j+k]; | |
2997 if((nextChar =='\n') || (nextChar =='\r')) | |
2998 i++; | |
2999 else | |
3000 break; | |
3001 } | |
3002 | |
3003 } while (lineCount < 4); | |
3004 | |
3005 text[textptr] = 0; | |
3006 return lineCount; | |
3007 } | |
3008 | |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3009 static void t7_colorscheme_mod(char *text) { |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3010 char *p = text; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3011 while (*p) { |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3012 if ((*p == '\020') && !GFX_is_colorschemeDiveStandard()) |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3013 *p = '\027'; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3014 p++; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3015 } |
38 | 3016 } |
3017 | |
3018 void draw_frame(_Bool PluginBoxHeader, _Bool LinesOnTheSides, uint8_t colorBox, uint8_t colorLinesOnTheSide) | |
3019 { | |
3020 point_t LeftLow, WidthHeight; | |
3021 point_t start, stop; | |
3022 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3023 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3024 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3025 |
38 | 3026 // plugin box |
3027 LeftLow.x = CUSTOMBOX_LINE_LEFT; | |
3028 WidthHeight.x = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_LINE_LEFT; | |
3029 LeftLow.y = 60; | |
3030 WidthHeight.y = 440 - LeftLow.y; | |
642
c737cf5d9067
Do not show focus indicator in case motion detection is suspended:
Ideenmodellierer
parents:
631
diff
changeset
|
3031 if((viewInFocus() && (!viewDetectionSuspended()))) |
553 | 3032 { |
3033 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, CLUT_Font023); | |
3034 } | |
3035 else | |
3036 { | |
3037 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, colorBox); | |
3038 } | |
38 | 3039 |
3040 if(PluginBoxHeader) | |
3041 { | |
3042 // plugin box - header | |
3043 start.x = CUSTOMBOX_LINE_LEFT; | |
3044 stop.x = CUSTOMBOX_LINE_RIGHT; | |
3045 stop.y = start.y = 440 - 60; | |
3046 GFX_draw_line(&t7screen, start, stop, colorBox); | |
3047 } | |
3048 | |
3049 if(LinesOnTheSides) | |
3050 { | |
3051 // aufteilung links | |
3052 start.x = 0; | |
3053 stop.x = CUSTOMBOX_LINE_LEFT; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3054 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3055 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3056 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3057 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3058 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3059 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3060 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3061 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3062 |
38 | 3063 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3064 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3065 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3066 stop.y = start.y = t7l2.WindowY0 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3067 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3068 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3069 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3070 stop.y = start.y = 480 - t7l2.WindowY1 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3071 } |
38 | 3072 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
3073 | |
3074 // aufteilung rechts | |
3075 start.x = CUSTOMBOX_LINE_RIGHT; | |
3076 stop.x = 799; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3077 if(!pSettings->FlipDisplay) |
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 stop.y = start.y = t7l1.WindowY0 - 1; |
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 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3082 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3083 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3084 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3085 |
38 | 3086 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3087 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3088 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3089 stop.y = start.y = t7l2.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3090 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3091 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3092 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3093 stop.y = start.y = 480 - t7l2.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3094 } |
38 | 3095 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
3096 } | |
3097 } | |
3098 | |
3099 | |
3100 /* Compass like TCOS shellfish | |
3101 * input is 0 to 359 | |
3102 * 2 px / 1 degree | |
3103 * Range is 148 degree with CUSTOMBOX_SPACE_INSIDE = 296 | |
3104 * one side is 74 degree (less than 90 degree) | |
3105 * internal 360 + 180 degree of freedom | |
3106 * use positive values only, shift by 360 below 90 mid position | |
3107 */ | |
3108 | |
3109 | |
3110 point_t t7_compass_circle(uint8_t id, uint16_t degree) | |
3111 { | |
3112 float fCos, fSin; | |
3113 const float piMult = ((2 * 3.14159) / 360); | |
3114 // const int radius[4] = {95,105,115,60}; | |
3115 const int radius[4] = {95,105,115,100}; | |
3116 const point_t offset = {.x = 400, .y = 250}; | |
3117 | |
3118 static point_t r[4][360] = { 0 }; | |
3119 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3120 if(r[0][0].y == 0) /* calc table at first call only */ |
38 | 3121 { |
3122 for(int i=0;i<360;i++) | |
3123 { | |
3124 fCos = cos(i * piMult); | |
3125 fSin = sin(i * piMult); | |
3126 for(int j=0;j<4;j++) | |
3127 { | |
3128 r[j][i].x = offset.x + (int)(fSin * radius[j]); | |
3129 r[j][i].y = offset.y + (int)(fCos * radius[j]); | |
3130 } | |
3131 } | |
3132 } | |
3133 if(id > 3) id = 0; | |
3134 if(degree > 359) degree = 0; | |
3135 return r[id][degree]; | |
3136 } | |
3137 | |
3138 /* range should be 0 to 30 bar if 300 meter with 100% of nitrogen or helium | |
3139 * T24 is 28 high | |
3140 */ | |
3141 void t7_tissues(const SDiveState * pState) | |
3142 { | |
3143 point_t start, change, stop; | |
3144 float value; | |
3145 uint16_t front, cns100pixel; | |
3146 char text[256]; | |
3147 uint8_t textpointer = 0; | |
3148 uint8_t color; | |
3149 | |
3150 float percent_N2; | |
3151 float percent_He; | |
3152 float partial_pressure_N2; | |
3153 float partial_pressure_He; | |
3154 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3155 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3156 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3157 |
38 | 3158 |
3159 /* N2 */ | |
3160 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3161 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3162 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3163 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3164 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3165 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3166 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3167 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3168 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3169 } |
38 | 3170 t7cY0free.WindowNumberOfTextLines = 3; |
3171 | |
3172 text[textpointer++] = '\030'; | |
3173 text[textpointer++] = TXT_2BYTE; | |
3174 text[textpointer++] = TXT2BYTE_Nitrogen; | |
3175 text[textpointer++] = '\n'; | |
3176 text[textpointer++] = '\r'; | |
3177 text[textpointer++] = TXT_2BYTE; | |
3178 text[textpointer++] = TXT2BYTE_Helium; | |
3179 text[textpointer++] = '\n'; | |
3180 text[textpointer++] = '\r'; | |
3181 text[textpointer++] = TXT_2BYTE; | |
3182 text[textpointer++] = TXT2BYTE_CNS; | |
3183 text[textpointer++] = 0; | |
3184 | |
3185 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3186 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3187 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3188 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3189 start.y = t7cH.WindowY0 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3190 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3191 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3192 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3193 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3194 } |
38 | 3195 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
3196 stop.x = start.x + CUSTOMBOX_SPACE_INSIDE; | |
3197 | |
3198 for(int i=0;i<16;i++) | |
3199 { | |
3200 stop.y = start.y; | |
3201 change.y = start.y; | |
3202 | |
3203 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
|
3204 value *= 80; |
38 | 3205 |
3206 if(value < 0) | |
3207 front = 0; | |
3208 else | |
3209 if(value > CUSTOMBOX_SPACE_INSIDE) | |
3210 front = CUSTOMBOX_SPACE_INSIDE; | |
3211 else | |
3212 front = (uint16_t)value; | |
3213 | |
3214 change.x = start.x + front; | |
3215 if(change.x != start.x) | |
3216 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
3217 if(change.x != stop.x) | |
3218 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3219 | |
3220 start.y -= 3; | |
3221 } | |
3222 | |
3223 /* He */ | |
3224 start.y -= 28 + 14; | |
3225 for(int i=0;i<16;i++) | |
3226 { | |
3227 stop.y = start.y; | |
3228 change.y = start.y; | |
3229 | |
3230 value = pState->lifeData.tissue_helium_bar[i]; | |
3231 value *= 80;//20 | |
3232 | |
3233 if(value < 0) | |
3234 front = 0; | |
3235 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
3236 front = CUSTOMBOX_SPACE_INSIDE; | |
3237 else | |
3238 front = (uint16_t)value; | |
3239 | |
3240 change.x = start.x + front; | |
3241 if(change.x != start.x) | |
3242 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
3243 if(change.x != stop.x) | |
3244 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3245 | |
3246 start.y -= 3; | |
3247 } | |
3248 | |
3249 /* CNS == Oxygen */ | |
3250 start.y -= 28 + 14; | |
3251 | |
3252 cns100pixel = (8 * CUSTOMBOX_SPACE_INSIDE) / 10; | |
3253 value = pState->lifeData.cns; | |
3254 value *= cns100pixel; | |
3255 value /= 100; | |
3256 | |
3257 if(value < 0) | |
3258 front = 0; | |
3259 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
3260 front = CUSTOMBOX_SPACE_INSIDE; | |
3261 else | |
3262 front = (uint16_t)value; | |
3263 | |
3264 if(pState->lifeData.cns < 95) | |
3265 color = CLUT_Font030; | |
3266 else if(pState->lifeData.cns < 100) | |
3267 color = CLUT_WarningYellow; | |
3268 else | |
3269 color = CLUT_WarningRed; | |
3270 | |
3271 for(int i=0;i<16;i++) | |
3272 { | |
3273 stop.y = start.y; | |
3274 change.y = start.y; | |
3275 | |
3276 change.x = start.x + front; | |
3277 if(change.x != start.x) | |
3278 GFX_draw_thick_line(1,&t7screen, start, change, color); | |
3279 if(change.x != stop.x) | |
3280 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3281 | |
3282 start.y -= 3; | |
3283 } | |
3284 | |
3285 /* where is the onload/offload limit for N2 and He */ | |
3286 decom_get_inert_gases(pState->lifeData.pressure_ambient_bar, &pState->lifeData.actualGas, &percent_N2, &percent_He); | |
3287 partial_pressure_N2 = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_N2; | |
3288 partial_pressure_He = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_He; | |
3289 | |
3290 // Nitrogen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3291 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3292 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3293 start.y = t7cH.WindowY0 + 1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3294 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3295 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3296 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3297 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3298 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3299 |
38 | 3300 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
|
3301 if((percent_N2 > 0) && (partial_pressure_N2 > 0.7512f)) |
38 | 3302 { |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3303 value = partial_pressure_N2 - 0.7512f; |
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3304 value *= 80; |
38 | 3305 |
3306 if(value < 0) | |
3307 front = 3; | |
3308 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
3309 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
3310 else | |
3311 front = (uint16_t)value; | |
3312 } | |
3313 else | |
3314 { | |
3315 front = 1; | |
3316 } | |
3317 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
3318 stop.x = start.x; | |
3319 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
3320 | |
3321 | |
3322 // Helium vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3323 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3324 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3325 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
|
3326 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3327 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3328 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3329 start.y = t7cH.WindowY1 - 5 - 3*16 - 28 - 14; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3330 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3331 |
38 | 3332 stop.y = start.y - (3 * 15) - 1; |
3333 if((percent_He > 0) && (partial_pressure_He > 0.01f)) // 0.5f | |
3334 { | |
3335 | |
3336 value = partial_pressure_He; | |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3337 value *= 80; |
38 | 3338 |
3339 if(value < 0) | |
3340 front = 3; | |
3341 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
3342 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
3343 else | |
3344 front = (uint16_t)value; | |
3345 } | |
3346 else | |
3347 { | |
3348 front = 1; | |
3349 } | |
3350 | |
3351 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
3352 stop.x = start.x; | |
3353 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
3354 | |
3355 // Oxygen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3356 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3357 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3358 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
|
3359 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3360 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3361 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3362 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
|
3363 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3364 |
38 | 3365 stop.y = start.y - (3 * 15) - 1; |
3366 | |
3367 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + cns100pixel; | |
3368 stop.x = start.x; | |
3369 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
|
3370 |
38 | 3371 } |
3372 | |
3373 | |
3374 void t7_debug(void) | |
3375 { | |
3376 char text[256+50]; | |
3377 uint8_t textpointer = 0; | |
3378 | |
3379 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
3380 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
3381 t7cY0free.WindowNumberOfTextLines = 3; | |
3382 | |
3383 textpointer += snprintf(&text[textpointer],50,"Ambient [bar]\n\r"); | |
3384 textpointer += snprintf(&text[textpointer],50,"Surface [bar] + salt\n\r"); | |
3385 // textpointer += snprintf(&text[textpointer],50,"Difference [mbar]\n\r"); | |
3386 textpointer += snprintf(&text[textpointer],50,"ShallowCounter [s]\n\r"); | |
3387 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3388 | |
3389 t7cY0free.WindowY0 -= 52; | |
3390 // 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)); | |
3391 snprintf(text,60, | |
3392 "%0.2f\n\r" | |
3393 "%0.2f %u%%\n\r" | |
3394 "%u" | |
3395 ,stateUsed->lifeData.pressure_ambient_bar | |
3396 ,stateUsed->lifeData.pressure_surface_bar | |
3397 ,settingsGetPointer()->salinity | |
3398 ,stateUsed->lifeData.counterSecondsShallowDepth); | |
3399 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
3400 } | |
3401 | |
3402 | |
3403 void t7_SummaryOfLeftCorner(void) | |
3404 { | |
3405 char text[256+60]; | |
3406 uint8_t textpointer = 0; | |
656 | 3407 SSettings* pSettings = settingsGetPointer(); |
38 | 3408 |
3409 const SDecoinfo * pDecoinfoStandard; | |
3410 const SDecoinfo * pDecoinfoFuture; | |
3411 float fCNS; | |
3412 | |
3413 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
3414 { | |
3415 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
3416 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
3417 } | |
3418 else | |
3419 { | |
3420 pDecoinfoStandard = &stateUsed->decolistVPM; | |
3421 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
3422 } | |
3423 | |
3424 fCNS = stateUsed->lifeData .cns; | |
3425 if(fCNS > 999) | |
3426 fCNS = 999; | |
3427 | |
3428 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
656 | 3429 if(pSettings->FlipDisplay) |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3430 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3431 t7cY0free.WindowY1 = 400; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3432 } |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3433 |
38 | 3434 t7cY0free.WindowLineSpacing = 48; |
3435 t7cY0free.WindowNumberOfTextLines = 6; | |
3436 t7cY0free.WindowTab = 420; | |
3437 | |
3438 // header | |
3439 textpointer = 0; | |
3440 text[textpointer++] = '\032'; | |
3441 text[textpointer++] = '\016'; | |
3442 text[textpointer++] = '\016'; | |
3443 text[textpointer++] = TXT_ppO2; | |
3444 text[textpointer++] = '\n'; | |
3445 text[textpointer++] = '\r'; | |
3446 text[textpointer++] = TXT_Ceiling; | |
3447 text[textpointer++] = '\n'; | |
3448 text[textpointer++] = '\r'; | |
3449 text[textpointer++] = TXT_ActualGradient; | |
3450 text[textpointer++] = '\n'; | |
3451 text[textpointer++] = '\r'; | |
3452 text[textpointer++] = TXT_CNS; | |
3453 text[textpointer++] = '\n'; | |
3454 text[textpointer++] = '\r'; | |
3455 text[textpointer++] = TXT_FutureTTS; | |
656 | 3456 text[textpointer++] = '\n'; |
3457 text[textpointer++] = '\r'; | |
662 | 3458 if((pSettings->scrubTimerMode != SCRUB_TIMER_OFF) && (isLoopMode(pSettings->dive_mode))) |
656 | 3459 { |
3460 text[textpointer++] = TXT_ScrubTime; | |
3461 | |
3462 } | |
38 | 3463 text[textpointer++] = '\017'; |
656 | 3464 text[textpointer++] = 0; |
3465 if(!pSettings->FlipDisplay) | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3466 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3467 t7cY0free.WindowX0 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3468 t7cY0free.WindowY0 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3469 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3470 t7cY0free.WindowX0 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3471 t7cY0free.WindowY0 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3472 } |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3473 else |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3474 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3475 t7cY0free.WindowY1 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3476 t7cY0free.WindowX1 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3477 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3478 t7cY0free.WindowY1 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3479 t7cY0free.WindowX1 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3480 } |
38 | 3481 textpointer = 0; |
3482 text[textpointer++] = '\t'; | |
3483 textpointer += snprintf(&text[textpointer],10,"\020%01.2f", stateUsed->lifeData.ppO2); | |
3484 text[textpointer++] = '\n'; | |
3485 text[textpointer++] = '\r'; | |
3486 text[textpointer++] = '\t'; | |
3487 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
|
3488 textpointer += snprintf(&text[textpointer],10,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); |
38 | 3489 else |
215
4a0ebade04f5
Bugfix, trivial: correctly present avg depth in overview custom
Jan Mulder <jlmulder@xs4all.nl>
parents:
214
diff
changeset
|
3490 textpointer += snprintf(&text[textpointer],10,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); |
38 | 3491 text[textpointer++] = '\n'; |
3492 text[textpointer++] = '\r'; | |
3493 text[textpointer++] = '\t'; | |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
3494 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017", 100 * pDecoinfoStandard->super_saturation); |
38 | 3495 text[textpointer++] = '\n'; |
3496 text[textpointer++] = '\r'; | |
3497 text[textpointer++] = '\t'; | |
3498 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017",fCNS); | |
3499 text[textpointer++] = '\n'; | |
3500 text[textpointer++] = '\r'; | |
3501 text[textpointer++] = '\t'; | |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3502 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
|
3503 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
|
3504 else |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3505 textpointer += snprintf(&text[textpointer],10,"\020%ih", (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
656 | 3506 |
662 | 3507 if((pSettings->scrubTimerMode != SCRUB_TIMER_OFF) && (isLoopMode(pSettings->dive_mode))) |
656 | 3508 { |
3509 text[textpointer++] = '\n'; | |
3510 text[textpointer++] = '\r'; | |
3511 text[textpointer++] = '\t'; | |
3512 if(settingsGetPointer()->scrubTimerMode == SCRUB_TIMER_MINUTES) | |
3513 { | |
3514 textpointer += snprintf(&text[textpointer],10,"\020%3u'", pSettings->scrubTimerCur); | |
3515 } | |
3516 else | |
3517 { | |
3518 textpointer += snprintf(&text[textpointer],10,"\020%u\016\016%%\017", (pSettings->scrubTimerCur * 100 / pSettings->scrubTimerMax)); | |
3519 } | |
3520 } | |
38 | 3521 text[textpointer++] = 0; |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3522 t7_colorscheme_mod(text); |
38 | 3523 GFX_write_string(&FontT42, &t7cY0free, text, 1); |
3524 } | |
3525 | |
3526 void t7_compass(uint16_t ActualHeading, uint16_t UserSetHeading) | |
3527 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3528 uint16_t ActualHeadingRose; |
38 | 3529 uint16_t LeftBorderHeading, LineHeading; |
3530 uint32_t offsetPicture; | |
3531 point_t start, stop, center; | |
3532 static int32_t LastHeading = 0; | |
3533 int32_t newHeading = 0; | |
3534 int32_t diff = 0; | |
3535 int32_t diff2 = 0; | |
3536 | |
3537 int32_t diffAbs = 0; | |
3538 int32_t diffAbs2 = 0; | |
3539 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3540 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3541 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3542 |
38 | 3543 newHeading = ActualHeading; |
3544 | |
3545 diff = newHeading - LastHeading; | |
3546 | |
3547 if(newHeading < LastHeading) | |
3548 diff2 = newHeading + 360 - LastHeading; | |
3549 else | |
3550 diff2 = newHeading - 360 - LastHeading; | |
3551 | |
3552 diffAbs = diff; | |
3553 if(diffAbs < 0) | |
3554 diffAbs *= -1; | |
3555 | |
3556 diffAbs2 = diff2; | |
3557 if(diffAbs2 < 0) | |
3558 diffAbs2 *= -1; | |
3559 | |
3560 | |
3561 if(diffAbs <= diffAbs2) | |
3562 newHeading = LastHeading + (diff / 2); | |
3563 else | |
3564 newHeading = LastHeading + (diff2 / 2); | |
3565 | |
3566 if(newHeading < 0) | |
3567 newHeading += 360; | |
3568 else | |
3569 if(newHeading >= 360) | |
3570 newHeading -= 360; | |
3571 | |
3572 LastHeading = newHeading; | |
3573 ActualHeading = newHeading; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3574 ActualHeadingRose = ActualHeading; |
225
2bb1db22b5f5
cleanup: random set of cleanups
Jan Mulder <jlmulder@xs4all.nl>
parents:
222
diff
changeset
|
3575 |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3576 if(pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3577 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3578 ActualHeadingRose = 360 - ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3579 if (ActualHeadingRose < 170) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3580 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3581 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3582 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3583 if (ActualHeadingRose < 90) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3584 ActualHeading = ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3585 } |
38 | 3586 |
3587 // new hw 160822 | |
3588 // if (ActualHeading >= 360 + 90) | |
3589 // ActualHeading = 360; | |
3590 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3591 LeftBorderHeading = 2 * (ActualHeadingRose - (CUSTOMBOX_SPACE_INSIDE/4)); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3592 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3593 if(pSettings->FlipDisplay) /* add offset caused by mirrowed drawing */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3594 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3595 LeftBorderHeading += 2 * 80; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3596 } |
38 | 3597 |
3598 offsetPicture = LeftBorderHeading * t7screenCompass.ImageHeight * 2; | |
3599 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3600 /* the background is used to draw the rotating compass rose */ |
38 | 3601 background.pointer = t7screenCompass.FBStartAdress+offsetPicture; |
3602 background.x0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3603 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3604 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3605 background.y0 = 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3606 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3607 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3608 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3609 background.y0 = 480 - t7screenCompass.ImageHeight - 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3610 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3611 |
38 | 3612 background.width = CUSTOMBOX_SPACE_INSIDE; |
3613 background.height = t7screenCompass.ImageHeight; | |
3614 | |
3615 | |
3616 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + (CUSTOMBOX_SPACE_INSIDE/2); | |
3617 stop.x = start.x; | |
3618 start.y = 65; | |
3619 stop.y = start.y + 55; | |
3620 GFX_draw_line(&t7screen, start, stop, CLUT_Font030); | |
3621 | |
3622 | |
3623 center.x = start.x; | |
3624 center.y = 300; | |
3625 | |
3626 stop.x = center.x + 44; | |
3627 stop.y = center.y + 24; | |
3628 | |
3629 | |
3630 while(ActualHeading > 359) ActualHeading -= 360; | |
3631 | |
3632 LineHeading = 360 - ActualHeading; | |
3633 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(0,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font030); // North | |
3634 LineHeading += 90; | |
3635 if(LineHeading > 359) LineHeading -= 360; | |
3636 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Maintick | |
3637 LineHeading += 90; | |
3638 if(LineHeading > 359) LineHeading -= 360; | |
3639 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3640 LineHeading += 90; | |
3641 if(LineHeading > 359) LineHeading -= 360; | |
3642 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3643 | |
3644 LineHeading = 360 - ActualHeading; | |
3645 LineHeading += 45; | |
3646 if(LineHeading > 359) LineHeading -= 360; | |
3647 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3648 LineHeading += 90; | |
3649 if(LineHeading > 359) LineHeading -= 360; | |
3650 GFX_draw_thick_line(5,&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(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3654 LineHeading += 90; | |
3655 if(LineHeading > 359) LineHeading -= 360; | |
3656 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3657 | |
3658 LineHeading = 360 - ActualHeading; | |
3659 LineHeading += 22; | |
3660 if(LineHeading > 359) LineHeading -= 360; | |
3661 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3662 LineHeading += 45; | |
3663 if(LineHeading > 359) LineHeading -= 360; | |
3664 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3665 LineHeading += 45; | |
3666 if(LineHeading > 359) LineHeading -= 360; | |
3667 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3668 LineHeading += 45; | |
3669 if(LineHeading > 359) LineHeading -= 360; | |
3670 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3671 LineHeading += 45; | |
3672 if(LineHeading > 359) LineHeading -= 360; | |
3673 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3674 LineHeading += 45; | |
3675 if(LineHeading > 359) LineHeading -= 360; | |
3676 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3677 LineHeading += 45; | |
3678 if(LineHeading > 359) LineHeading -= 360; | |
3679 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3680 LineHeading += 45; | |
3681 if(LineHeading > 359) LineHeading -= 360; | |
3682 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3683 | |
3684 if(UserSetHeading) | |
3685 { | |
3686 LineHeading = UserSetHeading + 360 - ActualHeading; | |
3687 if(LineHeading > 359) LineHeading -= 360; | |
3688 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserHeadingTick); | |
3689 | |
3690 // R�ckpeilung, User Back Heading | |
3691 LineHeading = UserSetHeading + 360 + 180 - ActualHeading; | |
3692 if(LineHeading > 359) LineHeading -= 360; | |
3693 if(LineHeading > 359) LineHeading -= 360; | |
3694 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserBackHeadingTick); | |
3695 } | |
3696 | |
3697 center.x = start.x; | |
3698 center.y = 250; | |
3699 GFX_draw_circle(&t7screen, center, 116, CLUT_Font030); | |
3700 GFX_draw_circle(&t7screen, center, 118, CLUT_Font030); | |
3701 GFX_draw_circle(&t7screen, center, 117, CLUT_Font030); | |
3702 | |
3703 | |
3704 } | |
3705 | |
3706 | |
3707 /* Font_T42: N is 27 px, S is 20 px, W is 36 px, E is 23 px | |
3708 * max is NW with 63 px | |
3709 * Font_T24: N is 15 px, S is 12 px, W is 20 px, E is 13 px | |
3710 * max is NW with 35 px | |
3711 * NE is 28 px | |
3712 * SW is 32 px | |
3713 * SE is 25 px | |
3714 * space between each is 45 px * 2 | |
3715 * FirstItem List | |
3716 * \177 \177 prepare for size | |
3717 */ | |
3718 void init_t7_compass(void) | |
3719 { | |
3720 t7screenCompass.FBStartAdress = getFrame(21); | |
3721 | |
3722 char text[256]; | |
3723 uint8_t textpointer = 0; | |
3724 | |
3725 text[textpointer++] = '\030'; | |
3726 text[textpointer++] = '\177'; | |
3727 text[textpointer++] = '\177'; | |
3728 text[textpointer++] = 76; // 90 - 14 | |
3729 text[textpointer++] = '\016'; | |
3730 text[textpointer++] = '\016'; | |
3731 text[textpointer++] = 'N'; | |
3732 text[textpointer++] = 'E'; // 96 + 28 = 124 total | |
3733 text[textpointer++] = '\017'; | |
3734 text[textpointer++] = '\177'; | |
3735 text[textpointer++] = '\177'; | |
3736 text[textpointer++] = 64; // 90 - 14 - 12 | |
3737 text[textpointer++] = 'E'; // 124 + 74 + 23 = 221 total | |
3738 text[textpointer++] = '\177'; | |
3739 text[textpointer++] = '\177'; | |
3740 text[textpointer++] = 66; // 90 - 11 - 13 | |
3741 text[textpointer++] = '\016'; | |
3742 text[textpointer++] = '\016'; | |
3743 text[textpointer++] = 'S'; | |
3744 text[textpointer++] = 'E'; | |
3745 text[textpointer++] = '\017'; | |
3746 text[textpointer++] = '\177'; | |
3747 text[textpointer++] = '\177'; | |
3748 text[textpointer++] = 68; // 90 - 12 - 10 | |
3749 text[textpointer++] = 'S'; | |
3750 text[textpointer++] = '\177'; | |
3751 text[textpointer++] = '\177'; | |
3752 text[textpointer++] = 64; // 90 - 10 - 16 | |
3753 text[textpointer++] = '\016'; | |
3754 text[textpointer++] = '\016'; | |
3755 text[textpointer++] = 'S'; | |
3756 text[textpointer++] = 'W'; | |
3757 text[textpointer++] = '\017'; | |
3758 text[textpointer++] = '\177'; | |
3759 text[textpointer++] = '\177'; | |
3760 text[textpointer++] = 56; // 90 - 16 - 18 | |
3761 text[textpointer++] = 'W'; | |
3762 text[textpointer++] = '\177'; | |
3763 text[textpointer++] = '\177'; | |
3764 text[textpointer++] = 54; // 90 - 18 - 18 | |
3765 text[textpointer++] = '\016'; | |
3766 text[textpointer++] = '\016'; | |
3767 text[textpointer++] = 'N'; | |
3768 text[textpointer++] = 'W'; | |
3769 text[textpointer++] = '\017'; | |
3770 text[textpointer++] = '\177'; | |
3771 text[textpointer++] = '\177'; | |
3772 text[textpointer++] = 59; // 90 - 17 - 14 | |
3773 text[textpointer++] = 'N'; | |
3774 text[textpointer++] = '\177'; | |
3775 text[textpointer++] = '\177'; | |
3776 text[textpointer++] = 63; // 90 - 13 - 14 | |
3777 text[textpointer++] = '\016'; | |
3778 text[textpointer++] = '\016'; | |
3779 text[textpointer++] = 'N'; | |
3780 text[textpointer++] = 'E'; | |
3781 text[textpointer++] = '\017'; | |
3782 text[textpointer++] = '\177'; | |
3783 text[textpointer++] = '\177'; | |
3784 text[textpointer++] = 64; // 90 - 14 - 12 | |
3785 text[textpointer++] = 'E'; | |
3786 text[textpointer++] = '\177'; | |
3787 text[textpointer++] = '\177'; | |
3788 text[textpointer++] = 66; // 90 - 11 - 13 | |
3789 text[textpointer++] = '\016'; | |
3790 text[textpointer++] = '\016'; | |
3791 text[textpointer++] = 'S'; | |
3792 text[textpointer++] = 'E'; | |
3793 text[textpointer++] = '\017'; | |
3794 text[textpointer++] = '\177'; | |
3795 text[textpointer++] = '\177'; | |
3796 text[textpointer++] = 68; // 90 - 12 - 10 | |
3797 text[textpointer++] = 'S'; | |
3798 text[textpointer++] = '\177'; | |
3799 text[textpointer++] = '\177'; | |
3800 text[textpointer++] = 64; // 90 - 10 - 16 | |
3801 text[textpointer++] = '\016'; | |
3802 text[textpointer++] = '\016'; | |
3803 text[textpointer++] = 'S'; | |
3804 text[textpointer++] = 'W'; | |
3805 text[textpointer++] = '\017'; | |
3806 text[textpointer++] = 0; // end | |
3807 | |
3808 GFX_write_string(&FontT42,&t7pCompass,text,1); | |
3809 | |
3810 releaseAllFramesExcept(21,t7screenCompass.FBStartAdress); | |
3811 } | |
3812 | |
3813 | |
3814 void t7_miniLiveLogProfile(void) | |
3815 { | |
3816 SWindowGimpStyle wintemp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3817 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3818 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3819 |
38 | 3820 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
3821 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3822 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3823 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3824 wintemp.top = 480 - t7l1.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3825 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3826 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3827 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3828 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3829 wintemp.top = t7l1.WindowY1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3830 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3831 } |
38 | 3832 |
3833 uint16_t max_depth = (uint16_t)(stateUsed->lifeData.max_depth_meter * 10); | |
3834 | |
3835 GFX_graph_print(&t7screen, &wintemp, 0,1,0, max_depth, getMiniLiveLogbookPointerToData(), getMiniLiveLogbookActualDataLength(), CLUT_Font030, NULL); | |
3836 } | |
3837 | |
3838 void t7_logo_OSTC(void) | |
3839 { | |
3840 SWindowGimpStyle windowGimp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3841 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3842 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3843 |
38 | 3844 /* OSTC logo */ |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3845 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3846 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3847 windowGimp.left = t7l1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3848 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3849 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3850 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3851 windowGimp.left = t7r1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3852 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3853 |
38 | 3854 windowGimp.top = 40 + 32; |
3855 GFX_draw_image_monochrome(&t7screen, windowGimp, &ImgOSTC, 0); | |
3856 } | |
672 | 3857 |
3858 static uint16_t ChargerLog[60] = {10,10,10,10,10,10,10,10,10,10, | |
3859 10,10,10,10,10,10,10,10,10,10, | |
3860 10,10,10,10,10,10,10,10,10,10, | |
3861 10,10,10,10,10,10,10,10,10,10, | |
3862 10,10,10,10,10,10,10,10,10,10, | |
3863 10,10,10,10,10,10,10,10,10,10}; | |
3864 | |
3865 uint16_t LogDeltaCharge(float charge) | |
3866 { | |
3867 static uint8_t curIndex = 0; | |
3868 static float averageSpeed = 0.0; | |
3869 uint16_t level = 0; | |
3870 uint16_t completeSec = 0; | |
3871 | |
3872 if(charge > 0.003) | |
3873 { | |
3874 level = 2; | |
3875 } | |
3876 else if(charge > 0.0025) | |
3877 { | |
3878 level = 3; | |
3879 } | |
3880 else if(charge > 0.002) | |
3881 { | |
3882 level = 4; | |
3883 } | |
3884 else if(charge > 0.0015) | |
3885 { | |
3886 level = 5; | |
3887 } | |
3888 else if(charge > 0.001) | |
3889 { | |
3890 level = 6; | |
3891 } | |
3892 else if(charge > 0.0005) | |
3893 { | |
3894 level = 7; | |
3895 } | |
3896 else if(charge > 0.00) | |
3897 { | |
3898 level = 8; | |
3899 } | |
3900 else | |
3901 { | |
3902 level = 10; | |
3903 } | |
3904 if(curIndex < 59) | |
3905 { | |
3906 ChargerLog[curIndex++] = level; | |
3907 } | |
3908 else | |
3909 { | |
3910 memcpy (&ChargerLog[0],&ChargerLog[1],sizeof(ChargerLog) - 1); | |
3911 ChargerLog[curIndex] = level; | |
3912 } | |
3913 if(curIndex > 1) | |
3914 { | |
3915 averageSpeed = ((averageSpeed * (curIndex-1)) + charge) / curIndex; | |
3916 completeSec = (100.0 - stateUsed->lifeData.battery_charge) / averageSpeed; | |
3917 } | |
3918 else | |
3919 { | |
3920 completeSec = 0xffff; | |
3921 } | |
3922 return completeSec; | |
3923 } | |
3924 | |
3925 uint16_t* getChargeLog() | |
3926 { | |
3927 return ChargerLog; | |
3928 } | |
3929 | |
3930 void t7_ChargerView(void) | |
3931 { | |
3932 static float lastCharge = 0.0; | |
3933 float localCharge = 0.0; | |
3934 static uint32_t lastTick = 0; | |
3935 uint32_t curTick = 0; | |
3936 static float speed = 0.0; | |
3937 float deltatime = 0.0; | |
3938 | |
3939 char text[256+50]; | |
3940 uint8_t textpointer = 0; | |
3941 static uint16_t remainingSec = 0; | |
3942 uint16_t hoursto100 = 0; | |
3943 char indicator = '~'; | |
3944 | |
3945 point_t start, stop; | |
3946 | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3947 SWindowGimpStyle wintemp; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3948 SSettings* pSettings; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3949 pSettings = settingsGetPointer(); |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3950 |
672 | 3951 t7cY0free.WindowLineSpacing = 28 + 48 + 14; |
3952 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
3953 t7cY0free.WindowNumberOfTextLines = 3; | |
3954 | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3955 |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3956 if(pSettings->FlipDisplay) |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3957 { |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3958 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3959 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3960 } |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
3961 |
672 | 3962 localCharge = stateUsed->lifeData.battery_charge; |
3963 if(localCharge < 0.0) | |
3964 { | |
3965 localCharge *= -1.0; | |
3966 } | |
3967 | |
3968 if(stateUsed->chargeStatus != CHARGER_off) | |
3969 { | |
3970 if(lastCharge != localCharge) | |
3971 { | |
3972 curTick = HAL_GetTick(); | |
3973 deltatime = (curTick - lastTick); | |
3974 lastTick = curTick; | |
3975 if(lastCharge < localCharge) | |
3976 { | |
3977 speed = (localCharge - lastCharge) * 1000.0 / deltatime; | |
3978 } | |
3979 | |
3980 lastCharge = localCharge; | |
3981 } | |
3982 | |
3983 if(deltatime > 1000) | |
3984 { | |
3985 deltatime = 0; | |
3986 remainingSec = LogDeltaCharge(speed); | |
3987 speed = 0; | |
3988 } | |
3989 } | |
3990 textpointer += snprintf(&text[textpointer],50,"\n\r"); | |
3991 textpointer += snprintf(&text[textpointer],50,"\001%c\n\r",TXT_ChargeHour); | |
3992 | |
3993 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3994 | |
3995 hoursto100 = remainingSec / 3600; /* reduce to hours */ | |
3996 if(hoursto100 < 1) | |
3997 { | |
3998 indicator = '<'; | |
3999 hoursto100 = 1; | |
4000 } | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4001 |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4002 if(!pSettings->FlipDisplay) |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4003 { |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4004 t7cY0free.WindowY0 -= 52; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4005 } |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4006 else |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4007 { |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4008 t7cY0free.WindowY1 += 52; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4009 } |
672 | 4010 |
4011 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->chargeStatus != CHARGER_off)) | |
4012 { | |
4013 snprintf(text,60, | |
4014 "\001%0.2f\n\r" | |
4015 "\001%c%d\n\r" | |
4016 ,stateUsed->lifeData.battery_charge | |
4017 ,indicator | |
4018 ,hoursto100); | |
4019 } | |
4020 else | |
4021 { | |
4022 snprintf(text,60, | |
4023 "\001---\n\r" | |
4024 "\001---\n\r"); | |
4025 } | |
4026 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
4027 | |
4028 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + 50; | |
4029 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE - 100; | |
4030 | |
4031 | |
4032 if(!pSettings->FlipDisplay) | |
4033 { | |
4034 wintemp.top = 480 - t7l1.WindowY0 + 115; | |
4035 wintemp.bottom = wintemp.top + 100; | |
4036 } | |
4037 else | |
4038 { | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4039 wintemp.top = t7l1.WindowY1 + 102; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4040 wintemp.bottom = wintemp.top + 100; |
672 | 4041 } |
4042 | |
4043 start.x = wintemp.left-5; | |
4044 start.y = 90; | |
4045 | |
4046 stop.x = wintemp.right + 5 - start.x; | |
4047 stop.y = 100; | |
4048 GFX_draw_box(&t7screen, start, stop,1, CLUT_Font020); | |
4049 | |
4050 if(stateUsed->chargeStatus != CHARGER_off) | |
4051 { | |
4052 GFX_graph_print(&t7screen, &wintemp, 1,1,0, 10, getChargeLog(), 60, CLUT_Font030, NULL); | |
4053 } | |
4054 else | |
4055 { | |
4056 GFX_graph_print(&t7screen, &wintemp, 1,1,0, 10, getChargeLog(), 60, CLUT_Font031, NULL); | |
4057 } | |
4058 | |
4059 } |