Mercurial > public > ostc4
annotate Discovery/Src/tInfoLog.c @ 780:e40790a67165
Discovery<=>SmallCPU inferface update:
The sensor data struct is extended to store the data of up to three (three visible O2 sensors). To avoid unnecessary payload on the SPI only the last update sensor data item is transfered. The sender receiver uses the sensor ID which is provided in parallel to identify the correct storage location.
author | Ideenmodellierer |
---|---|
date | Tue, 23 May 2023 21:50:19 +0200 |
parents | b9d4baa4f6fa |
children | cb386cccc7c5 |
rev | line source |
---|---|
38 | 1 /////////////////////////////////////////////////////////////////////////////// |
2 /// -*- coding: UTF-8 -*- | |
3 /// | |
4 /// \file Discovery/Src/tInfoLog.c | |
5 /// \brief Main Template file for Menu Page Deco | |
6 /// \author heinrichs weikamp gmbh | |
7 /// \date 31-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 /* Includes ------------------------------------------------------------------*/ | |
30 #include "tInfoLog.h" | |
31 | |
32 #include "gfx_fonts.h" | |
33 #include "logbook.h" | |
34 #include "show_logbook.h" | |
35 #include "tHome.h" | |
36 #include "tInfo.h" | |
37 #include "tMenu.h" | |
38 #include "unit.h" | |
452
b90ddf57f7f1
Added compile variant enabling the reset of profile sample information:
ideenmodellierer
parents:
186
diff
changeset
|
39 #include "externLogbookFlash.h" |
b90ddf57f7f1
Added compile variant enabling the reset of profile sample information:
ideenmodellierer
parents:
186
diff
changeset
|
40 #include "configuration.h" |
594
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
590
diff
changeset
|
41 #include "logbook_miniLive.h" |
38 | 42 |
43 /* Exported variables --------------------------------------------------------*/ | |
44 | |
45 /* Private types -------------------------------------------------------------*/ | |
46 typedef struct | |
47 { | |
48 uint8_t page; | |
49 uint8_t line; | |
50 uint8_t linesAvailableForPage; | |
51 uint8_t modeFlipPages; | |
52 uint8_t maxpages; | |
53 } SInfoLogMemory; | |
54 | |
55 /* Private variables ---------------------------------------------------------*/ | |
56 GFX_DrawCfgScreen INFOLOGscreen; | |
57 GFX_DrawCfgScreen *pMenuCursor, *pMenuCursorDesignSolo; | |
58 GFX_DrawCfgWindow INFOLOGwindow; | |
59 | |
60 SInfoLogMemory infolog; | |
61 | |
62 /* Private function prototypes -----------------------------------------------*/ | |
63 void tInfoLog_BuildAndShowNextPage(void); | |
64 void tInfoLog_nextLine(void); | |
65 void showLog(void); | |
66 void showNextLogPage(void); | |
67 void stepBackInfo(void); | |
68 void stepForwardInfo(void); | |
69 void showLogExit(void); | |
70 | |
71 /* Exported functions --------------------------------------------------------*/ | |
72 void tInfoLog_init(void) | |
73 { | |
74 INFOLOGscreen.FBStartAdress = 0; | |
75 INFOLOGscreen.ImageHeight = 480; | |
76 INFOLOGscreen.ImageWidth = 800; | |
77 INFOLOGscreen.LayerIndex = 1; | |
78 | |
79 INFOLOGwindow.Image = &INFOLOGscreen; | |
80 INFOLOGwindow.WindowNumberOfTextLines = 6; | |
81 INFOLOGwindow.WindowLineSpacing = 65; | |
82 INFOLOGwindow.WindowTab = 400; | |
83 INFOLOGwindow.WindowX0 = 20; | |
84 INFOLOGwindow.WindowX1 = 779; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
85 if(!settingsGetPointer()->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
86 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
87 INFOLOGwindow.WindowY0 = 4 + 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
88 INFOLOGwindow.WindowY1 = 390 + 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
89 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
90 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
91 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
92 INFOLOGwindow.WindowY0 = 479 - 390; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
93 INFOLOGwindow.WindowY1 = 479 - 25; |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
94 } |
38 | 95 } |
96 | |
97 | |
98 void openInfoLogLastDive(void) | |
99 { | |
100 infolog.page = 0; | |
101 SLogbookHeader logbookHeader; | |
102 if(logbook_getHeader(0,&logbookHeader)) | |
103 { | |
104 set_globalState(StILOGSHOW); // all the rest with zeros | |
105 infolog.page = 1; | |
106 infolog.line = 1; | |
107 show_logbook_test(1, 0); | |
108 } | |
109 else | |
110 openLog(0); | |
111 } | |
112 | |
113 | |
114 void openLog(_Bool recallKeepPage) | |
115 { | |
116 if(recallKeepPage && infolog.page) | |
117 infolog.page--; | |
118 else | |
119 infolog.page = 0; | |
120 | |
121 infolog.modeFlipPages = 1; | |
122 set_globalState_Log_Page(infolog.page); | |
123 infolog.maxpages = (logbook_getNumberOfHeaders() + 5) / 6; | |
124 tInfoLog_BuildAndShowNextPage(); | |
125 | |
126 pMenuCursor = get_PointerMenuCursorScreen(); | |
127 pMenuCursorDesignSolo = get_PointerMenuCursorDesignSoloScreen(); | |
128 | |
129 change_CLUT_entry(CLUT_MenuLineSelectedSides, CLUT_InfoPageLogbook); | |
130 change_CLUT_entry(CLUT_MenuLineSelectedSeperator, CLUT_InfoPageLogbook); | |
131 | |
132 //GFX_ResetLayer(TOP_LAYER); | |
133 //GFX_ResetLayer(BACKGRD_LAYER); | |
134 | |
135 if(infolog.page == 255) | |
136 GFX_SetFrameBottom((INFOLOGscreen.FBStartAdress), 0, 0, 800, 480); | |
137 else | |
138 { | |
139 // very old: GFX_SetFrameBottom((pMenuCursor->FBStartAdress), 0, 0, 800, 390); | |
140 // no, set cursor to firt line instead with tInfoLog_nextLine() GFX_SetFrameBottom((pMenuCursorDesignSolo->FBStartAdress), 0, 25, 800, 390); | |
141 tInfoLog_nextLine(); | |
142 } | |
143 } | |
144 | |
145 | |
146 void sendActionToInfoLogList(uint8_t sendAction) | |
147 { | |
148 switch(sendAction) | |
149 { | |
150 case ACTION_BUTTON_ENTER: | |
151 stepForwardInfo(); | |
152 break; | |
153 case ACTION_BUTTON_NEXT: | |
154 | |
155 if(infolog.modeFlipPages) | |
156 { | |
157 tInfoLog_BuildAndShowNextPage(); | |
158 // GFX_SetFrameBottom((pMenuCursor->FBStartAdress), 0, 25, 800, 390); | |
159 } | |
160 else | |
161 tInfoLog_nextLine(); | |
162 break; | |
163 case ACTION_TIMEOUT: | |
164 case ACTION_MODE_CHANGE: | |
165 case ACTION_BUTTON_BACK: | |
166 stepBackInfo(); | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
110
diff
changeset
|
167 break; |
38 | 168 default: |
169 break; | |
170 case ACTION_IDLE_TICK: | |
171 case ACTION_IDLE_SECOND: | |
172 break; | |
173 } | |
174 } | |
175 | |
176 | |
177 void sendActionToInfoLogShow(uint8_t sendAction) | |
178 { | |
594
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
590
diff
changeset
|
179 #ifdef ENABLE_T3_PROFILE_VIEW |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
590
diff
changeset
|
180 uint8_t stepBack; |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
590
diff
changeset
|
181 #endif |
38 | 182 switch(sendAction) |
183 { | |
184 case ACTION_BUTTON_ENTER: | |
594
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
590
diff
changeset
|
185 #ifdef ENABLE_T3_PROFILE_VIEW |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
590
diff
changeset
|
186 if(getActiveLogPage() == 1) |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
590
diff
changeset
|
187 { |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
590
diff
changeset
|
188 stepBack = (6 * (infolog.page - 1)) + infolog.line - 1; |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
590
diff
changeset
|
189 prepareReplayLog(stepBack); |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
590
diff
changeset
|
190 updateReplayIncdicator(&INFOLOGscreen); |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
590
diff
changeset
|
191 } |
280c11153080
Added compile switch for new T3 View Profile
Ideenmodellierer
parents:
590
diff
changeset
|
192 #endif |
38 | 193 break; |
194 case ACTION_BUTTON_NEXT: | |
195 showNextLogPage(); | |
196 break; | |
197 case ACTION_TIMEOUT: | |
198 case ACTION_MODE_CHANGE: | |
199 case ACTION_BUTTON_BACK: | |
200 if(get_globalState() == StILOGSHOW) // no page nor line | |
201 { | |
202 openLog(1); | |
203 } | |
204 else | |
205 { | |
206 showLogExit(); | |
207 } | |
208 show_logbook_exit(); | |
186
f11f0bf6ef2d
cleanup: remove obsolete code, make static, etc.
Jan Mulder <jlmulder@xs4all.nl>
parents:
110
diff
changeset
|
209 break; |
38 | 210 default: |
211 break; | |
212 case ACTION_IDLE_TICK: | |
213 case ACTION_IDLE_SECOND: | |
214 break; | |
215 } | |
216 } | |
217 | |
218 | |
219 /* Private functions ---------------------------------------------------------*/ | |
220 | |
221 void exitLog(void) | |
222 { | |
223 //set_globalState_tHome(); | |
224 exitInfo(); | |
225 releaseFrame(15,INFOLOGscreen.FBStartAdress); | |
226 } | |
227 | |
228 | |
229 void stepBackInfo(void) | |
230 { | |
231 if(infolog.modeFlipPages == 0) | |
232 { | |
233 infolog.line = 0; | |
234 infolog.modeFlipPages = 1; | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
235 |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
236 if(!settingsGetPointer()->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
237 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
238 GFX_SetFrameBottom(pMenuCursorDesignSolo->FBStartAdress, 0, 25, 800, 390); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
239 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
240 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
241 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
242 GFX_SetFrameBottom(pMenuCursorDesignSolo->FBStartAdress, 0, 65, 800, 390); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
243 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
244 |
38 | 245 } |
246 else | |
247 exitLog(); | |
248 } | |
249 | |
250 | |
251 void stepForwardInfo(void) | |
252 { | |
253 if(infolog.modeFlipPages == 1) | |
254 { | |
255 tInfoLog_nextLine(); | |
256 } | |
257 else | |
258 showLog(); | |
259 } | |
260 | |
261 | |
262 void tInfoLog_BuildAndShowNextPage(void) | |
263 { | |
264 char text[MAX_PAGE_TEXTSIZE]; | |
265 uint16_t textPointer = 0; | |
266 SLogbookHeader logbookHeader; | |
267 // uint16_t divetime = logbookHeader.diveTimeMinutes; | |
268 // uint16_t maxDepth = logbookHeader.maxDepth/100; | |
269 int i = 0; | |
270 uint8_t date[2], month,day; | |
567 | 271 char timeSuffix; |
272 uint8_t hours; | |
38 | 273 |
274 if(INFOLOGscreen.FBStartAdress) | |
275 releaseFrame(15,INFOLOGscreen.FBStartAdress); | |
276 INFOLOGscreen.FBStartAdress = getFrame(15); | |
277 | |
278 infolog.page += 1; | |
279 infolog.linesAvailableForPage = 0; | |
280 | |
281 if((infolog.page < 1) || (infolog.page > 43)) /* max with 256 entries */ | |
282 infolog.page = 1; | |
283 | |
284 | |
285 text[0] = '\001'; | |
286 text[1] = TXT_Logbook; | |
287 text[2] = 0; | |
288 gfx_write_topline_simple(&INFOLOGscreen, text, CLUT_InfoPageLogbook); | |
289 | |
290 *text = 0; | |
291 if(!logbook_getHeader((infolog.page - 1) * 6,&logbookHeader)) | |
292 { | |
293 infolog.page = 1; | |
294 if(!logbook_getHeader((infolog.page - 1) * 6,&logbookHeader)) | |
295 { | |
296 infolog.page = 255; | |
297 infolog.linesAvailableForPage = 0; | |
298 text[0] = TXT_LogbookEmpty; | |
299 text[1] = 0; | |
300 } | |
301 } | |
302 | |
303 if((*text == 0) && (infolog.maxpages > 1)) | |
304 { | |
630 | 305 snprintf(text,10, "\002" "%u/%u", infolog.page, infolog.maxpages); |
38 | 306 gfx_write_topline_simple(&INFOLOGscreen, text, CLUT_InfoPageLogbook); |
307 *text = 0; | |
308 } | |
309 | |
310 if(*text == 0) | |
311 { | |
312 infolog.line = 0; | |
313 textPointer = 0; | |
314 if(settingsGetPointer()->date_format == DDMMYY) | |
315 { | |
316 day = 0; | |
317 month = 1; | |
318 } | |
319 else | |
320 { | |
321 day = 1; | |
322 month = 0; | |
323 } | |
324 for(i = 0; i < 6; i++) | |
325 { | |
326 if(i) | |
327 { | |
328 if(!logbook_getHeader(((infolog.page - 1) * 6) + i, &logbookHeader)) | |
329 break; | |
330 } | |
331 infolog.linesAvailableForPage += 1; | |
332 uint16_t divetime = logbookHeader.diveTimeMinutes; | |
333 uint16_t maxDepthMeter = logbookHeader.maxDepth/100; | |
334 uint16_t maxDepthSubmeter = (logbookHeader.maxDepth - maxDepthMeter * 100)/10; | |
335 uint16_t number = ((infolog.page - 1) * 6) + i + 1; | |
336 if(settingsGetPointer()->logbookOffset) | |
337 { | |
338 if(number <= settingsGetPointer()->logbookOffset) | |
339 number = settingsGetPointer()->logbookOffset + 1 - number; | |
340 } | |
341 date[day] = logbookHeader.dateDay; | |
342 date[month] = logbookHeader.dateMonth; | |
343 | |
344 text[textPointer++] = '\034';// monospaced space large size mode | |
525
1f557e5f4b5a
Change color ID used in strings for light grey:
Ideenmodellierer
parents:
469
diff
changeset
|
345 textPointer += snprintf(&text[textPointer], 20,"\031%04u \020", number); |
38 | 346 /* if(number < 1000) |
525
1f557e5f4b5a
Change color ID used in strings for light grey:
Ideenmodellierer
parents:
469
diff
changeset
|
347 textPointer += snprintf(&text[textPointer], 20,"\031%2u \020", number); |
38 | 348 else |
525
1f557e5f4b5a
Change color ID used in strings for light grey:
Ideenmodellierer
parents:
469
diff
changeset
|
349 textPointer += snprintf(&text[textPointer], 20,"\031\016\016%3u \017\020", number); |
38 | 350 */ |
351 textPointer += snprintf(&text[textPointer], 20,"%02d.%02d ",date[0],date[1]); | |
567 | 352 |
353 if (settingsGetPointer()->amPMTime) | |
354 { | |
355 if (logbookHeader.timeHour > 11) | |
356 { | |
357 timeSuffix = 'P'; | |
358 } | |
359 else | |
360 { | |
361 timeSuffix = 'A'; | |
362 } | |
363 | |
364 if (logbookHeader.timeHour % 12 == 0) | |
365 { | |
366 hours = 12; | |
367 } | |
368 else | |
369 { | |
370 hours = (logbookHeader.timeHour % 12); | |
371 } | |
372 | |
373 textPointer += snprintf(&text[textPointer], 20,"%02d:%02d\016\016%cM\017", hours,logbookHeader.timeMinute, timeSuffix); | |
374 } | |
375 else | |
376 { | |
377 textPointer += snprintf(&text[textPointer], 20,"%02d:%02d ",logbookHeader.timeHour,logbookHeader.timeMinute); | |
378 } | |
379 | |
38 | 380 switch(logbookHeader.decoModel) |
381 { | |
382 case 1: | |
570 | 383 if(!settingsGetPointer()->nonMetricalSystem) /* safe space to avoid cursor overlap */ |
384 { | |
385 if(settingsGetPointer()->amPMTime) | |
386 { | |
387 textPointer += snprintf(&text[textPointer],20,"\016\016 GF \017"); | |
388 } | |
389 else | |
390 { | |
391 textPointer += snprintf(&text[textPointer],20,"\016\016GF \017"); | |
392 } | |
393 } | |
394 else | |
395 { | |
396 textPointer += snprintf(&text[textPointer],20,"\016\016 GF \017"); | |
397 } | |
38 | 398 break; |
399 case 2: | |
590
eecb52ab1fce
Align VPM tag in log list to be at same position as GF tag:
Ideenmodellierer
parents:
570
diff
changeset
|
400 textPointer += snprintf(&text[textPointer],20,"\016\016VPM\017"); |
38 | 401 break; |
402 default: | |
403 textPointer += snprintf(&text[textPointer],20,"\016\016 * \017"); | |
404 break; | |
405 } | |
406 | |
407 if(settingsGetPointer()->nonMetricalSystem) | |
408 { | |
409 float maxDepthFeet = 0; | |
410 maxDepthFeet = unit_depth_float(((float)logbookHeader.maxDepth)/100); | |
411 textPointer += snprintf(&text[textPointer], 20,"%3.0f\016\016ft\017 ", maxDepthFeet); | |
412 } | |
413 else | |
414 { | |
570 | 415 textPointer += snprintf(&text[textPointer], 20,"%3d.%d\016\016m \017", maxDepthMeter,maxDepthSubmeter); |
38 | 416 } |
567 | 417 textPointer += snprintf(&text[textPointer], 20,"%3d\016\016min\017\n\r", divetime); |
418 | |
38 | 419 } |
420 } | |
421 GFX_write_string(&FontT48, &INFOLOGwindow, text,1); | |
422 | |
423 if(infolog.linesAvailableForPage > 1) | |
424 tInfo_write_buttonTextline(&INFOLOGscreen, TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); | |
425 else if(infolog.page == 255) | |
426 tInfo_write_buttonTextline(&INFOLOGscreen, TXT2BYTE_ButtonBack,0,0); | |
427 else | |
428 tInfo_write_buttonTextline(&INFOLOGscreen, TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,0); | |
429 | |
430 GFX_SetFrameTop(INFOLOGscreen.FBStartAdress); | |
431 set_globalState_Log_Page(infolog.page); | |
432 } | |
433 | |
434 | |
435 void tInfoLog_nextLine(void) | |
436 { | |
437 if(infolog.linesAvailableForPage == 0) | |
438 return; | |
439 | |
440 infolog.line += 1; | |
441 if(infolog.line > infolog.linesAvailableForPage) | |
442 infolog.line = 1; | |
443 | |
444 infolog.modeFlipPages = 0; | |
445 | |
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
446 if(!settingsGetPointer()->FlipDisplay) |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
447 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
448 GFX_SetFrameBottom((pMenuCursor->FBStartAdress) + 65*2*(infolog.line - 1), 0, 25, 800, 390); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
449 } |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
450 else |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
451 { |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
452 GFX_SetFrameBottom((pMenuCursor->FBStartAdress)+ (390 - 65 *(infolog.line)) *2, 0, 480-390-25, 800, 390); |
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
38
diff
changeset
|
453 } |
38 | 454 } |
455 | |
456 | |
457 void showLogExit(void) | |
458 { | |
459 GFX_SetFrameTop(INFOLOGscreen.FBStartAdress); | |
460 GFX_SetFrameBottom((pMenuCursor->FBStartAdress) + 65*2*(infolog.line - 1), 0, 25, 800, 390); | |
461 set_globalState_Log_Page(infolog.page); | |
462 } | |
463 | |
464 | |
465 void showLog(void) | |
466 { | |
467 uint8_t stepBack; | |
468 | |
469 if(infolog.page == 255) | |
470 return; | |
471 | |
472 stepBack = (6 * (infolog.page - 1)) + infolog.line - 1; | |
473 //build_logbook_test(); | |
474 show_logbook_test(1, stepBack); | |
475 } | |
476 | |
477 | |
478 void showNextLogPage(void) | |
479 { | |
480 uint8_t stepBack; | |
481 | |
482 if(infolog.page == 255) | |
483 return; | |
484 | |
485 stepBack = (6 * (infolog.page - 1)) + infolog.line - 1; | |
486 //build_logbook_test(); | |
487 show_logbook_test(0, stepBack); | |
488 } | |
489 |