Use value_string_ext fcns to access various value_string arrays;

Also: Fix a typo  in packet-zbee.h in the value for #define ZBEE_MFG_CODE_STG


svn path=/trunk/; revision=34746
This commit is contained in:
Bill Meier 2010-11-01 18:33:30 +00:00
parent c256942255
commit 5227ad988a
2 changed files with 29 additions and 23 deletions

View file

@ -176,6 +176,7 @@ static const value_string zbee_zcl_cmd_names[] = {
{ 0, NULL } { 0, NULL }
}; };
static value_string_ext zbee_zcl_cmd_names_ext = VALUE_STRING_EXT_INIT(zbee_zcl_cmd_names);
/* ZCL Cluster-Specific Command Names */ /* ZCL Cluster-Specific Command Names */
static const value_string zbee_zcl_cs_cmd_names[] = { static const value_string zbee_zcl_cs_cmd_names[] = {
@ -307,6 +308,7 @@ static const value_string zbee_mfr_code_names[] = {
{ ZBEE_MFG_CODE_4_NOKS, ZBEE_MFG_4_NOKS }, { ZBEE_MFG_CODE_4_NOKS, ZBEE_MFG_4_NOKS },
{ 0, NULL } { 0, NULL }
}; };
static value_string_ext zbee_mfr_code_names_ext = VALUE_STRING_EXT_INIT(zbee_mfr_code_names);
/* ZCL Attribute Status Names */ /* ZCL Attribute Status Names */
static const value_string zbee_zcl_status_names[] = { static const value_string zbee_zcl_status_names[] = {
@ -340,6 +342,7 @@ static const value_string zbee_zcl_status_names[] = {
{ 0, NULL } { 0, NULL }
}; };
static value_string_ext zbee_zcl_status_names_ext = VALUE_STRING_EXT_INIT(zbee_zcl_status_names);
/* ZCL Attribute Data Names */ /* ZCL Attribute Data Names */
static const value_string zbee_zcl_data_type_names[] = { static const value_string zbee_zcl_data_type_names[] = {
@ -415,6 +418,7 @@ static const value_string zbee_zcl_data_type_names[] = {
{ 0, NULL } { 0, NULL }
}; };
static value_string_ext zbee_zcl_data_type_names_ext = VALUE_STRING_EXT_INIT(zbee_zcl_data_type_names);
/* ZCL Attribute Short Data Names */ /* ZCL Attribute Short Data Names */
static const value_string zbee_zcl_short_data_type_names[] = { static const value_string zbee_zcl_short_data_type_names[] = {
@ -490,6 +494,7 @@ static const value_string zbee_zcl_short_data_type_names[] = {
{ 0, NULL } { 0, NULL }
}; };
static value_string_ext zbee_zcl_short_data_type_names_ext = VALUE_STRING_EXT_INIT(zbee_zcl_short_data_type_names);
/* ZCL Attribute English Weekday Names */ /* ZCL Attribute English Weekday Names */
static const value_string zbee_zcl_wd_names[] = { static const value_string zbee_zcl_wd_names[] = {
@ -503,6 +508,7 @@ static const value_string zbee_zcl_wd_names[] = {
{ 0, NULL } { 0, NULL }
}; };
static value_string_ext zbee_zcl_wd_names_ext = VALUE_STRING_EXT_INIT(zbee_zcl_wd_names);
/* Attribute Direction Names */ /* Attribute Direction Names */
static const value_string zbee_zcl_dir_names[] = { static const value_string zbee_zcl_dir_names[] = {
@ -572,7 +578,7 @@ static void dissect_zbee_zcl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
/* Create the subtree */ /* Create the subtree */
ti = proto_tree_add_text(zcl_tree, tvb, offset, sizeof(guint8), ti = proto_tree_add_text(zcl_tree, tvb, offset, sizeof(guint8),
"Frame Control Field: %s (0x%02x)", "Frame Control Field: %s (0x%02x)",
val_to_str(packet.frame_type, zbee_zcl_frame_types, "Unknown"), fcf); val_to_str_const(packet.frame_type, zbee_zcl_frame_types, "Unknown"), fcf);
sub_tree = proto_item_add_subtree(ti, ett_zbee_zcl_fcf); sub_tree = proto_item_add_subtree(ti, ett_zbee_zcl_fcf);
/* Add the frame type */ /* Add the frame type */
@ -600,7 +606,7 @@ static void dissect_zbee_zcl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
packet.mfr_code); packet.mfr_code);
proto_item_append_text(proto_root, ", Mfr: %s (0x%04x)", proto_item_append_text(proto_root, ", Mfr: %s (0x%04x)",
val_to_str(packet.mfr_code, zbee_mfr_code_names, "Unknown"), val_to_str_ext_const(packet.mfr_code, &zbee_mfr_code_names_ext, "Unknown"),
packet.mfr_code); packet.mfr_code);
} }
offset += sizeof(guint16); offset += sizeof(guint16);
@ -622,13 +628,13 @@ static void dissect_zbee_zcl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree
if ( packet.frame_type == ZBEE_ZCL_FCF_PROFILE_WIDE ) { if ( packet.frame_type == ZBEE_ZCL_FCF_PROFILE_WIDE ) {
if ( tree ) { if ( tree ) {
proto_item_append_text(proto_root, ", Command: %s, Seq: %u", proto_item_append_text(proto_root, ", Command: %s, Seq: %u",
val_to_str(packet.cmd_id, zbee_zcl_cmd_names, "Unknown Command"), val_to_str_ext_const(packet.cmd_id, &zbee_zcl_cmd_names_ext, "Unknown Command"),
packet.tran_seqno); packet.tran_seqno);
} }
if ( check_col(pinfo->cinfo, COL_INFO) ) { if ( check_col(pinfo->cinfo, COL_INFO) ) {
col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u", col_append_fstr(pinfo->cinfo, COL_INFO, "%s, Seq: %u",
val_to_str(packet.cmd_id, zbee_zcl_cmd_names, "Unknown Command"), val_to_str_ext_const(packet.cmd_id, &zbee_zcl_cmd_names_ext, "Unknown Command"),
packet.tran_seqno); packet.tran_seqno);
} }
@ -1323,7 +1329,7 @@ static void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset
attr_uint = tvb_get_guint8(tvb, *offset); attr_uint = tvb_get_guint8(tvb, *offset);
proto_item_append_text(tree, ", %s: %u", proto_item_append_text(tree, ", %s: %u",
val_to_str(data_type, zbee_zcl_short_data_type_names, "Reserved"), attr_uint); val_to_str_ext_const(data_type, &zbee_zcl_short_data_type_names_ext, "Reserved"), attr_uint);
proto_tree_add_uint(tree, hf_zbee_zcl_attr_uint8, tvb, *offset, sizeof(guint8), proto_tree_add_uint(tree, hf_zbee_zcl_attr_uint8, tvb, *offset, sizeof(guint8),
attr_uint); attr_uint);
@ -1336,7 +1342,7 @@ static void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset
attr_int = (gint8)tvb_get_guint8(tvb, *offset); attr_int = (gint8)tvb_get_guint8(tvb, *offset);
proto_item_append_text(tree, ", %s: %-d", proto_item_append_text(tree, ", %s: %-d",
val_to_str(data_type, zbee_zcl_short_data_type_names, "Reserved"), attr_int); val_to_str_ext_const(data_type, &zbee_zcl_short_data_type_names_ext, "Reserved"), attr_int);
proto_tree_add_int(tree, hf_zbee_zcl_attr_int8, tvb, *offset, sizeof(gint8), proto_tree_add_int(tree, hf_zbee_zcl_attr_int8, tvb, *offset, sizeof(gint8),
(gint)attr_int); (gint)attr_int);
@ -1349,7 +1355,7 @@ static void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset
attr_uint = tvb_get_guint8(tvb, *offset); attr_uint = tvb_get_guint8(tvb, *offset);
proto_item_append_text(tree, ", %s: 0x%02x", proto_item_append_text(tree, ", %s: 0x%02x",
val_to_str(data_type, zbee_zcl_short_data_type_names, "Reserved"), attr_uint); val_to_str_ext_const(data_type, &zbee_zcl_short_data_type_names_ext, "Reserved"), attr_uint);
proto_tree_add_item(tree, hf_zbee_zcl_attr_boolean, tvb, *offset, 1, FALSE); proto_tree_add_item(tree, hf_zbee_zcl_attr_boolean, tvb, *offset, 1, FALSE);
@ -1368,7 +1374,7 @@ static void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset
attr_uint = tvb_get_letohs(tvb, *offset); attr_uint = tvb_get_letohs(tvb, *offset);
proto_item_append_text(tree, ", %s: %u", proto_item_append_text(tree, ", %s: %u",
val_to_str(data_type, zbee_zcl_short_data_type_names, "Reserved"), attr_uint); val_to_str_ext_const(data_type, &zbee_zcl_short_data_type_names_ext, "Reserved"), attr_uint);
proto_tree_add_uint(tree, hf_zbee_zcl_attr_uint16, tvb, *offset, sizeof(guint16), proto_tree_add_uint(tree, hf_zbee_zcl_attr_uint16, tvb, *offset, sizeof(guint16),
attr_uint); attr_uint);
@ -1382,7 +1388,7 @@ static void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset
attr_int = (gint16)tvb_get_letohs(tvb, *offset); attr_int = (gint16)tvb_get_letohs(tvb, *offset);
proto_item_append_text(tree, ", %s: %-d", proto_item_append_text(tree, ", %s: %-d",
val_to_str(data_type, zbee_zcl_short_data_type_names, "Reserved"), attr_int); val_to_str_ext_const(data_type, &zbee_zcl_short_data_type_names_ext, "Reserved"), attr_int);
proto_tree_add_int(tree, hf_zbee_zcl_attr_int16, tvb, *offset, sizeof(gint16), proto_tree_add_int(tree, hf_zbee_zcl_attr_int16, tvb, *offset, sizeof(gint16),
attr_int); attr_int);
@ -1401,7 +1407,7 @@ static void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset
attr_uint = tvb_get_letoh24(tvb, *offset); attr_uint = tvb_get_letoh24(tvb, *offset);
proto_item_append_text(tree, ", %s: %u", proto_item_append_text(tree, ", %s: %u",
val_to_str(data_type, zbee_zcl_short_data_type_names, "Reserved"), attr_uint); val_to_str_ext_const(data_type, &zbee_zcl_short_data_type_names_ext, "Reserved"), attr_uint);
proto_tree_add_uint(tree, hf_zbee_zcl_attr_uint24, tvb, *offset, 3, proto_tree_add_uint(tree, hf_zbee_zcl_attr_uint24, tvb, *offset, 3,
attr_uint); attr_uint);
@ -1417,7 +1423,7 @@ static void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset
if (attr_int & INT24_SIGN_BITS) attr_int |= INT24_SIGN_BITS; if (attr_int & INT24_SIGN_BITS) attr_int |= INT24_SIGN_BITS;
proto_item_append_text(tree, ", %s: %-d", proto_item_append_text(tree, ", %s: %-d",
val_to_str(data_type, zbee_zcl_short_data_type_names, "Reserved"), attr_int); val_to_str_ext_const(data_type, &zbee_zcl_short_data_type_names_ext, "Reserved"), attr_int);
proto_tree_add_int(tree, hf_zbee_zcl_attr_int24, tvb, *offset, 3, proto_tree_add_int(tree, hf_zbee_zcl_attr_int24, tvb, *offset, 3,
attr_int); attr_int);
@ -1436,7 +1442,7 @@ static void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset
attr_uint = tvb_get_letohl(tvb, *offset); attr_uint = tvb_get_letohl(tvb, *offset);
proto_item_append_text(tree, ", %s: %u", proto_item_append_text(tree, ", %s: %u",
val_to_str(data_type, zbee_zcl_short_data_type_names, "Reserved"), attr_uint); val_to_str_ext_const(data_type, &zbee_zcl_short_data_type_names_ext, "Reserved"), attr_uint);
proto_tree_add_uint(tree, hf_zbee_zcl_attr_uint32, tvb, *offset, sizeof(guint), proto_tree_add_uint(tree, hf_zbee_zcl_attr_uint32, tvb, *offset, sizeof(guint),
attr_uint); attr_uint);
@ -1450,7 +1456,7 @@ static void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset
attr_int = (gint)tvb_get_letohl(tvb, *offset); attr_int = (gint)tvb_get_letohl(tvb, *offset);
proto_item_append_text(tree, ", %s: %-d", proto_item_append_text(tree, ", %s: %-d",
val_to_str(data_type, zbee_zcl_short_data_type_names, "Reserved"), attr_int); val_to_str_ext_const(data_type, &zbee_zcl_short_data_type_names_ext, "Reserved"), attr_int);
proto_tree_add_int(tree, hf_zbee_zcl_attr_int32, tvb, *offset, sizeof(gint), proto_tree_add_int(tree, hf_zbee_zcl_attr_int32, tvb, *offset, sizeof(gint),
attr_int); attr_int);
@ -1520,7 +1526,7 @@ static void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset
proto_item_append_text(tree, ", %s: %g", proto_item_append_text(tree, ", %s: %g",
val_to_str(data_type, zbee_zcl_short_data_type_names, "Reserved"), attr_float); val_to_str_ext_const(data_type, &zbee_zcl_short_data_type_names_ext, "Reserved"), attr_float);
proto_tree_add_item(tree, hf_zbee_zcl_attr_float, tvb, *offset, 4, TRUE); proto_tree_add_item(tree, hf_zbee_zcl_attr_float, tvb, *offset, 4, TRUE);
@ -1627,7 +1633,7 @@ static void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset
proto_item_append_text(tree, ", Date: %u/%u/%u %s", proto_item_append_text(tree, ", Date: %u/%u/%u %s",
attr_uint8[0]+1900, attr_uint8[1], attr_uint8[2], attr_uint8[0]+1900, attr_uint8[1], attr_uint8[2],
val_to_str(attr_uint8[3], zbee_zcl_wd_names, "Invalid Weekday") ); val_to_str_ext_const(attr_uint8[3], &zbee_zcl_wd_names_ext, "Invalid Weekday") );
break; break;
case ZBEE_ZCL_UTC: case ZBEE_ZCL_UTC:
@ -1637,7 +1643,7 @@ static void dissect_zcl_attr_data(tvbuff_t *tvb, proto_tree *tree, guint *offset
attr_time.nsecs = 0; attr_time.nsecs = 0;
proto_item_append_text(tree, ", %s", proto_item_append_text(tree, ", %s",
val_to_str(data_type, zbee_zcl_short_data_type_names, "Reserved") ); val_to_str_ext_const(data_type, &zbee_zcl_short_data_type_names_ext, "Reserved") );
proto_tree_add_time(tree, hf_zbee_zcl_attr_utc, tvb, *offset, sizeof(guint), proto_tree_add_time(tree, hf_zbee_zcl_attr_utc, tvb, *offset, sizeof(guint),
&attr_time); &attr_time);
@ -1890,15 +1896,15 @@ void proto_register_zbee_zcl(void)
ZBEE_ZCL_FCF_DISABLE_DEFAULT_RESP, NULL, HFILL }}, ZBEE_ZCL_FCF_DISABLE_DEFAULT_RESP, NULL, HFILL }},
{ &hf_zbee_zcl_mfr_code, { &hf_zbee_zcl_mfr_code,
{ "Manufacturer Code", "zbee.zcl.cmd.mc", FT_UINT16, BASE_HEX, { "Manufacturer Code", "zbee.zcl.cmd.mc", FT_UINT16, BASE_HEX|BASE_EXT_STRING,
VALS(zbee_mfr_code_names), 0x0, "Assigned manufacturer code.", HFILL }}, &zbee_mfr_code_names_ext, 0x0, "Assigned manufacturer code.", HFILL }},
{ &hf_zbee_zcl_tran_seqno, { &hf_zbee_zcl_tran_seqno,
{ "Sequence Number", "zbee.zcl.cmd.tsn", FT_UINT8, BASE_DEC, NULL, 0x0, { "Sequence Number", "zbee.zcl.cmd.tsn", FT_UINT8, BASE_DEC, NULL, 0x0,
NULL, HFILL }}, NULL, HFILL }},
{ &hf_zbee_zcl_cmd_id, { &hf_zbee_zcl_cmd_id,
{ "Command", "zbee.zcl.cmd.id", FT_UINT8, BASE_HEX, VALS(zbee_zcl_cmd_names), { "Command", "zbee.zcl.cmd.id", FT_UINT8, BASE_HEX|BASE_EXT_STRING, &zbee_zcl_cmd_names_ext,
0x0, NULL, HFILL }}, 0x0, NULL, HFILL }},
{ &hf_zbee_zcl_cs_cmd_id, { &hf_zbee_zcl_cs_cmd_id,
@ -1910,8 +1916,8 @@ void proto_register_zbee_zcl(void)
NULL, HFILL }}, NULL, HFILL }},
{ &hf_zbee_zcl_attr_data_type, { &hf_zbee_zcl_attr_data_type,
{ "Data Type", "zbee.zcl.attr.data.type", FT_UINT8, BASE_HEX, { "Data Type", "zbee.zcl.attr.data.type", FT_UINT8, BASE_HEX|BASE_EXT_STRING,
VALS(zbee_zcl_data_type_names), 0x0, NULL, HFILL }}, &zbee_zcl_data_type_names_ext, 0x0, NULL, HFILL }},
{ &hf_zbee_zcl_attr_boolean, { &hf_zbee_zcl_attr_boolean,
{ "Boolean", "zbee.zcl.attr.boolean", FT_BOOLEAN, 8, TFS(&tfs_true_false), 0xff, { "Boolean", "zbee.zcl.attr.boolean", FT_BOOLEAN, 8, TFS(&tfs_true_false), 0xff,
@ -2017,7 +2023,7 @@ void proto_register_zbee_zcl(void)
{ "UTC", "zbee.zcl.attr.utc", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }}, { "UTC", "zbee.zcl.attr.utc", FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }},
{ &hf_zbee_zcl_attr_status, { &hf_zbee_zcl_attr_status,
{ "Status", "zbee.zcl.attr.status", FT_UINT8, BASE_HEX, VALS(zbee_zcl_status_names), { "Status", "zbee.zcl.attr.status", FT_UINT8, BASE_HEX|BASE_EXT_STRING, &zbee_zcl_status_names_ext,
0x0, NULL, HFILL }}, 0x0, NULL, HFILL }},
{ &hf_zbee_zcl_attr_dir, { &hf_zbee_zcl_attr_dir,

View file

@ -348,7 +348,7 @@
#define ZBEE_MFG_CODE_LUXOFT 0x100c #define ZBEE_MFG_CODE_LUXOFT 0x100c
#define ZBEE_MFG_CODE_KORWIN 0x100d #define ZBEE_MFG_CODE_KORWIN 0x100d
#define ZBEE_MFG_CODE_1_RF 0x100e #define ZBEE_MFG_CODE_1_RF 0x100e
#define ZBEE_MFG_CODE_STG 0x101f #define ZBEE_MFG_CODE_STG 0x100f
#define ZBEE_MFG_CODE_TELEGESIS 0x1010 #define ZBEE_MFG_CODE_TELEGESIS 0x1010
#define ZBEE_MFG_CODE_VISIONIC 0x1011 #define ZBEE_MFG_CODE_VISIONIC 0x1011