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