Giving up - Running into a loop without sensor readings

This commit is contained in:
Joerg Heinemann
2021-03-30 15:15:04 +02:00
parent 2113c16836
commit 9090d18af6
+31 -17
View File
@@ -28,6 +28,8 @@
boolean Plugin_112(byte function, struct EventStruct *event, String& string)
{
boolean success = false;
String MeasurementStatus;
MeasurementStatus = String("Not running");
switch (function)
{
@@ -165,7 +167,7 @@ boolean Plugin_112(byte function, struct EventStruct *event, String& string)
}
break;
}
case PLUGIN_TEN_PER_SECOND:
case PLUGIN_ONCE_A_SECOND:
{
P112_data_struct *P112_data =
static_cast<P112_data_struct *>(getPluginTaskData(event->TaskIndex));
@@ -173,7 +175,11 @@ boolean Plugin_112(byte function, struct EventStruct *event, String& string)
if (nullptr != P112_data) {
if (P112_data->sensor.dataAvailable()) {
// Measurement was succesfull, schedule a read.
MeasurementStatus = String("Ready");
eventQueue.add("PLUGIN_ONCE_A_SECOND: MeasurementStatus = " + MeasurementStatus);
Scheduler.schedule_task_device_timer(event->TaskIndex, millis() + 10);
} else {
eventQueue.add("PLUGIN_ONCE_A_SECOND: No sensor data available");
}
}
break;
@@ -183,22 +189,12 @@ boolean Plugin_112(byte function, struct EventStruct *event, String& string)
P112_data_struct *P112_data =
static_cast<P112_data_struct *>(getPluginTaskData(event->TaskIndex));
if (P112_data->begin()) {
if (PCONFIG(3)) // Integrated LEDs?
{
// P112_data->sensor.takeMeasurementsWithBulb();
P112_data->sensor.enableBulb(AS7265x_LED_WHITE);
P112_data->sensor.enableBulb(AS7265x_LED_IR);
P112_data->sensor.enableBulb(AS7265x_LED_UV);
P112_data->sensor.setMeasurementMode(AS7265X_MEASUREMENT_MODE_6CHAN_ONE_SHOT);
P112_data->sensor.disableBulb(AS7265x_LED_WHITE);
P112_data->sensor.disableBulb(AS7265x_LED_IR);
P112_data->sensor.disableBulb(AS7265x_LED_UV);
} else {
// P112_data->sensor.takeMeasurements();
P112_data->sensor.setMeasurementMode(AS7265X_MEASUREMENT_MODE_6CHAN_ONE_SHOT);
}
eventQueue.add("PLUGIN_READ: MeasurementStatus = " + MeasurementStatus);
if (MeasurementStatus == "Ready") {
MeasurementStatus = "Done";
eventQueue.add("PLUGIN_READ: MeasurementStatus = " + MeasurementStatus);
String RuleEvent;
RuleEvent = getTaskDeviceName(event->TaskIndex);
RuleEvent += '#';
@@ -263,11 +259,29 @@ boolean Plugin_112(byte function, struct EventStruct *event, String& string)
UserVar[event->BaseVarIndex + 2] = P112_data->sensor.getR();
UserVar[event->BaseVarIndex + 3] = P112_data->sensor.getW();
}
} else if (MeasurementStatus != "Running") {
MeasurementStatus = String("Running");
eventQueue.add("PLUGIN_READ: MeasurementStatus = " + MeasurementStatus);
if (P112_data->begin()) {
if (PCONFIG(3)) // Integrated LEDs?
{
// P112_data->sensor.takeMeasurementsWithBulb();
P112_data->sensor.enableBulb(AS7265x_LED_WHITE);
P112_data->sensor.enableBulb(AS7265x_LED_IR);
P112_data->sensor.enableBulb(AS7265x_LED_UV);
P112_data->sensor.setMeasurementMode(AS7265X_MEASUREMENT_MODE_6CHAN_ONE_SHOT);
P112_data->sensor.disableBulb(AS7265x_LED_WHITE);
P112_data->sensor.disableBulb(AS7265x_LED_IR);
P112_data->sensor.disableBulb(AS7265x_LED_UV);
} else {
// P112_data->sensor.takeMeasurements();
P112_data->sensor.setMeasurementMode(AS7265X_MEASUREMENT_MODE_6CHAN_ONE_SHOT);
}
}
}
success = true;
break;
}
}
return success;
}