UDS: make code more readable by reformatting HFs

This commit is contained in:
Dr. Lars Völker 2023-03-10 21:53:13 +01:00
parent ae38e9b092
commit 5f7122828c
1 changed files with 116 additions and 478 deletions

View File

@ -139,14 +139,14 @@ void proto_reg_handoff_uds(void);
#define UDS_RC_TYPES_STOP 2
#define UDS_RC_TYPES_REQUEST 3
#define UDS_RD_COMPRESSION_METHOD_MASK 0xF0
#define UDS_RD_ENCRYPTING_METHOD_MASK 0x0F
#define UDS_RD_MEMORY_SIZE_LENGTH_MASK 0xF0
#define UDS_RD_MEMORY_ADDRESS_LENGTH_MASK 0x0F
#define UDS_RD_MAX_NUMBER_OF_BLOCK_LENGTH_LENGTH_MASK 0xF0
#define UDS_RD_COMPRESSION_METHOD_MASK 0xF0
#define UDS_RD_ENCRYPTING_METHOD_MASK 0x0F
#define UDS_RD_MEMORY_SIZE_LENGTH_MASK 0xF0
#define UDS_RD_MEMORY_ADDRESS_LENGTH_MASK 0x0F
#define UDS_RD_MAX_BLOCK_LEN_LEN_MASK 0xF0
#define UDS_TP_SUBFUNCTION_MASK 0x7f
#define UDS_TP_SUPPRESS_POS_RSP_MSG_INDICATION_MASK 0x80
#define UDS_TP_SUBFUNCTION_MASK 0x7f
#define UDS_TP_SUPPRESS_POS_RSP_MSG_IND_MASK 0x80
#define UDS_CDTCS_ACTIONS_ON 1
#define UDS_CDTCS_ACTIONS_OFF 2
@ -1417,486 +1417,124 @@ proto_register_uds(void)
{
module_t* uds_module;
static hf_register_info hf[] = {
{
&hf_uds_diag_addr,
{
"Diagnostic Address", "uds.diag_addr",
FT_UINT16, BASE_HEX,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_diag_addr_name,
{
"Diagnostic Address Name", "uds.diag_addr_name",
FT_STRING, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_diag_source_addr,
{
"Diagnostic Source Address", "uds.diag_addr_source",
FT_UINT16, BASE_HEX,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_diag_source_addr_name,
{
"Diagnostic Source Address Name", "uds.diag_addr_source_name",
FT_STRING, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_diag_target_addr,
{
"Diagnostic Target Address", "uds.diag_addr_target",
FT_UINT16, BASE_HEX,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_diag_target_addr_name,
{
"Diagnostic Target Address Name", "uds.diag_addr_target_name",
FT_STRING, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_service,
{
"Service Identifier", "uds.sid",
FT_UINT8, BASE_HEX,
VALS(uds_services), UDS_SID_MASK,
NULL, HFILL
}
},
{
&hf_uds_reply,
{
"Reply Flag", "uds.reply",
FT_UINT8, BASE_HEX,
NULL, UDS_REPLY_MASK,
NULL, HFILL
}
},
{ &hf_uds_diag_addr, {
"Diagnostic Address", "uds.diag_addr", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_diag_addr_name, {
"Diagnostic Address Name", "uds.diag_addr_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_diag_source_addr, {
"Diagnostic Source Address", "uds.diag_addr_source", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_diag_source_addr_name, {
"Diagnostic Source Address Name", "uds.diag_addr_source_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_diag_target_addr, {
"Diagnostic Target Address", "uds.diag_addr_target", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_diag_target_addr_name, {
"Diagnostic Target Address Name", "uds.diag_addr_target_name", FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_service, {
"Service Identifier", "uds.sid", FT_UINT8, BASE_HEX, VALS(uds_services), UDS_SID_MASK, NULL, HFILL } },
{ &hf_uds_reply, {
"Reply Flag", "uds.reply", FT_UINT8, BASE_HEX, NULL, UDS_REPLY_MASK, NULL, HFILL } },
{ &hf_uds_dsc_subfunction, {
"SubFunction", "uds.dsc.subfunction", FT_UINT8, BASE_HEX, VALS(uds_dsc_types), 0x0, NULL, HFILL } },
{ &hf_uds_dsc_parameter_record, {
"Parameter Record", "uds.dsc.parameter_record", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_dsc_default_p2_server_timer, {
"Default P2 Server Timer", "uds.dsc.p2_server_time_default", FT_UINT16, BASE_DEC | BASE_UNIT_STRING, &units_milliseconds, 0x0, NULL, HFILL } },
/* Header field is actually only 16bit but has to be scaled up by 10x. */
{ &hf_uds_dsc_enhanced_p2_server_timer, {
"Enhanced P2 Server Timer", "uds.dsc.p2_server_time_enhanced", FT_UINT32, BASE_DEC | BASE_UNIT_STRING, &units_milliseconds, 0x0, NULL, HFILL } },
{
&hf_uds_dsc_subfunction,
{
"SubFunction", "uds.dsc.subfunction",
FT_UINT8, BASE_HEX,
VALS(uds_dsc_types), 0x0,
NULL, HFILL
}
},
{
&hf_uds_dsc_parameter_record,
{
"Parameter Record", "uds.dsc.parameter_record",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_dsc_default_p2_server_timer,
{
"Default P2 Server Timer", "uds.dsc.p2_server_time_default",
FT_UINT16, BASE_DEC | BASE_UNIT_STRING,
&units_milliseconds, 0x0,
NULL, HFILL
}
},
/* Header field is actually only 16bit but has to be scaled up by 10x. */
{
&hf_uds_dsc_enhanced_p2_server_timer,
{
"Enhanced P2 Server Timer", "uds.dsc.p2_server_time_enhanced",
FT_UINT32, BASE_DEC | BASE_UNIT_STRING,
&units_milliseconds, 0x0,
NULL, HFILL
}
},
{ &hf_uds_er_subfunction, {
"SubFunction", "uds.er.subfunction", FT_UINT8, BASE_HEX, VALS(uds_er_types), 0x0, NULL, HFILL } },
{ &hf_uds_er_power_down_time, {
"Power Down Time", "uds.er.power_down_time", FT_UINT8, BASE_DEC | BASE_UNIT_STRING, &units_seconds, 0x0, NULL, HFILL } },
{
&hf_uds_er_subfunction,
{
"SubFunction", "uds.er.subfunction",
FT_UINT8, BASE_HEX,
VALS(uds_er_types), 0x0,
NULL, HFILL
}
},
{
&hf_uds_er_power_down_time,
{
"Power Down Time", "uds.er.power_down_time",
FT_UINT8, BASE_DEC | BASE_UNIT_STRING,
&units_seconds, 0x0,
NULL, HFILL
}
},
{ &hf_uds_rdtci_subfunction, {
"SubFunction", "uds.rdtci.subfunction", FT_UINT8, BASE_HEX, VALS(uds_rdtci_types), 0x0, NULL, HFILL } },
{ &hf_uds_rdtci_record, {
"Record", "uds.rdtci.record", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{
&hf_uds_rdtci_subfunction,
{
"SubFunction", "uds.rdtci.subfunction",
FT_UINT8, BASE_HEX,
VALS(uds_rdtci_types), 0x0,
NULL, HFILL
}
},
{
&hf_uds_rdtci_record,
{
"Record", "uds.rdtci.record",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{ &hf_uds_rdbi_data_identifier, {
"Data Identifier", "uds.rdbi.data_identifier", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_rdbi_data_record, {
"Data Record", "uds.rdbi.data_record", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_sa_subfunction, {
"SubFunction", "uds.sa.subfunction", FT_UINT8, BASE_CUSTOM, CF_FUNC(uds_sa_subfunction_format), 0x0, NULL, HFILL } },
{ &hf_uds_sa_key, {
"Key", "uds.sa.key", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_sa_data_record, {
"Data Record", "uds.sa.data_record", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_sa_seed, {
"Seed", "uds.sa.seed", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{
&hf_uds_rdbi_data_identifier,
{
"Data Identifier", "uds.rdbi.data_identifier",
FT_UINT16, BASE_HEX,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_rdbi_data_record,
{
"Data Record", "uds.rdbi.data_record",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{ &hf_uds_wdbi_data_identifier, {
"Data Identifier", "uds.wdbi.data_identifier", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_wdbi_data_record, {
"Data Record", "uds.wdbi.data_record", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_iocbi_data_identifier, {
"Data Identifier", "uds.iocbi.data_identifier", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_iocbi_parameter, {
"Parameter", "uds.iocbi.parameter", FT_UINT8, BASE_HEX, VALS(uds_iocbi_parameters), 0x0, NULL, HFILL } },
{ &hf_uds_iocbi_state, {
"State", "uds.iocbi.state", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{
&hf_uds_sa_subfunction,
{
"SubFunction", "uds.sa.subfunction",
FT_UINT8, BASE_CUSTOM,
CF_FUNC(uds_sa_subfunction_format), 0x0,
NULL, HFILL
}
},
{
&hf_uds_sa_key,
{
"Key", "uds.sa.key",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_sa_data_record,
{
"Data Record", "uds.sa.data_record",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_sa_seed,
{
"Seed", "uds.sa.seed",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{ &hf_uds_rc_subfunction, {
"SubFunction", "uds.rc.subfunction", FT_UINT8, BASE_HEX, VALS(uds_rc_types), 0x0, NULL, HFILL } },
{ &hf_uds_rc_identifier, {
"Identifier", "uds.rc.identifier", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_rc_option_record, {
"Option record", "uds.rc.option_record", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_rc_info, {
"Info", "uds.rc.info", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_rc_status_record, {
"Status Record", "uds.rc.status_record", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_rd_compression_method, {
"Compression Method", "uds.rd.compression_method", FT_UINT8, BASE_HEX, NULL, UDS_RD_COMPRESSION_METHOD_MASK, NULL, HFILL } },
{ &hf_uds_rd_encrypting_method, {
"Encrypting Method", "uds.rd.encrypting_method", FT_UINT8, BASE_HEX, NULL, UDS_RD_ENCRYPTING_METHOD_MASK, NULL, HFILL } },
{ &hf_uds_rd_memory_size_length, {
"Memory size length", "uds.rd.memory_size_length", FT_UINT8, BASE_HEX, NULL, UDS_RD_MEMORY_SIZE_LENGTH_MASK, NULL, HFILL } },
{ &hf_uds_rd_memory_address_length, {
"Memory address length", "uds.rd.memory_address_length", FT_UINT8, BASE_HEX, NULL, UDS_RD_MEMORY_ADDRESS_LENGTH_MASK, NULL, HFILL } },
{ &hf_uds_rd_memory_address, {
"Memory Address", "uds.rd.memory_address", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_rd_memory_size, {
"Memory Size", "uds.rd.memory_size", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_rd_max_block_len_len, {
"Length of Max Block Length", "uds.rd.max_block_length_length", FT_UINT8, BASE_HEX, NULL, UDS_RD_MAX_BLOCK_LEN_LEN_MASK, NULL, HFILL } },
{ &hf_uds_rd_max_block_len, {
"Max Block Length", "uds.rd.max_block_length", FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{
&hf_uds_wdbi_data_identifier,
{
"Data Identifier", "uds.wdbi.data_identifier",
FT_UINT8, BASE_HEX,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_wdbi_data_record,
{
"Data Record", "uds.wdbi.data_record",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{ &hf_uds_td_sequence_counter, {
"Block Sequence Counter", "uds.td.block_sequence_counter", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_td_record_data, {
"Parameter Record", "uds.td.parameter_record", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{
&hf_uds_iocbi_data_identifier,
{
"Data Identifier", "uds.iocbi.data_identifier",
FT_UINT8, BASE_HEX,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_iocbi_parameter,
{
"Parameter", "uds.iocbi.parameter",
FT_UINT8, BASE_HEX,
VALS(uds_iocbi_parameters), 0x0,
NULL, HFILL
}
},
{
&hf_uds_iocbi_state,
{
"State", "uds.iocbi.state",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{ &hf_uds_tp_subfunction, {
"SubFunction", "uds.tp.subfunction", FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_tp_subfunction_no_suppress, {
"SubFunction (without Suppress)", "uds.tp.subfunction_without_suppress", FT_UINT8, BASE_HEX, NULL, UDS_TP_SUBFUNCTION_MASK, NULL, HFILL } },
{
&hf_uds_rc_subfunction,
{
"SubFunction", "uds.rc.subfunction",
FT_UINT8, BASE_HEX,
VALS(uds_rc_types), 0x0,
NULL, HFILL
}
},
{
&hf_uds_rc_identifier,
{
"Identifier", "uds.rc.identifier",
FT_UINT16, BASE_HEX,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_rc_option_record,
{
"Option record", "uds.rc.option_record",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_rc_info,
{
"Info", "uds.rc.info",
FT_UINT8, BASE_HEX,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_rc_status_record,
{
"Status Record", "uds.rc.status_record",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{ &hf_uds_tp_suppress_pos_rsp_msg_ind, {
"Suppress reply", "uds.tp.suppress_reply.indication", FT_BOOLEAN, 8, NULL, UDS_TP_SUPPRESS_POS_RSP_MSG_IND_MASK, NULL, HFILL } },
{
&hf_uds_rd_compression_method,
{
"Compression Method", "uds.rd.compression_method",
FT_UINT8, BASE_HEX,
NULL, UDS_RD_COMPRESSION_METHOD_MASK,
NULL, HFILL
}
},
{
&hf_uds_rd_encrypting_method,
{
"Encrypting Method", "uds.rd.encrypting_method",
FT_UINT8, BASE_HEX,
NULL, UDS_RD_ENCRYPTING_METHOD_MASK,
NULL, HFILL
}
},
{
&hf_uds_rd_memory_size_length,
{
"Memory size length", "uds.rd.memory_size_length",
FT_UINT8, BASE_HEX,
NULL, UDS_RD_MEMORY_SIZE_LENGTH_MASK,
NULL, HFILL
}
},
{
&hf_uds_rd_memory_address_length,
{
"Memory address length", "uds.rd.memory_address_length",
FT_UINT8, BASE_HEX,
NULL, UDS_RD_MEMORY_ADDRESS_LENGTH_MASK,
NULL, HFILL
}
},
{
&hf_uds_rd_memory_address,
{
"Memory Address", "uds.rd.memory_address",
FT_UINT64, BASE_HEX,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_rd_memory_size,
{
"Memory Size", "uds.rd.memory_size",
FT_UINT64, BASE_HEX,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_rd_max_block_len_len,
{
"Length of Max Block Length", "uds.rd.max_block_length_length",
FT_UINT8, BASE_HEX,
NULL, UDS_RD_MAX_NUMBER_OF_BLOCK_LENGTH_LENGTH_MASK,
NULL, HFILL
}
},
{
&hf_uds_rd_max_block_len,
{
"Max Block Length", "uds.rd.max_block_length",
FT_UINT64, BASE_HEX,
NULL, 0x0,
NULL, HFILL
}
},
{ &hf_uds_err_sid, {
"Service Identifier", "uds.err.sid", FT_UINT8, BASE_HEX, VALS(uds_services), 0x0, NULL, HFILL } },
{ &hf_uds_err_code, {
"Code", "uds.err.code", FT_UINT8, BASE_HEX, VALS(uds_response_codes), 0x0, NULL, HFILL } },
{ &hf_uds_cdtcs_subfunction, {
"SubFunction", "uds.cdtcs.subfunction", FT_UINT8, BASE_HEX, VALS(uds_cdtcs_types), 0x0, NULL, HFILL } },
{ &hf_uds_cdtcs_option_record, {
"Option Record", "uds.cdtcs.option_record", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
{ &hf_uds_cdtcs_type, {
"DTC Setting Type", "uds.cdtcs.dtc_setting_type", FT_UINT8, BASE_HEX, VALS(uds_cdtcs_types), 0x0, NULL, HFILL } },
{
&hf_uds_td_sequence_counter,
{
"Block Sequence Counter", "uds.td.block_sequence_counter",
FT_UINT8, BASE_DEC,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_td_record_data,
{
"Parameter Record", "uds.td.parameter_record",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_tp_subfunction,
{
"SubFunction", "uds.tp.subfunction",
FT_UINT8, BASE_HEX,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_tp_subfunction_no_suppress,
{
"SubFunction (without Suppress)", "uds.tp.subfunction_without_suppress",
FT_UINT8, BASE_HEX,
NULL, UDS_TP_SUBFUNCTION_MASK,
NULL, HFILL
}
},
{
&hf_uds_tp_suppress_pos_rsp_msg_ind,
{
"Suppress reply", "uds.tp.suppress_reply.indication",
FT_BOOLEAN, 8,
NULL, UDS_TP_SUPPRESS_POS_RSP_MSG_INDICATION_MASK,
NULL, HFILL
}
},
{
&hf_uds_err_sid,
{
"Service Identifier", "uds.err.sid",
FT_UINT8, BASE_HEX,
VALS(uds_services), 0x0,
NULL, HFILL
}
},
{
&hf_uds_err_code,
{
"Code", "uds.err.code",
FT_UINT8, BASE_HEX,
VALS(uds_response_codes), 0x0,
NULL, HFILL
}
},
{
&hf_uds_cdtcs_subfunction,
{
"SubFunction", "uds.cdtcs.subfunction",
FT_UINT8, BASE_HEX,
VALS(uds_cdtcs_types), 0x0,
NULL, HFILL
}
},
{
&hf_uds_cdtcs_option_record,
{
"Option Record", "uds.cdtcs.option_record",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{
&hf_uds_cdtcs_type,
{
"DTC Setting Type", "uds.cdtcs.dtc_setting_type",
FT_UINT8, BASE_HEX,
VALS(uds_cdtcs_types), 0x0,
NULL, HFILL
}
},
{
&hf_uds_unparsed_bytes,
{
"Unparsed Bytes", "uds.unparsed_bytes",
FT_BYTES, BASE_NONE,
NULL, 0x0,
NULL, HFILL
}
},
{ &hf_uds_unparsed_bytes, {
"Unparsed Bytes", "uds.unparsed_bytes", FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },
};
uat_t* uds_routine_ids_uat;
@ -1905,15 +1543,15 @@ proto_register_uds(void)
/* Setup protocol subtree array */
static gint *ett[] = {
&ett_uds,
&ett_uds_subfunction,
&ett_uds_dsc_parameter_record,
&ett_uds,
&ett_uds_subfunction,
&ett_uds_dsc_parameter_record,
};
proto_uds = proto_register_protocol (
"Unified Diagnostic Services", /* name */
"UDS", /* short name */
"uds" /* abbrev */
"Unified Diagnostic Services", /* name */
"UDS", /* short name */
"uds" /* abbrev */
);
proto_register_field_array(proto_uds, hf, array_length(hf));