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