Skip to content

Commit 5821ec4

Browse files
committed
WIP: Create System>Sensors>VL53L0X menu to modify sensor sensitivity.
Need to: - See if this is acceptable, or there is a better way.
1 parent 34abb40 commit 5821ec4

File tree

2 files changed

+72
-3
lines changed

2 files changed

+72
-3
lines changed

src/graphics/draw/MenuHandler.cpp

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
10101063
void menuHandler::textMessageBaseMenu()
10111064
{
10121065
enum optionsNumbers { Back, Preset, Freetext, enumEnd };
@@ -1038,7 +1091,7 @@ void menuHandler::textMessageBaseMenu()
10381091

10391092
void 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

src/graphics/draw/MenuHandler.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ class menuHandler
5555
NodeNameLengthMenu,
5656
FrameToggles,
5757
DisplayUnits,
58-
MessageBubblesMenu
58+
MessageBubblesMenu,
59+
SensorsMenu,
60+
SensorsVL53L0XMenu
5961
};
6062
static screenMenus menuQueue;
6163
static uint32_t pickedNodeNum; // node selected by NodePicker for ManageNodeMenu
@@ -111,6 +113,8 @@ class menuHandler
111113
static void displayUnitsMenu();
112114
static void messageBubblesMenu();
113115
static void textMessageMenu();
116+
static void sensorsMenu();
117+
static void sensorsVL53L0XMenu();
114118

115119
private:
116120
static void saveUIConfig();

0 commit comments

Comments
 (0)