use crate::{dynamic_diag::DynamicDiagSession, DiagServerResult};
pub use automotive_diag::uds::SecurityOperation;
use automotive_diag::uds::UdsCommand;
impl DynamicDiagSession {
pub fn uds_request_seed(&self) -> DiagServerResult<Vec<u8>> {
let mut resp = self.send_command_with_response(
UdsCommand::SecurityAccess,
&[SecurityOperation::RequestSeed.into()],
)?;
resp.drain(0..2); Ok(resp)
}
pub fn uds_send_key(&self, key: &[u8]) -> DiagServerResult<()> {
let mut payload = Vec::with_capacity(key.len() + 1);
payload.push(SecurityOperation::SendKey.into());
payload.extend_from_slice(key);
self.send_command_with_response(UdsCommand::SecurityAccess, &payload)?;
Ok(())
}
}