Skip to content
Snippets Groups Projects

Handle invalid channel replies

Merged Cyril Danilevski requested to merge invalid_channels into main
1 file
+ 24
2
Compare changes
  • Side-by-side
  • Inline
+ 24
2
@@ -81,6 +81,9 @@ bool MPOD::message(const SNMP::Message *message) {
case OID::OUTPUTSTATUS: {
// OUTPUTSTATUS is defined in MIB as BITS but encoded as OCTETSTRING by MPOD
OctetStringBER *status = static_cast<OctetStringBER *>(varbind->getValue());
if (status->getLength() == 0) {
break;
}
_on = status->getBit(0);
_rampingUp = status->getBit(11);
_rampingDown = status->getBit(12);
@@ -88,31 +91,50 @@ bool MPOD::message(const SNMP::Message *message) {
found++;
break;
case OID::OUTPUTMEASUREMENTSENSEVOLTAGE:
// Use private helper function to extract float value
if (varbind->getLength() != 25) {
break;
}
_measurementSenseVoltage = getFloatFromVarBind(varbind);
found++;
break;
case OID::OUTPUTMEASUREMENTCURRENT:
if (varbind->getLength() != 25) {
break;
}
_measurementCurrent = getFloatFromVarBind(varbind);
found++;
break;
case OID::OUTPUTSWITCH:
// Use private helper function to extract integer value
Serial.print("Output Switch Length: ");
Serial.println(varbind->getLength());
_on = getIntegerFromVarBind(varbind);
found++;
break;
case OID::OUTPUTVOLTAGE:
if (varbind->getLength() != 25) {
break;
}
_voltage = getFloatFromVarBind(varbind);
found++;
break;
case OID::OUTPUTCURRENT:
if (varbind->getLength() != 25) {
break;
}
_current = getFloatFromVarBind(varbind);
found++;
break;
case OID::OUTPUTVOLTAGERISERATE:
if (varbind->getLength() != 25) {
break;
}
_voltageRiseRate = getFloatFromVarBind(varbind);
found++;
break;
default:
Serial.println(name);
break;
}
// Get the channel ID from the last value in the varbind name
@@ -200,7 +222,7 @@ void onMessage(const SNMP::Message *message, const IPAddress remote, const uint1
Serial.print(mpod.getVoltageRiseRate());
Serial.println(" V/s");
} else {
Serial.println("Received non-MPOD traffic");
Serial.println("Received non-MPOD traffic (invalid channel?).");
}
}
Loading