1use std::ffi::c_void;
2
3use crate::{PduIt, PduFilter, PduQueueMode, VidPreselectMode, CombinationMode, PduPt, PduPc, PduStatus, PduInfo, PduErrorEvt, PduCpst, TimingSet};
4
5
6#[repr(C)]
7#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
8pub struct PduItem {
10 pub item_type: PduIt
12}
13
14#[repr(C)]
15#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
16pub struct PduDataItem {
18 pub item_type: PduIt,
20 pub p_data: *mut c_void
22}
23
24#[repr(C)]
25#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
26pub struct IoProgVoltageData {
28 pub prog_voltage_mv: u32,
30 pub pin_on_dlc: u32
32}
33
34#[repr(C)]
35#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
36pub struct IoByteArrayData {
38 pub data_size: u32,
40 pub p_data: *mut u8
42}
43
44impl From<&mut [u8]> for IoByteArrayData {
45 fn from(x: &mut [u8]) -> Self {
46 IoByteArrayData { data_size: x.len() as u32, p_data: x.as_mut_ptr() }
47 }
48}
49
50#[repr(C)]
51#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
52pub struct IoFilterData {
56 pub filter_type: PduFilter,
58 pub filter_number: u32,
60 pub filter_compare_size: u32,
62 pub filter_mask_msg: [u8; 12],
64 pub filter_pattern_msg: [u8; 12]
66}
67
68#[repr(C)]
69#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
70pub struct IoEventQueuePropertyData {
72 pub queue_size: u32,
74 pub queue_mode: PduQueueMode
76}
77
78#[repr(C)]
79#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
80pub struct VehicleIdRequest {
82 pub preselection_mode: VidPreselectMode,
84 pub preselection_value: *mut u8,
86 pub combination_mode: CombinationMode,
88 pub vehicle_discovery_time: u32,
90 pub num_destination_addresses: u32,
92 pub destination_addresses: *mut IpAddrInfo
94}
95
96#[repr(C)]
97#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
98pub struct IpAddrInfo {
100 pub ip_version: u32,
102 pub p_address: *mut u8
104}
105
106#[repr(C)]
107#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
108pub struct EthSwitchState {
110 pub eth_sense_state: u32,
112 pub eth_act_pin_num: u32
114}
115
116#[repr(C)]
117#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
118pub struct RscStatusData {
120 pub item_type: PduIt,
122 pub num_entries: u32,
124 pub p_resource_status_data: *mut RscStatusItem
126}
127
128#[repr(C)]
129#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
130pub struct RscStatusItem {
132 pub h_mod: u32,
134 pub resource_id: u32,
136 pub resource_status: u32
138}
139
140#[repr(C)]
141#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
142pub struct ParamItem {
144 pub item_type: PduIt,
146 pub com_param_id: u32,
148 pub com_param_data_type: PduPt,
150 pub com_param_class: PduPc,
152 pub p_com_param_data: *mut c_void
154}
155
156#[repr(C)]
157#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
158pub struct ModuleItem {
160 pub item_type: PduIt,
162 pub num_entries: u32,
164 pub p_module_data: *mut ModuleData
166}
167
168#[repr(C)]
169#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
170pub struct ModuleData {
172 pub module_type_id: u32,
174 pub h_mod: u32,
176 pub vendor_module_name: *mut u8,
178 pub vendor_additional_info: *mut u8,
180 pub status: PduStatus
182}
183
184#[repr(C)]
185#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
186pub struct RscIdItem {
188 pub item_type: PduIt,
190 pub num_modules: u32,
192 pub p_id_item_data: *mut RscIdItemData
194}
195
196#[repr(C)]
197#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
198pub struct RscIdItemData {
200 pub h_mod: u32,
202 pub num_ids: u32,
204 pub p_resource_id_array: *mut u32
206}
207
208#[repr(C)]
209#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
210pub struct RscData {
212 pub bus_type_id: u32,
214 pub protocol_id: u32,
216 pub num_pin_data: u32,
218 pub p_dlc_pin_data: *mut PinData
220}
221
222#[repr(C)]
223#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
224pub struct PinData {
226 pub dlc_pin_number: u32,
228 pub dlc_pin_type_id: u32
230}
231
232#[repr(C)]
233#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
234pub struct RscConflictItem {
236 pub item_type: PduIt,
238 pub num_entries: u32,
240 pub p_rsc_conflict_data: *mut RscConflictData
242}
243
244#[repr(C)]
245#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
246pub struct RscConflictData {
248 pub h_mod: u32,
250 pub resource_id: u32
252}
253
254#[repr(C)]
255#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
256pub struct UniqueRespIdTableItem {
258 pub item_type: PduIt,
260 pub num_entries: u32,
262 pub p_unique_data: *mut EcuUniqueRespData
264}
265
266#[repr(C)]
267#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
268pub struct EcuUniqueRespData {
270 pub unique_resp_identifier: u32,
272 pub num_param_items: u32,
274 pub p_params: *mut ParamItem
276}
277
278#[repr(C)]
279#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
280pub struct EventItem {
282 pub item_type: PduIt,
284 pub h_cop: u32,
286 pub p_cop_tag: *mut c_void,
288 pub timestamp: u32,
290 pub p_data: *mut c_void
292}
293
294#[repr(C)]
295#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
296pub struct InfoData {
298 pub info_code: PduInfo,
300 pub extra_info_data: u32
302}
303
304#[repr(C)]
305#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
306pub struct ErrorData {
308 pub error_code_id: PduErrorEvt,
310 pub extra_error_info_id: u32
312}
313
314#[repr(C)]
315#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
316pub struct ResultData {
318 pub rx_flag: FlagData,
320 pub unique_resp_identifier: u32,
322 pub acceptance_id: u32,
324 pub timestamp_flags: FlagData,
326 pub tx_msg_done_timestamp: u32,
328 pub start_msg_timestamp: u32,
330 pub p_extra_info: *mut ExtraInfo,
332 pub num_data_bytes: u32,
334 pub p_data_bytes: *mut u8
336}
337
338#[repr(C)]
339#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
340pub struct ExtraInfo {
342 pub num_header_bytes: u32,
344 pub num_footer_bytes: u32,
346 pub p_header_bytes: *mut u8,
348 pub p_footer_bytes: *mut u8
350}
351
352#[repr(C)]
353#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
354pub struct FlagData {
356 pub num_flag_bytes: u32,
358 pub p_flag_data: *mut u8
360}
361
362#[repr(C)]
363#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
364pub struct VersionData {
366 pub mvci_part1_standard_version: u32,
368 pub mvci_part2_standard_version: u32,
370 pub hw_serial_number: u32,
372 pub hw_name: [u8; 64],
374 pub hw_version: u32,
376 pub hw_data: u32,
378 pub hw_inferface: u32,
380 pub fw_name: [u8; 64],
382 pub fw_version: u32,
384 pub fw_date: u32,
386 pub vendor_name: [u8; 64],
388 pub pdu_api_sw_name: [u8; 64],
390 pub pdu_api_sw_version: u32,
392 pub pdi_api_sw_date: u32
394}
395
396#[repr(C)]
397#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
398pub struct CopCtrlData {
400 pub time: u32,
402 pub num_send_cycles: i32,
404 pub num_receive_cycles: i32,
406 pub temp_param_update: u32,
408 pub tx_flag: FlagData,
410 pub num_possible_expected_responses: u32,
412 pub expected_response_array: *mut ExpRespData
414}
415
416#[repr(C)]
417#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
418pub struct IoEntityAddressData {
420 pub logical_address: u32,
422 pub doip_ctrl_timeout: u32
424}
425
426#[repr(C)]
427#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
428pub struct IoEntityStatusData {
430 pub entity_type: u32,
432 pub tcp_clients_max: u32,
434 pub tcp_clients: u32,
436 pub max_data_size: u32
438}
439
440#[repr(C)]
441#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
442pub struct ExpRespData {
444 pub response_type: u32,
446 pub acceptance_id: u32,
448 pub num_mask_pattern_bytes: u32,
450 pub p_mask_data: *mut u8,
452 pub p_pattern_data: *mut u8,
454 pub num_unique_resp_ids: u32,
456 pub p_unique_resp_ids: *mut u32
458}
459
460#[repr(C)]
461#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
462pub struct ParamByteFieldData {
464 pub param_max_len: u32,
466 pub param_act_len: u32,
468 pub p_data_array: *mut u8
470}
471
472#[repr(C)]
473#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
474pub struct ParamStructFieldData {
476 pub com_param_struct_type: PduCpst,
478 pub param_max_entries: u32,
480 pub param_act_entries: u32,
482 pub p_struct_array: *mut c_void
484}
485
486#[repr(C)]
487#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
488pub struct ParamStructSessionTiming {
490 pub session: u16,
492 pub p2_max_high: u8,
494 pub p2_max_low: u8,
496 pub p2_star_high: u8,
498 pub p2_star_low: u8
500}
501
502#[repr(C)]
503#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
504pub struct ParamStructAccessTiming {
506 pub p2_min: u8,
508 pub p2_max: u8,
510 pub p3_min: u8,
512 pub p3_max: u8,
514 pub p4_min: u8,
516 pub timing_set: TimingSet
518}
519
520#[repr(C)]
521#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
522pub struct ParamLongFieldData {
524 pub param_max_len: u32,
526 pub param_act_len: u32,
528 pub p_data_array: *mut u32
530}