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