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