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