rsiot/components_config/can_general/can_frame.rs
1use super::CanId;
2
3// ANCHOR: CanFrame
4/// CAN-кадр
5#[derive(Clone, Copy, Debug)]
6pub enum CanFrame {
7 /// Стандартный CAN-кадр в классическом CAN 2.0
8 Normal {
9 /// Идентификатор
10 id: CanId,
11 /// Данные
12 data: [u8; 8],
13 },
14 // Remote(CanRemoteFrame),
15 // Error(CanErrorFrame),
16 // Fd(CanFdFrame),
17}
18// ANCHOR: CanFrame
19
20impl CanFrame {
21 /// Размер CAN-кадра в битах
22 pub fn frame_size(&self) -> f32 {
23 match self {
24 CanFrame::Normal { id, data: _ } => match id {
25 CanId::Standard(_) => 111.0,
26 CanId::Extended(_) => 131.0,
27 },
28 }
29 }
30}