Skip to main content

rsiot/components/cmp_esp_can/
can_timing.rs

1use esp_idf_svc::hal::can::config::Timing;
2
3use crate::components_config::can_general::CanSettingsBitrate;
4
5impl From<CanSettingsBitrate> for Timing {
6    fn from(value: CanSettingsBitrate) -> Self {
7        match value {
8            CanSettingsBitrate::Standard {
9                bitrate,
10                sample_point: _,
11            } => match bitrate {
12                25_000 => Timing::B25K,
13                50_000 => Timing::B50K,
14                100_000 => Timing::B100K,
15                125_000 => Timing::B125K,
16                250_000 => Timing::B250K,
17                500_000 => Timing::B500K,
18                800_000 => Timing::B800K,
19                1_000_000 => Timing::B1M,
20                _ => panic!("Unsupported bitrate: {:?}", value),
21            },
22            CanSettingsBitrate::Custom {
23                tq: _,
24                prop_seg: _,
25                phase_seg1: _,
26                phase_seg2: _,
27                sjw: _,
28            } => panic!("Unsupported bitrate: {:?}", value),
29        }
30    }
31}