use crate::{DiagServerResult, DiagnosticServer};
use super::{KWP2000Command, Kwp2000DiagnosticServer};
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub enum ResetMode {
PowerOnReset,
NonVolatileMemoryReset,
Custom(u8),
}
impl From<ResetMode> for u8 {
fn from(x: ResetMode) -> Self {
match x {
ResetMode::PowerOnReset => 0x01,
ResetMode::NonVolatileMemoryReset => 0x82,
ResetMode::Custom(x) => x,
}
}
}
impl Kwp2000DiagnosticServer {
pub fn reset_ecu(&mut self, mode: ResetMode) -> DiagServerResult<()> {
self.execute_command_with_response(KWP2000Command::ECUReset, &[mode.into()])
.map(|_| ())
}
}