use std::ffi::c_void;
use crate::{PduIt, PduFilter, PduQueueMode, VidPreselectMode, CombinationMode, PduPt, PduPc, PduStatus, PduInfo, PduErrorEvt, PduCpst, TimingSet};
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct PduItem {
pub item_type: PduIt
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct PduDataItem {
pub item_type: PduIt,
pub p_data: *mut c_void
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct IoProgVoltageData {
pub prog_voltage_mv: u32,
pub pin_on_dlc: u32
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct IoByteArrayData {
pub data_size: u32,
pub p_data: *mut u8
}
impl From<&mut [u8]> for IoByteArrayData {
fn from(x: &mut [u8]) -> Self {
IoByteArrayData { data_size: x.len() as u32, p_data: x.as_mut_ptr() }
}
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct IoFilterData {
pub filter_type: PduFilter,
pub filter_number: u32,
pub filter_compare_size: u32,
pub filter_mask_msg: [u8; 12],
pub filter_pattern_msg: [u8; 12]
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct IoEventQueuePropertyData {
pub queue_size: u32,
pub queue_mode: PduQueueMode
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct VehicleIdRequest {
pub preselection_mode: VidPreselectMode,
pub preselection_value: *mut u8,
pub combination_mode: CombinationMode,
pub vehicle_discovery_time: u32,
pub num_destination_addresses: u32,
pub destination_addresses: *mut IpAddrInfo
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct IpAddrInfo {
pub ip_version: u32,
pub p_address: *mut u8
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct EthSwitchState {
pub eth_sense_state: u32,
pub eth_act_pin_num: u32
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct RscStatusData {
pub item_type: PduIt,
pub num_entries: u32,
pub p_resource_status_data: *mut RscStatusItem
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct RscStatusItem {
pub h_mod: u32,
pub resource_id: u32,
pub resource_status: u32
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct ParamItem {
pub item_type: PduIt,
pub com_param_id: u32,
pub com_param_data_type: PduPt,
pub com_param_class: PduPc,
pub p_com_param_data: *mut c_void
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct ModuleItem {
pub item_type: PduIt,
pub num_entries: u32,
pub p_module_data: *mut ModuleData
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct ModuleData {
pub module_type_id: u32,
pub h_mod: u32,
pub vendor_module_name: *mut u8,
pub vendor_additional_info: *mut u8,
pub status: PduStatus
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct RscIdItem {
pub item_type: PduIt,
pub num_modules: u32,
pub p_id_item_data: *mut RscIdItemData
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct RscIdItemData {
pub h_mod: u32,
pub num_ids: u32,
pub p_resource_id_array: *mut u32
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct RscData {
pub bus_type_id: u32,
pub protocol_id: u32,
pub num_pin_data: u32,
pub p_dlc_pin_data: *mut PinData
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct PinData {
pub dlc_pin_number: u32,
pub dlc_pin_type_id: u32
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct RscConflictItem {
pub item_type: PduIt,
pub num_entries: u32,
pub p_rsc_conflict_data: *mut RscConflictData
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct RscConflictData {
pub h_mod: u32,
pub resource_id: u32
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct UniqueRespIdTableItem {
pub item_type: PduIt,
pub num_entries: u32,
pub p_unique_data: *mut EcuUniqueRespData
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct EcuUniqueRespData {
pub unique_resp_identifier: u32,
pub num_param_items: u32,
pub p_params: *mut ParamItem
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct EventItem {
pub item_type: PduIt,
pub h_cop: u32,
pub p_cop_tag: *mut c_void,
pub timestamp: u32,
pub p_data: *mut c_void
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct InfoData {
pub info_code: PduInfo,
pub extra_info_data: u32
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct ErrorData {
pub error_code_id: PduErrorEvt,
pub extra_error_info_id: u32
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct ResultData {
pub rx_flag: FlagData,
pub unique_resp_identifier: u32,
pub acceptance_id: u32,
pub timestamp_flags: FlagData,
pub tx_msg_done_timestamp: u32,
pub start_msg_timestamp: u32,
pub p_extra_info: *mut ExtraInfo,
pub num_data_bytes: u32,
pub p_data_bytes: *mut u8
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct ExtraInfo {
pub num_header_bytes: u32,
pub num_footer_bytes: u32,
pub p_header_bytes: *mut u8,
pub p_footer_bytes: *mut u8
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct FlagData {
pub num_flag_bytes: u32,
pub p_flag_data: *mut u8
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct VersionData {
pub mvci_part1_standard_version: u32,
pub mvci_part2_standard_version: u32,
pub hw_serial_number: u32,
pub hw_name: [u8; 64],
pub hw_version: u32,
pub hw_data: u32,
pub hw_inferface: u32,
pub fw_name: [u8; 64],
pub fw_version: u32,
pub fw_date: u32,
pub vendor_name: [u8; 64],
pub pdu_api_sw_name: [u8; 64],
pub pdu_api_sw_version: u32,
pub pdi_api_sw_date: u32
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct CopCtrlData {
pub time: u32,
pub num_send_cycles: i32,
pub num_receive_cycles: i32,
pub temp_param_update: u32,
pub tx_flag: FlagData,
pub num_possible_expected_responses: u32,
pub expected_response_array: *mut ExpRespData
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct IoEntityAddressData {
pub logical_address: u32,
pub doip_ctrl_timeout: u32
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct IoEntityStatusData {
pub entity_type: u32,
pub tcp_clients_max: u32,
pub tcp_clients: u32,
pub max_data_size: u32
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct ExpRespData {
pub response_type: u32,
pub acceptance_id: u32,
pub num_mask_pattern_bytes: u32,
pub p_mask_data: *mut u8,
pub p_pattern_data: *mut u8,
pub num_unique_resp_ids: u32,
pub p_unique_resp_ids: *mut u32
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct ParamByteFieldData {
pub param_max_len: u32,
pub param_act_len: u32,
pub p_data_array: *mut u8
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct ParamStructFieldData {
pub com_param_struct_type: PduCpst,
pub param_max_entries: u32,
pub param_act_entries: u32,
pub p_struct_array: *mut c_void
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct ParamStructSessionTiming {
pub session: u16,
pub p2_max_high: u8,
pub p2_max_low: u8,
pub p2_star_high: u8,
pub p2_star_low: u8
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct ParamStructAccessTiming {
pub p2_min: u8,
pub p2_max: u8,
pub p3_min: u8,
pub p3_max: u8,
pub p4_min: u8,
pub timing_set: TimingSet
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct ParamLongFieldData {
pub param_max_len: u32,
pub param_act_len: u32,
pub p_data_array: *mut u32
}