Mercurial > public > ostc4
annotate Discovery/Src/tMenu.c @ 1007:65d35e66efb9 GasConsumption
Improve compass calibration dialog:
The previous calibration dialog showed some "magic" numbers and a 60 second count down. The new version is trying to guide the user through the calibration process: first rotate pitch, then roll and at last yaw angle. A step to the next angle is taken when enough data per angle is collected (change from red to green). To enable the yaw visualization a simple calibration is done while rotating the axis.
The function behind the calibration was not modified => the suggested process can be ignored and the same handling as the with old dialog may be applied. With the new process the dialog may be left early. Anyhow it will still be left after 60 seconds and the fine calibration is performed in the same way as before.
| author | Ideenmodellierer |
|---|---|
| date | Mon, 05 May 2025 21:02:34 +0200 |
| parents | 21142f4fa968 |
| children | 808153ba3fec |
| rev | line source |
|---|---|
| 38 | 1 /////////////////////////////////////////////////////////////////////////////// |
| 2 /// -*- coding: UTF-8 -*- | |
| 3 /// | |
| 4 /// \file Discovery/Src/tMenu.c | |
| 5 /// \brief Major menu with extra page 0 for edit functionality since V0.0.2 | |
| 6 /// \author heinrichs weikamp gmbh | |
| 7 /// \date 30-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 ------------------------------------------------------------------*/ | |
| 30 #include "tMenu.h" | |
| 31 | |
| 32 #include "gfx_fonts.h" | |
| 33 #include "tHome.h" | |
| 34 #include "tMenuDeco.h" | |
| 35 #include "tMenuDecoParameter.h" | |
| 36 #include "tMenuEditDeco.h" | |
| 37 #include "tMenuEditDecoParameter.h" | |
| 38 #include "tMenuEditGasOC.h" | |
| 39 #include "tMenuEditHardware.h" | |
| 40 #include "tMenuEditPlanner.h" | |
| 41 #include "tMenuEditSetpoint.h" | |
| 42 #include "tMenuEditSystem.h" | |
| 43 #include "tMenuEditXtra.h" | |
| 507 | 44 #include "tMenuEditCustom.h" |
| 999 | 45 #include "tMenuEditCvOption.h" |
| 38 | 46 #include "tMenuGas.h" |
| 47 #include "tMenuHardware.h" | |
| 48 #include "tMenuPlanner.h" | |
| 49 #include "tMenuSetpoint.h" | |
| 50 #include "tMenuSystem.h" | |
| 51 #include "tMenuXtra.h" | |
| 507 | 52 #include "tMenuCustom.h" |
| 38 | 53 |
| 54 /* Private types -------------------------------------------------------------*/ | |
| 999 | 55 #define MAXPAGES 12 |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
56 #define CURSOR_HIGH 25 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
57 #define TAB_HEADER_HIGH 25 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
58 #define TAB_BAR_HIGH 5 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
59 #define MENU_WDW_HIGH 390 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
60 #define KEY_LABEL_HIGH 25 /* Height of the label used for the the user keys */ |
| 38 | 61 |
| 999 | 62 #define TAB_BAR_WIDTH 50 |
| 63 #define TAB_BAR_SPACING 5 | |
| 64 | |
| 662 | 65 #define SLOW_UPDATE_CNT 10 /* Some content shall not be update in short intervals => add prescalar */ |
|
811
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
66 #define MAXLINES 6 |
| 662 | 67 |
| 38 | 68 typedef struct |
| 69 { | |
| 70 uint32_t StartAddressForPage[MAXPAGES+1]; | |
| 71 uint8_t lineMemoryForNavigationForPage[MAXPAGES+1]; | |
| 72 uint8_t pageMemoryForNavigation; | |
| 73 uint8_t linesAvailableForPage[MAXPAGES+1]; | |
| 74 uint8_t pagesAvailable; | |
| 75 uint8_t pageCountNumber[MAXPAGES+1]; | |
| 76 uint8_t pageCountTotal; | |
| 77 uint8_t modeFlipPages; | |
|
811
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
78 uint8_t shadowPage[MAXPAGES+1]; /* the page is switched in the context of another page */ |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
79 uint8_t activeShadow; /* Base page which is used for the shadow */ |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
80 uint8_t disableLineMask[MAXPAGES+1]; /* Bitfield used to disable a line. The line is visible but will not be selected by cursor) */ |
| 38 | 81 } SMenuMemory; |
| 82 | |
| 83 /* Exported variables --------------------------------------------------------*/ | |
| 84 | |
| 85 /* Announced Private variables -----------------------------------------------*/ | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
86 static GFX_DrawCfgScreen tMdesignSolo; |
|
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
87 static GFX_DrawCfgScreen tMdesignCursor; |
| 38 | 88 |
| 89 /* Private variables ---------------------------------------------------------*/ | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
90 static GFX_DrawCfgWindow tMwindow; |
|
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
91 static GFX_DrawCfgScreen tMscreen; |
| 38 | 92 |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
93 static SMenuMemory menu; |
| 38 | 94 |
| 95 uint8_t actual_menu_content = MENU_UNDEFINED; | |
| 96 | |
|
811
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
97 |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
98 |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
99 |
| 38 | 100 /* Private function prototypes -----------------------------------------------*/ |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
101 static void draw_tMheader(uint8_t page); |
|
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
102 static void draw_tMcursorDesign(void); |
| 38 | 103 |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
104 static void draw_tMdesignSubUnselected(uint32_t *ppDestination); |
|
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
105 static void draw_tMdesignSubSelected(uint32_t *ppDestination); |
|
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
106 static void draw_tMdesignSubSelectedBorder(uint32_t *ppDestination); |
|
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
107 static void tMenu_write(uint8_t page, char *text, char *subtext); |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
108 static void nextLine(void); |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
109 static void clean_line_actual_page(void); |
| 38 | 110 void tM_build_pages(void); |
| 111 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
112 static void gotoMenuEdit(void); |
| 38 | 113 |
| 114 /* Exported functions --------------------------------------------------------*/ | |
| 115 | |
| 116 GFX_DrawCfgScreen * get_PointerMenuCursorScreen(void) | |
| 117 { | |
| 118 return &tMdesignCursor; | |
| 119 } | |
| 120 | |
| 121 | |
| 122 GFX_DrawCfgScreen * get_PointerMenuCursorDesignSoloScreen(void) | |
| 123 { | |
| 124 return &tMdesignSolo; | |
| 125 } | |
| 126 | |
| 127 | |
| 128 void nextline(char * text, uint8_t *textPointer) | |
| 129 { | |
| 130 text[(*textPointer)++] = '\n'; | |
| 131 text[(*textPointer)++] = '\r'; | |
| 132 text[*textPointer] = 0; | |
| 133 } | |
| 134 | |
| 135 | |
|
816
c4ee952b9425
Fix a bug that disables arbitrary menu lines in dive mode if lines are disabled / inactive in surface mode. (mikeller)
heinrichsweikamp
parents:
815
diff
changeset
|
136 void clearDisabledMenuLines(void) |
|
c4ee952b9425
Fix a bug that disables arbitrary menu lines in dive mode if lines are disabled / inactive in surface mode. (mikeller)
heinrichsweikamp
parents:
815
diff
changeset
|
137 { |
|
c4ee952b9425
Fix a bug that disables arbitrary menu lines in dive mode if lines are disabled / inactive in surface mode. (mikeller)
heinrichsweikamp
parents:
815
diff
changeset
|
138 for(unsigned i = 0; i <= MAXPAGES; i++) { |
|
c4ee952b9425
Fix a bug that disables arbitrary menu lines in dive mode if lines are disabled / inactive in surface mode. (mikeller)
heinrichsweikamp
parents:
815
diff
changeset
|
139 menu.disableLineMask[i] = 0; |
|
c4ee952b9425
Fix a bug that disables arbitrary menu lines in dive mode if lines are disabled / inactive in surface mode. (mikeller)
heinrichsweikamp
parents:
815
diff
changeset
|
140 } |
|
c4ee952b9425
Fix a bug that disables arbitrary menu lines in dive mode if lines are disabled / inactive in surface mode. (mikeller)
heinrichsweikamp
parents:
815
diff
changeset
|
141 } |
|
c4ee952b9425
Fix a bug that disables arbitrary menu lines in dive mode if lines are disabled / inactive in surface mode. (mikeller)
heinrichsweikamp
parents:
815
diff
changeset
|
142 |
|
c4ee952b9425
Fix a bug that disables arbitrary menu lines in dive mode if lines are disabled / inactive in surface mode. (mikeller)
heinrichsweikamp
parents:
815
diff
changeset
|
143 |
| 38 | 144 void tM_init(void) |
| 145 { | |
| 146 uint8_t i; | |
| 147 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
148 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
149 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
150 |
| 38 | 151 tMdesignCursor.FBStartAdress = getFrame(3); |
| 152 tMdesignCursor.ImageHeight = 390; | |
| 153 tMdesignCursor.ImageWidth = 800; | |
| 154 tMdesignCursor.LayerIndex = 0; | |
| 155 | |
| 156 tMdesignSolo.FBStartAdress = getFrame(4); | |
| 157 tMdesignSolo.ImageHeight = 390; | |
| 158 tMdesignSolo.ImageWidth = 800; | |
| 159 tMdesignSolo.LayerIndex = 0; | |
| 160 | |
| 161 menu.pagesAvailable = 0; | |
| 162 menu.pageMemoryForNavigation = 0; | |
| 163 for(i=0;i<=MAXPAGES;i++) | |
| 164 { | |
| 165 menu.lineMemoryForNavigationForPage[i] = 0; | |
| 166 menu.StartAddressForPage[i] = 0; | |
| 167 menu.linesAvailableForPage[i] = 0; | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
168 menu.shadowPage[i] = 0; |
| 38 | 169 } |
| 170 | |
|
816
c4ee952b9425
Fix a bug that disables arbitrary menu lines in dive mode if lines are disabled / inactive in surface mode. (mikeller)
heinrichsweikamp
parents:
815
diff
changeset
|
171 clearDisabledMenuLines(); |
|
c4ee952b9425
Fix a bug that disables arbitrary menu lines in dive mode if lines are disabled / inactive in surface mode. (mikeller)
heinrichsweikamp
parents:
815
diff
changeset
|
172 |
| 38 | 173 tMscreen.FBStartAdress = 0; |
| 174 tMscreen.ImageHeight = 480; | |
| 175 tMscreen.ImageWidth = 800; | |
| 176 tMscreen.LayerIndex = 1; | |
| 177 | |
| 178 draw_tMcursorDesign(); | |
| 179 | |
| 180 tMwindow.Image = &tMscreen; | |
| 181 tMwindow.WindowNumberOfTextLines = 6; | |
| 182 tMwindow.WindowLineSpacing = 65; | |
| 183 tMwindow.WindowTab = 400; | |
| 184 tMwindow.WindowX0 = 20; | |
| 185 tMwindow.WindowX1 = 779; | |
| 186 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
187 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
188 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
189 tMwindow.WindowY0 = 4 + KEY_LABEL_HIGH; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
190 tMwindow.WindowY1 = 390 + KEY_LABEL_HIGH; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
191 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
192 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
193 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
194 tMwindow.WindowY0 = 480 - MENU_WDW_HIGH - TAB_HEADER_HIGH;// - TAB_BAR_HIGH; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
195 tMwindow.WindowY1 = 480 - TAB_HEADER_HIGH - TAB_BAR_HIGH; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
196 } |
| 38 | 197 actual_menu_content = MENU_UNDEFINED; |
| 198 } | |
| 199 | |
| 200 void tM_refresh(char *text, uint8_t *textPointer, uint8_t line, const char content[6]) | |
| 201 { | |
| 202 for(uint8_t i=0; i<6; i++) | |
| 203 { | |
| 204 if(((line == 0) || (line == i)) && content[i]) | |
| 205 { | |
| 206 text[(*textPointer)++] = content[i]; | |
| 207 } | |
| 208 text[(*textPointer)++] = '\n'; | |
| 209 text[(*textPointer)++] = '\r'; | |
| 210 text[*textPointer] = 0; | |
| 211 } | |
| 212 } | |
| 213 | |
| 214 | |
| 215 void tM_rebuild_pages(void) | |
| 216 { | |
| 217 menu.pagesAvailable = 0; | |
| 218 // menu.pageMemoryForNavigation = 0; | |
| 219 for(int i=0;i<=MAXPAGES;i++) | |
| 220 { | |
| 221 menu.lineMemoryForNavigationForPage[i] = 0; | |
| 222 menu.linesAvailableForPage[i] = 0; | |
| 223 menu.StartAddressForPage[i] = 0; // only with GFX_forceReleaseFramesWithId(5); !!!!! | |
| 224 } | |
| 225 GFX_forceReleaseFramesWithId(5); | |
| 226 tM_build_pages(); | |
| 227 } | |
| 228 | |
| 229 | |
| 230 void tM_rebuild_menu_after_tComm(void) | |
| 231 { | |
| 232 tM_rebuild_pages(); | |
| 233 } | |
| 234 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
235 void tM_check_content(void) |
| 38 | 236 { |
| 237 uint8_t mode = 0; | |
| 238 | |
| 239 if(stateUsed->mode == MODE_DIVE) | |
| 240 { | |
| 241 if(stateUsed == stateRealGetPointer()) | |
| 242 mode = MENU_DIVE_REAL; | |
| 243 else | |
| 244 mode = MENU_DIVE_SIM; | |
| 245 } | |
| 246 else | |
| 247 mode = MENU_SURFACE; | |
| 248 | |
| 249 if(actual_menu_content != mode) | |
| 250 { | |
| 251 actual_menu_content = mode; | |
| 252 tM_rebuild_pages(); | |
| 253 } | |
| 254 } | |
| 255 | |
|
811
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
256 void disableLine(uint32_t lineId) |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
257 { |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
258 SStateList idList; |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
259 |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
260 get_idSpecificStateList(lineId, &idList); |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
261 |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
262 if((idList.page < MAXPAGES) && (idList.line < MAXLINES)) |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
263 { |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
264 menu.disableLineMask[idList.page] |= (1 << idList.line); |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
265 } |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
266 } |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
267 |
|
850
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
268 uint8_t getLineMask(uint32_t lineId) |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
269 { |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
270 SStateList idList; |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
271 get_idSpecificStateList(lineId, &idList); |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
272 return(menu.disableLineMask[idList.page]); |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
273 } |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
274 |
|
815
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
275 void resetLineMask(uint32_t lineId) |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
276 { |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
277 SStateList idList; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
278 get_idSpecificStateList(lineId, &idList); |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
279 if(idList.page < MAXPAGES) |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
280 { |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
281 menu.disableLineMask[idList.page] = 0; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
282 } |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
283 } |
|
811
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
284 void enableLine(uint32_t lineId) |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
285 { |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
286 SStateList idList; |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
287 |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
288 get_idSpecificStateList(lineId, &idList); |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
289 |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
290 if((idList.page < MAXPAGES) && (idList.line < MAXLINES)) |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
291 { |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
292 menu.disableLineMask[idList.page] &= ~(1 << idList.line); |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
293 } |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
294 } |
| 38 | 295 |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
296 static void clean_line_actual_page(void) |
| 38 | 297 { |
| 298 uint8_t line, page; | |
| 299 | |
| 300 page = menu.pageMemoryForNavigation; | |
| 301 line = menu.lineMemoryForNavigationForPage[page]; | |
|
122
871baf20776b
Take care for display orientation if deleting lines
Ideenmodellierer
parents:
110
diff
changeset
|
302 if(settingsGetPointer()->FlipDisplay) /* Reselect line to be deleted if display is rotated */ |
|
871baf20776b
Take care for display orientation if deleting lines
Ideenmodellierer
parents:
110
diff
changeset
|
303 { |
|
871baf20776b
Take care for display orientation if deleting lines
Ideenmodellierer
parents:
110
diff
changeset
|
304 line = 6 - line + 1; |
|
871baf20776b
Take care for display orientation if deleting lines
Ideenmodellierer
parents:
110
diff
changeset
|
305 } |
| 38 | 306 tMscreen.FBStartAdress = menu.StartAddressForPage[page]; |
| 307 GFX_clean_line(&tMwindow, line); | |
| 308 } | |
| 309 | |
| 310 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
311 static void update_content_actual_page(char *text, uint16_t tab, char *subtext) |
| 38 | 312 { |
| 313 uint8_t page; | |
| 314 | |
| 315 page = menu.pageMemoryForNavigation; | |
| 316 | |
| 317 tMscreen.FBStartAdress = menu.StartAddressForPage[page]; | |
| 318 if(tab == 0) | |
| 319 tMwindow.WindowTab = 400; | |
| 320 else | |
| 321 tMwindow.WindowTab = tab; | |
| 322 | |
| 323 tMenu_write(page, text, subtext); | |
| 324 } | |
| 325 | |
| 326 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
327 static void update_content_with_new_frame(uint8_t page, char *text, uint16_t tab, char *subtext) |
| 38 | 328 { |
| 329 char localtext[32]; | |
| 330 | |
| 331 uint32_t rememberPage = menu.StartAddressForPage[page]; | |
| 332 menu.StartAddressForPage[page] = getFrame(5); | |
| 333 tMscreen.FBStartAdress = menu.StartAddressForPage[page]; | |
| 334 | |
| 335 if(tab == 0) | |
| 336 tMwindow.WindowTab = 400; | |
| 337 else | |
| 338 tMwindow.WindowTab = tab; | |
| 339 | |
| 340 draw_tMheader(page); | |
| 341 tMenu_write(page, text, subtext); | |
| 342 | |
| 343 localtext[0] = TXT_2BYTE; | |
| 344 localtext[1] = TXT2BYTE_ButtonBack; | |
| 345 localtext[2] = 0; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
346 write_content_simple(&tMscreen, 0, 800, 480-KEY_LABEL_HIGH, &FontT24,localtext,CLUT_ButtonSurfaceScreen); |
| 38 | 347 |
| 348 localtext[0] = '\001'; | |
| 349 localtext[1] = TXT_2BYTE; | |
| 350 localtext[2] = TXT2BYTE_ButtonEnter; | |
| 351 localtext[3] = 0; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
352 write_content_simple(&tMscreen, 0, 800, 480-KEY_LABEL_HIGH, &FontT24,localtext,CLUT_ButtonSurfaceScreen); |
| 38 | 353 |
| 354 localtext[0] = '\002'; | |
| 355 localtext[1] = TXT_2BYTE; | |
| 356 localtext[2] = TXT2BYTE_ButtonNext; | |
| 357 localtext[3] = 0; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
358 write_content_simple(&tMscreen, 0, 800, 480-KEY_LABEL_HIGH, &FontT24,localtext,CLUT_ButtonSurfaceScreen); |
| 38 | 359 |
| 360 // gfx_write_page_number(&tMscreen ,menu.pageCountNumber[page],menu.pageCountTotal,0); | |
| 361 | |
| 362 if(page == menu.pageMemoryForNavigation) | |
| 363 GFX_SetFrameTop(tMscreen.FBStartAdress); | |
| 364 releaseFrame(5,rememberPage); | |
| 365 } | |
| 366 | |
| 367 | |
|
169
842f57bbaaad
Bugfix: highlight the menu underline correctly on selected state
Jan Mulder <jlmulder@xs4all.nl>
parents:
167
diff
changeset
|
368 static void tM_create_pagenumbering(void) |
| 38 | 369 { |
| 370 menu.pageCountTotal = 0; | |
| 371 | |
| 372 for(int i=0;i<=MAXPAGES;i++) | |
| 373 { | |
| 374 if(menu.pageCountNumber[i]) | |
| 375 { | |
| 376 menu.pageCountTotal++; | |
| 377 menu.pageCountNumber[i] = menu.pageCountTotal; | |
| 378 } | |
| 379 } | |
| 380 } | |
| 381 | |
| 382 | |
| 379 | 383 void tM_build_page(uint32_t id, char *text, uint16_t tab, char *subtext) |
| 38 | 384 { |
| 385 uint8_t linesFound; | |
| 386 uint16_t i; | |
| 387 SStateList idList; | |
| 388 uint8_t page; | |
| 389 | |
| 390 char localtext[32]; | |
| 391 | |
| 392 if(menu.pagesAvailable > MAXPAGES) | |
| 393 return; | |
| 394 | |
| 395 get_idSpecificStateList(id, &idList); | |
| 396 | |
| 397 if(idList.base != BaseMenu) | |
| 398 return; | |
| 399 | |
| 400 if(idList.page == 0) | |
| 401 return; | |
| 402 | |
| 403 if(idList.page > MAXPAGES) | |
| 404 return; | |
| 405 | |
| 406 page = idList.page; | |
| 407 | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
408 if((!menu.pageCountNumber[page]) && (!menu.shadowPage[page])) /* shadow pages are not visible on top level */ |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
409 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
410 return; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
411 } |
| 38 | 412 |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
413 if(menu.pagesAvailable == 0) |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
414 tM_create_pagenumbering(); |
| 38 | 415 |
| 416 if(*text == 0) | |
| 417 return; | |
| 418 | |
| 419 linesFound = 1; | |
| 420 | |
| 421 if(menu.StartAddressForPage[page]) | |
| 422 releaseFrame(5,menu.StartAddressForPage[page]); | |
| 423 | |
| 424 menu.StartAddressForPage[page] = getFrame(5); | |
| 425 | |
| 426 if(menu.StartAddressForPage[page] == 0) | |
| 427 return; | |
| 428 | |
| 429 i = 0; | |
| 430 while((i < MAX_PAGE_TEXTSIZE) && text[i]) | |
| 431 { | |
| 432 if((text[i] == '\n') && ((i + 2) < MAX_PAGE_TEXTSIZE) && text[i+1] && text[i+2]) | |
| 433 linesFound += 1; | |
| 434 i++; | |
| 435 } | |
| 436 | |
| 437 menu.linesAvailableForPage[page] = linesFound; | |
| 438 menu.pagesAvailable++; /* even if it was used before */ | |
| 439 | |
| 440 tMscreen.FBStartAdress = menu.StartAddressForPage[page]; | |
| 441 if(tab == 0) | |
| 442 tMwindow.WindowTab = 400; | |
| 443 else | |
| 444 tMwindow.WindowTab = tab; | |
| 445 | |
| 446 draw_tMheader(page); | |
| 447 | |
| 448 tMenu_write(page, text, subtext); | |
| 449 | |
| 450 localtext[0] = TXT_2BYTE; | |
| 451 localtext[1] = TXT2BYTE_ButtonBack; | |
| 452 localtext[2] = 0; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
453 write_content_simple(&tMscreen, 0, 800, 480-KEY_LABEL_HIGH, &FontT24,localtext,CLUT_ButtonSurfaceScreen); |
| 38 | 454 |
| 455 localtext[0] = '\001'; | |
| 456 localtext[1] = TXT_2BYTE; | |
| 457 localtext[2] = TXT2BYTE_ButtonEnter; | |
| 458 localtext[3] = 0; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
459 write_content_simple(&tMscreen, 0, 800, 480-KEY_LABEL_HIGH, &FontT24,localtext,CLUT_ButtonSurfaceScreen); |
| 38 | 460 |
| 461 localtext[0] = '\002'; | |
| 462 localtext[1] = TXT_2BYTE; | |
| 463 localtext[2] = TXT2BYTE_ButtonNext; | |
| 464 localtext[3] = 0; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
465 write_content_simple(&tMscreen, 0, 800, 480-KEY_LABEL_HIGH, &FontT24,localtext,CLUT_ButtonSurfaceScreen); |
| 38 | 466 } |
| 467 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
468 static void findValidPosition(uint8_t *pageOuput, uint8_t *lineOutput) |
| 38 | 469 { |
|
51
8f8ea3a32e82
Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents:
38
diff
changeset
|
470 uint8_t page = 0; |
|
8f8ea3a32e82
Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents:
38
diff
changeset
|
471 uint8_t line = 0; |
|
8f8ea3a32e82
Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents:
38
diff
changeset
|
472 uint8_t first = 0; |
| 38 | 473 |
| 474 *pageOuput = 0; | |
| 475 *lineOutput = 0; | |
| 476 | |
| 477 /* test */ | |
| 478 if(menu.pagesAvailable == 0) | |
| 479 return; | |
| 480 | |
| 481 for(int i=1;i<=MAXPAGES;i++) | |
| 482 { | |
| 483 if((menu.pageCountNumber[i] != 0) | |
| 484 && (menu.linesAvailableForPage[i] != 0) | |
| 485 && (menu.StartAddressForPage[i] != 0)) | |
| 486 { | |
| 487 first = i; | |
| 488 break; | |
| 489 } | |
| 490 } | |
| 491 | |
| 492 /* select */ | |
| 493 if(menu.pageMemoryForNavigation > MAXPAGES) | |
| 494 menu.pageMemoryForNavigation = first; | |
| 495 | |
| 496 page = menu.pageMemoryForNavigation; | |
| 497 | |
| 498 if(page == 0) | |
| 499 page = first; | |
| 500 | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
501 while((page <= MAXPAGES) && ((menu.linesAvailableForPage[page] == 0) || (menu.StartAddressForPage[page] == 0) || ((menu.pageCountNumber[page] == 0) && !((menu.shadowPage[page]) && (menu.pageMemoryForNavigation == page))))) |
| 38 | 502 page += 1; |
| 503 | |
| 504 if(page > MAXPAGES) | |
| 505 page = first; | |
| 506 | |
| 507 line = menu.lineMemoryForNavigationForPage[page]; | |
| 508 | |
| 509 if(line == 0) | |
| 510 line = 1; | |
| 511 | |
|
815
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
512 while(menu.disableLineMask[page] & ( 1 << line)) |
|
811
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
513 { |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
514 line++; |
|
815
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
515 if(line > menu.linesAvailableForPage[page]) |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
516 { |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
517 line = 1; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
518 } |
|
811
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
519 } |
|
4c41d9a18c7f
Added function to skip lines which are not needed for operation:
Ideenmodellierer
parents:
788
diff
changeset
|
520 |
| 38 | 521 if(line > menu.linesAvailableForPage[page]) |
| 522 line = 1; | |
| 523 | |
| 524 *pageOuput = page; | |
| 525 *lineOutput = line; | |
| 526 } | |
| 527 | |
| 528 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
529 static void tM_add(uint32_t id) |
| 38 | 530 { |
| 531 SStateList idList; | |
| 532 uint8_t page; | |
| 533 | |
| 534 get_idSpecificStateList(id, &idList); | |
| 535 | |
| 536 page = idList.page; | |
| 537 | |
| 538 if(page > MAXPAGES) | |
| 539 return; | |
| 540 | |
| 541 menu.pageCountNumber[page] = 1; | |
| 542 } | |
| 543 | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
544 static void tM_addShadow(uint32_t id) |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
545 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
546 SStateList idList; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
547 uint8_t page; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
548 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
549 get_idSpecificStateList(id, &idList); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
550 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
551 page = idList.page; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
552 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
553 if(page > MAXPAGES) |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
554 return; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
555 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
556 menu.shadowPage[page] = 1; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
557 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
558 |
| 38 | 559 |
| 560 void tM_build_pages(void) | |
| 561 { | |
| 562 char text[MAX_PAGE_TEXTSIZE]; | |
| 563 char subtext[MAX_PAGE_TEXTSIZE]; | |
| 564 uint32_t id; | |
| 565 uint16_t tabPosition; | |
| 566 SSettings *pSettings = settingsGetPointer(); | |
| 567 | |
| 568 menu.pagesAvailable = 0; | |
| 569 for(int i=0;i<=MAXPAGES;i++) | |
| 570 menu.pageCountNumber[i] = 0; | |
| 571 | |
| 572 tabPosition = 400; | |
| 573 *text = 0; | |
| 574 *subtext = 0; | |
| 575 | |
| 576 /* 2015 Feb 02, hw | |
| 577 * max 8 Menu Pages | |
| 578 */ | |
| 579 | |
| 580 | |
| 581 tM_add(StMSYS); //now in both modes | |
| 582 if(actual_menu_content == MENU_SURFACE) | |
| 583 { | |
| 584 tM_add(StMDECO); | |
| 585 tM_add(StMHARD); | |
| 507 | 586 tM_add(StMCustom); |
| 999 | 587 tM_add(StMOption); |
| 38 | 588 // tM_add(StMSYS); now in both modes |
| 589 } | |
| 590 else | |
| 591 { | |
| 592 tM_add(StMXTRA); | |
| 593 } | |
| 594 if(actual_menu_content == MENU_SURFACE) | |
| 595 { | |
| 596 tM_add(StMPLAN); | |
| 597 } | |
| 598 // if((pSettings->dive_mode != DIVEMODE_Gauge) && (pSettings->dive_mode != DIVEMODE_Apnea)) | |
| 599 // { | |
| 600 tM_add(StMDECOP); | |
| 601 // } | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
602 |
| 662 | 603 if((isLoopMode(pSettings->dive_mode)) || (stateUsed->diveSettings.ccrOption == 1)) |
| 38 | 604 { |
| 605 tM_add(StMCG); | |
|
856
af035b883382
Do not show SP tab if PSCR mode is active:
Ideenmodellierer
parents:
851
diff
changeset
|
606 if((stateUsed->diveSettings.diveMode != DIVEMODE_PSCR) || (actual_menu_content != MENU_SURFACE)) |
|
af035b883382
Do not show SP tab if PSCR mode is active:
Ideenmodellierer
parents:
851
diff
changeset
|
607 { |
|
af035b883382
Do not show SP tab if PSCR mode is active:
Ideenmodellierer
parents:
851
diff
changeset
|
608 tM_add(StMSP); |
|
af035b883382
Do not show SP tab if PSCR mode is active:
Ideenmodellierer
parents:
851
diff
changeset
|
609 } |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
610 if (actual_menu_content == MENU_SURFACE) /* StMOG is now accessed using StMCG in CCR mode*/ |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
611 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
612 tM_add(StMXTRA); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
613 tM_addShadow(StMOG); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
614 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
615 else |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
616 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
617 tM_add(StMOG); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
618 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
619 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
620 else |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
621 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
622 tM_add(StMOG); |
| 38 | 623 } |
| 624 | |
| 625 id = tMOG_refresh(0, text, &tabPosition, subtext); | |
| 626 tM_build_page(id, text, tabPosition, subtext); | |
| 627 | |
| 628 id = tMCG_refresh(0, text, &tabPosition, subtext); | |
| 629 tM_build_page(id, text, tabPosition, subtext); | |
| 630 | |
|
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:
774
diff
changeset
|
631 id = tMSP_refresh(text, &tabPosition, subtext); |
| 38 | 632 tM_build_page(id, text, tabPosition, subtext); |
| 633 | |
| 634 id = tMXtra_refresh(0, text, &tabPosition, subtext); | |
| 635 tM_build_page(id, text, tabPosition, subtext); | |
| 636 | |
| 637 id = tMPlanner_refresh(0, text, &tabPosition, subtext); | |
| 638 tM_build_page(id, text, tabPosition, subtext); | |
| 639 | |
| 640 id = tMDeco_refresh(0, text, &tabPosition, subtext); | |
| 641 tM_build_page(id, text, tabPosition, subtext); | |
| 642 | |
| 643 id = tMDecoParameters_refresh(0, text, &tabPosition, subtext); | |
| 644 tM_build_page(id, text, tabPosition, subtext); | |
| 645 | |
| 646 id = tMPlanner_refresh(0, text, &tabPosition, subtext); | |
| 647 tM_build_page(id, text, tabPosition, subtext); | |
| 648 | |
| 649 id = tMHardware_refresh(0, text, &tabPosition, subtext); | |
| 650 tM_build_page(id, text, tabPosition, subtext); | |
| 651 | |
| 652 id = tMSystem_refresh(0, text, &tabPosition, subtext); | |
| 653 tM_build_page(id, text, tabPosition, subtext); | |
| 507 | 654 |
| 655 id = tMCustom_refresh(0, text, &tabPosition, subtext); | |
| 656 tM_build_page(id, text, tabPosition, subtext); | |
| 999 | 657 |
| 658 id = tMCvOption_refresh(0, text, &tabPosition, subtext); | |
| 659 tM_build_page(id, text, tabPosition, subtext); | |
| 38 | 660 } |
| 661 | |
| 662 | |
| 663 void tM_refresh_live_content(void) | |
| 664 { | |
| 662 | 665 static uint8_t slowUpdate = SLOW_UPDATE_CNT; |
|
51
8f8ea3a32e82
Resolved warnings pointing to possible invalid memory access
Ideenmodellierer
parents:
38
diff
changeset
|
666 uint8_t page = 0; |
| 38 | 667 char text[MAX_PAGE_TEXTSIZE]; |
| 668 char subtext[MAX_PAGE_TEXTSIZE]; | |
| 669 uint16_t tabPosition; | |
| 670 | |
| 662 | 671 uint32_t globalState = get_globalState(); |
| 672 | |
| 673 slowUpdate--; | |
| 674 page = menu.pageMemoryForNavigation; | |
| 675 switch(globalState) | |
| 38 | 676 { |
| 662 | 677 case StMSYS: if(actual_menu_content == MENU_SURFACE) |
| 678 { | |
| 679 tMSystem_refresh(0, text, &tabPosition, subtext); | |
| 680 update_content_with_new_frame(page, text, tabPosition, subtext); | |
| 681 } | |
| 682 break; | |
| 683 case StMHARD: tMHardware_refresh(0, text, &tabPosition, subtext); | |
| 684 update_content_with_new_frame(page, text, tabPosition, subtext); | |
| 685 break; | |
| 686 case StMOG: if((actual_menu_content != MENU_SURFACE) && (slowUpdate == 0)) | |
| 687 { | |
| 688 tMOG_refresh(0, text, &tabPosition, subtext); | |
| 689 update_content_with_new_frame(page, text, tabPosition, subtext); | |
| 690 } | |
| 691 break; | |
| 692 case StMCG: if((actual_menu_content != MENU_SURFACE) && (slowUpdate == 0)) | |
| 693 { | |
| 694 tMCG_refresh(0, text, &tabPosition, subtext); | |
| 695 update_content_with_new_frame(page, text, tabPosition, subtext); | |
| 696 } | |
| 697 break; | |
| 698 default: | |
| 699 break; | |
| 38 | 700 } |
| 662 | 701 if(slowUpdate == 0) |
| 38 | 702 { |
| 662 | 703 slowUpdate = SLOW_UPDATE_CNT; |
| 38 | 704 } |
| 705 | |
| 706 tMscreen.FBStartAdress = menu.StartAddressForPage[page]; | |
| 707 tHome_show_lost_connection_count(&tMscreen); | |
| 708 /* | |
| 709 SStateList idList; | |
| 710 if(actual_menu_content == MENU_SURFACE) | |
| 711 { | |
| 712 page = menu.pageMemoryForNavigation; | |
| 713 get_idSpecificStateList(StMSYS, &idList); | |
| 714 if(page == idList.page) | |
| 715 { | |
| 716 tMSystem_refresh(0, text, &tabPosition, subtext); | |
| 717 update_content_with_new_frame(page, text, tabPosition, subtext); | |
| 718 } | |
| 719 } | |
| 720 */ | |
| 721 } | |
| 722 | |
| 723 | |
| 724 /* new frame only! */ | |
| 725 void updateSpecificMenu(uint32_t id) | |
| 726 { | |
| 727 uint8_t page; | |
| 728 SStateList idList; | |
| 729 | |
| 730 char text[MAX_PAGE_TEXTSIZE]; | |
| 731 char subtext[MAX_PAGE_TEXTSIZE]; | |
| 732 uint16_t tabPosition; | |
| 733 | |
| 734 *subtext = 0; | |
| 735 *text = 0; | |
| 736 tabPosition = 400; | |
| 737 | |
| 738 get_idSpecificStateList(id, &idList); | |
| 739 page = idList.page; | |
| 740 | |
| 741 switch(id) | |
| 742 { | |
| 743 case StMOG: | |
| 744 tMOG_refresh(0, text, &tabPosition, subtext); | |
| 745 update_content_with_new_frame(page, text, tabPosition, subtext); | |
| 746 break; | |
| 747 case StMCG: | |
| 748 tMCG_refresh(0, text, &tabPosition, subtext); | |
| 749 update_content_with_new_frame(page, text, tabPosition, subtext); | |
| 750 break; | |
| 751 case StMSP: | |
|
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:
774
diff
changeset
|
752 tMSP_refresh(text, &tabPosition, subtext); |
| 38 | 753 update_content_with_new_frame(page, text, tabPosition, subtext); |
| 754 break; | |
|
815
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
755 case StMSYS: |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
756 tMSystem_refresh(0, text, &tabPosition, NULL); |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
757 update_content_with_new_frame(page, text, tabPosition, subtext); |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
758 break; |
|
ce8f71217f45
Bugfix CustomView selection during dive mode:
Ideenmodellierer
parents:
811
diff
changeset
|
759 |
| 38 | 760 default: |
| 761 break; | |
| 762 } | |
| 763 } | |
| 764 | |
| 765 | |
| 766 void updateMenu(void) | |
| 767 { | |
| 768 uint8_t page, line; | |
| 769 | |
| 770 char text[MAX_PAGE_TEXTSIZE]; | |
| 771 char subtext[MAX_PAGE_TEXTSIZE]; | |
| 772 uint16_t tabPosition; | |
| 773 | |
| 774 *subtext = 0; | |
| 775 *text = 0; | |
| 776 tabPosition = 400; | |
| 777 | |
| 778 page = menu.pageMemoryForNavigation; | |
| 779 line = menu.lineMemoryForNavigationForPage[page]; | |
| 780 | |
| 781 switch(get_globalState()) | |
| 782 { | |
| 783 case StMOG: | |
| 784 tMOG_refresh(0, text, &tabPosition, subtext); | |
| 785 update_content_with_new_frame(page, text, tabPosition, subtext); | |
| 786 break; | |
| 787 case StMCG: | |
| 788 tMCG_refresh(0, text, &tabPosition, subtext); | |
| 789 update_content_with_new_frame(page, text, tabPosition, subtext); | |
| 790 break; | |
| 791 case StMSP: | |
|
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:
774
diff
changeset
|
792 tMSP_refresh(text, &tabPosition, subtext); |
| 38 | 793 update_content_with_new_frame(page, text, tabPosition, subtext); |
| 794 break; | |
| 795 case StMXTRA: | |
| 796 tMXtra_refresh(0, text, &tabPosition, subtext); | |
| 797 update_content_with_new_frame(page, text, tabPosition, subtext); | |
| 798 break; | |
| 799 case StMDECO: | |
| 800 if((line == 1) || (line == 3)) // dive mode or ppO2 limits (the later for correct MOD in gaslists) | |
| 801 { | |
| 802 tM_rebuild_pages(); | |
| 803 menu.lineMemoryForNavigationForPage[page] = line; // fix 160623 | |
| 804 GFX_SetFrameTop(menu.StartAddressForPage[page]); | |
| 805 } | |
| 806 else | |
| 807 { | |
| 808 tMDeco_refresh(line, text, &tabPosition, subtext); | |
| 809 clean_line_actual_page(); | |
| 810 update_content_actual_page(text, tabPosition, subtext); | |
| 811 } | |
| 812 break; | |
| 813 case StMDECOP: | |
| 814 tMDecoParameters_refresh(line, text, &tabPosition, subtext); | |
| 815 clean_line_actual_page(); | |
| 816 update_content_actual_page(text, tabPosition, subtext); | |
| 817 break; | |
| 818 case StMPLAN: | |
| 819 tMPlanner_refresh(line, text, &tabPosition, subtext); | |
| 820 clean_line_actual_page(); | |
| 821 update_content_actual_page(text, tabPosition, subtext); | |
| 822 break; | |
| 823 case StMHARD: | |
| 824 tMHardware_refresh(line, text, &tabPosition, subtext); | |
| 825 clean_line_actual_page(); | |
| 826 update_content_actual_page(text, tabPosition, subtext); | |
| 827 break; | |
| 828 case StMSYS: | |
| 829 if((line == 2) || (line == 3) || (line == 6)) | |
| 830 { | |
| 831 tM_rebuild_pages(); | |
| 832 menu.lineMemoryForNavigationForPage[page] = line; // fix 160623 | |
| 833 GFX_SetFrameTop(menu.StartAddressForPage[page]); | |
| 834 menu.lineMemoryForNavigationForPage[page] = line; | |
| 835 } | |
| 836 else | |
| 837 { | |
| 838 tMSystem_refresh(line, text, &tabPosition, subtext); | |
| 839 clean_line_actual_page(); | |
| 840 update_content_actual_page(text, tabPosition, subtext); | |
| 841 } | |
| 842 break; | |
| 507 | 843 case StMCustom: |
| 844 tMCustom_refresh(line, text, &tabPosition, subtext); | |
| 845 clean_line_actual_page(); | |
| 846 update_content_actual_page(text, tabPosition, subtext); | |
| 847 break; | |
|
1001
21142f4fa968
Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents:
999
diff
changeset
|
848 case StMOption: |
|
21142f4fa968
Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents:
999
diff
changeset
|
849 tMCvOption_refresh(line, text, &tabPosition, subtext); |
|
21142f4fa968
Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents:
999
diff
changeset
|
850 clean_line_actual_page(); |
|
21142f4fa968
Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents:
999
diff
changeset
|
851 update_content_actual_page(text, tabPosition, subtext); |
|
21142f4fa968
Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents:
999
diff
changeset
|
852 break; |
| 38 | 853 default: |
| 854 break; | |
| 855 } | |
| 856 } | |
| 857 | |
| 858 void openMenu_first_page_with_OC_gas_update(void) | |
| 859 { | |
| 860 menu.pageMemoryForNavigation = 1; | |
| 861 for(int i=0;i<=MAXPAGES;i++) | |
| 862 menu.lineMemoryForNavigationForPage[i] = 0; | |
| 863 | |
| 864 set_globalState(StMOG); | |
| 865 updateMenu(); | |
| 866 openMenu(1); | |
| 867 } | |
| 868 | |
| 869 | |
| 870 void openMenu(uint8_t freshWithFlipPages) | |
| 871 { | |
| 872 uint8_t page, line; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
873 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
874 pSettings = settingsGetPointer(); |
| 38 | 875 |
| 876 findValidPosition(&page, &line); | |
| 877 if((page == 0) || (line == 0)) | |
| 878 return; | |
| 879 | |
| 996 | 880 if( getBuzzerActivationRequest() != REQUEST_BUZZER_ONCE) |
| 881 { | |
| 882 requestBuzzerActivation(REQUEST_BUZZER_OFF); | |
| 883 } | |
| 951 | 884 |
| 38 | 885 menu.pageMemoryForNavigation = page; |
| 886 /* new test for 3button design */ | |
| 887 if(freshWithFlipPages) | |
| 888 { | |
| 889 menu.lineMemoryForNavigationForPage[page] = 0; | |
| 890 menu.modeFlipPages = 1; | |
| 891 } | |
| 892 else | |
| 893 { | |
| 894 menu.lineMemoryForNavigationForPage[page] = line; | |
| 895 menu.modeFlipPages = 0; | |
| 896 } | |
| 897 | |
| 898 set_globalState_Menu_Page(page); | |
| 899 | |
| 900 | |
| 901 change_CLUT_entry(CLUT_MenuLineSelectedSides, (CLUT_MenuPageGasOC + page - 1)); | |
| 902 change_CLUT_entry(CLUT_MenuLineSelectedSeperator, (CLUT_MenuPageGasOC + page - 1)); | |
| 903 | |
| 904 | |
| 905 if(((page == 6) || (page == 8)) && (menu.pageCountNumber[page-1] == 0)) | |
| 906 { | |
| 907 change_CLUT_entry(CLUT_MenuLineSelectedSides, (CLUT_MenuPageGasOC + page - 2)); | |
| 908 change_CLUT_entry(CLUT_MenuLineSelectedSeperator, (CLUT_MenuPageGasOC + page - 2)); | |
| 909 | |
| 910 } | |
| 911 | |
| 912 GFX_SetFrameTop(menu.StartAddressForPage[page]); | |
| 913 /* new test for 3button design */ | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
914 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
915 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
916 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
917 if(freshWithFlipPages) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
918 GFX_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 25, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
919 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
920 GFX_SetFrameBottom((tMdesignCursor.FBStartAdress) + 65*2*(line - 1), 0, 25, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
921 } |
| 38 | 922 else |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
923 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
924 if(freshWithFlipPages) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
925 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
926 GFX_SetFrameBottom((tMdesignSolo.FBStartAdress), 0, 480-390-KEY_LABEL_HIGH, 800, 390); //- (25 * 2 * 800), 0, 25, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
927 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
928 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
929 GFX_SetFrameBottom((tMdesignCursor.FBStartAdress + (390 - 65 *(line)) *2), 0,480-390-KEY_LABEL_HIGH, 800, 390); //480-390-KEY_LABEL_HIGH + 65*2*(line - 1) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
930 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
931 |
| 38 | 932 } |
| 933 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
934 static void block_diluent_handler(_Bool Unblock) |
| 38 | 935 { |
| 936 SStateList list; | |
| 937 static uint8_t linesAvailableForPageDiluent = 0; | |
| 938 get_idSpecificStateList(StMCG, &list); | |
| 939 | |
| 940 if(Unblock && linesAvailableForPageDiluent) | |
| 941 { | |
| 942 menu.linesAvailableForPage[list.page] = linesAvailableForPageDiluent; | |
| 943 } | |
| 944 else | |
| 945 { | |
| 946 linesAvailableForPageDiluent = menu.linesAvailableForPage[list.page]; | |
| 947 menu.linesAvailableForPage[list.page] = 0; | |
| 948 } | |
| 949 } | |
| 950 | |
| 951 void block_diluent_page(void) | |
| 952 { | |
| 953 block_diluent_handler(0); | |
| 954 } | |
| 955 | |
| 956 | |
| 957 void unblock_diluent_page(void) | |
| 958 { | |
| 959 block_diluent_handler(1); | |
| 960 } | |
| 961 | |
|
850
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
962 static void checkLineStatus() |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
963 { |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
964 switch(get_globalState()) |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
965 { |
|
1001
21142f4fa968
Cleanup menu structucture afer menu shift:
Ideenmodellierer
parents:
999
diff
changeset
|
966 case StMOption: tMCvOption_checkLineStatus(); |
| 851 | 967 break; |
|
850
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
968 case StMXTRA: tMXtra_checkLineStatus(); |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
969 break; |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
970 default: |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
971 break; |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
972 } |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
973 } |
| 38 | 974 |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
975 static void nextPage(void) |
| 38 | 976 { |
| 977 uint8_t page, line; | |
| 978 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
979 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
980 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
981 |
| 38 | 982 menu.pageMemoryForNavigation += 1; |
| 983 | |
| 984 findValidPosition(&page, &line); | |
| 985 menu.pageMemoryForNavigation = page; | |
| 986 /* new test for 3button design */ | |
| 987 //menu.lineMemoryForNavigationForPage[page] = line; | |
| 988 menu.lineMemoryForNavigationForPage[page] = 0; | |
| 989 menu.modeFlipPages = 1; | |
| 990 | |
| 991 set_globalState_Menu_Page(page); | |
| 992 | |
|
850
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
993 checkLineStatus(); /* some lines may be enabled / disabled depending on condition occuring outside the page scope => check if update is necessary */ |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
994 |
| 38 | 995 change_CLUT_entry(CLUT_MenuLineSelectedSides, (CLUT_MenuPageGasOC + page - 1)); |
| 996 change_CLUT_entry(CLUT_MenuLineSelectedSeperator, (CLUT_MenuPageGasOC + page - 1)); | |
| 997 | |
| 998 GFX_SetFrameTop(menu.StartAddressForPage[page]); | |
| 999 /* new test for 3button design */ | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1000 //GFX_SetFrameBottom((.FBStartAdress) + 65*2*(line - 1), 0, 25, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1001 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1002 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1003 GFX_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 25, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1004 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1005 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1006 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1007 GFX_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 65, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1008 } |
| 38 | 1009 } |
| 1010 | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1011 void selectPage(uint32_t selection) |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1012 { |
| 650 | 1013 uint8_t page; |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1014 SStateList idList; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1015 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1016 SSettings* pSettings; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1017 pSettings = settingsGetPointer(); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1018 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1019 // menu.pageMemoryForNavigation = selection; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1020 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1021 // findValidPosition(&page, &line); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1022 if(selection > MAXPAGES) /* selection via structure */ |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1023 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1024 get_idSpecificStateList(selection, &idList); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1025 page = idList.page; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1026 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1027 else |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1028 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1029 page = selection; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1030 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1031 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1032 if(menu.shadowPage[page]) /* backup base page in case a shadow was selected */ |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1033 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1034 menu.activeShadow = menu.pageMemoryForNavigation; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1035 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1036 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1037 menu.pageMemoryForNavigation = page; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1038 /* new test for 3button design */ |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1039 //menu.lineMemoryForNavigationForPage[page] = line; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1040 menu.lineMemoryForNavigationForPage[page] = 0; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1041 menu.modeFlipPages = 1; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1042 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1043 set_globalState_Menu_Page(page); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1044 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1045 change_CLUT_entry(CLUT_MenuLineSelectedSides, (CLUT_MenuPageGasOC + page - 1)); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1046 change_CLUT_entry(CLUT_MenuLineSelectedSeperator, (CLUT_MenuPageGasOC + page - 1)); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1047 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1048 GFX_SetFrameTop(menu.StartAddressForPage[page]); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1049 /* new test for 3button design */ |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1050 //GFX_SetFrameBottom((.FBStartAdress) + 65*2*(line - 1), 0, 25, 800, 390); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1051 if(!pSettings->FlipDisplay) |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1052 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1053 GFX_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 25, 800, 390); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1054 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1055 else |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1056 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1057 GFX_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 65, 800, 390); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1058 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1059 nextLine(); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1060 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1061 |
| 38 | 1062 |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1063 static void nextLine(void) |
| 38 | 1064 { |
| 1065 uint8_t page, line; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1066 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1067 pSettings = settingsGetPointer(); |
| 38 | 1068 |
| 1069 page = menu.pageMemoryForNavigation; | |
| 1070 menu.lineMemoryForNavigationForPage[page] += 1; | |
| 1071 | |
| 1072 findValidPosition(&page, &line); | |
| 1073 menu.lineMemoryForNavigationForPage[page] = line; | |
| 1074 | |
| 1075 /* new test for 3button design */ | |
| 1076 menu.modeFlipPages = 0; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1077 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1078 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1079 GFX_SetFrameBottom((tMdesignCursor.FBStartAdress) + 65*2*(line - 1), 0, 25, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1080 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1081 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1082 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1083 GFX_SetFrameBottom((tMdesignCursor.FBStartAdress)+ (390 - 65 *(line)) *2, 0, 480-390-KEY_LABEL_HIGH, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1084 } |
| 38 | 1085 } |
| 1086 | |
| 1087 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1088 static void stepBackMenu(void) |
| 38 | 1089 { |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1090 if(menu.activeShadow) /* restore base page */ |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1091 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1092 selectPage(menu.activeShadow); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1093 menu.activeShadow = 0; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1094 } |
| 38 | 1095 if(menu.modeFlipPages == 0) |
| 1096 { | |
| 1097 menu.lineMemoryForNavigationForPage[menu.pageMemoryForNavigation] = 0; | |
| 1098 menu.modeFlipPages = 1; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1099 if(!settingsGetPointer()->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1100 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1101 GFX_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 25, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1102 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1103 else |
|
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 GFX_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 480-390-KEY_LABEL_HIGH, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1106 } |
| 38 | 1107 } |
| 1108 else | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1109 { |
| 38 | 1110 exitMenu(); |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1111 } |
| 38 | 1112 } |
| 1113 | |
| 1114 | |
| 1115 void exitMenu(void) | |
| 1116 { | |
| 1117 set_globalState_tHome(); | |
| 1118 } | |
| 1119 | |
| 1120 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1121 static void stepForwardMenu(void) |
| 38 | 1122 { |
| 1123 if(menu.modeFlipPages == 1) | |
| 1124 { | |
| 1125 nextLine(); | |
| 1126 } | |
| 1127 else | |
| 1128 gotoMenuEdit(); | |
| 1129 } | |
| 1130 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1131 static void gotoMenuEdit(void) |
| 38 | 1132 { |
| 1133 uint8_t line; | |
| 1134 | |
| 1135 line = menu.lineMemoryForNavigationForPage[menu.pageMemoryForNavigation]; | |
| 1136 | |
| 1137 switch(get_globalState()) | |
| 1138 { | |
| 1139 case StMOG: | |
| 1140 openEdit_GasOC(line); | |
| 1141 break; | |
| 1142 case StMCG: | |
| 1143 openEdit_GasCC(line); | |
| 1144 break; | |
| 1145 case StMSP: | |
| 1146 openEdit_Setpoint(line); | |
| 1147 break; | |
| 1148 case StMXTRA: | |
| 1149 openEdit_Xtra(line); | |
| 1150 break; | |
| 1151 case StMDECO: | |
| 1152 openEdit_Deco(line); | |
| 1153 break; | |
| 1154 case StMDECOP: | |
| 1155 openEdit_DecoParameter(line); | |
| 1156 break; | |
| 1157 case StMPLAN: | |
| 1158 openEdit_Planner(line); | |
| 1159 break; | |
| 1160 case StMHARD: | |
| 1161 openEdit_Hardware(line); | |
| 1162 break; | |
| 1163 case StMSYS: | |
| 1164 openEdit_System(line); | |
| 1165 break; | |
| 507 | 1166 case StMCustom: |
| 1167 openEdit_Custom(line); | |
| 1168 break; | |
| 999 | 1169 case StMOption: |
| 1170 openEdit_CvOption(line); | |
| 1171 break; | |
| 38 | 1172 default: |
| 1173 break; | |
| 1174 } | |
| 1175 } | |
| 1176 | |
| 1177 | |
| 1178 void sendActionToMenu(uint8_t sendAction) | |
| 1179 { | |
| 1180 switch(sendAction) | |
| 1181 { | |
| 1182 case ACTION_BUTTON_ENTER: | |
| 1183 stepForwardMenu(); | |
| 1184 break; | |
| 1185 case ACTION_BUTTON_NEXT: | |
| 1186 if(menu.modeFlipPages) | |
| 1187 nextPage(); | |
| 1188 else | |
| 1189 nextLine(); | |
| 1190 break; | |
| 1191 case ACTION_TIMEOUT: | |
| 1192 case ACTION_MODE_CHANGE: | |
| 1193 case ACTION_BUTTON_BACK: | |
| 1194 /* new test for 3button design */ | |
| 1195 stepBackMenu(); | |
| 1196 break; | |
| 1197 default: | |
| 1198 break; | |
| 1199 case ACTION_IDLE_TICK: | |
| 1200 case ACTION_IDLE_SECOND: | |
| 1201 break; | |
| 1202 } | |
| 1203 /* tMC_OC_Gas(StMOG1, pSettings); */ | |
| 1204 } | |
| 1205 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1206 static void tMenu_write(uint8_t page, char *text, char *subtext) |
| 38 | 1207 { |
| 1208 if(page > MAXPAGES) | |
| 1209 return; | |
| 1210 if(menu.linesAvailableForPage[page] == 0) | |
| 1211 return; | |
| 1212 | |
| 1213 tMscreen.FBStartAdress = menu.StartAddressForPage[page]; | |
| 1214 GFX_write_string(&FontT48, &tMwindow, text,1); | |
| 1215 if((*subtext) && (menu.linesAvailableForPage[page] < 6)) | |
| 1216 { | |
| 1217 GFX_write_string(&FontT42, &tMwindow, subtext, (menu.linesAvailableForPage[page] + 1)); | |
| 1218 } | |
| 1219 } | |
| 1220 | |
| 1221 | |
| 1222 /* Private functions ---------------------------------------------------------*/ | |
| 1223 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1224 static void draw_tMdesignSubUnselected(uint32_t *ppDestination) |
| 38 | 1225 { |
| 1226 union al88_u | |
| 1227 { | |
| 1228 uint8_t al8[2]; | |
| 1229 uint16_t al88; | |
| 1230 }; | |
| 1231 | |
|
130
b7689d9e888a
Minor changes to improved code quality and to eliminate warnings
Ideenmodellierer
parents:
122
diff
changeset
|
1232 uint16_t* prunning = (uint16_t*)*ppDestination; |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1233 |
| 38 | 1234 union al88_u color_seperator; |
| 1235 union al88_u color_unselected; | |
| 1236 int i; | |
| 1237 | |
| 1238 color_seperator.al8[0] = CLUT_MenuLineUnselectedSeperator; | |
| 1239 color_unselected.al8[0] = CLUT_MenuLineUnselected; | |
| 1240 | |
| 1241 color_seperator.al8[1] = 0xFF; | |
| 1242 color_unselected.al8[1] = 0xFF; | |
| 1243 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1244 *(__IO uint16_t*)prunning++ = color_seperator.al88; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1245 *(__IO uint16_t*)prunning++ = color_seperator.al88; |
| 38 | 1246 |
| 1247 for(i = 61; i > 0; i--) | |
| 1248 { | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1249 *(__IO uint16_t*)prunning++ = color_unselected.al88; |
| 38 | 1250 } |
| 1251 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1252 *(__IO uint16_t*)prunning++ = color_seperator.al88; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1253 *(__IO uint16_t*)prunning++ = color_seperator.al88; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1254 |
|
130
b7689d9e888a
Minor changes to improved code quality and to eliminate warnings
Ideenmodellierer
parents:
122
diff
changeset
|
1255 *ppDestination = (uint32_t)prunning; |
| 38 | 1256 } |
| 1257 | |
| 1258 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1259 static void draw_tMdesignSubSelected(uint32_t *ppDestination) |
| 38 | 1260 { |
| 1261 union al88_u | |
| 1262 { | |
| 1263 uint8_t al8[2]; | |
| 1264 uint16_t al88; | |
| 1265 }; | |
| 1266 | |
| 1267 union al88_u color_selected; | |
| 1268 union al88_u color_seperator; | |
| 1269 int i; | |
| 1270 | |
| 1271 color_selected.al8[0] = CLUT_MenuLineSelected; | |
| 1272 color_selected.al8[1] = 0xFF; | |
| 1273 | |
| 1274 color_seperator.al8[0] = CLUT_MenuLineSelectedSeperator; | |
| 1275 color_seperator.al8[1] = 0xFF; | |
| 1276 | |
| 1277 *(__IO uint16_t*)*ppDestination = color_seperator.al88; | |
| 1278 *ppDestination += 2; | |
| 1279 *(__IO uint16_t*)*ppDestination = color_seperator.al88; | |
| 1280 *ppDestination += 2; | |
| 1281 | |
| 1282 for(i = 61; i > 0; i--) | |
| 1283 { | |
| 1284 *(__IO uint16_t*)*ppDestination = color_selected.al88; | |
| 1285 *ppDestination += 2; | |
| 1286 } | |
| 1287 | |
| 1288 *(__IO uint16_t*)*ppDestination = color_seperator.al88; | |
| 1289 *ppDestination += 2; | |
| 1290 *(__IO uint16_t*)*ppDestination = color_seperator.al88; | |
| 1291 *ppDestination += 2; | |
| 1292 } | |
| 1293 | |
| 1294 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1295 static void draw_tMdesignSubSelectedBorder(uint32_t *ppDestination) |
| 38 | 1296 { |
| 1297 union al88_u | |
| 1298 { | |
| 1299 uint8_t al8[2]; | |
| 1300 uint16_t al88; | |
| 1301 }; | |
| 1302 | |
| 1303 union al88_u color_selected_sides; | |
| 1304 | |
| 1305 int i; | |
| 1306 | |
| 1307 color_selected_sides.al8[0] = CLUT_MenuLineSelectedSides; | |
| 1308 color_selected_sides.al8[1] = 0xFF; | |
| 1309 | |
| 1310 for(i = 65; i > 0; i--) | |
| 1311 { | |
| 1312 *(__IO uint16_t*)*ppDestination = color_selected_sides.al88; | |
| 1313 *ppDestination += 2; | |
| 1314 } | |
| 1315 } | |
| 1316 | |
| 1317 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1318 static void draw_tMcursorDesign(void) |
| 38 | 1319 { |
| 1320 int i,j; | |
| 1321 uint32_t pDestination; | |
| 1322 | |
| 1323 pDestination = tMdesignCursor.FBStartAdress; | |
| 1324 | |
| 1325 for(j = 801; j > 0; j--) | |
| 1326 { | |
| 1327 for(i = 5; i > 0; i--) | |
| 1328 { | |
| 1329 draw_tMdesignSubUnselected(&pDestination); | |
| 1330 } | |
| 1331 if((j > 787) || (j < 17)) | |
| 1332 draw_tMdesignSubSelectedBorder(&pDestination); | |
| 1333 else | |
| 1334 draw_tMdesignSubSelected(&pDestination); | |
| 1335 } | |
| 1336 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1337 /* Draw menu background boxes which are visible if nothing is selected */ |
| 38 | 1338 pDestination = tMdesignSolo.FBStartAdress; |
| 1339 | |
| 1340 for(j = 801; j > 0; j--) | |
| 1341 { | |
| 1342 for(i = 6; i > 0; i--) | |
| 1343 { | |
| 1344 draw_tMdesignSubUnselected(&pDestination); | |
| 1345 } | |
| 1346 } | |
| 1347 } | |
| 1348 | |
| 1349 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1350 static void draw_tMheader(uint8_t page) |
| 38 | 1351 { |
| 1352 union al88_u | |
| 1353 { | |
| 1354 uint8_t al8[2]; | |
| 1355 uint16_t al88; | |
| 1356 }; | |
| 1357 union al88_u color_top; | |
| 1358 int i,j, k, k4text; | |
| 1359 uint32_t pBackup; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1360 uint16_t* pDestination; |
| 38 | 1361 uint8_t colorText; |
| 1362 uint16_t positionText; | |
| 1363 uint8_t pageText; | |
| 1364 | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1365 char text8max[MAXPAGES+1][8] = |
| 38 | 1366 { "", |
| 1367 "OC", | |
| 1368 "CC", | |
| 999 | 1369 "", |
| 38 | 1370 "DATA", |
| 1371 "DECO", | |
| 1372 "", | |
| 1373 "SYS", | |
| 1374 "", | |
| 507 | 1375 "", |
| 999 | 1376 "", |
| 507 | 1377 "SIM" |
| 38 | 1378 }; |
| 1379 | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1380 _Bool spacing[MAXPAGES+1] = |
| 38 | 1381 { 0, |
| 999 | 1382 1, // behind OC |
| 38 | 1383 0, // behind CC |
| 1384 1, // behind SP | |
| 1385 1, // behind DATA | |
| 1386 0, // behind DECO1 | |
| 1387 1, // behind DECO2 | |
| 1388 0, // behind SYS1 | |
| 507 | 1389 0, // behind SYS2 |
| 999 | 1390 0, // behind SYS3 |
| 1391 1, // behind SYS4 | |
| 38 | 1392 1, // behind SIM |
| 1393 0 | |
| 1394 }; | |
| 1395 | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1396 if(actual_menu_content == MENU_SURFACE) |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1397 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1398 spacing[3] = 0; /* Display extra menu directly after setpoint */ |
| 999 | 1399 memset(text8max[4],0,8); |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1400 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1401 |
| 38 | 1402 pBackup = tMscreen.FBStartAdress; |
| 1403 tMscreen.FBStartAdress = menu.StartAddressForPage[page]; | |
|
130
b7689d9e888a
Minor changes to improved code quality and to eliminate warnings
Ideenmodellierer
parents:
122
diff
changeset
|
1404 pDestination = (uint16_t*) menu.StartAddressForPage[page]; |
| 38 | 1405 positionText = 10; |
| 1406 pageText = page; | |
| 1407 | |
| 1408 gfx_write_page_number(&tMscreen ,menu.pageCountNumber[page],menu.pageCountTotal,0); | |
| 1409 | |
| 1410 while((text8max[pageText][0] == 0) && (pageText > 1)) | |
| 1411 { | |
| 1412 pageText--; | |
| 1413 } | |
| 1414 | |
| 1415 for(k = 1; k <= MAXPAGES; k++) | |
| 1416 { | |
| 1417 if(menu.pageCountNumber[k] != 0) | |
| 1418 { | |
| 1419 k4text = k; // new hw 170522 | |
| 1420 if((text8max[k][0] == 0) && (menu.pageCountNumber[k-1] == 0)) | |
| 1421 k4text = k-1; | |
| 1422 | |
| 1423 color_top.al8[0] = CLUT_MenuPageGasOC + k - 1; | |
|
169
842f57bbaaad
Bugfix: highlight the menu underline correctly on selected state
Jan Mulder <jlmulder@xs4all.nl>
parents:
167
diff
changeset
|
1424 if (k == page) |
| 38 | 1425 { |
| 1426 color_top.al8[1] = 0xFF; | |
| 1427 } | |
| 1428 else | |
| 1429 { | |
| 1430 color_top.al8[1] = 0x50; | |
| 1431 } | |
| 1432 | |
| 1433 if(k4text == pageText) | |
| 1434 { | |
| 1435 colorText = CLUT_Font020; | |
| 1436 } | |
| 1437 else | |
| 1438 { | |
| 1439 colorText = CLUT_Font021; | |
| 1440 } | |
| 1441 | |
| 1442 write_content_simple(&tMscreen,positionText,775,0,&FontT42,text8max[k4text],colorText); | |
| 1443 /* | |
| 1444 write_content_simple(&tMscreen,positionText,775,0,&FontT42,text8max[k],colorText); | |
| 1445 if((text8max[k][0] == 0) && (menu.pageCountNumber[k-1] == 0)) | |
| 1446 write_content_simple(&tMscreen,positionText,775,0,&FontT42,text8max[k-1],colorText); | |
| 1447 */ | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1448 /* Draw color bars */ |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1449 if(!settingsGetPointer()->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1450 { |
| 999 | 1451 pDestination += TAB_BAR_SPACING * 480; |
| 38 | 1452 |
| 999 | 1453 for(j = TAB_BAR_WIDTH; j > 0; j--) |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1454 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1455 pDestination += (390 + 26); |
| 38 | 1456 |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1457 for(i = 16; i > 0; i--) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1458 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1459 *(__IO uint16_t*)pDestination++ = color_top.al88; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1460 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1461 pDestination += 48; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1462 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1463 |
| 999 | 1464 pDestination += TAB_BAR_SPACING * 480; |
| 1465 positionText += TAB_BAR_WIDTH + 2* TAB_BAR_SPACING; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1466 |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1467 if(((k == 4) && (actual_menu_content != MENU_SURFACE)) || ((k == 6) && (menu.pageCountNumber[5] == 0))) |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1468 { |
| 999 | 1469 pDestination += (TAB_BAR_WIDTH + 2* TAB_BAR_SPACING) * 480; |
| 1470 positionText += TAB_BAR_WIDTH + 2* TAB_BAR_SPACING; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1471 } |
| 38 | 1472 |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1473 if(spacing[k]) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1474 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1475 pDestination += 35 * 480; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1476 positionText += 35; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1477 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1478 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1479 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1480 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1481 pDestination += (800 - 5)* 480; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1482 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1483 for(j = 60; j > 0; j--) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1484 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1485 pDestination -= (390 + 26); |
| 38 | 1486 |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1487 for(i = 16; i > 0; i--) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1488 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1489 *(__IO uint16_t*)pDestination-- = color_top.al88; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1490 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1491 pDestination -= 48; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1492 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1493 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1494 pDestination -= (800) * 480; |
| 824 | 1495 positionText += 66; |
| 38 | 1496 |
|
658
4df22790dc0c
Bugfix handling of new menu tab in flipped mode:
Ideenmodellierer
parents:
650
diff
changeset
|
1497 if(((k == 4) && (actual_menu_content != MENU_SURFACE)) || ((k == 6) && (menu.pageCountNumber[5] == 0))) |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1498 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1499 pDestination -= 70 * 480; |
| 824 | 1500 positionText += 66; |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1501 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1502 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1503 if(spacing[k]) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1504 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1505 pDestination -= 35 * 480; |
| 824 | 1506 positionText += 31; |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1507 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1508 } |
| 38 | 1509 } |
| 1510 } | |
| 1511 tMscreen.FBStartAdress = pBackup; | |
| 1512 } | |
|
774
6169309d6eb9
more menu items for the compass menu: Delete bearing, and reset to land based bearing. I have also re-enabled the real time bearing display in the menu - makes it easier to set the correct bearing. (mikeller)
heinrichsweikamp
parents:
662
diff
changeset
|
1513 |
|
6169309d6eb9
more menu items for the compass menu: Delete bearing, and reset to land based bearing. I have also re-enabled the real time bearing display in the menu - makes it easier to set the correct bearing. (mikeller)
heinrichsweikamp
parents:
662
diff
changeset
|
1514 |
|
6169309d6eb9
more menu items for the compass menu: Delete bearing, and reset to land based bearing. I have also re-enabled the real time bearing display in the menu - makes it easier to set the correct bearing. (mikeller)
heinrichsweikamp
parents:
662
diff
changeset
|
1515 char *makeGrey(bool isGrey) |
|
6169309d6eb9
more menu items for the compass menu: Delete bearing, and reset to land based bearing. I have also re-enabled the real time bearing display in the menu - makes it easier to set the correct bearing. (mikeller)
heinrichsweikamp
parents:
662
diff
changeset
|
1516 { |
|
6169309d6eb9
more menu items for the compass menu: Delete bearing, and reset to land based bearing. I have also re-enabled the real time bearing display in the menu - makes it easier to set the correct bearing. (mikeller)
heinrichsweikamp
parents:
662
diff
changeset
|
1517 return isGrey ? "\031" : ""; |
|
6169309d6eb9
more menu items for the compass menu: Delete bearing, and reset to land based bearing. I have also re-enabled the real time bearing display in the menu - makes it easier to set the correct bearing. (mikeller)
heinrichsweikamp
parents:
662
diff
changeset
|
1518 } |
