iso14229_1/request/
request_load.rs

1//! request of Service 34|35
2
3
4use crate::{Configuration, DataFormatIdentifier, Error, MemoryLocation, Placeholder, RequestData, utils};
5
6#[derive(Debug, Clone)]
7pub struct RequestLoadData {
8    pub dfi: DataFormatIdentifier,
9    pub mem_loc: MemoryLocation,
10}
11
12impl RequestData for RequestLoadData {
13    type SubFunc = Placeholder;
14    #[inline]
15    fn try_parse(data: &[u8], _: Option<Self::SubFunc>, cfg: &Configuration) -> Result<Self, Error> {
16        utils::data_length_check(data.len(), 2, false)?;
17
18        let mut offset = 0;
19        let dfi = DataFormatIdentifier(data[offset]);
20        offset += 1;
21
22        let mem_loc = MemoryLocation::from_slice(&data[offset..], cfg)?;
23
24        Ok(Self { dfi, mem_loc })
25    }
26    #[inline]
27    fn to_vec(self, cfg: &Configuration) -> Vec<u8> {
28        let mut result = vec![self.dfi.0, ];
29        result.append(&mut self.mem_loc.to_vec(cfg));
30
31        result
32    }
33}
34