@@ -1007,6 +1007,59 @@ void menuHandler::textMessageMenu()
10071007 cannedMessageModule->LaunchWithDestination (NODENUM_BROADCAST);
10081008}
10091009
1010+ void menuHandler::sensorsMenu ()
1011+ {
1012+ enum optionsNumbers { Back, VL53L0X };
1013+ static const char *optionsArray[2 ] = {" Back" };
1014+ static int optionsEnumArray[2 ] = {Back, VL53L0X};
1015+ int options = 1 ;
1016+
1017+ optionsArray[options] = " VL53L0X" ;
1018+ optionsEnumArray[options++] = VL53L0X;
1019+
1020+ BannerOverlayOptions bannerOptions;
1021+ bannerOptions.message = " Sensors" ;
1022+ bannerOptions.optionsArrayPtr = optionsArray;
1023+ bannerOptions.optionsCount = options;
1024+ bannerOptions.optionsEnumPtr = optionsEnumArray;
1025+ bannerOptions.bannerCallback = [](int selected) -> void {
1026+ if (selected == VL53L0X) {
1027+ menuQueue = SensorsVL53L0XMenu;
1028+ screen->runNow ();
1029+ } else {
1030+ menuQueue = SystemBaseMenu;
1031+ screen->runNow ();
1032+ }
1033+ };
1034+ screen->showOverlayBanner (bannerOptions);
1035+
1036+ }
1037+
1038+ void menuHandler::sensorsVL53L0XMenu ()
1039+ {
1040+ static const char *optionsArray[] = {" Back" , " Default" , " LongRange" , " HighSpeed" , " HighAccuracy" };
1041+ enum optionsNumbers { Back = 0 , Default = 1 , LongRange = 2 , HighSpeed = 3 , HighAccuracy = 4 };
1042+ BannerOverlayOptions bannerOptions;
1043+ bannerOptions.message = " VL53L0X Sensitivity" ;
1044+ bannerOptions.optionsArrayPtr = optionsArray;
1045+ bannerOptions.optionsCount = 5 ;
1046+ bannerOptions.bannerCallback = [](int selected) -> void {
1047+ if (selected == Back) {
1048+ menuQueue = SensorsMenu;
1049+ } else if (selected == Default) {
1050+ // TODO: set Sensitivity
1051+ } else if (selected == LongRange) {
1052+ // TODO: set Sensitivity
1053+ } else if (selected == HighSpeed) {
1054+ // TODO: set Sensitivity
1055+ } else if (selected == HighAccuracy) {
1056+ // TODO: set Sensitivity
1057+ }
1058+ // TODO: call VL50L0x::saveState();
1059+ };
1060+ screen->showOverlayBanner (bannerOptions);
1061+ }
1062+
10101063void menuHandler::textMessageBaseMenu ()
10111064{
10121065 enum optionsNumbers { Back, Preset, Freetext, enumEnd };
@@ -1038,7 +1091,7 @@ void menuHandler::textMessageBaseMenu()
10381091
10391092void menuHandler::systemBaseMenu ()
10401093{
1041- enum optionsNumbers { Back, Notifications, ScreenOptions, Bluetooth, WiFiToggle, PowerMenu, Test, enumEnd };
1094+ enum optionsNumbers { Back, Notifications, ScreenOptions, Bluetooth, WiFiToggle, PowerMenu, Sensors, Test, enumEnd };
10421095 static const char *optionsArray[enumEnd] = {" Back" };
10431096 static int optionsEnumArray[enumEnd] = {Back};
10441097 int options = 1 ;
@@ -1067,6 +1120,9 @@ void menuHandler::systemBaseMenu()
10671120 }
10681121 optionsEnumArray[options++] = PowerMenu;
10691122
1123+ optionsArray[options] = " Sensors" ;
1124+ optionsEnumArray[options++] = Sensors;
1125+
10701126 if (test_enabled) {
10711127 optionsArray[options] = " Test Menu" ;
10721128 optionsEnumArray[options++] = Test;
@@ -1101,6 +1157,9 @@ void menuHandler::systemBaseMenu()
11011157 menuQueue = WifiToggleMenu;
11021158 screen->runNow ();
11031159#endif
1160+ } else if (selected == Sensors) {
1161+ menuHandler::menuQueue = menuHandler::SensorsMenu;
1162+ screen->runNow ();
11041163 } else if (selected == Back && !test_enabled) {
11051164 test_count++;
11061165 if (test_count > 4 ) {
@@ -2781,6 +2840,12 @@ void menuHandler::handleMenuSwitch(OLEDDisplay *display)
27812840 case MessageBubblesMenu:
27822841 messageBubblesMenu ();
27832842 break ;
2843+ case SensorsMenu:
2844+ sensorsMenu ();
2845+ break ;
2846+ case SensorsVL53L0XMenu:
2847+ sensorsVL53L0XMenu ();
2848+ break ;
27842849 }
27852850 menuQueue = MenuNone;
27862851}
@@ -2792,4 +2857,4 @@ void menuHandler::saveUIConfig()
27922857
27932858} // namespace graphics
27942859
2795- #endif
2860+ #endif
0 commit comments