Generate a correct AstData string for ast_callerid.cid_ton

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@274782 65c4cc65-6c06-0410-ace0-fbb531ad65f3
certified/1.8.6
Richard Mudgett 15 years ago
parent 25a3c313b5
commit 816f26c16c

@ -283,28 +283,52 @@ static void channel_data_add_flags(struct ast_data *tree,
ast_data_add_bool(tree, "DISABLE_WORKAROUNDS", ast_test_flag(chan, AST_FLAG_DISABLE_WORKAROUNDS)); ast_data_add_bool(tree, "DISABLE_WORKAROUNDS", ast_test_flag(chan, AST_FLAG_DISABLE_WORKAROUNDS));
} }
static const char *callerid_ton2str(int ton) static const char *party_number_ton2str(int ton)
{ {
#if defined(HAVE_PRI) #if defined(HAVE_PRI)
switch (ton) { switch ((ton >> 4) & 0x07) {
case PRI_TON_INTERNATIONAL: case PRI_TON_INTERNATIONAL:
return "International Number"; return "International";
case PRI_TON_NATIONAL: case PRI_TON_NATIONAL:
return "National Number"; return "National";
case PRI_TON_NET_SPECIFIC: case PRI_TON_NET_SPECIFIC:
return "Network Specific Number"; return "Network Specific";
case PRI_TON_SUBSCRIBER: case PRI_TON_SUBSCRIBER:
return "Subscriber Number"; return "Subscriber";
case PRI_TON_ABBREVIATED: case PRI_TON_ABBREVIATED:
return "Abbreviated number"; return "Abbreviated";
case PRI_TON_RESERVED: case PRI_TON_RESERVED:
return "Reserved Number"; return "Reserved";
case PRI_TON_UNKNOWN: case PRI_TON_UNKNOWN:
default: default:
return "Unknown Number Type"; break;
} }
#endif /* defined(HAVE_PRI) */ #endif /* defined(HAVE_PRI) */
return ""; return "Unknown";
}
static const char *party_number_plan2str(int plan)
{
#if defined(HAVE_PRI)
switch (plan & 0x0F) {
default:
case PRI_NPI_UNKNOWN:
break;
case PRI_NPI_E163_E164:
return "Public";
case PRI_NPI_X121:
return "Data";
case PRI_NPI_F69:
return "Telex";
case PRI_NPI_NATIONAL:
return "National Standard";
case PRI_NPI_PRIVATE:
return "Private";
case PRI_NPI_RESERVED:
return "Reserved";
}
#endif /* defined(HAVE_PRI) */
return "Unknown";
} }
int ast_channel_data_add_structure(struct ast_data *tree, int ast_channel_data_add_structure(struct ast_data *tree,
@ -313,6 +337,7 @@ int ast_channel_data_add_structure(struct ast_data *tree,
struct ast_channel *bc; struct ast_channel *bc;
struct ast_data *data_bridged, *data_cdr, *data_flags, *data_zones; struct ast_data *data_bridged, *data_cdr, *data_flags, *data_zones;
struct ast_data *data_callerid, *enum_node, *data_softhangup; struct ast_data *data_callerid, *enum_node, *data_softhangup;
char value_str[100];
if (!tree) { if (!tree) {
return -1; return -1;
@ -404,7 +429,10 @@ int ast_channel_data_add_structure(struct ast_data *tree,
return -1; return -1;
} }
ast_data_add_int(enum_node, "value", chan->cid.cid_ton); ast_data_add_int(enum_node, "value", chan->cid.cid_ton);
ast_data_add_str(enum_node, "text", callerid_ton2str(chan->cid.cid_ton)); snprintf(value_str, sizeof(value_str), "TON: %s/Plan: %s",
party_number_ton2str(chan->cid.cid_ton),
party_number_plan2str(chan->cid.cid_ton));
ast_data_add_str(enum_node, "text", value_str);
/* tone zone */ /* tone zone */
if (chan->zone) { if (chan->zone) {

Loading…
Cancel
Save