Наши продукты используют хорошо известный стек CANopen, который использует socketCAN, на встроенной системе на основе Beaglebone Black, работающей под Ubuntu 14.04 LTS. Но по какой-то причине, даже несмотря на то, что стек, который мы используем, будет определять, когда шина CAN переходит в ПАССИВНОЕ состояние или даже в состояние ВЫКЛ., Он никогда не указывает, когда шина CAN восстанавливается после ошибок и выходит из ПАССИВНОГО состояния или состояния предупреждения. , и переходит в состояние без ошибок.
Если бы мне пришлось напрямую запросить драйвер socketCAN (через вызовы ioctl), смог бы я определить, когда шина CAN входит и выходит из состояния предупреждения (которое составляет менее 127 ошибок), в ПАССИВНОМ состоянии и выходит из него ( больше 127 ошибок) или отключается шина (больше 255 ошибок)?
Я хотел бы знать, трачу ли я свое время на это или есть лучший способ точно и в реальном времени обнаруживать все состояния CAN-шины?