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