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 return ((mask_ & frame) == masked_id_) != invert_;
36 : min_id_(min_id), max_id_(max_id), invert_(invert)
39 return (min_id_ <= frame && frame <= max_id_) != invert_;
57 for(FilterVector::const_iterator it=filters_.begin(); it != filters_.end(); ++it) {
58 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
boost::shared_ptr< CommInterface > CommInterfaceSharedPtr
std::vector< FrameFilterSharedPtr > FilterVector
virtual bool pass(const can::Frame &frame) const
const uint32_t masked_id_
boost::shared_ptr< FrameFilter > FrameFilterSharedPtr
const std::vector< FrameFilterSharedPtr > filters_
void filter(const Frame &frame)
virtual bool pass(const can::Frame &frame) const =0
FrameRangeFilter(uint32_t min_id, uint32_t max_id, bool invert=false)
FrameListener::ListenerConstSharedPtr FrameListenerConstSharedPtr
CommInterface::FrameListenerConstSharedPtr listener_
FrameMaskFilter(uint32_t can_id, uint32_t mask=MASK_RELAXED, bool invert=false)