pub struct StandardId(/* private fields */);
Expand description
Standard 11-bit CAN Identifier (0..=0x7FF
).
Implementations§
Source§impl StandardId
impl StandardId
Sourcepub const ZERO: StandardId
pub const ZERO: StandardId
CAN ID 0
, the highest priority.
Sourcepub const MAX: StandardId
pub const MAX: StandardId
CAN ID 0x7FF
, the lowest priority.
Sourcepub const fn new(raw: u16) -> Option<StandardId>
pub const fn new(raw: u16) -> Option<StandardId>
Tries to create a StandardId
from a raw 16-bit integer.
This will return None
if raw
is out of range of an 11-bit integer (> 0x7FF
).
Examples found in repository?
examples/isotprecv.rs (line 6)
3fn main() -> Result<(), socketcan_isotp::Error> {
4 let mut tp_socket = IsoTpSocket::open(
5 "vcan0",
6 StandardId::new(0x123).expect("Invalid rx id"),
7 StandardId::new(0x321).expect("Invalid tx id"),
8 )?;
9
10 let buffer = tp_socket.read()?;
11 println!("read {} bytes", buffer.len());
12
13 for x in buffer {
14 print!("{:X?} ", x);
15 }
16
17 println!("");
18
19 Ok(())
20}
More examples
examples/isotpsend.rs (line 7)
4fn main() -> Result<(), socketcan_isotp::Error> {
5 let tp_socket = IsoTpSocket::open(
6 "vcan0",
7 StandardId::new(0x321).expect("Invalid rx id"),
8 StandardId::new(0x123).expect("Invalid tx id"),
9 )?;
10
11 loop {
12 tp_socket.write(&[0xAA, 0x11, 0x22, 0x33, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF])?;
13 println!("Sent frame");
14 std::thread::sleep(Duration::from_millis(1000));
15 }
16}
examples/uds.rs (line 14)
8fn main() -> Result<(), socketcan_isotp::Error> {
9 let (tx, rx) = mpsc::channel();
10
11 // Reader
12 let mut reader_tp_socket = IsoTpSocket::open(
13 "vcan0",
14 StandardId::new(0x7E8).expect("Invalid rx CAN ID"),
15 StandardId::new(0x77A).expect("Invalid tx CAN ID"),
16 )?;
17 std::thread::spawn(move || loop {
18 let buffer = reader_tp_socket.read().expect("Failed to read from socket");
19 tx.send(buffer.to_vec()).expect("Receiver deallocated");
20 });
21
22 let tp_socket = IsoTpSocket::open(
23 "vcan0",
24 StandardId::new(0x77A).expect("Invalid rx CAN ID"),
25 StandardId::new(0x7E0).expect("Invalid tx CAN ID"),
26 )?;
27
28 // 0x22 - Service Identifier for "Read data by identifier" request
29 // 0xF189 - Data identifer - VehicleManufacturerECUSoftwareVersionNumberDataIdentifier
30 tp_socket.write(&[0x22, 0xF1, 0x89])?;
31
32 println!("Sent read data by identifier 0xF189 - VehicleManufacturerECUSoftwareVersionNumberDataIdentifier");
33
34 loop {
35 let recv_buffer = rx.recv().expect("Failed to receive");
36 // 0x62 - Service Identifier for "Read data by identifier" response
37 // 0xF189 - Data identifer - VehicleManufacturerECUSoftwareVersionNumberDataIdentifier
38 if recv_buffer[0..=2] != [0x62, 0xF1, 0x89] {
39 println!("Skipping: {:X?}", recv_buffer);
40 } else {
41 println!("Response: {:X?}", &recv_buffer[3..]);
42 }
43 }
44}
Sourcepub const unsafe fn new_unchecked(raw: u16) -> StandardId
pub const unsafe fn new_unchecked(raw: u16) -> StandardId
Creates a new StandardId
without checking if it is inside the valid range.
§Safety
Using this method can create an invalid ID and is thus marked as unsafe.
Trait Implementations§
Source§impl Clone for StandardId
impl Clone for StandardId
Source§fn clone(&self) -> StandardId
fn clone(&self) -> StandardId
Returns a duplicate of the value. Read more
1.0.0 · Source§const fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for StandardId
impl Debug for StandardId
Source§impl From<StandardId> for Id
impl From<StandardId> for Id
Source§fn from(id: StandardId) -> Id
fn from(id: StandardId) -> Id
Converts to this type from the input type.
Source§impl Hash for StandardId
impl Hash for StandardId
Source§impl Ord for StandardId
impl Ord for StandardId
Source§fn cmp(&self, other: &StandardId) -> Ordering
fn cmp(&self, other: &StandardId) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for StandardId
impl PartialEq for StandardId
Source§impl PartialOrd for StandardId
impl PartialOrd for StandardId
impl Copy for StandardId
impl Eq for StandardId
impl StructuralPartialEq for StandardId
Auto Trait Implementations§
impl Freeze for StandardId
impl RefUnwindSafe for StandardId
impl Send for StandardId
impl Sync for StandardId
impl Unpin for StandardId
impl UnwindSafe for StandardId
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more