use crate::PayloadType;
use core::mem::size_of;
pub const DOIP_HEADER_LENGTH: usize =
size_of::<u8>() + size_of::<u8>() + size_of::<u16>() + size_of::<u32>();
#[derive(Debug, PartialEq)]
pub struct DoIpHeader {
pub protocol_version: u8,
pub inverse_protocol_version: u8,
pub payload_type: PayloadType, pub payload_length: u32,
}
impl DoIpHeader {
pub fn new(payload_type: PayloadType, payload_length: u32) -> Self {
Self {
protocol_version: ProtocolVersion::DoIpIso as u8,
inverse_protocol_version: !(ProtocolVersion::DoIpIso as u8),
payload_type,
payload_length,
}
}
pub fn new_versionned(
protocol_version: ProtocolVersion,
payload_type: PayloadType,
payload_length: u32,
) -> Self {
Self {
protocol_version: protocol_version as u8,
inverse_protocol_version: !(protocol_version as u8),
payload_type,
payload_length,
}
}
}
#[repr(u8)]
#[derive(Copy, Clone, PartialEq, Debug)]
pub enum ProtocolVersion {
DoIpIsoDis = 0x1,
DoIpIso = 0x2,
VehicleIdentificationRequest = 0xFF,
}