1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
use crate::{DataIdentifier, Service};
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("ISO 14229-1 - invalid parameter `{0}`")]
InvalidParam(String),
#[error("ISO 14229-1 - data: {0} is invalid")]
InvalidData(String),
#[error("ISO 14229-1 - received message doesn't correspond to expected length(expect: {expect}, actual: {actual})")]
InvalidDataLength { expect: usize, actual: usize },
#[error("ISO 14229-1 - the length of data identifier: {0:?} is not configured")]
DidNotSupported(DataIdentifier),
#[error("ISO 14229-1 - invalid dynamically defined data identifier: {0:x}")]
InvalidDynamicallyDefinedDID(u16),
#[error("ISO 14229-1 - invalid session data {0}")]
InvalidSessionData(String),
#[error("ISO 14229-1 - ISO/SAEReserved: {0}")]
ReservedError(u8),
#[error("ISO 14229-1 - the sub-function is required/unnecessary on service `{0}`")]
SubFunctionError(Service),
#[error("ISO 14229-1 - the service `{0}` is error")]
ServiceError(Service),
// #[error("ISO 14229-1 - service `{service}` got an unexpected sub-function(expect: {expect}, actual: {actual})")]
// UnexpectedSubFunction { service: Service, expect: u8, actual: u8 },
// #[error("ISO 14229-1 - service `{expect}` got an unexpect response `{actual}`")]
// UnexpectedResponse { expect: Service, actual: Service },
// #[error("ISO 14229-1 - block sequence number of response (0x{actual:02x}) does not match request block sequence number (0x{expect:02x})")]
// UnexpectedTransferSequence { expect: u8, actual: u8 },
// #[error("ISO 14229-1 - service `{service}` got a NRC({code:?})")]
// NRCError { service: Service, code: Code },
// #[error("ISO 14229-1 - security algorithm error: {0}")]
// SecurityAlgoError(String),
// #[error("{0}")]
// IsoTpError(IsoTpError),
#[error("ISO 14229-1 - other error: {0}")]
OtherError(String),
#[error("ISO 14229-1 - not implement")]
NotImplement,
}