Mercurial > public > ostc4
annotate Discovery/Src/t7.c @ 1050:88b6ab90c55a GasConsumption
Added separate LLC view for surface GF:
A new LLC view has been added. In addition the surface GF is now clipped to a value of 9.99 => 999% in the visualization
| author | Ideenmodellierer |
|---|---|
| date | Wed, 19 Nov 2025 21:34:18 +0100 |
| parents | d91345e9c009 |
| children |
| 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 | |
| 1050 | 3206 if((stateUsed->diveSettings.deco_type.ub.standard == VPM_MODE) && ((selection_custom_field == LLC_GF) || (selection_custom_field == LCC_GF_SURF))) /* no GF if in VPM mode */ |
|
442
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; |
| 1050 | 3351 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",100 * pDecoinfoStandard->super_saturation); |
| 3352 break; | |
| 3353 | |
| 3354 /* Surface GF */ | |
| 3355 case LCC_GF_SURF: | |
| 3356 headerText[2] = TXT_2BYTE; | |
| 3357 headerText[3] = TXT2BYTE_GFSurf; | |
| 3358 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",100 * pDecoinfoStandard->gf_surf); | |
| 38 | 3359 break; |
| 656 | 3360 |
| 3361 case LLC_ScrubberTime: | |
| 3362 tinyHeaderFont = 1; | |
| 3363 headerText[2] = TXT_ScrubTime; | |
|
758
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
3364 |
|
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
|
3365 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
|
3366 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
|
3367 |
| 656 | 3368 break; |
| 662 | 3369 #ifdef ENABLE_PSCR_MODE |
| 3370 case LCC_SimPpo2: | |
| 3371 headerText[2] = TXT_SimPpo2; | |
| 3372 snprintf(text,TEXTSIZE,"\020%.2f\016\016Bar\017",stateUsed->lifeData.ppo2Simulated_bar); | |
| 3373 break; | |
| 3374 #endif | |
| 656 | 3375 |
|
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3376 #ifdef ENABLE_BOTTLE_SENSOR |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3377 case LCC_BottleBar: |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3378 headerText[2] = TXT_AtemGasVorrat; |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3379 tinyHeaderFont = 1; |
|
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3380 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
|
3381 break; |
|
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3382 #endif |
| 749 | 3383 #ifdef ENABLE_CO2_SUPPORT |
| 3384 case LCC_CO2: | |
| 3385 headerText[2] = TXT_CO2Sensor; | |
| 3386 if(stateUsed->lifeData.CO2_data.CO2_ppm < CO2_WARNING_LEVEL_PPM) | |
| 3387 { | |
| 3388 text[textpointer++] = '\020'; | |
| 3389 } | |
| 3390 else if(stateUsed->lifeData.CO2_data.CO2_ppm < CO2_ALARM_LEVEL_PPM) | |
| 3391 { | |
| 3392 text[textpointer++] = '\024'; /* yellow */ | |
| 3393 } | |
| 3394 else | |
| 3395 { | |
| 3396 text[textpointer++] = '\025'; /* red */ | |
| 3397 } | |
| 3398 snprintf(&text[textpointer],TEXTSIZE,"\%5ldppm", stateUsed->lifeData.CO2_data.CO2_ppm); | |
| 799 | 3399 break; |
| 749 | 3400 #endif |
|
737
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3401 case LLC_Compass: |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3402 headerText[2] = TXT_2BYTE; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3403 headerText[3] = TXT2BYTE_Compass; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3404 tinyHeaderFont = 1; |
|
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 heading; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3407 if(settingsGetPointer()->compassInertia) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3408 heading = (uint16_t)compass_getCompensated(); |
|
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 heading = (uint16_t)stateUsed->lifeData.compass_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 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3413 uint16_t userSetHeading = stateUsed->diveSettings.compassHeading; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3414 if (!userSetHeading) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3415 snprintf(text, TEXTSIZE, "\020\002\034%u ", heading); |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3416 } else { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3417 snprintf(text, TEXTSIZE, "\020\002\034\016\016%u ", heading); |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3418 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3419 int16_t declinationFromForwardMark = ((userSetHeading - heading + 180 + 360) % 360) - 180; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3420 int16_t declinationFromNearestMark = ((declinationFromForwardMark + 90 + 180) % 180) - 90; |
|
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 uint16_t colour; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3423 if (abs(declinationFromForwardMark) <= 90) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3424 colour = CLUT_CompassUserHeadingTick; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3425 } else { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3426 colour = CLUT_CompassUserBackHeadingTick; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3427 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3428 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3429 char direction[] = "\001 \004 \004 "; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3430 if (abs(declinationFromNearestMark) <= 10) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3431 direction[2] = '>'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3432 direction[6] = '<'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3433 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3434 if (abs(declinationFromForwardMark) <= 10) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3435 direction[4] = 'X'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3436 } else { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3437 direction[4] = 'O'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3438 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3439 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3440 if (abs(declinationFromNearestMark) <= 3) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3441 direction[3] = '\a'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3442 direction[5] = '\a'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3443 } |
|
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 if (declinationFromForwardMark < -90) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3446 direction[7] = 'O'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3447 } else if (declinationFromForwardMark < 0) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3448 direction[1] = 'X'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3449 } else if (declinationFromForwardMark <= 90) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3450 direction[7] = 'X'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3451 } else { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3452 direction[1] = 'O'; |
|
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 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3455 if (declinationFromNearestMark >= 0) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3456 direction[6] = '>'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3457 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3458 if (declinationFromNearestMark > 30) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3459 direction[4] = '>'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3460 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3461 if (declinationFromNearestMark > 60 || declinationFromForwardMark == 90) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3462 direction[2] = '>'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3463 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3464 if (declinationFromNearestMark < 0) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3465 direction[2] = '<'; |
|
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 if (declinationFromNearestMark < -30) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3468 direction[4] = '<'; |
|
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 if (declinationFromNearestMark < -60 || declinationFromForwardMark == -90) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3471 direction[6] = '<'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3472 } |
|
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 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3475 GFX_write_string_color(&FontT48, &t7l3, direction, 1, colour); |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3476 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3477 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3478 break; |
| 38 | 3479 } |
|
737
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3480 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3481 if (headerText[2] != TXT_2BYTE) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3482 headerText[3] = 0; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3483 } else { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3484 headerText[4] = 0; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3485 } |
| 38 | 3486 |
| 3487 if(tinyHeaderFont) | |
| 3488 GFX_write_string(&FontT24,&t7l3,headerText,0); | |
| 3489 else | |
| 3490 GFX_write_string(&FontT42,&t7l3,headerText,0); | |
| 3491 | |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
3492 Gfx_colorsscheme_mod(text, 0); |
|
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3493 #ifndef ENABLE_BOTTLE_SENSOR |
| 748 | 3494 #ifdef ENABLE_CO2_SUPPORT |
| 3495 if(selection_custom_field != LCC_CO2) | |
| 3496 { | |
| 3497 GFX_write_string(&FontT105,&t7l3,text,line); | |
| 3498 } | |
| 3499 else | |
| 3500 { | |
| 998 | 3501 GFX_write_string(&FontT48,&t7l3,text,line); |
| 748 | 3502 } |
| 3503 #else | |
| 3504 GFX_write_string(&FontT105,&t7l3,text,line); | |
| 3505 #endif | |
|
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3506 #else |
|
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3507 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
|
3508 { |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3509 GFX_write_string(&FontT105,&t7l3,text,line); |
|
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 { |
|
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3513 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
|
3514 if(agedColor > 1200) |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3515 { |
|
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3516 agedColor = CLUT_WarningRed; |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3517 } |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3518 else |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3519 if(agedColor > 600) |
|
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3520 { |
|
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3521 agedColor = CLUT_MenuLineUnselected; |
|
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3522 } |
|
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3523 else |
|
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3524 if(agedColor > 20) |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3525 { |
|
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3526 agedColor = CLUT_Font031; |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3527 } |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3528 else |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3529 { |
|
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3530 agedColor = CLUT_Font020; |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3531 } |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3532 |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3533 GFX_write_string_color(&FontT105,&t7l3,text,line,agedColor); |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3534 } |
|
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3535 #endif |
| 38 | 3536 } |
| 3537 | |
| 3538 /* Private functions ---------------------------------------------------------*/ | |
| 3539 | |
| 3540 uint8_t t7_customtextPrepare(char * text) | |
| 3541 { | |
| 3542 uint8_t i, j, textptr, lineCount; | |
| 3543 char nextChar; | |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3544 uint8_t alignmentChanged = 0; |
| 38 | 3545 |
| 3546 textptr = 0; | |
| 3547 lineCount = 0; | |
| 3548 | |
| 3549 text[textptr++] = TXT_MINIMAL; | |
| 3550 | |
| 3551 j = 0; | |
| 3552 i = 0; | |
| 3553 do | |
| 3554 { | |
| 3555 j += i; | |
| 3556 i = 0; | |
| 3557 do | |
| 3558 { | |
| 3559 nextChar = settingsGetPointer()->customtext[i+j]; | |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3560 if((nextChar == '^') && (alignmentChanged == 0)) /* center */ |
|
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3561 { |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3562 text[textptr++] = '\001'; |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3563 alignmentChanged = 1; |
|
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3564 i++; |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3565 }else |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3566 if((nextChar == 180) && (alignmentChanged == 0)) /* '�' => Right */ |
|
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3567 { |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3568 text[textptr++] = '\002'; |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3569 alignmentChanged = 1; |
|
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3570 i++; |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3571 }else |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3572 { |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3573 i++; |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3574 if((!nextChar) || (nextChar =='\n') || (nextChar =='\r')) |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3575 { |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3576 break; |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3577 } |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3578 text[textptr++] = nextChar; |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3579 } |
| 38 | 3580 } while (i < 12); |
| 3581 | |
|
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3582 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
|
3583 { |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3584 while((textptr - 1 > 0) && (text[textptr - 1] == 32)) |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3585 { |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3586 textptr--; |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3587 } |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3588 } |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3589 |
| 38 | 3590 if(!nextChar) |
| 3591 break; | |
| 3592 | |
| 3593 if(lineCount < 3) | |
| 3594 { | |
| 3595 text[textptr++] = '\n'; | |
| 3596 text[textptr++] = '\r'; | |
| 3597 } | |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3598 alignmentChanged = 0; |
| 38 | 3599 lineCount++; |
| 3600 for(uint8_t k=0;k<2;k++) | |
| 3601 { | |
| 3602 nextChar = settingsGetPointer()->customtext[i+j+k]; | |
| 3603 if((nextChar =='\n') || (nextChar =='\r')) | |
| 3604 i++; | |
| 3605 else | |
| 3606 break; | |
| 3607 } | |
| 3608 | |
| 3609 } while (lineCount < 4); | |
| 3610 | |
| 3611 text[textptr] = 0; | |
| 3612 return lineCount; | |
| 3613 } | |
| 3614 | |
| 3615 void draw_frame(_Bool PluginBoxHeader, _Bool LinesOnTheSides, uint8_t colorBox, uint8_t colorLinesOnTheSide) | |
| 3616 { | |
| 3617 point_t LeftLow, WidthHeight; | |
| 3618 point_t start, stop; | |
| 3619 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3620 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3621 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3622 |
| 38 | 3623 // plugin box |
| 3624 LeftLow.x = CUSTOMBOX_LINE_LEFT; | |
| 3625 WidthHeight.x = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_LINE_LEFT; | |
| 3626 LeftLow.y = 60; | |
| 3627 WidthHeight.y = 440 - LeftLow.y; | |
|
642
c737cf5d9067
Do not show focus indicator in case motion detection is suspended:
Ideenmodellierer
parents:
631
diff
changeset
|
3628 if((viewInFocus() && (!viewDetectionSuspended()))) |
| 553 | 3629 { |
| 3630 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, CLUT_Font023); | |
| 3631 } | |
| 3632 else | |
| 3633 { | |
| 3634 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, colorBox); | |
| 3635 } | |
| 38 | 3636 |
| 3637 if(PluginBoxHeader) | |
| 3638 { | |
| 3639 // plugin box - header | |
| 3640 start.x = CUSTOMBOX_LINE_LEFT; | |
| 3641 stop.x = CUSTOMBOX_LINE_RIGHT; | |
| 3642 stop.y = start.y = 440 - 60; | |
| 3643 GFX_draw_line(&t7screen, start, stop, colorBox); | |
| 3644 } | |
| 3645 | |
| 3646 if(LinesOnTheSides) | |
| 3647 { | |
| 3648 // aufteilung links | |
| 3649 start.x = 0; | |
| 3650 stop.x = CUSTOMBOX_LINE_LEFT; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3651 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3652 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3653 stop.y = start.y = t7l1.WindowY0 - 1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3654 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3655 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3656 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3657 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3658 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3659 |
| 38 | 3660 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3661 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3662 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3663 stop.y = start.y = t7l2.WindowY0 -1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3664 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3665 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3666 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3667 stop.y = start.y = 480 - t7l2.WindowY1 -1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3668 } |
| 38 | 3669 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
| 3670 | |
| 3671 // aufteilung rechts | |
| 3672 start.x = CUSTOMBOX_LINE_RIGHT; | |
| 3673 stop.x = 799; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3674 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3675 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3676 stop.y = start.y = t7l1.WindowY0 - 1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3677 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3678 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3679 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3680 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3681 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3682 |
| 38 | 3683 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3684 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3685 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3686 stop.y = start.y = t7l2.WindowY0 - 1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3687 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3688 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3689 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3690 stop.y = start.y = 480 - t7l2.WindowY1 - 1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3691 } |
| 38 | 3692 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
| 3693 } | |
| 3694 } | |
| 3695 | |
| 3696 | |
| 3697 /* Compass like TCOS shellfish | |
| 3698 * input is 0 to 359 | |
| 3699 * 2 px / 1 degree | |
| 3700 * Range is 148 degree with CUSTOMBOX_SPACE_INSIDE = 296 | |
| 3701 * one side is 74 degree (less than 90 degree) | |
| 3702 * internal 360 + 180 degree of freedom | |
| 3703 * use positive values only, shift by 360 below 90 mid position | |
| 3704 */ | |
| 3705 | |
| 3706 | |
| 3707 point_t t7_compass_circle(uint8_t id, uint16_t degree) | |
| 3708 { | |
| 3709 float fCos, fSin; | |
| 3710 const float piMult = ((2 * 3.14159) / 360); | |
| 3711 // const int radius[4] = {95,105,115,60}; | |
| 3712 const int radius[4] = {95,105,115,100}; | |
| 3713 const point_t offset = {.x = 400, .y = 250}; | |
| 3714 | |
| 3715 static point_t r[4][360] = { 0 }; | |
| 3716 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3717 if(r[0][0].y == 0) /* calc table at first call only */ |
| 38 | 3718 { |
| 3719 for(int i=0;i<360;i++) | |
| 3720 { | |
| 3721 fCos = cos(i * piMult); | |
| 3722 fSin = sin(i * piMult); | |
| 3723 for(int j=0;j<4;j++) | |
| 3724 { | |
| 3725 r[j][i].x = offset.x + (int)(fSin * radius[j]); | |
| 3726 r[j][i].y = offset.y + (int)(fCos * radius[j]); | |
| 3727 } | |
| 3728 } | |
| 3729 } | |
| 3730 if(id > 3) id = 0; | |
| 3731 if(degree > 359) degree = 0; | |
| 3732 return r[id][degree]; | |
| 3733 } | |
| 3734 | |
| 3735 /* range should be 0 to 30 bar if 300 meter with 100% of nitrogen or helium | |
| 3736 * T24 is 28 high | |
| 3737 */ | |
| 3738 void t7_tissues(const SDiveState * pState) | |
| 3739 { | |
| 3740 point_t start, change, stop; | |
| 3741 float value; | |
| 3742 uint16_t front, cns100pixel; | |
| 3743 char text[256]; | |
| 3744 uint8_t textpointer = 0; | |
| 3745 uint8_t color; | |
| 3746 | |
| 3747 float percent_N2; | |
| 3748 float percent_He; | |
| 3749 float partial_pressure_N2; | |
| 3750 float partial_pressure_He; | |
| 3751 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3752 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3753 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3754 |
| 38 | 3755 |
| 3756 /* N2 */ | |
| 3757 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3758 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3759 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3760 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3761 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3762 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3763 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3764 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3765 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3766 } |
| 38 | 3767 t7cY0free.WindowNumberOfTextLines = 3; |
| 3768 | |
| 3769 text[textpointer++] = '\030'; | |
| 3770 text[textpointer++] = TXT_2BYTE; | |
| 3771 text[textpointer++] = TXT2BYTE_Nitrogen; | |
| 3772 text[textpointer++] = '\n'; | |
| 3773 text[textpointer++] = '\r'; | |
| 3774 text[textpointer++] = TXT_2BYTE; | |
| 3775 text[textpointer++] = TXT2BYTE_Helium; | |
| 3776 text[textpointer++] = '\n'; | |
| 3777 text[textpointer++] = '\r'; | |
| 3778 text[textpointer++] = TXT_2BYTE; | |
| 3779 text[textpointer++] = TXT2BYTE_CNS; | |
| 3780 text[textpointer++] = 0; | |
| 3781 | |
| 3782 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
| 3783 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3784 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3785 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3786 start.y = t7cH.WindowY0 - 5; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3787 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3788 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3789 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3790 start.y = t7cH.WindowY1 - 5; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3791 } |
| 38 | 3792 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
| 3793 stop.x = start.x + CUSTOMBOX_SPACE_INSIDE; | |
| 3794 | |
| 3795 for(int i=0;i<16;i++) | |
| 3796 { | |
| 3797 stop.y = start.y; | |
| 3798 change.y = start.y; | |
| 3799 | |
| 3800 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
|
3801 value *= 80; |
| 38 | 3802 |
| 3803 if(value < 0) | |
| 3804 front = 0; | |
| 3805 else | |
| 3806 if(value > CUSTOMBOX_SPACE_INSIDE) | |
| 3807 front = CUSTOMBOX_SPACE_INSIDE; | |
| 3808 else | |
| 3809 front = (uint16_t)value; | |
| 3810 | |
| 3811 change.x = start.x + front; | |
| 3812 if(change.x != start.x) | |
| 3813 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
| 3814 if(change.x != stop.x) | |
| 3815 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
| 3816 | |
| 3817 start.y -= 3; | |
| 3818 } | |
| 3819 | |
| 3820 /* He */ | |
| 3821 start.y -= 28 + 14; | |
| 3822 for(int i=0;i<16;i++) | |
| 3823 { | |
| 3824 stop.y = start.y; | |
| 3825 change.y = start.y; | |
| 3826 | |
| 3827 value = pState->lifeData.tissue_helium_bar[i]; | |
| 3828 value *= 80;//20 | |
| 3829 | |
| 3830 if(value < 0) | |
| 3831 front = 0; | |
| 3832 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
| 3833 front = CUSTOMBOX_SPACE_INSIDE; | |
| 3834 else | |
| 3835 front = (uint16_t)value; | |
| 3836 | |
| 3837 change.x = start.x + front; | |
| 3838 if(change.x != start.x) | |
| 3839 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
| 3840 if(change.x != stop.x) | |
| 3841 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
| 3842 | |
| 3843 start.y -= 3; | |
| 3844 } | |
| 3845 | |
| 3846 /* CNS == Oxygen */ | |
| 3847 start.y -= 28 + 14; | |
| 3848 | |
| 3849 cns100pixel = (8 * CUSTOMBOX_SPACE_INSIDE) / 10; | |
| 3850 value = pState->lifeData.cns; | |
| 3851 value *= cns100pixel; | |
| 3852 value /= 100; | |
| 3853 | |
| 3854 if(value < 0) | |
| 3855 front = 0; | |
| 3856 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
| 3857 front = CUSTOMBOX_SPACE_INSIDE; | |
| 3858 else | |
| 3859 front = (uint16_t)value; | |
| 3860 | |
| 3861 if(pState->lifeData.cns < 95) | |
| 3862 color = CLUT_Font030; | |
| 3863 else if(pState->lifeData.cns < 100) | |
| 3864 color = CLUT_WarningYellow; | |
| 3865 else | |
| 3866 color = CLUT_WarningRed; | |
| 3867 | |
| 3868 for(int i=0;i<16;i++) | |
| 3869 { | |
| 3870 stop.y = start.y; | |
| 3871 change.y = start.y; | |
| 3872 | |
| 3873 change.x = start.x + front; | |
| 3874 if(change.x != start.x) | |
| 3875 GFX_draw_thick_line(1,&t7screen, start, change, color); | |
| 3876 if(change.x != stop.x) | |
| 3877 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
| 3878 | |
| 3879 start.y -= 3; | |
| 3880 } | |
| 3881 | |
| 3882 /* where is the onload/offload limit for N2 and He */ | |
| 3883 decom_get_inert_gases(pState->lifeData.pressure_ambient_bar, &pState->lifeData.actualGas, &percent_N2, &percent_He); | |
| 3884 partial_pressure_N2 = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_N2; | |
| 3885 partial_pressure_He = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_He; | |
| 3886 | |
| 3887 // Nitrogen vertical bar | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3888 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3889 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3890 start.y = t7cH.WindowY0 + 1 - 5; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3891 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3892 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3893 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3894 start.y = t7cH.WindowY1 - 5; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3895 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3896 |
| 38 | 3897 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
|
3898 if((percent_N2 > 0) && (partial_pressure_N2 > 0.7512f)) |
| 38 | 3899 { |
|
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3900 value = partial_pressure_N2 - 0.7512f; |
|
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3901 value *= 80; |
| 38 | 3902 |
| 3903 if(value < 0) | |
| 3904 front = 3; | |
| 3905 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
| 3906 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
| 3907 else | |
| 3908 front = (uint16_t)value; | |
| 3909 } | |
| 3910 else | |
| 3911 { | |
| 3912 front = 1; | |
| 3913 } | |
| 3914 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
| 3915 stop.x = start.x; | |
| 3916 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
| 3917 | |
| 3918 | |
| 3919 // Helium vertical bar | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3920 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3921 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3922 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
|
3923 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3924 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3925 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3926 start.y = t7cH.WindowY1 - 5 - 3*16 - 28 - 14; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3927 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3928 |
| 38 | 3929 stop.y = start.y - (3 * 15) - 1; |
| 3930 if((percent_He > 0) && (partial_pressure_He > 0.01f)) // 0.5f | |
| 3931 { | |
| 3932 | |
| 3933 value = partial_pressure_He; | |
|
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3934 value *= 80; |
| 38 | 3935 |
| 3936 if(value < 0) | |
| 3937 front = 3; | |
| 3938 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
| 3939 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
| 3940 else | |
| 3941 front = (uint16_t)value; | |
| 3942 } | |
| 3943 else | |
| 3944 { | |
| 3945 front = 1; | |
| 3946 } | |
| 3947 | |
| 3948 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
| 3949 stop.x = start.x; | |
| 3950 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
| 3951 | |
| 3952 // Oxygen vertical bar | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3953 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3954 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3955 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
|
3956 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3957 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3958 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3959 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
|
3960 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3961 |
| 38 | 3962 stop.y = start.y - (3 * 15) - 1; |
| 3963 | |
| 3964 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + cns100pixel; | |
| 3965 stop.x = start.x; | |
| 3966 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
|
3967 |
| 38 | 3968 } |
| 3969 | |
| 3970 | |
| 3971 void t7_debug(void) | |
| 3972 { | |
| 3973 char text[256+50]; | |
| 3974 uint8_t textpointer = 0; | |
| 3975 | |
| 3976 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
| 3977 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
| 3978 t7cY0free.WindowNumberOfTextLines = 3; | |
| 3979 | |
| 896 | 3980 #ifdef T7_DEBUG_RUNTIME |
| 3981 textpointer += snprintf(&text[textpointer],50,"Main loop %ld\n\r",getMainLoopTime()); | |
| 3982 textpointer += snprintf(&text[textpointer],50,"Grafic loop %ld\n\r",getGfxLoopTime()); | |
| 3983 textpointer += snprintf(&text[textpointer],50,"Decoloop %ld\n\r",getDecoLoopTime()); | |
| 3984 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
| 3985 #else | |
| 38 | 3986 textpointer += snprintf(&text[textpointer],50,"Ambient [bar]\n\r"); |
| 3987 textpointer += snprintf(&text[textpointer],50,"Surface [bar] + salt\n\r"); | |
| 3988 // textpointer += snprintf(&text[textpointer],50,"Difference [mbar]\n\r"); | |
| 3989 textpointer += snprintf(&text[textpointer],50,"ShallowCounter [s]\n\r"); | |
| 3990 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
| 3991 | |
| 3992 t7cY0free.WindowY0 -= 52; | |
| 3993 // 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)); | |
| 3994 snprintf(text,60, | |
| 3995 "%0.2f\n\r" | |
| 3996 "%0.2f %u%%\n\r" | |
| 3997 "%u" | |
| 3998 ,stateUsed->lifeData.pressure_ambient_bar | |
| 3999 ,stateUsed->lifeData.pressure_surface_bar | |
| 4000 ,settingsGetPointer()->salinity | |
| 4001 ,stateUsed->lifeData.counterSecondsShallowDepth); | |
| 4002 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
| 896 | 4003 #endif |
| 38 | 4004 } |
| 4005 | |
|
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4006 void t7_showPosition(void) |
|
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 char text[256+50]; |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4009 uint8_t textpointer = 0; |
| 934 | 4010 point_t start, stop; |
| 4011 uint8_t index = 0; | |
| 4012 uint8_t color = 0; | |
| 962 | 4013 SSettings* pSettings = settingsGetPointer(); |
|
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4014 |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4015 t7cY0free.WindowLineSpacing = 28 + 48 + 14; |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4016 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4017 t7cY0free.WindowNumberOfTextLines = 3; |
| 934 | 4018 t7cY0free.WindowY0 -= 20; |
| 962 | 4019 |
| 4020 t7cY0free.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
| 4021 t7cY0free.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; | |
| 4022 | |
| 4023 if(pSettings->FlipDisplay) | |
| 4024 { | |
| 4025 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; | |
| 4026 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; | |
| 4027 } | |
| 4028 | |
| 934 | 4029 if(stateUsed->lifeData.gnssData.fixType < 2) |
| 4030 { | |
| 4031 textpointer += snprintf(&text[textpointer],50,"\001Satellites\n\r"); | |
| 955 | 4032 if(stateUsed->lifeData.gnssData.alive & GNSS_ALIVE_STATE_ALIVE) |
| 940 | 4033 { |
| 4034 textpointer += snprintf(&text[textpointer],50,"\001\020Status\n\r"); | |
| 4035 } | |
| 4036 else | |
| 4037 { | |
| 4038 textpointer += snprintf(&text[textpointer],50,"\001\021Status\n\r"); | |
| 4039 } | |
| 934 | 4040 } |
| 4041 else | |
| 4042 { | |
| 4043 textpointer += snprintf(&text[textpointer],50,"\001Longitude\n\r"); | |
| 4044 textpointer += snprintf(&text[textpointer],50,"\001Latitude\n\r"); | |
| 4045 } | |
|
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4046 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4047 |
| 962 | 4048 if(!pSettings->FlipDisplay) |
| 4049 { | |
| 4050 t7cY0free.WindowY0 -= 52; | |
| 4051 } | |
| 4052 else | |
| 4053 { | |
| 4054 t7cY0free.WindowY1 = 370; | |
| 4055 } | |
| 4056 | |
| 934 | 4057 if(stateUsed->lifeData.gnssData.fixType < 2) |
| 4058 { | |
| 4059 snprintf(text,60,"\001%d\n\r",stateUsed->lifeData.gnssData.numSat); | |
| 4060 } | |
| 4061 else | |
| 4062 { | |
| 4063 snprintf(text,60, | |
| 4064 "\001%0.5f\n\r" | |
| 4065 "\001%0.5f\n\r" | |
| 941 | 4066 ,stateUsed->lifeData.gnssData.coord.fLat ,stateUsed->lifeData.gnssData.coord.fLon); |
| 934 | 4067 } |
|
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4068 GFX_write_string(&FontT42, &t7cY0free, text, 1); |
| 934 | 4069 |
| 4070 if(stateUsed->lifeData.gnssData.fixType < 2) /* draw status bars */ | |
| 4071 { | |
| 962 | 4072 if(!pSettings->FlipDisplay) |
| 4073 { | |
| 4074 start.x = t7cY0free.WindowX0 + 85; | |
| 4075 stop.x = start.x; | |
| 4076 start.y = t7cY0free.WindowY0 + 75; | |
| 4077 stop.y = start.y + 20; | |
| 4078 } | |
| 4079 else | |
| 4080 { | |
| 4081 start.x = t7cY0free.WindowX0 - 50; | |
| 4082 stop.x = start.x; | |
| 4083 start.y = t7cY0free.WindowY0 - 75; | |
| 4084 stop.y = start.y - 20; | |
| 4085 } | |
| 4086 | |
| 934 | 4087 while((index < stateUsed->lifeData.gnssData.numSat) && (index < 4)) |
| 4088 { | |
| 4089 if(stateUsed->lifeData.gnssData.signalQual[index] > 4) color = CLUT_NiceGreen; | |
| 4090 if((stateUsed->lifeData.gnssData.signalQual[index] > 2) && (stateUsed->lifeData.gnssData.signalQual[index] <= 4)) color = CLUT_WarningYellow; | |
| 4091 if(stateUsed->lifeData.gnssData.signalQual[index] <= 2) color = CLUT_WarningRed; | |
| 4092 GFX_draw_thick_line(20, &t7screen, start, stop, color); | |
| 4093 start.x += 40; | |
| 4094 stop.x += 40; | |
| 4095 | |
| 4096 index++; | |
| 4097 } | |
| 955 | 4098 if(stateUsed->lifeData.gnssData.alive & GNSS_ALIVE_BACKUP_POS) |
| 4099 { | |
| 4100 snprintf(text,50,"\001%2.2f %2.2f", stateUsed->lifeData.gnssData.coord.fLat,stateUsed->lifeData.gnssData.coord.fLon); | |
| 4101 GFX_write_string(&FontT24, &t7cY0free, text, 3); | |
| 4102 } | |
| 934 | 4103 } |
| 4104 | |
| 4105 | |
|
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4106 } |
| 38 | 4107 void t7_SummaryOfLeftCorner(void) |
| 4108 { | |
| 4109 char text[256+60]; | |
| 4110 uint8_t textpointer = 0; | |
| 656 | 4111 SSettings* pSettings = settingsGetPointer(); |
| 38 | 4112 |
| 4113 const SDecoinfo * pDecoinfoStandard; | |
| 4114 const SDecoinfo * pDecoinfoFuture; | |
| 4115 float fCNS; | |
| 4116 | |
| 4117 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
| 4118 { | |
| 4119 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
| 4120 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
| 4121 } | |
| 4122 else | |
| 4123 { | |
| 4124 pDecoinfoStandard = &stateUsed->decolistVPM; | |
| 4125 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
| 4126 } | |
| 4127 | |
| 4128 fCNS = stateUsed->lifeData .cns; | |
| 4129 if(fCNS > 999) | |
| 4130 fCNS = 999; | |
| 4131 | |
| 4132 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
| 656 | 4133 if(pSettings->FlipDisplay) |
|
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4134 { |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4135 t7cY0free.WindowY1 = 400; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4136 } |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4137 |
| 38 | 4138 t7cY0free.WindowLineSpacing = 48; |
| 4139 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
|
4140 t7cY0free.WindowTab = 380; |
| 38 | 4141 |
| 4142 // header | |
| 4143 textpointer = 0; | |
| 4144 text[textpointer++] = '\032'; | |
| 4145 text[textpointer++] = '\016'; | |
| 4146 text[textpointer++] = '\016'; | |
| 4147 text[textpointer++] = TXT_ppO2; | |
| 4148 text[textpointer++] = '\n'; | |
| 4149 text[textpointer++] = '\r'; | |
| 4150 text[textpointer++] = TXT_Ceiling; | |
| 4151 text[textpointer++] = '\n'; | |
| 4152 text[textpointer++] = '\r'; | |
| 4153 text[textpointer++] = TXT_ActualGradient; | |
| 4154 text[textpointer++] = '\n'; | |
| 4155 text[textpointer++] = '\r'; | |
| 1050 | 4156 text[textpointer++] = TXT_2BYTE; |
| 4157 text[textpointer++] = TXT2BYTE_GFSurf; | |
| 1049 | 4158 text[textpointer++] = '\n'; |
| 4159 text[textpointer++] = '\r'; | |
| 38 | 4160 text[textpointer++] = TXT_CNS; |
| 4161 text[textpointer++] = '\n'; | |
| 4162 text[textpointer++] = '\r'; | |
| 4163 text[textpointer++] = TXT_FutureTTS; | |
| 656 | 4164 text[textpointer++] = '\n'; |
| 4165 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
|
4166 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
|
4167 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
|
4168 text[textpointer++] = TXT2BYTE_Scrubber; |
| 656 | 4169 } |
| 38 | 4170 text[textpointer++] = '\017'; |
| 656 | 4171 text[textpointer++] = 0; |
| 4172 if(!pSettings->FlipDisplay) | |
|
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4173 { |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4174 t7cY0free.WindowX0 += 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4175 t7cY0free.WindowY0 += 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4176 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4177 t7cY0free.WindowX0 -= 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4178 t7cY0free.WindowY0 -= 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4179 } |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4180 else |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4181 { |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4182 t7cY0free.WindowY1 -= 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4183 t7cY0free.WindowX1 -= 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4184 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4185 t7cY0free.WindowY1 += 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4186 t7cY0free.WindowX1 += 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4187 } |
| 38 | 4188 textpointer = 0; |
| 1050 | 4189 text[textpointer++] = '\002'; |
| 38 | 4190 textpointer += snprintf(&text[textpointer],10,"\020%01.2f", stateUsed->lifeData.ppO2); |
| 4191 text[textpointer++] = '\n'; | |
| 4192 text[textpointer++] = '\r'; | |
| 1050 | 4193 text[textpointer++] = '\002'; |
| 38 | 4194 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
|
4195 textpointer += snprintf(&text[textpointer],10,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); |
| 38 | 4196 else |
|
215
4a0ebade04f5
Bugfix, trivial: correctly present avg depth in overview custom
Jan Mulder <jlmulder@xs4all.nl>
parents:
214
diff
changeset
|
4197 textpointer += snprintf(&text[textpointer],10,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); |
| 38 | 4198 text[textpointer++] = '\n'; |
| 4199 text[textpointer++] = '\r'; | |
| 1050 | 4200 text[textpointer++] = '\002'; |
| 4201 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017", 100 * pDecoinfoStandard->super_saturation); | |
| 1049 | 4202 text[textpointer++] = '\n'; |
| 4203 text[textpointer++] = '\r'; | |
| 1050 | 4204 text[textpointer++] = '\002'; |
| 4205 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017", 100 * pDecoinfoStandard->gf_surf); | |
| 38 | 4206 text[textpointer++] = '\n'; |
| 4207 text[textpointer++] = '\r'; | |
| 1050 | 4208 text[textpointer++] = '\002'; |
| 38 | 4209 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017",fCNS); |
| 4210 text[textpointer++] = '\n'; | |
| 4211 text[textpointer++] = '\r'; | |
| 1050 | 4212 text[textpointer++] = '\002'; |
|
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
4213 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
|
4214 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
|
4215 else |
|
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
4216 textpointer += snprintf(&text[textpointer],10,"\020%ih", (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
| 656 | 4217 |
|
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
|
4218 if (isScrubberTimerEnabled(pSettings)) { |
| 656 | 4219 text[textpointer++] = '\n'; |
| 4220 text[textpointer++] = '\r'; | |
| 1050 | 4221 text[textpointer++] = '\002'; |
|
758
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
4222 |
|
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
|
4223 textpointer += printScrubberText(&text[textpointer], 10, stateUsed->scrubberDataDive, pSettings, false); |
| 656 | 4224 } |
| 38 | 4225 text[textpointer++] = 0; |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
4226 Gfx_colorsscheme_mod(text, 0); |
| 38 | 4227 GFX_write_string(&FontT42, &t7cY0free, text, 1); |
| 4228 } | |
| 4229 | |
| 4230 void t7_compass(uint16_t ActualHeading, uint16_t UserSetHeading) | |
| 4231 { | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4232 uint16_t ActualHeadingRose; |
| 38 | 4233 uint16_t LeftBorderHeading, LineHeading; |
| 4234 uint32_t offsetPicture; | |
| 4235 point_t start, stop, center; | |
| 4236 static int32_t LastHeading = 0; | |
| 4237 int32_t newHeading = 0; | |
| 4238 int32_t diff = 0; | |
| 4239 int32_t diff2 = 0; | |
| 4240 | |
| 4241 int32_t diffAbs = 0; | |
| 4242 int32_t diffAbs2 = 0; | |
| 4243 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4244 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4245 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4246 |
| 38 | 4247 newHeading = ActualHeading; |
| 4248 | |
| 4249 diff = newHeading - LastHeading; | |
| 4250 | |
| 4251 if(newHeading < LastHeading) | |
| 4252 diff2 = newHeading + 360 - LastHeading; | |
| 4253 else | |
| 4254 diff2 = newHeading - 360 - LastHeading; | |
| 4255 | |
| 4256 diffAbs = diff; | |
| 4257 if(diffAbs < 0) | |
| 4258 diffAbs *= -1; | |
| 4259 | |
| 4260 diffAbs2 = diff2; | |
| 4261 if(diffAbs2 < 0) | |
| 4262 diffAbs2 *= -1; | |
| 4263 | |
| 4264 | |
| 4265 if(diffAbs <= diffAbs2) | |
| 4266 newHeading = LastHeading + (diff / 2); | |
| 4267 else | |
| 4268 newHeading = LastHeading + (diff2 / 2); | |
| 4269 | |
| 4270 if(newHeading < 0) | |
| 4271 newHeading += 360; | |
| 4272 else | |
| 4273 if(newHeading >= 360) | |
| 4274 newHeading -= 360; | |
| 4275 | |
| 4276 LastHeading = newHeading; | |
| 4277 ActualHeading = newHeading; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4278 ActualHeadingRose = ActualHeading; |
|
225
2bb1db22b5f5
cleanup: random set of cleanups
Jan Mulder <jlmulder@xs4all.nl>
parents:
222
diff
changeset
|
4279 |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4280 if(pSettings->FlipDisplay) |
|
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 ActualHeadingRose = 360 - ActualHeadingRose; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4283 if (ActualHeadingRose < 170) ActualHeadingRose += 360; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4284 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4285 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4286 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4287 if (ActualHeadingRose < 90) ActualHeadingRose += 360; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4288 ActualHeading = ActualHeadingRose; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4289 } |
| 38 | 4290 |
| 4291 // new hw 160822 | |
| 4292 // if (ActualHeading >= 360 + 90) | |
| 4293 // ActualHeading = 360; | |
| 4294 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4295 LeftBorderHeading = 2 * (ActualHeadingRose - (CUSTOMBOX_SPACE_INSIDE/4)); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4296 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4297 if(pSettings->FlipDisplay) /* add offset caused by mirrowed drawing */ |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4298 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4299 LeftBorderHeading += 2 * 80; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4300 } |
| 38 | 4301 |
| 4302 offsetPicture = LeftBorderHeading * t7screenCompass.ImageHeight * 2; | |
| 4303 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4304 /* the background is used to draw the rotating compass rose */ |
| 38 | 4305 background.pointer = t7screenCompass.FBStartAdress+offsetPicture; |
| 4306 background.x0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4307 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4308 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4309 background.y0 = 65; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4310 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4311 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4312 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4313 background.y0 = 480 - t7screenCompass.ImageHeight - 65; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4314 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4315 |
| 38 | 4316 background.width = CUSTOMBOX_SPACE_INSIDE; |
| 4317 background.height = t7screenCompass.ImageHeight; | |
| 4318 | |
| 4319 | |
| 4320 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + (CUSTOMBOX_SPACE_INSIDE/2); | |
| 4321 stop.x = start.x; | |
| 4322 start.y = 65; | |
| 4323 stop.y = start.y + 55; | |
| 4324 GFX_draw_line(&t7screen, start, stop, CLUT_Font030); | |
| 4325 | |
| 4326 | |
| 4327 center.x = start.x; | |
| 4328 center.y = 300; | |
| 4329 | |
| 4330 stop.x = center.x + 44; | |
| 4331 stop.y = center.y + 24; | |
| 4332 | |
| 4333 | |
| 4334 while(ActualHeading > 359) ActualHeading -= 360; | |
| 4335 | |
| 4336 LineHeading = 360 - ActualHeading; | |
| 4337 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(0,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font030); // North | |
| 4338 LineHeading += 90; | |
| 4339 if(LineHeading > 359) LineHeading -= 360; | |
| 4340 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Maintick | |
| 4341 LineHeading += 90; | |
| 4342 if(LineHeading > 359) LineHeading -= 360; | |
| 4343 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4344 LineHeading += 90; | |
| 4345 if(LineHeading > 359) LineHeading -= 360; | |
| 4346 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4347 | |
| 4348 LineHeading = 360 - ActualHeading; | |
| 4349 LineHeading += 45; | |
| 4350 if(LineHeading > 359) LineHeading -= 360; | |
| 4351 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
| 4352 LineHeading += 90; | |
| 4353 if(LineHeading > 359) LineHeading -= 360; | |
| 4354 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4355 LineHeading += 90; | |
| 4356 if(LineHeading > 359) LineHeading -= 360; | |
| 4357 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4358 LineHeading += 90; | |
| 4359 if(LineHeading > 359) LineHeading -= 360; | |
| 4360 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4361 | |
| 4362 LineHeading = 360 - ActualHeading; | |
| 4363 LineHeading += 22; | |
| 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); // Subtick | |
| 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 LineHeading += 45; | |
| 4373 if(LineHeading > 359) LineHeading -= 360; | |
| 4374 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4375 LineHeading += 45; | |
| 4376 if(LineHeading > 359) LineHeading -= 360; | |
| 4377 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
| 4378 LineHeading += 45; | |
| 4379 if(LineHeading > 359) LineHeading -= 360; | |
| 4380 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4381 LineHeading += 45; | |
| 4382 if(LineHeading > 359) LineHeading -= 360; | |
| 4383 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4384 LineHeading += 45; | |
| 4385 if(LineHeading > 359) LineHeading -= 360; | |
| 4386 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4387 | |
| 4388 if(UserSetHeading) | |
| 4389 { | |
| 4390 LineHeading = UserSetHeading + 360 - ActualHeading; | |
| 4391 if(LineHeading > 359) LineHeading -= 360; | |
| 4392 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserHeadingTick); | |
| 4393 | |
| 4394 // R�ckpeilung, User Back Heading | |
| 4395 LineHeading = UserSetHeading + 360 + 180 - ActualHeading; | |
| 4396 if(LineHeading > 359) LineHeading -= 360; | |
| 4397 if(LineHeading > 359) LineHeading -= 360; | |
| 4398 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserBackHeadingTick); | |
| 4399 } | |
| 4400 | |
| 4401 center.x = start.x; | |
| 4402 center.y = 250; | |
| 4403 GFX_draw_circle(&t7screen, center, 116, CLUT_Font030); | |
| 4404 GFX_draw_circle(&t7screen, center, 118, CLUT_Font030); | |
| 4405 GFX_draw_circle(&t7screen, center, 117, CLUT_Font030); | |
| 4406 | |
| 4407 | |
| 4408 } | |
| 4409 | |
| 4410 | |
| 4411 /* Font_T42: N is 27 px, S is 20 px, W is 36 px, E is 23 px | |
| 4412 * max is NW with 63 px | |
| 4413 * Font_T24: N is 15 px, S is 12 px, W is 20 px, E is 13 px | |
| 4414 * max is NW with 35 px | |
| 4415 * NE is 28 px | |
| 4416 * SW is 32 px | |
| 4417 * SE is 25 px | |
| 4418 * space between each is 45 px * 2 | |
| 4419 * FirstItem List | |
| 4420 * \177 \177 prepare for size | |
| 4421 */ | |
| 4422 void init_t7_compass(void) | |
| 4423 { | |
| 4424 t7screenCompass.FBStartAdress = getFrame(21); | |
| 4425 | |
| 4426 char text[256]; | |
| 4427 uint8_t textpointer = 0; | |
| 4428 | |
| 4429 text[textpointer++] = '\030'; | |
| 4430 text[textpointer++] = '\177'; | |
| 4431 text[textpointer++] = '\177'; | |
| 4432 text[textpointer++] = 76; // 90 - 14 | |
| 4433 text[textpointer++] = '\016'; | |
| 4434 text[textpointer++] = '\016'; | |
| 4435 text[textpointer++] = 'N'; | |
| 4436 text[textpointer++] = 'E'; // 96 + 28 = 124 total | |
| 4437 text[textpointer++] = '\017'; | |
| 4438 text[textpointer++] = '\177'; | |
| 4439 text[textpointer++] = '\177'; | |
| 4440 text[textpointer++] = 64; // 90 - 14 - 12 | |
| 4441 text[textpointer++] = 'E'; // 124 + 74 + 23 = 221 total | |
| 4442 text[textpointer++] = '\177'; | |
| 4443 text[textpointer++] = '\177'; | |
| 4444 text[textpointer++] = 66; // 90 - 11 - 13 | |
| 4445 text[textpointer++] = '\016'; | |
| 4446 text[textpointer++] = '\016'; | |
| 4447 text[textpointer++] = 'S'; | |
| 4448 text[textpointer++] = 'E'; | |
| 4449 text[textpointer++] = '\017'; | |
| 4450 text[textpointer++] = '\177'; | |
| 4451 text[textpointer++] = '\177'; | |
| 4452 text[textpointer++] = 68; // 90 - 12 - 10 | |
| 4453 text[textpointer++] = 'S'; | |
| 4454 text[textpointer++] = '\177'; | |
| 4455 text[textpointer++] = '\177'; | |
| 4456 text[textpointer++] = 64; // 90 - 10 - 16 | |
| 4457 text[textpointer++] = '\016'; | |
| 4458 text[textpointer++] = '\016'; | |
| 4459 text[textpointer++] = 'S'; | |
| 4460 text[textpointer++] = 'W'; | |
| 4461 text[textpointer++] = '\017'; | |
| 4462 text[textpointer++] = '\177'; | |
| 4463 text[textpointer++] = '\177'; | |
| 4464 text[textpointer++] = 56; // 90 - 16 - 18 | |
| 4465 text[textpointer++] = 'W'; | |
| 4466 text[textpointer++] = '\177'; | |
| 4467 text[textpointer++] = '\177'; | |
| 4468 text[textpointer++] = 54; // 90 - 18 - 18 | |
| 4469 text[textpointer++] = '\016'; | |
| 4470 text[textpointer++] = '\016'; | |
| 4471 text[textpointer++] = 'N'; | |
| 4472 text[textpointer++] = 'W'; | |
| 4473 text[textpointer++] = '\017'; | |
| 4474 text[textpointer++] = '\177'; | |
| 4475 text[textpointer++] = '\177'; | |
| 4476 text[textpointer++] = 59; // 90 - 17 - 14 | |
| 4477 text[textpointer++] = 'N'; | |
| 4478 text[textpointer++] = '\177'; | |
| 4479 text[textpointer++] = '\177'; | |
| 4480 text[textpointer++] = 63; // 90 - 13 - 14 | |
| 4481 text[textpointer++] = '\016'; | |
| 4482 text[textpointer++] = '\016'; | |
| 4483 text[textpointer++] = 'N'; | |
| 4484 text[textpointer++] = 'E'; | |
| 4485 text[textpointer++] = '\017'; | |
| 4486 text[textpointer++] = '\177'; | |
| 4487 text[textpointer++] = '\177'; | |
| 4488 text[textpointer++] = 64; // 90 - 14 - 12 | |
| 4489 text[textpointer++] = 'E'; | |
| 4490 text[textpointer++] = '\177'; | |
| 4491 text[textpointer++] = '\177'; | |
| 4492 text[textpointer++] = 66; // 90 - 11 - 13 | |
| 4493 text[textpointer++] = '\016'; | |
| 4494 text[textpointer++] = '\016'; | |
| 4495 text[textpointer++] = 'S'; | |
| 4496 text[textpointer++] = 'E'; | |
| 4497 text[textpointer++] = '\017'; | |
| 4498 text[textpointer++] = '\177'; | |
| 4499 text[textpointer++] = '\177'; | |
| 4500 text[textpointer++] = 68; // 90 - 12 - 10 | |
| 4501 text[textpointer++] = 'S'; | |
| 4502 text[textpointer++] = '\177'; | |
| 4503 text[textpointer++] = '\177'; | |
| 4504 text[textpointer++] = 64; // 90 - 10 - 16 | |
| 4505 text[textpointer++] = '\016'; | |
| 4506 text[textpointer++] = '\016'; | |
| 4507 text[textpointer++] = 'S'; | |
| 4508 text[textpointer++] = 'W'; | |
| 4509 text[textpointer++] = '\017'; | |
| 4510 text[textpointer++] = 0; // end | |
| 4511 | |
| 4512 GFX_write_string(&FontT42,&t7pCompass,text,1); | |
| 4513 | |
| 4514 releaseAllFramesExcept(21,t7screenCompass.FBStartAdress); | |
| 4515 } | |
| 4516 | |
| 4517 | |
| 4518 void t7_miniLiveLogProfile(void) | |
| 4519 { | |
| 4520 SWindowGimpStyle wintemp; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4521 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4522 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4523 |
| 38 | 4524 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
| 4525 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4526 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4527 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4528 wintemp.top = 480 - t7l1.WindowY0; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4529 wintemp.bottom = wintemp. top + 200; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4530 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4531 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4532 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4533 wintemp.top = t7l1.WindowY1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4534 wintemp.bottom = wintemp. top + 200; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4535 } |
| 38 | 4536 |
| 4537 uint16_t max_depth = (uint16_t)(stateUsed->lifeData.max_depth_meter * 10); | |
| 4538 | |
| 4539 GFX_graph_print(&t7screen, &wintemp, 0,1,0, max_depth, getMiniLiveLogbookPointerToData(), getMiniLiveLogbookActualDataLength(), CLUT_Font030, NULL); | |
| 4540 } | |
| 4541 | |
| 4542 void t7_logo_OSTC(void) | |
| 4543 { | |
| 4544 SWindowGimpStyle windowGimp; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4545 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4546 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4547 |
| 38 | 4548 /* OSTC logo */ |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4549 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4550 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4551 windowGimp.left = t7l1.WindowX1 + 32; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4552 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4553 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4554 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4555 windowGimp.left = t7r1.WindowX1 + 32; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4556 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4557 |
| 38 | 4558 windowGimp.top = 40 + 32; |
| 4559 GFX_draw_image_monochrome(&t7screen, windowGimp, &ImgOSTC, 0); | |
| 4560 } | |
| 672 | 4561 |
| 4562 static uint16_t ChargerLog[60] = {10,10,10,10,10,10,10,10,10,10, | |
| 4563 10,10,10,10,10,10,10,10,10,10, | |
| 4564 10,10,10,10,10,10,10,10,10,10, | |
| 4565 10,10,10,10,10,10,10,10,10,10, | |
| 4566 10,10,10,10,10,10,10,10,10,10, | |
| 4567 10,10,10,10,10,10,10,10,10,10}; | |
| 4568 | |
| 4569 uint16_t LogDeltaCharge(float charge) | |
| 4570 { | |
| 4571 static uint8_t curIndex = 0; | |
| 4572 static float averageSpeed = 0.0; | |
| 4573 uint16_t level = 0; | |
| 4574 uint16_t completeSec = 0; | |
| 4575 | |
| 4576 if(charge > 0.003) | |
| 4577 { | |
| 4578 level = 2; | |
| 4579 } | |
| 4580 else if(charge > 0.0025) | |
| 4581 { | |
| 4582 level = 3; | |
| 4583 } | |
| 4584 else if(charge > 0.002) | |
| 4585 { | |
| 4586 level = 4; | |
| 4587 } | |
| 4588 else if(charge > 0.0015) | |
| 4589 { | |
| 4590 level = 5; | |
| 4591 } | |
| 4592 else if(charge > 0.001) | |
| 4593 { | |
| 4594 level = 6; | |
| 4595 } | |
| 4596 else if(charge > 0.0005) | |
| 4597 { | |
| 4598 level = 7; | |
| 4599 } | |
| 4600 else if(charge > 0.00) | |
| 4601 { | |
| 4602 level = 8; | |
| 4603 } | |
| 4604 else | |
| 4605 { | |
| 4606 level = 10; | |
| 4607 } | |
| 859 | 4608 if(curIndex > 1) |
| 4609 { | |
| 4610 level = (level + ChargerLog[curIndex - 1]) / 2; /* smooth small jumps */ | |
| 4611 } | |
| 672 | 4612 if(curIndex < 59) |
| 4613 { | |
| 4614 ChargerLog[curIndex++] = level; | |
| 4615 } | |
| 4616 else | |
| 4617 { | |
|
994
bad5561c0c59
Fix a compilation error occurring on non-Windows platforms, caused by incorrect case in '#include' file names.
heinrichsweikamp
parents:
988
diff
changeset
|
4618 memmove(&ChargerLog[0], &ChargerLog[1], sizeof(ChargerLog) - 1); |
| 672 | 4619 ChargerLog[curIndex] = level; |
| 4620 } | |
| 859 | 4621 if(curIndex > 1) /* estimate time til charging is complete */ |
| 672 | 4622 { |
| 4623 averageSpeed = ((averageSpeed * (curIndex-1)) + charge) / curIndex; | |
| 4624 completeSec = (100.0 - stateUsed->lifeData.battery_charge) / averageSpeed; | |
| 4625 } | |
| 4626 else | |
| 4627 { | |
| 4628 completeSec = 0xffff; | |
| 4629 } | |
| 4630 return completeSec; | |
| 4631 } | |
| 4632 | |
| 4633 uint16_t* getChargeLog() | |
| 4634 { | |
| 4635 return ChargerLog; | |
| 4636 } | |
| 4637 | |
| 4638 void t7_ChargerView(void) | |
| 4639 { | |
| 4640 static float lastCharge = 0.0; | |
| 4641 float localCharge = 0.0; | |
| 4642 static uint32_t lastTick = 0; | |
| 4643 uint32_t curTick = 0; | |
| 4644 static float speed = 0.0; | |
| 4645 float deltatime = 0.0; | |
| 4646 | |
| 4647 char text[256+50]; | |
| 4648 uint8_t textpointer = 0; | |
| 4649 static uint16_t remainingSec = 0; | |
| 4650 uint16_t hoursto100 = 0; | |
| 4651 char indicator = '~'; | |
| 4652 | |
| 4653 point_t start, stop; | |
| 4654 | |
|
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4655 SWindowGimpStyle wintemp; |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4656 SSettings* pSettings; |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4657 pSettings = settingsGetPointer(); |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4658 |
| 672 | 4659 t7cY0free.WindowLineSpacing = 28 + 48 + 14; |
| 4660 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
| 4661 t7cY0free.WindowNumberOfTextLines = 3; | |
| 4662 | |
|
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4663 |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4664 if(pSettings->FlipDisplay) |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4665 { |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4666 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4667 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4668 } |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4669 |
| 672 | 4670 localCharge = stateUsed->lifeData.battery_charge; |
| 4671 if(localCharge < 0.0) | |
| 4672 { | |
| 4673 localCharge *= -1.0; | |
| 4674 } | |
| 4675 | |
| 4676 if(stateUsed->chargeStatus != CHARGER_off) | |
| 4677 { | |
| 859 | 4678 curTick = HAL_GetTick(); |
| 4679 deltatime = (curTick - lastTick); | |
| 4680 | |
| 4681 if((deltatime > 3000) || (lastCharge != localCharge)) /* Charge value update is expected every 2 second. */ | |
| 4682 { /* Added timeout to keep graph moving in case charger is temporary idle */ | |
| 4683 if(lastCharge != localCharge) | |
| 672 | 4684 { |
| 859 | 4685 if(lastCharge < localCharge) |
| 4686 { | |
| 4687 speed = (localCharge - lastCharge) * 1000.0 / deltatime; | |
| 4688 } | |
| 4689 | |
| 4690 if(localCharge > 100.0) | |
| 4691 { | |
| 4692 localCharge = 100.0; | |
| 4693 } | |
| 4694 lastCharge = localCharge; | |
| 672 | 4695 } |
| 4696 deltatime = 0; | |
| 4697 remainingSec = LogDeltaCharge(speed); | |
| 4698 speed = 0; | |
| 859 | 4699 lastTick = curTick; |
| 672 | 4700 } |
| 4701 } | |
| 4702 textpointer += snprintf(&text[textpointer],50,"\n\r"); | |
| 4703 textpointer += snprintf(&text[textpointer],50,"\001%c\n\r",TXT_ChargeHour); | |
| 4704 | |
| 4705 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
| 4706 | |
| 4707 hoursto100 = remainingSec / 3600; /* reduce to hours */ | |
| 4708 if(hoursto100 < 1) | |
| 4709 { | |
| 4710 indicator = '<'; | |
| 4711 hoursto100 = 1; | |
| 4712 } | |
|
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4713 |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4714 if(!pSettings->FlipDisplay) |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4715 { |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4716 t7cY0free.WindowY0 -= 52; |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4717 } |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4718 else |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4719 { |
| 962 | 4720 t7cY0free.WindowY1 += 52; |
|
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4721 } |
| 672 | 4722 |
| 4723 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->chargeStatus != CHARGER_off)) | |
| 4724 { | |
| 4725 snprintf(text,60, | |
| 693 | 4726 "\001%0.2f\016\016%%\017\n\r" |
| 672 | 4727 "\001%c%d\n\r" |
| 4728 ,stateUsed->lifeData.battery_charge | |
| 4729 ,indicator | |
| 4730 ,hoursto100); | |
| 4731 } | |
| 4732 else | |
| 4733 { | |
| 4734 snprintf(text,60, | |
| 4735 "\001---\n\r" | |
| 4736 "\001---\n\r"); | |
| 4737 } | |
| 4738 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
| 4739 | |
| 4740 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + 50; | |
| 4741 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE - 100; | |
| 4742 | |
| 4743 | |
| 4744 if(!pSettings->FlipDisplay) | |
| 4745 { | |
| 4746 wintemp.top = 480 - t7l1.WindowY0 + 115; | |
| 4747 wintemp.bottom = wintemp.top + 100; | |
| 4748 } | |
| 4749 else | |
| 4750 { | |
|
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4751 wintemp.top = t7l1.WindowY1 + 102; |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4752 wintemp.bottom = wintemp.top + 100; |
| 672 | 4753 } |
| 4754 | |
| 4755 start.x = wintemp.left-5; | |
| 4756 start.y = 90; | |
| 4757 | |
| 4758 stop.x = wintemp.right + 5 - start.x; | |
| 4759 stop.y = 100; | |
| 4760 GFX_draw_box(&t7screen, start, stop,1, CLUT_Font020); | |
| 4761 | |
| 4762 if(stateUsed->chargeStatus != CHARGER_off) | |
| 4763 { | |
| 4764 GFX_graph_print(&t7screen, &wintemp, 1,1,0, 10, getChargeLog(), 60, CLUT_Font030, NULL); | |
| 4765 } | |
| 4766 else | |
| 4767 { | |
| 4768 GFX_graph_print(&t7screen, &wintemp, 1,1,0, 10, getChargeLog(), 60, CLUT_Font031, NULL); | |
| 4769 } | |
| 4770 | |
| 4771 } | |
|
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
|
4772 |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4773 |
|
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
|
4774 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
|
4775 { |
|
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
|
4776 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
|
4777 } |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4778 |
| 882 | 4779 void t7_drawAcentGraph(uint8_t color) |
| 4780 { | |
| 4781 point_t start, stop; | |
| 4782 | |
| 4783 SSettings* pSettings; | |
| 4784 pSettings = settingsGetPointer(); | |
| 4785 | |
| 4786 | |
| 4787 if(!pSettings->FlipDisplay) | |
| 4788 { | |
| 4789 start.y = t7l1.WindowY0 - 1; | |
| 4790 } | |
| 4791 else | |
| 4792 { | |
| 4793 start.y = t7l3.WindowY0 - 25; | |
| 4794 } | |
| 4795 | |
| 4796 for(int i = 0; i<4;i++) | |
| 4797 { | |
| 4798 start.y += 5*6; | |
| 4799 stop.y = start.y; | |
| 4800 start.x = CUSTOMBOX_LINE_LEFT - 1; | |
| 4801 stop.x = start.x - 17; | |
| 4802 GFX_draw_line(&t7screen, start, stop, 0); | |
| 4803 // start.x = CUSTOMBOX_LINE_RIGHT + 2; old right too | |
| 4804 // stop.x = start.x + 17; | |
| 4805 // GFX_draw_line(&t7screen, start, stop, 0); | |
| 4806 } | |
| 4807 // new thick bar design Sept. 2015 | |
| 4808 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 3 - 5; | |
| 4809 stop.x = start.x; | |
| 4810 if(!pSettings->FlipDisplay) | |
| 4811 { | |
| 4812 start.y = t7l1.WindowY0 - 1; | |
| 4813 } | |
| 4814 else | |
| 4815 { | |
| 4816 start.y = t7l3.WindowY0 - 25; | |
| 4817 } | |
| 4818 stop.y = start.y + (uint16_t)(stateUsed->lifeData.ascent_rate_meter_per_min * 6); | |
| 4819 stop.y -= 3; // wegen der Liniendicke von 12 anstelle von 9 | |
| 4820 if(stop.y >= 470) | |
| 4821 stop.y = 470; | |
| 4822 start.y += 7; // starte etwas weiter oben | |
| 4823 if(color == 0) | |
| 4824 { | |
| 4825 color = CLUT_EverythingOkayGreen; /* do not use white color for drawing graph */ | |
| 4826 } | |
| 4827 | |
| 4828 GFX_draw_thick_line(12,&t7screen, start, stop, color); | |
| 4829 } | |
| 4830 | |
| 915 | 4831 #define ASCENT_GRAPH_YPIXEL 110 |
| 4832 | |
| 882 | 4833 |
| 907 | 4834 uint8_t t7_drawSlowExitGraph() /* this function is only called if diver is below last last stop depth */ |
| 882 | 4835 { |
| 4836 static uint16_t countDownSec = 0; | |
| 945 | 4837 uint8_t drawingMeterStep; |
| 882 | 4838 static float exitDepthMeter = 0.0; |
| 4839 | |
| 4840 uint8_t index = 0; | |
| 945 | 4841 uint8_t color = 0; |
| 882 | 4842 point_t start, stop; |
| 4843 | |
| 4844 SSettings* pSettings; | |
| 4845 pSettings = settingsGetPointer(); | |
| 4846 | |
| 945 | 4847 |
| 4848 if(calculateSlowExit(&countDownSec, &exitDepthMeter, &color)) /* graph to be drawn? */ | |
| 882 | 4849 { |
| 945 | 4850 if(!pSettings->FlipDisplay) |
| 882 | 4851 { |
| 945 | 4852 start.y = t7l1.WindowY0 - 1; |
| 882 | 4853 } |
| 945 | 4854 else |
| 4855 { | |
| 4856 start.y = t7l3.WindowY0 - 25; | |
| 4857 } | |
| 4858 drawingMeterStep = ASCENT_GRAPH_YPIXEL / pSettings->last_stop_depth_meter; /* based on 120 / 4 = 30 of standard ascent graph */ | |
| 4859 for(index = 0; index < pSettings->last_stop_depth_meter; index++) /* draw meter indicators */ | |
| 882 | 4860 { |
| 945 | 4861 start.y += drawingMeterStep; |
| 4862 stop.y = start.y; | |
| 4863 start.x = CUSTOMBOX_LINE_LEFT - 1; | |
| 4864 stop.x = start.x - 38; | |
| 4865 GFX_draw_line(&t7screen, start, stop, 0); | |
| 4866 } | |
| 4867 | |
| 4868 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 20; | |
| 4869 stop.x = start.x; | |
| 4870 if(!pSettings->FlipDisplay) | |
| 4871 { | |
| 4872 start.y = t7l1.WindowY0 + ASCENT_GRAPH_YPIXEL + 5; | |
| 882 | 4873 } |
| 945 | 4874 else |
| 4875 { | |
| 4876 start.y = t7l3.WindowY0 - 25 + ASCENT_GRAPH_YPIXEL + 5; | |
| 4877 } | |
| 4878 stop.y = start.y - countDownSec * (ASCENT_GRAPH_YPIXEL / (float)(pSettings->slowExitTime * 60.0)); | |
| 4879 if(stop.y >= 470) stop.y = 470; | |
| 4880 if(!pSettings->FlipDisplay) | |
| 4881 { | |
| 4882 stop.y += 5; | |
| 4883 } | |
| 4884 GFX_draw_thick_line(15,&t7screen, start, stop, 3); | |
| 4885 /* mark diver depth */ | |
| 4886 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 30; | |
| 4887 stop.x = start.x + 24; | |
| 4888 | |
| 4889 start.y = start.y - (stateUsed->lifeData.depth_meter * (ASCENT_GRAPH_YPIXEL) / pSettings->last_stop_depth_meter); | |
| 4890 stop.y = start.y; | |
| 4891 GFX_draw_thick_line(10,&t7screen, start, stop, 9); | |
| 882 | 4892 } |
|
954
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
4893 else |
|
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
4894 { |
|
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
4895 color = 0xff; |
|
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
4896 } |
| 882 | 4897 return color; |
| 4898 } | |
|
979
e7cd7ffd1879
Add proper string termination and fix space. (mikeller)
heinrichsweikamp
parents:
962
diff
changeset
|
4899 |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4900 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
|
4901 { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4902 SSettings *settings = settingsGetPointer(); |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4903 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4904 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
|
4905 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
|
4906 } |
