Messenger API
CanMessenger::Messenger is the high-level runtime API.
Constructor
CanMessenger::Messenger.new(
interface_name:,
logger: nil,
endianness: :native,
can_fd: false,
adapter: CanMessenger::Adapter::Socketcan
)
Parameters:
interface_name(required): CAN interface name such ascan0orvcan0.logger: Defaults toLogger.new($stdout)when omitted.endianness::native,:little, or:bigfor CAN ID byte order.can_fd: Default CAN FD behavior.adapter: Adapter class or instance implementing the base adapter contract.
send_can_message
send_can_message(id:, data:, extended_id: false, can_fd: nil)
Behavior:
- Raises
ArgumentErrorwhen required inputs are missing or invalid. - Uses messenger-level
can_fdwhencan_fd:is omitted. - For non-argument runtime errors, logs and returns without raising.
send_dbc_message
send_dbc_message(message_name:, signals:, dbc:, extended_id: false, can_fd: nil)
Behavior:
- Requires a non-nil
dbcinstance. - Calls
dbc.encode_can(...)and then sends the encoded frame. - Automatically sends DBC messages with the extended CAN flag when the DBC message ID includes the EFF bit.
start_listening
start_listening(filter: nil, can_fd: nil, dbc: nil) { |message| ... }
Behavior:
- Requires a block. If no block is provided, logs an error and returns.
- Loops until
stop_listeningis called. - Optional
filteraccepts:IntegerRangeArray<Integer>
- Message payload shape from SocketCAN adapter:
{
id: Integer,
data: Array<Integer>,
extended: true | false,
decoded: { name: String, signals: Hash } # only when dbc decode succeeds
}
When dbc: is provided, extended received frames are mapped back to the DBC message ID form before decode.
stop_listening
stop_listening
Sets the internal listening flag to false so the loop exits cleanly.