use crate::{DiagError, DiagServerResult, dynamic_diag::DynamicDiagSession};
use automotive_diag::uds::UdsCommand;
impl DynamicDiagSession {
pub fn uds_read_data_by_identifier(&self, identifier: u16) -> DiagServerResult<Vec<u8>> {
let mut resp = self.send_command_with_response(
UdsCommand::ReadDataByIdentifier,
&[(identifier >> 8) as u8, identifier as u8],
)?;
if resp.len() < 3 {
return Err(DiagError::InvalidResponseLength);
}
resp.drain(0..3); Ok(resp)
}
pub fn uds_write_data_by_identifier(
&self,
identifier: u16,
data: &[u8],
) -> DiagServerResult<()> {
let mut payload = vec![(identifier >> 8) as u8, identifier as u8];
payload.extend_from_slice(data);
self.send_command_with_response(UdsCommand::WriteDataByIdentifier, &payload)?;
Ok(())
}
}