1313#include < tcMenu.h>
1414#include " esp32s2Saola_menu.h"
1515#include " einkThemeBuilderBlock.h"
16+ #include " TcMenuBuilder.h"
1617
1718// Global variable declarations
1819const PROGMEM ConnectorLocalInfo applicationInfo = { " ESP32-S2 Saola board" , " b447b433-fe4f-4ce7-8746-d94bfeefc707" };
@@ -27,76 +28,59 @@ EthernetInitialisation ethernetInitialisation(&server);
2728EthernetTagValTransport ethernetTransport;
2829TagValueRemoteServerConnection ethernetConnection (ethernetTransport, ethernetInitialisation);
2930
30- // Global Menu Item declarations
31- const PROGMEM char pgmStrConnectivityAuthenticatorText[] = { " Authenticator" };
32- EepromAuthenticationInfoMenuItem menuConnectivityAuthenticator (pgmStrConnectivityAuthenticatorText, NO_CALLBACK, 20 , nullptr );
33- const PROGMEM char pgmStrConnectivityIoTMonitorText[] = { " IoT Monitor" };
34- RemoteMenuItem menuConnectivityIoTMonitor (pgmStrConnectivityIoTMonitorText, 19 , &menuConnectivityAuthenticator);
35- const PROGMEM AnyMenuInfo minfoConnectivityIPAddress = { " IP Address" , 15 , 0xffff , 0 , NO_CALLBACK };
36- IpAddressMenuItem menuConnectivityIPAddress (&minfoConnectivityIPAddress, IpAddressStorage(127 , 0 , 0 , 1 ), &menuConnectivityIoTMonitor, INFO_LOCATION_PGM);
37- const char enumStrConnectivityWiFiMode_0[] PROGMEM = " Station" ;
38- const char enumStrConnectivityWiFiMode_1[] PROGMEM = " Soft AP" ;
39- const char * const enumStrConnectivityWiFiMode[] PROGMEM = { enumStrConnectivityWiFiMode_0, enumStrConnectivityWiFiMode_1 };
40- const PROGMEM EnumMenuInfo minfoConnectivityWiFiMode = { " WiFi Mode" , 18 , 64 , 1 , NO_CALLBACK, enumStrConnectivityWiFiMode };
41- EnumMenuItem menuConnectivityWiFiMode (&minfoConnectivityWiFiMode, 0 , &menuConnectivityIPAddress, INFO_LOCATION_PGM);
42- const PROGMEM AnyMenuInfo minfoConnectivityPasscode = { " Passcode" , 17 , 42 , 0 , NO_CALLBACK };
43- TextMenuItem menuConnectivityPasscode (&minfoConnectivityPasscode, " " , 22 , &menuConnectivityWiFiMode, INFO_LOCATION_PGM);
44- const PROGMEM AnyMenuInfo minfoConnectivitySSID = { " SSID" , 16 , 20 , 0 , NO_CALLBACK };
45- TextMenuItem menuConnectivitySSID (&minfoConnectivitySSID, " " , 22 , &menuConnectivityPasscode, INFO_LOCATION_PGM);
46- const PROGMEM SubMenuInfo minfoConnectivity = { " Connectivity" , 14 , 0xffff , 0 , NO_CALLBACK };
47- BackMenuItem menuBackConnectivity (&minfoConnectivity, &menuConnectivitySSID, INFO_LOCATION_PGM);
48- SubMenuItem menuConnectivity (&minfoConnectivity, &menuBackConnectivity, nullptr , INFO_LOCATION_PGM);
49- const PROGMEM AnyMenuInfo minfoExtrasMyList = { " My List" , 13 , 0xffff , 0 , onListSelected };
50- ListRuntimeMenuItem menuExtrasMyList (&minfoExtrasMyList, 0 , fnExtrasMyListRtCall, nullptr , INFO_LOCATION_PGM);
51- const PROGMEM AnyMenuInfo minfoExtrasColor = { " Color" , 12 , 16 , 0 , NO_CALLBACK };
52- Rgb32MenuItem menuExtrasColor (&minfoExtrasColor, RgbColor32(0 , 0 , 0 ), false, &menuExtrasMyList, INFO_LOCATION_PGM);
53- const PROGMEM AnyMenuInfo minfoExtrasText = { " Text" , 11 , 11 , 0 , NO_CALLBACK };
54- TextMenuItem menuExtrasText (&minfoExtrasText, " " , 5 , &menuExtrasColor, INFO_LOCATION_PGM);
55- const PROGMEM SubMenuInfo minfoExtras = { " Extras" , 10 , 0xffff , 0 , NO_CALLBACK };
56- BackMenuItem menuBackExtras (&minfoExtras, &menuExtrasText, INFO_LOCATION_PGM);
57- SubMenuItem menuExtras (&minfoExtras, &menuBackExtras, &menuConnectivity, INFO_LOCATION_PGM);
58- const PROGMEM BooleanMenuInfo minfoDoorOpen = { " Door Open" , 5 , 10 , 1 , NO_CALLBACK, NAMING_YES_NO };
59- BooleanMenuItem menuDoorOpen (&minfoDoorOpen, false , &menuExtras, INFO_LOCATION_PGM);
60- const char enumStrFoods_0[] PROGMEM = " Pizza" ;
61- const char enumStrFoods_1[] PROGMEM = " Pasta" ;
62- const char enumStrFoods_2[] PROGMEM = " Salad" ;
63- const char enumStrFoods_3[] PROGMEM = " Pie" ;
64- const char * const enumStrFoods[] PROGMEM = { enumStrFoods_0, enumStrFoods_1, enumStrFoods_2, enumStrFoods_3 };
65- const PROGMEM EnumMenuInfo minfoFoods = { " Foods" , 4 , 8 , 3 , NO_CALLBACK, enumStrFoods };
66- EnumMenuItem menuFoods (&minfoFoods, 0 , &menuDoorOpen, INFO_LOCATION_PGM);
67- const PROGMEM AnalogMenuInfo minfoHalves = { " Halves" , 3 , 6 , 200 , NO_CALLBACK, 0 , 2 , " " };
68- AnalogMenuItem menuHalves (&minfoHalves, 0 , &menuFoods, INFO_LOCATION_PGM);
69- const PROGMEM AnalogMenuInfo minfoDecEdit = { " Dec Edit" , 2 , 4 , 1000 , NO_CALLBACK, 0 , 10 , " oC" };
70- AnalogMenuItem menuDecEdit (&minfoDecEdit, 0 , &menuHalves, INFO_LOCATION_PGM);
71- const PROGMEM AnalogMenuInfo minfoIntEdit = { " Int Edit" , 1 , 2 , 100 , NO_CALLBACK, 0 , 1 , " %" };
72- AnalogMenuItem menuIntEdit (&minfoIntEdit, 0 , &menuDecEdit, INFO_LOCATION_PGM);
73- const PROGMEM AnyMenuInfo minfoHibernate = { " Hibernate" , 21 , 0xffff , 0 , onHibernate };
74- ActionMenuItem menuHibernate (&minfoHibernate, &menuIntEdit, INFO_LOCATION_PGM);
31+ const char * enumWiFiMode[] = { " Station" , " Soft AP" };
32+ const char * enumFoodsArray[] = { " Pizza" , " Pasta" , " Salad" , " Pie" };
33+
34+ void buildMenu (TcMenuBuilder& builder) {
35+ builder.usingDynamicEEPROMStorage ()
36+ .actionItem (HIBERNATE_ID, " Hibernate" , NoMenuFlags, onHibernate)
37+ .analogBuilder (INT_EDIT_ID, " Int Edit" , ROM_SAVE, NoMenuFlags, 4 )
38+ .offset (0 ).divisor (1 ).maxValue (100 ).unit (" %" ).endItem ()
39+ .analogBuilder (DEC_EDIT_ID, " Dec Edit" , ROM_SAVE, NoMenuFlags, 0 )
40+ .offset (0 ).divisor (100 ).maxValue (1000 ).unit (" oC" ).endItem ()
41+ .analogBuilder (HALVES_ID, " Halves" , ROM_SAVE, MenuFlags ().readOnly (), 0 )
42+ .offset (0 ).divisor (2 ).maxValue (100 ).unit (" " ).endItem ()
43+ .enumItem (FOODS_ID, " Foods" , ROM_SAVE, enumFoodsArray, 4 , NoMenuFlags)
44+ .boolItem (DOOR_OPEN_ID, " Door Open" , ROM_SAVE, NAMING_YES_NO, NoMenuFlags)
45+ .subMenu (EXTRAS_ID, " Extras" , NoMenuFlags)
46+ .textItem (EXTRAS_TEXT_ID, " Text" , ROM_SAVE, 10 , NoMenuFlags)
47+ .rgb32Item (EXTRAS_RGB_ID, " Color" , ROM_SAVE, false , NoMenuFlags)
48+ .listItemRtCustom (EXTRAS_LIST_ID, " My List" , 10 , fnExtrasMyListRtCall, NoMenuFlags)
49+ .endSub ()
50+ .subMenu (CONNECTIVITY_ID, " Connectivity" , NoMenuFlags)
51+ .textItem (CONNECTIVITY_SSID_ID, " SSID" , ROM_SAVE, 20 , NoMenuFlags)
52+ .textItem (CONNECTIVITY_PASSCODE_ID, " Passcode" , ROM_SAVE, 20 , NoMenuFlags)
53+ .enumItem (CONNECTIVITY_WIFI_MODE_ID, " WiFi Mode" , ROM_SAVE, enumWiFiMode, 2 , NoMenuFlags)
54+ .ipAddressItem (CONNECTIVITY_IP_ADDR_ID, " IP Address" , DONT_SAVE, NoMenuFlags)
55+ .remoteConnectivityMonitor (CONNECTIVITY_MON_ID, " IoT Monitor" , MenuFlags ().localOnly ())
56+ .eepromAuthenticationItem (CONNECTIVITY_AUTH_ID, " Authenticator" , MenuFlags ().localOnly ())
57+ .endSub ();
58+ }
7559
7660void setupMenu () {
61+ auto builder = TcMenuBuilder (&MenuManager::ROOT);
62+ buildMenu (builder);
63+
7764 // First we set up eeprom and authentication (if needed).
7865 setSizeBasedEEPROMStorageEnabled (false );
7966 glEspRom.init ();
8067 menuMgr.setEepromRef (&glEspRom);
8168 authManager.initialise (menuMgr.getEepromAbstraction (), 200 );
8269 menuMgr.setAuthenticator (&authManager);
83- // Now add any readonly, non-remote and visible flags.
84- menuConnectivityIoTMonitor.setLocalOnly (true );
85- menuConnectivityAuthenticator.setLocalOnly (true );
8670
8771 // Code generated by plugins and new operators.
8872 display.init (115200 , true , 10 , false );
8973 display.setRotation (0 );
9074 renderer.setUpdatesPerSecond (1 );
9175 switches.init (internalDigitalIo (), SWITCHES_POLL_EVERYTHING, true );
92- menuMgr.initFor4WayJoystick (&renderer, &menuHibernate , 2 , 1 , 3 , 4 , -1 , 20 );
76+ menuMgr.initFor4WayJoystick (&renderer, builder. getRootItem () , 2 , 1 , 3 , 4 , -1 , 20 );
9377 remoteServer.addConnection (ðernetConnection);
9478 applyTheme (renderer);
9579
9680 // We have an IoT monitor, register the server
97- menuConnectivityIoTMonitor .setRemoteServer (remoteServer);
81+ getIoTRemoteMenuById (CONNECTIVITY_MON_ID) .setRemoteServer (remoteServer);
9882
9983 // We have an EEPROM authenticator, it needs initialising
100- menuConnectivityAuthenticator .init ();
84+ getAuthenticationMenuById (CONNECTIVITY_AUTH_ID) .init ();
10185}
10286
0 commit comments