]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
freetdm: check for hw dtmf before enabling
authorMoises Silva <moy@sangoma.com>
Thu, 3 Jun 2010 22:33:52 +0000 (18:33 -0400)
committerMoises Silva <moy@sangoma.com>
Thu, 3 Jun 2010 22:33:52 +0000 (18:33 -0400)
libs/freetdm/src/ftdm_io.c
libs/freetdm/src/ftmod/ftmod_analog/ftmod_analog.c
libs/freetdm/src/ftmod/ftmod_wanpipe/ftmod_wanpipe.c

index 0f2d0355b7691bb04af01d7b0b4b28da54b72382..4dc67d7c45467051118ee6dada939bcdd638a14a 100644 (file)
@@ -2350,6 +2350,7 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_command(ftdm_channel_t *ftdmchan, ftdm_co
                                teletone_dtmf_detect_init (&ftdmchan->dtmf_detect, ftdmchan->rate);
                                ftdm_set_flag_locked(ftdmchan, FTDM_CHANNEL_DTMF_DETECT);
                                ftdm_set_flag_locked(ftdmchan, FTDM_CHANNEL_SUPRESS_DTMF);
+                               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Enabled software DTMF detector\n");
                                GOTO_STATUS(done, FTDM_SUCCESS);
                        }
                }
@@ -2360,6 +2361,7 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_command(ftdm_channel_t *ftdmchan, ftdm_co
                                teletone_dtmf_detect_init (&ftdmchan->dtmf_detect, ftdmchan->rate);
                                ftdm_clear_flag(ftdmchan, FTDM_CHANNEL_DTMF_DETECT);
                                ftdm_clear_flag(ftdmchan, FTDM_CHANNEL_SUPRESS_DTMF);
+                               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Disabled software DTMF detector\n");
                                GOTO_STATUS(done, FTDM_SUCCESS);
                        }
                }
index 2863dc1cf568dbf7fe5f39a7addc154879e70f0d..446d5437fe917639945ec65277e634c998109bd6 100644 (file)
@@ -362,9 +362,10 @@ static void *ftdm_analog_channel_run(ftdm_thread_t *me, void *obj)
 
        if (ftdm_channel_command(ftdmchan, FTDM_COMMAND_ENABLE_DTMF_DETECT, &tt) != FTDM_SUCCESS) {
                snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "error initilizing tone detector!");
-               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "TONE ERROR\n");
+               ftdm_log_chan_msg(ftdmchan, FTDM_LOG_ERROR, "failed to initialize DTMF detector\n");
                goto done;
        }
+       ftdm_log_chan_msg(ftdmchan, FTDM_LOG_DEBUG, "Initialized DTMF detection\n");
 
        ftdm_set_flag_locked(ftdmchan, FTDM_CHANNEL_INTHREAD);
        teletone_init_session(&ts, 0, teletone_handler, dt_buffer);
@@ -855,8 +856,7 @@ static __inline__ ftdm_status_t process_event(ftdm_span_t *span, ftdm_event_t *e
        sig.channel = event->channel;
 
 
-       ftdm_log_chan(event->channel, FTDM_LOG_DEBUG, "EVENT [%s][%d:%d] STATE [%s]\n", 
-                       ftdm_oob_event2str(event->enum_id), event->channel->span_id, event->channel->chan_id, ftdm_channel_state2str(event->channel->state));
+       ftdm_log_chan(event->channel, FTDM_LOG_DEBUG, "Received event [%s] in state [%s]\n", ftdm_oob_event2str(event->enum_id), ftdm_channel_state2str(event->channel->state));
 
        ftdm_mutex_lock(event->channel->mutex);
        locked++;
@@ -942,6 +942,11 @@ 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);
                        }
                }
+       default:
+               {
+                       ftdm_log_chan(event->channel, FTDM_LOG_DEBUG, "Ignoring event [%s] in state [%s]\n", ftdm_oob_event2str(event->enum_id), ftdm_channel_state2str(event->channel->state));
+               }
+               break;
        }
 
  end:
index 9425f6f9b6fec7a40f8da70e6f26c26dbed7d274..352d9b15340daa41031ebdf6ce6a47a1f034adbc 100644 (file)
@@ -264,7 +264,6 @@ static unsigned wp_open_range(ftdm_span_t *span, unsigned spanno, unsigned start
                                
                                dtmf = "software";
 
-                               /* FIXME: Handle Error Condition Check for return code */
                                err = sangoma_tdm_get_hw_coding(chan->sockfd, &tdm_api);
 
                                if (tdm_api.wp_tdm_cmd.hw_tdm_coding) {
@@ -273,14 +272,14 @@ static unsigned wp_open_range(ftdm_span_t *span, unsigned spanno, unsigned start
                                        chan->native_codec = chan->effective_codec = FTDM_CODEC_ULAW;
                                }
 
-                               //err = sangoma_tdm_get_hw_dtmf(chan->sockfd, &tdm_api);
-                               //if (err > 0) {
+                               err = sangoma_tdm_get_hw_dtmf(chan->sockfd, &tdm_api);
+                               if (err > 0) {
                                        err = sangoma_tdm_enable_dtmf_events(chan->sockfd, &tdm_api);
                                        if (err == 0) {
                                                ftdm_channel_set_feature(chan, FTDM_CHANNEL_FEATURE_DTMF_DETECT);
                                                dtmf = "hardware";
                                        }
-                               //}
+                               }
                        }
 
 #ifdef LIBSANGOMA_VERSION
@@ -341,7 +340,7 @@ static unsigned wp_open_range(ftdm_span_t *span, unsigned spanno, unsigned start
                                ftdm_copy_string(chan->chan_number, number, sizeof(chan->chan_number));
                        }
                        configured++;
-                       ftdm_log(FTDM_LOG_INFO, "configuring device s%dc%d as FreeTDM device %d:%d fd:%d DTMF: %s\n",
+                       ftdm_log_chan(chan, FTDM_LOG_INFO, "configured wanpipe device s%dc%d as FreeTDM channel %d:%d fd:%d DTMF: %s\n",
                                spanno, x, chan->span_id, chan->chan_id, sockfd, dtmf);
 
                } else {