TECMP: Updating to TECMP 1.7

The following changes are part of this patch:
- Make signed integer for analog default
- Analog Sample Time 0 is reserved now
- Updating Data Flags TX for CAN, CAN-FD, LIN, FlexRay, UART
- Show Parity Bits of LIN
- Expert Warning, when FlexRay Header CRC overflows into reserved bits
This commit is contained in:
Dr. Lars Völker 2022-07-19 00:23:22 +02:00 committed by A Wireshark GitLab Utility
parent dec99a5f42
commit 9e84721c1a
1 changed files with 137 additions and 39 deletions

View File

@ -43,7 +43,7 @@ static dissector_handle_t eth_handle;
static int proto_vlan;
static gboolean heuristic_first = FALSE;
static gboolean analog_samples_are_signed_int = FALSE;
static gboolean analog_samples_are_signed_int = TRUE;
static dissector_table_t fr_subdissector_table;
static heur_dissector_list_t fr_heur_subdissector_list;
@ -131,6 +131,13 @@ static int hf_tecmp_payload_data_flags_unit = -1;
static int hf_tecmp_payload_data_flags_threshold_u = -1;
static int hf_tecmp_payload_data_flags_threshold_o = -1;
/* Special TX Data Flags */
static int hf_tecmp_payload_data_flags_use_crc_value = -1;
static int hf_tecmp_payload_data_flags_use_header_crc_value = -1;
static int hf_tecmp_payload_data_flags_use_checksum_value = -1;
static int hf_tecmp_payload_data_flags_use_parity_bits = -1;
static int hf_tecmp_payload_data_flags_tx_mode = -1;
static const unit_name_string tecmp_units_amp_hour = { "Ah", NULL };
#define TECMP_DATAFLAGS_FACTOR_MASK 0x0180
@ -141,6 +148,8 @@ static const unit_name_string tecmp_units_amp_hour = { "Ah", NULL };
/* TECMP Payload Fields*/
/* LIN */
static int hf_tecmp_payload_data_id_field_8bit = -1;
static int hf_tecmp_payload_data_id_field_6bit = -1;
static int hf_tecmp_payload_data_parity_bits = -1;
static int hf_tecmp_payload_data_checksum_8bit = -1;
/* CAN DATA / CAN-FD DATA */
@ -230,6 +239,7 @@ static gint ett_tecmp_payload_data = -1;
static gint ett_tecmp_payload_timestamp = -1;
static gint ett_tecmp_payload_dataflags = -1;
static gint ett_tecmp_payload_data_id = -1;
static gint ett_tecmp_payload_lin_id = -1;
static gint ett_tecmp_status_bus_data = -1;
static gint ett_tecmp_status_bus_data_entry = -1;
static gint ett_tecmp_status_dev_vendor_data = -1;
@ -238,6 +248,7 @@ static gint ett_tecmp_status_bus_vendor_data = -1;
/*** expert info items ***/
static expert_field ef_tecmp_payload_length_mismatch = EI_INIT;
static expert_field ef_tecmp_header_crc_overflow = EI_INIT;
/* TECMP Type Names */
@ -378,7 +389,7 @@ static const value_string tecmp_payload_rs232_uart_dl_types[] = {
};
static const value_string tecmp_payload_analog_sample_time_types[] = {
{0x0, "Comparator Mode"},
{0x0, "Reserved"},
{0x1, "2500 ms"},
{0x2, "1000 ms"},
{0x3, "500 ms"},
@ -424,6 +435,14 @@ static const value_string tecmp_payload_analog_unit_types[] = {
{0, NULL}
};
static const value_string tecmp_payload_flexray_tx_mode[] = {
{0x0, "Reserved"},
{0x1, "Single Shot Transmission"},
{0x2, "Continuous Transmission"},
{0x3, "TX None"},
{0, NULL}
};
static const value_string tecmp_bus_status_link_status[] = {
{0x0, "Down"},
{0x1, "Up"},
@ -464,6 +483,9 @@ static const value_string tecmp_bus_status_link_quality[] = {
#define DATA_FLAG_FR_HDR_CRC_ERR 0x1000
#define DATA_FLAG_FR_FRAME_CRC_ERR 0x2000
#define DATA_LIN_ID_MASK 0x3F
#define DATA_FR_HEADER_CRC_MAX 0x07FF
/********* UATs *********/
typedef struct _generic_one_id_string {
@ -822,15 +844,11 @@ dissect_tecmp_entry_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
};
static int * const dataflags_lin_tx[] = {
&hf_tecmp_payload_data_flags_overflow,
&hf_tecmp_payload_data_flags_tx,
&hf_tecmp_payload_data_flags_checksum,
&hf_tecmp_payload_data_flags_use_checksum_value,
&hf_tecmp_payload_data_flags_short_wup,
&hf_tecmp_payload_data_flags_wup,
&hf_tecmp_payload_data_flags_no_resp,
&hf_tecmp_payload_data_flags_parity,
&hf_tecmp_payload_data_flags_coll,
&hf_tecmp_payload_data_flags_use_parity_bits,
NULL
};
@ -850,6 +868,16 @@ dissect_tecmp_entry_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
NULL
};
static int * const dataflags_can_tx_data[] = {
&hf_tecmp_payload_data_flags_use_crc_value,
&hf_tecmp_payload_data_flags_can_eof_err,
&hf_tecmp_payload_data_flags_can_ack_del_err,
&hf_tecmp_payload_data_flags_can_crc_del_err,
&hf_tecmp_payload_data_flags_can_bit_stuff_err,
NULL
};
static int * const dataflags_can_fd_data[] = {
&hf_tecmp_payload_data_flags_overflow,
&hf_tecmp_payload_data_flags_tx,
@ -867,6 +895,17 @@ dissect_tecmp_entry_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
NULL
};
static int * const dataflags_can_fd_tx_data[] = {
&hf_tecmp_payload_data_flags_use_crc_value,
&hf_tecmp_payload_data_flags_canfd_eof_err,
&hf_tecmp_payload_data_flags_canfd_ack_del_err,
&hf_tecmp_payload_data_flags_canfd_crc_del_err,
&hf_tecmp_payload_data_flags_canfd_bit_stuff_err,
&hf_tecmp_payload_data_flags_brs,
NULL
};
static int * const dataflags_flexray_data[] = {
&hf_tecmp_payload_data_flags_overflow,
&hf_tecmp_payload_data_flags_tx,
@ -882,8 +921,14 @@ dissect_tecmp_entry_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
NULL
};
static int * const dataflags_flexray_tx_data[] = {
&hf_tecmp_payload_data_flags_use_header_crc_value,
&hf_tecmp_payload_data_flags_tx_mode,
NULL
};
static int * const dataflags_rs232_uart_ascii[] = {
&hf_tecmp_payload_data_flags_overflow,
&hf_tecmp_payload_data_flags_tx,
&hf_tecmp_payload_data_flags_dl,
@ -951,18 +996,33 @@ dissect_tecmp_entry_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
break;
case TECMP_DATA_TYPE_CAN_DATA:
proto_tree_add_bitmask(tree, tvb, offset, hf_tecmp_payload_data_flags, ett_tecmp_payload_dataflags,
if (tecmp_msg_type == TECMP_MSG_TYPE_LOG_STREAM) {
proto_tree_add_bitmask(tree, tvb, offset, hf_tecmp_payload_data_flags, ett_tecmp_payload_dataflags,
dataflags_can_data, ENC_BIG_ENDIAN);
} else {
proto_tree_add_bitmask(tree, tvb, offset, hf_tecmp_payload_data_flags, ett_tecmp_payload_dataflags,
dataflags_can_tx_data, ENC_BIG_ENDIAN);
}
break;
case TECMP_DATA_TYPE_CAN_FD_DATA:
proto_tree_add_bitmask(tree, tvb, offset, hf_tecmp_payload_data_flags, ett_tecmp_payload_dataflags,
if (tecmp_msg_type == TECMP_MSG_TYPE_LOG_STREAM) {
proto_tree_add_bitmask(tree, tvb, offset, hf_tecmp_payload_data_flags, ett_tecmp_payload_dataflags,
dataflags_can_fd_data, ENC_BIG_ENDIAN);
} else {
proto_tree_add_bitmask(tree, tvb, offset, hf_tecmp_payload_data_flags, ett_tecmp_payload_dataflags,
dataflags_can_fd_tx_data, ENC_BIG_ENDIAN);
}
break;
case TECMP_DATA_TYPE_FR_DATA:
proto_tree_add_bitmask(tree, tvb, offset, hf_tecmp_payload_data_flags, ett_tecmp_payload_dataflags,
if (tecmp_msg_type == TECMP_MSG_TYPE_LOG_STREAM) {
proto_tree_add_bitmask(tree, tvb, offset, hf_tecmp_payload_data_flags, ett_tecmp_payload_dataflags,
dataflags_flexray_data, ENC_BIG_ENDIAN);
} else {
proto_tree_add_bitmask(tree, tvb, offset, hf_tecmp_payload_data_flags, ett_tecmp_payload_dataflags,
dataflags_flexray_tx_data, ENC_BIG_ENDIAN);
}
break;
case TECMP_DATA_TYPE_RS232_ASCII:
@ -1338,6 +1398,12 @@ dissect_tecmp_log_or_replay_stream(tvbuff_t *tvb, packet_info *pinfo, proto_tree
NULL
};
static int * const tecmp_payload_id_flags_lin[] = {
&hf_tecmp_payload_data_parity_bits,
&hf_tecmp_payload_data_id_field_6bit,
NULL
};
col_set_str(pinfo->cinfo, COL_INFO, "TECMP Payload: ");
while (tvb_captured_length_remaining(tvb, offset) >= 16) {
@ -1362,7 +1428,9 @@ dissect_tecmp_log_or_replay_stream(tvbuff_t *tvb, packet_info *pinfo, proto_tree
switch (msg_type) {
case TECMP_DATA_TYPE_LIN:
proto_tree_add_item_ret_uint(tecmp_tree, hf_tecmp_payload_data_id_field_8bit, sub_tvb, offset2, 1, ENC_NA, &(lin_info.id));
lin_info.id = tvb_get_guint8(sub_tvb, offset2) & DATA_LIN_ID_MASK;
proto_tree_add_bitmask(tecmp_tree, sub_tvb, offset2, hf_tecmp_payload_data_id_field_8bit, ett_tecmp_payload_lin_id, tecmp_payload_id_flags_lin, ENC_BIG_ENDIAN);
lin_info.bus_id = ht_interface_config_to_bus_id(interface_id);
ti = proto_tree_add_item_ret_uint(tecmp_tree, hf_tecmp_payload_data_length, sub_tvb, offset2 + 1, 1,
ENC_NA, &length2);
@ -1475,7 +1543,11 @@ dissect_tecmp_log_or_replay_stream(tvbuff_t *tvb, packet_info *pinfo, proto_tree
/* new for TECMP 1.6 */
if (tvb_captured_length_remaining(sub_tvb, offset2) >= 5) {
proto_tree_add_item(tecmp_tree, hf_tecmp_payload_data_header_crc, sub_tvb, offset2, 2, ENC_BIG_ENDIAN);
guint32 header_crc = 0;
ti = proto_tree_add_item_ret_uint(tecmp_tree, hf_tecmp_payload_data_header_crc, sub_tvb, offset2, 2, ENC_BIG_ENDIAN, &header_crc);
if (header_crc > DATA_FR_HEADER_CRC_MAX) {
expert_add_info(pinfo, ti, &ef_tecmp_header_crc_overflow);
}
offset2 += 2;
proto_tree_add_item(tecmp_tree, hf_tecmp_payload_data_frame_crc, sub_tvb, offset2, 3, ENC_BIG_ENDIAN);
}
@ -1651,8 +1723,14 @@ proto_register_tecmp_payload(void) {
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }},
{ &hf_tecmp_payload_data_id_field_8bit,
{ "ID", "tecmp.payload.data.lin_id",
{ "ID", "tecmp.payload.data.lin_id_with_parity",
FT_UINT8, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_tecmp_payload_data_id_field_6bit,
{ "LIN ID", "tecmp.payload.data.lin_id",
FT_UINT8, BASE_HEX_DEC, NULL, DATA_LIN_ID_MASK, NULL, HFILL }},
{ &hf_tecmp_payload_data_parity_bits,
{ "Parity Bits", "tecmp.payload.data.lin_parity_bits",
FT_UINT8, BASE_HEX_DEC, NULL, 0xc0, NULL, HFILL }},
{ &hf_tecmp_payload_data_checksum_8bit,
{ "Checksum", "tecmp.payload.data.checksum",
FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL }},
@ -1791,10 +1869,10 @@ proto_register_tecmp_payload(void) {
FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_tecmp_payload_status_dev_vendor_technica_temperature_chassis,
{ "Temperature Chassis", "tecmp.payload.status_dev.vendor_technica.temperature_chassis",
FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_tecmp_payload_status_dev_vendor_technica_temperature_silicon,
{ "Temperature Silicon", "tecmp.payload.status_dev.vendor_technica.temperature_silicon",
FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
FT_INT8, BASE_DEC, NULL, 0x0, NULL, HFILL }},
/* Status Bus Vendor Data */
{ &hf_tecmp_payload_status_bus_vendor_technica_link_status,
@ -1845,13 +1923,13 @@ proto_register_tecmp_payload(void) {
FT_BOOLEAN, 16, NULL, 0x0004, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_wup,
{ "Wake Up Signal", "tecmp.payload.data_flags.wup",
FT_BOOLEAN, 16, NULL, 0x0100, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, 0x0100, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_short_wup,
{ "Short Wake Up Signal", "tecmp.payload.data_flags.short_wup",
FT_BOOLEAN, 16, NULL, 0x0200, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, 0x0200, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_sleep,
{ "Sleep Signal", "tecmp.payload.data_flags.sleep",
FT_BOOLEAN, 16, NULL, 0x0400, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, 0x0400, NULL, HFILL }},
/* CAN DATA, CAN-FD Data */
{ &hf_tecmp_payload_data_flags_ack,
@ -1871,32 +1949,32 @@ proto_register_tecmp_payload(void) {
FT_BOOLEAN, 16, NULL, DATA_FLAG_CAN_ERR, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_brs,
{ "Bit Rate Switch", "tecmp.payload.data_flags.bit_rate_switch",
FT_BOOLEAN, 16, NULL, DATA_FLAG_CANFD_BRS, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, DATA_FLAG_CANFD_BRS, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_can_bit_stuff_err,
{ "Bit Stuff Error", "tecmp.payload.data_flags.bit_stuff_error",
FT_BOOLEAN, 16, NULL, DATA_FLAG_CAN_BIT_STUFF_ERR, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, DATA_FLAG_CAN_BIT_STUFF_ERR, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_can_crc_del_err,
{ "CRC Delimiter Error", "tecmp.payload.data_flags.crc_del_error",
FT_BOOLEAN, 16, NULL, DATA_FLAG_CAN_CRC_DEL_ERR, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, DATA_FLAG_CAN_CRC_DEL_ERR, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_can_ack_del_err,
{ "Ack Delimiter Error", "tecmp.payload.data_flags.ack_del_error",
FT_BOOLEAN, 16, NULL, DATA_FLAG_CAN_ACK_DEL_ERR, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, DATA_FLAG_CAN_ACK_DEL_ERR, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_can_eof_err,
{ "End of Frame Field Error", "tecmp.payload.data_flags.eof_error",
FT_BOOLEAN, 16, NULL, DATA_FLAG_CAN_EOF_ERR, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, DATA_FLAG_CAN_EOF_ERR, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_canfd_bit_stuff_err,
{ "Bit Stuff Error", "tecmp.payload.data_flags.bit_stuff_error",
FT_BOOLEAN, 16, NULL, DATA_FLAG_CANFD_BIT_STUFF_ERR, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, DATA_FLAG_CANFD_BIT_STUFF_ERR, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_canfd_crc_del_err,
{ "CRC Delimiter Error", "tecmp.payload.data_flags.crc_del_error",
FT_BOOLEAN, 16, NULL, DATA_FLAG_CANFD_CRC_DEL_ERR, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, DATA_FLAG_CANFD_CRC_DEL_ERR, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_canfd_ack_del_err,
{ "Ack Delimiter Error", "tecmp.payload.data_flags.ack_del_error",
FT_BOOLEAN, 16, NULL, DATA_FLAG_CANFD_ACK_DEL_ERR, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, DATA_FLAG_CANFD_ACK_DEL_ERR, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_canfd_eof_err,
{ "End of Frame Field Error", "tecmp.payload.data_flags.eof_error",
FT_BOOLEAN, 16, NULL, DATA_FLAG_CANFD_EOF_ERR, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, DATA_FLAG_CANFD_EOF_ERR, NULL, HFILL }},
/* FlexRay Data */
{ &hf_tecmp_payload_data_flags_nf,
@ -1916,13 +1994,13 @@ proto_register_tecmp_payload(void) {
FT_BOOLEAN, 16, NULL, DATA_FLAG_FR_PPI, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_cas,
{ "Collision Avoidance Symbol", "tecmp.payload.data_flags.collision_avoidance_symbol",
FT_BOOLEAN, 16, NULL, DATA_FLAG_FR_CAS, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, DATA_FLAG_FR_CAS, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_header_crc_err,
{ "Header CRC Error", "tecmp.payload.data_flags.header_crc_error",
FT_BOOLEAN, 16, NULL, DATA_FLAG_FR_HDR_CRC_ERR, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, DATA_FLAG_FR_HDR_CRC_ERR, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_frame_crc_err,
{ "Frame CRC Error", "tecmp.payload.data_flags.frame_crc_error",
FT_BOOLEAN, 16, NULL, DATA_FLAG_FR_FRAME_CRC_ERR, NULL, HFILL } },
FT_BOOLEAN, 16, NULL, DATA_FLAG_FR_FRAME_CRC_ERR, NULL, HFILL }},
/* UART/RS232 ASCII */
{ &hf_tecmp_payload_data_flags_dl,
@ -1953,22 +2031,39 @@ proto_register_tecmp_payload(void) {
FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_tecmp_payload_data_analog_value_raw_signed,
{ "Analog Value", "tecmp.payload.data.analog_value_signed",
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL } },
FT_INT16, BASE_DEC, NULL, 0x0, NULL, HFILL }},
{ &hf_tecmp_payload_data_analog_value_volt,
{ "Analog Value", "tecmp.payload.data.analog_value_volt",
FT_DOUBLE, BASE_NONE | BASE_UNIT_STRING, &units_volt, 0x0, NULL, HFILL } },
FT_DOUBLE, BASE_NONE | BASE_UNIT_STRING, &units_volt, 0x0, NULL, HFILL }},
{ &hf_tecmp_payload_data_analog_value_amp,
{ "Analog Value", "tecmp.payload.data.analog_value_amp",
FT_DOUBLE, BASE_NONE | BASE_UNIT_STRING, &units_amp, 0x0, NULL, HFILL } },
FT_DOUBLE, BASE_NONE | BASE_UNIT_STRING, &units_amp, 0x0, NULL, HFILL }},
{ &hf_tecmp_payload_data_analog_value_watt,
{ "Analog Value", "tecmp.payload.data.analog_value_watt",
FT_DOUBLE, BASE_NONE | BASE_UNIT_STRING, &units_watt, 0x0, NULL, HFILL } },
FT_DOUBLE, BASE_NONE | BASE_UNIT_STRING, &units_watt, 0x0, NULL, HFILL }},
{ &hf_tecmp_payload_data_analog_value_amp_hour,
{ "Analog Value", "tecmp.payload.data.analog_value_amp_hour",
FT_DOUBLE, BASE_NONE | BASE_UNIT_STRING, &tecmp_units_amp_hour, 0x0, NULL, HFILL } },
FT_DOUBLE, BASE_NONE | BASE_UNIT_STRING, &tecmp_units_amp_hour, 0x0, NULL, HFILL }},
{ &hf_tecmp_payload_data_analog_value_celsius,
{ "Analog Value", "tecmp.payload.data.analog_value_celsius",
FT_DOUBLE, BASE_NONE | BASE_UNIT_STRING, &units_degree_celsius, 0x0, NULL, HFILL } },
FT_DOUBLE, BASE_NONE | BASE_UNIT_STRING, &units_degree_celsius, 0x0, NULL, HFILL }},
/* TX Data Flags */
{ &hf_tecmp_payload_data_flags_use_crc_value,
{ "Use CRC Value", "tecmp.payload.data_flags.use_crc_value",
FT_BOOLEAN, 16, NULL, 0x2000, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_use_header_crc_value,
{ "Use Header CRC Value", "tecmp.payload.data_flags.use_header_crc_value",
FT_BOOLEAN, 16, NULL, DATA_FLAG_FR_HDR_CRC_ERR, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_use_checksum_value,
{ "Use Checksum Value", "tecmp.payload.data_flags.use_checksum_value",
FT_BOOLEAN, 16, NULL, 0x2000, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_use_parity_bits,
{ "Use Parity Bits", "tecmp.payload.data_flags.use_parity_bits",
FT_BOOLEAN, 16, NULL, 0x0002, NULL, HFILL }},
{ &hf_tecmp_payload_data_flags_tx_mode,
{ "TX Mode", "tecmp.payload.data_flags.set_tx_mode",
FT_UINT16, BASE_DEC, VALS(tecmp_payload_flexray_tx_mode), 0x0380, NULL, HFILL }},
};
static gint *ett[] = {
@ -1978,6 +2073,7 @@ proto_register_tecmp_payload(void) {
&ett_tecmp_payload_timestamp,
&ett_tecmp_payload_dataflags,
&ett_tecmp_payload_data_id,
&ett_tecmp_payload_lin_id,
&ett_tecmp_status_dev_vendor_data,
&ett_tecmp_status_bus_data,
&ett_tecmp_status_bus_data_entry,
@ -1986,7 +2082,9 @@ proto_register_tecmp_payload(void) {
static ei_register_info ei[] = {
{ &ef_tecmp_payload_length_mismatch, { "tecmp.payload.payload_length_mismatch",
PI_PROTOCOL, PI_WARN, "Payload Length and the length of Payload present in packet do not match!", EXPFILL } },
PI_PROTOCOL, PI_WARN, "Payload Length and the length of Payload present in packet do not match!", EXPFILL }},
{ &ef_tecmp_header_crc_overflow, { "tecmp.payload.header_crc_overflow",
PI_PROTOCOL, PI_WARN, "Header CRC may only be up to 0x07ff!", EXPFILL }},
};
proto_tecmp_payload = proto_register_protocol("Technically Enhanced Capture Module Protocol Payload",