Я использую SocketCAN для доступа к шине CAN. Я успешно создал проходные фильтры следующим образом:
struct can_filter m_Filter;
// ... setting up m_Filters
setsockopt(m_CanSockId, SOL_CAN_RAW, CAN_RAW_FILTER, m_Filter,
sizeof(struct can_filter));
Это дает указание пропускать сообщения CAN при соответствии настройкам фильтра.
Теперь я хочу создать стоп-фильтр, но я не знаю, как это сделать. Например: я хочу пропустить все сообщения CAN, кроме тех, у которых ID 0x18DAF101.
Кто-нибудь знает, как это сделать?
Я просмотрел эту документацию связь, но не нашел ничего, что можно было бы попробовать, поэтому я и спросил здесь.





Вы должны установить бит CAN_INV_FILTER в своем фильтре, чтобы инвертировать логику фильтра.
Из документации по предоставленной вами ссылке:
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.
Спасибо! Я проверю как можно скорее, но я уже верю, что это то, что мне нужно!
Покажите нам, что вы пробовали?