Skip to main content

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}