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