diff --git a/lib/CustomOpenTherm/CustomOpenTherm.h b/lib/CustomOpenTherm/CustomOpenTherm.h index 2871eac..389cfe5 100644 --- a/lib/CustomOpenTherm/CustomOpenTherm.h +++ b/lib/CustomOpenTherm/CustomOpenTherm.h @@ -112,6 +112,27 @@ public: return (byte)id == responseId; } + static uint8_t getResponseMessageTypeId(unsigned long response) { + return (response << 1) >> 29; + } + + static const char* getResponseMessageTypeString(unsigned long response) { + uint8_t msgType = getResponseMessageTypeId(response); + + switch (msgType) { + case (uint8_t) OpenThermMessageType::READ_ACK: + case (uint8_t) OpenThermMessageType::WRITE_ACK: + case (uint8_t) OpenThermMessageType::DATA_INVALID: + case (uint8_t) OpenThermMessageType::UNKNOWN_DATA_ID: + return CustomOpenTherm::messageTypeToString( + static_cast(msgType) + ); + + default: + return "UNKNOWN"; + } + } + // converters template static unsigned int toFloat(const T val) { diff --git a/src/OpenThermTask.h b/src/OpenThermTask.h index 24c994e..f1467c1 100644 --- a/src/OpenThermTask.h +++ b/src/OpenThermTask.h @@ -93,8 +93,13 @@ protected: this->instance->setAfterSendRequestCallback([this](unsigned long request, unsigned long response, OpenThermResponseStatus status, byte attempt) { Log.sverboseln( FPSTR(L_OT), - F("ID: %4d Request: %8lx Response: %8lx Attempt: %2d Status: %s"), - CustomOpenTherm::getDataID(request), request, response, attempt, CustomOpenTherm::statusToString(status) + F("ID: %4d Request: %8lx Response: %8lx Msg type: %s Attempt: %2d Status: %s"), + CustomOpenTherm::getDataID(request), + request, + response, + CustomOpenTherm::getResponseMessageTypeString(response), + attempt, + CustomOpenTherm::statusToString(status) ); if (status == OpenThermResponseStatus::SUCCESS) {