aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2013-05-24 20:55:42 +0000
committerPascal Quantin <pascal.quantin@gmail.com>2013-05-24 20:55:42 +0000
commitec1ebf5dd8967082016e28d4a579e996045bc3b6 (patch)
tree44fce9430b97f120893b791ff43ad3d6aeaf92f3 /asn1
parenta686f1713a1eae7db5ac242278443e4d74aa9fcb (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.c53
-rw-r--r--asn1/tetra/tetra.asn8
-rw-r--r--asn1/tetra/tetra.cnf5
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