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