Mercurial > public > ostc4
annotate Discovery/Src/t7.c @ 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).
author | heinrichsweikamp |
---|---|
date | Fri, 21 Apr 2023 09:47:44 +0200 |
parents | 9825dcf50675 |
children | 2c243233c999 |
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); | |
2783 } | |
2784 else if(get_globalState() == StDSIM1) | |
2785 { | |
2786 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveQuitQ); | |
2787 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2788 } | |
2789 else if(get_globalState() == StDSIM2) | |
2790 { | |
2791 if(settingsGetPointer()->nonMetricalSystem) | |
2792 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-3.33ft "); | |
2793 else | |
2794 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-1m "); | |
2795 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2796 | |
2797 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2798 , unit_depth_integer(simulation_get_aim_depth()) | |
2799 , unit_depth_char1() | |
2800 , unit_depth_char2() | |
2801 ); | |
2802 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2803 | |
2804 } | |
2805 else if(get_globalState() == StDSIM3) | |
2806 { | |
2807 if(settingsGetPointer()->nonMetricalSystem) | |
2808 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+3.33ft "); | |
2809 else | |
2810 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+1m "); | |
2811 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2812 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2813 , unit_depth_integer(simulation_get_aim_depth()) | |
2814 , unit_depth_char1() | |
2815 , unit_depth_char2() | |
2816 ); | |
2817 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2818 } | |
2819 else if(get_globalState() == StDSIM4) | |
2820 { | |
2821 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+5' "); | |
2822 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
2823 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
2824 , unit_depth_integer(simulation_get_aim_depth()) | |
2825 , unit_depth_char1() | |
2826 , unit_depth_char2() | |
2827 ); | |
2828 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
2829 } | |
2830 else | |
2831 { | |
2832 /* gas mix */ | |
2833 oxygen_percentage = 100; | |
2834 oxygen_percentage -= stateUsed->lifeData.actualGas.nitrogen_percentage; | |
2835 oxygen_percentage -= stateUsed->lifeData.actualGas.helium_percentage; | |
2836 | |
2837 textPointer = 0; | |
2838 TextC2[textPointer++] = '\020'; | |
2839 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
2840 { | |
2841 TextC2[textPointer++] = '\a'; | |
2842 } | |
2843 else | |
2844 { | |
2845 float fPpO2limitHigh, fPpO2now; | |
2846 | |
2847 if(actualLeftMaxDepth(stateUsed)) | |
2848 fPpO2limitHigh = settingsGetPointer()->ppO2_max_deco; | |
2849 else | |
2850 fPpO2limitHigh = settingsGetPointer()->ppO2_max_std; | |
2851 | |
2852 fPpO2now = (stateUsed->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * oxygen_percentage; | |
2853 | |
2854 if((fPpO2now > fPpO2limitHigh) || (fPpO2now < (float)(settingsGetPointer()->ppO2_min))) | |
2855 TextC2[textPointer++] = '\025'; | |
2856 } | |
2857 TextC2[textPointer++] = '\002'; | |
2858 textPointer += tHome_gas_writer(oxygen_percentage,stateUsed->lifeData.actualGas.helium_percentage,&TextC2[textPointer]); | |
2859 | |
2860 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
2861 { | |
2862 if(TextC2[0] == '\020') | |
2863 { | |
2864 TextC2[0] = '\004'; // NOP | |
2865 } | |
2866 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
2867 } | |
2868 else | |
2869 { | |
2870 t7_colorscheme_mod(TextC2); | |
2871 GFX_write_string(&FontT48,&t7c2,TextC2,0); // T54 has only numbers | |
2872 } | |
2873 | |
2874 if(stateUsed->diveSettings.ccrOption) | |
2875 { | |
662 | 2876 if(isLoopMode(stateUsed->diveSettings.diveMode)) |
38 | 2877 { |
2878 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
662 | 2879 |
38 | 2880 if(stateUsed->warnings.betterSetpoint && warning_count_high_time && (stateUsed->diveSettings.diveMode == DIVEMODE_CCR)) |
2881 { | |
2882 TextC2[0] = '\a'; // inverse instead of color \020 | |
2883 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
2884 } | |
2885 else | |
2886 { | |
2887 t7_colorscheme_mod(TextC2); | |
2888 GFX_write_string(&FontT48,&t7c2,TextC2,0); | |
2889 } | |
2890 } | |
2891 } | |
2892 else if(settingsGetPointer()->alwaysShowPPO2) | |
2893 { | |
2894 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
2895 t7_colorscheme_mod(TextC2); | |
2896 GFX_write_string(&FontT48,&t7c2,TextC2,0); | |
2897 } | |
2898 } | |
2899 | |
2900 /* algorithm, ccr, bailout and battery */ | |
2901 /* and permanent warnings (CNS) */ | |
2902 | |
2903 if((stateUsed->warnings.cnsHigh) && display_count_high_time) | |
2904 { | |
2905 TextC2[0] = '\f'; | |
2906 TextC2[1] = TXT_2BYTE; | |
2907 TextC2[2] = TXT2BYTE_WarnCnsHigh; | |
2908 TextC2[3] = 0; | |
662 | 2909 GFX_write_string_color(&FontT42,&t7c1,TextC2,0,CLUT_WarningRed); |
38 | 2910 } |
2911 else | |
2912 { | |
2913 if(stateUsed->warnings.aGf) | |
2914 { | |
2915 GFX_write_string_color(&FontT48,&t7c1,"\f" "aGF",0,CLUT_WarningYellow); | |
2916 } | |
2917 else if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
2918 { | |
2919 GFX_write_string(&FontT48,&t7c1,"\027\f" "GF",0); | |
2920 } | |
2921 else | |
2922 { | |
2923 GFX_write_string(&FontT48,&t7c1,"\027\f" "VPM",0); | |
2924 } | |
2925 | |
2926 if(stateUsed->diveSettings.diveMode == DIVEMODE_CCR) | |
2927 GFX_write_string(&FontT24,&t7c1,"\027\f\002" "CCR",0); | |
2928 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80" "CCR",0); | |
2929 else | |
662 | 2930 if(stateUsed->diveSettings.diveMode == DIVEMODE_PSCR) |
2931 GFX_write_string(&FontT24,&t7c1,"\027\f\002" "PSCR",0); | |
2932 else | |
38 | 2933 if(stateUsed->diveSettings.ccrOption) |
2934 GFX_write_string(&FontT24,&t7c1,"\f\002\024" "Bailout",0); | |
2935 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80\024" "Bailout",0); | |
2936 } | |
2937 TextC1[0] = '\020'; | |
2938 TextC1[1] = '3'; | |
2939 TextC1[2] = '1'; | |
2940 TextC1[3] = '1'; | |
2941 TextC1[4] = '1'; | |
2942 TextC1[5] = '1'; | |
2943 TextC1[6] = '1'; | |
2944 TextC1[7] = '1'; | |
2945 TextC1[8] = '1'; | |
2946 TextC1[9] = '1'; | |
2947 TextC1[10] = '1'; | |
2948 TextC1[11] = '1'; | |
2949 TextC1[12] = '0'; | |
2950 TextC1[13] = 0; | |
2951 | |
2952 for(int i=1;i<=10;i++) | |
2953 { | |
2954 if( stateUsed->lifeData.battery_charge > (9 * i)) | |
2955 TextC1[i+1] += 1; | |
2956 } | |
2957 | |
2958 if(stateUsed->warnings.lowBattery) | |
2959 { | |
2960 TextC1[0] = '\025'; | |
2961 if(warning_count_high_time) | |
2962 { | |
2963 for(int i=2;i<=11;i++) | |
2964 TextC1[i] = '1'; | |
2965 } | |
2966 else | |
2967 { | |
2968 TextC1[2] = '2'; | |
2969 } | |
2970 GFX_write_string(&Batt24,&t7batt,TextC1,0); | |
2971 | |
2972 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
2973 { | |
2974 snprintf(TextC1,16,"\004\025\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
2975 if(warning_count_high_time) | |
2976 TextC1[0] = '\a'; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2977 GFX_write_string(&FontT24,&t7voltage,TextC1,0); |
38 | 2978 } |
2979 } | |
2980 else | |
2981 { | |
2982 t7_colorscheme_mod(TextC1); | |
2983 GFX_write_string(&Batt24,&t7batt,TextC1,0); | |
2984 | |
2985 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
2986 { | |
2987 snprintf(TextC1,16,"\020\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
2988 t7_colorscheme_mod(TextC1); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2989 GFX_write_string(&FontT24,&t7voltage,TextC1,0); // t7batt |
38 | 2990 } |
2991 } | |
2992 | |
2993 /* customizable left lower corner */ | |
2994 t7_refresh_divemode_userselected_left_lower_corner(); | |
2995 | |
2996 | |
2997 /* customview - option 1 | |
2998 * warning - option 2 */ | |
2999 if(stateUsed->warnings.numWarnings) | |
3000 customview_warnings = t7_test_customview_warnings(); | |
3001 | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
3002 background.pointer = 0; |
38 | 3003 if(customview_warnings && warning_count_high_time) |
3004 t7_show_customview_warnings(); | |
3005 else | |
3006 t7_refresh_customview(); | |
3007 | |
3008 /* the frame */ | |
3009 draw_frame(1,1, CLUT_DIVE_pluginbox, CLUT_DIVE_FieldSeperatorLines); | |
3010 } | |
3011 | |
3012 void t7_set_field_to_primary(void) | |
3013 { | |
3014 if(stateUsed->mode == MODE_DIVE) | |
3015 selection_custom_field = settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary; | |
3016 } | |
3017 | |
3018 void t7_change_field(void) | |
3019 { | |
3020 selection_custom_field++; | |
3021 | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3022 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
|
3023 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3024 selection_custom_field++; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3025 } |
662 | 3026 if((selection_custom_field == LLC_ScrubberTime) && ((settingsGetPointer()->scrubTimerMode == SCRUB_TIMER_OFF) || (!isLoopMode(settingsGetPointer()->dive_mode)))) |
656 | 3027 { |
3028 selection_custom_field++; | |
3029 } | |
662 | 3030 #ifdef ENABLE_PSCR_MODE |
3031 if((selection_custom_field == LCC_SimPpo2) && (settingsGetPointer()->dive_mode != DIVEMODE_PSCR)) | |
3032 { | |
3033 selection_custom_field++; | |
3034 } | |
3035 #endif | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3036 if(selection_custom_field >= LLC_END) |
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 = LLC_Empty; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3039 } |
38 | 3040 } |
3041 | |
3042 | |
3043 void t7_refresh_divemode_userselected_left_lower_corner(void) | |
3044 { | |
3045 if(!selection_custom_field) | |
3046 return; | |
3047 | |
3048 char headerText[10]; | |
3049 char text[TEXTSIZE]; | |
3050 uint8_t textpointer = 0; | |
3051 _Bool tinyHeaderFont = 0; | |
3052 uint8_t line = 0; | |
457 | 3053 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3054 uint16_t agedColor = 0; |
457 | 3055 #endif |
38 | 3056 |
3057 SDivetime Stopwatch = {0,0,0,0}; | |
3058 float fAverageDepth, fAverageDepthAbsolute; | |
3059 const SDecoinfo * pDecoinfoStandard; | |
3060 const SDecoinfo * pDecoinfoFuture; | |
3061 float fCNS; | |
3062 float temperature; | |
710 | 3063 SSettings* pSettings = settingsGetPointer(); |
38 | 3064 |
3065 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
3066 { | |
3067 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
3068 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
3069 } | |
3070 else | |
3071 { | |
3072 pDecoinfoStandard = &stateUsed->decolistVPM; | |
3073 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
3074 } | |
3075 | |
3076 Stopwatch.Total = timer_Stopwatch_GetTime(); | |
3077 Stopwatch.Minutes = Stopwatch.Total / 60; | |
3078 Stopwatch.Seconds = Stopwatch.Total - ( Stopwatch.Minutes * 60 ); | |
3079 fAverageDepth = timer_Stopwatch_GetAvarageDepth_Meter(); | |
3080 fAverageDepthAbsolute = stateUsed->lifeData.average_depth_meter; | |
3081 | |
3082 headerText[0] = '\032'; | |
3083 headerText[1] = '\f'; | |
3084 | |
3085 switch(selection_custom_field) | |
3086 { | |
3087 /* Temperature */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3088 case LLC_Temperature: |
38 | 3089 default: |
189
8b8074080d7b
Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents:
187
diff
changeset
|
3090 temperature = unit_temperature_float(stateUsed->lifeData.temperature_celsius); |
38 | 3091 headerText[2] = TXT_Temperature; |
3092 textpointer = snprintf(text,TEXTSIZE,"\020\016%01.1f \140",temperature); // "\016\016%01.1f `" + C or F | |
3093 if(settingsGetPointer()->nonMetricalSystem == 0) | |
3094 text[textpointer++] = 'C'; | |
3095 else | |
3096 text[textpointer++] = 'F'; | |
3097 text[textpointer++] = 0; | |
3098 tinyHeaderFont = 0; | |
3099 break; | |
3100 | |
3101 /* Average Depth */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3102 case LLC_AverageDepth: |
38 | 3103 headerText[2] = TXT_AvgDepth; |
710 | 3104 if(pSettings->nonMetricalSystem) |
38 | 3105 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(fAverageDepthAbsolute)); |
3106 else | |
3107 snprintf(text,TEXTSIZE,"\020%01.1f",fAverageDepthAbsolute); | |
3108 break; | |
3109 | |
3110 /* ppO2 */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3111 case LLC_ppO2: |
38 | 3112 headerText[2] = TXT_ppO2; |
3113 snprintf(text,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
3114 break; | |
3115 | |
3116 /* Stop Uhr */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3117 case LLC_Stopwatch: |
38 | 3118 headerText[2] = TXT_Stopwatch; |
710 | 3119 if(pSettings->nonMetricalSystem) |
38 | 3120 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.0f",Stopwatch.Minutes, Stopwatch.Seconds,unit_depth_float(fAverageDepth)); |
3121 else | |
3122 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.1f",Stopwatch.Minutes, Stopwatch.Seconds,fAverageDepth); | |
3123 tinyHeaderFont = 1; | |
3124 line = 1; | |
3125 break; | |
3126 | |
3127 /* Ceiling */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3128 case LLC_Ceiling: |
38 | 3129 headerText[2] = TXT_Ceiling; |
710 | 3130 if((pDecoinfoStandard->output_ceiling_meter > 99.9f) || (pSettings->nonMetricalSystem)) |
38 | 3131 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); |
3132 else | |
3133 snprintf(text,TEXTSIZE,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); | |
3134 break; | |
3135 | |
3136 /* Future TTS */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3137 case LLC_FutureTTS: |
38 | 3138 headerText[2] = TXT_FutureTTS; |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3139 if (pDecoinfoFuture->output_time_to_surface_seconds < 1000 * 60) |
710 | 3140 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
|
3141 else |
710 | 3142 snprintf(text,TEXTSIZE,"\020\016\016@+%u'\n\r" "%ih TTS",pSettings->future_TTS, (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
38 | 3143 tinyHeaderFont = 1; |
3144 line = 1; | |
3145 break; | |
3146 | |
3147 /* CNS */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3148 case LLC_CNS: |
38 | 3149 headerText[2] = TXT_CNS; |
3150 fCNS = stateUsed->lifeData .cns; | |
3151 if(fCNS > 999) | |
3152 fCNS = 999; | |
3153 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",fCNS); | |
3154 break; | |
3155 | |
3156 /* actual GF */ | |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3157 case LLC_GF: |
38 | 3158 headerText[2] = TXT_ActualGradient; |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
3159 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",100 * pDecoinfoStandard->super_saturation); |
38 | 3160 break; |
656 | 3161 |
3162 case LLC_ScrubberTime: | |
3163 tinyHeaderFont = 1; | |
3164 headerText[2] = TXT_ScrubTime; | |
758
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
3165 |
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
3166 printScrubberText(text, TEXTSIZE, pSettings); |
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
3167 |
656 | 3168 break; |
662 | 3169 #ifdef ENABLE_PSCR_MODE |
3170 case LCC_SimPpo2: | |
3171 headerText[2] = TXT_SimPpo2; | |
3172 snprintf(text,TEXTSIZE,"\020%.2f\016\016Bar\017",stateUsed->lifeData.ppo2Simulated_bar); | |
3173 break; | |
3174 #endif | |
656 | 3175 |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3176 #ifdef ENABLE_BOTTLE_SENSOR |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3177 case LCC_BottleBar: |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3178 headerText[2] = TXT_AtemGasVorrat; |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3179 tinyHeaderFont = 1; |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3180 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
|
3181 break; |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3182 #endif |
749 | 3183 #ifdef ENABLE_CO2_SUPPORT |
3184 case LCC_CO2: | |
3185 headerText[2] = TXT_CO2Sensor; | |
3186 if(stateUsed->lifeData.CO2_data.CO2_ppm < CO2_WARNING_LEVEL_PPM) | |
3187 { | |
3188 text[textpointer++] = '\020'; | |
3189 } | |
3190 else if(stateUsed->lifeData.CO2_data.CO2_ppm < CO2_ALARM_LEVEL_PPM) | |
3191 { | |
3192 text[textpointer++] = '\024'; /* yellow */ | |
3193 } | |
3194 else | |
3195 { | |
3196 text[textpointer++] = '\025'; /* red */ | |
3197 } | |
3198 snprintf(&text[textpointer],TEXTSIZE,"\%5ldppm", stateUsed->lifeData.CO2_data.CO2_ppm); | |
3199 #endif | |
737
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3200 case LLC_Compass: |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3201 headerText[2] = TXT_2BYTE; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3202 headerText[3] = TXT2BYTE_Compass; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3203 tinyHeaderFont = 1; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3204 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3205 uint16_t heading; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3206 if(settingsGetPointer()->compassInertia) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3207 heading = (uint16_t)compass_getCompensated(); |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3208 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3209 heading = (uint16_t)stateUsed->lifeData.compass_heading; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3210 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3211 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3212 uint16_t userSetHeading = stateUsed->diveSettings.compassHeading; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3213 if (!userSetHeading) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3214 snprintf(text, TEXTSIZE, "\020\002\034%u ", heading); |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3215 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3216 snprintf(text, TEXTSIZE, "\020\002\034\016\016%u ", heading); |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3217 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3218 int16_t declinationFromForwardMark = ((userSetHeading - heading + 180 + 360) % 360) - 180; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3219 int16_t declinationFromNearestMark = ((declinationFromForwardMark + 90 + 180) % 180) - 90; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3220 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3221 uint16_t colour; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3222 if (abs(declinationFromForwardMark) <= 90) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3223 colour = CLUT_CompassUserHeadingTick; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3224 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3225 colour = CLUT_CompassUserBackHeadingTick; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3226 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3227 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3228 char direction[] = "\001 \004 \004 "; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3229 if (abs(declinationFromNearestMark) <= 10) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3230 direction[2] = '>'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3231 direction[6] = '<'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3232 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3233 if (abs(declinationFromForwardMark) <= 10) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3234 direction[4] = 'X'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3235 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3236 direction[4] = 'O'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3237 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3238 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3239 if (abs(declinationFromNearestMark) <= 3) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3240 direction[3] = '\a'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3241 direction[5] = '\a'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3242 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3243 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3244 if (declinationFromForwardMark < -90) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3245 direction[7] = 'O'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3246 } else if (declinationFromForwardMark < 0) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3247 direction[1] = 'X'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3248 } else if (declinationFromForwardMark <= 90) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3249 direction[7] = 'X'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3250 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3251 direction[1] = 'O'; |
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 |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3254 if (declinationFromNearestMark >= 0) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3255 direction[6] = '>'; |
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 if (declinationFromNearestMark > 30) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3258 direction[4] = '>'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3259 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3260 if (declinationFromNearestMark > 60 || declinationFromForwardMark == 90) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3261 direction[2] = '>'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3262 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3263 if (declinationFromNearestMark < 0) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3264 direction[2] = '<'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3265 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3266 if (declinationFromNearestMark < -30) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3267 direction[4] = '<'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3268 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3269 if (declinationFromNearestMark < -60 || declinationFromForwardMark == -90) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3270 direction[6] = '<'; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3271 } |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3272 } |
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 GFX_write_string_color(&FontT48, &t7l3, direction, 1, colour); |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3275 } |
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 break; |
38 | 3278 } |
737
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 (headerText[2] != TXT_2BYTE) { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3281 headerText[3] = 0; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3282 } else { |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3283 headerText[4] = 0; |
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3284 } |
38 | 3285 |
3286 if(tinyHeaderFont) | |
3287 GFX_write_string(&FontT24,&t7l3,headerText,0); | |
3288 else | |
3289 GFX_write_string(&FontT42,&t7l3,headerText,0); | |
3290 | |
3291 t7_colorscheme_mod(text); | |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3292 #ifndef ENABLE_BOTTLE_SENSOR |
748 | 3293 #ifdef ENABLE_CO2_SUPPORT |
3294 if(selection_custom_field != LCC_CO2) | |
3295 { | |
3296 GFX_write_string(&FontT105,&t7l3,text,line); | |
3297 } | |
3298 else | |
3299 { | |
3300 GFX_write_string(&FontT48,&t7l3,text,line); | |
3301 } | |
3302 #else | |
3303 GFX_write_string(&FontT105,&t7l3,text,line); | |
3304 #endif | |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3305 #else |
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3306 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
|
3307 { |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3308 GFX_write_string(&FontT105,&t7l3,text,line); |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3309 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3310 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3311 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3312 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
|
3313 if(agedColor > 1200) |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3314 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3315 agedColor = CLUT_WarningRed; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3316 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3317 else |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3318 if(agedColor > 600) |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3319 { |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3320 agedColor = CLUT_MenuLineUnselected; |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3321 } |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3322 else |
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3323 if(agedColor > 20) |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3324 { |
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3325 agedColor = CLUT_Font031; |
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3326 } |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3327 else |
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_Font020; |
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 |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3332 GFX_write_string_color(&FontT105,&t7l3,text,line,agedColor); |
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3333 } |
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3334 #endif |
38 | 3335 } |
3336 | |
3337 /* Private functions ---------------------------------------------------------*/ | |
3338 | |
3339 uint8_t t7_customtextPrepare(char * text) | |
3340 { | |
3341 uint8_t i, j, textptr, lineCount; | |
3342 char nextChar; | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3343 uint8_t alignmentChanged = 0; |
38 | 3344 |
3345 textptr = 0; | |
3346 lineCount = 0; | |
3347 | |
3348 text[textptr++] = TXT_MINIMAL; | |
3349 | |
3350 j = 0; | |
3351 i = 0; | |
3352 do | |
3353 { | |
3354 j += i; | |
3355 i = 0; | |
3356 do | |
3357 { | |
3358 nextChar = settingsGetPointer()->customtext[i+j]; | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3359 if((nextChar == '^') && (alignmentChanged == 0)) /* center */ |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3360 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3361 text[textptr++] = '\001'; |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3362 alignmentChanged = 1; |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3363 i++; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3364 }else |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3365 if((nextChar == 180) && (alignmentChanged == 0)) /* '�' => Right */ |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3366 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3367 text[textptr++] = '\002'; |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3368 alignmentChanged = 1; |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3369 i++; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3370 }else |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3371 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3372 i++; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3373 if((!nextChar) || (nextChar =='\n') || (nextChar =='\r')) |
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 break; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3376 } |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3377 text[textptr++] = nextChar; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3378 } |
38 | 3379 } while (i < 12); |
3380 | |
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3381 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
|
3382 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3383 while((textptr - 1 > 0) && (text[textptr - 1] == 32)) |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3384 { |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3385 textptr--; |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3386 } |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3387 } |
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3388 |
38 | 3389 if(!nextChar) |
3390 break; | |
3391 | |
3392 if(lineCount < 3) | |
3393 { | |
3394 text[textptr++] = '\n'; | |
3395 text[textptr++] = '\r'; | |
3396 } | |
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3397 alignmentChanged = 0; |
38 | 3398 lineCount++; |
3399 for(uint8_t k=0;k<2;k++) | |
3400 { | |
3401 nextChar = settingsGetPointer()->customtext[i+j+k]; | |
3402 if((nextChar =='\n') || (nextChar =='\r')) | |
3403 i++; | |
3404 else | |
3405 break; | |
3406 } | |
3407 | |
3408 } while (lineCount < 4); | |
3409 | |
3410 text[textptr] = 0; | |
3411 return lineCount; | |
3412 } | |
3413 | |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3414 static void t7_colorscheme_mod(char *text) { |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3415 char *p = text; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3416 while (*p) { |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3417 if ((*p == '\020') && !GFX_is_colorschemeDiveStandard()) |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3418 *p = '\027'; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3419 p++; |
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3420 } |
38 | 3421 } |
3422 | |
3423 void draw_frame(_Bool PluginBoxHeader, _Bool LinesOnTheSides, uint8_t colorBox, uint8_t colorLinesOnTheSide) | |
3424 { | |
3425 point_t LeftLow, WidthHeight; | |
3426 point_t start, stop; | |
3427 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3428 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3429 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3430 |
38 | 3431 // plugin box |
3432 LeftLow.x = CUSTOMBOX_LINE_LEFT; | |
3433 WidthHeight.x = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_LINE_LEFT; | |
3434 LeftLow.y = 60; | |
3435 WidthHeight.y = 440 - LeftLow.y; | |
642
c737cf5d9067
Do not show focus indicator in case motion detection is suspended:
Ideenmodellierer
parents:
631
diff
changeset
|
3436 if((viewInFocus() && (!viewDetectionSuspended()))) |
553 | 3437 { |
3438 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, CLUT_Font023); | |
3439 } | |
3440 else | |
3441 { | |
3442 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, colorBox); | |
3443 } | |
38 | 3444 |
3445 if(PluginBoxHeader) | |
3446 { | |
3447 // plugin box - header | |
3448 start.x = CUSTOMBOX_LINE_LEFT; | |
3449 stop.x = CUSTOMBOX_LINE_RIGHT; | |
3450 stop.y = start.y = 440 - 60; | |
3451 GFX_draw_line(&t7screen, start, stop, colorBox); | |
3452 } | |
3453 | |
3454 if(LinesOnTheSides) | |
3455 { | |
3456 // aufteilung links | |
3457 start.x = 0; | |
3458 stop.x = CUSTOMBOX_LINE_LEFT; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3459 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3460 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3461 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3462 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3463 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3464 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3465 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3466 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3467 |
38 | 3468 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3469 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3470 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3471 stop.y = start.y = t7l2.WindowY0 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3472 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3473 else |
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 = 480 - t7l2.WindowY1 -1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3476 } |
38 | 3477 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
3478 | |
3479 // aufteilung rechts | |
3480 start.x = CUSTOMBOX_LINE_RIGHT; | |
3481 stop.x = 799; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3482 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3483 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3484 stop.y = start.y = t7l1.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3485 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3486 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3487 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3488 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3489 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3490 |
38 | 3491 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3492 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3493 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3494 stop.y = start.y = t7l2.WindowY0 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3495 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3496 else |
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 = 480 - t7l2.WindowY1 - 1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3499 } |
38 | 3500 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
3501 } | |
3502 } | |
3503 | |
3504 | |
3505 /* Compass like TCOS shellfish | |
3506 * input is 0 to 359 | |
3507 * 2 px / 1 degree | |
3508 * Range is 148 degree with CUSTOMBOX_SPACE_INSIDE = 296 | |
3509 * one side is 74 degree (less than 90 degree) | |
3510 * internal 360 + 180 degree of freedom | |
3511 * use positive values only, shift by 360 below 90 mid position | |
3512 */ | |
3513 | |
3514 | |
3515 point_t t7_compass_circle(uint8_t id, uint16_t degree) | |
3516 { | |
3517 float fCos, fSin; | |
3518 const float piMult = ((2 * 3.14159) / 360); | |
3519 // const int radius[4] = {95,105,115,60}; | |
3520 const int radius[4] = {95,105,115,100}; | |
3521 const point_t offset = {.x = 400, .y = 250}; | |
3522 | |
3523 static point_t r[4][360] = { 0 }; | |
3524 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3525 if(r[0][0].y == 0) /* calc table at first call only */ |
38 | 3526 { |
3527 for(int i=0;i<360;i++) | |
3528 { | |
3529 fCos = cos(i * piMult); | |
3530 fSin = sin(i * piMult); | |
3531 for(int j=0;j<4;j++) | |
3532 { | |
3533 r[j][i].x = offset.x + (int)(fSin * radius[j]); | |
3534 r[j][i].y = offset.y + (int)(fCos * radius[j]); | |
3535 } | |
3536 } | |
3537 } | |
3538 if(id > 3) id = 0; | |
3539 if(degree > 359) degree = 0; | |
3540 return r[id][degree]; | |
3541 } | |
3542 | |
3543 /* range should be 0 to 30 bar if 300 meter with 100% of nitrogen or helium | |
3544 * T24 is 28 high | |
3545 */ | |
3546 void t7_tissues(const SDiveState * pState) | |
3547 { | |
3548 point_t start, change, stop; | |
3549 float value; | |
3550 uint16_t front, cns100pixel; | |
3551 char text[256]; | |
3552 uint8_t textpointer = 0; | |
3553 uint8_t color; | |
3554 | |
3555 float percent_N2; | |
3556 float percent_He; | |
3557 float partial_pressure_N2; | |
3558 float partial_pressure_He; | |
3559 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3560 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3561 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3562 |
38 | 3563 |
3564 /* N2 */ | |
3565 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3566 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3567 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3568 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3569 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3570 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3571 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3572 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3573 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3574 } |
38 | 3575 t7cY0free.WindowNumberOfTextLines = 3; |
3576 | |
3577 text[textpointer++] = '\030'; | |
3578 text[textpointer++] = TXT_2BYTE; | |
3579 text[textpointer++] = TXT2BYTE_Nitrogen; | |
3580 text[textpointer++] = '\n'; | |
3581 text[textpointer++] = '\r'; | |
3582 text[textpointer++] = TXT_2BYTE; | |
3583 text[textpointer++] = TXT2BYTE_Helium; | |
3584 text[textpointer++] = '\n'; | |
3585 text[textpointer++] = '\r'; | |
3586 text[textpointer++] = TXT_2BYTE; | |
3587 text[textpointer++] = TXT2BYTE_CNS; | |
3588 text[textpointer++] = 0; | |
3589 | |
3590 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3591 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3592 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3593 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3594 start.y = t7cH.WindowY0 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3595 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3596 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3597 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3598 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3599 } |
38 | 3600 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
3601 stop.x = start.x + CUSTOMBOX_SPACE_INSIDE; | |
3602 | |
3603 for(int i=0;i<16;i++) | |
3604 { | |
3605 stop.y = start.y; | |
3606 change.y = start.y; | |
3607 | |
3608 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
|
3609 value *= 80; |
38 | 3610 |
3611 if(value < 0) | |
3612 front = 0; | |
3613 else | |
3614 if(value > CUSTOMBOX_SPACE_INSIDE) | |
3615 front = CUSTOMBOX_SPACE_INSIDE; | |
3616 else | |
3617 front = (uint16_t)value; | |
3618 | |
3619 change.x = start.x + front; | |
3620 if(change.x != start.x) | |
3621 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
3622 if(change.x != stop.x) | |
3623 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3624 | |
3625 start.y -= 3; | |
3626 } | |
3627 | |
3628 /* He */ | |
3629 start.y -= 28 + 14; | |
3630 for(int i=0;i<16;i++) | |
3631 { | |
3632 stop.y = start.y; | |
3633 change.y = start.y; | |
3634 | |
3635 value = pState->lifeData.tissue_helium_bar[i]; | |
3636 value *= 80;//20 | |
3637 | |
3638 if(value < 0) | |
3639 front = 0; | |
3640 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
3641 front = CUSTOMBOX_SPACE_INSIDE; | |
3642 else | |
3643 front = (uint16_t)value; | |
3644 | |
3645 change.x = start.x + front; | |
3646 if(change.x != start.x) | |
3647 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
3648 if(change.x != stop.x) | |
3649 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3650 | |
3651 start.y -= 3; | |
3652 } | |
3653 | |
3654 /* CNS == Oxygen */ | |
3655 start.y -= 28 + 14; | |
3656 | |
3657 cns100pixel = (8 * CUSTOMBOX_SPACE_INSIDE) / 10; | |
3658 value = pState->lifeData.cns; | |
3659 value *= cns100pixel; | |
3660 value /= 100; | |
3661 | |
3662 if(value < 0) | |
3663 front = 0; | |
3664 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
3665 front = CUSTOMBOX_SPACE_INSIDE; | |
3666 else | |
3667 front = (uint16_t)value; | |
3668 | |
3669 if(pState->lifeData.cns < 95) | |
3670 color = CLUT_Font030; | |
3671 else if(pState->lifeData.cns < 100) | |
3672 color = CLUT_WarningYellow; | |
3673 else | |
3674 color = CLUT_WarningRed; | |
3675 | |
3676 for(int i=0;i<16;i++) | |
3677 { | |
3678 stop.y = start.y; | |
3679 change.y = start.y; | |
3680 | |
3681 change.x = start.x + front; | |
3682 if(change.x != start.x) | |
3683 GFX_draw_thick_line(1,&t7screen, start, change, color); | |
3684 if(change.x != stop.x) | |
3685 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
3686 | |
3687 start.y -= 3; | |
3688 } | |
3689 | |
3690 /* where is the onload/offload limit for N2 and He */ | |
3691 decom_get_inert_gases(pState->lifeData.pressure_ambient_bar, &pState->lifeData.actualGas, &percent_N2, &percent_He); | |
3692 partial_pressure_N2 = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_N2; | |
3693 partial_pressure_He = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_He; | |
3694 | |
3695 // Nitrogen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3696 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3697 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3698 start.y = t7cH.WindowY0 + 1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3699 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3700 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3701 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3702 start.y = t7cH.WindowY1 - 5; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3703 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3704 |
38 | 3705 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
|
3706 if((percent_N2 > 0) && (partial_pressure_N2 > 0.7512f)) |
38 | 3707 { |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3708 value = partial_pressure_N2 - 0.7512f; |
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3709 value *= 80; |
38 | 3710 |
3711 if(value < 0) | |
3712 front = 3; | |
3713 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
3714 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
3715 else | |
3716 front = (uint16_t)value; | |
3717 } | |
3718 else | |
3719 { | |
3720 front = 1; | |
3721 } | |
3722 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
3723 stop.x = start.x; | |
3724 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
3725 | |
3726 | |
3727 // Helium vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3728 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3729 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3730 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
|
3731 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3732 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3733 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3734 start.y = t7cH.WindowY1 - 5 - 3*16 - 28 - 14; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3735 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3736 |
38 | 3737 stop.y = start.y - (3 * 15) - 1; |
3738 if((percent_He > 0) && (partial_pressure_He > 0.01f)) // 0.5f | |
3739 { | |
3740 | |
3741 value = partial_pressure_He; | |
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3742 value *= 80; |
38 | 3743 |
3744 if(value < 0) | |
3745 front = 3; | |
3746 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
3747 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
3748 else | |
3749 front = (uint16_t)value; | |
3750 } | |
3751 else | |
3752 { | |
3753 front = 1; | |
3754 } | |
3755 | |
3756 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
3757 stop.x = start.x; | |
3758 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
3759 | |
3760 // Oxygen vertical bar | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3761 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3762 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3763 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
|
3764 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3765 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3766 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3767 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
|
3768 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3769 |
38 | 3770 stop.y = start.y - (3 * 15) - 1; |
3771 | |
3772 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + cns100pixel; | |
3773 stop.x = start.x; | |
3774 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
|
3775 |
38 | 3776 } |
3777 | |
3778 | |
3779 void t7_debug(void) | |
3780 { | |
3781 char text[256+50]; | |
3782 uint8_t textpointer = 0; | |
3783 | |
3784 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
3785 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
3786 t7cY0free.WindowNumberOfTextLines = 3; | |
3787 | |
3788 textpointer += snprintf(&text[textpointer],50,"Ambient [bar]\n\r"); | |
3789 textpointer += snprintf(&text[textpointer],50,"Surface [bar] + salt\n\r"); | |
3790 // textpointer += snprintf(&text[textpointer],50,"Difference [mbar]\n\r"); | |
3791 textpointer += snprintf(&text[textpointer],50,"ShallowCounter [s]\n\r"); | |
3792 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
3793 | |
3794 t7cY0free.WindowY0 -= 52; | |
3795 // 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)); | |
3796 snprintf(text,60, | |
3797 "%0.2f\n\r" | |
3798 "%0.2f %u%%\n\r" | |
3799 "%u" | |
3800 ,stateUsed->lifeData.pressure_ambient_bar | |
3801 ,stateUsed->lifeData.pressure_surface_bar | |
3802 ,settingsGetPointer()->salinity | |
3803 ,stateUsed->lifeData.counterSecondsShallowDepth); | |
3804 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
3805 } | |
3806 | |
3807 | |
3808 void t7_SummaryOfLeftCorner(void) | |
3809 { | |
3810 char text[256+60]; | |
3811 uint8_t textpointer = 0; | |
656 | 3812 SSettings* pSettings = settingsGetPointer(); |
38 | 3813 |
3814 const SDecoinfo * pDecoinfoStandard; | |
3815 const SDecoinfo * pDecoinfoFuture; | |
3816 float fCNS; | |
3817 | |
3818 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
3819 { | |
3820 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
3821 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
3822 } | |
3823 else | |
3824 { | |
3825 pDecoinfoStandard = &stateUsed->decolistVPM; | |
3826 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
3827 } | |
3828 | |
3829 fCNS = stateUsed->lifeData .cns; | |
3830 if(fCNS > 999) | |
3831 fCNS = 999; | |
3832 | |
3833 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
656 | 3834 if(pSettings->FlipDisplay) |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3835 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3836 t7cY0free.WindowY1 = 400; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3837 } |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3838 |
38 | 3839 t7cY0free.WindowLineSpacing = 48; |
3840 t7cY0free.WindowNumberOfTextLines = 6; | |
3841 t7cY0free.WindowTab = 420; | |
3842 | |
3843 // header | |
3844 textpointer = 0; | |
3845 text[textpointer++] = '\032'; | |
3846 text[textpointer++] = '\016'; | |
3847 text[textpointer++] = '\016'; | |
3848 text[textpointer++] = TXT_ppO2; | |
3849 text[textpointer++] = '\n'; | |
3850 text[textpointer++] = '\r'; | |
3851 text[textpointer++] = TXT_Ceiling; | |
3852 text[textpointer++] = '\n'; | |
3853 text[textpointer++] = '\r'; | |
3854 text[textpointer++] = TXT_ActualGradient; | |
3855 text[textpointer++] = '\n'; | |
3856 text[textpointer++] = '\r'; | |
3857 text[textpointer++] = TXT_CNS; | |
3858 text[textpointer++] = '\n'; | |
3859 text[textpointer++] = '\r'; | |
3860 text[textpointer++] = TXT_FutureTTS; | |
656 | 3861 text[textpointer++] = '\n'; |
3862 text[textpointer++] = '\r'; | |
662 | 3863 if((pSettings->scrubTimerMode != SCRUB_TIMER_OFF) && (isLoopMode(pSettings->dive_mode))) |
656 | 3864 { |
3865 text[textpointer++] = TXT_ScrubTime; | |
3866 | |
3867 } | |
38 | 3868 text[textpointer++] = '\017'; |
656 | 3869 text[textpointer++] = 0; |
3870 if(!pSettings->FlipDisplay) | |
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3871 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3872 t7cY0free.WindowX0 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3873 t7cY0free.WindowY0 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3874 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3875 t7cY0free.WindowX0 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3876 t7cY0free.WindowY0 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3877 } |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3878 else |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3879 { |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3880 t7cY0free.WindowY1 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3881 t7cY0free.WindowX1 -= 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3882 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3883 t7cY0free.WindowY1 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3884 t7cY0free.WindowX1 += 10; |
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
3885 } |
38 | 3886 textpointer = 0; |
3887 text[textpointer++] = '\t'; | |
3888 textpointer += snprintf(&text[textpointer],10,"\020%01.2f", stateUsed->lifeData.ppO2); | |
3889 text[textpointer++] = '\n'; | |
3890 text[textpointer++] = '\r'; | |
3891 text[textpointer++] = '\t'; | |
3892 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
|
3893 textpointer += snprintf(&text[textpointer],10,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); |
38 | 3894 else |
215
4a0ebade04f5
Bugfix, trivial: correctly present avg depth in overview custom
Jan Mulder <jlmulder@xs4all.nl>
parents:
214
diff
changeset
|
3895 textpointer += snprintf(&text[textpointer],10,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); |
38 | 3896 text[textpointer++] = '\n'; |
3897 text[textpointer++] = '\r'; | |
3898 text[textpointer++] = '\t'; | |
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
3899 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017", 100 * pDecoinfoStandard->super_saturation); |
38 | 3900 text[textpointer++] = '\n'; |
3901 text[textpointer++] = '\r'; | |
3902 text[textpointer++] = '\t'; | |
3903 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017",fCNS); | |
3904 text[textpointer++] = '\n'; | |
3905 text[textpointer++] = '\r'; | |
3906 text[textpointer++] = '\t'; | |
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3907 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
|
3908 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
|
3909 else |
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3910 textpointer += snprintf(&text[textpointer],10,"\020%ih", (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
656 | 3911 |
662 | 3912 if((pSettings->scrubTimerMode != SCRUB_TIMER_OFF) && (isLoopMode(pSettings->dive_mode))) |
656 | 3913 { |
3914 text[textpointer++] = '\n'; | |
3915 text[textpointer++] = '\r'; | |
3916 text[textpointer++] = '\t'; | |
758
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
3917 |
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
3918 textpointer += printScrubberText(&text[textpointer], 10, pSettings); |
656 | 3919 } |
38 | 3920 text[textpointer++] = 0; |
196
2885628ab3ba
Bugfix, minor: color the overview customview correctly
Jan Mulder <jlmulder@xs4all.nl>
parents:
193
diff
changeset
|
3921 t7_colorscheme_mod(text); |
38 | 3922 GFX_write_string(&FontT42, &t7cY0free, text, 1); |
3923 } | |
3924 | |
3925 void t7_compass(uint16_t ActualHeading, uint16_t UserSetHeading) | |
3926 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3927 uint16_t ActualHeadingRose; |
38 | 3928 uint16_t LeftBorderHeading, LineHeading; |
3929 uint32_t offsetPicture; | |
3930 point_t start, stop, center; | |
3931 static int32_t LastHeading = 0; | |
3932 int32_t newHeading = 0; | |
3933 int32_t diff = 0; | |
3934 int32_t diff2 = 0; | |
3935 | |
3936 int32_t diffAbs = 0; | |
3937 int32_t diffAbs2 = 0; | |
3938 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3939 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3940 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3941 |
38 | 3942 newHeading = ActualHeading; |
3943 | |
3944 diff = newHeading - LastHeading; | |
3945 | |
3946 if(newHeading < LastHeading) | |
3947 diff2 = newHeading + 360 - LastHeading; | |
3948 else | |
3949 diff2 = newHeading - 360 - LastHeading; | |
3950 | |
3951 diffAbs = diff; | |
3952 if(diffAbs < 0) | |
3953 diffAbs *= -1; | |
3954 | |
3955 diffAbs2 = diff2; | |
3956 if(diffAbs2 < 0) | |
3957 diffAbs2 *= -1; | |
3958 | |
3959 | |
3960 if(diffAbs <= diffAbs2) | |
3961 newHeading = LastHeading + (diff / 2); | |
3962 else | |
3963 newHeading = LastHeading + (diff2 / 2); | |
3964 | |
3965 if(newHeading < 0) | |
3966 newHeading += 360; | |
3967 else | |
3968 if(newHeading >= 360) | |
3969 newHeading -= 360; | |
3970 | |
3971 LastHeading = newHeading; | |
3972 ActualHeading = newHeading; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3973 ActualHeadingRose = ActualHeading; |
225
2bb1db22b5f5
cleanup: random set of cleanups
Jan Mulder <jlmulder@xs4all.nl>
parents:
222
diff
changeset
|
3974 |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3975 if(pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3976 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3977 ActualHeadingRose = 360 - ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3978 if (ActualHeadingRose < 170) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3979 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3980 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3981 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3982 if (ActualHeadingRose < 90) ActualHeadingRose += 360; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3983 ActualHeading = ActualHeadingRose; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3984 } |
38 | 3985 |
3986 // new hw 160822 | |
3987 // if (ActualHeading >= 360 + 90) | |
3988 // ActualHeading = 360; | |
3989 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3990 LeftBorderHeading = 2 * (ActualHeadingRose - (CUSTOMBOX_SPACE_INSIDE/4)); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3991 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3992 if(pSettings->FlipDisplay) /* add offset caused by mirrowed drawing */ |
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 LeftBorderHeading += 2 * 80; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3995 } |
38 | 3996 |
3997 offsetPicture = LeftBorderHeading * t7screenCompass.ImageHeight * 2; | |
3998 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3999 /* the background is used to draw the rotating compass rose */ |
38 | 4000 background.pointer = t7screenCompass.FBStartAdress+offsetPicture; |
4001 background.x0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4002 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4003 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4004 background.y0 = 65; |
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 else |
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 background.y0 = 480 - t7screenCompass.ImageHeight - 65; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4009 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4010 |
38 | 4011 background.width = CUSTOMBOX_SPACE_INSIDE; |
4012 background.height = t7screenCompass.ImageHeight; | |
4013 | |
4014 | |
4015 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + (CUSTOMBOX_SPACE_INSIDE/2); | |
4016 stop.x = start.x; | |
4017 start.y = 65; | |
4018 stop.y = start.y + 55; | |
4019 GFX_draw_line(&t7screen, start, stop, CLUT_Font030); | |
4020 | |
4021 | |
4022 center.x = start.x; | |
4023 center.y = 300; | |
4024 | |
4025 stop.x = center.x + 44; | |
4026 stop.y = center.y + 24; | |
4027 | |
4028 | |
4029 while(ActualHeading > 359) ActualHeading -= 360; | |
4030 | |
4031 LineHeading = 360 - ActualHeading; | |
4032 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(0,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font030); // North | |
4033 LineHeading += 90; | |
4034 if(LineHeading > 359) LineHeading -= 360; | |
4035 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Maintick | |
4036 LineHeading += 90; | |
4037 if(LineHeading > 359) LineHeading -= 360; | |
4038 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4039 LineHeading += 90; | |
4040 if(LineHeading > 359) LineHeading -= 360; | |
4041 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4042 | |
4043 LineHeading = 360 - ActualHeading; | |
4044 LineHeading += 45; | |
4045 if(LineHeading > 359) LineHeading -= 360; | |
4046 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
4047 LineHeading += 90; | |
4048 if(LineHeading > 359) LineHeading -= 360; | |
4049 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4050 LineHeading += 90; | |
4051 if(LineHeading > 359) LineHeading -= 360; | |
4052 GFX_draw_thick_line(5,&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(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4056 | |
4057 LineHeading = 360 - ActualHeading; | |
4058 LineHeading += 22; | |
4059 if(LineHeading > 359) LineHeading -= 360; | |
4060 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
4061 LineHeading += 45; | |
4062 if(LineHeading > 359) LineHeading -= 360; | |
4063 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4064 LineHeading += 45; | |
4065 if(LineHeading > 359) LineHeading -= 360; | |
4066 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4067 LineHeading += 45; | |
4068 if(LineHeading > 359) LineHeading -= 360; | |
4069 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4070 LineHeading += 45; | |
4071 if(LineHeading > 359) LineHeading -= 360; | |
4072 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
4073 LineHeading += 45; | |
4074 if(LineHeading > 359) LineHeading -= 360; | |
4075 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4076 LineHeading += 45; | |
4077 if(LineHeading > 359) LineHeading -= 360; | |
4078 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4079 LineHeading += 45; | |
4080 if(LineHeading > 359) LineHeading -= 360; | |
4081 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
4082 | |
4083 if(UserSetHeading) | |
4084 { | |
4085 LineHeading = UserSetHeading + 360 - ActualHeading; | |
4086 if(LineHeading > 359) LineHeading -= 360; | |
4087 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserHeadingTick); | |
4088 | |
4089 // R�ckpeilung, User Back Heading | |
4090 LineHeading = UserSetHeading + 360 + 180 - ActualHeading; | |
4091 if(LineHeading > 359) LineHeading -= 360; | |
4092 if(LineHeading > 359) LineHeading -= 360; | |
4093 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserBackHeadingTick); | |
4094 } | |
4095 | |
4096 center.x = start.x; | |
4097 center.y = 250; | |
4098 GFX_draw_circle(&t7screen, center, 116, CLUT_Font030); | |
4099 GFX_draw_circle(&t7screen, center, 118, CLUT_Font030); | |
4100 GFX_draw_circle(&t7screen, center, 117, CLUT_Font030); | |
4101 | |
4102 | |
4103 } | |
4104 | |
4105 | |
4106 /* Font_T42: N is 27 px, S is 20 px, W is 36 px, E is 23 px | |
4107 * max is NW with 63 px | |
4108 * Font_T24: N is 15 px, S is 12 px, W is 20 px, E is 13 px | |
4109 * max is NW with 35 px | |
4110 * NE is 28 px | |
4111 * SW is 32 px | |
4112 * SE is 25 px | |
4113 * space between each is 45 px * 2 | |
4114 * FirstItem List | |
4115 * \177 \177 prepare for size | |
4116 */ | |
4117 void init_t7_compass(void) | |
4118 { | |
4119 t7screenCompass.FBStartAdress = getFrame(21); | |
4120 | |
4121 char text[256]; | |
4122 uint8_t textpointer = 0; | |
4123 | |
4124 text[textpointer++] = '\030'; | |
4125 text[textpointer++] = '\177'; | |
4126 text[textpointer++] = '\177'; | |
4127 text[textpointer++] = 76; // 90 - 14 | |
4128 text[textpointer++] = '\016'; | |
4129 text[textpointer++] = '\016'; | |
4130 text[textpointer++] = 'N'; | |
4131 text[textpointer++] = 'E'; // 96 + 28 = 124 total | |
4132 text[textpointer++] = '\017'; | |
4133 text[textpointer++] = '\177'; | |
4134 text[textpointer++] = '\177'; | |
4135 text[textpointer++] = 64; // 90 - 14 - 12 | |
4136 text[textpointer++] = 'E'; // 124 + 74 + 23 = 221 total | |
4137 text[textpointer++] = '\177'; | |
4138 text[textpointer++] = '\177'; | |
4139 text[textpointer++] = 66; // 90 - 11 - 13 | |
4140 text[textpointer++] = '\016'; | |
4141 text[textpointer++] = '\016'; | |
4142 text[textpointer++] = 'S'; | |
4143 text[textpointer++] = 'E'; | |
4144 text[textpointer++] = '\017'; | |
4145 text[textpointer++] = '\177'; | |
4146 text[textpointer++] = '\177'; | |
4147 text[textpointer++] = 68; // 90 - 12 - 10 | |
4148 text[textpointer++] = 'S'; | |
4149 text[textpointer++] = '\177'; | |
4150 text[textpointer++] = '\177'; | |
4151 text[textpointer++] = 64; // 90 - 10 - 16 | |
4152 text[textpointer++] = '\016'; | |
4153 text[textpointer++] = '\016'; | |
4154 text[textpointer++] = 'S'; | |
4155 text[textpointer++] = 'W'; | |
4156 text[textpointer++] = '\017'; | |
4157 text[textpointer++] = '\177'; | |
4158 text[textpointer++] = '\177'; | |
4159 text[textpointer++] = 56; // 90 - 16 - 18 | |
4160 text[textpointer++] = 'W'; | |
4161 text[textpointer++] = '\177'; | |
4162 text[textpointer++] = '\177'; | |
4163 text[textpointer++] = 54; // 90 - 18 - 18 | |
4164 text[textpointer++] = '\016'; | |
4165 text[textpointer++] = '\016'; | |
4166 text[textpointer++] = 'N'; | |
4167 text[textpointer++] = 'W'; | |
4168 text[textpointer++] = '\017'; | |
4169 text[textpointer++] = '\177'; | |
4170 text[textpointer++] = '\177'; | |
4171 text[textpointer++] = 59; // 90 - 17 - 14 | |
4172 text[textpointer++] = 'N'; | |
4173 text[textpointer++] = '\177'; | |
4174 text[textpointer++] = '\177'; | |
4175 text[textpointer++] = 63; // 90 - 13 - 14 | |
4176 text[textpointer++] = '\016'; | |
4177 text[textpointer++] = '\016'; | |
4178 text[textpointer++] = 'N'; | |
4179 text[textpointer++] = 'E'; | |
4180 text[textpointer++] = '\017'; | |
4181 text[textpointer++] = '\177'; | |
4182 text[textpointer++] = '\177'; | |
4183 text[textpointer++] = 64; // 90 - 14 - 12 | |
4184 text[textpointer++] = 'E'; | |
4185 text[textpointer++] = '\177'; | |
4186 text[textpointer++] = '\177'; | |
4187 text[textpointer++] = 66; // 90 - 11 - 13 | |
4188 text[textpointer++] = '\016'; | |
4189 text[textpointer++] = '\016'; | |
4190 text[textpointer++] = 'S'; | |
4191 text[textpointer++] = 'E'; | |
4192 text[textpointer++] = '\017'; | |
4193 text[textpointer++] = '\177'; | |
4194 text[textpointer++] = '\177'; | |
4195 text[textpointer++] = 68; // 90 - 12 - 10 | |
4196 text[textpointer++] = 'S'; | |
4197 text[textpointer++] = '\177'; | |
4198 text[textpointer++] = '\177'; | |
4199 text[textpointer++] = 64; // 90 - 10 - 16 | |
4200 text[textpointer++] = '\016'; | |
4201 text[textpointer++] = '\016'; | |
4202 text[textpointer++] = 'S'; | |
4203 text[textpointer++] = 'W'; | |
4204 text[textpointer++] = '\017'; | |
4205 text[textpointer++] = 0; // end | |
4206 | |
4207 GFX_write_string(&FontT42,&t7pCompass,text,1); | |
4208 | |
4209 releaseAllFramesExcept(21,t7screenCompass.FBStartAdress); | |
4210 } | |
4211 | |
4212 | |
4213 void t7_miniLiveLogProfile(void) | |
4214 { | |
4215 SWindowGimpStyle wintemp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4216 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4217 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4218 |
38 | 4219 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
4220 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4221 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4222 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4223 wintemp.top = 480 - t7l1.WindowY0; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4224 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4225 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4226 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4227 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4228 wintemp.top = t7l1.WindowY1; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4229 wintemp.bottom = wintemp. top + 200; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4230 } |
38 | 4231 |
4232 uint16_t max_depth = (uint16_t)(stateUsed->lifeData.max_depth_meter * 10); | |
4233 | |
4234 GFX_graph_print(&t7screen, &wintemp, 0,1,0, max_depth, getMiniLiveLogbookPointerToData(), getMiniLiveLogbookActualDataLength(), CLUT_Font030, NULL); | |
4235 } | |
4236 | |
4237 void t7_logo_OSTC(void) | |
4238 { | |
4239 SWindowGimpStyle windowGimp; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4240 SSettings* pSettings; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4241 pSettings = settingsGetPointer(); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4242 |
38 | 4243 /* OSTC logo */ |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4244 if(!pSettings->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4245 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4246 windowGimp.left = t7l1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4247 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4248 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4249 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4250 windowGimp.left = t7r1.WindowX1 + 32; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4251 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4252 |
38 | 4253 windowGimp.top = 40 + 32; |
4254 GFX_draw_image_monochrome(&t7screen, windowGimp, &ImgOSTC, 0); | |
4255 } | |
672 | 4256 |
4257 static uint16_t ChargerLog[60] = {10,10,10,10,10,10,10,10,10,10, | |
4258 10,10,10,10,10,10,10,10,10,10, | |
4259 10,10,10,10,10,10,10,10,10,10, | |
4260 10,10,10,10,10,10,10,10,10,10, | |
4261 10,10,10,10,10,10,10,10,10,10, | |
4262 10,10,10,10,10,10,10,10,10,10}; | |
4263 | |
4264 uint16_t LogDeltaCharge(float charge) | |
4265 { | |
4266 static uint8_t curIndex = 0; | |
4267 static float averageSpeed = 0.0; | |
4268 uint16_t level = 0; | |
4269 uint16_t completeSec = 0; | |
4270 | |
4271 if(charge > 0.003) | |
4272 { | |
4273 level = 2; | |
4274 } | |
4275 else if(charge > 0.0025) | |
4276 { | |
4277 level = 3; | |
4278 } | |
4279 else if(charge > 0.002) | |
4280 { | |
4281 level = 4; | |
4282 } | |
4283 else if(charge > 0.0015) | |
4284 { | |
4285 level = 5; | |
4286 } | |
4287 else if(charge > 0.001) | |
4288 { | |
4289 level = 6; | |
4290 } | |
4291 else if(charge > 0.0005) | |
4292 { | |
4293 level = 7; | |
4294 } | |
4295 else if(charge > 0.00) | |
4296 { | |
4297 level = 8; | |
4298 } | |
4299 else | |
4300 { | |
4301 level = 10; | |
4302 } | |
4303 if(curIndex < 59) | |
4304 { | |
4305 ChargerLog[curIndex++] = level; | |
4306 } | |
4307 else | |
4308 { | |
4309 memcpy (&ChargerLog[0],&ChargerLog[1],sizeof(ChargerLog) - 1); | |
4310 ChargerLog[curIndex] = level; | |
4311 } | |
4312 if(curIndex > 1) | |
4313 { | |
4314 averageSpeed = ((averageSpeed * (curIndex-1)) + charge) / curIndex; | |
4315 completeSec = (100.0 - stateUsed->lifeData.battery_charge) / averageSpeed; | |
4316 } | |
4317 else | |
4318 { | |
4319 completeSec = 0xffff; | |
4320 } | |
4321 return completeSec; | |
4322 } | |
4323 | |
4324 uint16_t* getChargeLog() | |
4325 { | |
4326 return ChargerLog; | |
4327 } | |
4328 | |
4329 void t7_ChargerView(void) | |
4330 { | |
4331 static float lastCharge = 0.0; | |
4332 float localCharge = 0.0; | |
4333 static uint32_t lastTick = 0; | |
4334 uint32_t curTick = 0; | |
4335 static float speed = 0.0; | |
4336 float deltatime = 0.0; | |
4337 | |
4338 char text[256+50]; | |
4339 uint8_t textpointer = 0; | |
4340 static uint16_t remainingSec = 0; | |
4341 uint16_t hoursto100 = 0; | |
4342 char indicator = '~'; | |
4343 | |
4344 point_t start, stop; | |
4345 | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4346 SWindowGimpStyle wintemp; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4347 SSettings* pSettings; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4348 pSettings = settingsGetPointer(); |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4349 |
672 | 4350 t7cY0free.WindowLineSpacing = 28 + 48 + 14; |
4351 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
4352 t7cY0free.WindowNumberOfTextLines = 3; | |
4353 | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4354 |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4355 if(pSettings->FlipDisplay) |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4356 { |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4357 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4358 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4359 } |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4360 |
672 | 4361 localCharge = stateUsed->lifeData.battery_charge; |
4362 if(localCharge < 0.0) | |
4363 { | |
4364 localCharge *= -1.0; | |
4365 } | |
4366 | |
4367 if(stateUsed->chargeStatus != CHARGER_off) | |
4368 { | |
4369 if(lastCharge != localCharge) | |
4370 { | |
4371 curTick = HAL_GetTick(); | |
4372 deltatime = (curTick - lastTick); | |
4373 lastTick = curTick; | |
4374 if(lastCharge < localCharge) | |
4375 { | |
4376 speed = (localCharge - lastCharge) * 1000.0 / deltatime; | |
4377 } | |
4378 | |
693 | 4379 if(localCharge > 100.0) |
4380 { | |
4381 localCharge = 100.0; | |
4382 } | |
4383 | |
672 | 4384 lastCharge = localCharge; |
4385 } | |
4386 | |
693 | 4387 |
672 | 4388 if(deltatime > 1000) |
4389 { | |
4390 deltatime = 0; | |
4391 remainingSec = LogDeltaCharge(speed); | |
4392 speed = 0; | |
4393 } | |
4394 } | |
4395 textpointer += snprintf(&text[textpointer],50,"\n\r"); | |
4396 textpointer += snprintf(&text[textpointer],50,"\001%c\n\r",TXT_ChargeHour); | |
4397 | |
4398 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
4399 | |
4400 hoursto100 = remainingSec / 3600; /* reduce to hours */ | |
4401 if(hoursto100 < 1) | |
4402 { | |
4403 indicator = '<'; | |
4404 hoursto100 = 1; | |
4405 } | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4406 |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4407 if(!pSettings->FlipDisplay) |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4408 { |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4409 t7cY0free.WindowY0 -= 52; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4410 } |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4411 else |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4412 { |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4413 t7cY0free.WindowY1 += 52; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4414 } |
672 | 4415 |
4416 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->chargeStatus != CHARGER_off)) | |
4417 { | |
4418 snprintf(text,60, | |
693 | 4419 "\001%0.2f\016\016%%\017\n\r" |
672 | 4420 "\001%c%d\n\r" |
4421 ,stateUsed->lifeData.battery_charge | |
4422 ,indicator | |
4423 ,hoursto100); | |
4424 } | |
4425 else | |
4426 { | |
4427 snprintf(text,60, | |
4428 "\001---\n\r" | |
4429 "\001---\n\r"); | |
4430 } | |
4431 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
4432 | |
4433 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + 50; | |
4434 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE - 100; | |
4435 | |
4436 | |
4437 if(!pSettings->FlipDisplay) | |
4438 { | |
4439 wintemp.top = 480 - t7l1.WindowY0 + 115; | |
4440 wintemp.bottom = wintemp.top + 100; | |
4441 } | |
4442 else | |
4443 { | |
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4444 wintemp.top = t7l1.WindowY1 + 102; |
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4445 wintemp.bottom = wintemp.top + 100; |
672 | 4446 } |
4447 | |
4448 start.x = wintemp.left-5; | |
4449 start.y = 90; | |
4450 | |
4451 stop.x = wintemp.right + 5 - start.x; | |
4452 stop.y = 100; | |
4453 GFX_draw_box(&t7screen, start, stop,1, CLUT_Font020); | |
4454 | |
4455 if(stateUsed->chargeStatus != CHARGER_off) | |
4456 { | |
4457 GFX_graph_print(&t7screen, &wintemp, 1,1,0, 10, getChargeLog(), 60, CLUT_Font030, NULL); | |
4458 } | |
4459 else | |
4460 { | |
4461 GFX_graph_print(&t7screen, &wintemp, 1,1,0, 10, getChargeLog(), 60, CLUT_Font031, NULL); | |
4462 } | |
4463 | |
4464 } |