Skip to content

Commit fc5e2dd

Browse files
committed
Added static VL53L0XSensor::getInstance() and setMode() to change Sensor mode using menu.
1 parent 482b1fd commit fc5e2dd

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
@@ -29,6 +29,7 @@
2929
#include <cmath>
3030
#include <functional>
3131
#include <utility>
32+
#include "modules/Telemetry/Sensor/VL53L0XSensor.h"
3233

3334
extern uint16_t TFT_MESH;
3435

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

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

10221025
BannerOverlayOptions bannerOptions;
10231026
bannerOptions.message = "Sensors";
@@ -1046,18 +1049,18 @@ void menuHandler::sensorsVL53L0XMenu()
10461049
bannerOptions.optionsArrayPtr = optionsArray;
10471050
bannerOptions.optionsCount = 5;
10481051
bannerOptions.bannerCallback = [](int selected) -> void {
1052+
VL53L0XSensor* vl = VL53L0XSensor::getInstance();
10491053
if (selected == Back) {
10501054
menuQueue = SensorsMenu;
10511055
} else if (selected == Default) {
1052-
// TODO: set Sensitivity
1056+
vl->setMode(Adafruit_VL53L0X::VL53L0X_SENSE_DEFAULT);
10531057
} else if (selected == LongRange) {
1054-
// TODO: set Sensitivity
1058+
vl->setMode(Adafruit_VL53L0X::VL53L0X_SENSE_LONG_RANGE);
10551059
} else if (selected == HighSpeed) {
1056-
// TODO: set Sensitivity
1060+
vl->setMode(Adafruit_VL53L0X::VL53L0X_SENSE_HIGH_SPEED);
10571061
} else if (selected == HighAccuracy) {
1058-
// TODO: set Sensitivity
1062+
vl->setMode(Adafruit_VL53L0X::VL53L0X_SENSE_HIGH_ACCURACY);
10591063
}
1060-
// TODO: call VL50L0x::saveState();
10611064
};
10621065
screen->showOverlayBanner(bannerOptions);
10631066
}

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)