Zaptel 1.4 now exposes FXO battery state as an alarm. However, Asterisk 1.4

does not know what to do with these alarms.  Only Asterisk 1.6 cares about it.
So, if we get an unknown alarm in chan_zap, don't generate confusing log messages
about it.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@104332 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.4
Russell Bryant 17 years ago
parent 5996d4e4bb
commit 37f0ad57a7

@ -461,6 +461,7 @@ static struct zt_pvt {
unsigned int ignoredtmf:1;
unsigned int immediate:1; /*!< Answer before getting digits? */
unsigned int inalarm:1;
unsigned int unknown_alarm:1;
unsigned int mate:1; /*!< flag to say its in MATE mode */
unsigned int outgoing:1;
unsigned int overlapdial:1;
@ -3832,11 +3833,22 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast)
#endif
p->inalarm = 1;
res = get_alarms(p);
ast_log(LOG_WARNING, "Detected alarm on channel %d: %s\n", p->channel, alarm2str(res));
manager_event(EVENT_FLAG_SYSTEM, "Alarm",
"Alarm: %s\r\n"
"Channel: %d\r\n",
alarm2str(res), p->channel);
do {
const char *alarm_str = alarm2str(res);
/* hack alert! Zaptel 1.4 now exposes FXO battery as an alarm, but asterisk 1.4
* doesn't know what to do with it. Don't confuse users with log messages. */
if (!strcasecmp(alarm_str, "No Alarm") || !strcasecmp(alarm_str, "Unknown Alarm")) {
p->unknown_alarm = 1;
break;
}
ast_log(LOG_WARNING, "Detected alarm on channel %d: %s\n", p->channel, alarm_str);
manager_event(EVENT_FLAG_SYSTEM, "Alarm",
"Alarm: %s\r\n"
"Channel: %d\r\n",
alarm_str, p->channel);
} while (0);
#ifdef HAVE_LIBPRI
if (!p->pri || !p->pri->pri || pri_get_timer(p->pri->pri, PRI_TIMER_T309) < 0) {
/* fall through intentionally */
@ -4167,9 +4179,13 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast)
if (p->bearer)
p->bearer->inalarm = 0;
#endif
ast_log(LOG_NOTICE, "Alarm cleared on channel %d\n", p->channel);
manager_event(EVENT_FLAG_SYSTEM, "AlarmClear",
"Channel: %d\r\n", p->channel);
if (!p->unknown_alarm) {
ast_log(LOG_NOTICE, "Alarm cleared on channel %d\n", p->channel);
manager_event(EVENT_FLAG_SYSTEM, "AlarmClear",
"Channel: %d\r\n", p->channel);
} else {
p->unknown_alarm = 0;
}
break;
case ZT_EVENT_WINKFLASH:
if (p->inalarm) break;
@ -6675,18 +6691,33 @@ static int handle_init_event(struct zt_pvt *i, int event)
break;
case ZT_EVENT_NOALARM:
i->inalarm = 0;
ast_log(LOG_NOTICE, "Alarm cleared on channel %d\n", i->channel);
manager_event(EVENT_FLAG_SYSTEM, "AlarmClear",
"Channel: %d\r\n", i->channel);
if (!i->unknown_alarm) {
ast_log(LOG_NOTICE, "Alarm cleared on channel %d\n", i->channel);
manager_event(EVENT_FLAG_SYSTEM, "AlarmClear",
"Channel: %d\r\n", i->channel);
} else {
i->unknown_alarm = 0;
}
break;
case ZT_EVENT_ALARM:
i->inalarm = 1;
res = get_alarms(i);
ast_log(LOG_WARNING, "Detected alarm on channel %d: %s\n", i->channel, alarm2str(res));
manager_event(EVENT_FLAG_SYSTEM, "Alarm",
"Alarm: %s\r\n"
"Channel: %d\r\n",
alarm2str(res), i->channel);
do {
const char *alarm_str = alarm2str(res);
/* hack alert! Zaptel 1.4 now exposes FXO battery as an alarm, but asterisk 1.4
* doesn't know what to do with it. Don't confuse users with log messages. */
if (!strcasecmp(alarm_str, "No Alarm") || !strcasecmp(alarm_str, "Unknown Alarm")) {
i->unknown_alarm = 1;
break;
}
ast_log(LOG_WARNING, "Detected alarm on channel %d: %s\n", i->channel, alarm_str);
manager_event(EVENT_FLAG_SYSTEM, "Alarm",
"Alarm: %s\r\n"
"Channel: %d\r\n",
alarm_str, i->channel);
} while (0);
/* fall thru intentionally */
case ZT_EVENT_ONHOOK:
if (i->radio)

Loading…
Cancel
Save