Skip to main content
Version: Next

Reading CAN data via CAN source reader

Suppose you are receiving CAN frames from vcan0.

Example output from vcan0
% ip link show vcan0
11: vcan0: <NOARP,UP,LOWER_UP> mtu 16 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 10
link/can

% candump vcan0
vcan0 062 [8] BF 0A 0D 78 C3 46 47 B4
vcan0 024 [8] 8A 0A 05 78 0B 74 F2 B7
...

First, you need to create a source stream with the pre-defined columns.

Source stream for CAN source
CREATE SOURCE STREAM source_can (
can_id UNSIGNED INTEGER NOT NULL,
can_data BLOB NOT NULL
);

Note that the stream name source_can is customizable but column definitions for can_id and can_data, including the column names, must be written as-is.

Then you can connect a CAN source reader to the source stream.

CAN source reader
CREATE SOURCE READER can FOR source_can
TYPE CAN OPTIONS (
INTERFACE '{}'
);

You can see a working example in Rust here: https://github.com/SpringQL/SpringQL/blob/main/springql-core/examples/can_source_reader.rs.