From b135ef373df03800437b51734d205e5967c5bc5e Mon Sep 17 00:00:00 2001 From: David Yat Sin Date: Tue, 27 Apr 2010 18:20:25 -0400 Subject: [PATCH] Removed use of ftdmchan->flags from mod_freetdm.c as they will be hidden from user in new architecture --- libs/freetdm/mod_freetdm/mod_freetdm.c | 17 ++++++------ libs/freetdm/src/ftdm_io.c | 38 +++++++++++++++++++++----- 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/libs/freetdm/mod_freetdm/mod_freetdm.c b/libs/freetdm/mod_freetdm/mod_freetdm.c index 2f8e4260f6..a4aa659f5c 100644 --- a/libs/freetdm/mod_freetdm/mod_freetdm.c +++ b/libs/freetdm/mod_freetdm/mod_freetdm.c @@ -1955,10 +1955,8 @@ static FIO_SIGNAL_CB_FUNCTION(on_clear_channel_signal) case FTDM_SIGEVENT_SIGSTATUS_CHANGED: { ftdm_signaling_status_t *sigstatus = (ftdm_signaling_status_t*)(sigmsg->raw_data); - if (*((ftdm_signaling_status_t*)(sigmsg->raw_data)) == FTDM_SIG_STATE_UP) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%d:%d signalling changed to :%s\n", - sigmsg->channel->span_id, sigmsg->channel->chan_id, ftdm_signaling_status2str(*sigstatus)); - } + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%d:%d signalling changed to :%s\n", + sigmsg->channel->span_id, sigmsg->channel->chan_id, ftdm_signaling_status2str(*sigstatus)); } break; default: @@ -2994,10 +2992,12 @@ static switch_status_t load_config(void) void dump_chan(ftdm_span_t *span, uint32_t chan_id, switch_stream_handle_t *stream) { + ftdm_signaling_status_t sigstatus = FTDM_SIG_STATE_DOWN; if (chan_id > span->chan_count) { return; } - + + ftdm_channel_get_sig_status(span->channels[chan_id], &sigstatus); stream->write_function(stream, "span_id: %u\n" "chan_id: %u\n" @@ -3023,7 +3023,7 @@ void dump_chan(ftdm_span_t *span, uint32_t chan_id, switch_stream_handle_t *stre span->channels[chan_id]->physical_span_id, span->channels[chan_id]->physical_chan_id, (span->channels[chan_id]->alarm_flags) ? "DOWN" : "UP", - ftdm_test_flag(span->channels[chan_id], FTDM_CHANNEL_SIG_UP) ? "UP" : "DOWN", + ftdm_signaling_status2str(sigstatus), ftdm_chan_type2str(span->channels[chan_id]->type), ftdm_channel_state2str(span->channels[chan_id]->state), ftdm_channel_state2str(span->channels[chan_id]->last_state), @@ -3042,10 +3042,11 @@ void dump_chan(ftdm_span_t *span, uint32_t chan_id, switch_stream_handle_t *stre void dump_chan_xml(ftdm_span_t *span, uint32_t chan_id, switch_stream_handle_t *stream) { + ftdm_signaling_status_t sigstatus = FTDM_SIG_STATE_DOWN; if (chan_id > span->chan_count) { return; } - + ftdm_channel_get_sig_status(span->channels[chan_id], &sigstatus); stream->write_function(stream, " \n" " %u\n" @@ -3073,7 +3074,7 @@ void dump_chan_xml(ftdm_span_t *span, uint32_t chan_id, switch_stream_handle_t * span->channels[chan_id]->physical_span_id, span->channels[chan_id]->physical_chan_id, (span->channels[chan_id]->alarm_flags) ? "DOWN" : "UP", - ftdm_test_flag(span->channels[chan_id], FTDM_CHANNEL_SIG_UP) ? "UP" : "DOWN", + ftdm_signaling_status2str(sigstatus), ftdm_chan_type2str(span->channels[chan_id]->type), ftdm_channel_state2str(span->channels[chan_id]->state), ftdm_channel_state2str(span->channels[chan_id]->last_state), diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c index 8cdeafd323..cac4f15f16 100644 --- a/libs/freetdm/src/ftdm_io.c +++ b/libs/freetdm/src/ftdm_io.c @@ -2905,7 +2905,12 @@ static ftdm_status_t ftdm_set_channels_alarms(ftdm_span_t *span, int currindex) FT_DECLARE(ftdm_status_t) ftdm_configure_span_channels(ftdm_span_t *span, const char* str, ftdm_channel_config_t *chan_config, unsigned *configured) { int currindex = span->chan_count; - *configured += span->fio->configure_span(span, str, chan_config->type, chan_config->name, chan_config->number); + *configured = 0; + *configured = span->fio->configure_span(span, str, chan_config->type, chan_config->name, chan_config->number); + if (!*configured) { + ftdm_log(FTDM_LOG_ERROR, "%d:Failed to configure span", span->span_id); + return FTDM_FAIL; + } if (ftdm_group_add_channels(span, currindex, chan_config->group_name) != FTDM_SUCCESS) { ftdm_log(FTDM_LOG_ERROR, "%d:Failed to add channels to group %s\n", span->span_id, chan_config->group_name); @@ -3043,8 +3048,11 @@ static ftdm_status_t load_config(void) ftdm_analog_start_type2str(span->start_type)); } if (span->trunk_type == FTDM_TRUNK_FXO) { + unsigned chans_configured = 0; chan_config.type = FTDM_CHAN_TYPE_FXO; - ftdm_configure_span_channels(span, val, &chan_config, &configured); + if (ftdm_configure_span_channels(span, val, &chan_config, &chans_configured) == FTDM_SUCCESS) { + configured += chans_configured; + } } else { ftdm_log(FTDM_LOG_WARNING, "Cannot add FXO channels to an FXS trunk!\n"); } @@ -3055,8 +3063,11 @@ static ftdm_status_t load_config(void) ftdm_analog_start_type2str(span->start_type)); } if (span->trunk_type == FTDM_TRUNK_FXS) { + unsigned chans_configured = 0; chan_config.type = FTDM_CHAN_TYPE_FXS; - ftdm_configure_span_channels(span, val, &chan_config, &configured); + if (ftdm_configure_span_channels(span, val, &chan_config, &chans_configured) == FTDM_SUCCESS) { + configured += chans_configured; + } } else { ftdm_log(FTDM_LOG_WARNING, "Cannot add FXS channels to an FXO trunk!\n"); } @@ -3067,30 +3078,43 @@ static ftdm_status_t load_config(void) ftdm_analog_start_type2str(span->start_type)); } if (span->trunk_type == FTDM_TRUNK_EM) { + unsigned chans_configured = 0; chan_config.type = FTDM_CHAN_TYPE_EM; - ftdm_configure_span_channels(span, val, &chan_config, &configured); + if (ftdm_configure_span_channels(span, val, &chan_config, &chans_configured) == FTDM_SUCCESS) { + configured += chans_configured; + } } else { ftdm_log(FTDM_LOG_WARNING, "Cannot add EM channels to a non-EM trunk!\n"); } } else if (!strcasecmp(var, "b-channel")) { + unsigned chans_configured = 0; chan_config.type = FTDM_CHAN_TYPE_B; - ftdm_configure_span_channels(span, val, &chan_config, &configured); + if (ftdm_configure_span_channels(span, val, &chan_config, &chans_configured) == FTDM_SUCCESS) { + configured += chans_configured; + } } else if (!strcasecmp(var, "d-channel")) { if (d) { ftdm_log(FTDM_LOG_WARNING, "ignoring extra d-channel\n"); } else { + unsigned chans_configured = 0; if (!strncasecmp(val, "lapd:", 5)) { chan_config.type = FTDM_CHAN_TYPE_DQ931; val += 5; } else { chan_config.type = FTDM_CHAN_TYPE_DQ921; } - ftdm_configure_span_channels(span, val, &chan_config, &configured); + if (ftdm_configure_span_channels(span, val, &chan_config, &chans_configured) == FTDM_SUCCESS) { + configured += chans_configured; + } d++; } } else if (!strcasecmp(var, "cas-channel")) { + unsigned chans_configured = 0; chan_config.type = FTDM_CHAN_TYPE_CAS; - ftdm_configure_span_channels(span, val, &chan_config, &configured); + + if (ftdm_configure_span_channels(span, val, &chan_config, &chans_configured) == FTDM_SUCCESS) { + configured += chans_configured; + } } else if (!strcasecmp(var, "dtmf_hangup")) { span->dtmf_hangup = ftdm_strdup(val); span->dtmf_hangup_len = strlen(val);