Mercurial > public > ostc4
annotate Discovery/Src/t7.c @ 530:c880907fd1d7
Bugfix: No need to consider surface custom view in count of enabled view:
In early motion control versions the detection was also applied in surface mode (as development support). The condition check is no longer needed because motion control is only applied in dive mode.
author | Ideenmodellierer |
---|---|
date | Tue, 15 Sep 2020 20:54:54 +0200 |
parents | 962d7b2c18c6 |
children | 0ad0b26ec56b |
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; | |
1637 int16_t start; | |
51
8f8ea3a32e82
Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents:
38
diff
changeset
|
1638 uint8_t lineCountCustomtext = 0; |
38 | 1639 int16_t shiftWindowY0; |
1640 RTC_DateTypeDef Sdate; | |
1641 RTC_TimeTypeDef Stime; | |
1642 float fPpO2limitHigh, fPpO2limitLow, fPpO2ofGasAtThisDepth; // CVIEW_Gaslist | |
1643 const SGasLine * pGasLine; // CVIEW_Gaslist | |
1644 uint8_t oxygen, helium; // CVIEW_Gaslist | |
1645 float depth, surface, fraction_nitrogen, fraction_helium, ead, end; // CVIEW_EADTime | |
1646 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1647 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1648 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1649 |
405 | 1650 if(last_customview != selection_customview) /* check if current selection is disabled and should be skipped */ |
1651 { | |
1652 if(t7_customview_disabled(selection_customview)) | |
1653 { | |
1654 t7_change_customview(ACTION_BUTTON_ENTER); | |
1655 } | |
1656 } | |
38 | 1657 switch(selection_customview) |
1658 { | |
1659 case CVIEW_noneOrDebug: | |
1660 if(settingsGetPointer()->showDebugInfo) | |
1661 { | |
1662 // header | |
1663 strcpy(text,"\032\f\001Debug"); | |
1664 GFX_write_string(&FontT42,&t7cH,text,0); | |
1665 // content | |
1666 t7_debug(); | |
1667 } | |
1668 break; | |
1669 | |
1670 case CVIEW_SummaryOfLeftCorner: | |
1671 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Summary); | |
1672 GFX_write_string(&FontT42,&t7cH,text,0); | |
1673 // content | |
1674 t7_SummaryOfLeftCorner(); | |
1675 break; | |
1676 | |
1677 case CVIEW_CompassDebug: | |
1678 snprintf(text,100,"\032\f\001Compass raw"); | |
1679 GFX_write_string(&FontT42,&t7cH,text,0); | |
1680 /* | |
1681 pStateReal->lifeData.compass_heading = dataIn.data[dataIn.boolCompassData].compass_heading; | |
1682 pStateReal->lifeData.compass_roll = dataIn.data[dataIn.boolCompassData].compass_roll; | |
1683 pStateReal->lifeData.compass_pitch = dataIn.data[dataIn.boolCompassData].compass_pitch; | |
1684 | |
1685 pStateReal->lifeData.compass_DX_f = dataIn.data[dataIn.boolCompassData].compass_DX_f; | |
1686 pStateReal->lifeData.compass_DY_f = dataIn.data[dataIn.boolCompassData].compass_DY_f; | |
1687 pStateReal->lifeData.compass_DZ_f = dataIn.data[dataIn.boolCompassData].compass_DZ_f; | |
1688 */ | |
1689 snprintf(text,255,"%1.1f\n\r%1.1f\n\r%1.1f\n\r%i\n\r%i\n\r%i" | |
1690 ,stateUsed->lifeData.compass_heading | |
1691 ,stateUsed->lifeData.compass_roll | |
1692 ,stateUsed->lifeData.compass_pitch | |
1693 ,stateUsed->lifeData.compass_DX_f | |
1694 ,stateUsed->lifeData.compass_DY_f | |
1695 ,stateUsed->lifeData.compass_DZ_f | |
1696 ); | |
1697 | |
1698 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
1699 t7cY0free.WindowLineSpacing = 48; | |
1700 t7cY0free.WindowNumberOfTextLines = 6; | |
1701 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
1702 break; | |
1703 | |
1704 case CVIEW_Hello: | |
1705 t7_logo_OSTC(); | |
1706 t7cC.WindowLineSpacing = 53; | |
1707 t7cC.WindowNumberOfTextLines = 5; | |
1708 shiftWindowY0 = 18; | |
1709 | |
1710 if(updateNecessary)//if(DataEX_check_RTE_version__needs_update() || font_update_required()) | |
1711 { | |
1712 if(warning_count_high_time) | |
1713 { | |
1714 shiftWindowY0 += 20; | |
1715 t7cC.WindowY0 -= shiftWindowY0; | |
1716 textpointer = 0; | |
1717 text[textpointer++] = TXT_2BYTE; | |
1718 text[textpointer++] = TXT2BYTE_PleaseUpdate; | |
1719 text[textpointer++] = '\n'; | |
1720 text[textpointer++] = '\r'; | |
1721 if(DataEX_check_RTE_version__needs_update()) | |
1722 { | |
1723 text[textpointer++] = TXT_2BYTE; | |
1724 text[textpointer++] = TXT2BYTE_RTE; | |
1725 text[textpointer++] = '\n'; | |
1726 text[textpointer++] = '\r'; | |
1727 } | |
1728 if(font_update_required()) | |
1729 { | |
1730 text[textpointer++] = TXT_2BYTE; | |
1731 text[textpointer++] = TXT2BYTE_Fonts; | |
1732 } | |
1733 text[textpointer++] = 0; | |
1734 GFX_write_string_color(&FontT42,&t7cC,text,1, CLUT_WarningRed); | |
1735 t7cC.WindowY0 += shiftWindowY0; | |
1736 } | |
1737 t7cC.WindowNumberOfTextLines = 3; | |
1738 } | |
1739 else // customtext | |
1740 { | |
1741 lineCountCustomtext = t7_customtextPrepare(text); | |
1742 if(lineCountCustomtext <= 2) | |
1743 shiftWindowY0 += 20+26; // nach unten | |
1744 else | |
1745 if(lineCountCustomtext <= 3) | |
1746 shiftWindowY0 += 20; // nach unten | |
1747 t7cC.WindowY0 -= shiftWindowY0; | |
1748 | |
1749 GFX_write_string(&FontT42,&t7cC,text,1); | |
1750 t7cC.WindowNumberOfTextLines = 3; | |
1751 t7cC.WindowY0 += shiftWindowY0; | |
1752 } | |
1753 if(lineCountCustomtext <= 4) | |
1754 { | |
1755 snprintf(text,100,"\001#%0u V%01u.%01u.%01u", | |
1756 settingsGetPointer()->serialLow + (256 * settingsGetPointer()->serialHigh), | |
1757 firmwareDataGetPointer()->versionFirst, | |
1758 firmwareDataGetPointer()->versionSecond, | |
1759 firmwareDataGetPointer()->versionThird | |
1760 ); | |
1761 GFX_write_string(&FontT24,&t7cC,text,0); | |
1762 } | |
1763 break; | |
1764 | |
1765 case CVIEW_Gaslist: | |
1766 // a lot of code taken from tMenuGas.c | |
1767 // header | |
1768 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Gaslist); | |
1769 GFX_write_string(&FontT42,&t7cH,text,0); | |
1770 // content | |
1771 textpointer = 0; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1772 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1773 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1774 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1775 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1776 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1777 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1778 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1779 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1780 } |
38 | 1781 t7cY0free.WindowLineSpacing = 48+9; |
1782 t7cY0free.WindowNumberOfTextLines = 5; // NUM_GASES == 5 | |
1783 t7cY0free.WindowTab = 420; | |
1784 | |
1785 pGasLine = settingsGetPointer()->gas; | |
1786 if(actualLeftMaxDepth(stateUsed)) | |
1787 fPpO2limitHigh = (float)(settingsGetPointer()->ppO2_max_deco) / 100; | |
1788 else | |
1789 fPpO2limitHigh = (float)(settingsGetPointer()->ppO2_max_std) / 100; | |
1790 fPpO2limitLow = (float)(settingsGetPointer()->ppO2_min) / 100; | |
1791 for(int gasId=1;gasId<=NUM_GASES;gasId++) | |
1792 { | |
1793 textpointer = 0; | |
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1794 #ifdef ENABLE_UNUSED_GAS_HIDING |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1795 if(!pGasLine[gasId].note.ub.off) |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1796 { |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1797 #endif |
38 | 1798 fPpO2ofGasAtThisDepth = (stateUsed->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * pGasLine[gasId].oxygen_percentage / 100; |
1799 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
|
1800 strcpy(&text[textpointer++],"\031"); |
517 | 1801 else if(stateUsed->lifeData.actualGas.GasIdInSettings == gasId) /* actual selected gas */ |
1802 { | |
1803 strcpy(&text[textpointer++],"\030"); | |
1804 } | |
38 | 1805 else if((fPpO2ofGasAtThisDepth > fPpO2limitHigh) || (fPpO2ofGasAtThisDepth < fPpO2limitLow)) |
1806 strcpy(&text[textpointer++],"\025"); | |
517 | 1807 else if(actualBetterGasId() == gasId) |
1808 { | |
1809 strcpy(&text[textpointer++],"\026"); /* Highlight better gas */ | |
1810 } | |
38 | 1811 else |
517 | 1812 strcpy(&text[textpointer++],"\023"); |
38 | 1813 |
1814 text[textpointer++] = ' '; | |
1815 oxygen = pGasLine[gasId].oxygen_percentage; | |
1816 helium = pGasLine[gasId].helium_percentage; | |
1817 textpointer += write_gas(&text[textpointer], oxygen, helium); | |
1818 // Wechseltiefe | |
1819 if(pGasLine[gasId].depth_meter) | |
1820 { | |
1821 textpointer += snprintf(&text[textpointer],7,"\t%u %c%c",unit_depth_integer(pGasLine[gasId].depth_meter), unit_depth_char1(), unit_depth_char2()); | |
1822 } | |
1823 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
|
1824 #ifdef ENABLE_UNUSED_GAS_HIDING |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1825 } |
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
1826 #endif |
38 | 1827 } |
1828 break; | |
1829 | |
1830 case CVIEW_EADTime: | |
1831 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Info ); | |
1832 GFX_write_string(&FontT42,&t7cH,text,0); | |
1833 textpointer = 0; | |
1834 | |
1835 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1836 if(pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1837 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1838 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1839 } |
38 | 1840 t7cY0free.WindowLineSpacing = 48; |
1841 t7cY0free.WindowNumberOfTextLines = 6; | |
1842 | |
1843 // time | |
1844 snprintf(text,100,"\032\001%c%c",TXT_2BYTE,TXT2BYTE_Clock ); | |
1845 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
1846 | |
1847 translateDate(stateRealGetPointer()->lifeData.dateBinaryFormat, &Sdate); | |
1848 translateTime(stateRealGetPointer()->lifeData.timeBinaryFormat, &Stime); | |
1849 if(Stime.Seconds % 2) | |
1850 textpointer += snprintf(&text[textpointer],100,"\030\001%02d:%02d",Stime.Hours,Stime.Minutes); | |
1851 else | |
1852 textpointer += snprintf(&text[textpointer],100,"\030\001%02d\031:\030%02d",Stime.Hours,Stime.Minutes); | |
1853 GFX_write_string(&FontT42, &t7cY0free, text, 2); | |
1854 | |
1855 // EAD / END | |
1856 // The equivalent air depth can be calculated for depths in metres as follows: | |
1857 // EAD = (Depth + 10) � Fraction of N2 / 0.79 - 10 (wikipedia) | |
1858 // The equivalent narcotic depth can be calculated for depths in metres as follows: | |
1859 // END = (Depth + 10) � (1 - Fraction of helium) - 10 (wikipedia) | |
1860 decom_get_inert_gases((float)stateUsed->lifeData.pressure_ambient_bar,&(stateUsed->lifeData.actualGas),&fraction_nitrogen,&fraction_helium); | |
1861 depth = stateUsed->lifeData.pressure_ambient_bar; | |
1862 surface = stateUsed->lifeData.pressure_surface_bar; | |
1863 ead = 10.f * ((depth * fraction_nitrogen/0.79f) - surface); | |
1864 end = 10.0f * ((depth * (1.f - fraction_helium)) - surface); | |
1865 if(ead < 0) | |
1866 ead = 0; | |
1867 if(end < 0) | |
1868 end = 0; | |
1869 | |
1870 snprintf(text,100,"\032\001EAD"); | |
1871 GFX_write_string(&FontT42, &t7cY0free, text, 3); | |
1872 snprintf(text,100,"\030\001%01.1f %c%c" | |
1873 , unit_depth_float(ead) | |
1874 , unit_depth_char1() | |
1875 , unit_depth_char2() | |
1876 ); | |
1877 GFX_write_string(&FontT42, &t7cY0free, text, 4); | |
1878 | |
1879 snprintf(text,100,"\032\001END"); | |
1880 GFX_write_string(&FontT42, &t7cY0free, text, 5); | |
1881 snprintf(text,100,"\030\001%01.1f %c%c" | |
1882 , unit_depth_float(ead) | |
1883 , unit_depth_char1() | |
1884 , unit_depth_char2() | |
1885 ); | |
1886 GFX_write_string(&FontT42, &t7cY0free, text, 6); | |
1887 break; | |
1888 | |
1889 case CVIEW_Profile: | |
1890 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Profile); | |
1891 GFX_write_string(&FontT42,&t7cH,text,0); | |
1892 textpointer = 0; | |
1893 t7_miniLiveLogProfile(); | |
1894 break; | |
1895 | |
1896 case CVIEW_Tissues: | |
1897 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Tissues); | |
1898 GFX_write_string(&FontT42,&t7cH,text,0); | |
1899 textpointer = 0; | |
1900 t7_tissues(stateUsed); | |
1901 break; | |
1902 | |
1903 case CVIEW_sensors: | |
1904 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_O2monitor); | |
1905 GFX_write_string(&FontT42,&t7cH,text,0); | |
1906 textpointer = 0; | |
1907 text[textpointer++] = '\030'; // main color | |
1908 for(int i=0;i<3;i++) | |
1909 { | |
1910 if(stateUsed->diveSettings.ppo2sensors_deactivated & (1<<i)) | |
1911 { | |
1912 text[textpointer++] = '\031'; // labelcolor | |
1913 text[textpointer++] = '\001'; | |
1914 text[textpointer++] = '-'; | |
1915 text[textpointer++] = '\n'; | |
1916 text[textpointer++] = '\r'; | |
1917 text[textpointer++] = '\030'; // main color | |
1918 text[textpointer] = 0; | |
1919 } | |
1920 else | |
1921 { | |
1922 if(stateUsed->warnings.sensorOutOfBounds[i]) | |
1923 text[textpointer++] = '\025'; // Warning Red | |
1924 textpointer += snprintf(&text[textpointer],100,"\001%01.2f\n\r\030",stateUsed->lifeData.ppO2Sensor_bar[i]); | |
1925 } | |
1926 } | |
1927 t7cC.WindowLineSpacing = 95; | |
1928 t7cC.WindowNumberOfTextLines = 3; | |
1929 text[textpointer] = 0; | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1930 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1931 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1932 t7cC.WindowY1 -= 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1933 } |
38 | 1934 GFX_write_string(&FontT105,&t7cC,text,1); |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1935 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1936 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1937 t7cC.WindowY1 += 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1938 } |
38 | 1939 break; |
1940 | |
1941 case CVIEW_sensors_mV: | |
1942 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_O2voltage); | |
1943 GFX_write_string(&FontT42,&t7cH,text,0); | |
1944 textpointer = 0; | |
1945 text[textpointer++] = '\030'; | |
1946 for(int i=0;i<3;i++) | |
1947 { | |
1948 if(stateUsed->diveSettings.ppo2sensors_deactivated & (1<<i)) | |
1949 { | |
1950 text[textpointer++] = '\031'; | |
1951 text[textpointer++] = '\001'; | |
1952 text[textpointer++] = '-'; | |
1953 text[textpointer++] = '\n'; | |
1954 text[textpointer++] = '\r'; | |
1955 text[textpointer++] = '\030'; | |
1956 text[textpointer] = 0; | |
1957 } | |
1958 else | |
1959 { | |
1960 if(stateUsed->warnings.sensorOutOfBounds[i]) | |
1961 text[textpointer++] = '\025'; | |
1962 textpointer += snprintf(&text[textpointer],100,"\001%01.1f mV\n\r\030",(stateUsed->lifeData.sensorVoltage_mV[i])); | |
1963 } | |
1964 } | |
1965 t7cC.WindowLineSpacing = 95; | |
1966 t7cC.WindowNumberOfTextLines = 3; | |
1967 text[textpointer] = 0; | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1968 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1969 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1970 t7cC.WindowY1 -= 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1971 } |
38 | 1972 GFX_write_string(&FontT48,&t7cC,text,1); |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1973 if(pSettings->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1974 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1975 t7cC.WindowY1 += 40; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
1976 } |
38 | 1977 break; |
1978 | |
1979 case CVIEW_Compass: | |
1980 default: | |
1981 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE, TXT2BYTE_Compass); | |
1982 GFX_write_string(&FontT42,&t7cH,text,0); | |
1983 t7_compass((uint16_t)stateUsed->lifeData.compass_heading, stateUsed->diveSettings.compassHeading); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1984 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1985 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1986 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1987 t7cY0free.WindowX0 += 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1988 t7cY0free.WindowY0 = 230; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1989 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1990 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1991 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1992 t7cY0free.WindowX0 -= 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1993 t7cY0free.WindowY0 = 0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1994 t7cY0free.WindowY1 = 250; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1995 } |
38 | 1996 snprintf(text,100,"\030\001%03i`",(uint16_t)stateUsed->lifeData.compass_heading); |
1997 GFX_write_string(&FontT54,&t7cY0free,text,0); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1998 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1999 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2000 t7cY0free.WindowX0 -= 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2001 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2002 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2003 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2004 t7cY0free.WindowX0 += 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2005 } |
38 | 2006 break; |
2007 | |
2008 case CVIEW_Decolist: | |
2009 snprintf(text,100,"\032\f\001 %c%c", TXT_2BYTE, TXT2BYTE_Decolist); | |
2010 GFX_write_string(&FontT42,&t7cH,text,0); | |
2011 | |
2012 const SDecoinfo * pDecoinfo; | |
2013 uint8_t depthNext, depthLast, depthSecond, depthInc; | |
2014 | |
2015 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2016 pDecoinfo = &stateUsed->decolistBuehlmann; | |
2017 else | |
2018 pDecoinfo = &stateUsed->decolistVPM; | |
2019 | |
2020 depthLast = (uint8_t)(stateUsed->diveSettings.last_stop_depth_bar * 10); | |
2021 depthSecond = (uint8_t)(stateUsed->diveSettings.input_second_to_last_stop_depth_bar * 10); | |
2022 depthInc = (uint8_t)(stateUsed->diveSettings.input_next_stop_increment_depth_bar * 10); | |
2023 | |
2024 if(settingsGetPointer()->nonMetricalSystem) | |
2025 { | |
2026 depthLast = (uint8_t)unit_depth_integer(depthLast); | |
2027 depthSecond = (uint8_t)unit_depth_integer(depthSecond); | |
2028 depthInc = (uint8_t)unit_depth_integer(depthInc); | |
2029 } | |
2030 | |
2031 for(start=DECOINFO_STRUCT_MAX_STOPS-1; start>0; start--) | |
2032 if(pDecoinfo->output_stop_length_seconds[start]) break; | |
2033 start -= 6; | |
2034 if(start < 0) start = 0; | |
2035 | |
2036 textpointer = 0; | |
2037 for(int i=start;i<6+start;i++) | |
2038 { | |
2039 if(i == 0) | |
2040 depthNext = depthLast; | |
2041 else | |
2042 depthNext = depthSecond + (( i - 1 )* depthInc); | |
2043 | |
2044 if(pDecoinfo->output_stop_length_seconds[i]) | |
2045 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); | |
2046 else | |
2047 textpointer += snprintf(&text[textpointer],20,"\031\034 %2u\016\016%c%c\017\n\r",depthNext, unit_depth_char1(), unit_depth_char2()); | |
2048 if(textpointer > 200) break; | |
2049 } | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2050 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2051 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2052 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2053 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2054 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2055 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2056 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2057 t7cY0free.WindowY1 = 400; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2058 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2059 |
38 | 2060 t7cY0free.WindowLineSpacing = 48; |
2061 t7cY0free.WindowNumberOfTextLines = 6; | |
2062 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
2063 break; | |
2064 } | |
2065 } | |
2066 | |
2067 | |
2068 | |
2069 /* DIVE MODE | |
2070 */ | |
2071 void t7_refresh_divemode(void) | |
2072 { | |
2073 char TextL1[TEXTSIZE]; | |
2074 char TextL2[TEXTSIZE]; | |
2075 | |
2076 char TextR1[TEXTSIZE]; | |
2077 char TextR2[TEXTSIZE]; | |
2078 char TextR3[TEXTSIZE]; | |
2079 | |
2080 char TextC1[2*TEXTSIZE]; | |
2081 char TextC2[TEXTSIZE]; | |
2082 uint8_t textPointer; | |
2083 | |
2084 point_t start, stop; | |
2085 uint8_t color; | |
2086 int textlength; | |
2087 | |
2088 uint16_t nextstopLengthSeconds = 0; | |
2089 uint8_t nextstopDepthMeter = 0; | |
2090 uint8_t oxygen_percentage = 0; | |
2091 SDivetime Divetime = {0,0,0, 0}; | |
2092 SDivetime SafetyStopTime = {0,0,0,0}; | |
2093 SDivetime TimeoutTime = {0,0,0,0}; | |
2094 uint8_t customview_warnings = 0; | |
2095 const SDecoinfo * pDecoinfo; | |
2096 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2097 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2098 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2099 |
38 | 2100 Divetime.Total = stateUsed->lifeData.dive_time_seconds_without_surface_time; |
2101 Divetime.Minutes = Divetime.Total / 60; | |
2102 Divetime.Seconds = Divetime.Total - ( Divetime.Minutes * 60 ); | |
2103 | |
2104 SafetyStopTime.Total = timer_Safetystop_GetCountDown(); | |
2105 SafetyStopTime.Minutes = SafetyStopTime.Total / 60; | |
2106 SafetyStopTime.Seconds = SafetyStopTime.Total - (SafetyStopTime.Minutes * 60); | |
2107 | |
2108 TimeoutTime.Total = settingsGetPointer()->timeoutDiveReachedZeroDepth - stateUsed->lifeData.counterSecondsShallowDepth; | |
2109 if(TimeoutTime.Total > settingsGetPointer()->timeoutDiveReachedZeroDepth) | |
2110 { | |
2111 TimeoutTime.Total = 0; | |
2112 } | |
2113 TimeoutTime.Minutes = TimeoutTime.Total / 60; | |
2114 TimeoutTime.Seconds = TimeoutTime.Total - (TimeoutTime.Minutes * 60); | |
2115 | |
2116 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2117 pDecoinfo = &stateUsed->decolistBuehlmann; | |
2118 else | |
2119 pDecoinfo = &stateUsed->decolistVPM; | |
2120 | |
2121 if(pDecoinfo->output_time_to_surface_seconds) | |
2122 { | |
2123 tHome_findNextStop(pDecoinfo->output_stop_length_seconds, &nextstopDepthMeter, &nextstopLengthSeconds); | |
2124 } | |
2125 else | |
2126 { | |
2127 nextstopDepthMeter = 0; | |
2128 nextstopLengthSeconds = 0; | |
2129 } | |
2130 | |
2131 /* depth */ | |
174
ecb71521d004
Bugfix: make max depth move with current depth (part 2)
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
2132 float depth = unit_depth_float(stateUsed->lifeData.depth_meter); |
38 | 2133 |
2134 if(depth <= 0.3f) | |
2135 depth = 0; | |
2136 | |
2137 if(settingsGetPointer()->nonMetricalSystem) | |
2138 snprintf(TextL1,TEXTSIZE,"\032\f[feet]"); | |
2139 else | |
2140 snprintf(TextL1,TEXTSIZE,"\032\f%c",TXT_Depth); | |
2141 GFX_write_string(&FontT24,&t7l1,TextL1,0); | |
2142 | |
2143 if((stateUsed->lifeData.ascent_rate_meter_per_min > 8) || (stateUsed->lifeData.ascent_rate_meter_per_min < -10)) | |
2144 { | |
2145 snprintf(TextL1,TEXTSIZE,"\f\002%.0f %c%c/min " | |
2146 , unit_depth_float(stateUsed->lifeData.ascent_rate_meter_per_min) | |
2147 , unit_depth_char1() | |
2148 , unit_depth_char2() | |
2149 ); | |
2150 GFX_write_string(&FontT24,&t7l1,TextL1,0); | |
2151 } | |
2152 | |
2153 if( depth < 100) | |
2154 snprintf(TextL1,TEXTSIZE,"\020%01.1f",depth); | |
2155 else | |
2156 snprintf(TextL1,TEXTSIZE,"\020%01.0f",depth); | |
2157 | |
2158 t7_colorscheme_mod(TextL1); | |
2159 GFX_write_string(&FontT144,&t7l1,TextL1,1); | |
2160 | |
2161 /* max depth */ | |
2162 snprintf(TextL2,TEXTSIZE,"\032\f%c",TXT_MaxDepth); | |
2163 GFX_write_string(&FontT42,&t7l2,TextL2,0); | |
2164 | |
2165 if(unit_depth_float(stateUsed->lifeData.max_depth_meter) < 100) | |
2166 snprintf(TextL2,TEXTSIZE,"\020%01.1f",unit_depth_float(stateUsed->lifeData.max_depth_meter)); | |
2167 else | |
2168 snprintf(TextL2,TEXTSIZE,"\020%01.0f",unit_depth_float(stateUsed->lifeData.max_depth_meter)); | |
2169 | |
2170 t7_colorscheme_mod(TextL2); | |
2171 GFX_write_string(&FontT105,&t7l2,TextL2,1); | |
2172 | |
187
485c5135cf7f
cleanup: forgotten cleanup from 9da7dd50e2ec
Jan Mulder <jlmulder@xs4all.nl>
parents:
178
diff
changeset
|
2173 /* ascent rate graph */ |
392 | 2174 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 | 2175 { |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2176 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2177 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2178 start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2179 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2180 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2181 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2182 start.y = t7l3.WindowY0 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2183 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2184 |
38 | 2185 for(int i = 0; i<4;i++) |
2186 { | |
2187 start.y += 5*6; | |
2188 stop.y = start.y; | |
2189 start.x = CUSTOMBOX_LINE_LEFT - 1; | |
2190 stop.x = start.x - 17; | |
2191 GFX_draw_line(&t7screen, start, stop, 0); | |
2192 // start.x = CUSTOMBOX_LINE_RIGHT + 2; old right too | |
2193 // stop.x = start.x + 17; | |
2194 // GFX_draw_line(&t7screen, start, stop, 0); | |
2195 } | |
2196 // new thick bar design Sept. 2015 | |
2197 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 3 - 5; | |
2198 stop.x = start.x; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2199 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2200 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2201 start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2202 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2203 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2204 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2205 start.y = t7l3.WindowY0 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2206 } |
38 | 2207 stop.y = start.y + (uint16_t)(stateUsed->lifeData.ascent_rate_meter_per_min * 6); |
2208 stop.y -= 3; // wegen der Liniendicke von 12 anstelle von 9 | |
2209 if(stop.y >= 470) | |
2210 stop.y = 470; | |
2211 start.y += 7; // starte etwas weiter oben | |
2212 if(stateUsed->lifeData.ascent_rate_meter_per_min <= 10) | |
2213 color = CLUT_EverythingOkayGreen; | |
2214 else | |
2215 if(stateUsed->lifeData.ascent_rate_meter_per_min <= 15) | |
2216 color = CLUT_WarningYellow; | |
2217 else | |
2218 color = CLUT_WarningRed; | |
2219 | |
2220 GFX_draw_thick_line(12,&t7screen, start, stop, color); | |
2221 } | |
2222 //snprintf(TextL2,TEXTSIZE,"\f%.1f m/min",stateUsed->lifeData.ascent_rate_meter_per_min); | |
2223 | |
2224 /* divetime */ | |
2225 if(stateUsed->lifeData.counterSecondsShallowDepth) | |
2226 { | |
2227 snprintf(TextR1,TEXTSIZE,"\f\002\136 %u:%02u",TimeoutTime.Minutes, TimeoutTime.Seconds); | |
2228 GFX_write_string(&FontT42,&t7r1,TextR1,0); | |
2229 } | |
2230 else | |
2231 { | |
2232 snprintf(TextR1,TEXTSIZE,"\032\f\002%c",TXT_Divetime); | |
2233 GFX_write_string(&FontT42,&t7r1,TextR1,0); | |
2234 } | |
2235 | |
2236 if(Divetime.Minutes < 1000) | |
2237 snprintf(TextR1,TEXTSIZE,"\020\016\002%u:%02u",Divetime.Minutes, Divetime.Seconds); | |
2238 else | |
2239 snprintf(TextR1,TEXTSIZE,"\020\016\002%u'",Divetime.Minutes); | |
2240 t7_colorscheme_mod(TextR1); | |
2241 GFX_write_string(&FontT105,&t7r1,TextR1,1); | |
2242 | |
2243 /* next deco stop */ | |
2244 if(nextstopDepthMeter) | |
2245 { | |
2246 snprintf(TextR2,TEXTSIZE,"\032\f\002%c",TXT_Decostop); | |
2247 GFX_write_string(&FontT42,&t7r2,TextR2,0); | |
2248 textlength = snprintf(TextR2,TEXTSIZE,"\020\002%u%c%c %u'" | |
2249 , unit_depth_integer(nextstopDepthMeter) | |
2250 , unit_depth_char1_T105() | |
2251 , unit_depth_char2_T105() | |
2252 , (nextstopLengthSeconds+59)/60); | |
2253 t7_colorscheme_mod(TextR2); | |
2254 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
|
2255 TextR2[0] = '\031'; |
38 | 2256 if(textlength <= 9) |
2257 GFX_write_string(&FontT105,&t7r2,TextR2,1); | |
2258 else | |
2259 GFX_write_string(&FontT54,&t7r2,TextR2,1); | |
2260 } | |
2261 else if(SafetyStopTime.Total && (depth > timer_Safetystop_GetDepthUpperLimit())) | |
2262 { | |
2263 snprintf(TextR2,TEXTSIZE,"\032\f\002%c%c",TXT_2BYTE,TXT2BYTE_SafetyStop2); | |
2264 GFX_write_string(&FontT42,&t7r2,TextR2,0); | |
2265 snprintf(TextR2,TEXTSIZE,"\020\016\002%u:%02u",SafetyStopTime.Minutes,SafetyStopTime.Seconds); | |
2266 t7_colorscheme_mod(TextR2); | |
2267 GFX_write_string(&FontT105,&t7r2,TextR2,1); | |
2268 } | |
2269 | |
2270 /* tts - option 1 | |
2271 * ndl - option 2 | |
2272 * empty - option 3 */ | |
2273 if(pDecoinfo->output_time_to_surface_seconds) | |
2274 { | |
2275 snprintf(TextR3,TEXTSIZE,"\032\f\002%c",TXT_TTS); | |
2276 GFX_write_string(&FontT42,&t7r3,TextR3,0); | |
2277 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
|
2278 snprintf(TextR3,TEXTSIZE,"\020\002%i'",(pDecoinfo->output_time_to_surface_seconds + 59)/ 60); |
38 | 2279 else |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2280 snprintf(TextR3,TEXTSIZE,"\020\002%ih",(pDecoinfo->output_time_to_surface_seconds + 59)/ 3600); |
38 | 2281 t7_colorscheme_mod(TextR3); |
2282 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
|
2283 TextR2[0] = '\031'; |
38 | 2284 GFX_write_string(&FontT105,&t7r3,TextR3,1); |
2285 } | |
2286 else if(pDecoinfo->output_ndl_seconds) | |
2287 { | |
2288 snprintf(TextR3,TEXTSIZE,"\032\f\002%c",TXT_Nullzeit); | |
2289 GFX_write_string(&FontT42,&t7r3,TextR3,0); | |
2290 if(pDecoinfo->output_ndl_seconds < 1000 * 60) | |
2291 snprintf(TextR3,TEXTSIZE,"\020\002%i'",pDecoinfo->output_ndl_seconds/60); | |
2292 else | |
2293 snprintf(TextR3,TEXTSIZE,"\020\002%ih",pDecoinfo->output_ndl_seconds/3600); | |
2294 t7_colorscheme_mod(TextR3); | |
2295 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
|
2296 TextR2[0] = '\031'; |
38 | 2297 GFX_write_string(&FontT105,&t7r3,TextR3,1); |
2298 } | |
2299 | |
2300 /* Menu Selection (and gas mix) */ | |
2301 if(get_globalState() == StDMGAS) | |
2302 { | |
2303 textPointer = 0; | |
2304 TextR1[textPointer++] = '\a'; | |
2305 // TextR1[textPointer++] = '\f'; | |
2306 TextR1[textPointer++] = '\001'; | |
2307 TextR1[textPointer++] = ' '; | |
2308 textPointer += tHome_gas_writer(stateUsed->diveSettings.gas[actualBetterGasId()].oxygen_percentage,stateUsed->diveSettings.gas[actualBetterGasId()].helium_percentage,&TextR1[textPointer]); | |
2309 TextR1[textPointer++] = '?'; | |
2310 TextR1[textPointer++] = ' '; | |
2311 TextR1[textPointer++] = 0; | |
2312 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2313 } | |
2314 else if(get_globalState() == StDMSPT) | |
2315 { | |
2316 textPointer = 0; | |
2317 TextR1[textPointer++] = '\a'; | |
2318 TextR1[textPointer++] = '\001'; | |
2319 TextR1[textPointer++] = ' '; | |
2320 textPointer += snprintf(&TextR1[textPointer],5,"%f01.2",((float)(stateUsed->diveSettings.setpoint[actualBetterSetpointId()].setpoint_cbar))/100); | |
2321 TextR1[textPointer++] = '?'; | |
2322 TextR1[textPointer++] = ' '; | |
2323 TextR1[textPointer++] = 0; | |
2324 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2325 } | |
2326 else if(get_globalState() == StDMENU) | |
2327 { | |
2328 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveMenuQ); | |
2329 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2330 } | |
2331 else if(get_globalState() == StDSIM1) | |
2332 { | |
2333 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveQuitQ); | |
2334 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2335 } | |
2336 else if(get_globalState() == StDSIM2) | |
2337 { | |
2338 if(settingsGetPointer()->nonMetricalSystem) | |
2339 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-3.33ft "); | |
2340 else | |
2341 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-1m "); | |
2342 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2343 | |
2344 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2345 , unit_depth_integer(simulation_get_aim_depth()) | |
2346 , unit_depth_char1() | |
2347 , unit_depth_char2() | |
2348 ); | |
2349 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2350 | |
2351 } | |
2352 else if(get_globalState() == StDSIM3) | |
2353 { | |
2354 if(settingsGetPointer()->nonMetricalSystem) | |
2355 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+3.33ft "); | |
2356 else | |
2357 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+1m "); | |
2358 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2359 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2360 , unit_depth_integer(simulation_get_aim_depth()) | |
2361 , unit_depth_char1() | |
2362 , unit_depth_char2() | |
2363 ); | |
2364 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2365 } | |
2366 else if(get_globalState() == StDSIM4) | |
2367 { | |
2368 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+5' "); | |
2369 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2370 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2371 , unit_depth_integer(simulation_get_aim_depth()) | |
2372 , unit_depth_char1() | |
2373 , unit_depth_char2() | |
2374 ); | |
2375 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2376 } | |
2377 else | |
2378 { | |
2379 /* gas mix */ | |
2380 oxygen_percentage = 100; | |
2381 oxygen_percentage -= stateUsed->lifeData.actualGas.nitrogen_percentage; | |
2382 oxygen_percentage -= stateUsed->lifeData.actualGas.helium_percentage; | |
2383 | |
2384 textPointer = 0; | |
2385 TextC2[textPointer++] = '\020'; | |
2386 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
2387 { | |
2388 TextC2[textPointer++] = '\a'; | |
2389 } | |
2390 else | |
2391 { | |
2392 float fPpO2limitHigh, fPpO2now; | |
2393 | |
2394 if(actualLeftMaxDepth(stateUsed)) | |
2395 fPpO2limitHigh = settingsGetPointer()->ppO2_max_deco; | |
2396 else | |
2397 fPpO2limitHigh = settingsGetPointer()->ppO2_max_std; | |
2398 | |
2399 fPpO2now = (stateUsed->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * oxygen_percentage; | |
2400 | |
2401 if((fPpO2now > fPpO2limitHigh) || (fPpO2now < (float)(settingsGetPointer()->ppO2_min))) | |
2402 TextC2[textPointer++] = '\025'; | |
2403 } | |
2404 TextC2[textPointer++] = '\002'; | |
2405 textPointer += tHome_gas_writer(oxygen_percentage,stateUsed->lifeData.actualGas.helium_percentage,&TextC2[textPointer]); | |
2406 | |
2407 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
2408 { | |
2409 if(TextC2[0] == '\020') | |
2410 { | |
2411 TextC2[0] = '\004'; // NOP | |
2412 } | |
2413 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
2414 } | |
2415 else | |
2416 { | |
2417 t7_colorscheme_mod(TextC2); | |
2418 GFX_write_string(&FontT48,&t7c2,TextC2,0); // T54 has only numbers | |
2419 } | |
2420 | |
2421 if(stateUsed->diveSettings.ccrOption) | |
2422 { | |
2423 if(stateUsed->diveSettings.diveMode == DIVEMODE_CCR) | |
2424 { | |
2425 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2426 if(stateUsed->warnings.betterSetpoint && warning_count_high_time && (stateUsed->diveSettings.diveMode == DIVEMODE_CCR)) | |
2427 { | |
2428 TextC2[0] = '\a'; // inverse instead of color \020 | |
2429 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
2430 } | |
2431 else | |
2432 { | |
2433 t7_colorscheme_mod(TextC2); | |
2434 GFX_write_string(&FontT48,&t7c2,TextC2,0); | |
2435 } | |
2436 } | |
2437 } | |
2438 else if(settingsGetPointer()->alwaysShowPPO2) | |
2439 { | |
2440 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2441 t7_colorscheme_mod(TextC2); | |
2442 GFX_write_string(&FontT48,&t7c2,TextC2,0); | |
2443 } | |
2444 } | |
2445 | |
2446 /* algorithm, ccr, bailout and battery */ | |
2447 /* and permanent warnings (CNS) */ | |
2448 | |
2449 if((stateUsed->warnings.cnsHigh) && display_count_high_time) | |
2450 { | |
2451 TextC2[0] = '\f'; | |
2452 TextC2[1] = TXT_2BYTE; | |
2453 TextC2[2] = TXT2BYTE_WarnCnsHigh; | |
2454 TextC2[3] = 0; | |
2455 GFX_write_string_color(&FontT48,&t7c1,TextC2,0,CLUT_WarningRed); | |
2456 } | |
2457 else | |
2458 { | |
2459 if(stateUsed->warnings.aGf) | |
2460 { | |
2461 GFX_write_string_color(&FontT48,&t7c1,"\f" "aGF",0,CLUT_WarningYellow); | |
2462 } | |
2463 else if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2464 { | |
2465 GFX_write_string(&FontT48,&t7c1,"\027\f" "GF",0); | |
2466 } | |
2467 else | |
2468 { | |
2469 GFX_write_string(&FontT48,&t7c1,"\027\f" "VPM",0); | |
2470 } | |
2471 | |
2472 if(stateUsed->diveSettings.diveMode == DIVEMODE_CCR) | |
2473 GFX_write_string(&FontT24,&t7c1,"\027\f\002" "CCR",0); | |
2474 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80" "CCR",0); | |
2475 else | |
2476 if(stateUsed->diveSettings.ccrOption) | |
2477 GFX_write_string(&FontT24,&t7c1,"\f\002\024" "Bailout",0); | |
2478 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80\024" "Bailout",0); | |
2479 } | |
2480 TextC1[0] = '\020'; | |
2481 TextC1[1] = '3'; | |
2482 TextC1[2] = '1'; | |
2483 TextC1[3] = '1'; | |
2484 TextC1[4] = '1'; | |
2485 TextC1[5] = '1'; | |
2486 TextC1[6] = '1'; | |
2487 TextC1[7] = '1'; | |
2488 TextC1[8] = '1'; | |
2489 TextC1[9] = '1'; | |
2490 TextC1[10] = '1'; | |
2491 TextC1[11] = '1'; | |
2492 TextC1[12] = '0'; | |
2493 TextC1[13] = 0; | |
2494 | |
2495 for(int i=1;i<=10;i++) | |
2496 { | |
2497 if( stateUsed->lifeData.battery_charge > (9 * i)) | |
2498 TextC1[i+1] += 1; | |
2499 } | |
2500 | |
2501 if(stateUsed->warnings.lowBattery) | |
2502 { | |
2503 TextC1[0] = '\025'; | |
2504 if(warning_count_high_time) | |
2505 { | |
2506 for(int i=2;i<=11;i++) | |
2507 TextC1[i] = '1'; | |
2508 } | |
2509 else | |
2510 { | |
2511 TextC1[2] = '2'; | |
2512 } | |
2513 GFX_write_string(&Batt24,&t7batt,TextC1,0); | |
2514 | |
2515 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
2516 { | |
2517 snprintf(TextC1,16,"\004\025\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
2518 if(warning_count_high_time) | |
2519 TextC1[0] = '\a'; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2520 GFX_write_string(&FontT24,&t7voltage,TextC1,0); |
38 | 2521 } |
2522 } | |
2523 else | |
2524 { | |
2525 t7_colorscheme_mod(TextC1); | |
2526 GFX_write_string(&Batt24,&t7batt,TextC1,0); | |
2527 | |
2528 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
2529 { | |
2530 snprintf(TextC1,16,"\020\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
2531 t7_colorscheme_mod(TextC1); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2532 GFX_write_string(&FontT24,&t7voltage,TextC1,0); // t7batt |
38 | 2533 } |
2534 } | |
2535 | |
2536 /* customizable left lower corner */ | |
2537 t7_refresh_divemode_userselected_left_lower_corner(); | |
2538 | |
2539 | |
2540 /* customview - option 1 | |
2541 * warning - option 2 */ | |
2542 if(stateUsed->warnings.numWarnings) | |
2543 customview_warnings = t7_test_customview_warnings(); | |
2544 | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
2545 background.pointer = 0; |
38 | 2546 if(customview_warnings && warning_count_high_time) |
2547 t7_show_customview_warnings(); | |
2548 else | |
2549 t7_refresh_customview(); | |
2550 | |
2551 /* the frame */ | |
2552 draw_frame(1,1, CLUT_DIVE_pluginbox, CLUT_DIVE_FieldSeperatorLines); | |
2553 } | |
2554 | |
2555 void t7_set_field_to_primary(void) | |
2556 { | |
2557 if(stateUsed->mode == MODE_DIVE) | |
2558 selection_custom_field = settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary; | |
2559 } | |
2560 | |
2561 void t7_change_field(void) | |
2562 { | |
2563 selection_custom_field++; | |
2564 | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2565 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
|
2566 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2567 selection_custom_field++; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2568 } |
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 if(selection_custom_field >= LLC_END) |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2571 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2572 selection_custom_field = LLC_Empty; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2573 } |
38 | 2574 } |
2575 | |
2576 | |
2577 void t7_refresh_divemode_userselected_left_lower_corner(void) | |
2578 { | |
2579 if(!selection_custom_field) | |
2580 return; | |
2581 | |
2582 char headerText[10]; | |
2583 char text[TEXTSIZE]; | |
2584 uint8_t textpointer = 0; | |
2585 _Bool tinyHeaderFont = 0; | |
2586 uint8_t line = 0; | |
457 | 2587 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2588 uint16_t agedColor = 0; |
457 | 2589 #endif |
38 | 2590 |
2591 SDivetime Stopwatch = {0,0,0,0}; | |
2592 float fAverageDepth, fAverageDepthAbsolute; | |
2593 const SDecoinfo * pDecoinfoStandard; | |
2594 const SDecoinfo * pDecoinfoFuture; | |
2595 float fCNS; | |
2596 float temperature; | |
2597 | |
2598 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2599 { | |
2600 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
2601 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
2602 } | |
2603 else | |
2604 { | |
2605 pDecoinfoStandard = &stateUsed->decolistVPM; | |
2606 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
2607 } | |
2608 | |
2609 Stopwatch.Total = timer_Stopwatch_GetTime(); | |
2610 Stopwatch.Minutes = Stopwatch.Total / 60; | |
2611 Stopwatch.Seconds = Stopwatch.Total - ( Stopwatch.Minutes * 60 ); | |
2612 fAverageDepth = timer_Stopwatch_GetAvarageDepth_Meter(); | |
2613 fAverageDepthAbsolute = stateUsed->lifeData.average_depth_meter; | |
2614 | |
2615 headerText[0] = '\032'; | |
2616 headerText[1] = '\f'; | |
2617 | |
2618 switch(selection_custom_field) | |
2619 { | |
2620 /* Temperature */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2621 case LLC_Temperature: |
38 | 2622 default: |
189
8b8074080d7b
Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents:
187
diff
changeset
|
2623 temperature = unit_temperature_float(stateUsed->lifeData.temperature_celsius); |
38 | 2624 headerText[2] = TXT_Temperature; |
2625 textpointer = snprintf(text,TEXTSIZE,"\020\016%01.1f \140",temperature); // "\016\016%01.1f `" + C or F | |
2626 if(settingsGetPointer()->nonMetricalSystem == 0) | |
2627 text[textpointer++] = 'C'; | |
2628 else | |
2629 text[textpointer++] = 'F'; | |
2630 text[textpointer++] = 0; | |
2631 tinyHeaderFont = 0; | |
2632 break; | |
2633 | |
2634 /* Average Depth */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2635 case LLC_AverageDepth: |
38 | 2636 headerText[2] = TXT_AvgDepth; |
2637 if(settingsGetPointer()->nonMetricalSystem) | |
2638 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(fAverageDepthAbsolute)); | |
2639 else | |
2640 snprintf(text,TEXTSIZE,"\020%01.1f",fAverageDepthAbsolute); | |
2641 break; | |
2642 | |
2643 /* ppO2 */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2644 case LLC_ppO2: |
38 | 2645 headerText[2] = TXT_ppO2; |
2646 snprintf(text,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2647 break; | |
2648 | |
2649 /* Stop Uhr */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2650 case LLC_Stopwatch: |
38 | 2651 headerText[2] = TXT_Stopwatch; |
2652 if(settingsGetPointer()->nonMetricalSystem) | |
2653 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.0f",Stopwatch.Minutes, Stopwatch.Seconds,unit_depth_float(fAverageDepth)); | |
2654 else | |
2655 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.1f",Stopwatch.Minutes, Stopwatch.Seconds,fAverageDepth); | |
2656 tinyHeaderFont = 1; | |
2657 line = 1; | |
2658 break; | |
2659 | |
2660 /* Ceiling */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2661 case LLC_Ceiling: |
38 | 2662 headerText[2] = TXT_Ceiling; |
2663 if((pDecoinfoStandard->output_ceiling_meter > 99.9f) || (settingsGetPointer()->nonMetricalSystem)) | |
2664 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); | |
2665 else | |
2666 snprintf(text,TEXTSIZE,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); | |
2667 break; | |
2668 | |
2669 /* Future TTS */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2670 case LLC_FutureTTS: |
38 | 2671 headerText[2] = TXT_FutureTTS; |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2672 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
|
2673 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
|
2674 else |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2675 snprintf(text,TEXTSIZE,"\020\016\016@+%u'\n\r" "%ih TTS",settingsGetPointer()->future_TTS, (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
38 | 2676 tinyHeaderFont = 1; |
2677 line = 1; | |
2678 break; | |
2679 | |
2680 /* CNS */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2681 case LLC_CNS: |
38 | 2682 headerText[2] = TXT_CNS; |
2683 fCNS = stateUsed->lifeData .cns; | |
2684 if(fCNS > 999) | |
2685 fCNS = 999; | |
2686 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",fCNS); | |
2687 break; | |
2688 | |
2689 /* actual GF */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2690 case LLC_GF: |
38 | 2691 headerText[2] = TXT_ActualGradient; |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
2692 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",100 * pDecoinfoStandard->super_saturation); |
38 | 2693 break; |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2694 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2695 case LCC_BottleBar: |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2696 headerText[2] = TXT_AtemGasVorrat; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2697 tinyHeaderFont = 1; |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2698 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
|
2699 break; |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2700 #endif |
38 | 2701 } |
2702 headerText[3] = 0; | |
2703 | |
2704 if(tinyHeaderFont) | |
2705 GFX_write_string(&FontT24,&t7l3,headerText,0); | |
2706 else | |
2707 GFX_write_string(&FontT42,&t7l3,headerText,0); | |
2708 | |
2709 t7_colorscheme_mod(text); | |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2710 #ifndef ENABLE_BOTTLE_SENSOR |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2711 GFX_write_string(&FontT105,&t7l3,text,line); |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2712 #else |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2713 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
|
2714 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2715 GFX_write_string(&FontT105,&t7l3,text,line); |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2716 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2717 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2718 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2719 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
|
2720 if(agedColor > 1200) |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2721 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2722 agedColor = CLUT_WarningRed; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2723 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2724 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2725 if(agedColor > 600) |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2726 { |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2727 agedColor = CLUT_MenuLineUnselected; |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2728 } |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2729 else |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2730 if(agedColor > 20) |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2731 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2732 agedColor = CLUT_Font031; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2733 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2734 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2735 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
2736 agedColor = CLUT_Font020; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2737 } |
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 GFX_write_string_color(&FontT105,&t7l3,text,line,agedColor); |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
2740 } |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
2741 #endif |
38 | 2742 } |
2743 | |
2744 /* Private functions ---------------------------------------------------------*/ | |
2745 | |
2746 uint8_t t7_customtextPrepare(char * text) | |
2747 { | |
2748 uint8_t i, j, textptr, lineCount; | |
2749 char nextChar; | |
2750 | |
2751 textptr = 0; | |
2752 lineCount = 0; | |
2753 | |
2754 text[textptr++] = TXT_MINIMAL; | |
2755 | |
2756 j = 0; | |
2757 i = 0; | |
2758 do | |
2759 { | |
2760 j += i; | |
2761 i = 0; | |
2762 do | |
2763 { | |
2764 nextChar = settingsGetPointer()->customtext[i+j]; | |
2765 i++; | |
2766 if((!nextChar) || (nextChar =='\n') || (nextChar =='\r')) | |
2767 break; | |
2768 text[textptr++] = nextChar; | |
2769 } while (i < 12); | |
2770 | |
2771 if(!nextChar) | |
2772 break; | |
2773 | |
2774 if(lineCount < 3) | |
2775 { | |
2776 text[textptr++] = '\n'; | |
2777 text[textptr++] = '\r'; | |
2778 } | |
2779 lineCount++; | |
2780 for(uint8_t k=0;k<2;k++) | |
2781 { | |
2782 nextChar = settingsGetPointer()->customtext[i+j+k]; | |
2783 if((nextChar =='\n') || (nextChar =='\r')) | |
2784 i++; | |
2785 else | |
2786 break; | |
2787 } | |
2788 | |
2789 } while (lineCount < 4); | |
2790 | |
2791 text[textptr] = 0; | |
2792 return lineCount; | |
2793 } | |
2794 | |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2795 static void t7_colorscheme_mod(char *text) { |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2796 char *p = text; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2797 while (*p) { |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2798 if ((*p == '\020') && !GFX_is_colorschemeDiveStandard()) |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2799 *p = '\027'; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2800 p++; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
2801 } |
38 | 2802 } |
2803 | |
2804 void draw_frame(_Bool PluginBoxHeader, _Bool LinesOnTheSides, uint8_t colorBox, uint8_t colorLinesOnTheSide) | |
2805 { | |
2806 point_t LeftLow, WidthHeight; | |
2807 point_t start, stop; | |
2808 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2809 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2810 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2811 |
38 | 2812 // plugin box |
2813 LeftLow.x = CUSTOMBOX_LINE_LEFT; | |
2814 WidthHeight.x = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_LINE_LEFT; | |
2815 LeftLow.y = 60; | |
2816 WidthHeight.y = 440 - LeftLow.y; | |
2817 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, colorBox); | |
2818 | |
2819 if(PluginBoxHeader) | |
2820 { | |
2821 // plugin box - header | |
2822 start.x = CUSTOMBOX_LINE_LEFT; | |
2823 stop.x = CUSTOMBOX_LINE_RIGHT; | |
2824 stop.y = start.y = 440 - 60; | |
2825 GFX_draw_line(&t7screen, start, stop, colorBox); | |
2826 } | |
2827 | |
2828 if(LinesOnTheSides) | |
2829 { | |
2830 // aufteilung links | |
2831 start.x = 0; | |
2832 stop.x = CUSTOMBOX_LINE_LEFT; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2833 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2834 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2835 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2836 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2837 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2838 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2839 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2840 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2841 |
38 | 2842 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2843 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2844 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2845 stop.y = start.y = t7l2.WindowY0 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2846 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2847 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2848 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2849 stop.y = start.y = 480 - t7l2.WindowY1 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2850 } |
38 | 2851 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
2852 | |
2853 // aufteilung rechts | |
2854 start.x = CUSTOMBOX_LINE_RIGHT; | |
2855 stop.x = 799; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2856 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2857 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2858 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2859 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2860 else |
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 = 480 - t7l1.WindowY1 - 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 |
38 | 2865 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2866 if(!pSettings->FlipDisplay) |
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 stop.y = start.y = t7l2.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2869 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2870 else |
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 = 480 - t7l2.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2873 } |
38 | 2874 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
2875 } | |
2876 } | |
2877 | |
2878 | |
2879 /* Compass like TCOS shellfish | |
2880 * input is 0 to 359 | |
2881 * 2 px / 1 degree | |
2882 * Range is 148 degree with CUSTOMBOX_SPACE_INSIDE = 296 | |
2883 * one side is 74 degree (less than 90 degree) | |
2884 * internal 360 + 180 degree of freedom | |
2885 * use positive values only, shift by 360 below 90 mid position | |
2886 */ | |
2887 | |
2888 | |
2889 point_t t7_compass_circle(uint8_t id, uint16_t degree) | |
2890 { | |
2891 float fCos, fSin; | |
2892 const float piMult = ((2 * 3.14159) / 360); | |
2893 // const int radius[4] = {95,105,115,60}; | |
2894 const int radius[4] = {95,105,115,100}; | |
2895 const point_t offset = {.x = 400, .y = 250}; | |
2896 | |
2897 static point_t r[4][360] = { 0 }; | |
2898 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2899 if(r[0][0].y == 0) /* calc table at first call only */ |
38 | 2900 { |
2901 for(int i=0;i<360;i++) | |
2902 { | |
2903 fCos = cos(i * piMult); | |
2904 fSin = sin(i * piMult); | |
2905 for(int j=0;j<4;j++) | |
2906 { | |
2907 r[j][i].x = offset.x + (int)(fSin * radius[j]); | |
2908 r[j][i].y = offset.y + (int)(fCos * radius[j]); | |
2909 } | |
2910 } | |
2911 } | |
2912 if(id > 3) id = 0; | |
2913 if(degree > 359) degree = 0; | |
2914 return r[id][degree]; | |
2915 } | |
2916 | |
2917 /* range should be 0 to 30 bar if 300 meter with 100% of nitrogen or helium | |
2918 * T24 is 28 high | |
2919 */ | |
2920 void t7_tissues(const SDiveState * pState) | |
2921 { | |
2922 point_t start, change, stop; | |
2923 float value; | |
2924 uint16_t front, cns100pixel; | |
2925 char text[256]; | |
2926 uint8_t textpointer = 0; | |
2927 uint8_t color; | |
2928 | |
2929 float percent_N2; | |
2930 float percent_He; | |
2931 float partial_pressure_N2; | |
2932 float partial_pressure_He; | |
2933 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2934 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2935 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2936 |
38 | 2937 |
2938 /* N2 */ | |
2939 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2940 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2941 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2942 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2943 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2944 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2945 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2946 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2947 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2948 } |
38 | 2949 t7cY0free.WindowNumberOfTextLines = 3; |
2950 | |
2951 text[textpointer++] = '\030'; | |
2952 text[textpointer++] = TXT_2BYTE; | |
2953 text[textpointer++] = TXT2BYTE_Nitrogen; | |
2954 text[textpointer++] = '\n'; | |
2955 text[textpointer++] = '\r'; | |
2956 text[textpointer++] = TXT_2BYTE; | |
2957 text[textpointer++] = TXT2BYTE_Helium; | |
2958 text[textpointer++] = '\n'; | |
2959 text[textpointer++] = '\r'; | |
2960 text[textpointer++] = TXT_2BYTE; | |
2961 text[textpointer++] = TXT2BYTE_CNS; | |
2962 text[textpointer++] = 0; | |
2963 | |
2964 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
2965 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2966 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2967 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2968 start.y = t7cH.WindowY0 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2969 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2970 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2971 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2972 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2973 } |
38 | 2974 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
2975 stop.x = start.x + CUSTOMBOX_SPACE_INSIDE; | |
2976 | |
2977 for(int i=0;i<16;i++) | |
2978 { | |
2979 stop.y = start.y; | |
2980 change.y = start.y; | |
2981 | |
2982 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
|
2983 value *= 80; |
38 | 2984 |
2985 if(value < 0) | |
2986 front = 0; | |
2987 else | |
2988 if(value > CUSTOMBOX_SPACE_INSIDE) | |
2989 front = CUSTOMBOX_SPACE_INSIDE; | |
2990 else | |
2991 front = (uint16_t)value; | |
2992 | |
2993 change.x = start.x + front; | |
2994 if(change.x != start.x) | |
2995 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
2996 if(change.x != stop.x) | |
2997 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
2998 | |
2999 start.y -= 3; | |
3000 } | |
3001 | |
3002 /* He */ | |
3003 start.y -= 28 + 14; | |
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_helium_bar[i]; | |
3010 value *= 80;//20 | |
3011 | |
3012 if(value < 0) | |
3013 front = 0; | |
3014 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
3015 front = CUSTOMBOX_SPACE_INSIDE; | |
3016 else | |
3017 front = (uint16_t)value; | |
3018 | |
3019 change.x = start.x + front; | |
3020 if(change.x != start.x) | |
3021 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
3022 if(change.x != stop.x) | |
3023 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3024 | |
3025 start.y -= 3; | |
3026 } | |
3027 | |
3028 /* CNS == Oxygen */ | |
3029 start.y -= 28 + 14; | |
3030 | |
3031 cns100pixel = (8 * CUSTOMBOX_SPACE_INSIDE) / 10; | |
3032 value = pState->lifeData.cns; | |
3033 value *= cns100pixel; | |
3034 value /= 100; | |
3035 | |
3036 if(value < 0) | |
3037 front = 0; | |
3038 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
3039 front = CUSTOMBOX_SPACE_INSIDE; | |
3040 else | |
3041 front = (uint16_t)value; | |
3042 | |
3043 if(pState->lifeData.cns < 95) | |
3044 color = CLUT_Font030; | |
3045 else if(pState->lifeData.cns < 100) | |
3046 color = CLUT_WarningYellow; | |
3047 else | |
3048 color = CLUT_WarningRed; | |
3049 | |
3050 for(int i=0;i<16;i++) | |
3051 { | |
3052 stop.y = start.y; | |
3053 change.y = start.y; | |
3054 | |
3055 change.x = start.x + front; | |
3056 if(change.x != start.x) | |
3057 GFX_draw_thick_line(1,&t7screen, start, change, color); | |
3058 if(change.x != stop.x) | |
3059 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3060 | |
3061 start.y -= 3; | |
3062 } | |
3063 | |
3064 /* where is the onload/offload limit for N2 and He */ | |
3065 decom_get_inert_gases(pState->lifeData.pressure_ambient_bar, &pState->lifeData.actualGas, &percent_N2, &percent_He); | |
3066 partial_pressure_N2 = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_N2; | |
3067 partial_pressure_He = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_He; | |
3068 | |
3069 // Nitrogen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3070 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3071 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3072 start.y = t7cH.WindowY0 + 1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3073 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3074 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3075 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3076 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3077 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3078 |
38 | 3079 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
|
3080 if((percent_N2 > 0) && (partial_pressure_N2 > 0.7512f)) |
38 | 3081 { |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3082 value = partial_pressure_N2 - 0.7512f; |
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3083 value *= 80; |
38 | 3084 |
3085 if(value < 0) | |
3086 front = 3; | |
3087 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
3088 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
3089 else | |
3090 front = (uint16_t)value; | |
3091 } | |
3092 else | |
3093 { | |
3094 front = 1; | |
3095 } | |
3096 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
3097 stop.x = start.x; | |
3098 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
3099 | |
3100 | |
3101 // Helium vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3102 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3103 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3104 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
|
3105 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3106 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3107 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3108 start.y = t7cH.WindowY1 - 5 - 3*16 - 28 - 14; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3109 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3110 |
38 | 3111 stop.y = start.y - (3 * 15) - 1; |
3112 if((percent_He > 0) && (partial_pressure_He > 0.01f)) // 0.5f | |
3113 { | |
3114 | |
3115 value = partial_pressure_He; | |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3116 value *= 80; |
38 | 3117 |
3118 if(value < 0) | |
3119 front = 3; | |
3120 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
3121 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
3122 else | |
3123 front = (uint16_t)value; | |
3124 } | |
3125 else | |
3126 { | |
3127 front = 1; | |
3128 } | |
3129 | |
3130 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
3131 stop.x = start.x; | |
3132 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
3133 | |
3134 // Oxygen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3135 if(!pSettings->FlipDisplay) |
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 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
|
3138 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3139 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3140 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3141 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
|
3142 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3143 |
38 | 3144 stop.y = start.y - (3 * 15) - 1; |
3145 | |
3146 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + cns100pixel; | |
3147 stop.x = start.x; | |
3148 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
|
3149 |
38 | 3150 } |
3151 | |
3152 | |
3153 void t7_debug(void) | |
3154 { | |
3155 char text[256+50]; | |
3156 uint8_t textpointer = 0; | |
3157 | |
3158 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
3159 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
3160 t7cY0free.WindowNumberOfTextLines = 3; | |
3161 | |
3162 textpointer += snprintf(&text[textpointer],50,"Ambient [bar]\n\r"); | |
3163 textpointer += snprintf(&text[textpointer],50,"Surface [bar] + salt\n\r"); | |
3164 // textpointer += snprintf(&text[textpointer],50,"Difference [mbar]\n\r"); | |
3165 textpointer += snprintf(&text[textpointer],50,"ShallowCounter [s]\n\r"); | |
3166 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3167 | |
3168 t7cY0free.WindowY0 -= 52; | |
3169 // 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)); | |
3170 snprintf(text,60, | |
3171 "%0.2f\n\r" | |
3172 "%0.2f %u%%\n\r" | |
3173 "%u" | |
3174 ,stateUsed->lifeData.pressure_ambient_bar | |
3175 ,stateUsed->lifeData.pressure_surface_bar | |
3176 ,settingsGetPointer()->salinity | |
3177 ,stateUsed->lifeData.counterSecondsShallowDepth); | |
3178 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
3179 } | |
3180 | |
3181 | |
3182 void t7_SummaryOfLeftCorner(void) | |
3183 { | |
3184 char text[256+60]; | |
3185 uint8_t textpointer = 0; | |
3186 | |
3187 const SDecoinfo * pDecoinfoStandard; | |
3188 const SDecoinfo * pDecoinfoFuture; | |
3189 float fCNS; | |
3190 | |
3191 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
3192 { | |
3193 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
3194 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
3195 } | |
3196 else | |
3197 { | |
3198 pDecoinfoStandard = &stateUsed->decolistVPM; | |
3199 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
3200 } | |
3201 | |
3202 fCNS = stateUsed->lifeData .cns; | |
3203 if(fCNS > 999) | |
3204 fCNS = 999; | |
3205 | |
3206 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3207 if(settingsGetPointer()->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3208 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3209 t7cY0free.WindowY1 = 400; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3210 } |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3211 |
38 | 3212 t7cY0free.WindowLineSpacing = 48; |
3213 t7cY0free.WindowNumberOfTextLines = 6; | |
3214 t7cY0free.WindowTab = 420; | |
3215 | |
3216 // header | |
3217 textpointer = 0; | |
3218 text[textpointer++] = '\032'; | |
3219 text[textpointer++] = '\016'; | |
3220 text[textpointer++] = '\016'; | |
3221 text[textpointer++] = TXT_ppO2; | |
3222 text[textpointer++] = '\n'; | |
3223 text[textpointer++] = '\r'; | |
3224 text[textpointer++] = TXT_Ceiling; | |
3225 text[textpointer++] = '\n'; | |
3226 text[textpointer++] = '\r'; | |
3227 text[textpointer++] = TXT_ActualGradient; | |
3228 text[textpointer++] = '\n'; | |
3229 text[textpointer++] = '\r'; | |
3230 text[textpointer++] = TXT_CNS; | |
3231 text[textpointer++] = '\n'; | |
3232 text[textpointer++] = '\r'; | |
3233 text[textpointer++] = TXT_FutureTTS; | |
3234 text[textpointer++] = '\017'; | |
3235 text[textpointer++] = 0; | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3236 |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3237 if(!settingsGetPointer()->FlipDisplay) |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3238 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3239 t7cY0free.WindowX0 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3240 t7cY0free.WindowY0 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3241 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3242 t7cY0free.WindowX0 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3243 t7cY0free.WindowY0 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3244 } |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3245 else |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3246 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3247 t7cY0free.WindowY1 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3248 t7cY0free.WindowX1 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3249 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3250 t7cY0free.WindowY1 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3251 t7cY0free.WindowX1 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3252 } |
38 | 3253 textpointer = 0; |
3254 text[textpointer++] = '\t'; | |
3255 textpointer += snprintf(&text[textpointer],10,"\020%01.2f", stateUsed->lifeData.ppO2); | |
3256 text[textpointer++] = '\n'; | |
3257 text[textpointer++] = '\r'; | |
3258 text[textpointer++] = '\t'; | |
3259 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
|
3260 textpointer += snprintf(&text[textpointer],10,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); |
38 | 3261 else |
215
4a0ebade04f5
Bugfix, trivial: correctly present avg depth in overview custom
Jan Mulder <jlmulder@xs4all.nl>
parents:
214
diff
changeset
|
3262 textpointer += snprintf(&text[textpointer],10,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); |
38 | 3263 text[textpointer++] = '\n'; |
3264 text[textpointer++] = '\r'; | |
3265 text[textpointer++] = '\t'; | |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
3266 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017", 100 * pDecoinfoStandard->super_saturation); |
38 | 3267 text[textpointer++] = '\n'; |
3268 text[textpointer++] = '\r'; | |
3269 text[textpointer++] = '\t'; | |
3270 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017",fCNS); | |
3271 text[textpointer++] = '\n'; | |
3272 text[textpointer++] = '\r'; | |
3273 text[textpointer++] = '\t'; | |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3274 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
|
3275 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
|
3276 else |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3277 textpointer += snprintf(&text[textpointer],10,"\020%ih", (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
38 | 3278 text[textpointer++] = 0; |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3279 t7_colorscheme_mod(text); |
38 | 3280 GFX_write_string(&FontT42, &t7cY0free, text, 1); |
3281 } | |
3282 | |
3283 void t7_compass(uint16_t ActualHeading, uint16_t UserSetHeading) | |
3284 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3285 uint16_t ActualHeadingRose; |
38 | 3286 uint16_t LeftBorderHeading, LineHeading; |
3287 uint32_t offsetPicture; | |
3288 point_t start, stop, center; | |
3289 static int32_t LastHeading = 0; | |
3290 int32_t newHeading = 0; | |
3291 int32_t diff = 0; | |
3292 int32_t diff2 = 0; | |
3293 | |
3294 int32_t diffAbs = 0; | |
3295 int32_t diffAbs2 = 0; | |
3296 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3297 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3298 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3299 |
38 | 3300 newHeading = ActualHeading; |
3301 | |
3302 diff = newHeading - LastHeading; | |
3303 | |
3304 if(newHeading < LastHeading) | |
3305 diff2 = newHeading + 360 - LastHeading; | |
3306 else | |
3307 diff2 = newHeading - 360 - LastHeading; | |
3308 | |
3309 diffAbs = diff; | |
3310 if(diffAbs < 0) | |
3311 diffAbs *= -1; | |
3312 | |
3313 diffAbs2 = diff2; | |
3314 if(diffAbs2 < 0) | |
3315 diffAbs2 *= -1; | |
3316 | |
3317 | |
3318 if(diffAbs <= diffAbs2) | |
3319 newHeading = LastHeading + (diff / 2); | |
3320 else | |
3321 newHeading = LastHeading + (diff2 / 2); | |
3322 | |
3323 if(newHeading < 0) | |
3324 newHeading += 360; | |
3325 else | |
3326 if(newHeading >= 360) | |
3327 newHeading -= 360; | |
3328 | |
3329 LastHeading = newHeading; | |
3330 ActualHeading = newHeading; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3331 ActualHeadingRose = ActualHeading; |
225
2bb1db22b5f5
cleanup: random set of cleanups
Jan Mulder <jlmulder@xs4all.nl>
parents:
222
diff
changeset
|
3332 |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3333 if(pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3334 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3335 ActualHeadingRose = 360 - ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3336 if (ActualHeadingRose < 170) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3337 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3338 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3339 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3340 if (ActualHeadingRose < 90) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3341 ActualHeading = ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3342 } |
38 | 3343 |
3344 // new hw 160822 | |
3345 // if (ActualHeading >= 360 + 90) | |
3346 // ActualHeading = 360; | |
3347 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3348 LeftBorderHeading = 2 * (ActualHeadingRose - (CUSTOMBOX_SPACE_INSIDE/4)); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3349 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3350 if(pSettings->FlipDisplay) /* add offset caused by mirrowed drawing */ |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3351 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3352 LeftBorderHeading += 2 * 80; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3353 } |
38 | 3354 |
3355 offsetPicture = LeftBorderHeading * t7screenCompass.ImageHeight * 2; | |
3356 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3357 /* the background is used to draw the rotating compass rose */ |
38 | 3358 background.pointer = t7screenCompass.FBStartAdress+offsetPicture; |
3359 background.x0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
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 background.y0 = 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3363 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3364 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3365 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3366 background.y0 = 480 - t7screenCompass.ImageHeight - 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3367 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3368 |
38 | 3369 background.width = CUSTOMBOX_SPACE_INSIDE; |
3370 background.height = t7screenCompass.ImageHeight; | |
3371 | |
3372 | |
3373 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + (CUSTOMBOX_SPACE_INSIDE/2); | |
3374 stop.x = start.x; | |
3375 start.y = 65; | |
3376 stop.y = start.y + 55; | |
3377 GFX_draw_line(&t7screen, start, stop, CLUT_Font030); | |
3378 | |
3379 | |
3380 center.x = start.x; | |
3381 center.y = 300; | |
3382 | |
3383 stop.x = center.x + 44; | |
3384 stop.y = center.y + 24; | |
3385 | |
3386 | |
3387 while(ActualHeading > 359) ActualHeading -= 360; | |
3388 | |
3389 LineHeading = 360 - ActualHeading; | |
3390 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(0,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font030); // North | |
3391 LineHeading += 90; | |
3392 if(LineHeading > 359) LineHeading -= 360; | |
3393 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Maintick | |
3394 LineHeading += 90; | |
3395 if(LineHeading > 359) LineHeading -= 360; | |
3396 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3397 LineHeading += 90; | |
3398 if(LineHeading > 359) LineHeading -= 360; | |
3399 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3400 | |
3401 LineHeading = 360 - ActualHeading; | |
3402 LineHeading += 45; | |
3403 if(LineHeading > 359) LineHeading -= 360; | |
3404 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3405 LineHeading += 90; | |
3406 if(LineHeading > 359) LineHeading -= 360; | |
3407 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3408 LineHeading += 90; | |
3409 if(LineHeading > 359) LineHeading -= 360; | |
3410 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3411 LineHeading += 90; | |
3412 if(LineHeading > 359) LineHeading -= 360; | |
3413 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3414 | |
3415 LineHeading = 360 - ActualHeading; | |
3416 LineHeading += 22; | |
3417 if(LineHeading > 359) LineHeading -= 360; | |
3418 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3419 LineHeading += 45; | |
3420 if(LineHeading > 359) LineHeading -= 360; | |
3421 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3422 LineHeading += 45; | |
3423 if(LineHeading > 359) LineHeading -= 360; | |
3424 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3425 LineHeading += 45; | |
3426 if(LineHeading > 359) LineHeading -= 360; | |
3427 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3428 LineHeading += 45; | |
3429 if(LineHeading > 359) LineHeading -= 360; | |
3430 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
3431 LineHeading += 45; | |
3432 if(LineHeading > 359) LineHeading -= 360; | |
3433 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3434 LineHeading += 45; | |
3435 if(LineHeading > 359) LineHeading -= 360; | |
3436 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3437 LineHeading += 45; | |
3438 if(LineHeading > 359) LineHeading -= 360; | |
3439 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
3440 | |
3441 if(UserSetHeading) | |
3442 { | |
3443 LineHeading = UserSetHeading + 360 - ActualHeading; | |
3444 if(LineHeading > 359) LineHeading -= 360; | |
3445 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserHeadingTick); | |
3446 | |
3447 // R�ckpeilung, User Back Heading | |
3448 LineHeading = UserSetHeading + 360 + 180 - ActualHeading; | |
3449 if(LineHeading > 359) LineHeading -= 360; | |
3450 if(LineHeading > 359) LineHeading -= 360; | |
3451 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserBackHeadingTick); | |
3452 } | |
3453 | |
3454 center.x = start.x; | |
3455 center.y = 250; | |
3456 GFX_draw_circle(&t7screen, center, 116, CLUT_Font030); | |
3457 GFX_draw_circle(&t7screen, center, 118, CLUT_Font030); | |
3458 GFX_draw_circle(&t7screen, center, 117, CLUT_Font030); | |
3459 | |
3460 | |
3461 } | |
3462 | |
3463 | |
3464 /* Font_T42: N is 27 px, S is 20 px, W is 36 px, E is 23 px | |
3465 * max is NW with 63 px | |
3466 * Font_T24: N is 15 px, S is 12 px, W is 20 px, E is 13 px | |
3467 * max is NW with 35 px | |
3468 * NE is 28 px | |
3469 * SW is 32 px | |
3470 * SE is 25 px | |
3471 * space between each is 45 px * 2 | |
3472 * FirstItem List | |
3473 * \177 \177 prepare for size | |
3474 */ | |
3475 void init_t7_compass(void) | |
3476 { | |
3477 t7screenCompass.FBStartAdress = getFrame(21); | |
3478 | |
3479 char text[256]; | |
3480 uint8_t textpointer = 0; | |
3481 | |
3482 text[textpointer++] = '\030'; | |
3483 text[textpointer++] = '\177'; | |
3484 text[textpointer++] = '\177'; | |
3485 text[textpointer++] = 76; // 90 - 14 | |
3486 text[textpointer++] = '\016'; | |
3487 text[textpointer++] = '\016'; | |
3488 text[textpointer++] = 'N'; | |
3489 text[textpointer++] = 'E'; // 96 + 28 = 124 total | |
3490 text[textpointer++] = '\017'; | |
3491 text[textpointer++] = '\177'; | |
3492 text[textpointer++] = '\177'; | |
3493 text[textpointer++] = 64; // 90 - 14 - 12 | |
3494 text[textpointer++] = 'E'; // 124 + 74 + 23 = 221 total | |
3495 text[textpointer++] = '\177'; | |
3496 text[textpointer++] = '\177'; | |
3497 text[textpointer++] = 66; // 90 - 11 - 13 | |
3498 text[textpointer++] = '\016'; | |
3499 text[textpointer++] = '\016'; | |
3500 text[textpointer++] = 'S'; | |
3501 text[textpointer++] = 'E'; | |
3502 text[textpointer++] = '\017'; | |
3503 text[textpointer++] = '\177'; | |
3504 text[textpointer++] = '\177'; | |
3505 text[textpointer++] = 68; // 90 - 12 - 10 | |
3506 text[textpointer++] = 'S'; | |
3507 text[textpointer++] = '\177'; | |
3508 text[textpointer++] = '\177'; | |
3509 text[textpointer++] = 64; // 90 - 10 - 16 | |
3510 text[textpointer++] = '\016'; | |
3511 text[textpointer++] = '\016'; | |
3512 text[textpointer++] = 'S'; | |
3513 text[textpointer++] = 'W'; | |
3514 text[textpointer++] = '\017'; | |
3515 text[textpointer++] = '\177'; | |
3516 text[textpointer++] = '\177'; | |
3517 text[textpointer++] = 56; // 90 - 16 - 18 | |
3518 text[textpointer++] = 'W'; | |
3519 text[textpointer++] = '\177'; | |
3520 text[textpointer++] = '\177'; | |
3521 text[textpointer++] = 54; // 90 - 18 - 18 | |
3522 text[textpointer++] = '\016'; | |
3523 text[textpointer++] = '\016'; | |
3524 text[textpointer++] = 'N'; | |
3525 text[textpointer++] = 'W'; | |
3526 text[textpointer++] = '\017'; | |
3527 text[textpointer++] = '\177'; | |
3528 text[textpointer++] = '\177'; | |
3529 text[textpointer++] = 59; // 90 - 17 - 14 | |
3530 text[textpointer++] = 'N'; | |
3531 text[textpointer++] = '\177'; | |
3532 text[textpointer++] = '\177'; | |
3533 text[textpointer++] = 63; // 90 - 13 - 14 | |
3534 text[textpointer++] = '\016'; | |
3535 text[textpointer++] = '\016'; | |
3536 text[textpointer++] = 'N'; | |
3537 text[textpointer++] = 'E'; | |
3538 text[textpointer++] = '\017'; | |
3539 text[textpointer++] = '\177'; | |
3540 text[textpointer++] = '\177'; | |
3541 text[textpointer++] = 64; // 90 - 14 - 12 | |
3542 text[textpointer++] = 'E'; | |
3543 text[textpointer++] = '\177'; | |
3544 text[textpointer++] = '\177'; | |
3545 text[textpointer++] = 66; // 90 - 11 - 13 | |
3546 text[textpointer++] = '\016'; | |
3547 text[textpointer++] = '\016'; | |
3548 text[textpointer++] = 'S'; | |
3549 text[textpointer++] = 'E'; | |
3550 text[textpointer++] = '\017'; | |
3551 text[textpointer++] = '\177'; | |
3552 text[textpointer++] = '\177'; | |
3553 text[textpointer++] = 68; // 90 - 12 - 10 | |
3554 text[textpointer++] = 'S'; | |
3555 text[textpointer++] = '\177'; | |
3556 text[textpointer++] = '\177'; | |
3557 text[textpointer++] = 64; // 90 - 10 - 16 | |
3558 text[textpointer++] = '\016'; | |
3559 text[textpointer++] = '\016'; | |
3560 text[textpointer++] = 'S'; | |
3561 text[textpointer++] = 'W'; | |
3562 text[textpointer++] = '\017'; | |
3563 text[textpointer++] = 0; // end | |
3564 | |
3565 GFX_write_string(&FontT42,&t7pCompass,text,1); | |
3566 | |
3567 releaseAllFramesExcept(21,t7screenCompass.FBStartAdress); | |
3568 } | |
3569 | |
3570 | |
3571 void t7_miniLiveLogProfile(void) | |
3572 { | |
3573 SWindowGimpStyle wintemp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3574 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3575 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3576 |
38 | 3577 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
3578 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3579 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3580 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3581 wintemp.top = 480 - t7l1.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3582 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3583 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3584 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3585 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3586 wintemp.top = t7l1.WindowY1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3587 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3588 } |
38 | 3589 |
3590 uint16_t max_depth = (uint16_t)(stateUsed->lifeData.max_depth_meter * 10); | |
3591 | |
3592 GFX_graph_print(&t7screen, &wintemp, 0,1,0, max_depth, getMiniLiveLogbookPointerToData(), getMiniLiveLogbookActualDataLength(), CLUT_Font030, NULL); | |
3593 } | |
3594 | |
3595 void t7_logo_OSTC(void) | |
3596 { | |
3597 SWindowGimpStyle windowGimp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3598 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3599 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3600 |
38 | 3601 /* OSTC logo */ |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3602 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3603 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3604 windowGimp.left = t7l1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3605 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3606 else |
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 windowGimp.left = t7r1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3609 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3610 |
38 | 3611 windowGimp.top = 40 + 32; |
3612 GFX_draw_image_monochrome(&t7screen, windowGimp, &ImgOSTC, 0); | |
3613 } |