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