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