diff --git a/Arduino/BTCDieselHeater/BTCDieselHeater.ino b/Arduino/BTCDieselHeater/BTCDieselHeater.ino index 1d89caf..30763ed 100644 --- a/Arduino/BTCDieselHeater/BTCDieselHeater.ino +++ b/Arduino/BTCDieselHeater/BTCDieselHeater.ino @@ -993,3 +993,8 @@ bool hasOEMcontroller() { return bHasOEMController; } + +int getSmartError() +{ + return SmartError.getError(); +} \ No newline at end of file diff --git a/Arduino/BTCDieselHeater/src/Protocol/Protocol.cpp b/Arduino/BTCDieselHeater/src/Protocol/Protocol.cpp index 0e3237d..733debc 100644 --- a/Arduino/BTCDieselHeater/src/Protocol/Protocol.cpp +++ b/Arduino/BTCDieselHeater/src/Protocol/Protocol.cpp @@ -417,8 +417,14 @@ CProtocolPackage::reportFrames(bool isOEM) int CProtocolPackage::getErrState() const { - if(getBlueWireStat() & 0x01) + if(getBlueWireStat() & 0x01) { return 8; // force E-07 - we're not seeing heater data - else - return Heater.getErrState(); + } + else { + int smartErr = getSmartError(); + if(smartErr) + return smartErr; + else + return Heater.getErrState(); + } } diff --git a/Arduino/BTCDieselHeater/src/Protocol/SmartError.cpp b/Arduino/BTCDieselHeater/src/Protocol/SmartError.cpp index 0763f06..0af192d 100644 --- a/Arduino/BTCDieselHeater/src/Protocol/SmartError.cpp +++ b/Arduino/BTCDieselHeater/src/Protocol/SmartError.cpp @@ -51,21 +51,12 @@ CSmartError::inhibit() // In addition, the hetaer frame has the ErrState updated to track the // smart error, providing no heater error exists! void -CSmartError::monitor(CProtocol& heaterFrame) +CSmartError::monitor(const CProtocol& heaterFrame) { bool bSilent = true; if(heaterFrame.verifyCRC(bSilent)) { // check but don't report dodgy frames to debug // only accept valid heater frames! monitor(heaterFrame.getRunState()); - unsigned char HtrErr = heaterFrame.getErrState(); - if((HtrErr & 0xfe) == 0) { - // heater is Idle or Normal running state (E-0X + 1 in protocol!!) - unsigned char smartErr = getError(); - if(smartErr) { - heaterFrame.setErrState(smartErr); // 10 = ign fail, 11 = retry - heaterFrame.setCRC(); // changed the message, fix the CRC! - } - } } } diff --git a/Arduino/BTCDieselHeater/src/Protocol/SmartError.h b/Arduino/BTCDieselHeater/src/Protocol/SmartError.h index 417a7cf..ac36b51 100644 --- a/Arduino/BTCDieselHeater/src/Protocol/SmartError.h +++ b/Arduino/BTCDieselHeater/src/Protocol/SmartError.h @@ -29,7 +29,7 @@ public: CSmartError(); void reset(); void inhibit(); - void monitor(CProtocol& heaterFrame); + void monitor(const CProtocol& heaterFrame); void monitor(unsigned char runstate); unsigned char getError(); }; diff --git a/Arduino/BTCDieselHeater/src/Protocol/helpers.h b/Arduino/BTCDieselHeater/src/Protocol/helpers.h index 570eb00..61684c9 100644 --- a/Arduino/BTCDieselHeater/src/Protocol/helpers.h +++ b/Arduino/BTCDieselHeater/src/Protocol/helpers.h @@ -48,6 +48,7 @@ extern void resetJSONmoderator(); extern const char* getBlueWireStatStr(); extern bool hasOEMcontroller(); extern int getBlueWireStat(); +extern int getSmartError(); #define LOWERLIMIT(A, B) if(A < B) A = B #define UPPERLIMIT(A, B) if(A > B) A = B