n2k_base/n2k/
mod.rs

1pub mod header;
2pub mod j1393;
3
4use self::header::N2kHeader;
5
6/// An N2kMessage has a header and a body. The header is encoded into a 32-bit header field
7/// for a CAN-frame. The body is a sequence of up to 8 bytes. Longer messages need to be split into
8/// multiple CAN-frames with a counter at the start of each body.
9/// The life-time of an N2kMessage is coupled to the liftime of its underlying data sequence.
10pub struct N2kMessage {
11    pub header: N2kHeader,
12    pub len: usize,
13    pub body: [u8; 8],
14}
15
16impl N2kMessage {
17    /// create an N2kMessage
18    pub fn new(header: N2kHeader, body: &[u8]) -> N2kMessage {
19        let len = body.len();
20
21        let mut copy = [0; 8];
22        for (index, value) in body.iter().enumerate() {
23            copy[index] = *value;
24        }
25
26        N2kMessage { header: header, len: len, body: copy }
27    }
28
29    pub fn get_header(&self) -> N2kHeader {
30        self.header
31    }
32
33    pub fn get_body(&self) -> &[u8] {
34        &self.body[0..self.len]
35    }
36}