Получить CAN битрейт

Я хочу прочитать текущий настроенный битрейт CAN моего сокета socketcan в C ++.

Я могу видеть битрейт с ip -det link show can0:

9: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10
link/can  promiscuity 0
can state ERROR-ACTIVE restart-ms 100
bitrate 1000000 sample-point 0.750
tq 125 prop-seg 2 phase-seg1 3 phase-seg2 2 sjw 1
pcan_usb: tseg1 1..16 tseg2 1..8 sjw 1..4 brp 1..64 brp-inc 1
clock 8000000

Битрейт был установлен через /etc/network/interfaces, но пользователь может вручную изменить его.

libsocketcan, кажется, поддерживает только установку битрейта, но не его чтение.

код iproute2 который производит вывод выше использует rtnetlink.

Как я могу использовать libnetlink для чтения соответствующего атрибута? Или есть другой способ чтения текущего битрейта?

2

Решение

На данный момент я пошел интерпретировать вывод системного вызова ip -det link show can0 | grep bitrate | awk '{print $2}'что некрасиво, но работает.

Конечно, есть более элегантное решение?

2

Другие решения

Других решений пока нет …