@@ -125,4 +125,47 @@ bool VL53L0XSensor::getMetrics(meshtastic_Telemetry *measurement)
125125
126126 return true ;
127127}
128+
129+ AdminMessageHandleResult VL53L0XSensor::handleAdminMessage (const meshtastic_MeshPacket &mp, meshtastic_AdminMessage *request,
130+ meshtastic_AdminMessage *response)
131+ {
132+ AdminMessageHandleResult result;
133+ result = AdminMessageHandleResult::NOT_HANDLED;
134+
135+ switch (request->which_payload_variant ) {
136+ case meshtastic_AdminMessage_sensor_config_tag:
137+ if (!request->sensor_config .has_vl53l0x_config ) {
138+ result = AdminMessageHandleResult::NOT_HANDLED;
139+ break ;
140+ }
141+
142+ // Check for sensor accuracy setting
143+ if (request->sensor_config .vl53l0x_config .has_ranging_mode ) {
144+ Adafruit_VL53L0X::VL53L0X_Sense_config_t newMode;
145+ if (request->sensor_config .vl53l0x_config .ranging_mode == 0 ) {
146+ newMode = Adafruit_VL53L0X::VL53L0X_SENSE_DEFAULT;
147+ } else if (request->sensor_config .vl53l0x_config .ranging_mode == 1 ) {
148+ newMode = Adafruit_VL53L0X::VL53L0X_SENSE_LONG_RANGE;
149+ } else if (request->sensor_config .vl53l0x_config .ranging_mode == 2 ) {
150+ newMode = Adafruit_VL53L0X::VL53L0X_SENSE_HIGH_SPEED;
151+ } else if (request->sensor_config .vl53l0x_config .ranging_mode == 3 ) {
152+ newMode = Adafruit_VL53L0X::VL53L0X_SENSE_HIGH_ACCURACY;
153+ } else {
154+ LOG_ERROR (" %s: incorrect mode setting" , sensorName);
155+ result = AdminMessageHandleResult::HANDLED;
156+ break ;
157+ }
158+ this ->setMode (newMode);
159+ }
160+
161+ result = AdminMessageHandleResult::HANDLED;
162+ break ;
163+
164+ default :
165+ result = AdminMessageHandleResult::NOT_HANDLED;
166+ }
167+
168+ return result;
169+ }
170+
128171#endif
0 commit comments