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