-
-
Notifications
You must be signed in to change notification settings - Fork 195
Even being a non-block system, this menu still needs time slices to do IO. Some time critical parallel tasks, like updating direct wired 7-segment displays might experience some flicking while the menu is being used. This can be mitigated by starting with a suspended menu and by exiting the menu after it being used.
More critical systems like steppers can prevent all menun IO by not calling the menu poll or IO functions, but for this cases a timer is recommended.
nav.node()
return a (navNode) navigation level controller object, see navigation
nav.active()
returns a menuNode object, the menuNode is a menu prompt that can receive keys/comands and has an optional associated action.
Can be a menu/sub-menu or any kind of field.
nav.node().sel
return the index of the selected option.
nav.node()[idx]
return a prompt object representing the indexed option
nav.selected()
return a prompt object representing the current selected option
on setup do:
nav.idleOn();//this menu will start on idle state, press select to enter menu
suspended menu will resume when pressing select.
Also you can have any other suspension method because the menu is executed only when one of it's IO function is called (poll/doInput/doOutput). So if not calling them.. there is no menu.
on setup function:
options->canExit=false;
Also you can provide an alternative config options setting, with that options already set to false.
nav.doNav(navCmd(idxCmd,0))
The menu does not store values (maybe some backups) instead it uses existing values from your code, so you already have access to field values. The menu system will change the variable value when needed.
example:
//outside setup or loop
int percent=0;
...
//on menu definition
FIELD(percent,"Power","%",...)
...
//when you want the value just use the variable
//in example, for printing
Serial.print("my percent value:");
Serial.println(percent);