diff options
author | David Crocker <dcrocker@eschertech.com> | 2021-01-05 01:20:27 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2021-01-05 01:20:27 +0300 |
commit | d47dfa59e64f60bd033b6768d6af0680933c258b (patch) | |
tree | 994e69e4a3159cb744fb92c68df17df04e77d895 /src/Heating | |
parent | 8343f55a7e9364fe1c585feb4da4355ba516728c (diff) |
Implemented deleting local and remote sensors by using "nil" port name
Diffstat (limited to 'src/Heating')
-rw-r--r-- | src/Heating/Heat.cpp | 15 | ||||
-rw-r--r-- | src/Heating/Sensors/RemoteSensor.cpp | 8 |
2 files changed, 21 insertions, 2 deletions
diff --git a/src/Heating/Heat.cpp b/src/Heating/Heat.cpp index 6e1ac761..1efaaeb4 100644 --- a/src/Heating/Heat.cpp +++ b/src/Heating/Heat.cpp @@ -947,6 +947,14 @@ GCodeResult Heat::ConfigureSensor(GCodeBuffer& gb, const StringRef& reply) THROW boardAddress = CanId::NoAddress; } #endif + + if (portName.EqualsIgnoreCase(NoPinName)) // if deleting this sensor + { + WriteLocker lock(sensorsLock); + DeleteSensor(sensorNum); + return GCodeResult::ok; + } + if (gb.Seen('Y')) { // Creating a new sensor @@ -1241,7 +1249,14 @@ GCodeResult Heat::EutProcessM308(const CanMessageGeneric& msg, const StringRef& { if (sensorNum < MaxSensors) { + // Check for deleting the sensor by assigning a null port. Borrow the sensor type name string temporarily for this. String<StringLength20> sensorTypeName; + if (parser.GetStringParam('P', sensorTypeName.GetRef()) && sensorTypeName.EqualsIgnoreCase(NoPinName)) + { + DeleteSensor(sensorNum); + return GCodeResult::ok; + } + if (parser.GetStringParam('Y', sensorTypeName.GetRef())) { WriteLocker lock(sensorsLock); diff --git a/src/Heating/Sensors/RemoteSensor.cpp b/src/Heating/Sensors/RemoteSensor.cpp index 1d4e4f7a..6a08a224 100644 --- a/src/Heating/Sensors/RemoteSensor.cpp +++ b/src/Heating/Sensors/RemoteSensor.cpp @@ -22,10 +22,14 @@ RemoteSensor::RemoteSensor(unsigned int sensorNum, CanAddress pBoardAddress) noe RemoteSensor::~RemoteSensor() { - //TODO delete the remote sensor + CanMessageGenericConstructor cons(M308NewParams); + cons.AddUParam('S', GetSensorNumber()); + cons.AddStringParam('P', NoPinName); + String<StringLength50> dummy; + (void)cons.SendAndGetResponse(CanMessageType::m308New, boardAddress, dummy.GetRef()); } -GCodeResult RemoteSensor::Configure(GCodeBuffer& gb, const StringRef& reply, bool& changed) +GCodeResult RemoteSensor::Configure(GCodeBuffer& gb, const StringRef& reply, bool& changed) THROWS(GCodeException) { TryConfigureSensorName(gb, changed); CanMessageGenericConstructor cons(M308NewParams); |