pub struct CanMessage { /* private fields */ }Expand description
Unified CAN message type.
This structure represents a CAN message in a hardware-independent way. It supports both CAN 2.0 and CAN-FD messages.
§Examples
use canlink_hal::{CanMessage, CanId};
// Create a standard CAN 2.0 message
let msg = CanMessage::new_standard(0x123, &[1, 2, 3, 4]).unwrap();
assert_eq!(msg.id(), CanId::Standard(0x123));
assert_eq!(msg.data(), &[1, 2, 3, 4]);
// Create a CAN-FD message
let fd_msg = CanMessage::new_fd(CanId::Standard(0x456), &[1; 64]).unwrap();
assert_eq!(fd_msg.data().len(), 64);Implementations§
Source§impl CanMessage
impl CanMessage
Sourcepub fn new_standard(id: u16, data: &[u8]) -> Result<CanMessage, CanError>
pub fn new_standard(id: u16, data: &[u8]) -> Result<CanMessage, CanError>
Create a standard CAN 2.0 data frame.
§Arguments
id- Standard 11-bit CAN ID (0x000-0x7FF)data- Data bytes (0-8 bytes)
§Errors
Returns CanError::InvalidId if the ID is out of range.
Returns CanError::InvalidDataLength if data length exceeds 8 bytes.
§Examples
use canlink_hal::CanMessage;
let msg = CanMessage::new_standard(0x123, &[1, 2, 3, 4]).unwrap();
assert_eq!(msg.data(), &[1, 2, 3, 4]);Sourcepub fn new_extended(id: u32, data: &[u8]) -> Result<CanMessage, CanError>
pub fn new_extended(id: u32, data: &[u8]) -> Result<CanMessage, CanError>
Create an extended CAN 2.0B data frame.
§Arguments
id- Extended 29-bit CAN ID (0x00000000-0x1FFFFFFF)data- Data bytes (0-8 bytes)
§Errors
Returns CanError::InvalidId if the ID is out of range.
Returns CanError::InvalidDataLength if data length exceeds 8 bytes.
§Examples
use canlink_hal::CanMessage;
let msg = CanMessage::new_extended(0x12345678, &[1, 2, 3, 4]).unwrap();
assert_eq!(msg.data(), &[1, 2, 3, 4]);Sourcepub fn new_fd(id: CanId, data: &[u8]) -> Result<CanMessage, CanError>
pub fn new_fd(id: CanId, data: &[u8]) -> Result<CanMessage, CanError>
Create a CAN-FD data frame.
§Arguments
id- CAN identifier (standard or extended)data- Data bytes (0-64 bytes)
§Errors
Returns CanError::InvalidDataLength if data length exceeds 64 bytes.
§Examples
use canlink_hal::{CanMessage, CanId};
let msg = CanMessage::new_fd(CanId::Standard(0x123), &[1; 64]).unwrap();
assert_eq!(msg.data().len(), 64);Sourcepub fn new_remote(id: CanId, dlc: u8) -> Result<CanMessage, CanError>
pub fn new_remote(id: CanId, dlc: u8) -> Result<CanMessage, CanError>
Create a remote frame (RTR).
§Arguments
id- CAN identifier (standard or extended)dlc- Data Length Code (0-8)
§Errors
Returns CanError::InvalidDataLength if DLC exceeds 8.
§Examples
use canlink_hal::{CanMessage, CanId};
let msg = CanMessage::new_remote(CanId::Standard(0x123), 4).unwrap();
assert!(msg.is_remote());Sourcepub const fn flags(&self) -> MessageFlags
pub const fn flags(&self) -> MessageFlags
Get the message flags.
Sourcepub fn set_timestamp(&mut self, timestamp: Timestamp)
pub fn set_timestamp(&mut self, timestamp: Timestamp)
Set the timestamp.
Trait Implementations§
Source§impl Clone for CanMessage
impl Clone for CanMessage
Source§fn clone(&self) -> CanMessage
fn clone(&self) -> CanMessage
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CanMessage
impl Debug for CanMessage
Source§impl<'de> Deserialize<'de> for CanMessage
impl<'de> Deserialize<'de> for CanMessage
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<CanMessage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<CanMessage, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl PartialEq for CanMessage
impl PartialEq for CanMessage
Source§impl Serialize for CanMessage
impl Serialize for CanMessage
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl Eq for CanMessage
impl StructuralPartialEq for CanMessage
Auto Trait Implementations§
impl Freeze for CanMessage
impl RefUnwindSafe for CanMessage
impl Send for CanMessage
impl Sync for CanMessage
impl Unpin for CanMessage
impl UnsafeUnpin for CanMessage
impl UnwindSafe for CanMessage
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.