Skip to content

Commit 0570ec9

Browse files
committed
Added static VL53L0XSensor::getInstance() and setMode() to change Sensor mode using menu.
1 parent 280e341 commit 0570ec9

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

src/graphics/draw/MenuHandler.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include <array>
2828
#include <functional>
2929
#include <utility>
30+
#include "modules/Telemetry/Sensor/VL53L0XSensor.h"
3031

3132
extern uint16_t TFT_MESH;
3233

@@ -1015,8 +1016,10 @@ void menuHandler::sensorsMenu()
10151016
static int optionsEnumArray[2] = {Back, VL53L0X};
10161017
int options = 1;
10171018

1018-
optionsArray[options] = "VL53L0X";
1019-
optionsEnumArray[options++] = VL53L0X;
1019+
if(VL53L0XSensor::getInstance()) {
1020+
optionsArray[options] = "VL53L0X";
1021+
optionsEnumArray[options++] = VL53L0X;
1022+
}
10201023

10211024
BannerOverlayOptions bannerOptions;
10221025
bannerOptions.message = "Sensors";
@@ -1045,18 +1048,18 @@ void menuHandler::sensorsVL53L0XMenu()
10451048
bannerOptions.optionsArrayPtr = optionsArray;
10461049
bannerOptions.optionsCount = 5;
10471050
bannerOptions.bannerCallback = [](int selected) -> void {
1051+
VL53L0XSensor* vl = VL53L0XSensor::getInstance();
10481052
if (selected == Back) {
10491053
menuQueue = SensorsMenu;
10501054
} else if (selected == Default) {
1051-
// TODO: set Sensitivity
1055+
vl->setMode(Adafruit_VL53L0X::VL53L0X_SENSE_DEFAULT);
10521056
} else if (selected == LongRange) {
1053-
// TODO: set Sensitivity
1057+
vl->setMode(Adafruit_VL53L0X::VL53L0X_SENSE_LONG_RANGE);
10541058
} else if (selected == HighSpeed) {
1055-
// TODO: set Sensitivity
1059+
vl->setMode(Adafruit_VL53L0X::VL53L0X_SENSE_HIGH_SPEED);
10561060
} else if (selected == HighAccuracy) {
1057-
// TODO: set Sensitivity
1061+
vl->setMode(Adafruit_VL53L0X::VL53L0X_SENSE_HIGH_ACCURACY);
10581062
}
1059-
// TODO: call VL50L0x::saveState();
10601063
};
10611064
screen->showOverlayBanner(bannerOptions);
10621065
}

src/modules/Telemetry/Sensor/VL53L0XSensor.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,21 @@
1919
#include <pb_decode.h>
2020
#include <pb_encode.h>
2121

22+
static VL53L0XSensor* instance = 0;
23+
24+
VL53L0XSensor* VL53L0XSensor::getInstance()
25+
{
26+
return instance;
27+
}
28+
29+
void VL53L0XSensor::setMode(Adafruit_VL53L0X::VL53L0X_Sense_config_t mode)
30+
{
31+
if(this->mode != mode) {
32+
this->mode = mode;
33+
saveState();
34+
}
35+
36+
}
2237

2338
bool VL53L0XSensor::loadState()
2439
{
@@ -76,7 +91,7 @@ bool VL53L0XSensor::saveState()
7691
#endif
7792
}
7893

79-
VL53L0XSensor::VL53L0XSensor() : TelemetrySensor(meshtastic_TelemetrySensorType_VL53L0X, "VL53L0X") {}
94+
VL53L0XSensor::VL53L0XSensor() : TelemetrySensor(meshtastic_TelemetrySensorType_VL53L0X, "VL53L0X") {instance = this;}
8095

8196
bool VL53L0XSensor::initDevice(TwoWire *bus, ScanI2C::FoundDevice *dev)
8297
{

src/modules/Telemetry/Sensor/VL53L0XSensor.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@ class VL53L0XSensor : public TelemetrySensor
1818

1919
Adafruit_VL53L0X::VL53L0X_Sense_config_t mode;
2020

21+
public:
22+
static VL53L0XSensor* getInstance();
23+
void setMode(Adafruit_VL53L0X::VL53L0X_Sense_config_t mode);
2124
bool loadState();
2225
bool saveState();
2326

24-
public:
2527
VL53L0XSensor();
2628
virtual bool getMetrics(meshtastic_Telemetry *measurement) override;
2729
virtual bool initDevice(TwoWire *bus, ScanI2C::FoundDevice *dev) override;

0 commit comments

Comments
 (0)