From 53842ad0c53710789323f73edeeaaaf23b40f80d Mon Sep 17 00:00:00 2001 From: Ing-Dom Date: Sun, 17 Dec 2023 14:42:04 +0100 Subject: [PATCH 1/3] Add the possibility to have a callback function signaling knx activity (for e.g. flashing LEDs) Can be enabled with KNX_ACTIVITYCALLBACK # Conflicts: # src/knx/ip_data_link_layer.cpp --- src/knx/bits.h | 8 ++++++++ src/knx/data_link_layer.cpp | 3 +++ src/knx/data_link_layer.h | 5 ++++- src/knx/ip_data_link_layer.cpp | 10 ++++++++++ src/knx/network_layer_entity.cpp | 5 +++++ src/knx/network_layer_entity.h | 1 + src/knx/tpuart_data_link_layer.cpp | 8 +++++++- src/knx_facade.h | 21 +++++++++++++++++++++ 8 files changed, 59 insertions(+), 2 deletions(-) diff --git a/src/knx/bits.h b/src/knx/bits.h index c5ce526..fe58f48 100644 --- a/src/knx/bits.h +++ b/src/knx/bits.h @@ -94,6 +94,14 @@ void printHex(const char* suffix, const uint8_t *data, size_t length, bool newli #define printHex(...) do {} while(0) #endif +#ifdef KNX_ACTIVITYCALLBACK +#define KNX_ACTIVITYCALLBACK_DIR 0x00 +#define KNX_ACTIVITYCALLBACK_DIR_RECV 0x00 +#define KNX_ACTIVITYCALLBACK_DIR_SEND 0x01 +#define KNX_ACTIVITYCALLBACK_IPUNICAST 0x02 +#define KNX_ACTIVITYCALLBACK_NET 0x04 +#endif + const uint8_t* popByte(uint8_t& b, const uint8_t* data); const uint8_t* popWord(uint16_t& w, const uint8_t* data); const uint8_t* popInt(uint32_t& i, const uint8_t* data); diff --git a/src/knx/data_link_layer.cpp b/src/knx/data_link_layer.cpp index b75c1ec..e2f601e 100644 --- a/src/knx/data_link_layer.cpp +++ b/src/knx/data_link_layer.cpp @@ -9,6 +9,9 @@ DataLinkLayer::DataLinkLayer(DeviceObject& devObj, NetworkLayerEntity& netLayerEntity, Platform& platform) : _deviceObject(devObj), _networkLayerEntity(netLayerEntity), _platform(platform) { +#ifdef KNX_ACTIVITYCALLBACK + _netIndex = netLayerEntity.getEntityIndex(); +#endif } #ifdef USE_CEMI_SERVER diff --git a/src/knx/data_link_layer.h b/src/knx/data_link_layer.h index 9e4d688..0270d31 100644 --- a/src/knx/data_link_layer.h +++ b/src/knx/data_link_layer.h @@ -42,5 +42,8 @@ class DataLinkLayer Platform& _platform; #ifdef USE_CEMI_SERVER CemiServer* _cemiServer; -#endif +#endif +#ifdef KNX_ACTIVITYCALLBACK + uint8_t _netIndex = 0; +#endif }; diff --git a/src/knx/ip_data_link_layer.cpp b/src/knx/ip_data_link_layer.cpp index 43a7a59..b18f4d2 100644 --- a/src/knx/ip_data_link_layer.cpp +++ b/src/knx/ip_data_link_layer.cpp @@ -30,6 +30,9 @@ bool IpDataLinkLayer::sendFrame(CemiFrame& frame) if(isSendLimitReached()) return false; bool success = sendBytes(packet.data(), packet.totalLength()); +#ifdef KNX_ACTIVITYCALLBACK + knx.Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR)); +#endif dataConReceived(frame, success); return success; } @@ -51,6 +54,10 @@ void IpDataLinkLayer::loop() || buffer[1] != KNXIP_PROTOCOL_VERSION) return; +#ifdef KNX_ACTIVITYCALLBACK + knx.Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_RECV << KNX_ACTIVITYCALLBACK_DIR)); +#endif + uint16_t code; popWord(code, buffer + 2); switch ((KnxIpServiceType)code) @@ -67,6 +74,9 @@ void IpDataLinkLayer::loop() KnxIpSearchResponse searchResponse(_ipParameters, _deviceObject); auto hpai = searchRequest.hpai(); +#ifdef KNX_ACTIVITYCALLBACK + knx.Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR) | (KNX_ACTIVITYCALLBACK_IPUNICAST)); +#endif _platform.sendBytesUniCast(hpai.ipAddress(), hpai.ipPortNumber(), searchResponse.data(), searchResponse.totalLength()); break; } diff --git a/src/knx/network_layer_entity.cpp b/src/knx/network_layer_entity.cpp index 6e51736..6463d83 100644 --- a/src/knx/network_layer_entity.cpp +++ b/src/knx/network_layer_entity.cpp @@ -23,6 +23,11 @@ DptMedium NetworkLayerEntity::mediumType() const return _dataLinkLayer->mediumType(); } +uint8_t NetworkLayerEntity::getEntityIndex() +{ + return _entityIndex; +} + void NetworkLayerEntity::dataIndication(AckType ack, AddressType addrType, uint16_t destination, FrameFormat format, NPDU& npdu, Priority priority, uint16_t source) { _netLayer.dataIndication(ack, addrType, destination, format, npdu, priority, source, _entityIndex); diff --git a/src/knx/network_layer_entity.h b/src/knx/network_layer_entity.h index e20d611..82db48c 100644 --- a/src/knx/network_layer_entity.h +++ b/src/knx/network_layer_entity.h @@ -19,6 +19,7 @@ class NetworkLayerEntity DataLinkLayer& dataLinkLayer(); DptMedium mediumType() const; + uint8_t getEntityIndex(); // from data link layer void dataIndication(AckType ack, AddressType addType, uint16_t destination, FrameFormat format, NPDU& npdu, diff --git a/src/knx/tpuart_data_link_layer.cpp b/src/knx/tpuart_data_link_layer.cpp index 22bbf13..a17b2a4 100644 --- a/src/knx/tpuart_data_link_layer.cpp +++ b/src/knx/tpuart_data_link_layer.cpp @@ -7,6 +7,7 @@ #include "device_object.h" #include "address_table_object.h" #include "cemi_frame.h" +#include "knx_facade.h" #include #include @@ -546,8 +547,10 @@ TpUartDataLinkLayer::TpUartDataLinkLayer(DeviceObject& devObj, void TpUartDataLinkLayer::frameBytesReceived(uint8_t* buffer, uint16_t length) { //printHex("=>", buffer, length); +#ifdef KNX_ACTIVITYCALLBACK + knx.Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_RECV << KNX_ACTIVITYCALLBACK_DIR)); +#endif CemiFrame frame(buffer, length); - frameReceived(frame); } @@ -653,6 +656,9 @@ bool TpUartDataLinkLayer::sendSingleFrameByte() if (_TxByteCnt >= _sendBufferLength) { _TxByteCnt = 0; +#ifdef KNX_ACTIVITYCALLBACK + knx.Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR)); +#endif return false; } return true; diff --git a/src/knx_facade.h b/src/knx_facade.h index 7facf61..c1fb0ca 100644 --- a/src/knx_facade.h +++ b/src/knx_facade.h @@ -70,6 +70,9 @@ typedef uint8_t* (*SaveCallback)(uint8_t* buffer); typedef void (*IsrFunctionPtr)(); typedef void (*ProgLedOnCallback)(); typedef void (*ProgLedOffCallback)(); +#ifdef KNX_ACTIVITYCALLBACK +typedef void (*ActivityCallback)(uint8_t info); +#endif template class KnxFacade : private SaveRestore { @@ -187,6 +190,21 @@ template class KnxFacade : private SaveRestore _progLedOnCallback = progLedOnCallback; } +#ifdef KNX_ACTIVITYCALLBACK + /// @brief sets the Callback Function indicating sent or received telegrams + /// @param activityCallback + /// @details the info parameter + void setActivityCallback(ActivityCallback activityCallback) + { + _activityCallback = activityCallback; + } + + void Activity(uint8_t info) + { + if(_activityCallback) + _activityCallback(info); + } +#endif int32_t buttonPin() { @@ -414,6 +432,9 @@ template class KnxFacade : private SaveRestore B& _bau; ProgLedOnCallback _progLedOnCallback = 0; ProgLedOffCallback _progLedOffCallback = 0; +#ifdef KNX_ACTIVITYCALLBACK + ActivityCallback _activityCallback = 0; +#endif uint32_t _ledPinActiveOn = KNX_LED_ACTIVE_ON; uint32_t _ledPin = KNX_LED; int32_t _buttonPin = KNX_BUTTON; From 311abdd88f5e10ea74f289ec3e82f2b2e054b63e Mon Sep 17 00:00:00 2001 From: Ing-Dom Date: Mon, 25 Dec 2023 16:34:40 +0100 Subject: [PATCH 2/3] redesigned the activitycallback without using the facade and with a more flexible approach. For performace reasons, the calls in the actual link layer is only activated when KNX_ACTIVITYCALLBACK is defined. There is now a DataLinkLayerCallback class where a specific Bau *can* inherit from and - if the specific link layer supports it, pass itself to that linklayer(s). --- src/knx/bau07B0.cpp | 17 ++++++++++++++++- src/knx/bau07B0.h | 2 +- src/knx/bau091A.cpp | 5 +++-- src/knx/bau091A.h | 2 +- src/knx/bau57B0.cpp | 3 ++- src/knx/bau57B0.h | 2 +- src/knx/data_link_layer.cpp | 12 ++++++++++++ src/knx/data_link_layer.h | 12 ++++++++++++ src/knx/ip_data_link_layer.cpp | 11 +++++++---- src/knx/ip_data_link_layer.h | 3 ++- src/knx/tpuart_data_link_layer.cpp | 13 ++++++++----- src/knx/tpuart_data_link_layer.h | 7 ++++++- 12 files changed, 71 insertions(+), 18 deletions(-) diff --git a/src/knx/bau07B0.cpp b/src/knx/bau07B0.cpp index ccd9b62..92fe665 100644 --- a/src/knx/bau07B0.cpp +++ b/src/knx/bau07B0.cpp @@ -10,7 +10,8 @@ using namespace std; Bau07B0::Bau07B0(Platform& platform) : BauSystemBDevice(platform), - _dlLayer(_deviceObj, _netLayer.getInterface(), _platform, (ITpUartCallBacks&) *this) + _dlLayer(_deviceObj, _netLayer.getInterface(), _platform, (ITpUartCallBacks&) *this, (DataLinkLayerCallbacks*) this), + DataLinkLayerCallbacks() #ifdef USE_CEMI_SERVER , _cemiServer(*this) #endif @@ -150,4 +151,18 @@ bool Bau07B0::isAckRequired(uint16_t address, bool isGrpAddr) return false; } +// /// @brief sets the Callback Function indicating sent or received telegrams +// /// @param activityCallback +// /// @details the info parameter +// void Bau07B0::setActivityCallback(ActivityCallback activityCallback) +// { +// _activityCallback = activityCallback; +// } + +// void Bau07B0::Activity(uint8_t info) +// { +// if(_activityCallback) +// _activityCallback(info); +// } + #endif diff --git a/src/knx/bau07B0.h b/src/knx/bau07B0.h index 3b29d72..b9c1e6c 100644 --- a/src/knx/bau07B0.h +++ b/src/knx/bau07B0.h @@ -8,7 +8,7 @@ #include "cemi_server.h" #include "cemi_server_object.h" -class Bau07B0 : public BauSystemBDevice, public ITpUartCallBacks +class Bau07B0 : public BauSystemBDevice, public ITpUartCallBacks, public DataLinkLayerCallbacks { public: Bau07B0(Platform& platform); diff --git a/src/knx/bau091A.cpp b/src/knx/bau091A.cpp index 9774952..2465bc4 100644 --- a/src/knx/bau091A.cpp +++ b/src/knx/bau091A.cpp @@ -12,8 +12,9 @@ Bau091A::Bau091A(Platform& platform) : BauSystemBCoupler(platform), _routerObj(memory()), _ipParameters(_deviceObj, platform), - _dlLayerPrimary(_deviceObj, _ipParameters, _netLayer.getPrimaryInterface(), _platform), - _dlLayerSecondary(_deviceObj, _netLayer.getSecondaryInterface(), platform, (ITpUartCallBacks&) *this) + _dlLayerPrimary(_deviceObj, _ipParameters, _netLayer.getPrimaryInterface(), _platform, (DataLinkLayerCallbacks*) this), + _dlLayerSecondary(_deviceObj, _netLayer.getSecondaryInterface(), platform, (ITpUartCallBacks&) *this, (DataLinkLayerCallbacks*) this), + DataLinkLayerCallbacks() #ifdef USE_CEMI_SERVER , _cemiServer(*this) diff --git a/src/knx/bau091A.h b/src/knx/bau091A.h index 7c9b8e5..606fbda 100644 --- a/src/knx/bau091A.h +++ b/src/knx/bau091A.h @@ -10,7 +10,7 @@ #include "tpuart_data_link_layer.h" #include "cemi_server_object.h" -class Bau091A : public BauSystemBCoupler, public ITpUartCallBacks +class Bau091A : public BauSystemBCoupler, public ITpUartCallBacks, public DataLinkLayerCallbacks { public: Bau091A(Platform& platform); diff --git a/src/knx/bau57B0.cpp b/src/knx/bau57B0.cpp index c9b3827..75522aa 100644 --- a/src/knx/bau57B0.cpp +++ b/src/knx/bau57B0.cpp @@ -11,7 +11,8 @@ using namespace std; Bau57B0::Bau57B0(Platform& platform) : BauSystemBDevice(platform), _ipParameters(_deviceObj, platform), - _dlLayer(_deviceObj, _ipParameters, _netLayer.getInterface(), _platform) + _dlLayer(_deviceObj, _ipParameters, _netLayer.getInterface(), _platform, (DataLinkLayerCallbacks*) this), + DataLinkLayerCallbacks() #ifdef USE_CEMI_SERVER , _cemiServer(*this) diff --git a/src/knx/bau57B0.h b/src/knx/bau57B0.h index a381ebb..f6309f9 100644 --- a/src/knx/bau57B0.h +++ b/src/knx/bau57B0.h @@ -8,7 +8,7 @@ #include "ip_data_link_layer.h" #include "cemi_server_object.h" -class Bau57B0 : public BauSystemBDevice +class Bau57B0 : public BauSystemBDevice, public DataLinkLayerCallbacks { public: Bau57B0(Platform& platform); diff --git a/src/knx/data_link_layer.cpp b/src/knx/data_link_layer.cpp index e2f601e..8de99f8 100644 --- a/src/knx/data_link_layer.cpp +++ b/src/knx/data_link_layer.cpp @@ -6,6 +6,18 @@ #include "cemi_server.h" #include "cemi_frame.h" + +void DataLinkLayerCallbacks::Activity(uint8_t info) +{ + if(_activityCallback) + _activityCallback(info); +} + +void DataLinkLayerCallbacks::setActivityCallback(ActivityCallback activityCallback) +{ + _activityCallback = activityCallback; +} + DataLinkLayer::DataLinkLayer(DeviceObject& devObj, NetworkLayerEntity& netLayerEntity, Platform& platform) : _deviceObject(devObj), _networkLayerEntity(netLayerEntity), _platform(platform) { diff --git a/src/knx/data_link_layer.h b/src/knx/data_link_layer.h index 0270d31..fe0d474 100644 --- a/src/knx/data_link_layer.h +++ b/src/knx/data_link_layer.h @@ -10,6 +10,18 @@ class Platform; +typedef void (*ActivityCallback)(uint8_t info); + +class DataLinkLayerCallbacks +{ +protected: + ActivityCallback _activityCallback = nullptr; +public: + virtual ~DataLinkLayerCallbacks() = default; + virtual void Activity(uint8_t info); + virtual void setActivityCallback(ActivityCallback activityCallback); +}; + class DataLinkLayer { public: diff --git a/src/knx/ip_data_link_layer.cpp b/src/knx/ip_data_link_layer.cpp index b18f4d2..aad2c14 100644 --- a/src/knx/ip_data_link_layer.cpp +++ b/src/knx/ip_data_link_layer.cpp @@ -19,7 +19,7 @@ #define MIN_LEN_CEMI 10 IpDataLinkLayer::IpDataLinkLayer(DeviceObject& devObj, IpParameterObject& ipParam, - NetworkLayerEntity &netLayerEntity, Platform& platform) : DataLinkLayer(devObj, netLayerEntity, platform), _ipParameters(ipParam) + NetworkLayerEntity &netLayerEntity, Platform& platform, DataLinkLayerCallbacks* dllcb) : DataLinkLayer(devObj, netLayerEntity, platform), _ipParameters(ipParam), _dllcb(dllcb) { } @@ -31,7 +31,8 @@ bool IpDataLinkLayer::sendFrame(CemiFrame& frame) return false; bool success = sendBytes(packet.data(), packet.totalLength()); #ifdef KNX_ACTIVITYCALLBACK - knx.Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR)); + if(_dllcb) + _dllcb->Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR)); #endif dataConReceived(frame, success); return success; @@ -55,7 +56,8 @@ void IpDataLinkLayer::loop() return; #ifdef KNX_ACTIVITYCALLBACK - knx.Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_RECV << KNX_ACTIVITYCALLBACK_DIR)); + if(_dllcb) + _dllcb->Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_RECV << KNX_ACTIVITYCALLBACK_DIR)); #endif uint16_t code; @@ -75,7 +77,8 @@ void IpDataLinkLayer::loop() auto hpai = searchRequest.hpai(); #ifdef KNX_ACTIVITYCALLBACK - knx.Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR) | (KNX_ACTIVITYCALLBACK_IPUNICAST)); + if(_dllcb) + _dllcb->Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR) | (KNX_ACTIVITYCALLBACK_IPUNICAST)); #endif _platform.sendBytesUniCast(hpai.ipAddress(), hpai.ipPortNumber(), searchResponse.data(), searchResponse.totalLength()); break; diff --git a/src/knx/ip_data_link_layer.h b/src/knx/ip_data_link_layer.h index 5f2d996..5402a93 100644 --- a/src/knx/ip_data_link_layer.h +++ b/src/knx/ip_data_link_layer.h @@ -13,7 +13,7 @@ class IpDataLinkLayer : public DataLinkLayer public: IpDataLinkLayer(DeviceObject& devObj, IpParameterObject& ipParam, NetworkLayerEntity& netLayerEntity, - Platform& platform); + Platform& platform, DataLinkLayerCallbacks* dllcb = nullptr); void loop(); void enabled(bool value); @@ -30,5 +30,6 @@ class IpDataLinkLayer : public DataLinkLayer bool isSendLimitReached(); IpParameterObject& _ipParameters; + DataLinkLayerCallbacks* _dllcb; }; #endif diff --git a/src/knx/tpuart_data_link_layer.cpp b/src/knx/tpuart_data_link_layer.cpp index a17b2a4..2af0dda 100644 --- a/src/knx/tpuart_data_link_layer.cpp +++ b/src/knx/tpuart_data_link_layer.cpp @@ -7,7 +7,6 @@ #include "device_object.h" #include "address_table_object.h" #include "cemi_frame.h" -#include "knx_facade.h" #include #include @@ -538,9 +537,11 @@ void TpUartDataLinkLayer::stopChip() TpUartDataLinkLayer::TpUartDataLinkLayer(DeviceObject& devObj, NetworkLayerEntity &netLayerEntity, Platform& platform, - ITpUartCallBacks& cb) + ITpUartCallBacks& cb, + DataLinkLayerCallbacks* dllcb) : DataLinkLayer(devObj, netLayerEntity, platform), - _cb(cb) + _cb(cb), + _dllcb(dllcb) { } @@ -548,7 +549,8 @@ void TpUartDataLinkLayer::frameBytesReceived(uint8_t* buffer, uint16_t length) { //printHex("=>", buffer, length); #ifdef KNX_ACTIVITYCALLBACK - knx.Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_RECV << KNX_ACTIVITYCALLBACK_DIR)); + if(_dllcb) + _dllcb->Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_RECV << KNX_ACTIVITYCALLBACK_DIR)); #endif CemiFrame frame(buffer, length); frameReceived(frame); @@ -657,7 +659,8 @@ bool TpUartDataLinkLayer::sendSingleFrameByte() { _TxByteCnt = 0; #ifdef KNX_ACTIVITYCALLBACK - knx.Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR)); + if(_dllcb) + _dllcb->Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR)); #endif return false; } diff --git a/src/knx/tpuart_data_link_layer.h b/src/knx/tpuart_data_link_layer.h index 9cc658b..4551fcf 100644 --- a/src/knx/tpuart_data_link_layer.h +++ b/src/knx/tpuart_data_link_layer.h @@ -21,8 +21,12 @@ class TpUartDataLinkLayer : public DataLinkLayer using DataLinkLayer::_platform; public: + // TpUartDataLinkLayer(DeviceObject& devObj, NetworkLayerEntity& netLayerEntity, + // Platform& platform, ITpUartCallBacks& cb); TpUartDataLinkLayer(DeviceObject& devObj, NetworkLayerEntity& netLayerEntity, - Platform& platform, ITpUartCallBacks& cb); + Platform& platform, ITpUartCallBacks& cb, DataLinkLayerCallbacks* dllcb = nullptr); + + void loop(); void enabled(bool value); @@ -74,5 +78,6 @@ class TpUartDataLinkLayer : public DataLinkLayer void stopChip(); ITpUartCallBacks& _cb; + DataLinkLayerCallbacks* _dllcb; }; #endif From 142e0a2325321c858dae86b076376e9d893f2ac6 Mon Sep 17 00:00:00 2001 From: Ing-Dom Date: Tue, 26 Dec 2023 13:48:50 +0100 Subject: [PATCH 3/3] fixing issues from PR review --- src/knx/bau07B0.cpp | 14 -------------- src/knx/data_link_layer.cpp | 2 +- src/knx/data_link_layer.h | 2 +- src/knx/ip_data_link_layer.cpp | 8 ++++---- src/knx/tpuart_data_link_layer.cpp | 6 +++--- src/knx/tpuart_data_link_layer.h | 2 -- 6 files changed, 9 insertions(+), 25 deletions(-) diff --git a/src/knx/bau07B0.cpp b/src/knx/bau07B0.cpp index 92fe665..c68ecb2 100644 --- a/src/knx/bau07B0.cpp +++ b/src/knx/bau07B0.cpp @@ -151,18 +151,4 @@ bool Bau07B0::isAckRequired(uint16_t address, bool isGrpAddr) return false; } -// /// @brief sets the Callback Function indicating sent or received telegrams -// /// @param activityCallback -// /// @details the info parameter -// void Bau07B0::setActivityCallback(ActivityCallback activityCallback) -// { -// _activityCallback = activityCallback; -// } - -// void Bau07B0::Activity(uint8_t info) -// { -// if(_activityCallback) -// _activityCallback(info); -// } - #endif diff --git a/src/knx/data_link_layer.cpp b/src/knx/data_link_layer.cpp index 8de99f8..be9d6fa 100644 --- a/src/knx/data_link_layer.cpp +++ b/src/knx/data_link_layer.cpp @@ -7,7 +7,7 @@ #include "cemi_frame.h" -void DataLinkLayerCallbacks::Activity(uint8_t info) +void DataLinkLayerCallbacks::activity(uint8_t info) { if(_activityCallback) _activityCallback(info); diff --git a/src/knx/data_link_layer.h b/src/knx/data_link_layer.h index fe0d474..817078e 100644 --- a/src/knx/data_link_layer.h +++ b/src/knx/data_link_layer.h @@ -18,7 +18,7 @@ protected: ActivityCallback _activityCallback = nullptr; public: virtual ~DataLinkLayerCallbacks() = default; - virtual void Activity(uint8_t info); + virtual void activity(uint8_t info); virtual void setActivityCallback(ActivityCallback activityCallback); }; diff --git a/src/knx/ip_data_link_layer.cpp b/src/knx/ip_data_link_layer.cpp index aad2c14..aa291cc 100644 --- a/src/knx/ip_data_link_layer.cpp +++ b/src/knx/ip_data_link_layer.cpp @@ -32,7 +32,7 @@ bool IpDataLinkLayer::sendFrame(CemiFrame& frame) bool success = sendBytes(packet.data(), packet.totalLength()); #ifdef KNX_ACTIVITYCALLBACK if(_dllcb) - _dllcb->Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR)); + _dllcb->activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR)); #endif dataConReceived(frame, success); return success; @@ -57,7 +57,7 @@ void IpDataLinkLayer::loop() #ifdef KNX_ACTIVITYCALLBACK if(_dllcb) - _dllcb->Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_RECV << KNX_ACTIVITYCALLBACK_DIR)); + _dllcb->activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_RECV << KNX_ACTIVITYCALLBACK_DIR)); #endif uint16_t code; @@ -77,8 +77,8 @@ void IpDataLinkLayer::loop() auto hpai = searchRequest.hpai(); #ifdef KNX_ACTIVITYCALLBACK - if(_dllcb) - _dllcb->Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR) | (KNX_ACTIVITYCALLBACK_IPUNICAST)); + if(_dllcb) + _dllcb->activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR) | (KNX_ACTIVITYCALLBACK_IPUNICAST)); #endif _platform.sendBytesUniCast(hpai.ipAddress(), hpai.ipPortNumber(), searchResponse.data(), searchResponse.totalLength()); break; diff --git a/src/knx/tpuart_data_link_layer.cpp b/src/knx/tpuart_data_link_layer.cpp index 2af0dda..1c9f777 100644 --- a/src/knx/tpuart_data_link_layer.cpp +++ b/src/knx/tpuart_data_link_layer.cpp @@ -550,7 +550,7 @@ void TpUartDataLinkLayer::frameBytesReceived(uint8_t* buffer, uint16_t length) //printHex("=>", buffer, length); #ifdef KNX_ACTIVITYCALLBACK if(_dllcb) - _dllcb->Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_RECV << KNX_ACTIVITYCALLBACK_DIR)); + _dllcb->activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_RECV << KNX_ACTIVITYCALLBACK_DIR)); #endif CemiFrame frame(buffer, length); frameReceived(frame); @@ -659,8 +659,8 @@ bool TpUartDataLinkLayer::sendSingleFrameByte() { _TxByteCnt = 0; #ifdef KNX_ACTIVITYCALLBACK - if(_dllcb) - _dllcb->Activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR)); + if(_dllcb) + _dllcb->activity((_netIndex << KNX_ACTIVITYCALLBACK_NET) | (KNX_ACTIVITYCALLBACK_DIR_SEND << KNX_ACTIVITYCALLBACK_DIR)); #endif return false; } diff --git a/src/knx/tpuart_data_link_layer.h b/src/knx/tpuart_data_link_layer.h index 4551fcf..c2e46f3 100644 --- a/src/knx/tpuart_data_link_layer.h +++ b/src/knx/tpuart_data_link_layer.h @@ -21,8 +21,6 @@ class TpUartDataLinkLayer : public DataLinkLayer using DataLinkLayer::_platform; public: - // TpUartDataLinkLayer(DeviceObject& devObj, NetworkLayerEntity& netLayerEntity, - // Platform& platform, ITpUartCallBacks& cb); TpUartDataLinkLayer(DeviceObject& devObj, NetworkLayerEntity& netLayerEntity, Platform& platform, ITpUartCallBacks& cb, DataLinkLayerCallbacks* dllcb = nullptr);