Skip to main content

ace_uds/message/services/
routine_control.rs

1use crate::UdsError;
2use ace_macros::FrameCodec;
3
4#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, FrameCodec)]
5#[frame(error = UdsError)]
6pub struct RoutineControlRequest<'a> {
7    pub routine_control_type: RoutineControlType,
8    pub routine_identifier: [u8; 2],
9    pub routine_control_option_record: &'a [u8],
10}
11
12#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, FrameCodec)]
13#[frame(error = UdsError)]
14pub struct RoutineControlResponse<'a> {
15    pub routine_control_type: RoutineControlType,
16    pub routine_identifier: [u8; 2],
17    pub routine_info: Option<u8>,
18    pub routine_status_record: &'a [u8],
19}
20
21#[repr(u8)]
22#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, FrameCodec)]
23#[frame(error = UdsError)]
24pub enum RoutineControlType {
25    #[frame(id = 0x01)]
26    StartRoutine,
27    #[frame(id = 0x02)]
28    StopRoutine,
29    #[frame(id = 0x03)]
30    RequestRoutineResults,
31}