From 5ef3c942717d1a5af9a80677c73be83d4c771b32 Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Mon, 30 Jan 2012 14:15:51 -0500 Subject: [PATCH] OPENZAP-177 --resolve Thanks to Abhishek Singh --- libs/freetdm/mod_freetdm/mod_freetdm.c | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/libs/freetdm/mod_freetdm/mod_freetdm.c b/libs/freetdm/mod_freetdm/mod_freetdm.c index cac80ea48a..7789446616 100755 --- a/libs/freetdm/mod_freetdm/mod_freetdm.c +++ b/libs/freetdm/mod_freetdm/mod_freetdm.c @@ -4236,6 +4236,42 @@ end: return SWITCH_STATUS_SUCCESS; } +FTDM_CLI_DECLARE(ftdm_cmd_alarms) +{ + ftdm_alarm_flag_t alarmbits = FTDM_ALARM_NONE; + uint32_t chan_id = 0; + ftdm_span_t *span; + + if (argc < 3) { + print_usage(stream, cli); + goto end; + } + + ftdm_span_find_by_name(argv[1], &span); + chan_id = atoi(argv[2]); + if (!span) { + stream->write_function(stream, "-ERR invalid span\n"); + } else if (chan_id) { + if(chan_id > ftdm_span_get_chan_count(span)) { + stream->write_function(stream, "-ERR invalid channel\n"); + } else { + ftdm_channel_t *chan = ftdm_span_get_channel(span, chan_id); + if (!chan) { + stream->write_function(stream, "-ERR channel not configured\n"); + } else { + ftdm_channel_get_alarms(chan, &alarmbits); + if (!strlen(ftdm_channel_get_last_error(chan))) { + stream->write_function(stream, "+OK No alarms\n"); + } else { + stream->write_function(stream, "-ERR %s on %s:%d\n", ftdm_channel_get_last_error(chan), argv[1], chan); + } + } + } + } +end: + return SWITCH_STATUS_SUCCESS; +} + FTDM_CLI_DECLARE(ftdm_cmd_sigstatus) { ftdm_span_t *span = NULL; @@ -4642,6 +4678,7 @@ static ftdm_cli_entry_t ftdm_cli_options[] = { "start", "", "", ftdm_cmd_start_stop }, { "stop", "", "", ftdm_cmd_start_stop }, { "reset", " []", "", ftdm_cmd_reset }, + { "alarms", " ", "", ftdm_cmd_alarms }, { "dump", " []", "", ftdm_cmd_dump }, { "sigstatus", "get|set [] []", "::[set:get", ftdm_cmd_sigstatus }, { "trace", " []", "", ftdm_cmd_trace },