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