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