Mercurial > public > ostc4
annotate Discovery/Src/t7.c @ 310:95928ef3986f cleanup-4
Make dive mode detection more advanced
In commit a09b1855d656, a RTE function was factored out, that was
used to detect dive mode vs. surface mode.
In the hunt for the time difference bug between stopwatch and dive time
some progress was made, but its still not totally right. Add some old
logic back, that seems reasonable.
A pool test after this commit shows some improvement, but still there
is some random difference between stopwatch and dive time. Things like
perfectly in sync for 20 min. surface shortly, and descend again in
the same dive. Now, the was a 1 or 2 second difference.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
author | Jan Mulder <jlmulder@xs4all.nl> |
---|---|
date | Sun, 26 May 2019 10:09:22 +0200 |
parents | 3949781096d4 |
children | 7420ed6c3508 b111fc4250e9 |
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; | |
1837 GFX_write_string(&FontT105,&t7cC,text,1); | |
1838 break; | |
1839 | |
1840 case CVIEW_sensors_mV: | |
1841 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_O2voltage); | |
1842 GFX_write_string(&FontT42,&t7cH,text,0); | |
1843 textpointer = 0; | |
1844 text[textpointer++] = '\030'; | |
1845 for(int i=0;i<3;i++) | |
1846 { | |
1847 if(stateUsed->diveSettings.ppo2sensors_deactivated & (1<<i)) | |
1848 { | |
1849 text[textpointer++] = '\031'; | |
1850 text[textpointer++] = '\001'; | |
1851 text[textpointer++] = '-'; | |
1852 text[textpointer++] = '\n'; | |
1853 text[textpointer++] = '\r'; | |
1854 text[textpointer++] = '\030'; | |
1855 text[textpointer] = 0; | |
1856 } | |
1857 else | |
1858 { | |
1859 if(stateUsed->warnings.sensorOutOfBounds[i]) | |
1860 text[textpointer++] = '\025'; | |
1861 textpointer += snprintf(&text[textpointer],100,"\001%01.1f mV\n\r\030",(stateUsed->lifeData.sensorVoltage_mV[i])); | |
1862 } | |
1863 } | |
1864 t7cC.WindowLineSpacing = 95; | |
1865 t7cC.WindowNumberOfTextLines = 3; | |
1866 text[textpointer] = 0; | |
1867 GFX_write_string(&FontT48,&t7cC,text,1); | |
1868 break; | |
1869 | |
1870 case CVIEW_Compass: | |
1871 default: | |
1872 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE, TXT2BYTE_Compass); | |
1873 GFX_write_string(&FontT42,&t7cH,text,0); | |
1874 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
|
1875 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1876 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1877 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1878 t7cY0free.WindowX0 += 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1879 t7cY0free.WindowY0 = 230; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1880 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1881 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1882 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1883 t7cY0free.WindowX0 -= 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1884 t7cY0free.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1885 t7cY0free.WindowY1 = 250; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1886 } |
38 | 1887 snprintf(text,100,"\030\001%03i`",(uint16_t)stateUsed->lifeData.compass_heading); |
1888 GFX_write_string(&FontT54,&t7cY0free,text,0); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1889 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1890 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1891 t7cY0free.WindowX0 -= 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1892 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1893 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1894 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1895 t7cY0free.WindowX0 += 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1896 } |
38 | 1897 break; |
1898 | |
1899 case CVIEW_Decolist: | |
1900 snprintf(text,100,"\032\f\001 %c%c", TXT_2BYTE, TXT2BYTE_Decolist); | |
1901 GFX_write_string(&FontT42,&t7cH,text,0); | |
1902 | |
1903 const SDecoinfo * pDecoinfo; | |
1904 uint8_t depthNext, depthLast, depthSecond, depthInc; | |
1905 | |
1906 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
1907 pDecoinfo = &stateUsed->decolistBuehlmann; | |
1908 else | |
1909 pDecoinfo = &stateUsed->decolistVPM; | |
1910 | |
1911 depthLast = (uint8_t)(stateUsed->diveSettings.last_stop_depth_bar * 10); | |
1912 depthSecond = (uint8_t)(stateUsed->diveSettings.input_second_to_last_stop_depth_bar * 10); | |
1913 depthInc = (uint8_t)(stateUsed->diveSettings.input_next_stop_increment_depth_bar * 10); | |
1914 | |
1915 if(settingsGetPointer()->nonMetricalSystem) | |
1916 { | |
1917 depthLast = (uint8_t)unit_depth_integer(depthLast); | |
1918 depthSecond = (uint8_t)unit_depth_integer(depthSecond); | |
1919 depthInc = (uint8_t)unit_depth_integer(depthInc); | |
1920 } | |
1921 | |
1922 for(start=DECOINFO_STRUCT_MAX_STOPS-1; start>0; start--) | |
1923 if(pDecoinfo->output_stop_length_seconds[start]) break; | |
1924 start -= 6; | |
1925 if(start < 0) start = 0; | |
1926 | |
1927 textpointer = 0; | |
1928 for(int i=start;i<6+start;i++) | |
1929 { | |
1930 if(i == 0) | |
1931 depthNext = depthLast; | |
1932 else | |
1933 depthNext = depthSecond + (( i - 1 )* depthInc); | |
1934 | |
1935 if(pDecoinfo->output_stop_length_seconds[i]) | |
1936 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); | |
1937 else | |
1938 textpointer += snprintf(&text[textpointer],20,"\031\034 %2u\016\016%c%c\017\n\r",depthNext, unit_depth_char1(), unit_depth_char2()); | |
1939 if(textpointer > 200) break; | |
1940 } | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1941 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1942 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1943 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1944 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1945 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1946 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1947 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1948 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1949 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1950 |
38 | 1951 t7cY0free.WindowLineSpacing = 48; |
1952 t7cY0free.WindowNumberOfTextLines = 6; | |
1953 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
1954 break; | |
1955 } | |
1956 } | |
1957 | |
1958 | |
1959 | |
1960 /* DIVE MODE | |
1961 */ | |
1962 void t7_refresh_divemode(void) | |
1963 { | |
1964 char TextL1[TEXTSIZE]; | |
1965 char TextL2[TEXTSIZE]; | |
1966 | |
1967 char TextR1[TEXTSIZE]; | |
1968 char TextR2[TEXTSIZE]; | |
1969 char TextR3[TEXTSIZE]; | |
1970 | |
1971 char TextC1[2*TEXTSIZE]; | |
1972 char TextC2[TEXTSIZE]; | |
1973 uint8_t textPointer; | |
1974 | |
1975 point_t start, stop; | |
1976 uint8_t color; | |
1977 int textlength; | |
1978 | |
1979 uint16_t nextstopLengthSeconds = 0; | |
1980 uint8_t nextstopDepthMeter = 0; | |
1981 uint8_t oxygen_percentage = 0; | |
1982 SDivetime Divetime = {0,0,0, 0}; | |
1983 SDivetime SafetyStopTime = {0,0,0,0}; | |
1984 SDivetime TimeoutTime = {0,0,0,0}; | |
1985 uint8_t customview_warnings = 0; | |
1986 const SDecoinfo * pDecoinfo; | |
1987 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1988 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1989 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1990 |
38 | 1991 Divetime.Total = stateUsed->lifeData.dive_time_seconds_without_surface_time; |
1992 Divetime.Minutes = Divetime.Total / 60; | |
1993 Divetime.Seconds = Divetime.Total - ( Divetime.Minutes * 60 ); | |
1994 | |
1995 SafetyStopTime.Total = timer_Safetystop_GetCountDown(); | |
1996 SafetyStopTime.Minutes = SafetyStopTime.Total / 60; | |
1997 SafetyStopTime.Seconds = SafetyStopTime.Total - (SafetyStopTime.Minutes * 60); | |
1998 | |
1999 TimeoutTime.Total = settingsGetPointer()->timeoutDiveReachedZeroDepth - stateUsed->lifeData.counterSecondsShallowDepth; | |
2000 if(TimeoutTime.Total > settingsGetPointer()->timeoutDiveReachedZeroDepth) | |
2001 { | |
2002 TimeoutTime.Total = 0; | |
2003 } | |
2004 TimeoutTime.Minutes = TimeoutTime.Total / 60; | |
2005 TimeoutTime.Seconds = TimeoutTime.Total - (TimeoutTime.Minutes * 60); | |
2006 | |
2007 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2008 pDecoinfo = &stateUsed->decolistBuehlmann; | |
2009 else | |
2010 pDecoinfo = &stateUsed->decolistVPM; | |
2011 | |
2012 if(pDecoinfo->output_time_to_surface_seconds) | |
2013 { | |
2014 tHome_findNextStop(pDecoinfo->output_stop_length_seconds, &nextstopDepthMeter, &nextstopLengthSeconds); | |
2015 } | |
2016 else | |
2017 { | |
2018 nextstopDepthMeter = 0; | |
2019 nextstopLengthSeconds = 0; | |
2020 } | |
2021 | |
2022 /* depth */ | |
174
ecb71521d004
Bugfix: make max depth move with current depth (part 2)
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
2023 float depth = unit_depth_float(stateUsed->lifeData.depth_meter); |
38 | 2024 |
2025 if(depth <= 0.3f) | |
2026 depth = 0; | |
2027 | |
2028 if(settingsGetPointer()->nonMetricalSystem) | |
2029 snprintf(TextL1,TEXTSIZE,"\032\f[feet]"); | |
2030 else | |
2031 snprintf(TextL1,TEXTSIZE,"\032\f%c",TXT_Depth); | |
2032 GFX_write_string(&FontT24,&t7l1,TextL1,0); | |
2033 | |
2034 if((stateUsed->lifeData.ascent_rate_meter_per_min > 8) || (stateUsed->lifeData.ascent_rate_meter_per_min < -10)) | |
2035 { | |
2036 snprintf(TextL1,TEXTSIZE,"\f\002%.0f %c%c/min " | |
2037 , unit_depth_float(stateUsed->lifeData.ascent_rate_meter_per_min) | |
2038 , unit_depth_char1() | |
2039 , unit_depth_char2() | |
2040 ); | |
2041 GFX_write_string(&FontT24,&t7l1,TextL1,0); | |
2042 } | |
2043 | |
2044 if( depth < 100) | |
2045 snprintf(TextL1,TEXTSIZE,"\020%01.1f",depth); | |
2046 else | |
2047 snprintf(TextL1,TEXTSIZE,"\020%01.0f",depth); | |
2048 | |
2049 t7_colorscheme_mod(TextL1); | |
2050 GFX_write_string(&FontT144,&t7l1,TextL1,1); | |
2051 | |
2052 /* max depth */ | |
2053 snprintf(TextL2,TEXTSIZE,"\032\f%c",TXT_MaxDepth); | |
2054 GFX_write_string(&FontT42,&t7l2,TextL2,0); | |
2055 | |
2056 if(unit_depth_float(stateUsed->lifeData.max_depth_meter) < 100) | |
2057 snprintf(TextL2,TEXTSIZE,"\020%01.1f",unit_depth_float(stateUsed->lifeData.max_depth_meter)); | |
2058 else | |
2059 snprintf(TextL2,TEXTSIZE,"\020%01.0f",unit_depth_float(stateUsed->lifeData.max_depth_meter)); | |
2060 | |
2061 t7_colorscheme_mod(TextL2); | |
2062 GFX_write_string(&FontT105,&t7l2,TextL2,1); | |
2063 | |
187
485c5135cf7f
cleanup: forgotten cleanup from 9da7dd50e2ec
Jan Mulder <jlmulder@xs4all.nl>
parents:
178
diff
changeset
|
2064 /* ascent rate graph */ |
38 | 2065 if(stateUsed->lifeData.ascent_rate_meter_per_min > 0) |
2066 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2067 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2068 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2069 start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2070 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2071 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2072 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2073 start.y = t7l3.WindowY0 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2074 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2075 |
38 | 2076 for(int i = 0; i<4;i++) |
2077 { | |
2078 start.y += 5*6; | |
2079 stop.y = start.y; | |
2080 start.x = CUSTOMBOX_LINE_LEFT - 1; | |
2081 stop.x = start.x - 17; | |
2082 GFX_draw_line(&t7screen, start, stop, 0); | |
2083 // start.x = CUSTOMBOX_LINE_RIGHT + 2; old right too | |
2084 // stop.x = start.x + 17; | |
2085 // GFX_draw_line(&t7screen, start, stop, 0); | |
2086 } | |
2087 // new thick bar design Sept. 2015 | |
2088 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 3 - 5; | |
2089 stop.x = start.x; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2090 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2091 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2092 start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2093 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2094 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2095 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2096 start.y = t7l3.WindowY0 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2097 } |
38 | 2098 stop.y = start.y + (uint16_t)(stateUsed->lifeData.ascent_rate_meter_per_min * 6); |
2099 stop.y -= 3; // wegen der Liniendicke von 12 anstelle von 9 | |
2100 if(stop.y >= 470) | |
2101 stop.y = 470; | |
2102 start.y += 7; // starte etwas weiter oben | |
2103 if(stateUsed->lifeData.ascent_rate_meter_per_min <= 10) | |
2104 color = CLUT_EverythingOkayGreen; | |
2105 else | |
2106 if(stateUsed->lifeData.ascent_rate_meter_per_min <= 15) | |
2107 color = CLUT_WarningYellow; | |
2108 else | |
2109 color = CLUT_WarningRed; | |
2110 | |
2111 GFX_draw_thick_line(12,&t7screen, start, stop, color); | |
2112 } | |
2113 //snprintf(TextL2,TEXTSIZE,"\f%.1f m/min",stateUsed->lifeData.ascent_rate_meter_per_min); | |
2114 | |
2115 /* divetime */ | |
2116 if(stateUsed->lifeData.counterSecondsShallowDepth) | |
2117 { | |
2118 snprintf(TextR1,TEXTSIZE,"\f\002\136 %u:%02u",TimeoutTime.Minutes, TimeoutTime.Seconds); | |
2119 GFX_write_string(&FontT42,&t7r1,TextR1,0); | |
2120 } | |
2121 else | |
2122 { | |
2123 snprintf(TextR1,TEXTSIZE,"\032\f\002%c",TXT_Divetime); | |
2124 GFX_write_string(&FontT42,&t7r1,TextR1,0); | |
2125 } | |
2126 | |
2127 if(Divetime.Minutes < 1000) | |
2128 snprintf(TextR1,TEXTSIZE,"\020\016\002%u:%02u",Divetime.Minutes, Divetime.Seconds); | |
2129 else | |
2130 snprintf(TextR1,TEXTSIZE,"\020\016\002%u'",Divetime.Minutes); | |
2131 t7_colorscheme_mod(TextR1); | |
2132 GFX_write_string(&FontT105,&t7r1,TextR1,1); | |
2133 | |
2134 /* next deco stop */ | |
2135 if(nextstopDepthMeter) | |
2136 { | |
2137 snprintf(TextR2,TEXTSIZE,"\032\f\002%c",TXT_Decostop); | |
2138 GFX_write_string(&FontT42,&t7r2,TextR2,0); | |
2139 textlength = snprintf(TextR2,TEXTSIZE,"\020\002%u%c%c %u'" | |
2140 , unit_depth_integer(nextstopDepthMeter) | |
2141 , unit_depth_char1_T105() | |
2142 , unit_depth_char2_T105() | |
2143 , (nextstopLengthSeconds+59)/60); | |
2144 t7_colorscheme_mod(TextR2); | |
2145 if(time_elapsed_ms(pDecoinfo->tickstamp, HAL_GetTick()) > MAX_AGE_DECOINFO_MS) | |
2146 TextR2[0] = '\021'; | |
2147 if(textlength <= 9) | |
2148 GFX_write_string(&FontT105,&t7r2,TextR2,1); | |
2149 else | |
2150 GFX_write_string(&FontT54,&t7r2,TextR2,1); | |
2151 } | |
2152 else if(SafetyStopTime.Total && (depth > timer_Safetystop_GetDepthUpperLimit())) | |
2153 { | |
2154 snprintf(TextR2,TEXTSIZE,"\032\f\002%c%c",TXT_2BYTE,TXT2BYTE_SafetyStop2); | |
2155 GFX_write_string(&FontT42,&t7r2,TextR2,0); | |
2156 snprintf(TextR2,TEXTSIZE,"\020\016\002%u:%02u",SafetyStopTime.Minutes,SafetyStopTime.Seconds); | |
2157 t7_colorscheme_mod(TextR2); | |
2158 GFX_write_string(&FontT105,&t7r2,TextR2,1); | |
2159 } | |
2160 | |
2161 /* tts - option 1 | |
2162 * ndl - option 2 | |
2163 * empty - option 3 */ | |
2164 if(pDecoinfo->output_time_to_surface_seconds) | |
2165 { | |
2166 snprintf(TextR3,TEXTSIZE,"\032\f\002%c",TXT_TTS); | |
2167 GFX_write_string(&FontT42,&t7r3,TextR3,0); | |
2168 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
|
2169 snprintf(TextR3,TEXTSIZE,"\020\002%i'",(pDecoinfo->output_time_to_surface_seconds + 59)/ 60); |
38 | 2170 else |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2171 snprintf(TextR3,TEXTSIZE,"\020\002%ih",(pDecoinfo->output_time_to_surface_seconds + 59)/ 3600); |
38 | 2172 t7_colorscheme_mod(TextR3); |
2173 if(time_elapsed_ms(pDecoinfo->tickstamp, HAL_GetTick()) > MAX_AGE_DECOINFO_MS) | |
2174 TextR2[0] = '\021'; | |
2175 GFX_write_string(&FontT105,&t7r3,TextR3,1); | |
2176 } | |
2177 else if(pDecoinfo->output_ndl_seconds) | |
2178 { | |
2179 snprintf(TextR3,TEXTSIZE,"\032\f\002%c",TXT_Nullzeit); | |
2180 GFX_write_string(&FontT42,&t7r3,TextR3,0); | |
2181 if(pDecoinfo->output_ndl_seconds < 1000 * 60) | |
2182 snprintf(TextR3,TEXTSIZE,"\020\002%i'",pDecoinfo->output_ndl_seconds/60); | |
2183 else | |
2184 snprintf(TextR3,TEXTSIZE,"\020\002%ih",pDecoinfo->output_ndl_seconds/3600); | |
2185 t7_colorscheme_mod(TextR3); | |
2186 if(time_elapsed_ms(pDecoinfo->tickstamp, HAL_GetTick()) > MAX_AGE_DECOINFO_MS) | |
2187 TextR2[0] = '\021'; | |
2188 GFX_write_string(&FontT105,&t7r3,TextR3,1); | |
2189 } | |
2190 | |
2191 /* Menu Selection (and gas mix) */ | |
2192 if(get_globalState() == StDMGAS) | |
2193 { | |
2194 textPointer = 0; | |
2195 TextR1[textPointer++] = '\a'; | |
2196 // TextR1[textPointer++] = '\f'; | |
2197 TextR1[textPointer++] = '\001'; | |
2198 TextR1[textPointer++] = ' '; | |
2199 textPointer += tHome_gas_writer(stateUsed->diveSettings.gas[actualBetterGasId()].oxygen_percentage,stateUsed->diveSettings.gas[actualBetterGasId()].helium_percentage,&TextR1[textPointer]); | |
2200 TextR1[textPointer++] = '?'; | |
2201 TextR1[textPointer++] = ' '; | |
2202 TextR1[textPointer++] = 0; | |
2203 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2204 } | |
2205 else if(get_globalState() == StDMSPT) | |
2206 { | |
2207 textPointer = 0; | |
2208 TextR1[textPointer++] = '\a'; | |
2209 TextR1[textPointer++] = '\001'; | |
2210 TextR1[textPointer++] = ' '; | |
2211 textPointer += snprintf(&TextR1[textPointer],5,"%f01.2",((float)(stateUsed->diveSettings.setpoint[actualBetterSetpointId()].setpoint_cbar))/100); | |
2212 TextR1[textPointer++] = '?'; | |
2213 TextR1[textPointer++] = ' '; | |
2214 TextR1[textPointer++] = 0; | |
2215 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2216 } | |
2217 else if(get_globalState() == StDMENU) | |
2218 { | |
2219 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveMenuQ); | |
2220 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2221 } | |
2222 else if(get_globalState() == StDSIM1) | |
2223 { | |
2224 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveQuitQ); | |
2225 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2226 } | |
2227 else if(get_globalState() == StDSIM2) | |
2228 { | |
2229 if(settingsGetPointer()->nonMetricalSystem) | |
2230 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-3.33ft "); | |
2231 else | |
2232 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-1m "); | |
2233 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2234 | |
2235 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2236 , unit_depth_integer(simulation_get_aim_depth()) | |
2237 , unit_depth_char1() | |
2238 , unit_depth_char2() | |
2239 ); | |
2240 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2241 | |
2242 } | |
2243 else if(get_globalState() == StDSIM3) | |
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 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2251 , unit_depth_integer(simulation_get_aim_depth()) | |
2252 , unit_depth_char1() | |
2253 , unit_depth_char2() | |
2254 ); | |
2255 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2256 } | |
2257 else if(get_globalState() == StDSIM4) | |
2258 { | |
2259 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+5' "); | |
2260 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2261 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2262 , unit_depth_integer(simulation_get_aim_depth()) | |
2263 , unit_depth_char1() | |
2264 , unit_depth_char2() | |
2265 ); | |
2266 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2267 } | |
2268 else | |
2269 { | |
2270 /* gas mix */ | |
2271 oxygen_percentage = 100; | |
2272 oxygen_percentage -= stateUsed->lifeData.actualGas.nitrogen_percentage; | |
2273 oxygen_percentage -= stateUsed->lifeData.actualGas.helium_percentage; | |
2274 | |
2275 textPointer = 0; | |
2276 TextC2[textPointer++] = '\020'; | |
2277 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
2278 { | |
2279 TextC2[textPointer++] = '\a'; | |
2280 } | |
2281 else | |
2282 { | |
2283 float fPpO2limitHigh, fPpO2now; | |
2284 | |
2285 if(actualLeftMaxDepth(stateUsed)) | |
2286 fPpO2limitHigh = settingsGetPointer()->ppO2_max_deco; | |
2287 else | |
2288 fPpO2limitHigh = settingsGetPointer()->ppO2_max_std; | |
2289 | |
2290 fPpO2now = (stateUsed->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * oxygen_percentage; | |
2291 | |
2292 if((fPpO2now > fPpO2limitHigh) || (fPpO2now < (float)(settingsGetPointer()->ppO2_min))) | |
2293 TextC2[textPointer++] = '\025'; | |
2294 } | |
2295 TextC2[textPointer++] = '\002'; | |
2296 textPointer += tHome_gas_writer(oxygen_percentage,stateUsed->lifeData.actualGas.helium_percentage,&TextC2[textPointer]); | |
2297 | |
2298 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
2299 { | |
2300 if(TextC2[0] == '\020') | |
2301 { | |
2302 TextC2[0] = '\004'; // NOP | |
2303 } | |
2304 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
2305 } | |
2306 else | |
2307 { | |
2308 t7_colorscheme_mod(TextC2); | |
2309 GFX_write_string(&FontT48,&t7c2,TextC2,0); // T54 has only numbers | |
2310 } | |
2311 | |
2312 if(stateUsed->diveSettings.ccrOption) | |
2313 { | |
2314 if(stateUsed->diveSettings.diveMode == DIVEMODE_CCR) | |
2315 { | |
2316 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2317 if(stateUsed->warnings.betterSetpoint && warning_count_high_time && (stateUsed->diveSettings.diveMode == DIVEMODE_CCR)) | |
2318 { | |
2319 TextC2[0] = '\a'; // inverse instead of color \020 | |
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); | |
2326 } | |
2327 } | |
2328 } | |
2329 else if(settingsGetPointer()->alwaysShowPPO2) | |
2330 { | |
2331 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2332 t7_colorscheme_mod(TextC2); | |
2333 GFX_write_string(&FontT48,&t7c2,TextC2,0); | |
2334 } | |
2335 } | |
2336 | |
2337 /* algorithm, ccr, bailout and battery */ | |
2338 /* and permanent warnings (CNS) */ | |
2339 | |
2340 if((stateUsed->warnings.cnsHigh) && display_count_high_time) | |
2341 { | |
2342 TextC2[0] = '\f'; | |
2343 TextC2[1] = TXT_2BYTE; | |
2344 TextC2[2] = TXT2BYTE_WarnCnsHigh; | |
2345 TextC2[3] = 0; | |
2346 GFX_write_string_color(&FontT48,&t7c1,TextC2,0,CLUT_WarningRed); | |
2347 } | |
2348 else | |
2349 { | |
2350 if(stateUsed->warnings.aGf) | |
2351 { | |
2352 GFX_write_string_color(&FontT48,&t7c1,"\f" "aGF",0,CLUT_WarningYellow); | |
2353 } | |
2354 else if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2355 { | |
2356 GFX_write_string(&FontT48,&t7c1,"\027\f" "GF",0); | |
2357 } | |
2358 else | |
2359 { | |
2360 GFX_write_string(&FontT48,&t7c1,"\027\f" "VPM",0); | |
2361 } | |
2362 | |
2363 if(stateUsed->diveSettings.diveMode == DIVEMODE_CCR) | |
2364 GFX_write_string(&FontT24,&t7c1,"\027\f\002" "CCR",0); | |
2365 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80" "CCR",0); | |
2366 else | |
2367 if(stateUsed->diveSettings.ccrOption) | |
2368 GFX_write_string(&FontT24,&t7c1,"\f\002\024" "Bailout",0); | |
2369 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80\024" "Bailout",0); | |
2370 } | |
2371 TextC1[0] = '\020'; | |
2372 TextC1[1] = '3'; | |
2373 TextC1[2] = '1'; | |
2374 TextC1[3] = '1'; | |
2375 TextC1[4] = '1'; | |
2376 TextC1[5] = '1'; | |
2377 TextC1[6] = '1'; | |
2378 TextC1[7] = '1'; | |
2379 TextC1[8] = '1'; | |
2380 TextC1[9] = '1'; | |
2381 TextC1[10] = '1'; | |
2382 TextC1[11] = '1'; | |
2383 TextC1[12] = '0'; | |
2384 TextC1[13] = 0; | |
2385 | |
2386 for(int i=1;i<=10;i++) | |
2387 { | |
2388 if( stateUsed->lifeData.battery_charge > (9 * i)) | |
2389 TextC1[i+1] += 1; | |
2390 } | |
2391 | |
2392 if(stateUsed->warnings.lowBattery) | |
2393 { | |
2394 TextC1[0] = '\025'; | |
2395 if(warning_count_high_time) | |
2396 { | |
2397 for(int i=2;i<=11;i++) | |
2398 TextC1[i] = '1'; | |
2399 } | |
2400 else | |
2401 { | |
2402 TextC1[2] = '2'; | |
2403 } | |
2404 GFX_write_string(&Batt24,&t7batt,TextC1,0); | |
2405 | |
2406 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
2407 { | |
2408 snprintf(TextC1,16,"\004\025\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
2409 if(warning_count_high_time) | |
2410 TextC1[0] = '\a'; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2411 GFX_write_string(&FontT24,&t7voltage,TextC1,0); |
38 | 2412 } |
2413 } | |
2414 else | |
2415 { | |
2416 t7_colorscheme_mod(TextC1); | |
2417 GFX_write_string(&Batt24,&t7batt,TextC1,0); | |
2418 | |
2419 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
2420 { | |
2421 snprintf(TextC1,16,"\020\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
2422 t7_colorscheme_mod(TextC1); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2423 GFX_write_string(&FontT24,&t7voltage,TextC1,0); // t7batt |
38 | 2424 } |
2425 } | |
2426 | |
2427 /* customizable left lower corner */ | |
2428 t7_refresh_divemode_userselected_left_lower_corner(); | |
2429 | |
2430 | |
2431 /* customview - option 1 | |
2432 * warning - option 2 */ | |
2433 if(stateUsed->warnings.numWarnings) | |
2434 customview_warnings = t7_test_customview_warnings(); | |
2435 | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
2436 background.pointer = 0; |
38 | 2437 if(customview_warnings && warning_count_high_time) |
2438 t7_show_customview_warnings(); | |
2439 else | |
2440 t7_refresh_customview(); | |
2441 | |
2442 /* the frame */ | |
2443 draw_frame(1,1, CLUT_DIVE_pluginbox, CLUT_DIVE_FieldSeperatorLines); | |
2444 } | |
2445 | |
2446 void t7_set_field_to_primary(void) | |
2447 { | |
2448 if(stateUsed->mode == MODE_DIVE) | |
2449 selection_custom_field = settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary; | |
2450 } | |
2451 | |
2452 void t7_change_field(void) | |
2453 { | |
2454 const uint8_t minVal = 0; | |
2455 const uint8_t maxValGF = 8; | |
2456 const uint8_t maxValVPM = 7; | |
2457 uint8_t maxNow = maxValGF; | |
2458 | |
2459 selection_custom_field++; | |
2460 | |
2461 if(stateUsed->diveSettings.deco_type.ub.standard == VPM_MODE) | |
2462 maxNow = maxValVPM; | |
2463 | |
2464 if(selection_custom_field > maxNow) | |
2465 selection_custom_field = minVal; | |
2466 } | |
2467 | |
2468 | |
2469 void t7_refresh_divemode_userselected_left_lower_corner(void) | |
2470 { | |
2471 if(!selection_custom_field) | |
2472 return; | |
2473 | |
2474 char headerText[10]; | |
2475 char text[TEXTSIZE]; | |
2476 uint8_t textpointer = 0; | |
2477 _Bool tinyHeaderFont = 0; | |
2478 uint8_t line = 0; | |
2479 | |
2480 SDivetime Stopwatch = {0,0,0,0}; | |
2481 float fAverageDepth, fAverageDepthAbsolute; | |
2482 const SDecoinfo * pDecoinfoStandard; | |
2483 const SDecoinfo * pDecoinfoFuture; | |
2484 float fCNS; | |
2485 float temperature; | |
2486 | |
2487 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2488 { | |
2489 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
2490 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
2491 } | |
2492 else | |
2493 { | |
2494 pDecoinfoStandard = &stateUsed->decolistVPM; | |
2495 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
2496 } | |
2497 | |
2498 Stopwatch.Total = timer_Stopwatch_GetTime(); | |
2499 Stopwatch.Minutes = Stopwatch.Total / 60; | |
2500 Stopwatch.Seconds = Stopwatch.Total - ( Stopwatch.Minutes * 60 ); | |
2501 fAverageDepth = timer_Stopwatch_GetAvarageDepth_Meter(); | |
2502 fAverageDepthAbsolute = stateUsed->lifeData.average_depth_meter; | |
2503 | |
2504 headerText[0] = '\032'; | |
2505 headerText[1] = '\f'; | |
2506 | |
2507 switch(selection_custom_field) | |
2508 { | |
2509 /* Temperature */ | |
2510 case 1: | |
2511 default: | |
189
8b8074080d7b
Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents:
187
diff
changeset
|
2512 temperature = unit_temperature_float(stateUsed->lifeData.temperature_celsius); |
38 | 2513 headerText[2] = TXT_Temperature; |
2514 textpointer = snprintf(text,TEXTSIZE,"\020\016%01.1f \140",temperature); // "\016\016%01.1f `" + C or F | |
2515 if(settingsGetPointer()->nonMetricalSystem == 0) | |
2516 text[textpointer++] = 'C'; | |
2517 else | |
2518 text[textpointer++] = 'F'; | |
2519 text[textpointer++] = 0; | |
2520 tinyHeaderFont = 0; | |
2521 break; | |
2522 | |
2523 /* Average Depth */ | |
2524 case 2: | |
2525 headerText[2] = TXT_AvgDepth; | |
2526 if(settingsGetPointer()->nonMetricalSystem) | |
2527 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(fAverageDepthAbsolute)); | |
2528 else | |
2529 snprintf(text,TEXTSIZE,"\020%01.1f",fAverageDepthAbsolute); | |
2530 break; | |
2531 | |
2532 /* ppO2 */ | |
2533 case 3: | |
2534 headerText[2] = TXT_ppO2; | |
2535 snprintf(text,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2536 break; | |
2537 | |
2538 /* Stop Uhr */ | |
2539 case 4: | |
2540 headerText[2] = TXT_Stopwatch; | |
2541 if(settingsGetPointer()->nonMetricalSystem) | |
2542 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.0f",Stopwatch.Minutes, Stopwatch.Seconds,unit_depth_float(fAverageDepth)); | |
2543 else | |
2544 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.1f",Stopwatch.Minutes, Stopwatch.Seconds,fAverageDepth); | |
2545 tinyHeaderFont = 1; | |
2546 line = 1; | |
2547 break; | |
2548 | |
2549 /* Ceiling */ | |
2550 case 5: | |
2551 headerText[2] = TXT_Ceiling; | |
2552 if((pDecoinfoStandard->output_ceiling_meter > 99.9f) || (settingsGetPointer()->nonMetricalSystem)) | |
2553 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); | |
2554 else | |
2555 snprintf(text,TEXTSIZE,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); | |
2556 break; | |
2557 | |
2558 /* Future TTS */ | |
2559 case 6: | |
2560 headerText[2] = TXT_FutureTTS; | |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2561 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
|
2562 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
|
2563 else |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2564 snprintf(text,TEXTSIZE,"\020\016\016@+%u'\n\r" "%ih TTS",settingsGetPointer()->future_TTS, (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
38 | 2565 tinyHeaderFont = 1; |
2566 line = 1; | |
2567 break; | |
2568 | |
2569 /* CNS */ | |
2570 case 7: | |
2571 headerText[2] = TXT_CNS; | |
2572 fCNS = stateUsed->lifeData .cns; | |
2573 if(fCNS > 999) | |
2574 fCNS = 999; | |
2575 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",fCNS); | |
2576 break; | |
2577 | |
2578 /* actual GF */ | |
2579 case 8: | |
2580 headerText[2] = TXT_ActualGradient; | |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
2581 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",100 * pDecoinfoStandard->super_saturation); |
38 | 2582 break; |
2583 } | |
2584 headerText[3] = 0; | |
2585 | |
2586 if(tinyHeaderFont) | |
2587 GFX_write_string(&FontT24,&t7l3,headerText,0); | |
2588 else | |
2589 GFX_write_string(&FontT42,&t7l3,headerText,0); | |
2590 | |
2591 t7_colorscheme_mod(text); | |
2592 GFX_write_string(&FontT105,&t7l3,text,line); | |
2593 } | |
2594 | |
2595 /* Private functions ---------------------------------------------------------*/ | |
2596 | |
2597 uint8_t t7_customtextPrepare(char * text) | |
2598 { | |
2599 uint8_t i, j, textptr, lineCount; | |
2600 char nextChar; | |
2601 | |
2602 textptr = 0; | |
2603 lineCount = 0; | |
2604 | |
2605 text[textptr++] = TXT_MINIMAL; | |
2606 | |
2607 j = 0; | |
2608 i = 0; | |
2609 do | |
2610 { | |
2611 j += i; | |
2612 i = 0; | |
2613 do | |
2614 { | |
2615 nextChar = settingsGetPointer()->customtext[i+j]; | |
2616 i++; | |
2617 if((!nextChar) || (nextChar =='\n') || (nextChar =='\r')) | |
2618 break; | |
2619 text[textptr++] = nextChar; | |
2620 } while (i < 12); | |
2621 | |
2622 if(!nextChar) | |
2623 break; | |
2624 | |
2625 if(lineCount < 3) | |
2626 { | |
2627 text[textptr++] = '\n'; | |
2628 text[textptr++] = '\r'; | |
2629 } | |
2630 lineCount++; | |
2631 for(uint8_t k=0;k<2;k++) | |
2632 { | |
2633 nextChar = settingsGetPointer()->customtext[i+j+k]; | |
2634 if((nextChar =='\n') || (nextChar =='\r')) | |
2635 i++; | |
2636 else | |
2637 break; | |
2638 } | |
2639 | |
2640 } while (lineCount < 4); | |
2641 | |
2642 text[textptr] = 0; | |
2643 return lineCount; | |
2644 } | |
2645 | |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2646 static void t7_colorscheme_mod(char *text) { |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2647 char *p = text; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2648 while (*p) { |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2649 if ((*p == '\020') && !GFX_is_colorschemeDiveStandard()) |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2650 *p = '\027'; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2651 p++; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2652 } |
38 | 2653 } |
2654 | |
2655 void draw_frame(_Bool PluginBoxHeader, _Bool LinesOnTheSides, uint8_t colorBox, uint8_t colorLinesOnTheSide) | |
2656 { | |
2657 point_t LeftLow, WidthHeight; | |
2658 point_t start, stop; | |
2659 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2660 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2661 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2662 |
38 | 2663 // plugin box |
2664 LeftLow.x = CUSTOMBOX_LINE_LEFT; | |
2665 WidthHeight.x = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_LINE_LEFT; | |
2666 LeftLow.y = 60; | |
2667 WidthHeight.y = 440 - LeftLow.y; | |
2668 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, colorBox); | |
2669 | |
2670 if(PluginBoxHeader) | |
2671 { | |
2672 // plugin box - header | |
2673 start.x = CUSTOMBOX_LINE_LEFT; | |
2674 stop.x = CUSTOMBOX_LINE_RIGHT; | |
2675 stop.y = start.y = 440 - 60; | |
2676 GFX_draw_line(&t7screen, start, stop, colorBox); | |
2677 } | |
2678 | |
2679 if(LinesOnTheSides) | |
2680 { | |
2681 // aufteilung links | |
2682 start.x = 0; | |
2683 stop.x = CUSTOMBOX_LINE_LEFT; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2684 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2685 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2686 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2687 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2688 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2689 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2690 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2691 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2692 |
38 | 2693 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2694 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2695 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2696 stop.y = start.y = t7l2.WindowY0 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2697 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2698 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2699 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2700 stop.y = start.y = 480 - t7l2.WindowY1 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2701 } |
38 | 2702 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
2703 | |
2704 // aufteilung rechts | |
2705 start.x = CUSTOMBOX_LINE_RIGHT; | |
2706 stop.x = 799; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2707 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2708 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2709 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2710 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2711 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2712 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2713 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2714 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2715 |
38 | 2716 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2717 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2718 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2719 stop.y = start.y = t7l2.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2720 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2721 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2722 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2723 stop.y = start.y = 480 - t7l2.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2724 } |
38 | 2725 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
2726 } | |
2727 } | |
2728 | |
2729 | |
2730 /* Compass like TCOS shellfish | |
2731 * input is 0 to 359 | |
2732 * 2 px / 1 degree | |
2733 * Range is 148 degree with CUSTOMBOX_SPACE_INSIDE = 296 | |
2734 * one side is 74 degree (less than 90 degree) | |
2735 * internal 360 + 180 degree of freedom | |
2736 * use positive values only, shift by 360 below 90 mid position | |
2737 */ | |
2738 | |
2739 | |
2740 point_t t7_compass_circle(uint8_t id, uint16_t degree) | |
2741 { | |
2742 float fCos, fSin; | |
2743 const float piMult = ((2 * 3.14159) / 360); | |
2744 // const int radius[4] = {95,105,115,60}; | |
2745 const int radius[4] = {95,105,115,100}; | |
2746 const point_t offset = {.x = 400, .y = 250}; | |
2747 | |
2748 static point_t r[4][360] = { 0 }; | |
2749 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2750 if(r[0][0].y == 0) /* calc table at first call only */ |
38 | 2751 { |
2752 for(int i=0;i<360;i++) | |
2753 { | |
2754 fCos = cos(i * piMult); | |
2755 fSin = sin(i * piMult); | |
2756 for(int j=0;j<4;j++) | |
2757 { | |
2758 r[j][i].x = offset.x + (int)(fSin * radius[j]); | |
2759 r[j][i].y = offset.y + (int)(fCos * radius[j]); | |
2760 } | |
2761 } | |
2762 } | |
2763 if(id > 3) id = 0; | |
2764 if(degree > 359) degree = 0; | |
2765 return r[id][degree]; | |
2766 } | |
2767 | |
2768 /* range should be 0 to 30 bar if 300 meter with 100% of nitrogen or helium | |
2769 * T24 is 28 high | |
2770 */ | |
2771 void t7_tissues(const SDiveState * pState) | |
2772 { | |
2773 point_t start, change, stop; | |
2774 float value; | |
2775 uint16_t front, cns100pixel; | |
2776 char text[256]; | |
2777 uint8_t textpointer = 0; | |
2778 uint8_t color; | |
2779 | |
2780 float percent_N2; | |
2781 float percent_He; | |
2782 float partial_pressure_N2; | |
2783 float partial_pressure_He; | |
2784 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2785 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2786 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2787 |
38 | 2788 |
2789 /* N2 */ | |
2790 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2791 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2792 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2793 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2794 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2795 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2796 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2797 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2798 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2799 } |
38 | 2800 t7cY0free.WindowNumberOfTextLines = 3; |
2801 | |
2802 text[textpointer++] = '\030'; | |
2803 text[textpointer++] = TXT_2BYTE; | |
2804 text[textpointer++] = TXT2BYTE_Nitrogen; | |
2805 text[textpointer++] = '\n'; | |
2806 text[textpointer++] = '\r'; | |
2807 text[textpointer++] = TXT_2BYTE; | |
2808 text[textpointer++] = TXT2BYTE_Helium; | |
2809 text[textpointer++] = '\n'; | |
2810 text[textpointer++] = '\r'; | |
2811 text[textpointer++] = TXT_2BYTE; | |
2812 text[textpointer++] = TXT2BYTE_CNS; | |
2813 text[textpointer++] = 0; | |
2814 | |
2815 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
2816 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2817 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2818 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2819 start.y = t7cH.WindowY0 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2820 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2821 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2822 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2823 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2824 } |
38 | 2825 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
2826 stop.x = start.x + CUSTOMBOX_SPACE_INSIDE; | |
2827 | |
2828 for(int i=0;i<16;i++) | |
2829 { | |
2830 stop.y = start.y; | |
2831 change.y = start.y; | |
2832 | |
2833 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
|
2834 value *= 80; |
38 | 2835 |
2836 if(value < 0) | |
2837 front = 0; | |
2838 else | |
2839 if(value > CUSTOMBOX_SPACE_INSIDE) | |
2840 front = CUSTOMBOX_SPACE_INSIDE; | |
2841 else | |
2842 front = (uint16_t)value; | |
2843 | |
2844 change.x = start.x + front; | |
2845 if(change.x != start.x) | |
2846 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
2847 if(change.x != stop.x) | |
2848 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
2849 | |
2850 start.y -= 3; | |
2851 } | |
2852 | |
2853 /* He */ | |
2854 start.y -= 28 + 14; | |
2855 for(int i=0;i<16;i++) | |
2856 { | |
2857 stop.y = start.y; | |
2858 change.y = start.y; | |
2859 | |
2860 value = pState->lifeData.tissue_helium_bar[i]; | |
2861 value *= 80;//20 | |
2862 | |
2863 if(value < 0) | |
2864 front = 0; | |
2865 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
2866 front = CUSTOMBOX_SPACE_INSIDE; | |
2867 else | |
2868 front = (uint16_t)value; | |
2869 | |
2870 change.x = start.x + front; | |
2871 if(change.x != start.x) | |
2872 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
2873 if(change.x != stop.x) | |
2874 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
2875 | |
2876 start.y -= 3; | |
2877 } | |
2878 | |
2879 /* CNS == Oxygen */ | |
2880 start.y -= 28 + 14; | |
2881 | |
2882 cns100pixel = (8 * CUSTOMBOX_SPACE_INSIDE) / 10; | |
2883 value = pState->lifeData.cns; | |
2884 value *= cns100pixel; | |
2885 value /= 100; | |
2886 | |
2887 if(value < 0) | |
2888 front = 0; | |
2889 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
2890 front = CUSTOMBOX_SPACE_INSIDE; | |
2891 else | |
2892 front = (uint16_t)value; | |
2893 | |
2894 if(pState->lifeData.cns < 95) | |
2895 color = CLUT_Font030; | |
2896 else if(pState->lifeData.cns < 100) | |
2897 color = CLUT_WarningYellow; | |
2898 else | |
2899 color = CLUT_WarningRed; | |
2900 | |
2901 for(int i=0;i<16;i++) | |
2902 { | |
2903 stop.y = start.y; | |
2904 change.y = start.y; | |
2905 | |
2906 change.x = start.x + front; | |
2907 if(change.x != start.x) | |
2908 GFX_draw_thick_line(1,&t7screen, start, change, color); | |
2909 if(change.x != stop.x) | |
2910 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
2911 | |
2912 start.y -= 3; | |
2913 } | |
2914 | |
2915 /* where is the onload/offload limit for N2 and He */ | |
2916 decom_get_inert_gases(pState->lifeData.pressure_ambient_bar, &pState->lifeData.actualGas, &percent_N2, &percent_He); | |
2917 partial_pressure_N2 = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_N2; | |
2918 partial_pressure_He = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_He; | |
2919 | |
2920 // Nitrogen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2921 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2922 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2923 start.y = t7cH.WindowY0 + 1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2924 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2925 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2926 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2927 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2928 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2929 |
38 | 2930 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
|
2931 if((percent_N2 > 0) && (partial_pressure_N2 > 0.7512f)) |
38 | 2932 { |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
2933 value = partial_pressure_N2 - 0.7512f; |
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
2934 value *= 80; |
38 | 2935 |
2936 if(value < 0) | |
2937 front = 3; | |
2938 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
2939 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
2940 else | |
2941 front = (uint16_t)value; | |
2942 } | |
2943 else | |
2944 { | |
2945 front = 1; | |
2946 } | |
2947 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
2948 stop.x = start.x; | |
2949 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
2950 | |
2951 | |
2952 // Helium vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2953 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2954 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2955 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
|
2956 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2957 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2958 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2959 start.y = t7cH.WindowY1 - 5 - 3*16 - 28 - 14; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2960 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2961 |
38 | 2962 stop.y = start.y - (3 * 15) - 1; |
2963 if((percent_He > 0) && (partial_pressure_He > 0.01f)) // 0.5f | |
2964 { | |
2965 | |
2966 value = partial_pressure_He; | |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
2967 value *= 80; |
38 | 2968 |
2969 if(value < 0) | |
2970 front = 3; | |
2971 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
2972 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
2973 else | |
2974 front = (uint16_t)value; | |
2975 } | |
2976 else | |
2977 { | |
2978 front = 1; | |
2979 } | |
2980 | |
2981 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
2982 stop.x = start.x; | |
2983 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
2984 | |
2985 // Oxygen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2986 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2987 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2988 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
|
2989 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2990 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2991 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2992 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
|
2993 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2994 |
38 | 2995 stop.y = start.y - (3 * 15) - 1; |
2996 | |
2997 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + cns100pixel; | |
2998 stop.x = start.x; | |
2999 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
|
3000 |
38 | 3001 } |
3002 | |
3003 | |
3004 void t7_debug(void) | |
3005 { | |
3006 char text[256+50]; | |
3007 uint8_t textpointer = 0; | |
3008 | |
3009 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
3010 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
3011 t7cY0free.WindowNumberOfTextLines = 3; | |
3012 | |
3013 textpointer += snprintf(&text[textpointer],50,"Ambient [bar]\n\r"); | |
3014 textpointer += snprintf(&text[textpointer],50,"Surface [bar] + salt\n\r"); | |
3015 // textpointer += snprintf(&text[textpointer],50,"Difference [mbar]\n\r"); | |
3016 textpointer += snprintf(&text[textpointer],50,"ShallowCounter [s]\n\r"); | |
3017 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3018 | |
3019 t7cY0free.WindowY0 -= 52; | |
3020 // 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)); | |
3021 snprintf(text,60, | |
3022 "%0.2f\n\r" | |
3023 "%0.2f %u%%\n\r" | |
3024 "%u" | |
3025 ,stateUsed->lifeData.pressure_ambient_bar | |
3026 ,stateUsed->lifeData.pressure_surface_bar | |
3027 ,settingsGetPointer()->salinity | |
3028 ,stateUsed->lifeData.counterSecondsShallowDepth); | |
3029 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
3030 } | |
3031 | |
3032 | |
3033 void t7_SummaryOfLeftCorner(void) | |
3034 { | |
3035 char text[256+60]; | |
3036 uint8_t textpointer = 0; | |
3037 | |
3038 const SDecoinfo * pDecoinfoStandard; | |
3039 const SDecoinfo * pDecoinfoFuture; | |
3040 float fCNS; | |
3041 | |
3042 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
3043 { | |
3044 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
3045 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
3046 } | |
3047 else | |
3048 { | |
3049 pDecoinfoStandard = &stateUsed->decolistVPM; | |
3050 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
3051 } | |
3052 | |
3053 fCNS = stateUsed->lifeData .cns; | |
3054 if(fCNS > 999) | |
3055 fCNS = 999; | |
3056 | |
3057 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
3058 t7cY0free.WindowLineSpacing = 48; | |
3059 t7cY0free.WindowNumberOfTextLines = 6; | |
3060 t7cY0free.WindowTab = 420; | |
3061 | |
3062 // header | |
3063 textpointer = 0; | |
3064 text[textpointer++] = '\032'; | |
3065 text[textpointer++] = '\016'; | |
3066 text[textpointer++] = '\016'; | |
3067 text[textpointer++] = TXT_ppO2; | |
3068 text[textpointer++] = '\n'; | |
3069 text[textpointer++] = '\r'; | |
3070 text[textpointer++] = TXT_Ceiling; | |
3071 text[textpointer++] = '\n'; | |
3072 text[textpointer++] = '\r'; | |
3073 text[textpointer++] = TXT_ActualGradient; | |
3074 text[textpointer++] = '\n'; | |
3075 text[textpointer++] = '\r'; | |
3076 text[textpointer++] = TXT_CNS; | |
3077 text[textpointer++] = '\n'; | |
3078 text[textpointer++] = '\r'; | |
3079 text[textpointer++] = TXT_FutureTTS; | |
3080 text[textpointer++] = '\017'; | |
3081 text[textpointer++] = 0; | |
3082 t7cY0free.WindowX0 += 10; | |
3083 t7cY0free.WindowY0 += 10; | |
3084 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3085 t7cY0free.WindowX0 -= 10; | |
3086 t7cY0free.WindowY0 -= 10; | |
3087 | |
3088 textpointer = 0; | |
3089 text[textpointer++] = '\t'; | |
3090 textpointer += snprintf(&text[textpointer],10,"\020%01.2f", stateUsed->lifeData.ppO2); | |
3091 text[textpointer++] = '\n'; | |
3092 text[textpointer++] = '\r'; | |
3093 text[textpointer++] = '\t'; | |
3094 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
|
3095 textpointer += snprintf(&text[textpointer],10,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); |
38 | 3096 else |
215
4a0ebade04f5
Bugfix, trivial: correctly present avg depth in overview custom
Jan Mulder <jlmulder@xs4all.nl>
parents:
214
diff
changeset
|
3097 textpointer += snprintf(&text[textpointer],10,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); |
38 | 3098 text[textpointer++] = '\n'; |
3099 text[textpointer++] = '\r'; | |
3100 text[textpointer++] = '\t'; | |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
3101 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017", 100 * pDecoinfoStandard->super_saturation); |
38 | 3102 text[textpointer++] = '\n'; |
3103 text[textpointer++] = '\r'; | |
3104 text[textpointer++] = '\t'; | |
3105 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017",fCNS); | |
3106 text[textpointer++] = '\n'; | |
3107 text[textpointer++] = '\r'; | |
3108 text[textpointer++] = '\t'; | |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3109 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
|
3110 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
|
3111 else |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3112 textpointer += snprintf(&text[textpointer],10,"\020%ih", (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
38 | 3113 text[textpointer++] = 0; |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3114 t7_colorscheme_mod(text); |
38 | 3115 GFX_write_string(&FontT42, &t7cY0free, text, 1); |
3116 } | |
3117 | |
3118 void t7_compass(uint16_t ActualHeading, uint16_t UserSetHeading) | |
3119 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3120 uint16_t ActualHeadingRose; |
38 | 3121 uint16_t LeftBorderHeading, LineHeading; |
3122 uint32_t offsetPicture; | |
3123 point_t start, stop, center; | |
3124 static int32_t LastHeading = 0; | |
3125 int32_t newHeading = 0; | |
3126 int32_t diff = 0; | |
3127 int32_t diff2 = 0; | |
3128 | |
3129 int32_t diffAbs = 0; | |
3130 int32_t diffAbs2 = 0; | |
3131 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3132 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3133 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3134 |
38 | 3135 newHeading = ActualHeading; |
3136 | |
3137 diff = newHeading - LastHeading; | |
3138 | |
3139 if(newHeading < LastHeading) | |
3140 diff2 = newHeading + 360 - LastHeading; | |
3141 else | |
3142 diff2 = newHeading - 360 - LastHeading; | |
3143 | |
3144 diffAbs = diff; | |
3145 if(diffAbs < 0) | |
3146 diffAbs *= -1; | |
3147 | |
3148 diffAbs2 = diff2; | |
3149 if(diffAbs2 < 0) | |
3150 diffAbs2 *= -1; | |
3151 | |
3152 | |
3153 if(diffAbs <= diffAbs2) | |
3154 newHeading = LastHeading + (diff / 2); | |
3155 else | |
3156 newHeading = LastHeading + (diff2 / 2); | |
3157 | |
3158 if(newHeading < 0) | |
3159 newHeading += 360; | |
3160 else | |
3161 if(newHeading >= 360) | |
3162 newHeading -= 360; | |
3163 | |
3164 LastHeading = newHeading; | |
3165 ActualHeading = newHeading; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3166 ActualHeadingRose = ActualHeading; |
225
2bb1db22b5f5
cleanup: random set of cleanups
Jan Mulder <jlmulder@xs4all.nl>
parents:
222
diff
changeset
|
3167 |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3168 if(pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3169 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3170 ActualHeadingRose = 360 - ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3171 if (ActualHeadingRose < 170) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3172 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3173 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3174 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3175 if (ActualHeadingRose < 90) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3176 ActualHeading = ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3177 } |
38 | 3178 |
3179 // new hw 160822 | |
3180 // if (ActualHeading >= 360 + 90) | |
3181 // ActualHeading = 360; | |
3182 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3183 LeftBorderHeading = 2 * (ActualHeadingRose - (CUSTOMBOX_SPACE_INSIDE/4)); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3184 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3185 if(pSettings->FlipDisplay) /* add offset caused by mirrowed drawing */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3186 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3187 LeftBorderHeading += 2 * 80; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3188 } |
38 | 3189 |
3190 offsetPicture = LeftBorderHeading * t7screenCompass.ImageHeight * 2; | |
3191 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3192 /* the background is used to draw the rotating compass rose */ |
38 | 3193 background.pointer = t7screenCompass.FBStartAdress+offsetPicture; |
3194 background.x0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3195 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3196 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3197 background.y0 = 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3198 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3199 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3200 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3201 background.y0 = 480 - t7screenCompass.ImageHeight - 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3202 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3203 |
38 | 3204 background.width = CUSTOMBOX_SPACE_INSIDE; |
3205 background.height = t7screenCompass.ImageHeight; | |
3206 | |
3207 | |
3208 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + (CUSTOMBOX_SPACE_INSIDE/2); | |
3209 stop.x = start.x; | |
3210 start.y = 65; | |
3211 stop.y = start.y + 55; | |
3212 GFX_draw_line(&t7screen, start, stop, CLUT_Font030); | |
3213 | |
3214 | |
3215 center.x = start.x; | |
3216 center.y = 300; | |
3217 | |
3218 stop.x = center.x + 44; | |
3219 stop.y = center.y + 24; | |
3220 | |
3221 | |
3222 while(ActualHeading > 359) ActualHeading -= 360; | |
3223 | |
3224 LineHeading = 360 - ActualHeading; | |
3225 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(0,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font030); // North | |
3226 LineHeading += 90; | |
3227 if(LineHeading > 359) LineHeading -= 360; | |
3228 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Maintick | |
3229 LineHeading += 90; | |
3230 if(LineHeading > 359) LineHeading -= 360; | |
3231 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3232 LineHeading += 90; | |
3233 if(LineHeading > 359) LineHeading -= 360; | |
3234 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3235 | |
3236 LineHeading = 360 - ActualHeading; | |
3237 LineHeading += 45; | |
3238 if(LineHeading > 359) LineHeading -= 360; | |
3239 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3240 LineHeading += 90; | |
3241 if(LineHeading > 359) LineHeading -= 360; | |
3242 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3243 LineHeading += 90; | |
3244 if(LineHeading > 359) LineHeading -= 360; | |
3245 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3246 LineHeading += 90; | |
3247 if(LineHeading > 359) LineHeading -= 360; | |
3248 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3249 | |
3250 LineHeading = 360 - ActualHeading; | |
3251 LineHeading += 22; | |
3252 if(LineHeading > 359) LineHeading -= 360; | |
3253 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3254 LineHeading += 45; | |
3255 if(LineHeading > 359) LineHeading -= 360; | |
3256 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3257 LineHeading += 45; | |
3258 if(LineHeading > 359) LineHeading -= 360; | |
3259 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3260 LineHeading += 45; | |
3261 if(LineHeading > 359) LineHeading -= 360; | |
3262 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3263 LineHeading += 45; | |
3264 if(LineHeading > 359) LineHeading -= 360; | |
3265 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3266 LineHeading += 45; | |
3267 if(LineHeading > 359) LineHeading -= 360; | |
3268 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3269 LineHeading += 45; | |
3270 if(LineHeading > 359) LineHeading -= 360; | |
3271 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3272 LineHeading += 45; | |
3273 if(LineHeading > 359) LineHeading -= 360; | |
3274 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3275 | |
3276 if(UserSetHeading) | |
3277 { | |
3278 LineHeading = UserSetHeading + 360 - ActualHeading; | |
3279 if(LineHeading > 359) LineHeading -= 360; | |
3280 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserHeadingTick); | |
3281 | |
3282 // R�ckpeilung, User Back Heading | |
3283 LineHeading = UserSetHeading + 360 + 180 - ActualHeading; | |
3284 if(LineHeading > 359) LineHeading -= 360; | |
3285 if(LineHeading > 359) LineHeading -= 360; | |
3286 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserBackHeadingTick); | |
3287 } | |
3288 | |
3289 center.x = start.x; | |
3290 center.y = 250; | |
3291 GFX_draw_circle(&t7screen, center, 116, CLUT_Font030); | |
3292 GFX_draw_circle(&t7screen, center, 118, CLUT_Font030); | |
3293 GFX_draw_circle(&t7screen, center, 117, CLUT_Font030); | |
3294 | |
3295 | |
3296 } | |
3297 | |
3298 | |
3299 /* Font_T42: N is 27 px, S is 20 px, W is 36 px, E is 23 px | |
3300 * max is NW with 63 px | |
3301 * Font_T24: N is 15 px, S is 12 px, W is 20 px, E is 13 px | |
3302 * max is NW with 35 px | |
3303 * NE is 28 px | |
3304 * SW is 32 px | |
3305 * SE is 25 px | |
3306 * space between each is 45 px * 2 | |
3307 * FirstItem List | |
3308 * \177 \177 prepare for size | |
3309 */ | |
3310 void init_t7_compass(void) | |
3311 { | |
3312 t7screenCompass.FBStartAdress = getFrame(21); | |
3313 | |
3314 char text[256]; | |
3315 uint8_t textpointer = 0; | |
3316 | |
3317 text[textpointer++] = '\030'; | |
3318 text[textpointer++] = '\177'; | |
3319 text[textpointer++] = '\177'; | |
3320 text[textpointer++] = 76; // 90 - 14 | |
3321 text[textpointer++] = '\016'; | |
3322 text[textpointer++] = '\016'; | |
3323 text[textpointer++] = 'N'; | |
3324 text[textpointer++] = 'E'; // 96 + 28 = 124 total | |
3325 text[textpointer++] = '\017'; | |
3326 text[textpointer++] = '\177'; | |
3327 text[textpointer++] = '\177'; | |
3328 text[textpointer++] = 64; // 90 - 14 - 12 | |
3329 text[textpointer++] = 'E'; // 124 + 74 + 23 = 221 total | |
3330 text[textpointer++] = '\177'; | |
3331 text[textpointer++] = '\177'; | |
3332 text[textpointer++] = 66; // 90 - 11 - 13 | |
3333 text[textpointer++] = '\016'; | |
3334 text[textpointer++] = '\016'; | |
3335 text[textpointer++] = 'S'; | |
3336 text[textpointer++] = 'E'; | |
3337 text[textpointer++] = '\017'; | |
3338 text[textpointer++] = '\177'; | |
3339 text[textpointer++] = '\177'; | |
3340 text[textpointer++] = 68; // 90 - 12 - 10 | |
3341 text[textpointer++] = 'S'; | |
3342 text[textpointer++] = '\177'; | |
3343 text[textpointer++] = '\177'; | |
3344 text[textpointer++] = 64; // 90 - 10 - 16 | |
3345 text[textpointer++] = '\016'; | |
3346 text[textpointer++] = '\016'; | |
3347 text[textpointer++] = 'S'; | |
3348 text[textpointer++] = 'W'; | |
3349 text[textpointer++] = '\017'; | |
3350 text[textpointer++] = '\177'; | |
3351 text[textpointer++] = '\177'; | |
3352 text[textpointer++] = 56; // 90 - 16 - 18 | |
3353 text[textpointer++] = 'W'; | |
3354 text[textpointer++] = '\177'; | |
3355 text[textpointer++] = '\177'; | |
3356 text[textpointer++] = 54; // 90 - 18 - 18 | |
3357 text[textpointer++] = '\016'; | |
3358 text[textpointer++] = '\016'; | |
3359 text[textpointer++] = 'N'; | |
3360 text[textpointer++] = 'W'; | |
3361 text[textpointer++] = '\017'; | |
3362 text[textpointer++] = '\177'; | |
3363 text[textpointer++] = '\177'; | |
3364 text[textpointer++] = 59; // 90 - 17 - 14 | |
3365 text[textpointer++] = 'N'; | |
3366 text[textpointer++] = '\177'; | |
3367 text[textpointer++] = '\177'; | |
3368 text[textpointer++] = 63; // 90 - 13 - 14 | |
3369 text[textpointer++] = '\016'; | |
3370 text[textpointer++] = '\016'; | |
3371 text[textpointer++] = 'N'; | |
3372 text[textpointer++] = 'E'; | |
3373 text[textpointer++] = '\017'; | |
3374 text[textpointer++] = '\177'; | |
3375 text[textpointer++] = '\177'; | |
3376 text[textpointer++] = 64; // 90 - 14 - 12 | |
3377 text[textpointer++] = 'E'; | |
3378 text[textpointer++] = '\177'; | |
3379 text[textpointer++] = '\177'; | |
3380 text[textpointer++] = 66; // 90 - 11 - 13 | |
3381 text[textpointer++] = '\016'; | |
3382 text[textpointer++] = '\016'; | |
3383 text[textpointer++] = 'S'; | |
3384 text[textpointer++] = 'E'; | |
3385 text[textpointer++] = '\017'; | |
3386 text[textpointer++] = '\177'; | |
3387 text[textpointer++] = '\177'; | |
3388 text[textpointer++] = 68; // 90 - 12 - 10 | |
3389 text[textpointer++] = 'S'; | |
3390 text[textpointer++] = '\177'; | |
3391 text[textpointer++] = '\177'; | |
3392 text[textpointer++] = 64; // 90 - 10 - 16 | |
3393 text[textpointer++] = '\016'; | |
3394 text[textpointer++] = '\016'; | |
3395 text[textpointer++] = 'S'; | |
3396 text[textpointer++] = 'W'; | |
3397 text[textpointer++] = '\017'; | |
3398 text[textpointer++] = 0; // end | |
3399 | |
3400 GFX_write_string(&FontT42,&t7pCompass,text,1); | |
3401 | |
3402 releaseAllFramesExcept(21,t7screenCompass.FBStartAdress); | |
3403 } | |
3404 | |
3405 | |
3406 void t7_miniLiveLogProfile(void) | |
3407 { | |
3408 SWindowGimpStyle wintemp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3409 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3410 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3411 |
38 | 3412 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
3413 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3414 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3415 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3416 wintemp.top = 480 - t7l1.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3417 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3418 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3419 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3420 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3421 wintemp.top = t7l1.WindowY1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3422 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3423 } |
38 | 3424 |
3425 uint16_t max_depth = (uint16_t)(stateUsed->lifeData.max_depth_meter * 10); | |
3426 | |
3427 GFX_graph_print(&t7screen, &wintemp, 0,1,0, max_depth, getMiniLiveLogbookPointerToData(), getMiniLiveLogbookActualDataLength(), CLUT_Font030, NULL); | |
3428 } | |
3429 | |
3430 void t7_logo_OSTC(void) | |
3431 { | |
3432 SWindowGimpStyle windowGimp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3433 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3434 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3435 |
38 | 3436 /* OSTC logo */ |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3437 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3438 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3439 windowGimp.left = t7l1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3440 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3441 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3442 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3443 windowGimp.left = t7r1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3444 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3445 |
38 | 3446 windowGimp.top = 40 + 32; |
3447 GFX_draw_image_monochrome(&t7screen, windowGimp, &ImgOSTC, 0); | |
3448 } |