]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
send signaling alarm notification from the IO modules
authorMoises Silva <moy@sangoma.com>
Fri, 5 Mar 2010 16:30:02 +0000 (16:30 +0000)
committerMoises Silva <moy@sangoma.com>
Fri, 5 Mar 2010 16:30:02 +0000 (16:30 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@1049 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/openzap/src/ozmod/ozmod_isdn/ozmod_isdn.c
libs/openzap/src/ozmod/ozmod_libpri/ozmod_libpri.c
libs/openzap/src/ozmod/ozmod_wanpipe/ozmod_wanpipe.c
libs/openzap/src/ozmod/ozmod_zt/ozmod_zt.c

index 3c061960a121898233bf1616aa91061c3fe8c361..fc998b126f393cad7341f6929b92238dc396c7a1 100644 (file)
@@ -1512,20 +1512,12 @@ static __inline__ void check_state(zap_span_t *span)
  */
 static __inline__ zap_status_t process_event(zap_span_t *span, zap_event_t *event)
 {
-       zap_sigmsg_t sig;
-
-       memset(&sig, 0, sizeof(sig));
-       sig.chan_id = event->channel->chan_id;
-       sig.span_id = event->channel->span_id;
-       sig.channel = event->channel;
-
        zap_log(ZAP_LOG_DEBUG, "EVENT [%s][%d:%d] STATE [%s]\n", 
                        zap_oob_event2str(event->enum_id), event->channel->span_id, event->channel->chan_id, zap_channel_state2str(event->channel->state));
 
        switch(event->enum_id) {
        case ZAP_OOB_ALARM_TRAP:
                {
-                       sig.event_id = ZAP_OOB_ALARM_TRAP;
                        if (event->channel->state != ZAP_CHANNEL_STATE_DOWN) {
                                if (event->channel->type == ZAP_CHAN_TYPE_B) {
                                        zap_set_state_locked(event->channel, ZAP_CHANNEL_STATE_RESTART);
@@ -1537,7 +1529,6 @@ static __inline__ zap_status_t process_event(zap_span_t *span, zap_event_t *even
 
                        
                        zap_channel_get_alarms(event->channel);
-                       zap_span_send_signal(span, &sig);
                        zap_log(ZAP_LOG_WARNING, "channel %d:%d (%d:%d) has alarms! [%s]\n", 
                                        event->channel->span_id, event->channel->chan_id, 
                                        event->channel->physical_span_id, event->channel->physical_chan_id, 
@@ -1550,10 +1541,8 @@ static __inline__ zap_status_t process_event(zap_span_t *span, zap_event_t *even
                        zap_log(ZAP_LOG_WARNING, "channel %d:%d (%d:%d) alarms Cleared!\n", event->channel->span_id, event->channel->chan_id,
                                        event->channel->physical_span_id, event->channel->physical_chan_id);
 
-                       sig.event_id = ZAP_OOB_ALARM_CLEAR;
                        zap_clear_flag(event->channel, ZAP_CHANNEL_SUSPENDED);
                        zap_channel_get_alarms(event->channel);
-                       zap_span_send_signal(span, &sig);
                }
                break;
        }
index 0c8aadede353bd39fa8f15b2ff03e303ba8c8748..f18aa1fc54d3569625231442a16dafbf76832f1a 100644 (file)
@@ -806,20 +806,12 @@ static int on_ring(lpwrap_pri_t *spri, lpwrap_pri_event_t event_type, pri_event
  */
 static __inline__ zap_status_t process_event(zap_span_t *span, zap_event_t *event)
 {
-       zap_sigmsg_t sig;
-
-       memset(&sig, 0, sizeof(sig));
-       sig.chan_id = event->channel->chan_id;
-       sig.span_id = event->channel->span_id;
-       sig.channel = event->channel;
-
        zap_log(ZAP_LOG_DEBUG, "EVENT [%s][%d][%d:%d] STATE [%s]\n", 
                        zap_oob_event2str(event->enum_id), event->enum_id, event->channel->span_id, event->channel->chan_id, zap_channel_state2str(event->channel->state));
 
        switch(event->enum_id) {
        case ZAP_OOB_ALARM_TRAP:
                {
-                       sig.event_id = ZAP_OOB_ALARM_TRAP;
                        if (event->channel->state != ZAP_CHANNEL_STATE_DOWN) {
                                if (event->channel->type == ZAP_CHAN_TYPE_B) {
                                        zap_set_state_locked(event->channel, ZAP_CHANNEL_STATE_RESTART);
@@ -831,7 +823,6 @@ static __inline__ zap_status_t process_event(zap_span_t *span, zap_event_t *even
 
                        
                        zap_channel_get_alarms(event->channel);
-                       zap_span_send_signal(span, &sig);
                        zap_log(ZAP_LOG_WARNING, "channel %d:%d (%d:%d) has alarms! [%s]\n", 
                                        event->channel->span_id, event->channel->chan_id, 
                                        event->channel->physical_span_id, event->channel->physical_chan_id, 
@@ -840,14 +831,11 @@ static __inline__ zap_status_t process_event(zap_span_t *span, zap_event_t *even
                break;
        case ZAP_OOB_ALARM_CLEAR:
                {
-                       
                        zap_log(ZAP_LOG_WARNING, "channel %d:%d (%d:%d) alarms Cleared!\n", event->channel->span_id, event->channel->chan_id,
                                        event->channel->physical_span_id, event->channel->physical_chan_id);
 
-                       sig.event_id = ZAP_OOB_ALARM_CLEAR;
                        zap_clear_flag(event->channel, ZAP_CHANNEL_SUSPENDED);
                        zap_channel_get_alarms(event->channel);
-                       zap_span_send_signal(span, &sig);
                }
                break;
        }
index 59d4155d33d2b03f6af739471e0cc0c798934146..ea9d58a43da86aa38e3635edff49092cd1e7887e 100644 (file)
@@ -962,6 +962,8 @@ ZIO_SPAN_NEXT_EVENT_FUNCTION(wanpipe_next_event)
 
                        case WP_TDMAPI_EVENT_LINK_STATUS:
                                {
+                                       zap_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 = ZAP_OOB_ALARM_CLEAR;
@@ -970,6 +972,11 @@ ZIO_SPAN_NEXT_EVENT_FUNCTION(wanpipe_next_event)
                                                event_id = ZAP_OOB_ALARM_TRAP;
                                                break;
                                        };
+                                       sigmsg.chan_id = zchan->chan_id;
+                                       sigmsg.span_id = zchan->span_id;
+                                       sigmsg.channel = zchan;
+                                       sigmsg.event_id = (event_id == ZAP_OOB_ALARM_CLEAR) ? ZAP_SIGEVENT_ALARM_CLEAR : ZAP_SIGEVENT_ALARM_TRAP;
+                                       zap_span_send_signal(zchan->span, &sigmsg);
                                }
                                break;
 
index 3b383d89a4cd1f72c2b990e55c55a89bf19a2beb..111e5a26ab318043e3dc3d691f87c4c1f3df9975 100644 (file)
@@ -1027,12 +1027,28 @@ ZIO_SPAN_NEXT_EVENT_FUNCTION(zt_next_event)
                                break;
                        case ZT_EVENT_ALARM:
                                {
+                                       zap_sigmsg_t sigmsg;
+                                       zap_channel_t *zchan = span->channels[i];
                                        event_id = ZAP_OOB_ALARM_TRAP;
+                                       memset(&sigmsg, 0, sizeof(sigmsg));
+                                       sigmsg.chan_id = zchan->chan_id;
+                                       sigmsg.span_id = zchan->span_id;
+                                       sigmsg.channel = zchan;
+                                       sigmsg.event_id = ZAP_SIGEVENT_ALARM_TRAP;
+                                       zap_span_send_signal(zchan->span, &sigmsg);
                                }
                                break;
                        case ZT_EVENT_NOALARM:
                                {
+                                       zap_sigmsg_t sigmsg;
+                                       zap_channel_t *zchan = span->channels[i];
                                        event_id = ZAP_OOB_ALARM_CLEAR;
+                                       memset(&sigmsg, 0, sizeof(sigmsg));
+                                       sigmsg.chan_id = zchan->chan_id;
+                                       sigmsg.span_id = zchan->span_id;
+                                       sigmsg.channel = zchan;
+                                       sigmsg.event_id = ZAP_SIGEVENT_ALARM_CLEAR;
+                                       zap_span_send_signal(zchan->span, &sigmsg);
                                }
                                break;
                        case ZT_EVENT_BITSCHANGED: