diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2013-05-24 20:55:42 +0000 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2013-05-24 20:55:42 +0000 |
commit | ec1ebf5dd8967082016e28d4a579e996045bc3b6 (patch) | |
tree | 44fce9430b97f120893b791ff43ad3d6aeaf92f3 /asn1 | |
parent | a686f1713a1eae7db5ac242278443e4d74aa9fcb (diff) |
From LI Hai via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8708 :
Add MAC-DATA support to TETRA dissector and other minor improvements
svn path=/trunk/; revision=49567
Diffstat (limited to 'asn1')
-rw-r--r-- | asn1/tetra/packet-tetra-template.c | 53 | ||||
-rw-r--r-- | asn1/tetra/tetra.asn | 8 | ||||
-rw-r--r-- | asn1/tetra/tetra.cnf | 5 |
3 files changed, 33 insertions, 33 deletions
diff --git a/asn1/tetra/packet-tetra-template.c b/asn1/tetra/packet-tetra-template.c index 3022e64385..0a33497101 100644 --- a/asn1/tetra/packet-tetra-template.c +++ b/asn1/tetra/packet-tetra-template.c @@ -235,7 +235,10 @@ void tetra_dissect_pdu(int channel_type, int dir, tvbuff_t *pdu, proto_tree *tre p = tvb_get_guint8(pdu, 0); switch(p >> 6) { case 0: - dissect_MAC_RESOURCE_PDU(pdu, pinfo, tetra_sub_tree ); + if (dir == TETRA_DOWNLINK) + dissect_MAC_RESOURCE_PDU(pdu, pinfo, tetra_sub_tree ); + else + dissect_MAC_DATA_PDU(pdu, pinfo, tetra_sub_tree ); break; case 1: /* MAC-FRAG or MAC-END */ if((p >> 5) == 3) { @@ -281,9 +284,11 @@ void tetra_dissect_pdu(int channel_type, int dir, tvbuff_t *pdu, proto_tree *tre } break; case TETRA_CHAN_BSCH: + col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "BSCH"); dissect_BSCH_PDU(pdu, pinfo, tetra_sub_tree ); break; case TETRA_CHAN_BNCH: + col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "BNCH"); dissect_BNCH_PDU(pdu, pinfo, tetra_sub_tree ); break; case TETRA_CHAN_STCH: @@ -306,6 +311,9 @@ void tetra_dissect_pdu(int channel_type, int dir, tvbuff_t *pdu, proto_tree *tre break; } break; + case TETRA_CHAN_TCH_F: + col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "Voice"); + break; } } @@ -418,7 +426,7 @@ dissect_tetra(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree *tetra_tree = NULL; proto_tree *tetra_header_tree = NULL; guint16 type = 0; - guint16 carriernumber = -1; + guint8 carriernumber = -1; col_set_str(pinfo->cinfo, COL_PROTOCOL, PROTO_TAG_tetra); /* Clear out stuff in the info column */ @@ -432,54 +440,47 @@ dissect_tetra(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) if(include_carrier_number) { carriernumber = tvb_get_guint8(tvb, 1); - carriernumber |= 0xff00; } switch(type) { case 1: if(include_carrier_number) - col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-REQ, Carrier: %d", - pinfo->srcport, pinfo->destport, carriernumber); + col_add_fstr(pinfo->cinfo, COL_INFO, "Tetra-UNITDATA-REQ, Carrier: %d", + carriernumber); else - col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-REQ", - pinfo->srcport, pinfo->destport); + col_add_fstr(pinfo->cinfo, COL_INFO, "Tetra-UNITDATA-REQ"); break; case 2: if(include_carrier_number) - col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-IND, Carrier: %d", - pinfo->srcport, pinfo->destport, carriernumber); + col_add_fstr(pinfo->cinfo, COL_INFO, "Tetra-UNITDATA-IND, Carrier: %d", + carriernumber); else - col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-IND", - pinfo->srcport, pinfo->destport); + col_add_fstr(pinfo->cinfo, COL_INFO, "Tetra-UNITDATA-IND"); break; case 3: if(include_carrier_number) - col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d MAC-Timer, Carrier: %d", - pinfo->srcport, pinfo->destport, carriernumber); + col_add_fstr(pinfo->cinfo, COL_INFO, "MAC-Timer, Carrier: %d", + carriernumber); else - col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d MAC-Timer", - pinfo->srcport, pinfo->destport); + col_add_fstr(pinfo->cinfo, COL_INFO, "MAC-Timer"); break; case 127: if(include_carrier_number) - col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-IND Done, Carrier: %d", - pinfo->srcport, pinfo->destport, carriernumber); + col_add_fstr(pinfo->cinfo, COL_INFO, "Tetra-UNITDATA-IND Done, Carrier: %d", + carriernumber); else - col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-IND Done", - pinfo->srcport, pinfo->destport); + col_add_fstr(pinfo->cinfo, COL_INFO, "Tetra-UNITDATA-IND Done"); break; case 128: if(include_carrier_number) - col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-REQ Done, Carrier: %d", - pinfo->srcport, pinfo->destport, carriernumber); + col_add_fstr(pinfo->cinfo, COL_INFO, "Tetra-UNITDATA-REQ Done, Carrier: %d", + carriernumber); else - col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d tetra-UNITDATA-REQ Done", - pinfo->srcport, pinfo->destport); + col_add_fstr(pinfo->cinfo, COL_INFO, "Tetra-UNITDATA-REQ Done"); break; default: - col_add_fstr(pinfo->cinfo, COL_INFO, "%d > %d Unknown command: %d", - pinfo->srcport, pinfo->destport, type); + col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown command: %d", type); break; } @@ -584,7 +585,7 @@ void proto_register_tetra (void) { "RvSteR", "tetra.rvster", FT_UINT16, BASE_HEX, NULL, 0x0, "Receive Status Register", HFILL }}, { &hf_tetra_carriernumber, - { "Carrier Number", "tetra.carrier", FT_UINT16, BASE_HEX, NULL, 0x0, + { "Carrier Number", "tetra.carrier", FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }}, { &hf_tetra_rxchannel1, { "Channel 1", "tetra.rxchannel1", FT_UINT8, BASE_DEC, VALS(recvchanneltypenames), 0x0, diff --git a/asn1/tetra/tetra.asn b/asn1/tetra/tetra.asn index 6a4012c28f..0c149f3144 100644 --- a/asn1/tetra/tetra.asn +++ b/asn1/tetra/tetra.asn @@ -1,5 +1,5 @@ -- TETRA packet dissection --- Copyright (c) 2007 - 2012 Professional Mobile Communication Research Group, +-- Copyright (c) 2007 - 2013 Professional Mobile Communication Research Group, -- Beijing Institute of Technology, China -- @@ -292,7 +292,7 @@ BNCH ::= SEQUENCE extend-service Extended-Services-Broadcast }, la INTEGER(0..16383), - subscriber-class INTEGER(0..65535), + subscriber-class Subscriber-class, registriation INTEGER(0..1), de-registration INTEGER(0..1), priority-cell INTEGER(0..1), @@ -1697,7 +1697,7 @@ D-LOCATION-UPDATE-ACCEPT ::= SEQUENCE { ssi CHOICE{none NULL,ssi OCTET STRING(SIZE(3))}, address-extension CHOICE{none NULL,address-extension OCTET STRING(SIZE(3))}, - suscriber-class CHOICE{none NULL,suscriber-class INTEGER(0..32767)}, + subscriber-class CHOICE{none NULL,subscriber-class Subscriber-class}, energy-saving-mode CHOICE{none NULL,energy-saving-mode INTEGER(0..7)}, scch-info CHOICE{none NULL,scch-info INTEGER(0..16383)}, type3 CHOICE{ @@ -1736,6 +1736,8 @@ D-MM-STATUS ::= SEQUENCE status-downlink INTEGER(0..63) } +Subscriber-class ::= BIT STRING(SIZE(16)) + U-CMCE-PDU ::= CHOICE { u-Alert U-ALERT, diff --git a/asn1/tetra/tetra.cnf b/asn1/tetra/tetra.cnf index c40d9fb4c2..f301e93f6b 100644 --- a/asn1/tetra/tetra.cnf +++ b/asn1/tetra/tetra.cnf @@ -13,9 +13,6 @@ ExtendCarrier SPEECHMODE DATAMODE CALLMODE -MAC-DATA -FRAG6 -LengthIndicationMacData #.EXPORTS @@ -72,7 +69,7 @@ MAC-RESOURCE MAC-ACCESS BSCH BNCH - +MAC-DATA #.FN_BODY U-RELEASE |