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