use crate::nrc::NrcError;
use crate::security_provider::SecurityProvider;
use crate::server::UdsRequestContext;
pub trait ServerHandler<S>
where
S: SecurityProvider
{
type Error: NrcError;
fn read_did(
&self,
_ctx: &mut UdsRequestContext<S>,
_did: u16,
_buf: &mut [u8]
) -> Result<usize, Self::Error> {
Err(Self::Error::service_not_supported())
}
fn write_did(
&mut self,
_ctx: &mut UdsRequestContext<S>,
_did: u16,
_data: &[u8]
) -> Result<(), Self::Error> {
Err(Self::Error::service_not_supported())
}
fn ecu_reset(
&mut self,
_ctx: &mut UdsRequestContext<S>,
_reset_type: u8
) -> Result<(), Self::Error> {
Err(Self::Error::service_not_supported())
}
fn routine_control(
&mut self,
_ctx: &mut UdsRequestContext<S>,
_routine_id: u16,
_sub_function: u8,
_data: &[u8],
_buf: &mut [u8],
) -> Result<usize, Self::Error> {
Err(Self::Error::service_not_supported())
}
fn communication_control(
&mut self,
_ctx: &mut UdsRequestContext<S>,
_control_type: u8,
_comm_type: u8,
) -> Result<usize, Self::Error> {
Err(Self::Error::service_not_supported())
}
fn request_download(
&mut self,
_ctx: &mut UdsRequestContext<S>,
_memory_address: &[u8],
_memory_size: &[u8],
_compression_method: u8,
_encrypting_method: u8,
_buf: &mut [u8],
) -> Result<usize, Self::Error> {
Err(Self::Error::service_not_supported())
}
fn io_control(
&mut self,
_ctx: &mut UdsRequestContext<S>,
_did: u16,
_parameter: u8,
_control_state: &[u8],
_buf: &mut [u8],
) -> Result<usize, Self::Error> {
Err(Self::Error::service_not_supported())
}
fn transfer_data(
&mut self,
_ctx: &mut UdsRequestContext<S>,
_block_sequence_counter: u8,
_data: &[u8],
_buf: &mut [u8],
) -> Result<usize, Self::Error> {
Err(Self::Error::service_not_supported())
}
fn request_transfer_exit(
&mut self,
_ctx: &mut UdsRequestContext<S>,
_parameter_record: &[u8],
_buf: &mut [u8],
) -> Result<usize, Self::Error> {
Err(Self::Error::service_not_supported())
}
fn request_file_transfer(
&mut self,
_ctx: &mut UdsRequestContext<S>,
_operation: u8,
_path: &[u8],
_buf: &mut [u8],
) -> Result<usize, Self::Error> {
Err(Self::Error::service_not_supported())
}
fn session_control(
&mut self,
_ctx: &mut UdsRequestContext<S>,
_session_type: u8
) -> Result<(), Self::Error> {
Ok(())
}
fn security_access(
&mut self,
_ctx: &mut UdsRequestContext<S>,
_level: u8,
_key: &[u8]
) -> Result<(), Self::Error> {
Ok(())
}
fn periodic_did(
&mut self,
_ctx: &mut UdsRequestContext<S>,
_mode: u8,
_dids: &[u8]
) -> Result<(), Self::Error> {
Ok(())
}
}