diff options
author | Anders Broman <anders.broman@ericsson.com> | 2012-06-20 07:59:20 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2012-06-20 07:59:20 +0000 |
commit | 4cc3cae627769c9f1780b27a3e1d79e9dec0c25e (patch) | |
tree | ca8ec62f3e51654e64dea1b1dc3928cbeae32a19 /epan/dissectors/packet-gsm_a_bssmap.c | |
parent | 3e7ea12e9607103cc191a288b7fca158bd0f1f41 (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/dissectors/packet-gsm_a_bssmap.c')
-rw-r--r-- | epan/dissectors/packet-gsm_a_bssmap.c | 38 |
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 */ |