]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: ss7 - added hardware dtmf
authorKonrad Hammel <konrad@sangoma.com>
Thu, 10 Feb 2011 21:28:37 +0000 (16:28 -0500)
committerKonrad Hammel <konrad@sangoma.com>
Thu, 10 Feb 2011 21:39:42 +0000 (16:39 -0500)
libs/freetdm/src/ftmod/ftmod_sangoma_ss7/ftmod_sangoma_ss7_main.c

index 2f2e502314fbfb9940fa1d6e401bd83e5f2cec7e..d38d25f6a04be6e0548c8a7546e698845661abcb 100644 (file)
@@ -273,6 +273,7 @@ static void *ftdm_sangoma_ss7_run(ftdm_thread_t * me, void *obj)
        ftdm_interrupt_t        *ftdm_sangoma_ss7_int[2];
        ftdm_span_t             *ftdmspan = (ftdm_span_t *) obj;
        ftdm_channel_t          *ftdmchan = NULL;
+       ftdm_event_t            *event = NULL;
        sngss7_event_data_t     *sngss7_event = NULL;
        sngss7_span_data_t      *sngss7_span = (sngss7_span_data_t *)ftdmspan->signal_data;
 
@@ -363,6 +364,22 @@ static void *ftdm_sangoma_ss7_run(ftdm_thread_t * me, void *obj)
 
                /* check each channel on the span to see if there is an un-procressed SUS/RES flag */
                check_for_res_sus_flag(ftdmspan);
+
+               /* Poll for events, e.g HW DTMF */
+               switch (ftdm_span_poll_event(ftdmspan, 0)) {
+               /**********************************************************************/
+               case FTDM_SUCCESS:
+                       while (ftdm_span_next_event(ftdmspan, &event) == FTDM_SUCCESS);
+                       break;
+               /**********************************************************************/
+               case FTDM_TIMEOUT:
+                       /* No events pending */
+                       break;
+               /**********************************************************************/
+               default:
+                       SS7_ERROR("%s:Failed to poll span event\n", ftdmspan->name);
+               /**********************************************************************/
+               } /* switch (ftdm_span_poll_event(span, 0)) */
        } /* master while loop */
 
        /* clear the IN_THREAD flag so that we know the thread is done */