rsiot/components/cmp_linux_can/
can_id.rs1use super::{CanId, Error};
2
3impl TryFrom<CanId> for socketcan::CanId {
4 type Error = Error;
5
6 fn try_from(value: CanId) -> Result<Self, Self::Error> {
7 match value {
8 CanId::Standard(id) => {
9 let id =
10 socketcan::StandardId::new(id).ok_or_else(|| Error::InvalidId(id as u64))?;
11 Ok(socketcan::CanId::Standard(id))
12 }
13 CanId::Extended(id) => {
14 let id =
15 socketcan::ExtendedId::new(id).ok_or_else(|| Error::InvalidId(id as u64))?;
16 Ok(socketcan::CanId::Extended(id))
17 }
18 }
19 }
20}
21
22impl TryFrom<socketcan::CanId> for CanId {
23 type Error = Error;
24
25 fn try_from(value: socketcan::CanId) -> Result<Self, Self::Error> {
26 match value {
27 socketcan::CanId::Standard(id) => {
28 let id = id.as_raw();
29 Ok(CanId::Standard(id))
30 }
31 socketcan::CanId::Extended(id) => {
32 let id = id.as_raw();
33 Ok(CanId::Extended(id))
34 }
35 }
36 }
37}