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