mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-10-30 23:24:18 +00:00
process alarms in the core
git-svn-id: http://svn.openzap.org/svn/openzap/branches/sangoma_boost@1055 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
1 parent
66bc2e43c8
commit
617020ea0c
9 files changed
+63
-66
No files matched your search
@@ -872,14 +872,6 @@ static __inline__ ftdm_status_t process_event(ftdm_span_t *span, ftdm_event_t *e
|
||||
ftdm_set_state_locked(event->channel, FTDM_CHANNEL_STATE_DOWN);
|
||||
}
|
||||
}
|
||||
case FTDM_OOB_ALARM_TRAP:
|
||||
{
|
||||
ftdm_set_flag_locked(event->channel, FTDM_CHANNEL_SUSPENDED);
|
||||
}
|
||||
case FTDM_OOB_ALARM_CLEAR:
|
||||
{
|
||||
ftdm_clear_flag_locked(event->channel, FTDM_CHANNEL_SUSPENDED);
|
||||
}
|
||||
}
|
||||
|
||||
end:
|
||||
|
||||
@@ -1501,11 +1501,8 @@ static __inline__ void check_state(ftdm_span_t *span)
|
||||
static __inline__ ftdm_status_t check_events(ftdm_span_t *span, int ms_timeout)
|
||||
{
|
||||
ftdm_status_t status;
|
||||
ftdm_sigmsg_t sigmsg;
|
||||
ftdm_sangoma_boost_data_t *sangoma_boost_data = span->signal_data;
|
||||
|
||||
memset(&sigmsg, 0, sizeof(sigmsg));
|
||||
|
||||
status = ftdm_span_poll_event(span, ms_timeout);
|
||||
|
||||
switch(status) {
|
||||
@@ -1513,25 +1510,16 @@ static __inline__ ftdm_status_t check_events(ftdm_span_t *span, int ms_timeout)
|
||||
{
|
||||
ftdm_event_t *event;
|
||||
while (ftdm_span_next_event(span, &event) == FTDM_SUCCESS) {
|
||||
sigmsg.span_id = event->channel->span_id;
|
||||
sigmsg.chan_id = event->channel->chan_id;
|
||||
sigmsg.channel = event->channel;
|
||||
switch (event->enum_id) {
|
||||
case FTDM_OOB_ALARM_TRAP:
|
||||
sigmsg.event_id = FTDM_SIGEVENT_HWSTATUS_CHANGED;
|
||||
sigmsg.raw_data = (void *)FTDM_HW_LINK_DISCONNECTED;
|
||||
if (sangoma_boost_data->sigmod) {
|
||||
sangoma_boost_data->sigmod->on_hw_link_status_change(event->channel, FTDM_HW_LINK_DISCONNECTED);
|
||||
}
|
||||
ftdm_span_send_signal(span, &sigmsg);
|
||||
break;
|
||||
case FTDM_OOB_ALARM_CLEAR:
|
||||
sigmsg.event_id = FTDM_SIGEVENT_HWSTATUS_CHANGED;
|
||||
sigmsg.raw_data = (void *)FTDM_HW_LINK_CONNECTED;
|
||||
if (sangoma_boost_data->sigmod) {
|
||||
sangoma_boost_data->sigmod->on_hw_link_status_change(event->channel, FTDM_HW_LINK_CONNECTED);
|
||||
}
|
||||
ftdm_span_send_signal(span, &sigmsg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1032,12 +1032,11 @@ FIO_SPAN_NEXT_EVENT_FUNCTION(wanpipe_next_event)
|
||||
return FTDM_FAIL;
|
||||
}
|
||||
|
||||
ftdm_log(FTDM_LOG_DEBUG, "read wanpipe event %d\n", tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_type);
|
||||
switch(tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_type) {
|
||||
|
||||
case WP_TDMAPI_EVENT_LINK_STATUS:
|
||||
{
|
||||
ftdm_sigmsg_t sigmsg;
|
||||
memset(&sigmsg, 0, sizeof(sigmsg));
|
||||
switch(tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_link_status) {
|
||||
case WP_TDMAPI_EVENT_LINK_STATUS_CONNECTED:
|
||||
event_id = FTDM_OOB_ALARM_CLEAR;
|
||||
@@ -1046,11 +1045,6 @@ FIO_SPAN_NEXT_EVENT_FUNCTION(wanpipe_next_event)
|
||||
event_id = FTDM_OOB_ALARM_TRAP;
|
||||
break;
|
||||
};
|
||||
sigmsg.chan_id = ftdmchan->chan_id;
|
||||
sigmsg.span_id = ftdmchan->span_id;
|
||||
sigmsg.channel = ftdmchan;
|
||||
sigmsg.event_id = (event_id == FTDM_OOB_ALARM_CLEAR) ? FTDM_SIGEVENT_ALARM_CLEAR : FTDM_SIGEVENT_ALARM_TRAP;
|
||||
ftdm_span_send_signal(ftdmchan->span, &sigmsg);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1121,6 +1115,7 @@ FIO_SPAN_NEXT_EVENT_FUNCTION(wanpipe_next_event)
|
||||
if (tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_dtmf_type == WAN_EC_TONE_STOP) {
|
||||
ftdm_clear_flag_locked(ftdmchan, FTDM_CHANNEL_MUTE);
|
||||
if (ftdm_test_flag(ftdmchan, FTDM_CHANNEL_INUSE)) {
|
||||
ftdm_log(FTDM_LOG_DEBUG, "Queuing wanpipe DTMF: %c\n", tmp_dtmf[0]);
|
||||
ftdm_channel_queue_dtmf(ftdmchan, tmp_dtmf);
|
||||
}
|
||||
}
|
||||
@@ -1129,20 +1124,12 @@ FIO_SPAN_NEXT_EVENT_FUNCTION(wanpipe_next_event)
|
||||
case WP_TDMAPI_EVENT_ALARM:
|
||||
{
|
||||
ftdm_log(FTDM_LOG_DEBUG, "Got wanpipe alarms %d\n", tdm_api.wp_tdm_cmd.event.wp_api_event_alarm);
|
||||
ftdm_sigmsg_t sigmsg;
|
||||
memset(&sigmsg, 0, sizeof(sigmsg));
|
||||
/* FIXME: is this always alarm trap? what about clearing? */
|
||||
event_id = FTDM_OOB_ALARM_TRAP;
|
||||
sigmsg.chan_id = ftdmchan->chan_id;
|
||||
sigmsg.span_id = ftdmchan->span_id;
|
||||
sigmsg.channel = ftdmchan;
|
||||
sigmsg.event_id = (event_id == FTDM_OOB_ALARM_CLEAR) ? FTDM_SIGEVENT_ALARM_CLEAR : FTDM_SIGEVENT_ALARM_TRAP;
|
||||
ftdm_span_send_signal(ftdmchan->span, &sigmsg);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
ftdm_log(FTDM_LOG_WARNING, "Unhandled event %d\n", tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_type);
|
||||
ftdm_log(FTDM_LOG_WARNING, "Unhandled wanpipe event %d\n", tdm_api.wp_tdm_cmd.event.wp_tdm_api_event_type);
|
||||
event_id = FTDM_OOB_INVALID;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1027,28 +1027,12 @@ FIO_SPAN_NEXT_EVENT_FUNCTION(zt_next_event)
|
||||
break;
|
||||
case ZT_EVENT_ALARM:
|
||||
{
|
||||
ftdm_sigmsg_t sigmsg;
|
||||
ftdm_channel_t *ftdmchan = span->channels[i];
|
||||
event_id = FTDM_OOB_ALARM_TRAP;
|
||||
memset(&sigmsg, 0, sizeof(sigmsg));
|
||||
sigmsg.chan_id = ftdmchan->chan_id;
|
||||
sigmsg.span_id = ftdmchan->span_id;
|
||||
sigmsg.channel = ftdmchan;
|
||||
sigmsg.event_id = FTDM_SIGEVENT_ALARM_TRAP;
|
||||
ftdm_span_send_signal(ftdmchan->span, &sigmsg);
|
||||
}
|
||||
break;
|
||||
case ZT_EVENT_NOALARM:
|
||||
{
|
||||
ftdm_sigmsg_t sigmsg;
|
||||
ftdm_channel_t *ftdmchan = span->channels[i];
|
||||
event_id = FTDM_OOB_ALARM_CLEAR;
|
||||
memset(&sigmsg, 0, sizeof(sigmsg));
|
||||
sigmsg.chan_id = ftdmchan->chan_id;
|
||||
sigmsg.span_id = ftdmchan->span_id;
|
||||
sigmsg.channel = ftdmchan;
|
||||
sigmsg.event_id = FTDM_SIGEVENT_ALARM_CLEAR;
|
||||
ftdm_span_send_signal(ftdmchan->span, &sigmsg);
|
||||
}
|
||||
break;
|
||||
case ZT_EVENT_BITSCHANGED:
|
||||
|
||||
Reference in new issue
Block a user