diff options
author | Dr. Lars Völker <lars.voelker@technica-engineering.de> | 2021-07-15 19:30:00 +0200 |
---|---|---|
committer | Wireshark GitLab Utility <gerald+gitlab-utility@wireshark.org> | 2021-07-16 09:12:18 +0000 |
commit | e0055d0698e797905aff08697559508ff86cff91 (patch) | |
tree | 8fe40879004a21290be8e401dbe120a11bcb18a1 | |
parent | 6cb4f178280bc7c7bc2b309da353b7f10bbfa227 (diff) |
Signal-PDU: Add support for the new CAN API
This patch directly registers configured CAN IDs.
-rw-r--r-- | epan/dissectors/packet-signal-pdu.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/epan/dissectors/packet-signal-pdu.c b/epan/dissectors/packet-signal-pdu.c index 2c942c9376..b8e6343c43 100644 --- a/epan/dissectors/packet-signal-pdu.c +++ b/epan/dissectors/packet-signal-pdu.c @@ -262,6 +262,32 @@ void proto_register_signal_pdu(void); void proto_reg_handoff_signal_pdu(void); void +proto_reg_handoff_signal_pdu_can(void) { + if (signal_pdu_handle_can == NULL) { + return; + } + + dissector_delete_all("can.id", signal_pdu_handle_can); + dissector_delete_all("can.extended_id", signal_pdu_handle_can); + + /* CAN: loop over all frame IDs in HT */ + if (data_spdu_can_mappings != NULL) { + GList *keys = g_hash_table_get_keys(data_spdu_can_mappings); + + GList *tmp; + for (tmp = keys; tmp != NULL; tmp = tmp->next) { + gint32 *id = ((gint32*)tmp->data); + + *id &= CAN_EFF_MASK; + dissector_add_uint("can.extended_id", *id, signal_pdu_handle_can); + if (*id <= CAN_SFF_MASK) { + dissector_add_uint("can.id", *id, signal_pdu_handle_can); + } + } + } +} + +void proto_reg_handoff_signal_pdu_lin(void) { if (signal_pdu_handle_lin == NULL) { return; @@ -1041,6 +1067,9 @@ post_update_spdu_can_mapping_cb(void) { g_hash_table_insert(data_spdu_can_mappings, key, &spdu_can_mapping[i]); } } + + /* we need to make sure we register again */ + proto_reg_handoff_signal_pdu_can(); } static spdu_can_mapping_t* |