Crates.io | can-types |
lib.rs | can-types |
version | 0.9.1 |
source | src |
created_at | 2024-06-23 19:02:10.179133 |
updated_at | 2024-07-17 14:05:34.863354 |
description | A library for encoding/decoding simple CAN bus data structures |
homepage | https://github.com/natkeo559/can-types |
repository | https://github.com/natkeo559/can-types |
max_upload_size | |
id | 1281376 |
size | 99,081 |
A rust crate for encoding or decoding various Controller Area Network (CAN) data types, including the SAE J1939 standard.
This crate provides decoding capabilities for Controller Area Network (CAN) protocols utilizing both 11-bit and 29-bit identifiers.
no_std
SupportThis crate supports no_std
, meaning it can be used in resource-constrained environments like embedded systems and IoT
devices, allowing for minimal memory usage without compromising functionality.
To enable no_std
, use the --no-default-features
flag:
$ cargo add can_types --no-default-features
no_std
limitations:String
or string slice hexadecimal representations of the provided data structures.let id_a = IdJ1939::try_from_hex("0CF00400")?;
assert_eq!(3, id_a.priority());
assert_eq!(SourceAddr::Some(0), id_a.source_address());
assert_eq!(Some(Addr::PrimaryEngineController), id_a.source_address().lookup());
let id_a = IdJ1939::try_from_hex("18FEF200")?;
assert_eq!(CommunicationMode::Broadcast, id_a.pgn().communication_mode());
assert_eq!(GroupExtension::Some(242), id_a.pgn().group_extension());
let id_b = IdJ1939::try_from_hex("0C00290B")?;
// SA 11 = Brakes
assert_eq!(SourceAddr::Some(11), id_b.source_address());
assert_eq!(Some(Addr::Brakes), id_b.source_address().lookup());
assert_eq!(PduFormat::Pdu1(0), id_b.pgn().pdu_format());
assert_eq!(CommunicationMode::P2P, id_b.pgn().communication_mode());
assert_eq!(GroupExtension::None, id_b.pgn().group_extension());
// DA 41 = Retarder, Exhaust, Engine
assert_eq!(DestinationAddr::Some(41), id_b.pgn().destination_address());
assert_eq!(Some(Addr::RetarderExhaustEngine1), id_b.pgn().destination_address().lookup());