lundi 5 septembre 2016

Get CAN bitrate

I want to read the currently configured CAN bitrate of my socketcan socket in C++.

I can see the bitrate with 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

The bitrate was set via /etc/network/interfaces, but the user could manually change it.

libsocketcan seems to only support setting the bitrate, but not reading it.

The code of iproute2 that produces the output above uses rtnetlink.

How could I use libnetlink to read the corresponding attribute? Or is there another way of reading the current bitrate?

Aucun commentaire:

Enregistrer un commentaire