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