Mercurial > public > ostc4
annotate Discovery/Src/show_logbook.c @ 946:80ae8ea7f0a0 Evo_2_23
GNSS set to full power at startup:
In case of an reset the module would continue in sleep mode if it was in this state. To avoid this the module will now always set to full power at startup of the RTE.
author | Ideenmodellierer |
---|---|
date | Sun, 22 Dec 2024 20:52:08 +0100 |
parents | 6d8ae8fbccf5 |
children |
rev | line source |
---|---|
38 | 1 /////////////////////////////////////////////////////////////////////////////// |
2 /// -*- coding: UTF-8 -*- | |
3 /// | |
4 /// \file Discovery/Src/show_logbook.c | |
5 /// \brief show_logbook_logbook_show_log_page1 / | |
6 /// \author Heinrichs Weikamp gmbh | |
7 /// \date 07-July-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 #include "base.h" | |
30 #include "logbook.h" | |
31 #include "gfx_colors.h" | |
32 #include "gfx_engine.h" | |
33 #include "gfx_fonts.h" | |
34 #include "show_logbook.h" | |
35 #include "unit.h" | |
454
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
36 #include "configuration.h" |
596
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
37 #include "logbook_miniLive.h" |
662 | 38 #include "text_multilanguage.h" |
38 | 39 |
40 #include <stdint.h> | |
41 #include <stdio.h> | |
42 #include <stdlib.h> // for abs() | |
43 | |
484 | 44 #define LOG_BORDER_OFFSET (50u) /* text offset from left / right display to text start/end */ |
45 | |
38 | 46 /* Private variables ---------------------------------------------------------*/ |
47 | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
48 static GFX_DrawCfgScreen tLOGscreen; |
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
49 static GFX_DrawCfgScreen tLOGbackground; |
38 | 50 |
51 | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
52 static void print_gas_name(char* output,uint8_t lengh,uint8_t oxygen,uint8_t helium); |
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
53 static int16_t get_colour(int16_t color); |
38 | 54 |
596
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
55 static uint8_t active_log_page = 1; |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
56 static uint8_t active_log_offset = 0; |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
57 |
38 | 58 /* Overview */ |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
59 static void show_logbook_logbook_show_log_page1(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards); |
38 | 60 /* Temperature */ |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
61 static void show_logbook_logbook_show_log_page2(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards); |
38 | 62 /* Gas List */ |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
63 static void show_logbook_logbook_show_log_page3(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards); |
38 | 64 /* ppO2 */ |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
65 static void show_logbook_logbook_show_log_page4(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards); |
38 | 66 |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
67 static inline uint32_t MaxU32LOG(uint32_t a, uint32_t b) |
38 | 68 { |
69 return((a>b)?a:b); | |
70 } | |
71 | |
72 /** | |
73 ****************************************************************************** | |
74 * @brief GFX write label. / print coordinate system & depth graph | |
763
aa6006975e76
increase HAL_Delay to 10ms for cold-start-button reset
heinrichsweikamp
parents:
662
diff
changeset
|
75 * @author heinrichs weikamp gmbh |
38 | 76 * @version V0.0.1 |
77 * @date 07-July-2014 | |
78 ****************************************************************************** | |
79 * | |
80 * @param hgfx: | |
81 * @param window: WindowGimpStyle | |
82 * @param mode: different modes depending witch page uses the function | |
83 * @param dataLength: | |
84 * @param depthdata: | |
85 * @param colordata: 1 | |
86 * @retval None | |
87 */ | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
88 static void show_logbook_draw_depth_graph(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards, SWindowGimpStyle* window, short mode, uint16_t dataLength, uint16_t* depthdata, uint8_t * colordata, uint16_t * decostopdata) |
38 | 89 { |
90 SLogbookHeader logbookHeader; | |
91 SWindowGimpStyle wintemp = *window; | |
92 SWindowGimpStyle winsmal; | |
93 logbook_getHeader(StepBackwards, &logbookHeader); | |
94 int divetime = logbookHeader.diveTimeMinutes; | |
95 int maxDepth = logbookHeader.maxDepth/100; | |
96 | |
97 int16_t saveBottom = wintemp.bottom; | |
98 int16_t saveTop = 0 - wintemp.top; | |
99 | |
100 //*** Horisontal (depth) *************************************************** | |
101 | |
102 //--- calc depth lines and labels -- | |
103 int vscale = 0; | |
104 int vstep = 0; | |
105 | |
106 vstep = maxDepth / 5; | |
107 vscale = vstep * 5; | |
108 if(vscale < maxDepth) | |
109 { | |
110 vstep += 1; | |
111 vscale += 5; | |
112 } | |
113 /* | |
114 if(vscale < | |
115 for(int i=1; i <= 20; i++) | |
116 { | |
117 vscale = i * 25; | |
118 vstep = i * 5; | |
119 if( vscale > maxDepth) | |
120 break; | |
121 } | |
122 */ | |
123 //--- print depth labels --- | |
124 winsmal.left = wintemp.left - 48; | |
125 winsmal.top = wintemp.top - 3; | |
126 winsmal.right = wintemp.left -1; | |
127 winsmal.bottom = winsmal.top + 16; | |
128 | |
567 | 129 if(settingsGetPointer()->nonMetricalSystem) |
130 { | |
131 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,CLUT_GasSensor1,"[ft]"); | |
132 } | |
133 else | |
134 { | |
135 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,CLUT_GasSensor1,"[m]"); | |
136 } | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
137 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
138 // winsmal.left = wintemp.left - 48; |
632 | 139 char msg[10]; |
38 | 140 float deltaline = ((float)(wintemp.bottom - wintemp.top))/5; |
141 for(int i = 1; i<=5; i++) | |
142 { | |
143 winsmal.top = wintemp.top + deltaline * i - 14; | |
144 winsmal.bottom = winsmal.top + 16; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
145 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
146 // winsmal.right = wintemp.left - 2; |
632 | 147 snprintf(msg,10,"%i",unit_depth_integer(i * vstep)); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
148 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,CLUT_GasSensor1,msg); |
38 | 149 } |
150 | |
151 //vertical (Time) ******************************************************************* | |
152 //--- calc time lines and labels -- | |
153 int timestep = 0; | |
154 int lines = 0; | |
155 for(int i=1; i <= 60; i++) | |
156 { | |
157 timestep = i * 5; | |
158 lines = divetime/timestep; | |
159 if(lines < 7) | |
160 { | |
161 break; | |
162 } | |
163 } | |
164 //*** print coordinate system grit *** | |
165 int winwidth = wintemp.right - wintemp.left; | |
166 float vdeltaline = ((float)(winwidth * timestep))/divetime; | |
167 GFX_draw_Grid( &tLOGbackground,wintemp, 0, vdeltaline, 5,0, CLUT_LogbookGrid); | |
168 | |
169 | |
170 //--- print time labels --- | |
171 winsmal.left = wintemp.left; | |
172 winsmal.top = wintemp.top - 40; | |
173 winsmal.right = winsmal.left + 60; | |
174 winsmal.bottom = winsmal.top + 16; | |
175 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
176 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,CLUT_GasSensor1,"min"); |
38 | 177 for(int i = 1; i<=lines; i++) |
178 { | |
179 winsmal.left= wintemp.left + vdeltaline * i - 15; | |
180 winsmal.right = winsmal.left + 30; | |
632 | 181 snprintf(msg,10,"%3i",i * timestep); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
182 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,CLUT_GasSensor1,msg); |
38 | 183 } |
184 winsmal.left = wintemp.left;// - 9; | |
185 winsmal.top = wintemp.top - 40; | |
186 winsmal.right = winsmal.left + 60; | |
187 | |
188 //--- print depth graph --- | |
189 //adapt window | |
190 int winhight = wintemp.bottom - wintemp.top; | |
191 int newhight = (winhight * maxDepth)/vscale; | |
192 wintemp.bottom = wintemp.top + newhight; | |
193 //wintemp.fontcolor = LOGBOOK_GRAPH_DEPTH; | |
194 | |
195 int datamax = 0; | |
196 for(int i=0;i<dataLength;i++) | |
197 { | |
198 if(depthdata[i]>datamax) | |
199 datamax = depthdata[i]; | |
200 } | |
201 | |
202 if(decostopdata) | |
203 { | |
204 if(dataLength <= 1000) | |
205 { | |
206 uint8_t colortemp[1000]; | |
207 | |
208 for(int i = 0; i<dataLength; i++) | |
209 { | |
210 if(decostopdata[i] > depthdata[i]) | |
211 { | |
212 colortemp[i] = CLUT_WarningRed; | |
213 } | |
214 else | |
215 { | |
216 colortemp[i] = CLUT_NiceGreen; | |
217 } | |
218 } | |
166
255eedad4155
cleanup: get rid of some compile warnings
Jan Mulder <jlmulder@xs4all.nl>
parents:
150
diff
changeset
|
219 GFX_graph_print(hgfx,&wintemp,saveTop,1,0,datamax, decostopdata,dataLength, 0, colortemp); |
38 | 220 } |
221 else | |
222 GFX_graph_print(hgfx,&wintemp,saveTop,1,0,datamax, decostopdata,dataLength, CLUT_NiceGreen, NULL); | |
223 } | |
224 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
225 if(settingsGetPointer()->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
226 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
227 winsmal.right = 800 - wintemp.left; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
228 winsmal.left = 800 - wintemp.right; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
229 winsmal.bottom = wintemp.bottom; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
230 winsmal.top = wintemp.top; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
231 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
232 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
233 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
234 winsmal.right = wintemp.right; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
235 winsmal.left = wintemp.left; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
236 winsmal.bottom = wintemp.bottom; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
237 winsmal.top = wintemp.top; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
238 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
239 |
38 | 240 switch(mode) |
241 { | |
242 case 0: | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
243 GFX_graph_print(hgfx,&winsmal,0,1,0,datamax, depthdata,dataLength,CLUT_GasSensor1, NULL); |
38 | 244 break; |
245 case 1: | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
246 GFX_graph_print(hgfx,&winsmal,saveBottom,1,0,datamax, depthdata,dataLength,CLUT_GasSensor0,colordata); |
38 | 247 break; |
248 case 2: | |
249 if(*colordata) | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
250 GFX_graph_print(hgfx,&winsmal,0,1,0,datamax, depthdata,dataLength,CLUT_GasSensor0,colordata); |
38 | 251 else |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
252 GFX_graph_print(hgfx,&winsmal,0,1,0,datamax, depthdata,dataLength,CLUT_GasSensor1, NULL); |
38 | 253 } |
254 } | |
255 | |
256 | |
257 | |
258 /** | |
259 ****************************************************************************** | |
260 * @brief scaleAdapt | |
261 * @author heinrichs weikamp gmbh | |
262 * @version V0.0.1 | |
263 * @date 29-Nov-2016 | |
264 ****************************************************************************** | |
265 * | |
266 * @param ... | |
267 * @retval *OutputStepOfScale, *OutputMaxValueOnScale, *OutputTop, *OutputBottom | |
268 | |
269 * fit to multiples of 1�C (data format is 1/10�C) | |
270 */ | |
271 | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
272 static void scaleAdapt( int InputTop, int InputBottom, |
38 | 273 int16_t *OutputMinValue, int16_t *OutputMaxValue, int *OutputTop, int *OutputBottom, |
274 uint16_t *OutputStepOfScale, int16_t *OutputMaxValueOnScale) | |
275 { | |
276 // uint16_t oldScale; | |
277 uint16_t newScale; | |
278 // uint16_t diff_newScale; | |
279 | |
280 // int16_t oldMaxOnScale; | |
281 int16_t newMaxOnScale; | |
282 // int16_t diff_newMaxOnScale; | |
283 _Bool negativeMaxValue = 0; | |
284 | |
285 // float oldRange; | |
286 float newRange; | |
287 | |
288 float sizeOfScreen; | |
289 // float InputTopValue; | |
290 // float InputBottomValue; | |
291 float screenToRangeRatio; | |
292 float diffOutMaxToMaxOnScale; | |
293 float diffOutMinToMaxOnScale; | |
294 int positonOutputMaxValue; | |
295 int positonOutputMinValue; | |
296 | |
297 | |
298 // scale | |
299 // oldScale = *OutputStepOfScale; | |
300 newScale = *OutputStepOfScale + 9; | |
301 newScale /= 10; | |
302 newScale *= 10; | |
303 // diff_newScale = newScale - *OutputStepOfScale; | |
304 // oldRange = 5 * oldScale; | |
305 newRange = 5 * newScale; | |
306 *OutputStepOfScale = newScale; | |
307 | |
308 // MaxValueOnScale | |
309 // oldMaxOnScale = *OutputMaxValueOnScale; | |
310 if(OutputMaxValueOnScale < 0) | |
311 { | |
312 negativeMaxValue = 1; | |
313 newMaxOnScale = 0 - *OutputMaxValueOnScale; | |
314 } | |
315 else | |
316 { | |
317 negativeMaxValue = 0; | |
318 newMaxOnScale = *OutputMaxValueOnScale; | |
319 } | |
320 newMaxOnScale += 9; | |
321 newMaxOnScale /= 10; | |
322 newMaxOnScale *= 10; | |
323 if(negativeMaxValue) | |
324 { | |
325 // diff_newMaxOnScale = newMaxOnScale + *OutputMaxValueOnScale; | |
326 *OutputMaxValueOnScale = 0 - newMaxOnScale; | |
327 } | |
328 else | |
329 { | |
330 // diff_newMaxOnScale = newMaxOnScale - *OutputMaxValueOnScale; | |
331 *OutputMaxValueOnScale = newMaxOnScale; | |
332 } | |
333 | |
334 | |
335 // new coordinates | |
336 sizeOfScreen = 1 + InputBottom - InputTop; | |
337 // InputTopValue = *OutputMaxValueOnScale; | |
338 // InputBottomValue = InputTopValue + (6 * *OutputStepOfScale); | |
339 | |
340 screenToRangeRatio = sizeOfScreen / newRange; | |
341 diffOutMaxToMaxOnScale = abs(*OutputMaxValueOnScale) - abs(*OutputMaxValue); | |
342 // diffOutMinToMax = abs(*OutputMinValue - *OutputMaxValue); | |
343 diffOutMinToMaxOnScale = abs(*OutputMaxValueOnScale - *OutputMinValue); | |
344 | |
345 positonOutputMaxValue = (int)(diffOutMaxToMaxOnScale * screenToRangeRatio); | |
346 positonOutputMaxValue += *OutputTop; | |
347 positonOutputMinValue = (int)(diffOutMinToMaxOnScale * screenToRangeRatio); | |
348 positonOutputMinValue += *OutputTop; | |
349 // positonOutputMinValue = (int)(diffOutMinToMax * screenToRangeRatio); | |
350 // positonOutputMinValue += positonOutputMaxValue; | |
351 *OutputTop = positonOutputMaxValue; | |
352 *OutputBottom = positonOutputMinValue; | |
353 } | |
354 | |
355 | |
356 /** | |
357 ****************************************************************************** | |
358 * @brief scaleHelper | |
359 * @author heinrichs weikamp gmbh | |
360 * @version V0.0.1 | |
361 * @date 13-Oct-2016 | |
362 ****************************************************************************** | |
363 * | |
364 * @param hgfx: | |
365 * @retval None | |
366 | |
367 * pixel 50 oben | |
368 * pixel 439 unten | |
369 * pixel 390 gesamt h�he | |
370 | |
371 * for temperature, input is �C * 10 | |
372 */ | |
373 | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
374 static void scaleHelper( uint16_t InputDataLength, int16_t *InputDataArray, int InputTop, int InputBottom, |
38 | 375 int16_t *OutputMinValue, int16_t *OutputMaxValue, int *OutputTop, int *OutputBottom, |
376 uint16_t *OutputStepOfScale, int16_t *OutputMaxValueOnScale) | |
377 { | |
378 int32_t datamin = INT16_MAX; // 32 bit for delta calculation ( delta is unsigned -> value can be 2x INT16_MAX) | |
379 int32_t datamax = INT16_MIN; | |
380 uint16_t deltaMinMax = 1; | |
381 // uint16_t deltaMinMaxUsed = 1; | |
382 // uint16_t digits = 1; | |
383 // uint16_t scaler = 1; | |
384 uint32_t step = 1; | |
385 const int sizeOfScreen = InputBottom - InputTop; | |
386 float pixel2range = 1.0; | |
387 | |
388 // min, max, deltaMinMax, OutputMinValue, OutputMaxValue | |
389 for(uint16_t i = 0; i < InputDataLength; i++) | |
390 { | |
391 if(InputDataArray[i] > datamax) | |
392 datamax = InputDataArray[i]; | |
393 | |
394 if(InputDataArray[i] < datamin) | |
395 datamin = InputDataArray[i]; | |
396 } | |
397 | |
398 deltaMinMax = (uint16_t)(datamax - datamin); | |
399 | |
400 *OutputMinValue = (int16_t)datamin; | |
401 *OutputMaxValue = (int16_t)datamax; | |
402 | |
403 // step | |
404 step = deltaMinMax / 5; | |
405 while(deltaMinMax > (step * 5)) | |
406 { | |
407 step += 1; | |
408 } | |
409 pixel2range = ((float)sizeOfScreen) / (step * 5); | |
410 | |
411 *OutputStepOfScale = (uint16_t)step; | |
412 *OutputMaxValueOnScale = *OutputMaxValue; | |
413 *OutputTop = InputTop; | |
414 *OutputBottom = ((int)(pixel2range * deltaMinMax)) + *OutputTop; | |
415 } | |
416 | |
417 /** | |
418 ****************************************************************************** | |
419 * @brief show_logbook_logbook_show_log_page1 / | |
763
aa6006975e76
increase HAL_Delay to 10ms for cold-start-button reset
heinrichsweikamp
parents:
662
diff
changeset
|
420 * @author heinrichs weikamp gmbh |
38 | 421 * @version V0.0.1 |
422 * @date 07-July-2014 | |
423 ****************************************************************************** | |
424 * | |
425 * @param hgfx: | |
426 * @retval None | |
427 */ | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
428 static void show_logbook_logbook_show_log_page1(GFX_DrawCfgScreen *hgfx,uint8_t StepBackwards) |
38 | 429 { |
430 SWindowGimpStyle wintemp; | |
431 SWindowGimpStyle winsmal; | |
484 | 432 wintemp.left = LOG_BORDER_OFFSET; |
38 | 433 wintemp.right = 799 - wintemp.left; |
484 | 434 wintemp.top = LOG_BORDER_OFFSET; |
38 | 435 wintemp.bottom = 479 - 40; |
567 | 436 char timeSuffix; |
437 uint8_t hoursToDisplay; | |
38 | 438 |
439 SLogbookHeader logbookHeader; | |
440 logbook_getHeader(StepBackwards ,&logbookHeader); | |
441 | |
442 uint16_t depthdata[1000] = { 0 }; | |
443 uint8_t gasdata[1000] = { 0 }; | |
444 int16_t tempdata[1000] = { 0 }; | |
454
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
445 uint16_t tankdata[1000] = { 0 }; |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
446 |
941 | 447 SGnssCoord posCoord; |
448 posCoord.fLat = 0.0; | |
449 posCoord.fLon = 0.0; | |
450 | |
454
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
451 #ifdef ENABLE_BOTTLE_SENSOR |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
452 uint16_t bottlePressureStart = 0; |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
453 uint16_t bottlePressureEnd = 0; |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
454 uint16_t loop = 0; |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
455 #endif |
38 | 456 |
457 uint16_t dataLength = 0; | |
941 | 458 dataLength = logbook_readSampleData(StepBackwards, 1000, depthdata,gasdata, tempdata, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tankdata, &posCoord, NULL); |
38 | 459 |
460 //Print Date | |
461 uint8_t year = logbookHeader.dateYear; | |
462 uint8_t month = logbookHeader.dateMonth; | |
463 uint8_t day = logbookHeader.dateDay; | |
464 char text[40]; | |
465 snprintf(text, 20, "20%02i-%02i-%02i", year, month, day); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
466 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
467 Gfx_write_label_var(hgfx, 30, 250,10, &FontT42,CLUT_GasSensor1,text); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
468 |
941 | 469 #if defined ENABLE_GNSS_SUPPORT || defined ENABLE_GPIO_V2 |
470 if((posCoord.fLat != 0.0) || (posCoord.fLon != 0.0)) | |
471 { | |
472 snprintf(text, 20, "%2.4f - %2.4f", posCoord.fLat, posCoord.fLon ); | |
473 Gfx_write_label_var(hgfx, 300, 500,10, &FontT42,CLUT_GasSensor1,text); | |
474 } | |
475 #endif | |
476 | |
38 | 477 |
478 // Print logbook number with offset | |
479 if(settingsGetPointer()->logbookOffset) | |
480 { | |
481 int32_t logNumber; | |
482 logNumber = settingsGetPointer()->logbookOffset - StepBackwards; | |
483 if(logNumber < 0) | |
484 logNumber = 0; | |
485 else | |
486 if(logNumber > 9999) | |
487 logNumber = 9999; | |
488 | |
457 | 489 snprintf(text,20,"#%ld",logNumber); |
38 | 490 Gfx_write_label_var(hgfx, 300, 590,10, &FontT42,CLUT_GasSensor1,text); |
491 } | |
492 | |
493 //Print time | |
494 uint8_t minute = logbookHeader.timeMinute; | |
567 | 495 |
496 if (settingsGetPointer()->amPMTime) | |
497 { | |
498 if (logbookHeader.timeHour > 11) | |
499 { | |
500 timeSuffix = 'P'; | |
501 } | |
502 else | |
503 { | |
504 timeSuffix = 'A'; | |
505 } | |
506 | |
507 if (logbookHeader.timeHour % 12 == 0) | |
508 { | |
509 hoursToDisplay = 12; | |
510 } | |
511 else | |
512 { | |
513 hoursToDisplay = (logbookHeader.timeHour % 12); | |
514 } | |
515 | |
516 snprintf(text,20,"\002%02i:%02i %cM",hoursToDisplay,minute,timeSuffix); | |
517 } | |
518 else | |
519 { | |
520 hoursToDisplay = logbookHeader.timeHour; | |
521 snprintf(text,20,"\002%02i:%02i",hoursToDisplay,minute); | |
522 } | |
523 | |
524 | |
484 | 525 Gfx_write_label_var(hgfx, 600, wintemp.right,10, &FontT42,CLUT_GasSensor1,text); |
38 | 526 |
527 //Print Dive Mode (OC/CCR/...) | |
528 switch(logbookHeader.diveMode) | |
529 { | |
530 case DIVEMODE_OC: | |
662 | 531 snprintf(text,20,"%c",TXT_OpenCircuit); |
38 | 532 break; |
533 case DIVEMODE_CCR: | |
662 | 534 snprintf(text,20,"%c",TXT_ClosedCircuit); |
38 | 535 break; |
536 case DIVEMODE_Gauge: | |
662 | 537 snprintf(text,20,"%c",TXT_Gauge); |
38 | 538 break; |
539 case DIVEMODE_Apnea: | |
662 | 540 snprintf(text,20,"%c",TXT_Apnoe); |
541 break; | |
542 case DIVEMODE_PSCR: | |
543 snprintf(text,20,"%c",TXT_PSClosedCircuit); | |
38 | 544 break; |
545 } | |
546 Gfx_write_label_var(hgfx, 30, 250,60, &FontT42,CLUT_GasSensor4,text); | |
547 | |
548 // Decomodel | |
549 if(logbookHeader.diveMode <= DIVEMODE_CCR) | |
550 { | |
551 switch(logbookHeader.decoModel) | |
552 { | |
553 case GF_MODE: | |
554 snprintf(text,20,"\002GF%u/%u",logbookHeader.gfLow_or_Vpm_conservatism,logbookHeader.gfHigh); | |
484 | 555 break; |
38 | 556 case VPM_MODE: |
557 snprintf(text,20,"\002VPM +%u",logbookHeader.gfLow_or_Vpm_conservatism); | |
484 | 558 break; |
559 default: | |
560 snprintf(text,20," "); /* no information to be displayed */ | |
561 break; | |
38 | 562 } |
484 | 563 Gfx_write_label_var(hgfx, 500, wintemp.right,60, &FontT42,CLUT_GasSensor1,text); |
38 | 564 } |
565 | |
566 //Write Dive Time | |
567 int minutes = logbookHeader.diveTimeMinutes; | |
568 int seconds = logbookHeader.diveTimeSeconds; | |
569 int hours = minutes/60; | |
570 minutes -= hours * 60; | |
571 snprintf(text,20,"%02i:%02i:%02i",hours,minutes,seconds); | |
572 Gfx_write_label_var(hgfx, 30, 250,360, &FontT42,CLUT_GasSensor1,text); | |
573 Gfx_write_label_var(hgfx, 200, 250,360, &FontT42,CLUT_GasSensor4,"s"); | |
574 | |
575 // Max Depth | |
576 int maxdepth =logbookHeader.maxDepth/100; | |
577 int maxdepth_dcm = logbookHeader.maxDepth/10 - maxdepth * 10; | |
578 int top = 150; | |
579 if(settingsGetPointer()->nonMetricalSystem) | |
580 { | |
581 float maxDepthFeet = 0; | |
582 maxDepthFeet = unit_depth_float(((float)logbookHeader.maxDepth)/100); | |
583 snprintf(text,20,"%.0f",maxDepthFeet); | |
584 } | |
585 else | |
586 { | |
587 snprintf(text,20,"%i.%i",maxdepth,maxdepth_dcm); | |
588 } | |
589 Gfx_write_label_var(hgfx, 30, 250,top, &FontT42,CLUT_GasSensor1,text); | |
590 winsmal.left = 30; | |
591 winsmal.top = top -3; | |
592 winsmal.bottom = winsmal.top + FontT42.height; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
593 |
38 | 594 if(maxdepth < 10) |
595 { | |
596 winsmal.left = 137; | |
597 } | |
598 else if(maxdepth < 100) | |
599 { | |
600 winsmal.left = 151; | |
601 } | |
602 else | |
603 { | |
604 winsmal.left = 147; | |
605 } | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
606 winsmal.right = winsmal.left + 50; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
607 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
608 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,top, &FontT24,CLUT_GasSensor4,"max"); |
38 | 609 snprintf(text,3,"%c%c" |
610 , unit_depth_char1() | |
611 , unit_depth_char2() | |
612 ); | |
613 Gfx_write_label_var(hgfx, winsmal.left - 37, 250,top, &FontT42,CLUT_GasSensor4,text); | |
614 | |
615 // Average Depth | |
616 int avrdepth =logbookHeader.averageDepth_mbar/100; | |
617 int avrdepth_dcm = logbookHeader.averageDepth_mbar/10 - avrdepth * 10; | |
618 top = 200; | |
619 if(settingsGetPointer()->nonMetricalSystem) | |
620 { | |
621 float avgDepthFeet = 0; | |
622 avgDepthFeet = unit_depth_float(((float)logbookHeader.averageDepth_mbar)/100); | |
623 snprintf(text,20,"%.0f",avgDepthFeet); | |
624 } | |
625 else | |
626 { | |
627 snprintf(text,20,"%i.%i",avrdepth,avrdepth_dcm); | |
628 } | |
629 Gfx_write_label_var(hgfx, 30, 250,top, &FontT42,CLUT_GasSensor1,text); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
630 |
38 | 631 winsmal.left = 30; |
632 winsmal.top = top -3; | |
633 winsmal.bottom = winsmal.top + FontT42.height; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
634 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
635 /* put avg behind previous string */ |
38 | 636 if(avrdepth < 10) |
637 { | |
638 winsmal.left = 137 ; | |
639 } | |
640 else if(avrdepth < 100) | |
641 { | |
642 winsmal.left = 151; | |
643 } | |
644 else | |
645 { | |
646 winsmal.left = 147; | |
647 } | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
648 winsmal.right = winsmal.left + 50; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
649 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
650 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,CLUT_GasSensor4,"avg"); |
38 | 651 snprintf(text,3,"%c%c" |
652 , unit_depth_char1() | |
653 , unit_depth_char2() | |
654 ); | |
655 Gfx_write_label_var(hgfx, winsmal.left - 37, 250,top, &FontT42,CLUT_GasSensor4,text); | |
656 // Temperature | |
657 top+= 50; | |
658 float temp_Temperature; | |
659 uint16_t start; | |
660 temp_Temperature = ((float)logbookHeader.minTemp)/10; | |
661 snprintf(text,20,"%.1f",unit_temperature_float(temp_Temperature)); | |
662 Gfx_write_label_var(hgfx, 30, 250,top, &FontT42,CLUT_GasSensor1,text); | |
663 | |
664 if(settingsGetPointer()->nonMetricalSystem) | |
665 start = 121; | |
666 else if((logbookHeader.minTemp >= 0) && (logbookHeader.minTemp < 10)) | |
667 start = 100; | |
668 else if((logbookHeader.minTemp >= -10) && (logbookHeader.minTemp < 100)) | |
669 start = 114; | |
670 else | |
671 start = 121; | |
672 | |
673 text[0] = '\140'; | |
674 if(settingsGetPointer()->nonMetricalSystem) | |
675 text[1] = 'F'; | |
676 else | |
677 text[1] = 'C'; | |
678 text[2] = 0; | |
679 | |
680 Gfx_write_label_var(hgfx, start, 300,top, &FontT42,CLUT_GasSensor4,text); | |
681 | |
682 // CNS | |
683 snprintf(text,20,"CNS: %i %%",logbookHeader.maxCNS); | |
150
097d7146b779
Place CNS and pressure within the screen (avoid clipping)
Ideenmodellierer
parents:
115
diff
changeset
|
684 Gfx_write_label_var(hgfx, 30, 250,440, &FontT42,CLUT_GasSensor1,text); |
38 | 685 |
686 // Surface Pressure | |
687 // snprintf(text,20,"\001%i\016\016 mbar",logbookHeader.surfacePressure_mbar); | |
688 // Gfx_write_label_var(hgfx,300,500,750, &FontT42,CLUT_GasSensor1,text); | |
689 // snprintf(text,40,"%i\016\016 mbar\017 (%i\016\016 m\017)",logbookHeader.surfacePressure_mbar, unit_SeaLevelRelation_integer(logbookHeader.surfacePressure_mbar)); | |
102
4276d56eb37c
hPa instead of mbar, enabled Spanish language
heinrichsweikamp
parents:
38
diff
changeset
|
690 snprintf(text,40,"%i\016\016 hPa\017",logbookHeader.surfacePressure_mbar); |
150
097d7146b779
Place CNS and pressure within the screen (avoid clipping)
Ideenmodellierer
parents:
115
diff
changeset
|
691 Gfx_write_label_var(hgfx,320,600,440, &FontT42,CLUT_GasSensor1,text); |
38 | 692 |
596
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
693 |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
694 /* show symbol in case log entry is marked for usage in profile custom view */ |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
695 snprintf(text,10,"\002>"); |
616
a594a778c883
Development bugfix: show replay symbol only for the selected dive:
Ideenmodellierer
parents:
610
diff
changeset
|
696 if(StepBackwards == getReplayOffset()) |
596
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
697 { |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
698 Gfx_write_label_var(hgfx,750,799,440, &FontT42,CLUT_GasSensor1,text); |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
699 } |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
700 else |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
701 { |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
702 Gfx_write_label_var(hgfx,750,799,440, &FontT42,CLUT_MenuTopBackground,text); |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
703 } |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
704 |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
705 |
454
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
706 /* Show tank info */ |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
707 #ifdef ENABLE_BOTTLE_SENSOR |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
708 for(loop = 0; loop < dataLength; loop++) |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
709 { |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
710 if((bottlePressureStart == 0) && (tankdata[loop] != 0)) /* find first pressure value */ |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
711 { |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
712 bottlePressureStart = tankdata[loop]; |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
713 } |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
714 if((tankdata[loop] != 0)) /* store last pressure value */ |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
715 { |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
716 bottlePressureEnd = tankdata[loop]; |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
717 } |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
718 } |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
719 if(bottlePressureStart != 0) |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
720 { |
484 | 721 snprintf(text,40,"\002%i | %i\016\016 Bar\017",bottlePressureStart,bottlePressureEnd); |
722 Gfx_write_label_var(hgfx,450,wintemp.right,440, &FontT42,CLUT_GasSensor1,text); | |
454
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
723 } |
5a633dece17a
Reactivated samples for bottle pressure information:
ideenmodellierer
parents:
186
diff
changeset
|
724 #endif |
38 | 725 //--- print coordinate system & depth graph with gaschanges --- |
726 wintemp.left = 330; | |
727 wintemp.top = 160; | |
728 wintemp.bottom -= 40; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
729 |
38 | 730 show_logbook_draw_depth_graph(hgfx, StepBackwards, &wintemp, 1, dataLength, depthdata, gasdata, NULL); |
731 } | |
732 | |
733 | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
734 static void show_logbook_logbook_show_log_page2(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards) |
38 | 735 { |
736 //*** Page2: Depth and Temperature **** | |
737 | |
738 SWindowGimpStyle wintemp; | |
739 SWindowGimpStyle winsmal; | |
740 wintemp.left = 50; | |
741 wintemp.right = 799 - wintemp.left; | |
742 wintemp.top = 50; | |
743 wintemp.bottom = 479 - 40; | |
744 | |
745 SLogbookHeader logbookHeader; | |
746 | |
747 logbook_getHeader(StepBackwards,&logbookHeader); | |
748 uint16_t dataLength = 0; | |
749 uint16_t depthdata[1000]; | |
750 uint8_t gasdata[1000]; | |
751 int16_t tempdata[1000]; | |
752 uint16_t decoDepthdata[1000]; | |
753 uint16_t *pDecoDepthData = 0; | |
754 | |
941 | 755 dataLength = logbook_readSampleData(StepBackwards, 1000, depthdata,gasdata, tempdata, NULL, NULL, NULL, NULL, NULL, NULL, NULL, decoDepthdata, NULL, NULL, NULL); |
38 | 756 |
757 for(int i = 0; i<dataLength; i++) | |
758 { | |
759 if(decoDepthdata[i] >= 300) | |
760 { | |
761 pDecoDepthData = decoDepthdata; | |
762 break; | |
763 } | |
764 } | |
765 //--- print coordinate system & depth graph --- | |
766 show_logbook_draw_depth_graph(hgfx, StepBackwards, &wintemp, 0, dataLength, depthdata, gasdata, pDecoDepthData); | |
767 | |
768 //*** Temperature ************************************************* | |
769 | |
770 //--- print temperature labels --- | |
771 // input maxtmpline, tmpstep, deltaline | |
772 | |
773 winsmal.left = wintemp.right +6; | |
774 winsmal.top = wintemp.top - 3; | |
775 winsmal.right = wintemp.right + 30; | |
776 winsmal.bottom = winsmal.top + 16; | |
777 | |
567 | 778 if(settingsGetPointer()->nonMetricalSystem) |
779 { | |
780 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,CLUT_LogbookTemperature,"[F]"); | |
781 } | |
782 else | |
783 { | |
784 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,CLUT_LogbookTemperature,"[C]"); | |
785 } | |
38 | 786 |
787 int16_t minVal = 0; | |
788 int16_t maxVal = 0; | |
789 int newTop = 0; | |
790 int newBottom = 0; | |
791 uint16_t step = 0; | |
792 int16_t maxValTop = 0; | |
653 | 793 int16_t tmp = 0; |
38 | 794 |
795 scaleHelper(dataLength, tempdata, wintemp.top, wintemp.bottom, | |
796 &minVal, &maxVal, &newTop, &newBottom, | |
797 &step, &maxValTop); // newTop is wintemp.top | |
798 | |
799 scaleAdapt( wintemp.top, wintemp.bottom, | |
800 &minVal, &maxVal, &newTop, &newBottom, | |
801 &step, &maxValTop); | |
802 | |
803 // temperature in 1/10 �C | |
804 int deltaline = (1 + wintemp.bottom - wintemp.top)/5; | |
632 | 805 char msg[15]; |
653 | 806 |
807 /* temperature is provided in centi scaling => convert */ | |
808 maxValTop /= 10; | |
809 step /= 10; | |
810 | |
811 tmp = maxValTop; | |
38 | 812 for(int i = 1; i<=5; i++) |
813 { | |
814 tmp -= step; | |
815 winsmal.top = wintemp.top + deltaline * i - 14; | |
816 winsmal.bottom = winsmal.top + 16; | |
653 | 817 snprintf(msg,15,"%2i",unit_temperature_integer(tmp)); |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
818 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,CLUT_LogbookTemperature,msg); |
38 | 819 } |
820 | |
821 | |
822 //--- print temperature graph --- | |
823 // input tempdata[i], maxtmpline, mintmpline, maxTmp, minTmp, deltaline, wintemp.top, dataLength, datamax, | |
824 | |
825 //adapt window | |
826 wintemp.bottom = newBottom; | |
827 wintemp.top = newTop; | |
828 GFX_graph_print(hgfx,&wintemp,0,1,maxVal,minVal, (uint16_t *)tempdata,dataLength,CLUT_LogbookTemperature, NULL); | |
829 } | |
830 | |
831 | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
832 static void build_logbook_test(uint8_t page, uint8_t StepBackwards) |
38 | 833 { |
834 uint32_t lastScreen,lastBackground; | |
835 | |
836 lastScreen = tLOGscreen.FBStartAdress; | |
837 lastBackground = tLOGbackground.FBStartAdress; | |
838 | |
839 tLOGscreen.FBStartAdress = getFrame(16); | |
840 tLOGscreen.ImageHeight = 480; | |
841 tLOGscreen.ImageWidth = 800; | |
842 tLOGscreen.LayerIndex = 1; | |
843 | |
844 tLOGbackground.FBStartAdress = getFrame(17); | |
845 tLOGbackground.ImageHeight = 480; | |
846 tLOGbackground.ImageWidth = 800; | |
847 tLOGbackground.LayerIndex = 0; | |
848 switch(page) | |
849 { | |
850 case 1: | |
851 show_logbook_logbook_show_log_page1(&tLOGscreen,StepBackwards); | |
852 break; | |
853 case 2: | |
854 show_logbook_logbook_show_log_page2(&tLOGscreen,StepBackwards); | |
855 break; | |
856 case 3: | |
857 show_logbook_logbook_show_log_page3(&tLOGscreen,StepBackwards); | |
858 break; | |
859 case 4: | |
860 show_logbook_logbook_show_log_page4(&tLOGscreen,StepBackwards); | |
861 break; | |
862 } | |
863 | |
864 releaseFrame(16,lastScreen); | |
865 releaseFrame(17,lastBackground); | |
866 } | |
867 | |
868 | |
869 void show_logbook_test(_Bool firstPage, uint8_t StepBackwards) | |
870 { | |
871 if(firstPage) | |
872 { | |
596
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
873 active_log_page = 1; |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
874 active_log_offset = StepBackwards; |
38 | 875 } |
876 else | |
877 { | |
596
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
878 active_log_page++; |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
879 if(active_log_page > 4) |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
880 { |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
881 active_log_page = 1; |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
882 } |
38 | 883 } |
884 | |
596
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
885 build_logbook_test(active_log_page,StepBackwards); |
38 | 886 // GFX_ResetLayer(TOP_LAYER); |
887 // GFX_ResetLayer(BACKGRD_LAYER); | |
888 | |
889 set_globalState(StILOGSHOW); | |
890 GFX_SetFramesTopBottom(tLOGscreen.FBStartAdress, tLOGbackground.FBStartAdress,480); | |
891 } | |
892 | |
893 | |
894 void show_logbook_exit(void) | |
895 { | |
896 releaseFrame(16,tLOGscreen.FBStartAdress); | |
897 releaseFrame(17,tLOGbackground.FBStartAdress); | |
898 } | |
899 | |
900 | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
901 static void show_logbook_logbook_show_log_page3(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards) |
38 | 902 { |
903 SWindowGimpStyle wintemp; | |
904 SWindowGimpStyle winsmal; | |
662 | 905 uint8_t gasWasUsed[NUM_GASES * 2]; |
906 int16_t index = 0; | |
907 uint8_t loopMode = 0; | |
908 | |
38 | 909 wintemp.left = 50; |
910 wintemp.right = 799 - wintemp.left; | |
911 wintemp.top = 50; | |
912 wintemp.bottom = 479 - 40; | |
913 | |
914 SLogbookHeader logbookHeader; | |
915 | |
916 logbook_getHeader(StepBackwards, &logbookHeader); | |
917 uint16_t dataLength = 0; | |
918 uint16_t depthdata[1000]; | |
919 uint8_t gasdata[1000]; | |
941 | 920 dataLength = logbook_readSampleData(StepBackwards, 1000, depthdata,gasdata, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
38 | 921 |
662 | 922 char msg[15]; |
923 char gas_name[15]; | |
924 int j = 0; | |
925 | |
926 loopMode = isLoopMode(logbookHeader.diveMode); | |
927 | |
928 /* check if gas was used, independent from its active state */ | |
929 for(index = 0; index < NUM_GASES * 2; index++) | |
930 { | |
931 gasWasUsed[index] = 0; | |
932 } | |
933 for(index = 0; index < dataLength; index++) | |
934 { | |
935 if(loopMode) | |
936 { | |
937 if(gasdata[index] < NUM_GASES) /* the log entry starts with a ID in range 1..4 independend if diluent is used at start */ | |
938 { | |
939 gasdata[index] += NUM_GASES; | |
940 } | |
941 else | |
942 { | |
943 loopMode = 0; /* after the first gas change, no matter if diluent or bailout, the correct ID will be stored */ | |
944 } | |
945 } | |
946 if(gasdata[index] > 0) | |
947 { | |
948 gasWasUsed[gasdata[index]-1] = 1; /* The ID stored in the samples is starting with 1 (array[0] = gasID1) */ | |
949 } | |
950 else | |
951 { | |
952 gasWasUsed[0] = 1; | |
953 } | |
954 } | |
955 | |
38 | 956 //--- print coordinate system & depth graph with gaschanges --- |
957 show_logbook_draw_depth_graph(hgfx, StepBackwards, &wintemp, 1, dataLength, depthdata, gasdata, NULL); | |
958 | |
959 //--- print gas list --- | |
960 winsmal.left = wintemp.right - 190; | |
961 winsmal.right = winsmal.left + 150; | |
962 | |
662 | 963 loopMode = isLoopMode(logbookHeader.diveMode); |
964 for(index = (2 * NUM_GASES) -1; index >= 0; index--) | |
38 | 965 { |
662 | 966 if(gasWasUsed[index]) |
38 | 967 { |
968 j++; | |
662 | 969 if(j > 5) /* limit number of gases displayed to 5 */ |
970 { | |
971 break; | |
972 } | |
38 | 973 winsmal.top = wintemp.bottom - 5 - j * 26 ; |
974 winsmal.bottom = winsmal.top + 21 ; | |
662 | 975 uint8_t color = get_colour(index); |
38 | 976 |
662 | 977 if(loopMode) |
978 { | |
979 if(index < NUM_GASES) /* Switch to Bailout is not covered by log gas list */ | |
980 { | |
981 snprintf(gas_name,15,"Bailout"); | |
982 snprintf(msg,15,"G%d: %s",index +1, gas_name); | |
983 } | |
984 else | |
985 { | |
986 print_gas_name(gas_name,15,logbookHeader.gasordil[index-NUM_GASES].oxygen_percentage,logbookHeader.gasordil[index-NUM_GASES].helium_percentage); | |
987 snprintf(msg,15,"D%d: %s",index +1 - NUM_GASES, gas_name); | |
988 } | |
989 } | |
990 else | |
991 { | |
992 print_gas_name(gas_name,15,logbookHeader.gasordil[index].oxygen_percentage,logbookHeader.gasordil[index].helium_percentage); | |
993 snprintf(msg,15,"G%d: %s",index +1, gas_name); | |
994 } | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
995 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,color,msg); |
38 | 996 } |
997 } | |
998 | |
999 //--- define buttons --- | |
1000 /*if(*ghost_char_logfile_oxydata) | |
1001 button_start_single_action(surf1_menu_logbook_current_page, surf1_menu_logbook_show_log_page4, surf1_menu_logbook_show_log_next); | |
1002 else | |
1003 button_start_single_action(surf1_menu_logbook_current_page, surf1_menu_logbook_show_log_page1, surf1_menu_logbook_show_log_next); | |
1004 */ | |
1005 } | |
1006 | |
662 | 1007 static uint8_t check_data_array_empty(uint16_t* pdata) |
1008 { | |
1009 uint8_t ret = 0; | |
1010 uint8_t index = 0; | |
1011 uint8_t emptyCnt = 0; | |
1012 | |
1013 for (index=0; index < 10; index++) /* read the first 10 data points. If all are 0 then the array is rated as empty */ | |
1014 { | |
1015 if(*(pdata+index) == 0) | |
1016 { | |
1017 emptyCnt++; | |
1018 } | |
1019 } | |
1020 if(emptyCnt == 10) | |
1021 { | |
1022 ret = 1; | |
1023 } | |
1024 return ret; | |
1025 } | |
1026 | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
1027 static void show_logbook_logbook_show_log_page4(GFX_DrawCfgScreen *hgfx, uint8_t StepBackwards) |
38 | 1028 { SWindowGimpStyle wintemp; |
1029 SWindowGimpStyle winsmal; | |
1030 wintemp.left = 50; | |
1031 wintemp.right = 799 - wintemp.left; | |
1032 wintemp.top = 50; | |
1033 wintemp.bottom = 479 - 40; | |
1034 uint8_t color = 0; | |
1035 SLogbookHeader logbookHeader; | |
1036 | |
1037 logbook_getHeader(StepBackwards, &logbookHeader); | |
1038 uint16_t dataLength = 0; | |
1039 uint16_t depthdata[1000]; | |
1040 uint8_t gasdata[1000]; | |
1041 uint16_t ppO2data[1000]; | |
1042 uint16_t sensor2[1000]; | |
1043 uint16_t sensor3[1000]; | |
662 | 1044 uint16_t *setpoint = ppO2data; |
1045 uint16_t *sensor1 = ppO2data; | |
1046 uint8_t sensorDataAvailable[] = {0,0,0}; | |
38 | 1047 |
1048 | |
662 | 1049 if(!isLoopMode(logbookHeader.diveMode)) |
941 | 1050 dataLength = logbook_readSampleData(StepBackwards, 1000, depthdata,gasdata, NULL, ppO2data, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
38 | 1051 else |
1052 { | |
662 | 1053 switch(logbookHeader.CCRmode) |
1054 { | |
1055 case CCRMODE_FixedSetpoint: | |
941 | 1056 default: dataLength = logbook_readSampleData(StepBackwards, 1000, depthdata, gasdata, NULL, NULL, setpoint, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
662 | 1057 break; |
941 | 1058 case CCRMODE_Sensors: dataLength = logbook_readSampleData(StepBackwards, 1000, depthdata, gasdata, NULL, NULL, NULL, sensor1, sensor2, sensor3, NULL, NULL, NULL, NULL, NULL, NULL); |
662 | 1059 if(!check_data_array_empty(sensor1)) |
1060 { | |
1061 sensorDataAvailable[0] = 1; | |
1062 } | |
1063 if(!check_data_array_empty(sensor2)) | |
1064 { | |
1065 sensorDataAvailable[1] = 1; | |
1066 } | |
1067 if(!check_data_array_empty(sensor3)) | |
1068 { | |
1069 sensorDataAvailable[2] = 1; | |
1070 } | |
1071 if((logbookHeader.diveMode == DIVEMODE_PSCR) && (sensorDataAvailable[0] + sensorDataAvailable[1] + sensorDataAvailable[2] != 3)) /*insert sim data if not all three sensors are in use*/ | |
1072 { | |
1073 if(sensorDataAvailable[0] == 0) | |
1074 { | |
941 | 1075 logbook_readSampleData(StepBackwards, 1000, depthdata,gasdata, NULL, sensor1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
662 | 1076 sensorDataAvailable[0] = 1; |
1077 } | |
1078 else if(sensorDataAvailable[1] == 0) | |
1079 { | |
941 | 1080 logbook_readSampleData(StepBackwards, 1000, depthdata,gasdata, NULL, sensor2, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
662 | 1081 sensorDataAvailable[1] = 1; |
1082 } | |
1083 else if(sensorDataAvailable[2] == 0) | |
1084 { | |
941 | 1085 logbook_readSampleData(StepBackwards, 1000, depthdata,gasdata, NULL, sensor3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
662 | 1086 sensorDataAvailable[2] = 1; |
1087 } | |
1088 } | |
1089 break; | |
941 | 1090 case CCRMODE_Simulation: dataLength = logbook_readSampleData(StepBackwards, 1000, depthdata,gasdata, NULL, ppO2data, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
662 | 1091 break; |
1092 } | |
38 | 1093 } |
1094 | |
1095 | |
1096 //--- print coordinate system & depth graph with bailout--- | |
1097 show_logbook_draw_depth_graph(hgfx, StepBackwards, &wintemp, 0, dataLength, depthdata, gasdata, NULL); | |
1098 | |
1099 | |
1100 | |
1101 //*** Desciption at bottom of page *************************** | |
1102 winsmal.top = wintemp.bottom +2 ; | |
1103 winsmal.bottom = winsmal.top + 16; | |
1104 | |
1105 | |
1106 /*if(strcmp( (char*)ghost_char_logfile_text_oc_ccr,"ccr/bailout") == 0) | |
1107 { | |
1108 winsmal.left = wintemp.left + 2; | |
1109 winsmal.right = winsmal.left + 55; | |
1110 | |
1111 oled_write(OVERLAY, &winsmal,"CCR -",false,true); | |
1112 | |
1113 winsmal.left = winsmal.right; | |
1114 winsmal.right = winsmal.left + 90; | |
1115 //winsmal.fontcolor = oled_get_colour(15); | |
1116 oled_write(OVERLAY, &winsmal,"bailout",false,true); | |
1117 } | |
1118 else*/ | |
1119 { | |
1120 winsmal.left = wintemp.left + 2; | |
1121 winsmal.right = winsmal.left + 55; | |
1122 color = CLUT_GasSensor1;//LOGBOOK_GRAPH_DEPTH; | |
1123 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
1124 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,color,"depth"); |
38 | 1125 |
1126 } | |
1127 winsmal.left = 799 - 67;//wintemp.right -67; | |
1128 winsmal.right = winsmal.left;// + 45; | |
1129 | |
662 | 1130 color = CLUT_LogbookTemperature; |
1131 | |
1132 if(!isLoopMode(logbookHeader.diveMode)) | |
1133 { | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
1134 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,color,"\002PP O2"); |
662 | 1135 } |
38 | 1136 else |
662 | 1137 { |
1138 switch(logbookHeader.CCRmode) | |
1139 { | |
1140 case CCRMODE_FixedSetpoint: | |
1141 default: Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,color,"\002SETPOINT"); | |
1142 break; | |
1143 case CCRMODE_Sensors: Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,color,"\002SENSORS"); | |
1144 break; | |
1145 case CCRMODE_Simulation: Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,color,"\002SIM PPO2"); | |
1146 break; | |
1147 } | |
1148 } | |
38 | 1149 |
1150 //*** PP O2 **************************************************** | |
1151 //calc lines and labels | |
1152 int datamax = 0; | |
1153 int datamin = 10000; | |
1154 for(int i=1;i<dataLength;i++) | |
1155 { | |
1156 if(ppO2data[i]>datamax) | |
1157 datamax = ppO2data[i]; | |
1158 if(ppO2data[i]<datamin) | |
1159 datamin = ppO2data[i]; | |
1160 } | |
662 | 1161 if(isLoopMode(logbookHeader.diveMode) && (logbookHeader.CCRmode == CCRMODE_Sensors)) |
38 | 1162 { |
1163 for(int i=1;i<dataLength;i++) | |
1164 { | |
1165 if(sensor2[i]>datamax) | |
1166 datamax = sensor2[i]; | |
1167 if(sensor2[i]<datamin) | |
1168 datamin = sensor2[i]; | |
1169 if(sensor3[i]>datamax) | |
1170 datamax = sensor3[i]; | |
1171 if(sensor3[i]<datamin) | |
1172 datamin = sensor3[i]; | |
1173 } | |
1174 } | |
1175 float maxoxy = ((float)datamax)/100; | |
1176 float minoxy = ((float)datamin)/100; | |
1177 float oxystep = 0.5; | |
1178 float maxoxyline = 2.5; | |
1179 | |
1180 //--- print PP O2 labels ---- | |
1181 winsmal.left = wintemp.right + 2; | |
1182 winsmal.top = wintemp.top ; | |
1183 winsmal.right = wintemp.right + 30; | |
1184 winsmal.bottom = winsmal.top + 16; | |
1185 //winsmal.font = ft_tiny + ft_SLIM; | |
1186 color = CLUT_LogbookTemperature;// = LOGBOOK_GRAPH_TEMP; | |
1187 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
1188 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,color,"bar"); |
38 | 1189 |
1190 int deltaline = (wintemp.bottom - wintemp.top)/5; | |
1191 char msg[4]; | |
1192 float oxy = maxoxyline; | |
1193 for(int i = 1; i<=5; i++) | |
1194 { | |
1195 oxy -= oxystep; | |
1196 if(oxy < 0) | |
1197 break; | |
1198 winsmal.top = wintemp.top + deltaline * i - 8; | |
1199 winsmal.bottom = winsmal.top + 16; | |
1200 snprintf(msg,4,"%1.1f",oxy); | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
1201 Gfx_write_label_var(hgfx, winsmal.left, winsmal.right,winsmal.top, &FontT24,color,msg); |
38 | 1202 //oled_write(OVERLAY, &winsmal,msg,false,true); |
1203 } | |
1204 | |
1205 //--- print PP O2 graph --- | |
1206 //Adapt window | |
1207 float ftmp = ((maxoxyline - minoxy) * deltaline) /oxystep + wintemp.top; | |
1208 wintemp.bottom = ftmp; | |
1209 if((ftmp - (int)ftmp) >= 0.5f) | |
1210 wintemp.bottom++; | |
1211 | |
1212 ftmp = wintemp.top + ((maxoxyline - maxoxy) * deltaline) /oxystep; | |
1213 wintemp.top = ftmp; | |
1214 if((ftmp - (int)ftmp) >= 0.5f) | |
1215 wintemp.top++; | |
1216 wintemp.top = MaxU32LOG(wintemp.top ,0); | |
1217 if(wintemp.top < wintemp.bottom) | |
1218 { | |
662 | 1219 if(isLoopMode(logbookHeader.diveMode) && (logbookHeader.CCRmode == CCRMODE_Sensors)) |
38 | 1220 { |
662 | 1221 if(sensorDataAvailable[0]) |
1222 { | |
1223 GFX_graph_print(hgfx,&wintemp,0,1,datamax,datamin, ppO2data,dataLength,CLUT_GasSensor2, NULL); | |
1224 } | |
1225 if(sensorDataAvailable[1]) | |
1226 { | |
1227 GFX_graph_print(hgfx,&wintemp,0,1,datamax,datamin, sensor2,dataLength,CLUT_GasSensor3, NULL); | |
1228 } | |
1229 if(sensorDataAvailable[2]) | |
1230 { | |
1231 GFX_graph_print(hgfx,&wintemp,0,1,datamax,datamin, sensor3,dataLength,CLUT_GasSensor4, NULL); | |
1232 } | |
38 | 1233 } |
1234 else | |
1235 GFX_graph_print(hgfx,&wintemp,0,1,datamax,datamin, ppO2data,dataLength,CLUT_LogbookTemperature, NULL); | |
1236 } | |
1237 else | |
1238 { | |
1239 point_t startPoint, stopPoint; | |
1240 startPoint.x = wintemp.left; | |
1241 stopPoint.x = wintemp.right; | |
1242 stopPoint.y = startPoint.y = 479 - wintemp.top; | |
1243 GFX_draw_colorline(hgfx, startPoint, stopPoint, CLUT_LogbookTemperature); | |
1244 } | |
1245 | |
1246 //--- define buttons --- | |
1247 //button_start_single_action(surf1_menu_logbook_current_page, surf1_menu_logbook_show_log_page1, surf1_menu_logbook_show_log_next); | |
1248 } | |
1249 | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
1250 static void print_gas_name(char* output,uint8_t length,uint8_t oxygen,uint8_t helium) |
38 | 1251 { |
1252 if(helium == 0) | |
1253 { | |
1254 if(oxygen == 21) | |
1255 snprintf(output, length, "Air"); | |
1256 else if(oxygen == 100) | |
1257 snprintf(output, length, "Oxy"); | |
1258 else | |
1259 snprintf(output, length, "NX%i",oxygen); | |
1260 } | |
1261 else | |
1262 { | |
1263 if((oxygen + helium) == 100) | |
1264 snprintf(output, length, "HX%i",oxygen); | |
1265 else | |
1266 snprintf(output, length, "TMX%i/%i", oxygen, helium); | |
1267 } | |
1268 | |
1269 } | |
1270 | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
166
diff
changeset
|
1271 static int16_t get_colour(int16_t color) |
38 | 1272 { |
1273 return CLUT_GasSensor1 + color; | |
1274 } | |
596
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
1275 |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
1276 uint8_t getActiveLogPage() |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
1277 { |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
1278 return active_log_page; |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
1279 } |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
1280 |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
1281 void updateReplayIncdicator(GFX_DrawCfgScreen *hgfx) |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
1282 { |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
1283 build_logbook_test(1,active_log_offset); |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
1284 GFX_SetFramesTopBottom(tLOGscreen.FBStartAdress, tLOGbackground.FBStartAdress,480); |
16e369eae6e5
Added functionality to select a dive to be shown in the T3 profile view:
Ideenmodellierer
parents:
583
diff
changeset
|
1285 } |