@@ -1009,6 +1009,59 @@ void menuHandler::textMessageMenu()
10091009 cannedMessageModule->LaunchWithDestination (NODENUM_BROADCAST);
10101010}
10111011
1012+ void menuHandler::sensorsMenu ()
1013+ {
1014+ enum optionsNumbers { Back, VL53L0X };
1015+ static const char *optionsArray[2 ] = {" Back" };
1016+ static int optionsEnumArray[2 ] = {Back, VL53L0X};
1017+ int options = 1 ;
1018+
1019+ optionsArray[options] = " VL53L0X" ;
1020+ optionsEnumArray[options++] = VL53L0X;
1021+
1022+ BannerOverlayOptions bannerOptions;
1023+ bannerOptions.message = " Sensors" ;
1024+ bannerOptions.optionsArrayPtr = optionsArray;
1025+ bannerOptions.optionsCount = options;
1026+ bannerOptions.optionsEnumPtr = optionsEnumArray;
1027+ bannerOptions.bannerCallback = [](int selected) -> void {
1028+ if (selected == VL53L0X) {
1029+ menuQueue = SensorsVL53L0XMenu;
1030+ screen->runNow ();
1031+ } else {
1032+ menuQueue = SystemBaseMenu;
1033+ screen->runNow ();
1034+ }
1035+ };
1036+ screen->showOverlayBanner (bannerOptions);
1037+
1038+ }
1039+
1040+ void menuHandler::sensorsVL53L0XMenu ()
1041+ {
1042+ static const char *optionsArray[] = {" Back" , " Default" , " LongRange" , " HighSpeed" , " HighAccuracy" };
1043+ enum optionsNumbers { Back = 0 , Default = 1 , LongRange = 2 , HighSpeed = 3 , HighAccuracy = 4 };
1044+ BannerOverlayOptions bannerOptions;
1045+ bannerOptions.message = " VL53L0X Sensitivity" ;
1046+ bannerOptions.optionsArrayPtr = optionsArray;
1047+ bannerOptions.optionsCount = 5 ;
1048+ bannerOptions.bannerCallback = [](int selected) -> void {
1049+ if (selected == Back) {
1050+ menuQueue = SensorsMenu;
1051+ } else if (selected == Default) {
1052+ // TODO: set Sensitivity
1053+ } else if (selected == LongRange) {
1054+ // TODO: set Sensitivity
1055+ } else if (selected == HighSpeed) {
1056+ // TODO: set Sensitivity
1057+ } else if (selected == HighAccuracy) {
1058+ // TODO: set Sensitivity
1059+ }
1060+ // TODO: call VL50L0x::saveState();
1061+ };
1062+ screen->showOverlayBanner (bannerOptions);
1063+ }
1064+
10121065void menuHandler::textMessageBaseMenu ()
10131066{
10141067 enum optionsNumbers { Back, Preset, Freetext, enumEnd };
@@ -1040,7 +1093,7 @@ void menuHandler::textMessageBaseMenu()
10401093
10411094void menuHandler::systemBaseMenu ()
10421095{
1043- enum optionsNumbers { Back, Notifications, ScreenOptions, Bluetooth, WiFiToggle, PowerMenu, Test, enumEnd };
1096+ enum optionsNumbers { Back, Notifications, ScreenOptions, Bluetooth, WiFiToggle, PowerMenu, Sensors, Test, enumEnd };
10441097 static const char *optionsArray[enumEnd] = {" Back" };
10451098 static int optionsEnumArray[enumEnd] = {Back};
10461099 int options = 1 ;
@@ -1069,6 +1122,9 @@ void menuHandler::systemBaseMenu()
10691122 }
10701123 optionsEnumArray[options++] = PowerMenu;
10711124
1125+ optionsArray[options] = " Sensors" ;
1126+ optionsEnumArray[options++] = Sensors;
1127+
10721128 if (test_enabled) {
10731129 optionsArray[options] = " Test Menu" ;
10741130 optionsEnumArray[options++] = Test;
@@ -1103,6 +1159,9 @@ void menuHandler::systemBaseMenu()
11031159 menuQueue = WifiToggleMenu;
11041160 screen->runNow ();
11051161#endif
1162+ } else if (selected == Sensors) {
1163+ menuHandler::menuQueue = menuHandler::SensorsMenu;
1164+ screen->runNow ();
11061165 } else if (selected == Back && !test_enabled) {
11071166 test_count++;
11081167 if (test_count > 4 ) {
@@ -2799,6 +2858,12 @@ void menuHandler::handleMenuSwitch(OLEDDisplay *display)
27992858 case MessageBubblesMenu:
28002859 messageBubblesMenu ();
28012860 break ;
2861+ case SensorsMenu:
2862+ sensorsMenu ();
2863+ break ;
2864+ case SensorsVL53L0XMenu:
2865+ sensorsVL53L0XMenu ();
2866+ break ;
28022867 }
28032868 menuQueue = MenuNone;
28042869}
@@ -2810,4 +2875,4 @@ void menuHandler::saveUIConfig()
28102875
28112876} // namespace graphics
28122877
2813- #endif
2878+ #endif
0 commit comments