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