1 #ifndef SOCKETCAN_INTERFACE_FILTER_H 2 #define SOCKETCAN_INTERFACE_FILTER_H 19 static const uint32_t MASK_ALL = 0xffffffff;
20 static const uint32_t MASK_RELAXED = ~
Frame::EXTENDED_MASK;
21 FrameMaskFilter(uint32_t can_id, uint32_t mask = MASK_RELAXED,
bool invert =
false)
22 : mask_(mask), masked_id_(can_id & mask), invert_(invert)
25 const uint32_t k = frame.
key();
26 return ((mask_ & k) == masked_id_) != invert_;
37 : min_id_(min_id), max_id_(max_id), invert_(invert)
40 const uint32_t k = frame.
key();
41 return (min_id_ <= k && k <= max_id_) != invert_;
55 listener_(comm->createMsgListener([this](const
Frame &frame) {
56 for(FilterVector::const_iterator it=this->filters_.begin(); it != this->filters_.end(); ++it) {
57 if((*it)->pass(frame)){
64 const std::vector<FrameFilterSharedPtr>
filters_;
FilteredFrameListener(CommInterfaceSharedPtr comm, const Callable &callable, const FilterVector &filters)
virtual bool pass(const can::Frame &frame) const
virtual bool pass(const can::Frame &frame) const
FrameListener::ListenerConstSharedPtr FrameListenerConstSharedPtr
std::shared_ptr< CommInterface > CommInterfaceSharedPtr
const uint32_t masked_id_
std::vector< FrameFilterSharedPtr > FilterVector
const std::vector< FrameFilterSharedPtr > filters_
virtual bool pass(const can::Frame &frame) const =0
FrameRangeFilter(uint32_t min_id, uint32_t max_id, bool invert=false)
std::shared_ptr< FrameFilter > FrameFilterSharedPtr
CommInterface::FrameListenerConstSharedPtr listener_
FrameMaskFilter(uint32_t can_id, uint32_t mask=MASK_RELAXED, bool invert=false)