aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-06-20 07:59:20 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-06-20 07:59:20 +0000
commit4cc3cae627769c9f1780b27a3e1d79e9dec0c25e (patch)
treeca8ec62f3e51654e64dea1b1dc3928cbeae32a19 /epan
parent3e7ea12e9607103cc191a288b7fca158bd0f1f41 (diff)
- In INTERNAL HANDOVER COMMAND Circuit Identity Code is C(Coded optional in WS)
- be_speech_codec ( 3.2.2.104 Speech Codec) did not cover all codecs. svn path=/trunk/; revision=43401
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-gsm_a_bssmap.c38
1 files changed, 36 insertions, 2 deletions
diff --git a/epan/dissectors/packet-gsm_a_bssmap.c b/epan/dissectors/packet-gsm_a_bssmap.c
index 6dadd96b76..6acc516c7d 100644
--- a/epan/dissectors/packet-gsm_a_bssmap.c
+++ b/epan/dissectors/packet-gsm_a_bssmap.c
@@ -4051,6 +4051,32 @@ be_speech_codec(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
subtree = proto_item_add_subtree(item, ett_codec_lst);
codec = tvb_get_guint8(tvb,curr_offset)&0x0f;
switch (codec) {
+ case 0:
+ /* GSM_FR is coded "0000" */
+ /* fall through */
+ case 1:
+ /* GSM_HR is coded "0001" */
+ /* fall through */
+ case 2:
+ /* GSM_EFR is coded "0010" */
+ /* fall through */
+ /* FI indicates Full IP */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_fi, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* PI indicates PCMoIP */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_pi, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* PT indicates PCMoTDM */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_pt, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* TF indicates TFO support */
+ proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ /* Codec Type */
+ proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(item, " - %s",
+ val_to_str_const(tvb_get_guint8(tvb, curr_offset) & 0x0f,
+ bssap_speech_codec_values,
+ "Unknown"));
+ curr_offset++;
+ consumed++;
+ break;
case 3:
/* fall through */
case 4:
@@ -4070,7 +4096,11 @@ be_speech_codec(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf2, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* Codec Type */
proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
- curr_offset++;
+ proto_item_append_text(item, " - %s",
+ val_to_str_const(tvb_get_guint8(tvb, curr_offset) & 0x0f,
+ bssap_speech_codec_values,
+ "Unknown"));
+ curr_offset++;
consumed++;
proto_tree_add_text(subtree, tvb, curr_offset, 2, "S0 - S15");
curr_offset+=2;
@@ -4095,6 +4125,10 @@ be_speech_codec(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32
proto_tree_add_item(subtree, hf_gsm_a_bssmap_tf2, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
/* Codec Type */
proto_tree_add_item(subtree, hf_gsm_a_bssap_speech_codec, tvb, curr_offset, 1, ENC_BIG_ENDIAN);
+ proto_item_append_text(item, " - %s",
+ val_to_str_const(tvb_get_guint8(tvb, curr_offset) & 0x0f,
+ bssap_speech_codec_values,
+ "Unknown"));
curr_offset++;
consumed++;
proto_tree_add_text(subtree, tvb, curr_offset, 1, "S0 - S7");
@@ -6595,7 +6629,7 @@ bssmap_int_ho_cmd(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint
/* Speech Codec (MSC Chosen) 3.2.2.nn MSC-BSS M (note 1) 3-n */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_SPEECH_CODEC].value, GSM_A_PDU_TYPE_BSSMAP, BE_SPEECH_CODEC, "(Chosen)");
/* Circuit Identity Code 3.2.2.2 MSC-BSS C (note 2) 3 */
- ELEM_MAND_TV(gsm_bssmap_elem_strings[BE_CIC].value, GSM_A_PDU_TYPE_BSSMAP, BE_CIC, NULL);
+ ELEM_OPT_TV(gsm_bssmap_elem_strings[BE_CIC].value, GSM_A_PDU_TYPE_BSSMAP, BE_CIC, NULL);
/* AoIP Transport Layer Address (MGW) 3.2.2.102 MSC-BSS C (note 2) 10-22 */
ELEM_OPT_TLV(gsm_bssmap_elem_strings[BE_AOIP_TRANS_LAY_ADD].value, GSM_A_PDU_TYPE_BSSMAP, BE_AOIP_TRANS_LAY_ADD, NULL);
/* Call Identifier 3.2.2.105 MSC-BSS C (note 4) 5 */