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