Use tvb_bcd_dig_to_ep_str().

svn path=/trunk/; revision=39929
This commit is contained in:
Anders Broman 2011-11-18 07:01:10 +00:00
parent d7bb2160f6
commit 1b7b2dd067
2 changed files with 9 additions and 85 deletions

View File

@ -604,44 +604,6 @@ static dgt_set_t Dgt1_9_bcd = {
'0','1','2','3','4','5','6','7','8','9','?','?','?','?','?'
}
};
/* Assumes the rest of the tvb contains the digits to be turned into a string
*/
static const char*
unpack_digits2(tvbuff_t *tvb, int offset,dgt_set_t *dgt){
int length;
guint8 octet;
int i=0;
char *digit_str;
length = tvb_length(tvb);
if (length < offset)
return "";
digit_str = ep_alloc((length - offset)*2+1);
while ( offset < length ){
octet = tvb_get_guint8(tvb,offset);
digit_str[i] = dgt->out[octet & 0x0f];
i++;
/*
* unpack second value in byte
*/
octet = octet >> 4;
if (octet == 0x0f) /* odd number bytes - hit filler */
break;
digit_str[i] = dgt->out[octet & 0x0f];
i++;
offset++;
}
digit_str[i]= '\0';
return digit_str;
}
/* Type of Digits (octet 1, bits A-H) */
@ -715,7 +677,7 @@ dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
subtree = proto_item_add_subtree(actx->created_item, ett_mintype);
digit_str = unpack_digits2(tvb, offset, &Dgt1_9_bcd);
digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt1_9_bcd, FALSE);
proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
proto_item_append_text(actx->created_item, " - %s", digit_str);
}
@ -760,7 +722,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
if(octet_len == 0)
return;
offset++;
digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd);
digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt_tbcd, FALSE);
proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
proto_item_append_text(actx->created_item, " - %s", digit_str);
break;
@ -798,7 +760,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
switch ((octet&0xf)){
case 1:
/* BCD Coding */
digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd);
digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt_tbcd, FALSE);
proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
proto_item_append_text(actx->created_item, " - %s", digit_str);
break;

View File

@ -1392,44 +1392,6 @@ static dgt_set_t Dgt1_9_bcd = {
'0','1','2','3','4','5','6','7','8','9','?','?','?','?','?'
}
};
/* Assumes the rest of the tvb contains the digits to be turned into a string
*/
static const char*
unpack_digits2(tvbuff_t *tvb, int offset,dgt_set_t *dgt){
int length;
guint8 octet;
int i=0;
char *digit_str;
length = tvb_length(tvb);
if (length < offset)
return "";
digit_str = ep_alloc((length - offset)*2+1);
while ( offset < length ){
octet = tvb_get_guint8(tvb,offset);
digit_str[i] = dgt->out[octet & 0x0f];
i++;
/*
* unpack second value in byte
*/
octet = octet >> 4;
if (octet == 0x0f) /* odd number bytes - hit filler */
break;
digit_str[i] = dgt->out[octet & 0x0f];
i++;
offset++;
}
digit_str[i]= '\0';
return digit_str;
}
/* Type of Digits (octet 1, bits A-H) */
@ -1503,7 +1465,7 @@ dissect_ansi_map_min_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
subtree = proto_item_add_subtree(actx->created_item, ett_mintype);
digit_str = unpack_digits2(tvb, offset, &Dgt1_9_bcd);
digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt1_9_bcd, FALSE);
proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
proto_item_append_text(actx->created_item, " - %s", digit_str);
}
@ -1548,7 +1510,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
if(octet_len == 0)
return;
offset++;
digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd);
digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt_tbcd, FALSE);
proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
proto_item_append_text(actx->created_item, " - %s", digit_str);
break;
@ -1586,7 +1548,7 @@ dissect_ansi_map_digits_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *
switch ((octet&0xf)){
case 1:
/* BCD Coding */
digit_str = unpack_digits2(tvb, offset, &Dgt_tbcd);
digit_str = tvb_bcd_dig_to_ep_str(tvb, offset, tvb_length_remaining(tvb,offset), &Dgt_tbcd, FALSE);
proto_tree_add_string(subtree, hf_ansi_map_bcd_digits, tvb, offset, -1, digit_str);
proto_item_append_text(actx->created_item, " - %s", digit_str);
break;
@ -15536,7 +15498,7 @@ dissect_ansi_map_ReturnData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
/*--- End of included file: packet-ansi_map-fn.c ---*/
#line 3658 "../../asn1/ansi_map/packet-ansi_map-template.c"
#line 3620 "../../asn1/ansi_map/packet-ansi_map-template.c"
/*
* 6.5.2.dk N.S0013-0 v 1.0,X.S0004-550-E v1.0 2.301
@ -19388,7 +19350,7 @@ void proto_register_ansi_map(void) {
NULL, HFILL }},
/*--- End of included file: packet-ansi_map-hfarr.c ---*/
#line 5317 "../../asn1/ansi_map/packet-ansi_map-template.c"
#line 5279 "../../asn1/ansi_map/packet-ansi_map-template.c"
};
/* List of subtrees */
@ -19649,7 +19611,7 @@ void proto_register_ansi_map(void) {
&ett_ansi_map_ReturnData,
/*--- End of included file: packet-ansi_map-ettarr.c ---*/
#line 5350 "../../asn1/ansi_map/packet-ansi_map-template.c"
#line 5312 "../../asn1/ansi_map/packet-ansi_map-template.c"
};
static enum_val_t ansi_map_response_matching_type_values[] = {