0

I am using a SocketCAN to access the CAN bus. I have successfully created pass-filters like this:

struct can_filter m_Filter;
// ... setting up m_Filters
setsockopt(m_CanSockId, SOL_CAN_RAW, CAN_RAW_FILTER, m_Filter,
           sizeof(struct can_filter));

This instructs to let CAN messages pass when meeting the filter settings.

Now I want to create a stop-filter but I do not know how to do it. For example: I wish to let all CAN messages pass except the ones with ID 0x18DAF101.

Does anybody know how to do it?

robitop
  • 13
  • 2

1 Answers1

2

You have to set the bit CAN_INV_FILTER in your filter to invert the filter logic.

From the documentation behind the link you have provided:

The filter can be inverted in this semantic, when the CAN_INV_FILTER bit is set in can_id element of the can_filter structure.

MSpiller
  • 3,500
  • 2
  • 12
  • 24