From 8c3af5289204180ec846e14f8b9cd24bbb653f5b Mon Sep 17 00:00:00 2001 From: Thomas Kunze Date: Sat, 17 Aug 2024 22:37:15 +0200 Subject: [PATCH] More logging --- src/knx/apdu.cpp | 2 +- src/knx/apdu.h | 2 +- src/knx/application_layer.cpp | 17 ++++++++++++---- src/knx/cemi_frame.cpp | 4 ++-- src/knx/cemi_frame.h | 2 +- src/knx/data_link_layer.cpp | 4 ++-- src/knx/ip/ip_data_link_layer.cpp | 4 ++-- src/knx/ip/knx_ip_frame.cpp | 2 +- src/knx/ip/knx_ip_frame.h | 2 +- src/knx/network_layer_device.cpp | 13 +++++++++++++ src/knx/npdu.cpp | 5 +++++ src/knx/npdu.h | 2 ++ src/knx/secure_application_layer.cpp | 12 ++++++------ src/knx/tpdu.cpp | 20 +++++++++---------- src/knx/tpdu.h | 3 ++- src/knx/transport_layer.cpp | 29 +++++++++++++++++++--------- src/knx/util/logger.h | 16 +++++++++------ 17 files changed, 92 insertions(+), 47 deletions(-) diff --git a/src/knx/apdu.cpp b/src/knx/apdu.cpp index e19d8ad..8b36a7f 100644 --- a/src/knx/apdu.cpp +++ b/src/knx/apdu.cpp @@ -40,7 +40,7 @@ uint8_t APDU::length() const return _frame.npdu().octetCount(); } -string APDU::to_string() const +string APDU::toString() const { string value = "APDU: " + enum_name(type()) + " "; value += byte2hex(_data[0] & 0x3); diff --git a/src/knx/apdu.h b/src/knx/apdu.h index 2de954a..c05d1b3 100644 --- a/src/knx/apdu.h +++ b/src/knx/apdu.h @@ -37,7 +37,7 @@ class APDU /** * Convert APDU to string. */ - std::string to_string() const; + std::string toString() const; protected: /** diff --git a/src/knx/application_layer.cpp b/src/knx/application_layer.cpp index 06e9e83..753773f 100644 --- a/src/knx/application_layer.cpp +++ b/src/knx/application_layer.cpp @@ -10,7 +10,10 @@ #include "util/logger.h" #define LOGGER Logger::logger("ApplicationLayer") -const SecurityControl ApplicationLayer::noSecurity {.toolAccess = false, .dataSecurity = DataSecurity::None}; +const SecurityControl ApplicationLayer::noSecurity +{ + .toolAccess = false, .dataSecurity = DataSecurity::None +}; ApplicationLayer::ApplicationLayer(BusAccessUnit& bau) : _bau(bau) { @@ -35,6 +38,8 @@ void ApplicationLayer::dataGroupIndication(HopCountType hopType, Priority priori void ApplicationLayer::dataGroupIndication(HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl& secCtrl) { + LOGGER.info("dataGroupIndication %S", apdu.toString()); + if (_assocTable == nullptr) return; @@ -86,6 +91,7 @@ void ApplicationLayer::dataGroupConfirm(AckType ack, HopCountType hopType, Prior void ApplicationLayer::dataGroupConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl& secCtrl, bool status) { + LOGGER.info("dataGroupConfirm %S", apdu.toString()); switch (apdu.type()) { case GroupValueRead: @@ -122,6 +128,7 @@ void ApplicationLayer::dataBroadcastIndication(HopCountType hopType, Priority pr void ApplicationLayer::dataBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu, const SecurityControl& secCtrl) { + LOGGER.info("dataBroadcastIndication %S", apdu.toString()); uint8_t* data = apdu.data(); switch (apdu.type()) @@ -181,6 +188,7 @@ void ApplicationLayer::dataBroadcastConfirm(AckType ack, HopCountType hopType, P void ApplicationLayer::dataBroadcastConfirm(AckType ack, HopCountType hopType, Priority priority, APDU& apdu, const SecurityControl& secCtrl, bool status) { + LOGGER.info("dataBroadcastConfirm %S", apdu.toString()); uint8_t* data = apdu.data(); switch (apdu.type()) @@ -235,6 +243,7 @@ void ApplicationLayer::dataSystemBroadcastIndication(HopCountType hopType, Prior void ApplicationLayer::dataSystemBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu, const SecurityControl& secCtrl) { + LOGGER.info("dataSystemBroadcastIndication %S", apdu.toString()); const uint8_t* data = apdu.data(); switch (apdu.type()) @@ -271,8 +280,7 @@ void ApplicationLayer::dataSystemBroadcastIndication(HopCountType hopType, Prior } default: - print("SystemBroadcast-indication: unhandled APDU-Type: "); - println(apdu.type()); + LOGGER.warning("SystemBroadcast-indication: unhandled APDU-Type: %d", apdu.type()); break; } } @@ -284,6 +292,7 @@ void ApplicationLayer::dataSystemBroadcastConfirm(HopCountType hopType, Priority void ApplicationLayer::dataSystemBroadcastConfirm(HopCountType hopType, Priority priority, APDU& apdu, const SecurityControl& secCtrl, bool status) { + LOGGER.info("dataSystemBroadcastConfirm %S", apdu.toString()); const uint8_t* data = apdu.data(); switch (apdu.type()) @@ -1362,7 +1371,7 @@ void ApplicationLayer::individualIndication(HopCountType hopType, Priority prior } default: - LOGGER.warning("Individual-indication: unhandled APDU-Type: %s", apdu.to_string().c_str()); + LOGGER.warning("Individual-indication: unhandled APDU-Type: %S", apdu.toString()); } } diff --git a/src/knx/cemi_frame.cpp b/src/knx/cemi_frame.cpp index 550f618..9e64f4d 100644 --- a/src/knx/cemi_frame.cpp +++ b/src/knx/cemi_frame.cpp @@ -400,9 +400,9 @@ bool CemiFrame::valid() const return true; } -std::string CemiFrame::to_string() const +std::string CemiFrame::toString() const { - std::string value = enum_name(frameType()) + " "; + std::string value = "DPDU:" + enum_name(frameType()) + " "; value += enum_name(systemBroadcast()) + " "; value += enum_name(ack()) + " "; value += enum_name(repetition()) + " "; diff --git a/src/knx/cemi_frame.h b/src/knx/cemi_frame.h index 71fa364..d2ada47 100644 --- a/src/knx/cemi_frame.h +++ b/src/knx/cemi_frame.h @@ -72,7 +72,7 @@ class CemiFrame uint8_t calcCrcTP(uint8_t* buffer, uint16_t len); bool valid() const; - std::string to_string() const; + std::string toString() const; private: uint8_t buffer[0xff + NPDU_LPDU_DIFF] = {0}; //only valid of add info is zero diff --git a/src/knx/data_link_layer.cpp b/src/knx/data_link_layer.cpp index d64faa1..ef8ce45 100644 --- a/src/knx/data_link_layer.cpp +++ b/src/knx/data_link_layer.cpp @@ -161,7 +161,7 @@ void DataLinkLayer::frameReceived(CemiFrame& frame) SystemBroadcast systemBroadcast = frame.systemBroadcast(); - LOGGER.info("frameReceived %s", frame.to_string().c_str()); + LOGGER.info("frameReceived %S", frame.toString()); #ifdef USE_CEMI_SERVER @@ -222,7 +222,7 @@ bool DataLinkLayer::sendTelegram(NPDU& npdu, AckType ack, uint16_t destinationAd else frame.frameType(format); - LOGGER.info("sendTelegram %s", frame.to_string().c_str()); + LOGGER.info("sendTelegram %S", frame.toString()); if (!frame.valid()) { diff --git a/src/knx/ip/ip_data_link_layer.cpp b/src/knx/ip/ip_data_link_layer.cpp index 32e83a3..bb3064b 100644 --- a/src/knx/ip/ip_data_link_layer.cpp +++ b/src/knx/ip/ip_data_link_layer.cpp @@ -1137,7 +1137,7 @@ bool IpDataLinkLayer::sendMulicast(KnxIpFrame& ipFrame) if (!_enabled) return false; - LOGGER.info("sendMulicast %s", ipFrame.to_string().c_str()); + LOGGER.info("sendMulicast %S", ipFrame.toString()); return _platform.sendBytesMultiCast(ipFrame.data(), ipFrame.totalLength()); } @@ -1147,7 +1147,7 @@ bool IpDataLinkLayer::sendUnicast(uint32_t addr, uint16_t port, KnxIpFrame& ipFr if (!_enabled) return false; - LOGGER.info("sendUnicast to %s:%d %s", ipaddr2str(addr).c_str(), port, ipFrame.to_string().c_str()); + LOGGER.info("sendUnicast to %S:%d %S", ipaddr2str(addr), port, ipFrame.toString()); return _platform.sendBytesMultiCast(ipFrame.data(), ipFrame.totalLength()); } diff --git a/src/knx/ip/knx_ip_frame.cpp b/src/knx/ip/knx_ip_frame.cpp index 1a98294..6367e0d 100644 --- a/src/knx/ip/knx_ip_frame.cpp +++ b/src/knx/ip/knx_ip_frame.cpp @@ -77,7 +77,7 @@ KnxIpFrame::KnxIpFrame(uint16_t length) totalLength(length); } -const std::string KnxIpFrame::to_string() const +const std::string KnxIpFrame::toString() const { return enum_name(protocolVersion()) + " " + enum_name(serviceTypeIdentifier()); } diff --git a/src/knx/ip/knx_ip_frame.h b/src/knx/ip/knx_ip_frame.h index 17819f7..52bcab4 100644 --- a/src/knx/ip/knx_ip_frame.h +++ b/src/knx/ip/knx_ip_frame.h @@ -48,7 +48,7 @@ class KnxIpFrame uint16_t totalLength() const; void totalLength(uint16_t length); uint8_t* data(); - const std::string to_string() const; + const std::string toString() const; protected: bool _freeData = false; uint8_t* _data = 0; diff --git a/src/knx/network_layer_device.cpp b/src/knx/network_layer_device.cpp index 105003e..067d109 100644 --- a/src/knx/network_layer_device.cpp +++ b/src/knx/network_layer_device.cpp @@ -3,6 +3,9 @@ #include "tpdu.h" #include "cemi_frame.h" #include "bits.h" +#include "util/logger.h" + +#define LOGGER Logger::logger("NetworkLayerDevice") NetworkLayerDevice::NetworkLayerDevice(DeviceObject& deviceObj, TransportLayer& layer) : NetworkLayer(deviceObj, layer), @@ -29,6 +32,7 @@ void NetworkLayerDevice::dataIndividualRequest(AckType ack, uint16_t destination // print.print("-> NL "); // tpdu.apdu().printPDU(); //} + LOGGER.info("dataIndividualRequest %S", npdu.toString()); _netLayerEntities[kInterfaceIndex].sendDataRequest(npdu, ack, destination, _deviceObj.individualAddress(), priority, IndividualAddress, Broadcast); } @@ -41,6 +45,7 @@ void NetworkLayerDevice::dataGroupRequest(AckType ack, uint16_t destination, Hop else npdu.hopCount(hopCount()); + LOGGER.info("dataGroupRequest %S", npdu.toString()); _netLayerEntities[kInterfaceIndex].sendDataRequest(npdu, ack, destination, _deviceObj.individualAddress(), priority, GroupAddress, Broadcast); } @@ -53,6 +58,7 @@ void NetworkLayerDevice::dataBroadcastRequest(AckType ack, HopCountType hopType, else npdu.hopCount(hopCount()); + LOGGER.info("dataBroadcastRequest %S", npdu.toString()); _netLayerEntities[kInterfaceIndex].sendDataRequest(npdu, ack, 0, _deviceObj.individualAddress(), priority, GroupAddress, Broadcast); } @@ -69,11 +75,13 @@ void NetworkLayerDevice::dataSystemBroadcastRequest(AckType ack, HopCountType ho else npdu.hopCount(hopCount()); + LOGGER.info("dataSystemBroadcastRequest %S", npdu.toString()); _netLayerEntities[kInterfaceIndex].sendDataRequest(npdu, ack, 0, _deviceObj.individualAddress(), priority, GroupAddress, broadcastType); } void NetworkLayerDevice::dataIndication(AckType ack, AddressType addrType, uint16_t destination, FrameFormat format, NPDU& npdu, Priority priority, uint16_t source, uint8_t srcIfIdx) { + LOGGER.info("dataIndication %S", npdu.toString()); HopCountType hopType = npdu.hopCount() == 7 ? UnlimitedRouting : NetworkLayerParameter; if (addrType == IndividualAddress) @@ -95,6 +103,7 @@ void NetworkLayerDevice::dataIndication(AckType ack, AddressType addrType, uint1 void NetworkLayerDevice::dataConfirm(AckType ack, AddressType addressType, uint16_t destination, FrameFormat format, Priority priority, uint16_t source, NPDU& npdu, bool status, uint8_t srcIfIdx) { + LOGGER.info("dataConfirm %S", npdu.toString()); HopCountType hopType = npdu.hopCount() == 7 ? UnlimitedRouting : NetworkLayerParameter; if (addressType == IndividualAddress) @@ -113,6 +122,7 @@ void NetworkLayerDevice::dataConfirm(AckType ack, AddressType addressType, uint1 void NetworkLayerDevice::broadcastIndication(AckType ack, FrameFormat format, NPDU& npdu, Priority priority, uint16_t source, uint8_t srcIfIdx) { + LOGGER.info("broadcastIndication %S", npdu.toString()); HopCountType hopType = npdu.hopCount() == 7 ? UnlimitedRouting : NetworkLayerParameter; DptMedium mediumType = _netLayerEntities[srcIfIdx].mediumType(); @@ -133,18 +143,21 @@ void NetworkLayerDevice::broadcastIndication(AckType ack, FrameFormat format, NP void NetworkLayerDevice::broadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU& npdu, bool status, uint8_t srcIfIdx) { + LOGGER.info("broadcastConfirm %S", npdu.toString()); HopCountType hopType = npdu.hopCount() == 7 ? UnlimitedRouting : NetworkLayerParameter; _transportLayer.dataBroadcastConfirm(ack, hopType, priority, npdu.tpdu(), status); } void NetworkLayerDevice::systemBroadcastIndication(AckType ack, FrameFormat format, NPDU& npdu, Priority priority, uint16_t source, uint8_t srcIfIdx) { + LOGGER.info("systemBroadcastIndication %S", npdu.toString()); HopCountType hopType = npdu.hopCount() == 7 ? UnlimitedRouting : NetworkLayerParameter; _transportLayer.dataSystemBroadcastIndication(hopType, priority, source, npdu.tpdu()); } void NetworkLayerDevice::systemBroadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU& npdu, bool status, uint8_t srcIfIdx) { + LOGGER.info("systemBroadcastConfirm %S", npdu.toString()); HopCountType hopType = npdu.hopCount() == 7 ? UnlimitedRouting : NetworkLayerParameter; _transportLayer.dataSystemBroadcastConfirm(ack, hopType, npdu.tpdu(), priority, status); } diff --git a/src/knx/npdu.cpp b/src/knx/npdu.cpp index a5b840c..ce14c5a 100644 --- a/src/knx/npdu.cpp +++ b/src/knx/npdu.cpp @@ -42,3 +42,8 @@ TPDU& NPDU::tpdu() { return _frame.tpdu(); } + +const std::string NPDU::toString() const +{ + return std::string("NPDU: Octetcount:") + to_string(octetCount()) + " hopCount " + to_string(hopCount()); +} \ No newline at end of file diff --git a/src/knx/npdu.h b/src/knx/npdu.h index bfa52ca..a578e6b 100644 --- a/src/knx/npdu.h +++ b/src/knx/npdu.h @@ -1,6 +1,7 @@ #pragma once #include +#include class CemiFrame; class TPDU; @@ -17,6 +18,7 @@ class NPDU void hopCount(uint8_t value); CemiFrame& frame(); TPDU& tpdu(); + const std::string toString() const; protected: NPDU(uint8_t* data, CemiFrame& frame); diff --git a/src/knx/secure_application_layer.cpp b/src/knx/secure_application_layer.cpp index 969f5af..b8689cd 100644 --- a/src/knx/secure_application_layer.cpp +++ b/src/knx/secure_application_layer.cpp @@ -660,7 +660,7 @@ void SecureApplicationLayer::sendSyncRequest(uint16_t dstAddr, bool dstAddrIsGro if (secure(request.data() + APDU_LPDU_DIFF, kSecureSyncRequest, _deviceObj.individualAddress(), dstAddr, dstAddrIsGroupAddr, tpci, asdu, sizeof(asdu), secCtrl, systemBcast)) { - LOGGER.info("SyncRequest: %s", request.apdu().to_string().c_str()); + LOGGER.info("SyncRequest: %S", request.apdu().toString()); if (_syncReqBroadcastOutgoing) { @@ -723,7 +723,7 @@ void SecureApplicationLayer::sendSyncResponse(uint16_t dstAddr, bool dstAddrIsGr { _lastSyncRes = millis(); - LOGGER.info("SyncResponse: %s", response.apdu().to_string().c_str()); + LOGGER.info("SyncResponse: %S", response.apdu()); if (_syncReqBroadcastIncoming) { @@ -1063,7 +1063,7 @@ bool SecureApplicationLayer::decrypt(uint8_t* plainApdu, uint16_t plainApduLengt bool SecureApplicationLayer::decodeSecureApdu(APDU& secureApdu, APDU& plainApdu, SecurityControl& secCtrl) { // Decode secure APDU - LOGGER.info("decodeSecureApdu: Secure APDU: %s", secureApdu.to_string().c_str()); + LOGGER.info("decodeSecureApdu: Secure APDU: %S", secureApdu.toString()); uint16_t srcAddress = secureApdu.frame().sourceAddress(); uint16_t dstAddress = secureApdu.frame().destinationAddress(); @@ -1085,7 +1085,7 @@ bool SecureApplicationLayer::decodeSecureApdu(APDU& secureApdu, APDU& plainApdu, // We are starting from TPCI octet (including): plainApdu.frame().data()+APDU_LPDU_DIFF if (decrypt(plainApdu.frame().data() + APDU_LPDU_DIFF, plainApdu.length() + 1, srcAddress, dstAddress, isDstAddrGroupAddr, tpci, secureApdu.data() + 1, secCtrl, isSystemBroadcast)) { - LOGGER.info("decodeSecureApdu: Plain APDU: %s", plainApdu.frame().apdu().to_string().c_str()); + LOGGER.info("decodeSecureApdu: Plain APDU: %S", plainApdu.frame().apdu().toString()); return true; } @@ -1260,7 +1260,7 @@ bool SecureApplicationLayer::createSecureApdu(APDU& plainApdu, APDU& secureApdu, { // Create secure APDU - LOGGER.info("createSecureApdu: Plain APDU: %s", plainApdu.frame().apdu().to_string().c_str()); + LOGGER.info("createSecureApdu: Plain APDU: %S", plainApdu.frame().apdu().toString()); uint16_t srcAddress = plainApdu.frame().sourceAddress(); uint16_t dstAddress = plainApdu.frame().destinationAddress(); @@ -1296,7 +1296,7 @@ bool SecureApplicationLayer::createSecureApdu(APDU& plainApdu, APDU& secureApdu, println(nextSequenceNumber(secCtrl.toolAccess), HEX); updateSequenceNumber(secCtrl.toolAccess, nextSequenceNumber(secCtrl.toolAccess) + 1); - LOGGER.info("createSecureApdu: Secure APDU: %s", secureApdu.frame().apdu().to_string().c_str()); + LOGGER.info("createSecureApdu: Secure APDU: %S", secureApdu.frame().apdu().toString()); return true; } diff --git a/src/knx/tpdu.cpp b/src/knx/tpdu.cpp index c5b2547..2fd400e 100644 --- a/src/knx/tpdu.cpp +++ b/src/knx/tpdu.cpp @@ -118,15 +118,15 @@ CemiFrame& TPDU::frame() return _frame; } -void TPDU::printPDU() +const std::string TPDU::toString() const { - /* print.print("TPDU: "); - print.print(type(), HEX, 2); - print.print(" "); - for (uint8_t i = 0; i < apdu().length() + 1; ++i) - { - if (i) print.print(" "); - print.print(_data[i], HEX, 2); - } - print.println()*/; + std::string value = std::string("TPDU: ") + enum_name(type()) + " "; + + if (control()) + value += "control "; + + if (numbered()) + value += "numbered sequence: " + to_string(sequenceNumber()); + + return value; } \ No newline at end of file diff --git a/src/knx/tpdu.h b/src/knx/tpdu.h index 3dad00a..3fcdca7 100644 --- a/src/knx/tpdu.h +++ b/src/knx/tpdu.h @@ -2,6 +2,7 @@ #include "stdint.h" #include "knx_types.h" +#include class CemiFrame; class APDU; @@ -25,7 +26,7 @@ class TPDU APDU& apdu(); CemiFrame& frame(); - void printPDU(); + const std::string toString() const; protected: TPDU(uint8_t* data, CemiFrame& frame); diff --git a/src/knx/transport_layer.cpp b/src/knx/transport_layer.cpp index 5515036..8094967 100644 --- a/src/knx/transport_layer.cpp +++ b/src/knx/transport_layer.cpp @@ -5,8 +5,11 @@ #include "application_layer.h" #include "platform.h" #include "bits.h" +#include "util/logger.h" #include +#define LOGGER Logger::logger("TransportLayer") + TransportLayer::TransportLayer(ApplicationLayer& layer): _savedFrame(0), _savedFrameConnecting(0), _applicationLayer(layer) { @@ -25,13 +28,7 @@ void TransportLayer::groupAddressTable(AddressTableObject& addrTable) void TransportLayer::dataIndividualIndication(uint16_t destination, HopCountType hopType, Priority priority, uint16_t source, TPDU& tpdu) { - //if (tpdu.apdu().length() > 0) - //{ - // print.print("<- TL "); - // tpdu.printPDU(); - // print.print("<- TL "); - // tpdu.apdu().printPDU(); - //} + LOGGER.info("dataIndividualIndication %S", tpdu.toString()); uint8_t sequenceNo = tpdu.sequenceNumber(); @@ -334,6 +331,7 @@ void TransportLayer::dataIndividualIndication(uint16_t destination, HopCountType void TransportLayer::dataIndividualConfirm(AckType ack, uint16_t destination, HopCountType hopType, Priority priority, TPDU& tpdu, bool status) { + LOGGER.info("dataIndividualConfirm %S", tpdu.toString()); TpduType type = tpdu.type(); switch (type) @@ -407,39 +405,49 @@ void TransportLayer::dataIndividualConfirm(AckType ack, uint16_t destination, Ho void TransportLayer::dataGroupIndication(uint16_t destination, HopCountType hopType, Priority priority, uint16_t source, TPDU& tpdu) { + LOGGER.info("dataGroupIndication %S", tpdu.toString()); + if (_groupAddressTable == nullptr) return; uint16_t tsap = _groupAddressTable->getTsap(destination); if (tsap == 0) + { + LOGGER.info("dataGroupIndication telegram is not for us"); return; + } _applicationLayer.dataGroupIndication(hopType, priority, tsap, tpdu.apdu()); } void TransportLayer::dataGroupConfirm(AckType ack, uint16_t source, uint16_t destination, HopCountType hopType, Priority priority, TPDU& tpdu, bool status) { + LOGGER.info("dataGroupConfirm %S", tpdu.toString()); _applicationLayer.dataGroupConfirm(ack, hopType, priority, destination, tpdu.apdu(), status); } void TransportLayer::dataBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, TPDU& tpdu) { + LOGGER.info("dataBroadcastIndication %S", tpdu.toString()); _applicationLayer.dataBroadcastIndication(hopType, priority, source, tpdu.apdu()); } void TransportLayer::dataBroadcastConfirm(AckType ack, HopCountType hopType, Priority priority, TPDU& tpdu, bool status) { + LOGGER.info("dataBroadcastConfirm %S", tpdu.toString()); _applicationLayer.dataBroadcastConfirm(ack, hopType, priority, tpdu.apdu(), status); } void TransportLayer::dataSystemBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, TPDU& tpdu) { + LOGGER.info("dataSystemBroadcastIndication %S", tpdu.toString()); _applicationLayer.dataSystemBroadcastIndication(hopType, priority, source, tpdu.apdu()); } void TransportLayer::dataSystemBroadcastConfirm(AckType ack, HopCountType hopType, TPDU& tpdu, Priority priority, bool status) { + LOGGER.info("dataSystemBroadcastConfirm %S", tpdu.toString()); _applicationLayer.dataSystemBroadcastConfirm(hopType, priority, tpdu.apdu(), status); } @@ -450,26 +458,28 @@ void TransportLayer::dataGroupRequest(AckType ack, HopCountType hopType, Priorit uint16_t groupAdress = _groupAddressTable->getGroupAddress(tsap); TPDU& tpdu = apdu.frame().tpdu(); + LOGGER.info("dataGroupRequest %S", tpdu.toString()); _networkLayer->dataGroupRequest(ack, groupAdress, hopType, priority, tpdu); } void TransportLayer::dataBroadcastRequest(AckType ack, HopCountType hopType, Priority priority, APDU& apdu) { TPDU& tpdu = apdu.frame().tpdu(); + LOGGER.info("dataBroadcastRequest %S", tpdu.toString()); _networkLayer->dataBroadcastRequest(ack, hopType, priority, tpdu); } void TransportLayer::dataSystemBroadcastRequest(AckType ack, HopCountType hopType, Priority priority, APDU& apdu) { TPDU& tpdu = apdu.frame().tpdu(); + LOGGER.info("dataSystemBroadcastRequest %S", tpdu.toString()); return _networkLayer->dataSystemBroadcastRequest(ack, hopType, priority, tpdu); } void TransportLayer::dataIndividualRequest(AckType ack, HopCountType hopType, Priority priority, uint16_t destination, APDU& apdu) { - //print.print("-> TL "); - //apdu.printPDU(); TPDU& tpdu = apdu.frame().tpdu(); + LOGGER.info("dataIndividualRequest %S", tpdu.toString()); _networkLayer->dataIndividualRequest(ack, destination, hopType, priority, tpdu); } @@ -631,6 +641,7 @@ void TransportLayer::sendControlTelegram(TpduType pduType, uint8_t seqNo) TPDU& tpdu = frame.tpdu(); tpdu.type(pduType); tpdu.sequenceNumber(seqNo); + LOGGER.info("sendControlTelegram %S", tpdu.toString()); _networkLayer->dataIndividualRequest(AckRequested, _connectionAddress, NetworkLayerParameter, SystemPriority, tpdu); } diff --git a/src/knx/util/logger.h b/src/knx/util/logger.h index 6e585ad..d3bd39d 100644 --- a/src/knx/util/logger.h +++ b/src/knx/util/logger.h @@ -65,16 +65,16 @@ class Logger return "INFO"; case LogType::Warning: - return "WARNING"; + return "WARN"; case LogType::Error: - return "ERROR"; + return "ERR "; case LogType::Critical: - return "CRITICAL"; + return "CRIT"; case LogType::Exception: - return "EXCEPTION"; + return "EXCE"; } return to_string(type); } @@ -84,11 +84,11 @@ class Logger { #ifndef KNX_NO_PRINT print(millis()); - print("\t"); + print(" "); print(_name.c_str()); print("\t"); print(enum_name(type).c_str()); - print("\t"); + print(" "); while (*format) { @@ -104,6 +104,10 @@ class Logger { print(va_arg(args, char*)); } + else if (*format == 'S') + { + print(va_arg(args, std::string).c_str()); + } else if (*format == 'f') { print(va_arg(args, double));