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