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