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