ace_uds/message/services/
link_control.rs1use crate::UdsError;
2use ace_macros::FrameCodec;
3
4#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, FrameCodec)]
5#[frame(error = UdsError)]
6pub enum LinkControlRequest {
7 #[frame(id = 0x01)]
8 VerifyModeTransitionWithFixedParameterRequest(VerifyModeTransitionWithFixedParameterRequest),
9 #[frame(id = 0x02)]
10 VerifyModeTransitionWithSpecificParameterRequest(
11 VerifyModeTransitionWithSpecificParameterRequest,
12 ),
13 #[frame(id = 0x03)]
14 TransitionModeRequst(TransitionModeRequest),
15}
16
17#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, FrameCodec)]
18#[frame(error = UdsError)]
19pub struct VerifyModeTransitionWithSpecificParameterRequest {
20 pub link_record: [u8; 3],
21}
22
23#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, FrameCodec)]
24#[frame(error = UdsError)]
25pub struct VerifyModeTransitionWithFixedParameterRequest {
26 pub link_control_mode_identifier: LinkControlModeIdentifier,
27}
28
29#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, FrameCodec)]
30#[frame(error = UdsError)]
31pub struct TransitionModeRequest {
32 pub link_control_type: LinkControlType,
33}
34
35#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, FrameCodec)]
36#[frame(error = UdsError)]
37pub enum LinkControlType {
38 #[frame(id_pat = "0x00 | 0x04..=0x3F")]
39 IsoSaereserved(u8),
40 #[frame(id = 0x01)]
41 VerifyModeTransitionWithFixedParameter,
42 #[frame(id = 0x02)]
43 VerifyModeTransitionWithSpecificParameter,
44 #[frame(id = 0x03)]
45 TransitionMode,
46 #[frame(id_pat = "0x40..=0x5F")]
47 VehicleManufacturerSpecific(u8),
48 #[frame(id_pat = "0x60..=0x7E")]
49 SystemSupplierSpecific(u8),
50}
51
52#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, FrameCodec)]
53#[frame(error = UdsError)]
54pub struct LinkControlResponse {
55 pub link_control_type: LinkControlType,
56}
57
58#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, FrameCodec)]
59#[frame(error = UdsError)]
60pub enum LinkControlModeIdentifier {
61 #[frame(id_pat = "0x00 | 0x06..=0x0F | 0x14..=0x1F | 0x21..=0xFF")]
62 IsoSaeReserved(u8),
63 #[frame(id = 0x01)]
64 PC9600Baud,
65 #[frame(id = 0x02)]
66 PC19200Baud,
67 #[frame(id = 0x03)]
68 PC38400Baud,
69 #[frame(id = 0x04)]
70 PC57600Baud,
71 #[frame(id = 0x05)]
72 PC115200Baud,
73 #[frame(id = 0x10)]
74 Can125000Baud,
75 #[frame(id = 0x11)]
76 Can250000Baud,
77 #[frame(id = 0x12)]
78 Can500000Baud,
79 #[frame(id = 0x13)]
80 Can1000000Baud,
81 #[frame(id = 0x20)]
82 ProgrammingSetup,
83}