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)
- switch (ton) {
+ switch ((ton >> 4) & 0x07) {
case PRI_TON_INTERNATIONAL:
- return "International Number";
+ return "International";
case PRI_TON_NATIONAL:
- return "National Number";
+ return "National";
case PRI_TON_NET_SPECIFIC:
- return "Network Specific Number";
+ return "Network Specific";
case PRI_TON_SUBSCRIBER:
- return "Subscriber Number";
+ return "Subscriber";
case PRI_TON_ABBREVIATED:
- return "Abbreviated number";
+ return "Abbreviated";
case PRI_TON_RESERVED:
- return "Reserved Number";
+ return "Reserved";
case PRI_TON_UNKNOWN:
default:
- return "Unknown Number Type";
+ break;
}
#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,
struct ast_channel *bc;
struct ast_data *data_bridged, *data_cdr, *data_flags, *data_zones;
struct ast_data *data_callerid, *enum_node, *data_softhangup;
+ char value_str[100];
if (!tree) {
return -1;
return -1;
}
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 */
if (chan->zone) {