From 72a8517d7163145701a3eff46f20b02848907c63 Mon Sep 17 00:00:00 2001 From: David Yat Sin Date: Tue, 27 Apr 2010 16:12:22 -0400 Subject: [PATCH] freetdm: fio->configure_span moved inside ftdm_configure_span_channels function --- libs/freetdm/src/ftdm_io.c | 38 +++++++++++------------------- libs/freetdm/src/include/freetdm.h | 5 +++- 2 files changed, 18 insertions(+), 25 deletions(-) diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c index ae4385c0a3..88a3462fba 100644 --- a/libs/freetdm/src/ftdm_io.c +++ b/libs/freetdm/src/ftdm_io.c @@ -2902,8 +2902,11 @@ 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, int currindex, ftdm_channel_config_t *chan_config) +FT_DECLARE(ftdm_status_t) ftdm_configure_span_channels(ftdm_span_t *span, const char* str, ftdm_channel_config_t *chan_config, ftdm_chan_type_t type, unsigned *configured) { + int currindex = span->chan_count; + *configured += span->fio->configure_span(span, str, type, chan_config->name, chan_config->number); + 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); return FTDM_FAIL; @@ -2927,11 +2930,8 @@ static ftdm_status_t load_config(void) char *var, *val; int catno = -1; int intparam = 0; - int currindex = 0; ftdm_span_t *span = NULL; unsigned configured = 0, d = 0; - char name[FTDM_MAX_NAME_STR_SZ] = ""; - char number[25] = ""; ftdm_io_interface_t *fio = NULL; ftdm_analog_start_type_t tmp; ftdm_size_t len = 0; @@ -3017,15 +3017,15 @@ static ftdm_status_t load_config(void) ftdm_log(FTDM_LOG_DEBUG, "setting trunk type to '%s'\n", ftdm_trunk_type2str(span->trunk_type)); } else if (!strcasecmp(var, "name")) { if (!strcasecmp(val, "undef")) { - *name = '\0'; + chan_config.name[0] = '\0'; } else { - ftdm_copy_string(name, val, sizeof(name)); + ftdm_copy_string(chan_config.name, val, FTDM_MAX_NAME_STR_SZ); } } else if (!strcasecmp(var, "number")) { if (!strcasecmp(val, "undef")) { - *number = '\0'; + chan_config.number[0] = '\0'; } else { - ftdm_copy_string(number, val, sizeof(number)); + ftdm_copy_string(chan_config.number, val, FTDM_MAX_NUMBER_STR_SZ); } } else if (!strcasecmp(var, "analog-start-type")) { if (span->trunk_type == FTDM_TRUNK_FXS || span->trunk_type == FTDM_TRUNK_FXO || span->trunk_type == FTDM_TRUNK_EM) { @@ -3043,9 +3043,7 @@ static ftdm_status_t load_config(void) ftdm_analog_start_type2str(span->start_type)); } if (span->trunk_type == FTDM_TRUNK_FXO) { - currindex = span->chan_count; - configured += fio->configure_span(span, val, FTDM_CHAN_TYPE_FXO, name, number); - ftdm_configure_span_channels(span, currindex, &chan_config); + ftdm_configure_span_channels(span, val, &chan_config, FTDM_CHAN_TYPE_FXO, &configured); } else { ftdm_log(FTDM_LOG_WARNING, "Cannot add FXO channels to an FXS trunk!\n"); } @@ -3056,9 +3054,7 @@ static ftdm_status_t load_config(void) ftdm_analog_start_type2str(span->start_type)); } if (span->trunk_type == FTDM_TRUNK_FXS) { - currindex = span->chan_count; - configured += fio->configure_span(span, val, FTDM_CHAN_TYPE_FXS, name, number); - ftdm_configure_span_channels(span, currindex, &chan_config); + ftdm_configure_span_channels(span, val, &chan_config, FTDM_CHAN_TYPE_FXS, &configured); } else { ftdm_log(FTDM_LOG_WARNING, "Cannot add FXS channels to an FXO trunk!\n"); } @@ -3069,16 +3065,12 @@ static ftdm_status_t load_config(void) ftdm_analog_start_type2str(span->start_type)); } if (span->trunk_type == FTDM_TRUNK_EM) { - currindex = span->chan_count; - configured += fio->configure_span(span, val, FTDM_CHAN_TYPE_EM, name, number); - ftdm_configure_span_channels(span, currindex, &chan_config); + ftdm_configure_span_channels(span, val, &chan_config, FTDM_CHAN_TYPE_EM, &configured); } else { ftdm_log(FTDM_LOG_WARNING, "Cannot add EM channels to a non-EM trunk!\n"); } } else if (!strcasecmp(var, "b-channel")) { - currindex = span->chan_count; - configured += fio->configure_span(span, val, FTDM_CHAN_TYPE_B, name, number); - ftdm_configure_span_channels(span, currindex, &chan_config); + ftdm_configure_span_channels(span, val, &chan_config, FTDM_CHAN_TYPE_B, &configured); } else if (!strcasecmp(var, "d-channel")) { if (d) { ftdm_log(FTDM_LOG_WARNING, "ignoring extra d-channel\n"); @@ -3090,13 +3082,11 @@ static ftdm_status_t load_config(void) } else { qtype = FTDM_CHAN_TYPE_DQ921; } - configured += fio->configure_span(span, val, qtype, name, number); + ftdm_configure_span_channels(span, val, &chan_config, qtype, &configured); d++; } } else if (!strcasecmp(var, "cas-channel")) { - currindex = span->chan_count; - configured += fio->configure_span(span, val, FTDM_CHAN_TYPE_CAS, name, number); - ftdm_configure_span_channels(span, currindex, &chan_config); + ftdm_configure_span_channels(span, val, &chan_config, FTDM_CHAN_TYPE_CAS, &configured); } else if (!strcasecmp(var, "dtmf_hangup")) { span->dtmf_hangup = ftdm_strdup(val); span->dtmf_hangup_len = strlen(val); diff --git a/libs/freetdm/src/include/freetdm.h b/libs/freetdm/src/include/freetdm.h index 870d9bce11..53d8e13fb1 100644 --- a/libs/freetdm/src/include/freetdm.h +++ b/libs/freetdm/src/include/freetdm.h @@ -199,6 +199,7 @@ extern "C" { #define FTDM_MAX_GROUPS_INTERFACE FTDM_MAX_SPANS_INTERFACE #define FTDM_MAX_NAME_STR_SZ 80 +#define FTDM_MAX_NUMBER_STR_SZ 20 #define GOTO_STATUS(label,st) status = st; goto label ; @@ -614,6 +615,8 @@ struct ftdm_channel { }; struct ftdm_channel_config { + char name[FTDM_MAX_NAME_STR_SZ]; + char number[FTDM_MAX_NUMBER_STR_SZ]; char group_name[FTDM_MAX_NAME_STR_SZ]; float rxgain; float txgain; @@ -840,7 +843,7 @@ FT_DECLARE(ftdm_status_t) ftdm_conf_node_add_param(ftdm_conf_node_t *node, const FT_DECLARE(ftdm_status_t) ftdm_conf_node_destroy(ftdm_conf_node_t *node); -FT_DECLARE(ftdm_status_t) ftdm_configure_span_channels(ftdm_span_t *span, int currindex, ftdm_channel_config_t *chan_config); +FT_DECLARE(ftdm_status_t) ftdm_configure_span_channels(ftdm_span_t *span, const char *str, ftdm_channel_config_t *chan_config, ftdm_chan_type_t type, unsigned *configured); FIO_CODEC_FUNCTION(fio_slin2ulaw); FIO_CODEC_FUNCTION(fio_ulaw2slin);