Mercurial > public > ostc4
annotate Discovery/Src/tMenu.c @ 999:ac25c35a3c97 GasConsumption
New Tab for dynamic configuration:
since more and more functions are added to the OSTC the space in the menus is getting short. To avoid problems a new Tab within the SYS menu has been added which shall focus an functions / views which are configuration dependend. In future this menu may have dynamic content dependend on which views are active or which sensors are connected. The Cview for compass and Timer have been moved to the new tab in the first step
| author | Ideenmodellierer |
|---|---|
| date | Mon, 28 Apr 2025 19:47:41 +0200 |
| parents | 8507a87f6401 |
| children | 21142f4fa968 |
| 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; | |
| 38 | 848 default: |
| 849 break; | |
| 850 } | |
| 851 } | |
| 852 | |
| 853 void openMenu_first_page_with_OC_gas_update(void) | |
| 854 { | |
| 855 menu.pageMemoryForNavigation = 1; | |
| 856 for(int i=0;i<=MAXPAGES;i++) | |
| 857 menu.lineMemoryForNavigationForPage[i] = 0; | |
| 858 | |
| 859 set_globalState(StMOG); | |
| 860 updateMenu(); | |
| 861 openMenu(1); | |
| 862 } | |
| 863 | |
| 864 | |
| 865 void openMenu(uint8_t freshWithFlipPages) | |
| 866 { | |
| 867 uint8_t page, line; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
868 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
869 pSettings = settingsGetPointer(); |
| 38 | 870 |
| 871 findValidPosition(&page, &line); | |
| 872 if((page == 0) || (line == 0)) | |
| 873 return; | |
| 874 | |
| 996 | 875 if( getBuzzerActivationRequest() != REQUEST_BUZZER_ONCE) |
| 876 { | |
| 877 requestBuzzerActivation(REQUEST_BUZZER_OFF); | |
| 878 } | |
| 951 | 879 |
| 38 | 880 menu.pageMemoryForNavigation = page; |
| 881 /* new test for 3button design */ | |
| 882 if(freshWithFlipPages) | |
| 883 { | |
| 884 menu.lineMemoryForNavigationForPage[page] = 0; | |
| 885 menu.modeFlipPages = 1; | |
| 886 } | |
| 887 else | |
| 888 { | |
| 889 menu.lineMemoryForNavigationForPage[page] = line; | |
| 890 menu.modeFlipPages = 0; | |
| 891 } | |
| 892 | |
| 893 set_globalState_Menu_Page(page); | |
| 894 | |
| 895 | |
| 896 change_CLUT_entry(CLUT_MenuLineSelectedSides, (CLUT_MenuPageGasOC + page - 1)); | |
| 897 change_CLUT_entry(CLUT_MenuLineSelectedSeperator, (CLUT_MenuPageGasOC + page - 1)); | |
| 898 | |
| 899 | |
| 900 if(((page == 6) || (page == 8)) && (menu.pageCountNumber[page-1] == 0)) | |
| 901 { | |
| 902 change_CLUT_entry(CLUT_MenuLineSelectedSides, (CLUT_MenuPageGasOC + page - 2)); | |
| 903 change_CLUT_entry(CLUT_MenuLineSelectedSeperator, (CLUT_MenuPageGasOC + page - 2)); | |
| 904 | |
| 905 } | |
| 906 | |
| 907 GFX_SetFrameTop(menu.StartAddressForPage[page]); | |
| 908 /* new test for 3button design */ | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
909 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
910 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
911 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
912 if(freshWithFlipPages) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
913 GFX_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 25, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
914 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
915 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
|
916 } |
| 38 | 917 else |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
918 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
919 if(freshWithFlipPages) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
920 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
921 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
|
922 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
923 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
924 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
|
925 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
926 |
| 38 | 927 } |
| 928 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
929 static void block_diluent_handler(_Bool Unblock) |
| 38 | 930 { |
| 931 SStateList list; | |
| 932 static uint8_t linesAvailableForPageDiluent = 0; | |
| 933 get_idSpecificStateList(StMCG, &list); | |
| 934 | |
| 935 if(Unblock && linesAvailableForPageDiluent) | |
| 936 { | |
| 937 menu.linesAvailableForPage[list.page] = linesAvailableForPageDiluent; | |
| 938 } | |
| 939 else | |
| 940 { | |
| 941 linesAvailableForPageDiluent = menu.linesAvailableForPage[list.page]; | |
| 942 menu.linesAvailableForPage[list.page] = 0; | |
| 943 } | |
| 944 } | |
| 945 | |
| 946 void block_diluent_page(void) | |
| 947 { | |
| 948 block_diluent_handler(0); | |
| 949 } | |
| 950 | |
| 951 | |
| 952 void unblock_diluent_page(void) | |
| 953 { | |
| 954 block_diluent_handler(1); | |
| 955 } | |
| 956 | |
|
850
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
957 static void checkLineStatus() |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
958 { |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
959 switch(get_globalState()) |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
960 { |
| 851 | 961 case StMSYS: tMSystem_checkLineStatus(); |
| 962 break; | |
|
850
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
963 case StMXTRA: tMXtra_checkLineStatus(); |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
964 break; |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
965 default: |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
966 break; |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
967 } |
|
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
968 } |
| 38 | 969 |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
970 static void nextPage(void) |
| 38 | 971 { |
| 972 uint8_t page, line; | |
| 973 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
974 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
975 pSettings = settingsGetPointer(); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
976 |
| 38 | 977 menu.pageMemoryForNavigation += 1; |
| 978 | |
| 979 findValidPosition(&page, &line); | |
| 980 menu.pageMemoryForNavigation = page; | |
| 981 /* new test for 3button design */ | |
| 982 //menu.lineMemoryForNavigationForPage[page] = line; | |
| 983 menu.lineMemoryForNavigationForPage[page] = 0; | |
| 984 menu.modeFlipPages = 1; | |
| 985 | |
| 986 set_globalState_Menu_Page(page); | |
| 987 | |
|
850
bc2fcd002fc4
Check line enable/disable state when a new page is selected:
Ideenmodellierer
parents:
824
diff
changeset
|
988 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
|
989 |
| 38 | 990 change_CLUT_entry(CLUT_MenuLineSelectedSides, (CLUT_MenuPageGasOC + page - 1)); |
| 991 change_CLUT_entry(CLUT_MenuLineSelectedSeperator, (CLUT_MenuPageGasOC + page - 1)); | |
| 992 | |
| 993 GFX_SetFrameTop(menu.StartAddressForPage[page]); | |
| 994 /* new test for 3button design */ | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
995 //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
|
996 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
997 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
998 GFX_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 25, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
999 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1000 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1001 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1002 GFX_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 65, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1003 } |
| 38 | 1004 } |
| 1005 | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1006 void selectPage(uint32_t selection) |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1007 { |
| 650 | 1008 uint8_t page; |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1009 SStateList idList; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1010 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1011 SSettings* pSettings; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1012 pSettings = settingsGetPointer(); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1013 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1014 // menu.pageMemoryForNavigation = selection; |
|
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 // findValidPosition(&page, &line); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1017 if(selection > MAXPAGES) /* selection via structure */ |
|
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 get_idSpecificStateList(selection, &idList); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1020 page = idList.page; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1021 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1022 else |
|
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 page = selection; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1025 } |
|
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 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
|
1028 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1029 menu.activeShadow = menu.pageMemoryForNavigation; |
|
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 menu.pageMemoryForNavigation = page; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1033 /* new test for 3button design */ |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1034 //menu.lineMemoryForNavigationForPage[page] = line; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1035 menu.lineMemoryForNavigationForPage[page] = 0; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1036 menu.modeFlipPages = 1; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1037 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1038 set_globalState_Menu_Page(page); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1039 |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1040 change_CLUT_entry(CLUT_MenuLineSelectedSides, (CLUT_MenuPageGasOC + page - 1)); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1041 change_CLUT_entry(CLUT_MenuLineSelectedSeperator, (CLUT_MenuPageGasOC + page - 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 GFX_SetFrameTop(menu.StartAddressForPage[page]); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1044 /* new test for 3button design */ |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1045 //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
|
1046 if(!pSettings->FlipDisplay) |
|
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_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 25, 800, 390); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1049 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1050 else |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1051 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1052 GFX_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 65, 800, 390); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1053 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1054 nextLine(); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1055 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1056 |
| 38 | 1057 |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1058 static void nextLine(void) |
| 38 | 1059 { |
| 1060 uint8_t page, line; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1061 SSettings* pSettings; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1062 pSettings = settingsGetPointer(); |
| 38 | 1063 |
| 1064 page = menu.pageMemoryForNavigation; | |
| 1065 menu.lineMemoryForNavigationForPage[page] += 1; | |
| 1066 | |
| 1067 findValidPosition(&page, &line); | |
| 1068 menu.lineMemoryForNavigationForPage[page] = line; | |
| 1069 | |
| 1070 /* new test for 3button design */ | |
| 1071 menu.modeFlipPages = 0; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1072 if(!pSettings->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1073 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1074 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
|
1075 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1076 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1077 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1078 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
|
1079 } |
| 38 | 1080 } |
| 1081 | |
| 1082 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1083 static void stepBackMenu(void) |
| 38 | 1084 { |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1085 if(menu.activeShadow) /* restore base page */ |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1086 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1087 selectPage(menu.activeShadow); |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1088 menu.activeShadow = 0; |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1089 } |
| 38 | 1090 if(menu.modeFlipPages == 0) |
| 1091 { | |
| 1092 menu.lineMemoryForNavigationForPage[menu.pageMemoryForNavigation] = 0; | |
| 1093 menu.modeFlipPages = 1; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1094 if(!settingsGetPointer()->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1095 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1096 GFX_SetFrameBottom(tMdesignSolo.FBStartAdress, 0, 25, 800, 390); |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1097 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1098 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1099 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1100 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
|
1101 } |
| 38 | 1102 } |
| 1103 else | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1104 { |
| 38 | 1105 exitMenu(); |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1106 } |
| 38 | 1107 } |
| 1108 | |
| 1109 | |
| 1110 void exitMenu(void) | |
| 1111 { | |
| 1112 set_globalState_tHome(); | |
| 1113 } | |
| 1114 | |
| 1115 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1116 static void stepForwardMenu(void) |
| 38 | 1117 { |
| 1118 if(menu.modeFlipPages == 1) | |
| 1119 { | |
| 1120 nextLine(); | |
| 1121 } | |
| 1122 else | |
| 1123 gotoMenuEdit(); | |
| 1124 } | |
| 1125 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1126 static void gotoMenuEdit(void) |
| 38 | 1127 { |
| 1128 uint8_t line; | |
| 1129 | |
| 1130 line = menu.lineMemoryForNavigationForPage[menu.pageMemoryForNavigation]; | |
| 1131 | |
| 1132 switch(get_globalState()) | |
| 1133 { | |
| 1134 case StMOG: | |
| 1135 openEdit_GasOC(line); | |
| 1136 break; | |
| 1137 case StMCG: | |
| 1138 openEdit_GasCC(line); | |
| 1139 break; | |
| 1140 case StMSP: | |
| 1141 openEdit_Setpoint(line); | |
| 1142 break; | |
| 1143 case StMXTRA: | |
| 1144 openEdit_Xtra(line); | |
| 1145 break; | |
| 1146 case StMDECO: | |
| 1147 openEdit_Deco(line); | |
| 1148 break; | |
| 1149 case StMDECOP: | |
| 1150 openEdit_DecoParameter(line); | |
| 1151 break; | |
| 1152 case StMPLAN: | |
| 1153 openEdit_Planner(line); | |
| 1154 break; | |
| 1155 case StMHARD: | |
| 1156 openEdit_Hardware(line); | |
| 1157 break; | |
| 1158 case StMSYS: | |
| 1159 openEdit_System(line); | |
| 1160 break; | |
| 507 | 1161 case StMCustom: |
| 1162 openEdit_Custom(line); | |
| 1163 break; | |
| 999 | 1164 case StMOption: |
| 1165 openEdit_CvOption(line); | |
| 1166 break; | |
| 38 | 1167 default: |
| 1168 break; | |
| 1169 } | |
| 1170 } | |
| 1171 | |
| 1172 | |
| 1173 void sendActionToMenu(uint8_t sendAction) | |
| 1174 { | |
| 1175 switch(sendAction) | |
| 1176 { | |
| 1177 case ACTION_BUTTON_ENTER: | |
| 1178 stepForwardMenu(); | |
| 1179 break; | |
| 1180 case ACTION_BUTTON_NEXT: | |
| 1181 if(menu.modeFlipPages) | |
| 1182 nextPage(); | |
| 1183 else | |
| 1184 nextLine(); | |
| 1185 break; | |
| 1186 case ACTION_TIMEOUT: | |
| 1187 case ACTION_MODE_CHANGE: | |
| 1188 case ACTION_BUTTON_BACK: | |
| 1189 /* new test for 3button design */ | |
| 1190 stepBackMenu(); | |
| 1191 break; | |
| 1192 default: | |
| 1193 break; | |
| 1194 case ACTION_IDLE_TICK: | |
| 1195 case ACTION_IDLE_SECOND: | |
| 1196 break; | |
| 1197 } | |
| 1198 /* tMC_OC_Gas(StMOG1, pSettings); */ | |
| 1199 } | |
| 1200 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1201 static void tMenu_write(uint8_t page, char *text, char *subtext) |
| 38 | 1202 { |
| 1203 if(page > MAXPAGES) | |
| 1204 return; | |
| 1205 if(menu.linesAvailableForPage[page] == 0) | |
| 1206 return; | |
| 1207 | |
| 1208 tMscreen.FBStartAdress = menu.StartAddressForPage[page]; | |
| 1209 GFX_write_string(&FontT48, &tMwindow, text,1); | |
| 1210 if((*subtext) && (menu.linesAvailableForPage[page] < 6)) | |
| 1211 { | |
| 1212 GFX_write_string(&FontT42, &tMwindow, subtext, (menu.linesAvailableForPage[page] + 1)); | |
| 1213 } | |
| 1214 } | |
| 1215 | |
| 1216 | |
| 1217 /* Private functions ---------------------------------------------------------*/ | |
| 1218 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1219 static void draw_tMdesignSubUnselected(uint32_t *ppDestination) |
| 38 | 1220 { |
| 1221 union al88_u | |
| 1222 { | |
| 1223 uint8_t al8[2]; | |
| 1224 uint16_t al88; | |
| 1225 }; | |
| 1226 | |
|
130
b7689d9e888a
Minor changes to improved code quality and to eliminate warnings
Ideenmodellierer
parents:
122
diff
changeset
|
1227 uint16_t* prunning = (uint16_t*)*ppDestination; |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1228 |
| 38 | 1229 union al88_u color_seperator; |
| 1230 union al88_u color_unselected; | |
| 1231 int i; | |
| 1232 | |
| 1233 color_seperator.al8[0] = CLUT_MenuLineUnselectedSeperator; | |
| 1234 color_unselected.al8[0] = CLUT_MenuLineUnselected; | |
| 1235 | |
| 1236 color_seperator.al8[1] = 0xFF; | |
| 1237 color_unselected.al8[1] = 0xFF; | |
| 1238 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1239 *(__IO uint16_t*)prunning++ = color_seperator.al88; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1240 *(__IO uint16_t*)prunning++ = color_seperator.al88; |
| 38 | 1241 |
| 1242 for(i = 61; i > 0; i--) | |
| 1243 { | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1244 *(__IO uint16_t*)prunning++ = color_unselected.al88; |
| 38 | 1245 } |
| 1246 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1247 *(__IO uint16_t*)prunning++ = color_seperator.al88; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1248 *(__IO uint16_t*)prunning++ = color_seperator.al88; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1249 |
|
130
b7689d9e888a
Minor changes to improved code quality and to eliminate warnings
Ideenmodellierer
parents:
122
diff
changeset
|
1250 *ppDestination = (uint32_t)prunning; |
| 38 | 1251 } |
| 1252 | |
| 1253 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1254 static void draw_tMdesignSubSelected(uint32_t *ppDestination) |
| 38 | 1255 { |
| 1256 union al88_u | |
| 1257 { | |
| 1258 uint8_t al8[2]; | |
| 1259 uint16_t al88; | |
| 1260 }; | |
| 1261 | |
| 1262 union al88_u color_selected; | |
| 1263 union al88_u color_seperator; | |
| 1264 int i; | |
| 1265 | |
| 1266 color_selected.al8[0] = CLUT_MenuLineSelected; | |
| 1267 color_selected.al8[1] = 0xFF; | |
| 1268 | |
| 1269 color_seperator.al8[0] = CLUT_MenuLineSelectedSeperator; | |
| 1270 color_seperator.al8[1] = 0xFF; | |
| 1271 | |
| 1272 *(__IO uint16_t*)*ppDestination = color_seperator.al88; | |
| 1273 *ppDestination += 2; | |
| 1274 *(__IO uint16_t*)*ppDestination = color_seperator.al88; | |
| 1275 *ppDestination += 2; | |
| 1276 | |
| 1277 for(i = 61; i > 0; i--) | |
| 1278 { | |
| 1279 *(__IO uint16_t*)*ppDestination = color_selected.al88; | |
| 1280 *ppDestination += 2; | |
| 1281 } | |
| 1282 | |
| 1283 *(__IO uint16_t*)*ppDestination = color_seperator.al88; | |
| 1284 *ppDestination += 2; | |
| 1285 *(__IO uint16_t*)*ppDestination = color_seperator.al88; | |
| 1286 *ppDestination += 2; | |
| 1287 } | |
| 1288 | |
| 1289 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1290 static void draw_tMdesignSubSelectedBorder(uint32_t *ppDestination) |
| 38 | 1291 { |
| 1292 union al88_u | |
| 1293 { | |
| 1294 uint8_t al8[2]; | |
| 1295 uint16_t al88; | |
| 1296 }; | |
| 1297 | |
| 1298 union al88_u color_selected_sides; | |
| 1299 | |
| 1300 int i; | |
| 1301 | |
| 1302 color_selected_sides.al8[0] = CLUT_MenuLineSelectedSides; | |
| 1303 color_selected_sides.al8[1] = 0xFF; | |
| 1304 | |
| 1305 for(i = 65; i > 0; i--) | |
| 1306 { | |
| 1307 *(__IO uint16_t*)*ppDestination = color_selected_sides.al88; | |
| 1308 *ppDestination += 2; | |
| 1309 } | |
| 1310 } | |
| 1311 | |
| 1312 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1313 static void draw_tMcursorDesign(void) |
| 38 | 1314 { |
| 1315 int i,j; | |
| 1316 uint32_t pDestination; | |
| 1317 | |
| 1318 pDestination = tMdesignCursor.FBStartAdress; | |
| 1319 | |
| 1320 for(j = 801; j > 0; j--) | |
| 1321 { | |
| 1322 for(i = 5; i > 0; i--) | |
| 1323 { | |
| 1324 draw_tMdesignSubUnselected(&pDestination); | |
| 1325 } | |
| 1326 if((j > 787) || (j < 17)) | |
| 1327 draw_tMdesignSubSelectedBorder(&pDestination); | |
| 1328 else | |
| 1329 draw_tMdesignSubSelected(&pDestination); | |
| 1330 } | |
| 1331 | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1332 /* Draw menu background boxes which are visible if nothing is selected */ |
| 38 | 1333 pDestination = tMdesignSolo.FBStartAdress; |
| 1334 | |
| 1335 for(j = 801; j > 0; j--) | |
| 1336 { | |
| 1337 for(i = 6; i > 0; i--) | |
| 1338 { | |
| 1339 draw_tMdesignSubUnselected(&pDestination); | |
| 1340 } | |
| 1341 } | |
| 1342 } | |
| 1343 | |
| 1344 | |
|
167
5e41365ff0d8
cleanup: local data and functions can be static (tMenu)
Jan Mulder <jlmulder@xs4all.nl>
parents:
130
diff
changeset
|
1345 static void draw_tMheader(uint8_t page) |
| 38 | 1346 { |
| 1347 union al88_u | |
| 1348 { | |
| 1349 uint8_t al8[2]; | |
| 1350 uint16_t al88; | |
| 1351 }; | |
| 1352 union al88_u color_top; | |
| 1353 int i,j, k, k4text; | |
| 1354 uint32_t pBackup; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1355 uint16_t* pDestination; |
| 38 | 1356 uint8_t colorText; |
| 1357 uint16_t positionText; | |
| 1358 uint8_t pageText; | |
| 1359 | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1360 char text8max[MAXPAGES+1][8] = |
| 38 | 1361 { "", |
| 1362 "OC", | |
| 1363 "CC", | |
| 999 | 1364 "", |
| 38 | 1365 "DATA", |
| 1366 "DECO", | |
| 1367 "", | |
| 1368 "SYS", | |
| 1369 "", | |
| 507 | 1370 "", |
| 999 | 1371 "", |
| 507 | 1372 "SIM" |
| 38 | 1373 }; |
| 1374 | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1375 _Bool spacing[MAXPAGES+1] = |
| 38 | 1376 { 0, |
| 999 | 1377 1, // behind OC |
| 38 | 1378 0, // behind CC |
| 1379 1, // behind SP | |
| 1380 1, // behind DATA | |
| 1381 0, // behind DECO1 | |
| 1382 1, // behind DECO2 | |
| 1383 0, // behind SYS1 | |
| 507 | 1384 0, // behind SYS2 |
| 999 | 1385 0, // behind SYS3 |
| 1386 1, // behind SYS4 | |
| 38 | 1387 1, // behind SIM |
| 1388 0 | |
| 1389 }; | |
| 1390 | |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1391 if(actual_menu_content == MENU_SURFACE) |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1392 { |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1393 spacing[3] = 0; /* Display extra menu directly after setpoint */ |
| 999 | 1394 memset(text8max[4],0,8); |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1395 } |
|
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1396 |
| 38 | 1397 pBackup = tMscreen.FBStartAdress; |
| 1398 tMscreen.FBStartAdress = menu.StartAddressForPage[page]; | |
|
130
b7689d9e888a
Minor changes to improved code quality and to eliminate warnings
Ideenmodellierer
parents:
122
diff
changeset
|
1399 pDestination = (uint16_t*) menu.StartAddressForPage[page]; |
| 38 | 1400 positionText = 10; |
| 1401 pageText = page; | |
| 1402 | |
| 1403 gfx_write_page_number(&tMscreen ,menu.pageCountNumber[page],menu.pageCountTotal,0); | |
| 1404 | |
| 1405 while((text8max[pageText][0] == 0) && (pageText > 1)) | |
| 1406 { | |
| 1407 pageText--; | |
| 1408 } | |
| 1409 | |
| 1410 for(k = 1; k <= MAXPAGES; k++) | |
| 1411 { | |
| 1412 if(menu.pageCountNumber[k] != 0) | |
| 1413 { | |
| 1414 k4text = k; // new hw 170522 | |
| 1415 if((text8max[k][0] == 0) && (menu.pageCountNumber[k-1] == 0)) | |
| 1416 k4text = k-1; | |
| 1417 | |
| 1418 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
|
1419 if (k == page) |
| 38 | 1420 { |
| 1421 color_top.al8[1] = 0xFF; | |
| 1422 } | |
| 1423 else | |
| 1424 { | |
| 1425 color_top.al8[1] = 0x50; | |
| 1426 } | |
| 1427 | |
| 1428 if(k4text == pageText) | |
| 1429 { | |
| 1430 colorText = CLUT_Font020; | |
| 1431 } | |
| 1432 else | |
| 1433 { | |
| 1434 colorText = CLUT_Font021; | |
| 1435 } | |
| 1436 | |
| 1437 write_content_simple(&tMscreen,positionText,775,0,&FontT42,text8max[k4text],colorText); | |
| 1438 /* | |
| 1439 write_content_simple(&tMscreen,positionText,775,0,&FontT42,text8max[k],colorText); | |
| 1440 if((text8max[k][0] == 0) && (menu.pageCountNumber[k-1] == 0)) | |
| 1441 write_content_simple(&tMscreen,positionText,775,0,&FontT42,text8max[k-1],colorText); | |
| 1442 */ | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1443 /* Draw color bars */ |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1444 if(!settingsGetPointer()->FlipDisplay) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1445 { |
| 999 | 1446 pDestination += TAB_BAR_SPACING * 480; |
| 38 | 1447 |
| 999 | 1448 for(j = TAB_BAR_WIDTH; j > 0; j--) |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1449 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1450 pDestination += (390 + 26); |
| 38 | 1451 |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1452 for(i = 16; i > 0; i--) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1453 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1454 *(__IO uint16_t*)pDestination++ = color_top.al88; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1455 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1456 pDestination += 48; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1457 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1458 |
| 999 | 1459 pDestination += TAB_BAR_SPACING * 480; |
| 1460 positionText += TAB_BAR_WIDTH + 2* TAB_BAR_SPACING; | |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1461 |
|
647
15f6f0b5786c
Integrated selection of bailout in the diluent selection page:
Ideenmodellierer
parents:
521
diff
changeset
|
1462 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
|
1463 { |
| 999 | 1464 pDestination += (TAB_BAR_WIDTH + 2* 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 } |
| 38 | 1467 |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1468 if(spacing[k]) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1469 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1470 pDestination += 35 * 480; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1471 positionText += 35; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1472 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1473 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1474 else |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1475 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1476 pDestination += (800 - 5)* 480; |
|
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 for(j = 60; j > 0; j--) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1479 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1480 pDestination -= (390 + 26); |
| 38 | 1481 |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1482 for(i = 16; i > 0; i--) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1483 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1484 *(__IO uint16_t*)pDestination-- = color_top.al88; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1485 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1486 pDestination -= 48; |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1487 } |
|
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 pDestination -= (800) * 480; |
| 824 | 1490 positionText += 66; |
| 38 | 1491 |
|
658
4df22790dc0c
Bugfix handling of new menu tab in flipped mode:
Ideenmodellierer
parents:
650
diff
changeset
|
1492 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
|
1493 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1494 pDestination -= 70 * 480; |
| 824 | 1495 positionText += 66; |
|
110
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1496 } |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1497 |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1498 if(spacing[k]) |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1499 { |
|
cc8e24374b83
Added option to handled mirrored display to existing functions
Ideenmodellierer
parents:
51
diff
changeset
|
1500 pDestination -= 35 * 480; |
| 824 | 1501 positionText += 31; |
|
110
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 } |
| 38 | 1504 } |
| 1505 } | |
| 1506 tMscreen.FBStartAdress = pBackup; | |
| 1507 } | |
|
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
|
1508 |
|
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
|
1509 |
|
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
|
1510 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
|
1511 { |
|
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
|
1512 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
|
1513 } |
