Mercurial > public > ostc4
annotate Discovery/Src/t7.c @ 1012:23c405d5a766 GasConsumption
Update CCR summary view:
In the previous version depending on the language settings the text sometimes overlap. To avoid this the alignment has been changed from tab to right border. In addition the scrubber timer is displayed in small font in case both timers are active.
| author | Ideenmodellierer |
|---|---|
| date | Sat, 10 May 2025 21:26:02 +0200 |
| parents | 75f958ca5d0e |
| children | 8c0134a287da |
| 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; |
|
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1838 if (settings->scrubTimerMode != SCRUB_TIMER_OFF) { |
|
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
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'; |
| 1012 | 1985 data[dataIndex++] = '\002'; |
| 1986 if(settings->scubberActiveId == 3) /* switch to small font size to avoid bad alignment */ | |
| 1987 { | |
| 1988 data[dataIndex++] = '\016'; | |
| 1989 data[dataIndex++] = '\016'; | |
| 1990 } | |
|
980
7149f372b0ba
Fix a couple of bugs in the scrubber timer:
heinrichsweikamp
parents:
979
diff
changeset
|
1991 dataIndex += printScrubberText(&data[dataIndex], 10, settings->scrubberData, settings); |
| 1012 | 1992 if(settings->scubberActiveId == 3) |
| 1993 { | |
| 1994 data[dataIndex++] = ' '; | |
| 1995 data[dataIndex++] = ' '; | |
| 1996 } | |
| 1997 | |
|
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
|
1998 } |
|
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
1999 |
|
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are 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 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
|
2001 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
|
2002 |
|
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are 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 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
|
2004 |
|
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are 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.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
|
2006 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
|
2007 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
|
2008 |
|
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
2009 if (!settings->FlipDisplay) { |
| 824 | 2010 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
|
2011 t7cY0free.WindowX0 += 10; |
| 1012 | 2012 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
|
2013 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
|
2014 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
|
2015 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
|
2016 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
|
2017 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
|
2018 } else { |
| 1012 | 2019 t7cY0free.WindowX0 -= 10; |
| 824 | 2020 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
|
2021 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
|
2022 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
|
2023 GFX_write_string(&FontT24, &t7cY0free, heading, 1); |
| 1012 | 2024 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
|
2025 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
|
2026 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
|
2027 } |
|
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
2028 |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2029 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
|
2030 |
|
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
2031 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
|
2032 } |
|
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
2033 |
|
8deb28b2d4da
CCR overview in surface mode. Makes it easy to quickly check that all settings (mode, setpoints, diluent, scrubber timer) are correct when preparing to dive (also makes the OC gas list available in surface mode for the same reason).
heinrichsweikamp
parents:
759
diff
changeset
|
2034 |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2035 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
|
2036 { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2037 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
|
2038 stateUsedWrite->timerStartedS = startTimeS; |
|
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 |
|
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 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
|
2043 { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2044 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
|
2045 stateUsedWrite->timerStartedS = startTimeS; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2046 } |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2047 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2048 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2049 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
|
2050 { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2051 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
|
2052 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2053 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
|
2054 disableTimer(); |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2055 } else { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2056 switch (stateUsed->timerState) { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2057 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
|
2058 if (switchedToTimerView) { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2059 setTimerPrestart(nowS); |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2060 } |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2061 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2062 break; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2063 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
|
2064 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
|
2065 if (switchedToTimerView) { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2066 setTimerPrestart(nowS); |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2067 } |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2068 } else { |
|
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 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
|
2071 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
|
2072 } else { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2073 disableTimer(); |
|
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 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2077 break; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2078 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
|
2079 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
|
2080 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
|
2081 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
|
2082 } else { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2083 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
|
2084 } |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2085 } |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2086 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2087 break; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2088 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
|
2089 if (switchedToTimerView) { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2090 setTimerFinished(nowS); |
|
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 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2093 break; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2094 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
|
2095 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
|
2096 if (switchedToTimerView) { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2097 setTimerPrestart(stateUsed->timerStartedS); |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2098 } |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2099 } else { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2100 disableTimer(); |
|
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 break; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2104 } |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2105 } |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2106 } |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2107 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2108 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2109 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
|
2110 { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2111 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
|
2112 } |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2113 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2114 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2115 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
|
2116 { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2117 char heading[32]; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2118 unsigned headingIndex = 0; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2119 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2120 char data[32]; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2121 unsigned dataIndex = 0; |
|
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 heading[headingIndex++] = '\032'; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2124 heading[headingIndex++] = '\016'; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2125 heading[headingIndex++] = '\016'; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2126 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2127 data[dataIndex++] = '\t'; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2128 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2129 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
|
2130 switch (stateUsed->timerState) { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2131 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
|
2132 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
|
2133 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2134 break; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2135 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
|
2136 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
|
2137 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
|
2138 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
|
2139 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
|
2140 } else { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2141 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
|
2142 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
|
2143 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2144 timerRemainingS = 0; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2145 } |
|
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 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
|
2148 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2149 break; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2150 default: |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2151 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2152 break; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2153 } |
|
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 char timer[16]; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2156 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
|
2157 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2158 heading[headingIndex++] = 0; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2159 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2160 data[dataIndex++] = 0; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2161 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2162 t7cY0free.WindowLineSpacing = 48; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2163 t7cY0free.WindowNumberOfTextLines = 6; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2164 t7cY0free.WindowTab = 375; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2165 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2166 if (!settings->FlipDisplay) { |
| 824 | 2167 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
|
2168 t7cY0free.WindowX0 += 10; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2169 t7cY0free.WindowY0 += 10; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2170 t7cY0free.WindowY1 = 355; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2171 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
|
2172 t7cY0free.WindowX0 -= 10; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2173 t7cY0free.WindowY0 -= 10; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2174 } else { |
| 824 | 2175 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
|
2176 t7cY0free.WindowY1 -= 10; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2177 t7cY0free.WindowX1 -= 10; |
|
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(&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
|
2179 t7cY0free.WindowY1 += 10; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2180 t7cY0free.WindowX1 += 10; |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2181 } |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2182 |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2183 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
|
2184 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2185 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
|
2186 |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2187 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
|
2188 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2189 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
|
2190 } |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2191 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2192 |
| 38 | 2193 void t7_refresh_customview(void) |
| 2194 { | |
| 405 | 2195 static uint8_t last_customview = CVIEW_END; |
| 38 | 2196 |
| 2197 char text[256]; | |
| 567 | 2198 char timeSuffix; |
| 2199 uint8_t hoursToDisplay; | |
| 662 | 2200 #ifdef ENABLE_PSCR_MODE |
| 2201 uint8_t showSimPPO2 = 1; | |
| 2202 #endif | |
| 38 | 2203 uint16_t textpointer = 0; |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2204 uint16_t heading = 0; |
| 38 | 2205 int16_t start; |
|
51
8f8ea3a32e82
Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents:
38
diff
changeset
|
2206 uint8_t lineCountCustomtext = 0; |
| 38 | 2207 int16_t shiftWindowY0; |
| 2208 RTC_DateTypeDef Sdate; | |
| 2209 RTC_TimeTypeDef Stime; | |
| 2210 float fPpO2limitHigh, fPpO2limitLow, fPpO2ofGasAtThisDepth; // CVIEW_Gaslist | |
| 2211 const SGasLine * pGasLine; // CVIEW_Gaslist | |
| 2212 uint8_t oxygen, helium; // CVIEW_Gaslist | |
| 2213 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
|
2214 SSettingsStatus SettingsStatus; |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2215 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2216 pSettings = settingsGetPointer(); |
| 907 | 2217 uint8_t decoPlanEntries = 6; |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2218 |
| 701 | 2219 uint8_t local_ppo2sensors_deactivated = 0; |
| 2220 | |
| 2221 if(stateUsed->mode == MODE_DIVE) /* show sensors based on current dive settings */ | |
| 2222 { | |
| 2223 local_ppo2sensors_deactivated = stateUsed->diveSettings.ppo2sensors_deactivated; | |
| 2224 } | |
| 2225 else | |
| 2226 { | |
| 907 | 2227 local_ppo2sensors_deactivated = pSettings->ppo2sensors_deactivated; |
| 701 | 2228 } |
| 2229 | |
| 405 | 2230 if(last_customview != selection_customview) /* check if current selection is disabled and should be skipped */ |
| 2231 { | |
| 2232 if(t7_customview_disabled(selection_customview)) | |
| 2233 { | |
| 2234 t7_change_customview(ACTION_BUTTON_ENTER); | |
| 2235 } | |
| 2236 } | |
| 38 | 2237 switch(selection_customview) |
| 2238 { | |
| 2239 case CVIEW_noneOrDebug: | |
| 2240 if(settingsGetPointer()->showDebugInfo) | |
| 2241 { | |
| 2242 // header | |
| 2243 strcpy(text,"\032\f\001Debug"); | |
| 2244 GFX_write_string(&FontT42,&t7cH,text,0); | |
| 2245 // content | |
| 2246 t7_debug(); | |
| 2247 } | |
| 2248 break; | |
| 2249 | |
| 672 | 2250 case CVIEW_Charger: |
| 2251 snprintf(text,100,"\032\f\001%c",TXT_Charging); | |
| 2252 GFX_write_string(&FontT42,&t7cH,text,0); | |
| 2253 t7_ChargerView(); | |
| 2254 | |
| 2255 break; | |
| 2256 | |
| 38 | 2257 case CVIEW_SummaryOfLeftCorner: |
| 2258 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Summary); | |
| 2259 GFX_write_string(&FontT42,&t7cH,text,0); | |
| 2260 // content | |
| 2261 t7_SummaryOfLeftCorner(); | |
| 2262 break; | |
| 2263 | |
| 2264 case CVIEW_CompassDebug: | |
| 2265 snprintf(text,100,"\032\f\001Compass raw"); | |
| 2266 GFX_write_string(&FontT42,&t7cH,text,0); | |
| 2267 snprintf(text,255,"%1.1f\n\r%1.1f\n\r%1.1f\n\r%i\n\r%i\n\r%i" | |
| 2268 ,stateUsed->lifeData.compass_heading | |
| 2269 ,stateUsed->lifeData.compass_roll | |
| 2270 ,stateUsed->lifeData.compass_pitch | |
| 2271 ,stateUsed->lifeData.compass_DX_f | |
| 2272 ,stateUsed->lifeData.compass_DY_f | |
| 2273 ,stateUsed->lifeData.compass_DZ_f | |
| 2274 ); | |
| 2275 | |
| 2276 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
| 2277 t7cY0free.WindowLineSpacing = 48; | |
| 2278 t7cY0free.WindowNumberOfTextLines = 6; | |
| 2279 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
| 2280 break; | |
| 2281 | |
| 2282 case CVIEW_Hello: | |
| 2283 t7_logo_OSTC(); | |
| 2284 t7cC.WindowLineSpacing = 53; | |
| 2285 t7cC.WindowNumberOfTextLines = 5; | |
| 2286 shiftWindowY0 = 18; | |
| 2287 | |
| 2288 if(updateNecessary)//if(DataEX_check_RTE_version__needs_update() || font_update_required()) | |
| 2289 { | |
| 2290 if(warning_count_high_time) | |
| 2291 { | |
| 2292 shiftWindowY0 += 20; | |
| 2293 t7cC.WindowY0 -= shiftWindowY0; | |
| 2294 textpointer = 0; | |
| 2295 text[textpointer++] = TXT_2BYTE; | |
| 2296 text[textpointer++] = TXT2BYTE_PleaseUpdate; | |
| 2297 text[textpointer++] = '\n'; | |
| 2298 text[textpointer++] = '\r'; | |
| 2299 if(DataEX_check_RTE_version__needs_update()) | |
| 2300 { | |
| 2301 text[textpointer++] = TXT_2BYTE; | |
| 2302 text[textpointer++] = TXT2BYTE_RTE; | |
| 2303 text[textpointer++] = '\n'; | |
| 2304 text[textpointer++] = '\r'; | |
| 2305 } | |
| 2306 if(font_update_required()) | |
| 2307 { | |
| 2308 text[textpointer++] = TXT_2BYTE; | |
| 2309 text[textpointer++] = TXT2BYTE_Fonts; | |
| 2310 } | |
| 2311 text[textpointer++] = 0; | |
| 2312 GFX_write_string_color(&FontT42,&t7cC,text,1, CLUT_WarningRed); | |
| 2313 t7cC.WindowY0 += shiftWindowY0; | |
| 2314 } | |
| 2315 t7cC.WindowNumberOfTextLines = 3; | |
| 2316 } | |
| 662 | 2317 else if(isSettingsWarning()) |
| 2318 { | |
| 2319 if(warning_count_high_time) | |
| 2320 { | |
|
819
24b39a432bc2
Added debug information in case an error in the settings has been detected:
Ideenmodellierer
parents:
805
diff
changeset
|
2321 get_CorrectionStatus(&SettingsStatus); |
| 662 | 2322 shiftWindowY0 += 20; |
| 2323 t7cC.WindowY0 -= shiftWindowY0; | |
| 2324 textpointer = 0; | |
|
819
24b39a432bc2
Added debug information in case an error in the settings has been detected:
Ideenmodellierer
parents:
805
diff
changeset
|
2325 snprintf(text,255,"\001%c%c\n\r\001%d|%d",TXT_2BYTE,TXT2BYTE_CheckSettings,SettingsStatus.FirstCorrection,SettingsStatus.Corrections); |
| 662 | 2326 GFX_write_string_color(&FontT42,&t7cC,text,1, CLUT_WarningRed); |
| 2327 t7cC.WindowY0 += shiftWindowY0; | |
| 2328 } | |
| 2329 t7cC.WindowNumberOfTextLines = 1; | |
| 2330 } | |
| 759 | 2331 else if(!isCompassCalibrated()) { |
| 2332 if(warning_count_high_time) { | |
| 2333 shiftWindowY0 += 20; | |
| 2334 t7cC.WindowY0 -= shiftWindowY0; | |
| 2335 textpointer = 0; | |
| 2336 text[textpointer++] = '\001'; | |
| 2337 text[textpointer++] = TXT_2BYTE; | |
| 2338 text[textpointer++] = TXT2BYTE_Compass; | |
| 2339 text[textpointer++] = '\n'; | |
| 2340 text[textpointer++] = '\r'; | |
| 2341 text[textpointer++] = '\001'; | |
| 2342 text[textpointer++] = TXT_2BYTE; | |
| 2343 text[textpointer++] = TXT2BYTE_NotCalibrated; | |
| 2344 text[textpointer++] = '\n'; | |
| 2345 text[textpointer++] = '\r'; | |
| 2346 text[textpointer++] = 0; | |
| 2347 GFX_write_string_color(&FontT42, &t7cC,text, 1, CLUT_WarningRed); | |
| 2348 t7cC.WindowY0 += shiftWindowY0; | |
| 2349 } | |
| 2350 t7cC.WindowNumberOfTextLines = 2; | |
| 2351 } | |
| 38 | 2352 else // customtext |
| 2353 { | |
| 2354 lineCountCustomtext = t7_customtextPrepare(text); | |
| 2355 if(lineCountCustomtext <= 2) | |
| 2356 shiftWindowY0 += 20+26; // nach unten | |
| 2357 else | |
| 2358 if(lineCountCustomtext <= 3) | |
| 2359 shiftWindowY0 += 20; // nach unten | |
| 2360 t7cC.WindowY0 -= shiftWindowY0; | |
| 2361 | |
| 2362 GFX_write_string(&FontT42,&t7cC,text,1); | |
| 2363 t7cC.WindowNumberOfTextLines = 3; | |
| 2364 t7cC.WindowY0 += shiftWindowY0; | |
| 2365 } | |
| 2366 if(lineCountCustomtext <= 4) | |
| 2367 { | |
| 2368 snprintf(text,100,"\001#%0u V%01u.%01u.%01u", | |
| 2369 settingsGetPointer()->serialLow + (256 * settingsGetPointer()->serialHigh), | |
| 2370 firmwareDataGetPointer()->versionFirst, | |
| 2371 firmwareDataGetPointer()->versionSecond, | |
| 2372 firmwareDataGetPointer()->versionThird | |
| 2373 ); | |
| 2374 GFX_write_string(&FontT24,&t7cC,text,0); | |
| 2375 } | |
| 2376 break; | |
| 2377 | |
| 2378 case CVIEW_Gaslist: | |
| 2379 // a lot of code taken from tMenuGas.c | |
| 2380 // header | |
| 2381 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Gaslist); | |
| 2382 GFX_write_string(&FontT42,&t7cH,text,0); | |
| 2383 // content | |
| 2384 textpointer = 0; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2385 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2386 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2387 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2388 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2389 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2390 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2391 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2392 t7cY0free.WindowY1 = 400; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2393 } |
| 38 | 2394 t7cY0free.WindowLineSpacing = 48+9; |
| 2395 t7cY0free.WindowNumberOfTextLines = 5; // NUM_GASES == 5 | |
| 2396 t7cY0free.WindowTab = 420; | |
| 2397 | |
| 2398 pGasLine = settingsGetPointer()->gas; | |
| 2399 if(actualLeftMaxDepth(stateUsed)) | |
| 2400 fPpO2limitHigh = (float)(settingsGetPointer()->ppO2_max_deco) / 100; | |
| 2401 else | |
| 2402 fPpO2limitHigh = (float)(settingsGetPointer()->ppO2_max_std) / 100; | |
| 2403 fPpO2limitLow = (float)(settingsGetPointer()->ppO2_min) / 100; | |
| 2404 for(int gasId=1;gasId<=NUM_GASES;gasId++) | |
| 2405 { | |
| 2406 textpointer = 0; | |
|
527
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2407 #ifdef ENABLE_UNUSED_GAS_HIDING |
|
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2408 if(!pGasLine[gasId].note.ub.off) |
|
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2409 { |
|
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2410 #endif |
| 38 | 2411 fPpO2ofGasAtThisDepth = (stateUsed->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * pGasLine[gasId].oxygen_percentage / 100; |
| 2412 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
|
2413 strcpy(&text[textpointer++],"\031"); |
| 517 | 2414 else if(stateUsed->lifeData.actualGas.GasIdInSettings == gasId) /* actual selected gas */ |
| 2415 { | |
| 2416 strcpy(&text[textpointer++],"\030"); | |
| 2417 } | |
| 38 | 2418 else if((fPpO2ofGasAtThisDepth > fPpO2limitHigh) || (fPpO2ofGasAtThisDepth < fPpO2limitLow)) |
| 2419 strcpy(&text[textpointer++],"\025"); | |
| 517 | 2420 else if(actualBetterGasId() == gasId) |
| 2421 { | |
| 2422 strcpy(&text[textpointer++],"\026"); /* Highlight better gas */ | |
| 2423 } | |
| 38 | 2424 else |
| 517 | 2425 strcpy(&text[textpointer++],"\023"); |
| 38 | 2426 |
| 2427 text[textpointer++] = ' '; | |
| 2428 oxygen = pGasLine[gasId].oxygen_percentage; | |
| 2429 helium = pGasLine[gasId].helium_percentage; | |
| 2430 textpointer += write_gas(&text[textpointer], oxygen, helium); | |
| 2431 // Wechseltiefe | |
| 2432 if(pGasLine[gasId].depth_meter) | |
| 2433 { | |
| 631 | 2434 textpointer += snprintf(&text[textpointer],10,"\t%u %c%c",unit_depth_integer(pGasLine[gasId].depth_meter), unit_depth_char1(), unit_depth_char2()); |
| 38 | 2435 } |
| 2436 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
|
2437 #ifdef ENABLE_UNUSED_GAS_HIDING |
|
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2438 } |
|
962d7b2c18c6
Do not show gases in "Off" state in custom gas list:
Ideenmodellierer
parents:
517
diff
changeset
|
2439 #endif |
| 38 | 2440 } |
| 2441 break; | |
| 2442 | |
| 2443 case CVIEW_EADTime: | |
| 2444 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Info ); | |
| 2445 GFX_write_string(&FontT42,&t7cH,text,0); | |
| 2446 textpointer = 0; | |
| 2447 | |
| 2448 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2449 if(pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2450 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2451 t7cY0free.WindowY1 = 400; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2452 } |
| 38 | 2453 t7cY0free.WindowLineSpacing = 48; |
| 2454 t7cY0free.WindowNumberOfTextLines = 6; | |
| 2455 | |
| 2456 // time | |
| 2457 snprintf(text,100,"\032\001%c%c",TXT_2BYTE,TXT2BYTE_Clock ); | |
| 2458 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
| 2459 | |
| 2460 translateDate(stateRealGetPointer()->lifeData.dateBinaryFormat, &Sdate); | |
| 2461 translateTime(stateRealGetPointer()->lifeData.timeBinaryFormat, &Stime); | |
| 567 | 2462 |
| 2463 if (settingsGetPointer()->amPMTime) | |
| 2464 { | |
| 2465 if (Stime.Hours > 11) | |
| 2466 { | |
| 2467 timeSuffix = 'P'; | |
| 2468 } | |
| 2469 else | |
| 2470 { | |
| 2471 timeSuffix = 'A'; | |
| 2472 } | |
| 2473 | |
| 2474 if (Stime.Hours % 12 == 0) | |
| 2475 { | |
| 2476 hoursToDisplay = 12; | |
| 2477 } | |
| 2478 else | |
| 2479 { | |
| 2480 hoursToDisplay = (Stime.Hours % 12); | |
| 2481 } | |
| 2482 | |
| 2483 if(Stime.Seconds % 2) | |
| 2484 textpointer += snprintf(&text[textpointer],100,"\030\001%02d:%02d %cM",hoursToDisplay,Stime.Minutes,timeSuffix); | |
| 2485 else | |
| 2486 textpointer += snprintf(&text[textpointer],100,"\030\001%02d\031:\030%02d %cM",hoursToDisplay,Stime.Minutes,timeSuffix); | |
| 2487 } | |
| 38 | 2488 else |
| 567 | 2489 { |
| 2490 if(Stime.Seconds % 2) | |
| 2491 textpointer += snprintf(&text[textpointer],100,"\030\001%02d:%02d",Stime.Hours,Stime.Minutes); | |
| 2492 else | |
| 2493 textpointer += snprintf(&text[textpointer],100,"\030\001%02d\031:\030%02d",Stime.Hours,Stime.Minutes); | |
| 2494 } | |
| 2495 | |
| 38 | 2496 GFX_write_string(&FontT42, &t7cY0free, text, 2); |
| 2497 | |
| 2498 // EAD / END | |
| 2499 // The equivalent air depth can be calculated for depths in metres as follows: | |
| 2500 // EAD = (Depth + 10) � Fraction of N2 / 0.79 - 10 (wikipedia) | |
| 2501 // The equivalent narcotic depth can be calculated for depths in metres as follows: | |
| 2502 // END = (Depth + 10) � (1 - Fraction of helium) - 10 (wikipedia) | |
| 2503 decom_get_inert_gases((float)stateUsed->lifeData.pressure_ambient_bar,&(stateUsed->lifeData.actualGas),&fraction_nitrogen,&fraction_helium); | |
| 2504 depth = stateUsed->lifeData.pressure_ambient_bar; | |
| 2505 surface = stateUsed->lifeData.pressure_surface_bar; | |
| 2506 ead = 10.f * ((depth * fraction_nitrogen/0.79f) - surface); | |
| 2507 end = 10.0f * ((depth * (1.f - fraction_helium)) - surface); | |
| 2508 if(ead < 0) | |
| 2509 ead = 0; | |
| 2510 if(end < 0) | |
| 2511 end = 0; | |
| 2512 | |
| 2513 snprintf(text,100,"\032\001EAD"); | |
| 2514 GFX_write_string(&FontT42, &t7cY0free, text, 3); | |
| 2515 snprintf(text,100,"\030\001%01.1f %c%c" | |
| 2516 , unit_depth_float(ead) | |
| 2517 , unit_depth_char1() | |
| 2518 , unit_depth_char2() | |
| 2519 ); | |
| 2520 GFX_write_string(&FontT42, &t7cY0free, text, 4); | |
| 2521 | |
| 2522 snprintf(text,100,"\032\001END"); | |
| 2523 GFX_write_string(&FontT42, &t7cY0free, text, 5); | |
| 2524 snprintf(text,100,"\030\001%01.1f %c%c" | |
| 2525 , unit_depth_float(ead) | |
| 2526 , unit_depth_char1() | |
| 2527 , unit_depth_char2() | |
| 2528 ); | |
| 2529 GFX_write_string(&FontT42, &t7cY0free, text, 6); | |
| 2530 break; | |
| 2531 | |
| 2532 case CVIEW_Profile: | |
| 2533 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Profile); | |
| 2534 GFX_write_string(&FontT42,&t7cH,text,0); | |
| 2535 textpointer = 0; | |
| 2536 t7_miniLiveLogProfile(); | |
| 2537 break; | |
| 2538 | |
| 2539 case CVIEW_Tissues: | |
| 2540 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_Tissues); | |
| 2541 GFX_write_string(&FontT42,&t7cH,text,0); | |
| 2542 textpointer = 0; | |
| 2543 t7_tissues(stateUsed); | |
| 2544 break; | |
| 2545 | |
| 2546 case CVIEW_sensors: | |
| 2547 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_O2monitor); | |
| 2548 GFX_write_string(&FontT42,&t7cH,text,0); | |
| 2549 textpointer = 0; | |
| 2550 text[textpointer++] = '\030'; // main color | |
| 2551 for(int i=0;i<3;i++) | |
| 2552 { | |
| 701 | 2553 if((local_ppo2sensors_deactivated & (1<<i)) || (stateUsed->lifeData.ppO2Sensor_bar[i] == 0.0)) |
| 38 | 2554 { |
| 662 | 2555 #ifdef ENABLE_PSCR_MODE |
| 2556 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 */ | |
| 2557 { | |
| 2558 text[textpointer++] = '\023'; | |
| 2559 textpointer += snprintf(&text[textpointer],100,"\001%01.2f\n\r\030",stateUsed->lifeData.ppo2Simulated_bar); | |
| 2560 showSimPPO2 = 0; | |
| 2561 } | |
| 2562 else | |
| 2563 #endif | |
| 2564 { | |
| 2565 text[textpointer++] = '\031'; // labelcolor | |
| 2566 text[textpointer++] = '\001'; | |
| 2567 text[textpointer++] = '-'; | |
| 2568 text[textpointer++] = '\n'; | |
| 2569 text[textpointer++] = '\r'; | |
| 2570 text[textpointer++] = '\030'; // main color | |
| 2571 text[textpointer] = 0; | |
| 2572 } | |
| 38 | 2573 } |
| 2574 else | |
| 2575 { | |
| 2576 if(stateUsed->warnings.sensorOutOfBounds[i]) | |
| 2577 text[textpointer++] = '\025'; // Warning Red | |
| 2578 textpointer += snprintf(&text[textpointer],100,"\001%01.2f\n\r\030",stateUsed->lifeData.ppO2Sensor_bar[i]); | |
| 2579 } | |
| 2580 } | |
| 2581 t7cC.WindowLineSpacing = 95; | |
| 2582 t7cC.WindowNumberOfTextLines = 3; | |
| 2583 text[textpointer] = 0; | |
|
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2584 if(pSettings->FlipDisplay) |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2585 { |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2586 t7cC.WindowY1 -= 40; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2587 } |
| 38 | 2588 GFX_write_string(&FontT105,&t7cC,text,1); |
|
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2589 if(pSettings->FlipDisplay) |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2590 { |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2591 t7cC.WindowY1 += 40; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2592 } |
| 38 | 2593 break; |
| 2594 | |
| 2595 case CVIEW_sensors_mV: | |
| 2596 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE,TXT2BYTE_O2voltage); | |
| 2597 GFX_write_string(&FontT42,&t7cH,text,0); | |
| 2598 textpointer = 0; | |
| 2599 text[textpointer++] = '\030'; | |
| 2600 for(int i=0;i<3;i++) | |
| 2601 { | |
| 701 | 2602 if(local_ppo2sensors_deactivated & (1<<i)) |
| 38 | 2603 { |
| 2604 text[textpointer++] = '\031'; | |
| 2605 text[textpointer++] = '\001'; | |
| 2606 text[textpointer++] = '-'; | |
| 2607 text[textpointer++] = '\n'; | |
| 2608 text[textpointer++] = '\r'; | |
| 2609 text[textpointer++] = '\030'; | |
| 2610 text[textpointer] = 0; | |
| 2611 } | |
| 2612 else | |
| 2613 { | |
| 2614 if(stateUsed->warnings.sensorOutOfBounds[i]) | |
| 2615 text[textpointer++] = '\025'; | |
| 2616 textpointer += snprintf(&text[textpointer],100,"\001%01.1f mV\n\r\030",(stateUsed->lifeData.sensorVoltage_mV[i])); | |
| 2617 } | |
| 2618 } | |
| 2619 t7cC.WindowLineSpacing = 95; | |
| 2620 t7cC.WindowNumberOfTextLines = 3; | |
| 2621 text[textpointer] = 0; | |
|
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2622 if(pSettings->FlipDisplay) |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2623 { |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2624 t7cC.WindowY1 -= 40; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2625 } |
| 38 | 2626 GFX_write_string(&FontT48,&t7cC,text,1); |
|
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2627 if(pSettings->FlipDisplay) |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2628 { |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2629 t7cC.WindowY1 += 40; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
2630 } |
| 38 | 2631 break; |
| 2632 | |
| 2633 case CVIEW_Compass: | |
| 2634 default: | |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2635 |
|
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2636 if(pSettings->compassInertia) |
|
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2637 { |
|
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2638 heading = (uint16_t)compass_getCompensated(); |
|
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2639 } |
|
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2640 else |
|
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2641 { |
|
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2642 heading = (uint16_t)stateUsed->lifeData.compass_heading; |
|
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2643 } |
| 38 | 2644 snprintf(text,100,"\032\f\001%c%c",TXT_2BYTE, TXT2BYTE_Compass); |
| 2645 GFX_write_string(&FontT42,&t7cH,text,0); | |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2646 t7_compass(heading, stateUsed->diveSettings.compassHeading); |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2647 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2648 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2649 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2650 t7cY0free.WindowX0 += 15; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2651 t7cY0free.WindowY0 = 230; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2652 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2653 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2654 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2655 t7cY0free.WindowX0 -= 15; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2656 t7cY0free.WindowY0 = 0; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2657 t7cY0free.WindowY1 = 250; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2658 } |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
2659 snprintf(text,100,"\030\001%03i`",heading); |
| 38 | 2660 GFX_write_string(&FontT54,&t7cY0free,text,0); |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2661 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2662 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2663 t7cY0free.WindowX0 -= 15; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2664 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2665 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2666 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2667 t7cY0free.WindowX0 += 15; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2668 } |
| 38 | 2669 break; |
| 2670 | |
| 2671 case CVIEW_Decolist: | |
| 911 | 2672 |
| 907 | 2673 |
| 2674 if(settingsGetPointer()->VPM_conservatism.ub.alternative == 0) | |
| 2675 { | |
| 911 | 2676 text[0] = '\032'; |
| 907 | 2677 } |
| 2678 else | |
| 2679 { | |
| 2680 switch(vpm_get_TableState()) | |
| 2681 { | |
| 911 | 2682 case VPM_TABLE_MISSED: text[0] = '\025'; |
| 907 | 2683 break; |
| 911 | 2684 case VPM_TABLE_WARNING: text[0] = '\024'; |
| 907 | 2685 break; |
| 2686 case VPM_TABLE_ACTIVE: | |
| 2687 case VPM_TABLE_INIT: | |
| 911 | 2688 default: text[0] = '\032'; |
| 907 | 2689 break; |
| 2690 } | |
| 2691 } | |
| 911 | 2692 snprintf(&text[1],100,"\f\001 %c%c", TXT_2BYTE, TXT2BYTE_Decolist); |
| 2693 GFX_write_string(&FontT42,&t7cH,text,0); | |
| 2694 | |
| 38 | 2695 uint8_t depthNext, depthLast, depthSecond, depthInc; |
| 2696 | |
| 2697 depthLast = (uint8_t)(stateUsed->diveSettings.last_stop_depth_bar * 10); | |
| 2698 depthSecond = (uint8_t)(stateUsed->diveSettings.input_second_to_last_stop_depth_bar * 10); | |
| 2699 depthInc = (uint8_t)(stateUsed->diveSettings.input_next_stop_increment_depth_bar * 10); | |
| 2700 | |
| 2701 if(settingsGetPointer()->nonMetricalSystem) | |
| 2702 { | |
| 2703 depthLast = (uint8_t)unit_depth_integer(depthLast); | |
| 2704 depthSecond = (uint8_t)unit_depth_integer(depthSecond); | |
| 2705 depthInc = (uint8_t)unit_depth_integer(depthInc); | |
| 2706 } | |
| 907 | 2707 if(stateUsed->diveSettings.deco_type.ub.standard == VPM_MODE) /* show additional VPM data in last slot */ |
| 2708 { | |
| 2709 decoPlanEntries = 5; | |
| 2710 } | |
| 38 | 2711 |
|
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
|
2712 const SDecoinfo * pDecoinfo = getDecoInfo(); |
| 38 | 2713 for(start=DECOINFO_STRUCT_MAX_STOPS-1; start>0; start--) |
| 2714 if(pDecoinfo->output_stop_length_seconds[start]) break; | |
| 907 | 2715 start -= decoPlanEntries; |
| 38 | 2716 if(start < 0) start = 0; |
| 2717 | |
| 2718 textpointer = 0; | |
| 907 | 2719 for(int i=start;i<decoPlanEntries+start;i++) |
| 38 | 2720 { |
| 2721 if(i == 0) | |
| 2722 depthNext = depthLast; | |
| 2723 else | |
| 2724 depthNext = depthSecond + (( i - 1 )* depthInc); | |
| 2725 | |
| 2726 if(pDecoinfo->output_stop_length_seconds[i]) | |
| 2727 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); | |
| 2728 else | |
| 2729 textpointer += snprintf(&text[textpointer],20,"\031\034 %2u\016\016%c%c\017\n\r",depthNext, unit_depth_char1(), unit_depth_char2()); | |
| 2730 if(textpointer > 200) break; | |
| 2731 } | |
| 907 | 2732 if(decoPlanEntries == 5) /* add VPM deco zone */ |
| 2733 { | |
| 911 | 2734 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 | 2735 } |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2736 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2737 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2738 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2739 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2740 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2741 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2742 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2743 t7cY0free.WindowY1 = 400; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2744 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2745 |
| 38 | 2746 t7cY0free.WindowLineSpacing = 48; |
| 2747 t7cY0free.WindowNumberOfTextLines = 6; | |
| 2748 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
| 2749 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
|
2750 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
|
2751 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
|
2752 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
|
2753 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
|
2754 break; |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2755 case CVIEW_Timer: |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2756 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
|
2757 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
|
2758 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2759 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
|
2760 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2761 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
|
2762 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2763 showTimer(pSettings, nowS); |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2764 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2765 break; |
|
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
2766 |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
2767 case CVIEW_Position: |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
2768 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
|
2769 GFX_write_string(&FontT42, &t7cH, text, 0); |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
2770 t7_showPosition(); |
| 38 | 2771 } |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2772 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
2773 last_customview = selection_customview; |
| 38 | 2774 } |
| 2775 | |
| 2776 | |
| 2777 /* DIVE MODE | |
| 2778 */ | |
| 2779 void t7_refresh_divemode(void) | |
| 2780 { | |
| 2781 char TextL1[TEXTSIZE]; | |
| 2782 char TextL2[TEXTSIZE]; | |
| 2783 | |
| 2784 char TextR1[TEXTSIZE]; | |
| 2785 char TextR2[TEXTSIZE]; | |
| 2786 char TextR3[TEXTSIZE]; | |
| 2787 | |
| 2788 char TextC1[2*TEXTSIZE]; | |
| 2789 char TextC2[TEXTSIZE]; | |
| 2790 uint8_t textPointer; | |
| 2791 | |
| 884 | 2792 uint8_t color = 0; |
| 38 | 2793 int textlength; |
| 2794 | |
| 2795 uint16_t nextstopLengthSeconds = 0; | |
| 2796 uint8_t nextstopDepthMeter = 0; | |
| 2797 uint8_t oxygen_percentage = 0; | |
| 2798 SDivetime Divetime = {0,0,0, 0}; | |
| 2799 SDivetime SafetyStopTime = {0,0,0,0}; | |
| 2800 SDivetime TimeoutTime = {0,0,0,0}; | |
| 2801 uint8_t customview_warnings = 0; | |
| 2802 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2803 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2804 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
2805 |
| 38 | 2806 Divetime.Total = stateUsed->lifeData.dive_time_seconds_without_surface_time; |
| 2807 Divetime.Minutes = Divetime.Total / 60; | |
| 2808 Divetime.Seconds = Divetime.Total - ( Divetime.Minutes * 60 ); | |
| 2809 | |
| 2810 SafetyStopTime.Total = timer_Safetystop_GetCountDown(); | |
| 2811 SafetyStopTime.Minutes = SafetyStopTime.Total / 60; | |
| 2812 SafetyStopTime.Seconds = SafetyStopTime.Total - (SafetyStopTime.Minutes * 60); | |
| 2813 | |
| 882 | 2814 TimeoutTime.Total = pSettings->timeoutDiveReachedZeroDepth - stateUsed->lifeData.counterSecondsShallowDepth; |
| 2815 if(TimeoutTime.Total > pSettings->timeoutDiveReachedZeroDepth) | |
| 38 | 2816 { |
| 2817 TimeoutTime.Total = 0; | |
| 2818 } | |
| 2819 TimeoutTime.Minutes = TimeoutTime.Total / 60; | |
| 2820 TimeoutTime.Seconds = TimeoutTime.Total - (TimeoutTime.Minutes * 60); | |
| 2821 | |
|
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
|
2822 const SDecoinfo * pDecoinfo = getDecoInfo(); |
| 38 | 2823 if(pDecoinfo->output_time_to_surface_seconds) |
| 2824 { | |
| 2825 tHome_findNextStop(pDecoinfo->output_stop_length_seconds, &nextstopDepthMeter, &nextstopLengthSeconds); | |
| 2826 } | |
| 2827 else | |
| 2828 { | |
| 2829 nextstopDepthMeter = 0; | |
| 2830 nextstopLengthSeconds = 0; | |
| 2831 } | |
| 2832 | |
| 882 | 2833 |
| 2834 /* max depth */ | |
| 2835 snprintf(TextL2,TEXTSIZE,"\032\f%c",TXT_MaxDepth); | |
| 2836 GFX_write_string(&FontT42,&t7l2,TextL2,0); | |
| 2837 | |
| 2838 if(unit_depth_float(stateUsed->lifeData.max_depth_meter) < 100) | |
| 2839 snprintf(TextL2,TEXTSIZE,"\020%01.1f",unit_depth_float(stateUsed->lifeData.max_depth_meter)); | |
| 2840 else | |
| 2841 snprintf(TextL2,TEXTSIZE,"\020%01.0f",unit_depth_float(stateUsed->lifeData.max_depth_meter)); | |
| 2842 | |
| 2843 Gfx_colorsscheme_mod(TextL2, 0); | |
| 2844 GFX_write_string(&FontT105,&t7l2,TextL2,1); | |
| 2845 | |
| 2846 /* ascent rate graph */ | |
|
954
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
2847 color = 0xff; |
| 915 | 2848 if((pSettings->slowExitTime != 0) && (nextstopDepthMeter == 0) && (stateUsed->lifeData.depth_meter < pSettings->last_stop_depth_meter)) |
| 882 | 2849 { |
| 2850 color = t7_drawSlowExitGraph(); | |
| 2851 } | |
|
954
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
2852 if(color == 0xff) |
| 882 | 2853 { |
|
954
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
2854 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
|
2855 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
|
2856 { |
|
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
2857 |
|
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
2858 t7_drawAcentGraph(color); |
|
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
2859 } |
| 882 | 2860 } |
| 2861 | |
| 38 | 2862 /* depth */ |
|
174
ecb71521d004
Bugfix: make max depth move with current depth (part 2)
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
2863 float depth = unit_depth_float(stateUsed->lifeData.depth_meter); |
| 38 | 2864 |
| 2865 if(depth <= 0.3f) | |
| 2866 depth = 0; | |
| 2867 | |
| 2868 if(settingsGetPointer()->nonMetricalSystem) | |
| 2869 snprintf(TextL1,TEXTSIZE,"\032\f[feet]"); | |
| 2870 else | |
| 2871 snprintf(TextL1,TEXTSIZE,"\032\f%c",TXT_Depth); | |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2872 |
| 38 | 2873 GFX_write_string(&FontT24,&t7l1,TextL1,0); |
| 2874 | |
| 2875 if((stateUsed->lifeData.ascent_rate_meter_per_min > 8) || (stateUsed->lifeData.ascent_rate_meter_per_min < -10)) | |
| 2876 { | |
| 2877 snprintf(TextL1,TEXTSIZE,"\f\002%.0f %c%c/min " | |
| 2878 , unit_depth_float(stateUsed->lifeData.ascent_rate_meter_per_min) | |
| 2879 , unit_depth_char1() | |
| 2880 , unit_depth_char2() | |
| 2881 ); | |
| 2882 GFX_write_string(&FontT24,&t7l1,TextL1,0); | |
| 2883 } | |
| 2884 | |
| 2885 if( depth < 100) | |
| 2886 snprintf(TextL1,TEXTSIZE,"\020%01.1f",depth); | |
| 2887 else | |
| 2888 snprintf(TextL1,TEXTSIZE,"\020%01.0f",depth); | |
| 2889 | |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2890 Gfx_colorsscheme_mod(TextL1, color); |
|
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2891 |
|
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2892 GFX_write_string(&FontT144,&t7l1,TextL1,0); |
| 38 | 2893 |
| 882 | 2894 /* divetime */ |
| 38 | 2895 if(stateUsed->lifeData.counterSecondsShallowDepth) |
| 2896 { | |
| 2897 snprintf(TextR1,TEXTSIZE,"\f\002\136 %u:%02u",TimeoutTime.Minutes, TimeoutTime.Seconds); | |
| 2898 GFX_write_string(&FontT42,&t7r1,TextR1,0); | |
| 2899 } | |
| 2900 else | |
| 2901 { | |
| 2902 snprintf(TextR1,TEXTSIZE,"\032\f\002%c",TXT_Divetime); | |
| 2903 GFX_write_string(&FontT42,&t7r1,TextR1,0); | |
| 2904 } | |
| 2905 | |
| 2906 if(Divetime.Minutes < 1000) | |
|
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
2907 snprintf(TextR1,TEXTSIZE,"\020\002\016%u:%02u",Divetime.Minutes, Divetime.Seconds); |
| 38 | 2908 else |
|
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
2909 snprintf(TextR1,TEXTSIZE,"\020\002\016%u'",Divetime.Minutes); |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2910 Gfx_colorsscheme_mod(TextR1, 0); |
| 38 | 2911 GFX_write_string(&FontT105,&t7r1,TextR1,1); |
| 2912 | |
| 2913 /* next deco stop */ | |
| 2914 if(nextstopDepthMeter) | |
| 2915 { | |
| 911 | 2916 snprintf(TextR2,TEXTSIZE,"\032\f\002%c",TXT_Decostop); |
| 2917 GFX_write_string(&FontT42,&t7r2,TextR2,0); | |
| 2918 | |
| 945 | 2919 if((stateUsed->diveSettings.deco_type.ub.standard == VPM_MODE) && (pSettings->VPM_conservatism.ub.alternative) |
| 2920 && (fabs(stateUsed->lifeData.depth_meter - nextstopDepthMeter)) < 1.5) | |
| 911 | 2921 { |
| 2922 TextR2[0] = '\026'; | |
| 2923 textlength = 1; | |
| 2924 } | |
| 2925 else | |
| 2926 { | |
| 2927 TextR2[0] = '\020'; | |
| 2928 textlength = 1; | |
| 2929 } | |
| 2930 | |
| 2931 textlength += snprintf(&TextR2[textlength],TEXTSIZE,"\002%u%c%c %u'" | |
| 38 | 2932 , unit_depth_integer(nextstopDepthMeter) |
| 2933 , unit_depth_char1_T105() | |
| 2934 , unit_depth_char2_T105() | |
| 2935 , (nextstopLengthSeconds+59)/60); | |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2936 Gfx_colorsscheme_mod(TextR2, 0); |
| 38 | 2937 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
|
2938 TextR2[0] = '\031'; |
| 38 | 2939 if(textlength <= 9) |
| 2940 GFX_write_string(&FontT105,&t7r2,TextR2,1); | |
| 567 | 2941 else if(textlength <= 10) |
| 2942 GFX_write_string(&FontT84Spaced,&t7r2,TextR2,1); | |
| 38 | 2943 else |
| 2944 GFX_write_string(&FontT54,&t7r2,TextR2,1); | |
| 2945 } | |
| 2946 else if(SafetyStopTime.Total && (depth > timer_Safetystop_GetDepthUpperLimit())) | |
| 2947 { | |
| 2948 snprintf(TextR2,TEXTSIZE,"\032\f\002%c%c",TXT_2BYTE,TXT2BYTE_SafetyStop2); | |
| 2949 GFX_write_string(&FontT42,&t7r2,TextR2,0); | |
|
564
5e0a75e2f00b
Bugfix One or more deactivated sensors hide sensor display:
Ideenmodellierer
parents:
553
diff
changeset
|
2950 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
|
2951 Gfx_colorsscheme_mod(TextR2, 0); |
| 38 | 2952 GFX_write_string(&FontT105,&t7r2,TextR2,1); |
| 2953 } | |
| 2954 | |
| 2955 /* tts - option 1 | |
| 2956 * ndl - option 2 | |
| 2957 * empty - option 3 */ | |
| 2958 if(pDecoinfo->output_time_to_surface_seconds) | |
| 2959 { | |
| 2960 snprintf(TextR3,TEXTSIZE,"\032\f\002%c",TXT_TTS); | |
| 2961 GFX_write_string(&FontT42,&t7r3,TextR3,0); | |
| 2962 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
|
2963 snprintf(TextR3,TEXTSIZE,"\020\002%i'",(pDecoinfo->output_time_to_surface_seconds + 59)/ 60); |
| 38 | 2964 else |
|
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
2965 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
|
2966 Gfx_colorsscheme_mod(TextR3, 0); |
| 38 | 2967 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
|
2968 TextR2[0] = '\031'; |
| 38 | 2969 GFX_write_string(&FontT105,&t7r3,TextR3,1); |
| 2970 } | |
| 2971 else if(pDecoinfo->output_ndl_seconds) | |
| 2972 { | |
| 2973 snprintf(TextR3,TEXTSIZE,"\032\f\002%c",TXT_Nullzeit); | |
| 2974 GFX_write_string(&FontT42,&t7r3,TextR3,0); | |
| 2975 if(pDecoinfo->output_ndl_seconds < 1000 * 60) | |
| 2976 snprintf(TextR3,TEXTSIZE,"\020\002%i'",pDecoinfo->output_ndl_seconds/60); | |
| 2977 else | |
| 2978 snprintf(TextR3,TEXTSIZE,"\020\002%ih",pDecoinfo->output_ndl_seconds/3600); | |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
2979 Gfx_colorsscheme_mod(TextR3, 0); |
| 38 | 2980 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
|
2981 TextR2[0] = '\031'; |
| 38 | 2982 GFX_write_string(&FontT105,&t7r3,TextR3,1); |
| 2983 } | |
| 2984 | |
| 2985 /* Menu Selection (and gas mix) */ | |
| 2986 if(get_globalState() == StDMGAS) | |
| 2987 { | |
| 2988 textPointer = 0; | |
| 2989 TextR1[textPointer++] = '\a'; | |
| 2990 // TextR1[textPointer++] = '\f'; | |
| 2991 TextR1[textPointer++] = '\001'; | |
| 2992 TextR1[textPointer++] = ' '; | |
| 2993 textPointer += tHome_gas_writer(stateUsed->diveSettings.gas[actualBetterGasId()].oxygen_percentage,stateUsed->diveSettings.gas[actualBetterGasId()].helium_percentage,&TextR1[textPointer]); | |
| 2994 TextR1[textPointer++] = '?'; | |
| 2995 TextR1[textPointer++] = ' '; | |
| 2996 TextR1[textPointer++] = 0; | |
| 2997 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
| 2998 } | |
| 2999 else if(get_globalState() == StDMSPT) | |
| 3000 { | |
| 3001 textPointer = 0; | |
| 3002 TextR1[textPointer++] = '\a'; | |
| 3003 TextR1[textPointer++] = '\001'; | |
| 3004 TextR1[textPointer++] = ' '; | |
| 680 | 3005 textPointer += snprintf(&TextR1[textPointer],TEXTSIZE,"%01.2f",(float)(stateUsed->diveSettings.setpoint[actualBetterSetpointId()].setpoint_cbar) / 100.0); |
| 38 | 3006 TextR1[textPointer++] = '?'; |
| 3007 TextR1[textPointer++] = ' '; | |
| 3008 TextR1[textPointer++] = 0; | |
| 3009 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
| 3010 } | |
| 3011 else if(get_globalState() == StDMENU) | |
| 3012 { | |
| 3013 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveMenuQ); | |
| 3014 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
|
3015 } else if (get_globalState() == StDBAILOUT) { |
|
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
3016 if (isLoopMode(stateUsed->diveSettings.diveMode)) { |
|
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
3017 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
|
3018 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
|
3019 TextR1[textPointer++] = '?'; |
|
773
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
3020 TextR1[textPointer++] = ' '; |
|
979
e7cd7ffd1879
Add proper string termination and fix space. (mikeller)
heinrichsweikamp
parents:
962
diff
changeset
|
3021 TextR1[textPointer++] = 0; |
|
773
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
3022 } else { |
|
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
3023 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
|
3024 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
|
3025 TextR1[textPointer++] = '?'; |
|
773
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
3026 TextR1[textPointer++] = ' '; |
|
979
e7cd7ffd1879
Add proper string termination and fix space. (mikeller)
heinrichsweikamp
parents:
962
diff
changeset
|
3027 TextR1[textPointer++] = 0; |
|
773
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
3028 } |
|
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
3029 |
|
2c243233c999
Menu shortcut for bailout / return to circuit when diving in CCR mode (mikeller)
heinrichsweikamp
parents:
770
diff
changeset
|
3030 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
|
3031 } 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
|
3032 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
|
3033 |
|
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
|
3034 GFX_write_string_color(&FontT48, &t7c2, TextR1, 0, CLUT_WarningYellow); |
| 38 | 3035 } |
|
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
|
3036 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
|
3037 { |
|
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
|
3038 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
|
3039 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
|
3040 } |
| 38 | 3041 else if(get_globalState() == StDSIM1) |
| 3042 { | |
| 3043 snprintf(TextR1,TEXTSIZE,"\a\001%c%c", TXT_2BYTE, TXT2BYTE_DiveQuitQ); | |
| 3044 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
| 3045 } | |
| 3046 else if(get_globalState() == StDSIM2) | |
| 3047 { | |
| 3048 if(settingsGetPointer()->nonMetricalSystem) | |
| 3049 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-3.33ft "); | |
| 3050 else | |
| 3051 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:-1m "); | |
| 3052 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
| 3053 | |
| 3054 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
| 3055 , unit_depth_integer(simulation_get_aim_depth()) | |
| 3056 , unit_depth_char1() | |
| 3057 , unit_depth_char2() | |
| 3058 ); | |
| 3059 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
| 3060 | |
| 3061 } | |
| 3062 else if(get_globalState() == StDSIM3) | |
| 3063 { | |
| 3064 if(settingsGetPointer()->nonMetricalSystem) | |
| 3065 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+3.33ft "); | |
| 3066 else | |
| 3067 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+1m "); | |
| 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 if(get_globalState() == StDSIM4) | |
| 3077 { | |
| 3078 snprintf(TextR1,TEXTSIZE,"\a\001" " Sim:+5' "); | |
| 3079 GFX_write_string_color(&FontT48,&t7c2,TextR1,0,CLUT_WarningYellow); | |
| 3080 snprintf(TextR1,TEXTSIZE,"\a\f %u %c%c" | |
| 3081 , unit_depth_integer(simulation_get_aim_depth()) | |
| 3082 , unit_depth_char1() | |
| 3083 , unit_depth_char2() | |
| 3084 ); | |
| 3085 GFX_write_string_color(&FontT42,&t7l1,TextR1,0,CLUT_WarningYellow); | |
| 3086 } | |
| 3087 else | |
| 3088 { | |
| 3089 /* gas mix */ | |
| 3090 oxygen_percentage = 100; | |
| 3091 oxygen_percentage -= stateUsed->lifeData.actualGas.nitrogen_percentage; | |
| 3092 oxygen_percentage -= stateUsed->lifeData.actualGas.helium_percentage; | |
| 3093 | |
| 3094 textPointer = 0; | |
| 3095 TextC2[textPointer++] = '\020'; | |
| 3096 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
| 3097 { | |
| 3098 TextC2[textPointer++] = '\a'; | |
| 3099 } | |
| 3100 else | |
| 3101 { | |
| 3102 float fPpO2limitHigh, fPpO2now; | |
| 3103 | |
| 3104 if(actualLeftMaxDepth(stateUsed)) | |
| 3105 fPpO2limitHigh = settingsGetPointer()->ppO2_max_deco; | |
| 3106 else | |
| 3107 fPpO2limitHigh = settingsGetPointer()->ppO2_max_std; | |
| 3108 | |
| 3109 fPpO2now = (stateUsed->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * oxygen_percentage; | |
| 3110 | |
| 3111 if((fPpO2now > fPpO2limitHigh) || (fPpO2now < (float)(settingsGetPointer()->ppO2_min))) | |
| 3112 TextC2[textPointer++] = '\025'; | |
| 3113 } | |
| 3114 TextC2[textPointer++] = '\002'; | |
| 3115 textPointer += tHome_gas_writer(oxygen_percentage,stateUsed->lifeData.actualGas.helium_percentage,&TextC2[textPointer]); | |
| 3116 | |
| 3117 if(stateUsed->warnings.betterGas && warning_count_high_time) | |
| 3118 { | |
| 3119 if(TextC2[0] == '\020') | |
| 3120 { | |
| 3121 TextC2[0] = '\004'; // NOP | |
| 3122 } | |
| 3123 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
| 3124 } | |
| 3125 else | |
| 3126 { | |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
3127 Gfx_colorsscheme_mod(TextC2, 0); |
| 38 | 3128 GFX_write_string(&FontT48,&t7c2,TextC2,0); // T54 has only numbers |
| 3129 } | |
| 3130 | |
| 3131 if(stateUsed->diveSettings.ccrOption) | |
| 3132 { | |
| 662 | 3133 if(isLoopMode(stateUsed->diveSettings.diveMode)) |
| 38 | 3134 { |
| 3135 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
| 662 | 3136 |
| 38 | 3137 if(stateUsed->warnings.betterSetpoint && warning_count_high_time && (stateUsed->diveSettings.diveMode == DIVEMODE_CCR)) |
| 3138 { | |
| 3139 TextC2[0] = '\a'; // inverse instead of color \020 | |
| 3140 GFX_write_string_color(&FontT48,&t7c2,TextC2,0,CLUT_WarningYellow); | |
| 3141 } | |
| 3142 else | |
| 3143 { | |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
3144 Gfx_colorsscheme_mod(TextC2, 0); |
| 38 | 3145 GFX_write_string(&FontT48,&t7c2,TextC2,0); |
| 3146 } | |
| 3147 } | |
| 3148 } | |
| 3149 else if(settingsGetPointer()->alwaysShowPPO2) | |
| 3150 { | |
| 3151 snprintf(TextC2,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
3152 Gfx_colorsscheme_mod(TextC2, 0); |
| 38 | 3153 GFX_write_string(&FontT48,&t7c2,TextC2,0); |
| 3154 } | |
| 3155 } | |
| 3156 | |
| 3157 /* algorithm, ccr, bailout and battery */ | |
| 3158 /* and permanent warnings (CNS) */ | |
| 3159 | |
| 3160 if((stateUsed->warnings.cnsHigh) && display_count_high_time) | |
| 3161 { | |
| 3162 TextC2[0] = '\f'; | |
| 3163 TextC2[1] = TXT_2BYTE; | |
| 3164 TextC2[2] = TXT2BYTE_WarnCnsHigh; | |
| 3165 TextC2[3] = 0; | |
| 662 | 3166 GFX_write_string_color(&FontT42,&t7c1,TextC2,0,CLUT_WarningRed); |
| 38 | 3167 } |
| 3168 else | |
| 3169 { | |
| 3170 if(stateUsed->warnings.aGf) | |
| 3171 { | |
| 3172 GFX_write_string_color(&FontT48,&t7c1,"\f" "aGF",0,CLUT_WarningYellow); | |
| 3173 } | |
| 3174 else if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
| 3175 { | |
| 3176 GFX_write_string(&FontT48,&t7c1,"\027\f" "GF",0); | |
| 3177 } | |
| 3178 else | |
| 3179 { | |
| 3180 GFX_write_string(&FontT48,&t7c1,"\027\f" "VPM",0); | |
| 3181 } | |
| 3182 | |
| 3183 if(stateUsed->diveSettings.diveMode == DIVEMODE_CCR) | |
| 3184 GFX_write_string(&FontT24,&t7c1,"\027\f\002" "CCR",0); | |
| 3185 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80" "CCR",0); | |
| 3186 else | |
| 662 | 3187 if(stateUsed->diveSettings.diveMode == DIVEMODE_PSCR) |
| 3188 GFX_write_string(&FontT24,&t7c1,"\027\f\002" "PSCR",0); | |
| 3189 else | |
| 38 | 3190 if(stateUsed->diveSettings.ccrOption) |
| 3191 GFX_write_string(&FontT24,&t7c1,"\f\002\024" "Bailout",0); | |
| 3192 // GFX_write_string(&FontT24,&t7c1,"\f\177\177\x80\024" "Bailout",0); | |
| 3193 } | |
| 3194 TextC1[0] = '\020'; | |
| 3195 TextC1[1] = '3'; | |
| 3196 TextC1[2] = '1'; | |
| 3197 TextC1[3] = '1'; | |
| 3198 TextC1[4] = '1'; | |
| 3199 TextC1[5] = '1'; | |
| 3200 TextC1[6] = '1'; | |
| 3201 TextC1[7] = '1'; | |
| 3202 TextC1[8] = '1'; | |
| 3203 TextC1[9] = '1'; | |
| 3204 TextC1[10] = '1'; | |
| 3205 TextC1[11] = '1'; | |
| 3206 TextC1[12] = '0'; | |
| 3207 TextC1[13] = 0; | |
| 3208 | |
| 3209 for(int i=1;i<=10;i++) | |
| 3210 { | |
| 3211 if( stateUsed->lifeData.battery_charge > (9 * i)) | |
| 3212 TextC1[i+1] += 1; | |
| 3213 } | |
| 3214 | |
| 3215 if(stateUsed->warnings.lowBattery) | |
| 3216 { | |
| 3217 TextC1[0] = '\025'; | |
| 3218 if(warning_count_high_time) | |
| 3219 { | |
| 3220 for(int i=2;i<=11;i++) | |
| 3221 TextC1[i] = '1'; | |
| 3222 } | |
| 3223 else | |
| 3224 { | |
| 3225 TextC1[2] = '2'; | |
| 3226 } | |
| 3227 GFX_write_string(&Batt24,&t7batt,TextC1,0); | |
| 3228 | |
| 3229 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
| 3230 { | |
| 3231 snprintf(TextC1,16,"\004\025\f\002%u%%",(uint8_t)stateUsed->lifeData.battery_charge); | |
| 3232 if(warning_count_high_time) | |
| 3233 TextC1[0] = '\a'; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3234 GFX_write_string(&FontT24,&t7voltage,TextC1,0); |
| 38 | 3235 } |
| 3236 } | |
| 3237 else | |
| 3238 { | |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
3239 Gfx_colorsscheme_mod(TextC1, 0); |
| 38 | 3240 GFX_write_string(&Batt24,&t7batt,TextC1,0); |
| 3241 | |
| 3242 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->lifeData.battery_charge < 140)) | |
| 3243 { | |
| 3244 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
|
3245 Gfx_colorsscheme_mod(TextC1, 0); |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3246 GFX_write_string(&FontT24,&t7voltage,TextC1,0); // t7batt |
| 38 | 3247 } |
| 3248 } | |
| 3249 | |
| 3250 /* customizable left lower corner */ | |
| 3251 t7_refresh_divemode_userselected_left_lower_corner(); | |
| 3252 | |
| 3253 | |
| 3254 /* customview - option 1 | |
| 3255 * warning - option 2 */ | |
| 3256 if(stateUsed->warnings.numWarnings) | |
| 3257 customview_warnings = t7_test_customview_warnings(); | |
| 3258 | |
|
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
149
diff
changeset
|
3259 background.pointer = 0; |
| 38 | 3260 if(customview_warnings && warning_count_high_time) |
| 3261 t7_show_customview_warnings(); | |
| 3262 else | |
| 951 | 3263 { |
| 38 | 3264 t7_refresh_customview(); |
| 996 | 3265 requestBuzzerActivation(REQUEST_BUZZER_OFF); |
| 951 | 3266 } |
| 38 | 3267 |
| 3268 /* the frame */ | |
| 3269 draw_frame(1,1, CLUT_DIVE_pluginbox, CLUT_DIVE_FieldSeperatorLines); | |
| 3270 } | |
| 3271 | |
| 3272 void t7_set_field_to_primary(void) | |
| 3273 { | |
| 3274 if(stateUsed->mode == MODE_DIVE) | |
| 3275 selection_custom_field = settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary; | |
| 3276 } | |
| 3277 | |
| 3278 void t7_change_field(void) | |
| 3279 { | |
| 3280 selection_custom_field++; | |
| 3281 | |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3282 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
|
3283 { |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3284 selection_custom_field++; |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3285 } |
| 662 | 3286 if((selection_custom_field == LLC_ScrubberTime) && ((settingsGetPointer()->scrubTimerMode == SCRUB_TIMER_OFF) || (!isLoopMode(settingsGetPointer()->dive_mode)))) |
| 656 | 3287 { |
| 3288 selection_custom_field++; | |
| 3289 } | |
| 662 | 3290 #ifdef ENABLE_PSCR_MODE |
| 3291 if((selection_custom_field == LCC_SimPpo2) && (settingsGetPointer()->dive_mode != DIVEMODE_PSCR)) | |
| 3292 { | |
| 3293 selection_custom_field++; | |
| 3294 } | |
| 3295 #endif | |
| 840 | 3296 #ifdef ENABLE_CO2_SUPPORT |
| 3297 if((selection_custom_field == LCC_CO2) && (settingsGetPointer()->co2_sensor_active == 0)) | |
| 3298 { | |
| 3299 selection_custom_field++; | |
| 3300 } | |
| 3301 | |
| 3302 #endif | |
| 3303 | |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3304 if(selection_custom_field >= LLC_END) |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3305 { |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3306 selection_custom_field = LLC_Empty; |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3307 } |
| 38 | 3308 } |
| 3309 | |
| 3310 | |
| 3311 void t7_refresh_divemode_userselected_left_lower_corner(void) | |
| 3312 { | |
| 3313 if(!selection_custom_field) | |
| 3314 return; | |
| 3315 | |
| 3316 char headerText[10]; | |
| 3317 char text[TEXTSIZE]; | |
| 998 | 3318 char tmpString[TEXTSIZE]; |
| 38 | 3319 uint8_t textpointer = 0; |
| 998 | 3320 uint8_t index = 0; |
| 38 | 3321 _Bool tinyHeaderFont = 0; |
| 3322 uint8_t line = 0; | |
| 457 | 3323 #ifdef ENABLE_BOTTLE_SENSOR |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3324 uint16_t agedColor = 0; |
| 457 | 3325 #endif |
| 38 | 3326 |
| 3327 SDivetime Stopwatch = {0,0,0,0}; | |
| 3328 float fAverageDepth, fAverageDepthAbsolute; | |
| 3329 const SDecoinfo * pDecoinfoStandard; | |
| 3330 const SDecoinfo * pDecoinfoFuture; | |
| 3331 float fCNS; | |
| 3332 float temperature; | |
| 710 | 3333 SSettings* pSettings = settingsGetPointer(); |
| 38 | 3334 |
| 3335 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
| 3336 { | |
| 3337 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
| 3338 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
| 3339 } | |
| 3340 else | |
| 3341 { | |
| 3342 pDecoinfoStandard = &stateUsed->decolistVPM; | |
| 3343 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
| 3344 } | |
| 3345 | |
| 3346 Stopwatch.Total = timer_Stopwatch_GetTime(); | |
| 3347 Stopwatch.Minutes = Stopwatch.Total / 60; | |
| 3348 Stopwatch.Seconds = Stopwatch.Total - ( Stopwatch.Minutes * 60 ); | |
| 3349 fAverageDepth = timer_Stopwatch_GetAvarageDepth_Meter(); | |
| 3350 fAverageDepthAbsolute = stateUsed->lifeData.average_depth_meter; | |
| 3351 | |
| 3352 headerText[0] = '\032'; | |
| 3353 headerText[1] = '\f'; | |
| 3354 | |
| 3355 switch(selection_custom_field) | |
| 3356 { | |
| 3357 /* Temperature */ | |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3358 case LLC_Temperature: |
| 38 | 3359 default: |
|
189
8b8074080d7b
Bugfix: average temperature on arrival from RTE instead of display time
Jan Mulder <jlmulder@xs4all.nl>
parents:
187
diff
changeset
|
3360 temperature = unit_temperature_float(stateUsed->lifeData.temperature_celsius); |
| 38 | 3361 headerText[2] = TXT_Temperature; |
| 3362 textpointer = snprintf(text,TEXTSIZE,"\020\016%01.1f \140",temperature); // "\016\016%01.1f `" + C or F | |
| 3363 if(settingsGetPointer()->nonMetricalSystem == 0) | |
| 3364 text[textpointer++] = 'C'; | |
| 3365 else | |
| 3366 text[textpointer++] = 'F'; | |
| 3367 text[textpointer++] = 0; | |
| 3368 tinyHeaderFont = 0; | |
| 3369 break; | |
| 3370 | |
| 3371 /* Average Depth */ | |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3372 case LLC_AverageDepth: |
| 38 | 3373 headerText[2] = TXT_AvgDepth; |
| 710 | 3374 if(pSettings->nonMetricalSystem) |
| 38 | 3375 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(fAverageDepthAbsolute)); |
| 3376 else | |
| 3377 snprintf(text,TEXTSIZE,"\020%01.1f",fAverageDepthAbsolute); | |
| 3378 break; | |
| 3379 | |
| 3380 /* ppO2 */ | |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3381 case LLC_ppO2: |
| 38 | 3382 headerText[2] = TXT_ppO2; |
| 3383 snprintf(text,TEXTSIZE,"\020%01.2f",stateUsed->lifeData.ppO2); | |
| 3384 break; | |
| 3385 | |
| 3386 /* Stop Uhr */ | |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3387 case LLC_Stopwatch: |
| 38 | 3388 headerText[2] = TXT_Stopwatch; |
| 710 | 3389 if(pSettings->nonMetricalSystem) |
| 38 | 3390 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.0f",Stopwatch.Minutes, Stopwatch.Seconds,unit_depth_float(fAverageDepth)); |
| 3391 else | |
| 3392 snprintf(text,TEXTSIZE,"\020\016\016%u:%02u\n\r%01.1f",Stopwatch.Minutes, Stopwatch.Seconds,fAverageDepth); | |
| 3393 tinyHeaderFont = 1; | |
| 3394 line = 1; | |
| 3395 break; | |
| 3396 | |
| 3397 /* Ceiling */ | |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3398 case LLC_Ceiling: |
| 38 | 3399 headerText[2] = TXT_Ceiling; |
| 710 | 3400 if((pDecoinfoStandard->output_ceiling_meter > 99.9f) || (pSettings->nonMetricalSystem)) |
| 38 | 3401 snprintf(text,TEXTSIZE,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); |
| 3402 else | |
| 3403 snprintf(text,TEXTSIZE,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); | |
| 3404 break; | |
| 3405 | |
| 3406 /* Future TTS */ | |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3407 case LLC_FutureTTS: |
| 38 | 3408 headerText[2] = TXT_FutureTTS; |
|
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
3409 if (pDecoinfoFuture->output_time_to_surface_seconds < 1000 * 60) |
| 710 | 3410 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
|
3411 else |
| 710 | 3412 snprintf(text,TEXTSIZE,"\020\016\016@+%u'\n\r" "%ih TTS",pSettings->future_TTS, (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
| 38 | 3413 tinyHeaderFont = 1; |
| 3414 line = 1; | |
| 3415 break; | |
| 3416 | |
| 3417 /* CNS */ | |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3418 case LLC_CNS: |
| 38 | 3419 headerText[2] = TXT_CNS; |
| 3420 fCNS = stateUsed->lifeData .cns; | |
| 3421 if(fCNS > 999) | |
| 3422 fCNS = 999; | |
| 3423 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",fCNS); | |
| 3424 break; | |
| 3425 | |
| 3426 /* actual GF */ | |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3427 case LLC_GF: |
| 38 | 3428 headerText[2] = TXT_ActualGradient; |
|
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
3429 snprintf(text,TEXTSIZE,"\020%.0f\016\016%%\017",100 * pDecoinfoStandard->super_saturation); |
| 38 | 3430 break; |
| 656 | 3431 |
| 3432 case LLC_ScrubberTime: | |
| 3433 tinyHeaderFont = 1; | |
| 3434 headerText[2] = TXT_ScrubTime; | |
|
758
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
3435 |
| 998 | 3436 textpointer = printScrubberText(text, TEXTSIZE, stateUsed->scrubberDataDive, pSettings); |
| 3437 if (pSettings->scubberActiveId == 3) /* both timer active */ | |
| 3438 { | |
| 3439 snprintf(tmpString,TEXTSIZE,"\016\016%s",text); | |
| 3440 for(index = 0; index < textpointer; index++) | |
| 3441 { | |
| 3442 if(tmpString[index] == '\017') /* remove switch to normal font */ | |
| 3443 { | |
| 3444 tmpString[index] = ' '; | |
| 3445 } | |
| 3446 if(tmpString[index] == '|') /* replace separator with new line */ | |
| 3447 { | |
| 3448 tmpString[index] = '\n'; | |
| 3449 tmpString[index+1] = '\r'; | |
| 3450 break; | |
| 3451 } | |
| 3452 } | |
| 3453 line = 1; | |
| 3454 strcpy(text,tmpString); | |
| 3455 } | |
|
758
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
3456 |
| 656 | 3457 break; |
| 662 | 3458 #ifdef ENABLE_PSCR_MODE |
| 3459 case LCC_SimPpo2: | |
| 3460 headerText[2] = TXT_SimPpo2; | |
| 3461 snprintf(text,TEXTSIZE,"\020%.2f\016\016Bar\017",stateUsed->lifeData.ppo2Simulated_bar); | |
| 3462 break; | |
| 3463 #endif | |
| 656 | 3464 |
|
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3465 #ifdef ENABLE_BOTTLE_SENSOR |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3466 case LCC_BottleBar: |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3467 headerText[2] = TXT_AtemGasVorrat; |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3468 tinyHeaderFont = 1; |
|
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3469 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
|
3470 break; |
|
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3471 #endif |
| 749 | 3472 #ifdef ENABLE_CO2_SUPPORT |
| 3473 case LCC_CO2: | |
| 3474 headerText[2] = TXT_CO2Sensor; | |
| 3475 if(stateUsed->lifeData.CO2_data.CO2_ppm < CO2_WARNING_LEVEL_PPM) | |
| 3476 { | |
| 3477 text[textpointer++] = '\020'; | |
| 3478 } | |
| 3479 else if(stateUsed->lifeData.CO2_data.CO2_ppm < CO2_ALARM_LEVEL_PPM) | |
| 3480 { | |
| 3481 text[textpointer++] = '\024'; /* yellow */ | |
| 3482 } | |
| 3483 else | |
| 3484 { | |
| 3485 text[textpointer++] = '\025'; /* red */ | |
| 3486 } | |
| 3487 snprintf(&text[textpointer],TEXTSIZE,"\%5ldppm", stateUsed->lifeData.CO2_data.CO2_ppm); | |
| 799 | 3488 break; |
| 749 | 3489 #endif |
|
737
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3490 case LLC_Compass: |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3491 headerText[2] = TXT_2BYTE; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3492 headerText[3] = TXT2BYTE_Compass; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3493 tinyHeaderFont = 1; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3494 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3495 uint16_t heading; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3496 if(settingsGetPointer()->compassInertia) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3497 heading = (uint16_t)compass_getCompensated(); |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3498 } else { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3499 heading = (uint16_t)stateUsed->lifeData.compass_heading; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3500 } |
|
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 uint16_t userSetHeading = stateUsed->diveSettings.compassHeading; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3503 if (!userSetHeading) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3504 snprintf(text, TEXTSIZE, "\020\002\034%u ", heading); |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3505 } else { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3506 snprintf(text, TEXTSIZE, "\020\002\034\016\016%u ", heading); |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3507 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3508 int16_t declinationFromForwardMark = ((userSetHeading - heading + 180 + 360) % 360) - 180; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3509 int16_t declinationFromNearestMark = ((declinationFromForwardMark + 90 + 180) % 180) - 90; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3510 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3511 uint16_t colour; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3512 if (abs(declinationFromForwardMark) <= 90) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3513 colour = CLUT_CompassUserHeadingTick; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3514 } else { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3515 colour = CLUT_CompassUserBackHeadingTick; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3516 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3517 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3518 char direction[] = "\001 \004 \004 "; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3519 if (abs(declinationFromNearestMark) <= 10) { |
|
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 direction[6] = '<'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3522 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3523 if (abs(declinationFromForwardMark) <= 10) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3524 direction[4] = 'X'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3525 } else { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3526 direction[4] = 'O'; |
|
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 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3529 if (abs(declinationFromNearestMark) <= 3) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3530 direction[3] = '\a'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3531 direction[5] = '\a'; |
|
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 } else { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3534 if (declinationFromForwardMark < -90) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3535 direction[7] = 'O'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3536 } else if (declinationFromForwardMark < 0) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3537 direction[1] = 'X'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3538 } else if (declinationFromForwardMark <= 90) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3539 direction[7] = 'X'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3540 } else { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3541 direction[1] = 'O'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3542 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3543 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3544 if (declinationFromNearestMark >= 0) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3545 direction[6] = '>'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3546 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3547 if (declinationFromNearestMark > 30) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3548 direction[4] = '>'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3549 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3550 if (declinationFromNearestMark > 60 || declinationFromForwardMark == 90) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3551 direction[2] = '>'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3552 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3553 if (declinationFromNearestMark < 0) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3554 direction[2] = '<'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3555 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3556 if (declinationFromNearestMark < -30) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3557 direction[4] = '<'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3558 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3559 if (declinationFromNearestMark < -60 || declinationFromForwardMark == -90) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3560 direction[6] = '<'; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3561 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3562 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3563 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3564 GFX_write_string_color(&FontT48, &t7l3, direction, 1, colour); |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3565 } |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3566 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3567 break; |
| 38 | 3568 } |
|
737
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3569 |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3570 if (headerText[2] != TXT_2BYTE) { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3571 headerText[3] = 0; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3572 } else { |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3573 headerText[4] = 0; |
|
5071d554aaa5
NEW: Add mini compass with marker declination indication
heinrichsweikamp
parents:
710
diff
changeset
|
3574 } |
| 38 | 3575 |
| 3576 if(tinyHeaderFont) | |
| 3577 GFX_write_string(&FontT24,&t7l3,headerText,0); | |
| 3578 else | |
| 3579 GFX_write_string(&FontT42,&t7l3,headerText,0); | |
| 3580 | |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
3581 Gfx_colorsscheme_mod(text, 0); |
|
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3582 #ifndef ENABLE_BOTTLE_SENSOR |
| 748 | 3583 #ifdef ENABLE_CO2_SUPPORT |
| 3584 if(selection_custom_field != LCC_CO2) | |
| 3585 { | |
| 3586 GFX_write_string(&FontT105,&t7l3,text,line); | |
| 3587 } | |
| 3588 else | |
| 3589 { | |
| 998 | 3590 GFX_write_string(&FontT48,&t7l3,text,line); |
| 748 | 3591 } |
| 3592 #else | |
| 3593 GFX_write_string(&FontT105,&t7l3,text,line); | |
| 3594 #endif | |
|
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3595 #else |
|
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3596 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
|
3597 { |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3598 GFX_write_string(&FontT105,&t7l3,text,line); |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3599 } |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3600 else |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3601 { |
|
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3602 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
|
3603 if(agedColor > 1200) |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3604 { |
|
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3605 agedColor = CLUT_WarningRed; |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3606 } |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3607 else |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3608 if(agedColor > 600) |
|
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3609 { |
|
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3610 agedColor = CLUT_MenuLineUnselected; |
|
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3611 } |
|
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3612 else |
|
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3613 if(agedColor > 20) |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3614 { |
|
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3615 agedColor = CLUT_Font031; |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3616 } |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3617 else |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3618 { |
|
448
f7c66593ab82
Added compile switch to show voltage parallel to charge status percantage
ideenmodellierer
parents:
446
diff
changeset
|
3619 agedColor = CLUT_Font020; |
|
442
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3620 } |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3621 |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3622 GFX_write_string_color(&FontT105,&t7l3,text,line,agedColor); |
|
adb18fe92737
Introduced enum for lower left corner view selection:
ideenmodellierer
parents:
432
diff
changeset
|
3623 } |
|
446
f1257a32f2d4
Introduced configuration header for variant managment:
ideenmodellierer
parents:
442
diff
changeset
|
3624 #endif |
| 38 | 3625 } |
| 3626 | |
| 3627 /* Private functions ---------------------------------------------------------*/ | |
| 3628 | |
| 3629 uint8_t t7_customtextPrepare(char * text) | |
| 3630 { | |
| 3631 uint8_t i, j, textptr, lineCount; | |
| 3632 char nextChar; | |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3633 uint8_t alignmentChanged = 0; |
| 38 | 3634 |
| 3635 textptr = 0; | |
| 3636 lineCount = 0; | |
| 3637 | |
| 3638 text[textptr++] = TXT_MINIMAL; | |
| 3639 | |
| 3640 j = 0; | |
| 3641 i = 0; | |
| 3642 do | |
| 3643 { | |
| 3644 j += i; | |
| 3645 i = 0; | |
| 3646 do | |
| 3647 { | |
| 3648 nextChar = settingsGetPointer()->customtext[i+j]; | |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3649 if((nextChar == '^') && (alignmentChanged == 0)) /* center */ |
|
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3650 { |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3651 text[textptr++] = '\001'; |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3652 alignmentChanged = 1; |
|
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3653 i++; |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3654 }else |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3655 if((nextChar == 180) && (alignmentChanged == 0)) /* '�' => Right */ |
|
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3656 { |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3657 text[textptr++] = '\002'; |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3658 alignmentChanged = 1; |
|
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3659 i++; |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3660 }else |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3661 { |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3662 i++; |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3663 if((!nextChar) || (nextChar =='\n') || (nextChar =='\r')) |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3664 { |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3665 break; |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3666 } |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3667 text[textptr++] = nextChar; |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3668 } |
| 38 | 3669 } while (i < 12); |
| 3670 | |
|
537
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3671 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
|
3672 { |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3673 while((textptr - 1 > 0) && (text[textptr - 1] == 32)) |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3674 { |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3675 textptr--; |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3676 } |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3677 } |
|
0ad0b26ec56b
Added center / right alignment option to custom text display:
Ideenmodellierer
parents:
530
diff
changeset
|
3678 |
| 38 | 3679 if(!nextChar) |
| 3680 break; | |
| 3681 | |
| 3682 if(lineCount < 3) | |
| 3683 { | |
| 3684 text[textptr++] = '\n'; | |
| 3685 text[textptr++] = '\r'; | |
| 3686 } | |
|
539
d784f281833a
Added inertia simulation for compass heading:
Ideenmodellierer
parents:
537
diff
changeset
|
3687 alignmentChanged = 0; |
| 38 | 3688 lineCount++; |
| 3689 for(uint8_t k=0;k<2;k++) | |
| 3690 { | |
| 3691 nextChar = settingsGetPointer()->customtext[i+j+k]; | |
| 3692 if((nextChar =='\n') || (nextChar =='\r')) | |
| 3693 i++; | |
| 3694 else | |
| 3695 break; | |
| 3696 } | |
| 3697 | |
| 3698 } while (lineCount < 4); | |
| 3699 | |
| 3700 text[textptr] = 0; | |
| 3701 return lineCount; | |
| 3702 } | |
| 3703 | |
| 3704 void draw_frame(_Bool PluginBoxHeader, _Bool LinesOnTheSides, uint8_t colorBox, uint8_t colorLinesOnTheSide) | |
| 3705 { | |
| 3706 point_t LeftLow, WidthHeight; | |
| 3707 point_t start, stop; | |
| 3708 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3709 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3710 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3711 |
| 38 | 3712 // plugin box |
| 3713 LeftLow.x = CUSTOMBOX_LINE_LEFT; | |
| 3714 WidthHeight.x = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_LINE_LEFT; | |
| 3715 LeftLow.y = 60; | |
| 3716 WidthHeight.y = 440 - LeftLow.y; | |
|
642
c737cf5d9067
Do not show focus indicator in case motion detection is suspended:
Ideenmodellierer
parents:
631
diff
changeset
|
3717 if((viewInFocus() && (!viewDetectionSuspended()))) |
| 553 | 3718 { |
| 3719 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, CLUT_Font023); | |
| 3720 } | |
| 3721 else | |
| 3722 { | |
| 3723 GFX_draw_box(&t7screen, LeftLow, WidthHeight, 1, colorBox); | |
| 3724 } | |
| 38 | 3725 |
| 3726 if(PluginBoxHeader) | |
| 3727 { | |
| 3728 // plugin box - header | |
| 3729 start.x = CUSTOMBOX_LINE_LEFT; | |
| 3730 stop.x = CUSTOMBOX_LINE_RIGHT; | |
| 3731 stop.y = start.y = 440 - 60; | |
| 3732 GFX_draw_line(&t7screen, start, stop, colorBox); | |
| 3733 } | |
| 3734 | |
| 3735 if(LinesOnTheSides) | |
| 3736 { | |
| 3737 // aufteilung links | |
| 3738 start.x = 0; | |
| 3739 stop.x = CUSTOMBOX_LINE_LEFT; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3740 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3741 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3742 stop.y = start.y = t7l1.WindowY0 - 1; |
|
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 else |
|
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 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
|
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 |
| 38 | 3749 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3750 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3751 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3752 stop.y = start.y = t7l2.WindowY0 -1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3753 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3754 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3755 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3756 stop.y = start.y = 480 - t7l2.WindowY1 -1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3757 } |
| 38 | 3758 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
| 3759 | |
| 3760 // aufteilung rechts | |
| 3761 start.x = CUSTOMBOX_LINE_RIGHT; | |
| 3762 stop.x = 799; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3763 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3764 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3765 stop.y = start.y = t7l1.WindowY0 - 1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3766 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3767 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3768 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3769 stop.y = start.y = 480 - t7l1.WindowY1 - 1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3770 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3771 |
| 38 | 3772 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3773 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3774 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3775 stop.y = start.y = t7l2.WindowY0 - 1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3776 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3777 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3778 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3779 stop.y = start.y = 480 - t7l2.WindowY1 - 1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3780 } |
| 38 | 3781 GFX_draw_line(&t7screen, start, stop, colorLinesOnTheSide); |
| 3782 } | |
| 3783 } | |
| 3784 | |
| 3785 | |
| 3786 /* Compass like TCOS shellfish | |
| 3787 * input is 0 to 359 | |
| 3788 * 2 px / 1 degree | |
| 3789 * Range is 148 degree with CUSTOMBOX_SPACE_INSIDE = 296 | |
| 3790 * one side is 74 degree (less than 90 degree) | |
| 3791 * internal 360 + 180 degree of freedom | |
| 3792 * use positive values only, shift by 360 below 90 mid position | |
| 3793 */ | |
| 3794 | |
| 3795 | |
| 3796 point_t t7_compass_circle(uint8_t id, uint16_t degree) | |
| 3797 { | |
| 3798 float fCos, fSin; | |
| 3799 const float piMult = ((2 * 3.14159) / 360); | |
| 3800 // const int radius[4] = {95,105,115,60}; | |
| 3801 const int radius[4] = {95,105,115,100}; | |
| 3802 const point_t offset = {.x = 400, .y = 250}; | |
| 3803 | |
| 3804 static point_t r[4][360] = { 0 }; | |
| 3805 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3806 if(r[0][0].y == 0) /* calc table at first call only */ |
| 38 | 3807 { |
| 3808 for(int i=0;i<360;i++) | |
| 3809 { | |
| 3810 fCos = cos(i * piMult); | |
| 3811 fSin = sin(i * piMult); | |
| 3812 for(int j=0;j<4;j++) | |
| 3813 { | |
| 3814 r[j][i].x = offset.x + (int)(fSin * radius[j]); | |
| 3815 r[j][i].y = offset.y + (int)(fCos * radius[j]); | |
| 3816 } | |
| 3817 } | |
| 3818 } | |
| 3819 if(id > 3) id = 0; | |
| 3820 if(degree > 359) degree = 0; | |
| 3821 return r[id][degree]; | |
| 3822 } | |
| 3823 | |
| 3824 /* range should be 0 to 30 bar if 300 meter with 100% of nitrogen or helium | |
| 3825 * T24 is 28 high | |
| 3826 */ | |
| 3827 void t7_tissues(const SDiveState * pState) | |
| 3828 { | |
| 3829 point_t start, change, stop; | |
| 3830 float value; | |
| 3831 uint16_t front, cns100pixel; | |
| 3832 char text[256]; | |
| 3833 uint8_t textpointer = 0; | |
| 3834 uint8_t color; | |
| 3835 | |
| 3836 float percent_N2; | |
| 3837 float percent_He; | |
| 3838 float partial_pressure_N2; | |
| 3839 float partial_pressure_He; | |
| 3840 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3841 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3842 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3843 |
| 38 | 3844 |
| 3845 /* N2 */ | |
| 3846 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3847 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3848 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3849 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3850 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3851 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3852 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3853 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3854 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3855 } |
| 38 | 3856 t7cY0free.WindowNumberOfTextLines = 3; |
| 3857 | |
| 3858 text[textpointer++] = '\030'; | |
| 3859 text[textpointer++] = TXT_2BYTE; | |
| 3860 text[textpointer++] = TXT2BYTE_Nitrogen; | |
| 3861 text[textpointer++] = '\n'; | |
| 3862 text[textpointer++] = '\r'; | |
| 3863 text[textpointer++] = TXT_2BYTE; | |
| 3864 text[textpointer++] = TXT2BYTE_Helium; | |
| 3865 text[textpointer++] = '\n'; | |
| 3866 text[textpointer++] = '\r'; | |
| 3867 text[textpointer++] = TXT_2BYTE; | |
| 3868 text[textpointer++] = TXT2BYTE_CNS; | |
| 3869 text[textpointer++] = 0; | |
| 3870 | |
| 3871 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
| 3872 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3873 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3874 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3875 start.y = t7cH.WindowY0 - 5; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3876 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3877 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3878 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3879 start.y = t7cH.WindowY1 - 5; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3880 } |
| 38 | 3881 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
| 3882 stop.x = start.x + CUSTOMBOX_SPACE_INSIDE; | |
| 3883 | |
| 3884 for(int i=0;i<16;i++) | |
| 3885 { | |
| 3886 stop.y = start.y; | |
| 3887 change.y = start.y; | |
| 3888 | |
| 3889 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
|
3890 value *= 80; |
| 38 | 3891 |
| 3892 if(value < 0) | |
| 3893 front = 0; | |
| 3894 else | |
| 3895 if(value > CUSTOMBOX_SPACE_INSIDE) | |
| 3896 front = CUSTOMBOX_SPACE_INSIDE; | |
| 3897 else | |
| 3898 front = (uint16_t)value; | |
| 3899 | |
| 3900 change.x = start.x + front; | |
| 3901 if(change.x != start.x) | |
| 3902 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
| 3903 if(change.x != stop.x) | |
| 3904 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
| 3905 | |
| 3906 start.y -= 3; | |
| 3907 } | |
| 3908 | |
| 3909 /* He */ | |
| 3910 start.y -= 28 + 14; | |
| 3911 for(int i=0;i<16;i++) | |
| 3912 { | |
| 3913 stop.y = start.y; | |
| 3914 change.y = start.y; | |
| 3915 | |
| 3916 value = pState->lifeData.tissue_helium_bar[i]; | |
| 3917 value *= 80;//20 | |
| 3918 | |
| 3919 if(value < 0) | |
| 3920 front = 0; | |
| 3921 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
| 3922 front = CUSTOMBOX_SPACE_INSIDE; | |
| 3923 else | |
| 3924 front = (uint16_t)value; | |
| 3925 | |
| 3926 change.x = start.x + front; | |
| 3927 if(change.x != start.x) | |
| 3928 GFX_draw_thick_line(1,&t7screen, start, change, CLUT_Font030); | |
| 3929 if(change.x != stop.x) | |
| 3930 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
| 3931 | |
| 3932 start.y -= 3; | |
| 3933 } | |
| 3934 | |
| 3935 /* CNS == Oxygen */ | |
| 3936 start.y -= 28 + 14; | |
| 3937 | |
| 3938 cns100pixel = (8 * CUSTOMBOX_SPACE_INSIDE) / 10; | |
| 3939 value = pState->lifeData.cns; | |
| 3940 value *= cns100pixel; | |
| 3941 value /= 100; | |
| 3942 | |
| 3943 if(value < 0) | |
| 3944 front = 0; | |
| 3945 else if(value > CUSTOMBOX_SPACE_INSIDE) | |
| 3946 front = CUSTOMBOX_SPACE_INSIDE; | |
| 3947 else | |
| 3948 front = (uint16_t)value; | |
| 3949 | |
| 3950 if(pState->lifeData.cns < 95) | |
| 3951 color = CLUT_Font030; | |
| 3952 else if(pState->lifeData.cns < 100) | |
| 3953 color = CLUT_WarningYellow; | |
| 3954 else | |
| 3955 color = CLUT_WarningRed; | |
| 3956 | |
| 3957 for(int i=0;i<16;i++) | |
| 3958 { | |
| 3959 stop.y = start.y; | |
| 3960 change.y = start.y; | |
| 3961 | |
| 3962 change.x = start.x + front; | |
| 3963 if(change.x != start.x) | |
| 3964 GFX_draw_thick_line(1,&t7screen, start, change, color); | |
| 3965 if(change.x != stop.x) | |
| 3966 GFX_draw_thick_line(1,&t7screen, change, stop, CLUT_Font031); | |
| 3967 | |
| 3968 start.y -= 3; | |
| 3969 } | |
| 3970 | |
| 3971 /* where is the onload/offload limit for N2 and He */ | |
| 3972 decom_get_inert_gases(pState->lifeData.pressure_ambient_bar, &pState->lifeData.actualGas, &percent_N2, &percent_He); | |
| 3973 partial_pressure_N2 = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_N2; | |
| 3974 partial_pressure_He = (pState->lifeData.pressure_ambient_bar - WATER_VAPOUR_PRESSURE) * percent_He; | |
| 3975 | |
| 3976 // Nitrogen vertical bar | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3977 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3978 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3979 start.y = t7cH.WindowY0 + 1 - 5; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3980 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3981 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3982 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3983 start.y = t7cH.WindowY1 - 5; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3984 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
3985 |
| 38 | 3986 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
|
3987 if((percent_N2 > 0) && (partial_pressure_N2 > 0.7512f)) |
| 38 | 3988 { |
|
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3989 value = partial_pressure_N2 - 0.7512f; |
|
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
3990 value *= 80; |
| 38 | 3991 |
| 3992 if(value < 0) | |
| 3993 front = 3; | |
| 3994 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
| 3995 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
| 3996 else | |
| 3997 front = (uint16_t)value; | |
| 3998 } | |
| 3999 else | |
| 4000 { | |
| 4001 front = 1; | |
| 4002 } | |
| 4003 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
| 4004 stop.x = start.x; | |
| 4005 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
| 4006 | |
| 4007 | |
| 4008 // Helium vertical bar | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4009 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4010 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4011 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
|
4012 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4013 else |
|
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 start.y = t7cH.WindowY1 - 5 - 3*16 - 28 - 14; |
|
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 |
| 38 | 4018 stop.y = start.y - (3 * 15) - 1; |
| 4019 if((percent_He > 0) && (partial_pressure_He > 0.01f)) // 0.5f | |
| 4020 { | |
| 4021 | |
| 4022 value = partial_pressure_He; | |
|
222
9b4b3decd9ba
Bugfix: correct presentation error in tissues custom view
Jan Mulder <jlmulder@xs4all.nl>
parents:
215
diff
changeset
|
4023 value *= 80; |
| 38 | 4024 |
| 4025 if(value < 0) | |
| 4026 front = 3; | |
| 4027 else if(value + 5 > CUSTOMBOX_SPACE_INSIDE) | |
| 4028 front = CUSTOMBOX_SPACE_INSIDE - 3; | |
| 4029 else | |
| 4030 front = (uint16_t)value; | |
| 4031 } | |
| 4032 else | |
| 4033 { | |
| 4034 front = 1; | |
| 4035 } | |
| 4036 | |
| 4037 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + front; | |
| 4038 stop.x = start.x; | |
| 4039 GFX_draw_thick_line(2,&t7screen, start, stop, CLUT_EverythingOkayGreen); | |
| 4040 | |
| 4041 // Oxygen vertical bar | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4042 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4043 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4044 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
|
4045 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4046 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4047 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4048 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
|
4049 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4050 |
| 38 | 4051 stop.y = start.y - (3 * 15) - 1; |
| 4052 | |
| 4053 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + cns100pixel; | |
| 4054 stop.x = start.x; | |
| 4055 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
|
4056 |
| 38 | 4057 } |
| 4058 | |
| 4059 | |
| 4060 void t7_debug(void) | |
| 4061 { | |
| 4062 char text[256+50]; | |
| 4063 uint8_t textpointer = 0; | |
| 4064 | |
| 4065 t7cY0free.WindowLineSpacing = 28 + 48 + 14; | |
| 4066 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
| 4067 t7cY0free.WindowNumberOfTextLines = 3; | |
| 4068 | |
| 896 | 4069 #ifdef T7_DEBUG_RUNTIME |
| 4070 textpointer += snprintf(&text[textpointer],50,"Main loop %ld\n\r",getMainLoopTime()); | |
| 4071 textpointer += snprintf(&text[textpointer],50,"Grafic loop %ld\n\r",getGfxLoopTime()); | |
| 4072 textpointer += snprintf(&text[textpointer],50,"Decoloop %ld\n\r",getDecoLoopTime()); | |
| 4073 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
| 4074 #else | |
| 38 | 4075 textpointer += snprintf(&text[textpointer],50,"Ambient [bar]\n\r"); |
| 4076 textpointer += snprintf(&text[textpointer],50,"Surface [bar] + salt\n\r"); | |
| 4077 // textpointer += snprintf(&text[textpointer],50,"Difference [mbar]\n\r"); | |
| 4078 textpointer += snprintf(&text[textpointer],50,"ShallowCounter [s]\n\r"); | |
| 4079 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
| 4080 | |
| 4081 t7cY0free.WindowY0 -= 52; | |
| 4082 // 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)); | |
| 4083 snprintf(text,60, | |
| 4084 "%0.2f\n\r" | |
| 4085 "%0.2f %u%%\n\r" | |
| 4086 "%u" | |
| 4087 ,stateUsed->lifeData.pressure_ambient_bar | |
| 4088 ,stateUsed->lifeData.pressure_surface_bar | |
| 4089 ,settingsGetPointer()->salinity | |
| 4090 ,stateUsed->lifeData.counterSecondsShallowDepth); | |
| 4091 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
| 896 | 4092 #endif |
| 38 | 4093 } |
| 4094 | |
|
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4095 void t7_showPosition(void) |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4096 { |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4097 char text[256+50]; |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4098 uint8_t textpointer = 0; |
| 934 | 4099 point_t start, stop; |
| 4100 uint8_t index = 0; | |
| 4101 uint8_t color = 0; | |
| 962 | 4102 SSettings* pSettings = settingsGetPointer(); |
|
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4103 |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4104 t7cY0free.WindowLineSpacing = 28 + 48 + 14; |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4105 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4106 t7cY0free.WindowNumberOfTextLines = 3; |
| 934 | 4107 t7cY0free.WindowY0 -= 20; |
| 962 | 4108 |
| 4109 t7cY0free.WindowX0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
| 4110 t7cY0free.WindowX1 = CUSTOMBOX_LINE_RIGHT - CUSTOMBOX_INSIDE_OFFSET; | |
| 4111 | |
| 4112 if(pSettings->FlipDisplay) | |
| 4113 { | |
| 4114 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; | |
| 4115 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; | |
| 4116 } | |
| 4117 | |
| 934 | 4118 if(stateUsed->lifeData.gnssData.fixType < 2) |
| 4119 { | |
| 4120 textpointer += snprintf(&text[textpointer],50,"\001Satellites\n\r"); | |
| 955 | 4121 if(stateUsed->lifeData.gnssData.alive & GNSS_ALIVE_STATE_ALIVE) |
| 940 | 4122 { |
| 4123 textpointer += snprintf(&text[textpointer],50,"\001\020Status\n\r"); | |
| 4124 } | |
| 4125 else | |
| 4126 { | |
| 4127 textpointer += snprintf(&text[textpointer],50,"\001\021Status\n\r"); | |
| 4128 } | |
| 934 | 4129 } |
| 4130 else | |
| 4131 { | |
| 4132 textpointer += snprintf(&text[textpointer],50,"\001Longitude\n\r"); | |
| 4133 textpointer += snprintf(&text[textpointer],50,"\001Latitude\n\r"); | |
| 4134 } | |
|
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4135 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
|
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4136 |
| 962 | 4137 if(!pSettings->FlipDisplay) |
| 4138 { | |
| 4139 t7cY0free.WindowY0 -= 52; | |
| 4140 } | |
| 4141 else | |
| 4142 { | |
| 4143 t7cY0free.WindowY1 = 370; | |
| 4144 } | |
| 4145 | |
| 934 | 4146 if(stateUsed->lifeData.gnssData.fixType < 2) |
| 4147 { | |
| 4148 snprintf(text,60,"\001%d\n\r",stateUsed->lifeData.gnssData.numSat); | |
| 4149 } | |
| 4150 else | |
| 4151 { | |
| 4152 snprintf(text,60, | |
| 4153 "\001%0.5f\n\r" | |
| 4154 "\001%0.5f\n\r" | |
| 941 | 4155 ,stateUsed->lifeData.gnssData.coord.fLat ,stateUsed->lifeData.gnssData.coord.fLon); |
| 934 | 4156 } |
|
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4157 GFX_write_string(&FontT42, &t7cY0free, text, 1); |
| 934 | 4158 |
| 4159 if(stateUsed->lifeData.gnssData.fixType < 2) /* draw status bars */ | |
| 4160 { | |
| 962 | 4161 if(!pSettings->FlipDisplay) |
| 4162 { | |
| 4163 start.x = t7cY0free.WindowX0 + 85; | |
| 4164 stop.x = start.x; | |
| 4165 start.y = t7cY0free.WindowY0 + 75; | |
| 4166 stop.y = start.y + 20; | |
| 4167 } | |
| 4168 else | |
| 4169 { | |
| 4170 start.x = t7cY0free.WindowX0 - 50; | |
| 4171 stop.x = start.x; | |
| 4172 start.y = t7cY0free.WindowY0 - 75; | |
| 4173 stop.y = start.y - 20; | |
| 4174 } | |
| 4175 | |
| 934 | 4176 while((index < stateUsed->lifeData.gnssData.numSat) && (index < 4)) |
| 4177 { | |
| 4178 if(stateUsed->lifeData.gnssData.signalQual[index] > 4) color = CLUT_NiceGreen; | |
| 4179 if((stateUsed->lifeData.gnssData.signalQual[index] > 2) && (stateUsed->lifeData.gnssData.signalQual[index] <= 4)) color = CLUT_WarningYellow; | |
| 4180 if(stateUsed->lifeData.gnssData.signalQual[index] <= 2) color = CLUT_WarningRed; | |
| 4181 GFX_draw_thick_line(20, &t7screen, start, stop, color); | |
| 4182 start.x += 40; | |
| 4183 stop.x += 40; | |
| 4184 | |
| 4185 index++; | |
| 4186 } | |
| 955 | 4187 if(stateUsed->lifeData.gnssData.alive & GNSS_ALIVE_BACKUP_POS) |
| 4188 { | |
| 4189 snprintf(text,50,"\001%2.2f %2.2f", stateUsed->lifeData.gnssData.coord.fLat,stateUsed->lifeData.gnssData.coord.fLon); | |
| 4190 GFX_write_string(&FontT24, &t7cY0free, text, 3); | |
| 4191 } | |
| 934 | 4192 } |
| 4193 | |
| 4194 | |
|
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
896
diff
changeset
|
4195 } |
| 38 | 4196 void t7_SummaryOfLeftCorner(void) |
| 4197 { | |
| 4198 char text[256+60]; | |
| 4199 uint8_t textpointer = 0; | |
| 656 | 4200 SSettings* pSettings = settingsGetPointer(); |
| 38 | 4201 |
| 4202 const SDecoinfo * pDecoinfoStandard; | |
| 4203 const SDecoinfo * pDecoinfoFuture; | |
| 4204 float fCNS; | |
| 4205 | |
| 4206 if(stateUsed->diveSettings.deco_type.ub.standard == GF_MODE) | |
| 4207 { | |
| 4208 pDecoinfoStandard = &stateUsed->decolistBuehlmann; | |
| 4209 pDecoinfoFuture = &stateUsed->decolistFutureBuehlmann; | |
| 4210 } | |
| 4211 else | |
| 4212 { | |
| 4213 pDecoinfoStandard = &stateUsed->decolistVPM; | |
| 4214 pDecoinfoFuture = &stateUsed->decolistFutureVPM; | |
| 4215 } | |
| 4216 | |
| 4217 fCNS = stateUsed->lifeData .cns; | |
| 4218 if(fCNS > 999) | |
| 4219 fCNS = 999; | |
| 4220 | |
| 4221 t7cY0free.WindowY0 = t7cC.WindowY0 - 10; | |
| 656 | 4222 if(pSettings->FlipDisplay) |
|
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4223 { |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4224 t7cY0free.WindowY1 = 400; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4225 } |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4226 |
| 38 | 4227 t7cY0free.WindowLineSpacing = 48; |
| 4228 t7cY0free.WindowNumberOfTextLines = 6; | |
| 4229 t7cY0free.WindowTab = 420; | |
| 4230 | |
| 4231 // header | |
| 4232 textpointer = 0; | |
| 4233 text[textpointer++] = '\032'; | |
| 4234 text[textpointer++] = '\016'; | |
| 4235 text[textpointer++] = '\016'; | |
| 4236 text[textpointer++] = TXT_ppO2; | |
| 4237 text[textpointer++] = '\n'; | |
| 4238 text[textpointer++] = '\r'; | |
| 4239 text[textpointer++] = TXT_Ceiling; | |
| 4240 text[textpointer++] = '\n'; | |
| 4241 text[textpointer++] = '\r'; | |
| 4242 text[textpointer++] = TXT_ActualGradient; | |
| 4243 text[textpointer++] = '\n'; | |
| 4244 text[textpointer++] = '\r'; | |
| 4245 text[textpointer++] = TXT_CNS; | |
| 4246 text[textpointer++] = '\n'; | |
| 4247 text[textpointer++] = '\r'; | |
| 4248 text[textpointer++] = TXT_FutureTTS; | |
| 656 | 4249 text[textpointer++] = '\n'; |
| 4250 text[textpointer++] = '\r'; | |
| 662 | 4251 if((pSettings->scrubTimerMode != SCRUB_TIMER_OFF) && (isLoopMode(pSettings->dive_mode))) |
| 656 | 4252 { |
| 4253 text[textpointer++] = TXT_ScrubTime; | |
| 4254 | |
| 4255 } | |
| 38 | 4256 text[textpointer++] = '\017'; |
| 656 | 4257 text[textpointer++] = 0; |
| 4258 if(!pSettings->FlipDisplay) | |
|
315
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4259 { |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4260 t7cY0free.WindowX0 += 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4261 t7cY0free.WindowY0 += 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4262 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4263 t7cY0free.WindowX0 -= 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4264 t7cY0free.WindowY0 -= 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4265 } |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4266 else |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4267 { |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4268 t7cY0free.WindowY1 -= 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4269 t7cY0free.WindowX1 -= 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4270 GFX_write_string(&FontT24, &t7cY0free, text, 1); |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4271 t7cY0free.WindowY1 += 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4272 t7cY0free.WindowX1 += 10; |
|
7420ed6c3508
Bugfix Overview, O2 values and mV in flip display mode
ideenmodellierer
parents:
247
diff
changeset
|
4273 } |
| 38 | 4274 textpointer = 0; |
| 4275 text[textpointer++] = '\t'; | |
| 4276 textpointer += snprintf(&text[textpointer],10,"\020%01.2f", stateUsed->lifeData.ppO2); | |
| 4277 text[textpointer++] = '\n'; | |
| 4278 text[textpointer++] = '\r'; | |
| 4279 text[textpointer++] = '\t'; | |
| 4280 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
|
4281 textpointer += snprintf(&text[textpointer],10,"\020%01.0f",unit_depth_float(pDecoinfoStandard->output_ceiling_meter)); |
| 38 | 4282 else |
|
215
4a0ebade04f5
Bugfix, trivial: correctly present avg depth in overview custom
Jan Mulder <jlmulder@xs4all.nl>
parents:
214
diff
changeset
|
4283 textpointer += snprintf(&text[textpointer],10,"\020%01.1f",pDecoinfoStandard->output_ceiling_meter); |
| 38 | 4284 text[textpointer++] = '\n'; |
| 4285 text[textpointer++] = '\r'; | |
| 4286 text[textpointer++] = '\t'; | |
|
247
3949781096d4
feature: Relative GF to Saturation renames
Jan Mulder <jlmulder@xs4all.nl>
parents:
225
diff
changeset
|
4287 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017", 100 * pDecoinfoStandard->super_saturation); |
| 38 | 4288 text[textpointer++] = '\n'; |
| 4289 text[textpointer++] = '\r'; | |
| 4290 text[textpointer++] = '\t'; | |
| 4291 textpointer += snprintf(&text[textpointer],10,"\020%.0f\016\016%%\017",fCNS); | |
| 4292 text[textpointer++] = '\n'; | |
| 4293 text[textpointer++] = '\r'; | |
| 4294 text[textpointer++] = '\t'; | |
|
214
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
4295 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
|
4296 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
|
4297 else |
|
51a3aeffc6b3
Bugfix: handle rounding of TTS and future TTS consistently
Jan Mulder <jlmulder@xs4all.nl>
parents:
211
diff
changeset
|
4298 textpointer += snprintf(&text[textpointer],10,"\020%ih", (pDecoinfoFuture->output_time_to_surface_seconds + 59) / 3600); |
| 656 | 4299 |
| 662 | 4300 if((pSettings->scrubTimerMode != SCRUB_TIMER_OFF) && (isLoopMode(pSettings->dive_mode))) |
| 656 | 4301 { |
| 4302 text[textpointer++] = '\n'; | |
| 4303 text[textpointer++] = '\r'; | |
| 4304 text[textpointer++] = '\t'; | |
|
758
b6d8a6fbf4fd
- Colours for scrubber display when time remaining falls below a threshold value
heinrichsweikamp
parents:
756
diff
changeset
|
4305 |
|
980
7149f372b0ba
Fix a couple of bugs in the scrubber timer:
heinrichsweikamp
parents:
979
diff
changeset
|
4306 textpointer += printScrubberText(&text[textpointer], 10, stateUsed->scrubberDataDive, pSettings); |
| 656 | 4307 } |
| 38 | 4308 text[textpointer++] = 0; |
|
868
db92692c014f
Introduce speed dependend coloring of depth:
Ideenmodellierer
parents:
859
diff
changeset
|
4309 Gfx_colorsscheme_mod(text, 0); |
| 38 | 4310 GFX_write_string(&FontT42, &t7cY0free, text, 1); |
| 4311 } | |
| 4312 | |
| 4313 void t7_compass(uint16_t ActualHeading, uint16_t UserSetHeading) | |
| 4314 { | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4315 uint16_t ActualHeadingRose; |
| 38 | 4316 uint16_t LeftBorderHeading, LineHeading; |
| 4317 uint32_t offsetPicture; | |
| 4318 point_t start, stop, center; | |
| 4319 static int32_t LastHeading = 0; | |
| 4320 int32_t newHeading = 0; | |
| 4321 int32_t diff = 0; | |
| 4322 int32_t diff2 = 0; | |
| 4323 | |
| 4324 int32_t diffAbs = 0; | |
| 4325 int32_t diffAbs2 = 0; | |
| 4326 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4327 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4328 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4329 |
| 38 | 4330 newHeading = ActualHeading; |
| 4331 | |
| 4332 diff = newHeading - LastHeading; | |
| 4333 | |
| 4334 if(newHeading < LastHeading) | |
| 4335 diff2 = newHeading + 360 - LastHeading; | |
| 4336 else | |
| 4337 diff2 = newHeading - 360 - LastHeading; | |
| 4338 | |
| 4339 diffAbs = diff; | |
| 4340 if(diffAbs < 0) | |
| 4341 diffAbs *= -1; | |
| 4342 | |
| 4343 diffAbs2 = diff2; | |
| 4344 if(diffAbs2 < 0) | |
| 4345 diffAbs2 *= -1; | |
| 4346 | |
| 4347 | |
| 4348 if(diffAbs <= diffAbs2) | |
| 4349 newHeading = LastHeading + (diff / 2); | |
| 4350 else | |
| 4351 newHeading = LastHeading + (diff2 / 2); | |
| 4352 | |
| 4353 if(newHeading < 0) | |
| 4354 newHeading += 360; | |
| 4355 else | |
| 4356 if(newHeading >= 360) | |
| 4357 newHeading -= 360; | |
| 4358 | |
| 4359 LastHeading = newHeading; | |
| 4360 ActualHeading = newHeading; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4361 ActualHeadingRose = ActualHeading; |
|
225
2bb1db22b5f5
cleanup: random set of cleanups
Jan Mulder <jlmulder@xs4all.nl>
parents:
222
diff
changeset
|
4362 |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4363 if(pSettings->FlipDisplay) |
|
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 ActualHeadingRose = 360 - ActualHeadingRose; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4366 if (ActualHeadingRose < 170) ActualHeadingRose += 360; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4367 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4368 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4369 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4370 if (ActualHeadingRose < 90) ActualHeadingRose += 360; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4371 ActualHeading = ActualHeadingRose; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4372 } |
| 38 | 4373 |
| 4374 // new hw 160822 | |
| 4375 // if (ActualHeading >= 360 + 90) | |
| 4376 // ActualHeading = 360; | |
| 4377 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4378 LeftBorderHeading = 2 * (ActualHeadingRose - (CUSTOMBOX_SPACE_INSIDE/4)); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4379 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4380 if(pSettings->FlipDisplay) /* add offset caused by mirrowed drawing */ |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4381 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4382 LeftBorderHeading += 2 * 80; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4383 } |
| 38 | 4384 |
| 4385 offsetPicture = LeftBorderHeading * t7screenCompass.ImageHeight * 2; | |
| 4386 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4387 /* the background is used to draw the rotating compass rose */ |
| 38 | 4388 background.pointer = t7screenCompass.FBStartAdress+offsetPicture; |
| 4389 background.x0 = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4390 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4391 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4392 background.y0 = 65; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4393 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4394 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4395 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4396 background.y0 = 480 - t7screenCompass.ImageHeight - 65; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4397 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4398 |
| 38 | 4399 background.width = CUSTOMBOX_SPACE_INSIDE; |
| 4400 background.height = t7screenCompass.ImageHeight; | |
| 4401 | |
| 4402 | |
| 4403 start.x = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + (CUSTOMBOX_SPACE_INSIDE/2); | |
| 4404 stop.x = start.x; | |
| 4405 start.y = 65; | |
| 4406 stop.y = start.y + 55; | |
| 4407 GFX_draw_line(&t7screen, start, stop, CLUT_Font030); | |
| 4408 | |
| 4409 | |
| 4410 center.x = start.x; | |
| 4411 center.y = 300; | |
| 4412 | |
| 4413 stop.x = center.x + 44; | |
| 4414 stop.y = center.y + 24; | |
| 4415 | |
| 4416 | |
| 4417 while(ActualHeading > 359) ActualHeading -= 360; | |
| 4418 | |
| 4419 LineHeading = 360 - ActualHeading; | |
| 4420 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(0,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font030); // North | |
| 4421 LineHeading += 90; | |
| 4422 if(LineHeading > 359) LineHeading -= 360; | |
| 4423 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Maintick | |
| 4424 LineHeading += 90; | |
| 4425 if(LineHeading > 359) LineHeading -= 360; | |
| 4426 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4427 LineHeading += 90; | |
| 4428 if(LineHeading > 359) LineHeading -= 360; | |
| 4429 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4430 | |
| 4431 LineHeading = 360 - ActualHeading; | |
| 4432 LineHeading += 45; | |
| 4433 if(LineHeading > 359) LineHeading -= 360; | |
| 4434 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
| 4435 LineHeading += 90; | |
| 4436 if(LineHeading > 359) LineHeading -= 360; | |
| 4437 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4438 LineHeading += 90; | |
| 4439 if(LineHeading > 359) LineHeading -= 360; | |
| 4440 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4441 LineHeading += 90; | |
| 4442 if(LineHeading > 359) LineHeading -= 360; | |
| 4443 GFX_draw_thick_line(5,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4444 | |
| 4445 LineHeading = 360 - ActualHeading; | |
| 4446 LineHeading += 22; | |
| 4447 if(LineHeading > 359) LineHeading -= 360; | |
| 4448 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
| 4449 LineHeading += 45; | |
| 4450 if(LineHeading > 359) LineHeading -= 360; | |
| 4451 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4452 LineHeading += 45; | |
| 4453 if(LineHeading > 359) LineHeading -= 360; | |
| 4454 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4455 LineHeading += 45; | |
| 4456 if(LineHeading > 359) LineHeading -= 360; | |
| 4457 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4458 LineHeading += 45; | |
| 4459 if(LineHeading > 359) LineHeading -= 360; | |
| 4460 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); // Subtick | |
| 4461 LineHeading += 45; | |
| 4462 if(LineHeading > 359) LineHeading -= 360; | |
| 4463 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4464 LineHeading += 45; | |
| 4465 if(LineHeading > 359) LineHeading -= 360; | |
| 4466 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4467 LineHeading += 45; | |
| 4468 if(LineHeading > 359) LineHeading -= 360; | |
| 4469 GFX_draw_thick_line(3,&t7screen, t7_compass_circle(1,LineHeading), t7_compass_circle(2,LineHeading), CLUT_Font031); | |
| 4470 | |
| 4471 if(UserSetHeading) | |
| 4472 { | |
| 4473 LineHeading = UserSetHeading + 360 - ActualHeading; | |
| 4474 if(LineHeading > 359) LineHeading -= 360; | |
| 4475 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserHeadingTick); | |
| 4476 | |
| 4477 // R�ckpeilung, User Back Heading | |
| 4478 LineHeading = UserSetHeading + 360 + 180 - ActualHeading; | |
| 4479 if(LineHeading > 359) LineHeading -= 360; | |
| 4480 if(LineHeading > 359) LineHeading -= 360; | |
| 4481 GFX_draw_thick_line(9,&t7screen, t7_compass_circle(3,LineHeading), t7_compass_circle(2,LineHeading), CLUT_CompassUserBackHeadingTick); | |
| 4482 } | |
| 4483 | |
| 4484 center.x = start.x; | |
| 4485 center.y = 250; | |
| 4486 GFX_draw_circle(&t7screen, center, 116, CLUT_Font030); | |
| 4487 GFX_draw_circle(&t7screen, center, 118, CLUT_Font030); | |
| 4488 GFX_draw_circle(&t7screen, center, 117, CLUT_Font030); | |
| 4489 | |
| 4490 | |
| 4491 } | |
| 4492 | |
| 4493 | |
| 4494 /* Font_T42: N is 27 px, S is 20 px, W is 36 px, E is 23 px | |
| 4495 * max is NW with 63 px | |
| 4496 * Font_T24: N is 15 px, S is 12 px, W is 20 px, E is 13 px | |
| 4497 * max is NW with 35 px | |
| 4498 * NE is 28 px | |
| 4499 * SW is 32 px | |
| 4500 * SE is 25 px | |
| 4501 * space between each is 45 px * 2 | |
| 4502 * FirstItem List | |
| 4503 * \177 \177 prepare for size | |
| 4504 */ | |
| 4505 void init_t7_compass(void) | |
| 4506 { | |
| 4507 t7screenCompass.FBStartAdress = getFrame(21); | |
| 4508 | |
| 4509 char text[256]; | |
| 4510 uint8_t textpointer = 0; | |
| 4511 | |
| 4512 text[textpointer++] = '\030'; | |
| 4513 text[textpointer++] = '\177'; | |
| 4514 text[textpointer++] = '\177'; | |
| 4515 text[textpointer++] = 76; // 90 - 14 | |
| 4516 text[textpointer++] = '\016'; | |
| 4517 text[textpointer++] = '\016'; | |
| 4518 text[textpointer++] = 'N'; | |
| 4519 text[textpointer++] = 'E'; // 96 + 28 = 124 total | |
| 4520 text[textpointer++] = '\017'; | |
| 4521 text[textpointer++] = '\177'; | |
| 4522 text[textpointer++] = '\177'; | |
| 4523 text[textpointer++] = 64; // 90 - 14 - 12 | |
| 4524 text[textpointer++] = 'E'; // 124 + 74 + 23 = 221 total | |
| 4525 text[textpointer++] = '\177'; | |
| 4526 text[textpointer++] = '\177'; | |
| 4527 text[textpointer++] = 66; // 90 - 11 - 13 | |
| 4528 text[textpointer++] = '\016'; | |
| 4529 text[textpointer++] = '\016'; | |
| 4530 text[textpointer++] = 'S'; | |
| 4531 text[textpointer++] = 'E'; | |
| 4532 text[textpointer++] = '\017'; | |
| 4533 text[textpointer++] = '\177'; | |
| 4534 text[textpointer++] = '\177'; | |
| 4535 text[textpointer++] = 68; // 90 - 12 - 10 | |
| 4536 text[textpointer++] = 'S'; | |
| 4537 text[textpointer++] = '\177'; | |
| 4538 text[textpointer++] = '\177'; | |
| 4539 text[textpointer++] = 64; // 90 - 10 - 16 | |
| 4540 text[textpointer++] = '\016'; | |
| 4541 text[textpointer++] = '\016'; | |
| 4542 text[textpointer++] = 'S'; | |
| 4543 text[textpointer++] = 'W'; | |
| 4544 text[textpointer++] = '\017'; | |
| 4545 text[textpointer++] = '\177'; | |
| 4546 text[textpointer++] = '\177'; | |
| 4547 text[textpointer++] = 56; // 90 - 16 - 18 | |
| 4548 text[textpointer++] = 'W'; | |
| 4549 text[textpointer++] = '\177'; | |
| 4550 text[textpointer++] = '\177'; | |
| 4551 text[textpointer++] = 54; // 90 - 18 - 18 | |
| 4552 text[textpointer++] = '\016'; | |
| 4553 text[textpointer++] = '\016'; | |
| 4554 text[textpointer++] = 'N'; | |
| 4555 text[textpointer++] = 'W'; | |
| 4556 text[textpointer++] = '\017'; | |
| 4557 text[textpointer++] = '\177'; | |
| 4558 text[textpointer++] = '\177'; | |
| 4559 text[textpointer++] = 59; // 90 - 17 - 14 | |
| 4560 text[textpointer++] = 'N'; | |
| 4561 text[textpointer++] = '\177'; | |
| 4562 text[textpointer++] = '\177'; | |
| 4563 text[textpointer++] = 63; // 90 - 13 - 14 | |
| 4564 text[textpointer++] = '\016'; | |
| 4565 text[textpointer++] = '\016'; | |
| 4566 text[textpointer++] = 'N'; | |
| 4567 text[textpointer++] = 'E'; | |
| 4568 text[textpointer++] = '\017'; | |
| 4569 text[textpointer++] = '\177'; | |
| 4570 text[textpointer++] = '\177'; | |
| 4571 text[textpointer++] = 64; // 90 - 14 - 12 | |
| 4572 text[textpointer++] = 'E'; | |
| 4573 text[textpointer++] = '\177'; | |
| 4574 text[textpointer++] = '\177'; | |
| 4575 text[textpointer++] = 66; // 90 - 11 - 13 | |
| 4576 text[textpointer++] = '\016'; | |
| 4577 text[textpointer++] = '\016'; | |
| 4578 text[textpointer++] = 'S'; | |
| 4579 text[textpointer++] = 'E'; | |
| 4580 text[textpointer++] = '\017'; | |
| 4581 text[textpointer++] = '\177'; | |
| 4582 text[textpointer++] = '\177'; | |
| 4583 text[textpointer++] = 68; // 90 - 12 - 10 | |
| 4584 text[textpointer++] = 'S'; | |
| 4585 text[textpointer++] = '\177'; | |
| 4586 text[textpointer++] = '\177'; | |
| 4587 text[textpointer++] = 64; // 90 - 10 - 16 | |
| 4588 text[textpointer++] = '\016'; | |
| 4589 text[textpointer++] = '\016'; | |
| 4590 text[textpointer++] = 'S'; | |
| 4591 text[textpointer++] = 'W'; | |
| 4592 text[textpointer++] = '\017'; | |
| 4593 text[textpointer++] = 0; // end | |
| 4594 | |
| 4595 GFX_write_string(&FontT42,&t7pCompass,text,1); | |
| 4596 | |
| 4597 releaseAllFramesExcept(21,t7screenCompass.FBStartAdress); | |
| 4598 } | |
| 4599 | |
| 4600 | |
| 4601 void t7_miniLiveLogProfile(void) | |
| 4602 { | |
| 4603 SWindowGimpStyle wintemp; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4604 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4605 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4606 |
| 38 | 4607 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET; |
| 4608 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4609 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4610 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4611 wintemp.top = 480 - t7l1.WindowY0; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4612 wintemp.bottom = wintemp. top + 200; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4613 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4614 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4615 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4616 wintemp.top = t7l1.WindowY1; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4617 wintemp.bottom = wintemp. top + 200; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4618 } |
| 38 | 4619 |
| 4620 uint16_t max_depth = (uint16_t)(stateUsed->lifeData.max_depth_meter * 10); | |
| 4621 | |
| 4622 GFX_graph_print(&t7screen, &wintemp, 0,1,0, max_depth, getMiniLiveLogbookPointerToData(), getMiniLiveLogbookActualDataLength(), CLUT_Font030, NULL); | |
| 4623 } | |
| 4624 | |
| 4625 void t7_logo_OSTC(void) | |
| 4626 { | |
| 4627 SWindowGimpStyle windowGimp; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4628 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4629 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4630 |
| 38 | 4631 /* OSTC logo */ |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4632 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4633 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4634 windowGimp.left = t7l1.WindowX1 + 32; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4635 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4636 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4637 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4638 windowGimp.left = t7r1.WindowX1 + 32; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4639 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
4640 |
| 38 | 4641 windowGimp.top = 40 + 32; |
| 4642 GFX_draw_image_monochrome(&t7screen, windowGimp, &ImgOSTC, 0); | |
| 4643 } | |
| 672 | 4644 |
| 4645 static uint16_t ChargerLog[60] = {10,10,10,10,10,10,10,10,10,10, | |
| 4646 10,10,10,10,10,10,10,10,10,10, | |
| 4647 10,10,10,10,10,10,10,10,10,10, | |
| 4648 10,10,10,10,10,10,10,10,10,10, | |
| 4649 10,10,10,10,10,10,10,10,10,10, | |
| 4650 10,10,10,10,10,10,10,10,10,10}; | |
| 4651 | |
| 4652 uint16_t LogDeltaCharge(float charge) | |
| 4653 { | |
| 4654 static uint8_t curIndex = 0; | |
| 4655 static float averageSpeed = 0.0; | |
| 4656 uint16_t level = 0; | |
| 4657 uint16_t completeSec = 0; | |
| 4658 | |
| 4659 if(charge > 0.003) | |
| 4660 { | |
| 4661 level = 2; | |
| 4662 } | |
| 4663 else if(charge > 0.0025) | |
| 4664 { | |
| 4665 level = 3; | |
| 4666 } | |
| 4667 else if(charge > 0.002) | |
| 4668 { | |
| 4669 level = 4; | |
| 4670 } | |
| 4671 else if(charge > 0.0015) | |
| 4672 { | |
| 4673 level = 5; | |
| 4674 } | |
| 4675 else if(charge > 0.001) | |
| 4676 { | |
| 4677 level = 6; | |
| 4678 } | |
| 4679 else if(charge > 0.0005) | |
| 4680 { | |
| 4681 level = 7; | |
| 4682 } | |
| 4683 else if(charge > 0.00) | |
| 4684 { | |
| 4685 level = 8; | |
| 4686 } | |
| 4687 else | |
| 4688 { | |
| 4689 level = 10; | |
| 4690 } | |
| 859 | 4691 if(curIndex > 1) |
| 4692 { | |
| 4693 level = (level + ChargerLog[curIndex - 1]) / 2; /* smooth small jumps */ | |
| 4694 } | |
| 672 | 4695 if(curIndex < 59) |
| 4696 { | |
| 4697 ChargerLog[curIndex++] = level; | |
| 4698 } | |
| 4699 else | |
| 4700 { | |
|
994
bad5561c0c59
Fix a compilation error occurring on non-Windows platforms, caused by incorrect case in '#include' file names.
heinrichsweikamp
parents:
988
diff
changeset
|
4701 memmove(&ChargerLog[0], &ChargerLog[1], sizeof(ChargerLog) - 1); |
| 672 | 4702 ChargerLog[curIndex] = level; |
| 4703 } | |
| 859 | 4704 if(curIndex > 1) /* estimate time til charging is complete */ |
| 672 | 4705 { |
| 4706 averageSpeed = ((averageSpeed * (curIndex-1)) + charge) / curIndex; | |
| 4707 completeSec = (100.0 - stateUsed->lifeData.battery_charge) / averageSpeed; | |
| 4708 } | |
| 4709 else | |
| 4710 { | |
| 4711 completeSec = 0xffff; | |
| 4712 } | |
| 4713 return completeSec; | |
| 4714 } | |
| 4715 | |
| 4716 uint16_t* getChargeLog() | |
| 4717 { | |
| 4718 return ChargerLog; | |
| 4719 } | |
| 4720 | |
| 4721 void t7_ChargerView(void) | |
| 4722 { | |
| 4723 static float lastCharge = 0.0; | |
| 4724 float localCharge = 0.0; | |
| 4725 static uint32_t lastTick = 0; | |
| 4726 uint32_t curTick = 0; | |
| 4727 static float speed = 0.0; | |
| 4728 float deltatime = 0.0; | |
| 4729 | |
| 4730 char text[256+50]; | |
| 4731 uint8_t textpointer = 0; | |
| 4732 static uint16_t remainingSec = 0; | |
| 4733 uint16_t hoursto100 = 0; | |
| 4734 char indicator = '~'; | |
| 4735 | |
| 4736 point_t start, stop; | |
| 4737 | |
|
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4738 SWindowGimpStyle wintemp; |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4739 SSettings* pSettings; |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4740 pSettings = settingsGetPointer(); |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4741 |
| 672 | 4742 t7cY0free.WindowLineSpacing = 28 + 48 + 14; |
| 4743 t7cY0free.WindowY0 = t7cH.WindowY0 - 5 - 2 * t7cY0free.WindowLineSpacing; | |
| 4744 t7cY0free.WindowNumberOfTextLines = 3; | |
| 4745 | |
|
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4746 |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4747 if(pSettings->FlipDisplay) |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4748 { |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4749 t7cY0free.WindowY0 = t7cH.WindowY0 + 15; |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4750 t7cY0free.WindowY1 = t7cY0free.WindowY0 + 250; |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4751 } |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4752 |
| 672 | 4753 localCharge = stateUsed->lifeData.battery_charge; |
| 4754 if(localCharge < 0.0) | |
| 4755 { | |
| 4756 localCharge *= -1.0; | |
| 4757 } | |
| 4758 | |
| 4759 if(stateUsed->chargeStatus != CHARGER_off) | |
| 4760 { | |
| 859 | 4761 curTick = HAL_GetTick(); |
| 4762 deltatime = (curTick - lastTick); | |
| 4763 | |
| 4764 if((deltatime > 3000) || (lastCharge != localCharge)) /* Charge value update is expected every 2 second. */ | |
| 4765 { /* Added timeout to keep graph moving in case charger is temporary idle */ | |
| 4766 if(lastCharge != localCharge) | |
| 672 | 4767 { |
| 859 | 4768 if(lastCharge < localCharge) |
| 4769 { | |
| 4770 speed = (localCharge - lastCharge) * 1000.0 / deltatime; | |
| 4771 } | |
| 4772 | |
| 4773 if(localCharge > 100.0) | |
| 4774 { | |
| 4775 localCharge = 100.0; | |
| 4776 } | |
| 4777 lastCharge = localCharge; | |
| 672 | 4778 } |
| 4779 deltatime = 0; | |
| 4780 remainingSec = LogDeltaCharge(speed); | |
| 4781 speed = 0; | |
| 859 | 4782 lastTick = curTick; |
| 672 | 4783 } |
| 4784 } | |
| 4785 textpointer += snprintf(&text[textpointer],50,"\n\r"); | |
| 4786 textpointer += snprintf(&text[textpointer],50,"\001%c\n\r",TXT_ChargeHour); | |
| 4787 | |
| 4788 GFX_write_string(&FontT24, &t7cY0free, text, 1); | |
| 4789 | |
| 4790 hoursto100 = remainingSec / 3600; /* reduce to hours */ | |
| 4791 if(hoursto100 < 1) | |
| 4792 { | |
| 4793 indicator = '<'; | |
| 4794 hoursto100 = 1; | |
| 4795 } | |
|
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4796 |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4797 if(!pSettings->FlipDisplay) |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4798 { |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4799 t7cY0free.WindowY0 -= 52; |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4800 } |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4801 else |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4802 { |
| 962 | 4803 t7cY0free.WindowY1 += 52; |
|
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4804 } |
| 672 | 4805 |
| 4806 if((stateUsed->lifeData.battery_charge > 0) && (stateUsed->chargeStatus != CHARGER_off)) | |
| 4807 { | |
| 4808 snprintf(text,60, | |
| 693 | 4809 "\001%0.2f\016\016%%\017\n\r" |
| 672 | 4810 "\001%c%d\n\r" |
| 4811 ,stateUsed->lifeData.battery_charge | |
| 4812 ,indicator | |
| 4813 ,hoursto100); | |
| 4814 } | |
| 4815 else | |
| 4816 { | |
| 4817 snprintf(text,60, | |
| 4818 "\001---\n\r" | |
| 4819 "\001---\n\r"); | |
| 4820 } | |
| 4821 GFX_write_string(&FontT42, &t7cY0free, text, 1); | |
| 4822 | |
| 4823 wintemp.left = CUSTOMBOX_LINE_LEFT + CUSTOMBOX_INSIDE_OFFSET + 50; | |
| 4824 wintemp.right = wintemp.left + CUSTOMBOX_SPACE_INSIDE - 100; | |
| 4825 | |
| 4826 | |
| 4827 if(!pSettings->FlipDisplay) | |
| 4828 { | |
| 4829 wintemp.top = 480 - t7l1.WindowY0 + 115; | |
| 4830 wintemp.bottom = wintemp.top + 100; | |
| 4831 } | |
| 4832 else | |
| 4833 { | |
|
675
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4834 wintemp.top = t7l1.WindowY1 + 102; |
|
3c4a3d78ff2b
Bugfix: Missing flip screen support for charge view
Ideenmodellierer
parents:
672
diff
changeset
|
4835 wintemp.bottom = wintemp.top + 100; |
| 672 | 4836 } |
| 4837 | |
| 4838 start.x = wintemp.left-5; | |
| 4839 start.y = 90; | |
| 4840 | |
| 4841 stop.x = wintemp.right + 5 - start.x; | |
| 4842 stop.y = 100; | |
| 4843 GFX_draw_box(&t7screen, start, stop,1, CLUT_Font020); | |
| 4844 | |
| 4845 if(stateUsed->chargeStatus != CHARGER_off) | |
| 4846 { | |
| 4847 GFX_graph_print(&t7screen, &wintemp, 1,1,0, 10, getChargeLog(), 60, CLUT_Font030, NULL); | |
| 4848 } | |
| 4849 else | |
| 4850 { | |
| 4851 GFX_graph_print(&t7screen, &wintemp, 1,1,0, 10, getChargeLog(), 60, CLUT_Font031, NULL); | |
| 4852 } | |
| 4853 | |
| 4854 } | |
|
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
|
4855 |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4856 |
|
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
|
4857 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
|
4858 { |
|
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
|
4859 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
|
4860 } |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4861 |
| 882 | 4862 void t7_drawAcentGraph(uint8_t color) |
| 4863 { | |
| 4864 point_t start, stop; | |
| 4865 | |
| 4866 SSettings* pSettings; | |
| 4867 pSettings = settingsGetPointer(); | |
| 4868 | |
| 4869 | |
| 4870 if(!pSettings->FlipDisplay) | |
| 4871 { | |
| 4872 start.y = t7l1.WindowY0 - 1; | |
| 4873 } | |
| 4874 else | |
| 4875 { | |
| 4876 start.y = t7l3.WindowY0 - 25; | |
| 4877 } | |
| 4878 | |
| 4879 for(int i = 0; i<4;i++) | |
| 4880 { | |
| 4881 start.y += 5*6; | |
| 4882 stop.y = start.y; | |
| 4883 start.x = CUSTOMBOX_LINE_LEFT - 1; | |
| 4884 stop.x = start.x - 17; | |
| 4885 GFX_draw_line(&t7screen, start, stop, 0); | |
| 4886 // start.x = CUSTOMBOX_LINE_RIGHT + 2; old right too | |
| 4887 // stop.x = start.x + 17; | |
| 4888 // GFX_draw_line(&t7screen, start, stop, 0); | |
| 4889 } | |
| 4890 // new thick bar design Sept. 2015 | |
| 4891 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 3 - 5; | |
| 4892 stop.x = start.x; | |
| 4893 if(!pSettings->FlipDisplay) | |
| 4894 { | |
| 4895 start.y = t7l1.WindowY0 - 1; | |
| 4896 } | |
| 4897 else | |
| 4898 { | |
| 4899 start.y = t7l3.WindowY0 - 25; | |
| 4900 } | |
| 4901 stop.y = start.y + (uint16_t)(stateUsed->lifeData.ascent_rate_meter_per_min * 6); | |
| 4902 stop.y -= 3; // wegen der Liniendicke von 12 anstelle von 9 | |
| 4903 if(stop.y >= 470) | |
| 4904 stop.y = 470; | |
| 4905 start.y += 7; // starte etwas weiter oben | |
| 4906 if(color == 0) | |
| 4907 { | |
| 4908 color = CLUT_EverythingOkayGreen; /* do not use white color for drawing graph */ | |
| 4909 } | |
| 4910 | |
| 4911 GFX_draw_thick_line(12,&t7screen, start, stop, color); | |
| 4912 } | |
| 4913 | |
| 915 | 4914 #define ASCENT_GRAPH_YPIXEL 110 |
| 4915 | |
| 882 | 4916 |
| 907 | 4917 uint8_t t7_drawSlowExitGraph() /* this function is only called if diver is below last last stop depth */ |
| 882 | 4918 { |
| 4919 static uint16_t countDownSec = 0; | |
| 945 | 4920 uint8_t drawingMeterStep; |
| 882 | 4921 static float exitDepthMeter = 0.0; |
| 4922 | |
| 4923 uint8_t index = 0; | |
| 945 | 4924 uint8_t color = 0; |
| 882 | 4925 point_t start, stop; |
| 4926 | |
| 4927 SSettings* pSettings; | |
| 4928 pSettings = settingsGetPointer(); | |
| 4929 | |
| 945 | 4930 |
| 4931 if(calculateSlowExit(&countDownSec, &exitDepthMeter, &color)) /* graph to be drawn? */ | |
| 882 | 4932 { |
| 945 | 4933 if(!pSettings->FlipDisplay) |
| 882 | 4934 { |
| 945 | 4935 start.y = t7l1.WindowY0 - 1; |
| 882 | 4936 } |
| 945 | 4937 else |
| 4938 { | |
| 4939 start.y = t7l3.WindowY0 - 25; | |
| 4940 } | |
| 4941 drawingMeterStep = ASCENT_GRAPH_YPIXEL / pSettings->last_stop_depth_meter; /* based on 120 / 4 = 30 of standard ascent graph */ | |
| 4942 for(index = 0; index < pSettings->last_stop_depth_meter; index++) /* draw meter indicators */ | |
| 882 | 4943 { |
| 945 | 4944 start.y += drawingMeterStep; |
| 4945 stop.y = start.y; | |
| 4946 start.x = CUSTOMBOX_LINE_LEFT - 1; | |
| 4947 stop.x = start.x - 38; | |
| 4948 GFX_draw_line(&t7screen, start, stop, 0); | |
| 4949 } | |
| 4950 | |
| 4951 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 20; | |
| 4952 stop.x = start.x; | |
| 4953 if(!pSettings->FlipDisplay) | |
| 4954 { | |
| 4955 start.y = t7l1.WindowY0 + ASCENT_GRAPH_YPIXEL + 5; | |
| 882 | 4956 } |
| 945 | 4957 else |
| 4958 { | |
| 4959 start.y = t7l3.WindowY0 - 25 + ASCENT_GRAPH_YPIXEL + 5; | |
| 4960 } | |
| 4961 stop.y = start.y - countDownSec * (ASCENT_GRAPH_YPIXEL / (float)(pSettings->slowExitTime * 60.0)); | |
| 4962 if(stop.y >= 470) stop.y = 470; | |
| 4963 if(!pSettings->FlipDisplay) | |
| 4964 { | |
| 4965 stop.y += 5; | |
| 4966 } | |
| 4967 GFX_draw_thick_line(15,&t7screen, start, stop, 3); | |
| 4968 /* mark diver depth */ | |
| 4969 start.x = CUSTOMBOX_LINE_LEFT - CUSTOMBOX_OUTSIDE_OFFSET - 30; | |
| 4970 stop.x = start.x + 24; | |
| 4971 | |
| 4972 start.y = start.y - (stateUsed->lifeData.depth_meter * (ASCENT_GRAPH_YPIXEL) / pSettings->last_stop_depth_meter); | |
| 4973 stop.y = start.y; | |
| 4974 GFX_draw_thick_line(10,&t7screen, start, stop, 9); | |
| 882 | 4975 } |
|
954
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
4976 else |
|
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
4977 { |
|
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
4978 color = 0xff; |
|
4e4fbd73e329
Slow exit graph draw normal ascent if slow exit is inactive:
Ideenmodellierer
parents:
951
diff
changeset
|
4979 } |
| 882 | 4980 return color; |
| 4981 } | |
|
979
e7cd7ffd1879
Add proper string termination and fix space. (mikeller)
heinrichsweikamp
parents:
962
diff
changeset
|
4982 |
|
805
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4983 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
|
4984 { |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4985 SSettings *settings = settingsGetPointer(); |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4986 |
|
dd7ce655db26
Adds a simple countdown timer, available as a custom view in surface and dive mode.
heinrichsweikamp
parents:
799
diff
changeset
|
4987 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
|
4988 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
|
4989 } |
