Line data Source code
1 : // Copyright 2024 Accenture. 2 : 3 : #ifndef GUARD_CCAF5DB9_0D99_4CDE_906F_6774F3E05D59 4 : #define GUARD_CCAF5DB9_0D99_4CDE_906F_6774F3E05D59 5 : 6 : #include "can/framemgmt/ICANFrameListener.h" 7 : 8 : #include <estd/assert.h> 9 : 10 : namespace can 11 : { 12 : class IFilter; 13 : 14 : template<typename T> 15 : class CANFrameListenerProxy : public T 16 : { 17 : public: 18 1 : CANFrameListenerProxy() : _listener(nullptr) {} 19 : 20 1 : explicit CANFrameListenerProxy(ICANFrameListener& listener) : _listener(&listener) {} 21 : 22 1 : void setCANFrameListener(ICANFrameListener& listener) { _listener = &listener; } 23 : 24 1 : IFilter& getFilter() { return T::getFilter(); } 25 : 26 3 : void frameReceived(CANFrame const& canFrame) 27 : { 28 3 : if (_listener != nullptr) 29 : { 30 2 : _listener->frameReceived(canFrame); 31 : } 32 3 : } 33 : 34 : private: 35 : ICANFrameListener* _listener; 36 : }; 37 : 38 : } // namespace can 39 : 40 : #endif // GUARD_CCAF5DB9_0D99_4CDE_906F_6774F3E05D59