static __inline__ int chan_is_avail(ftdm_channel_t *check)
{
- if (!ftdm_test_flag(check, FTDM_CHANNEL_READY) ||
- !ftdm_test_flag(check, FTDM_CHANNEL_SIG_UP) ||
- ftdm_test_flag(check, FTDM_CHANNEL_INUSE) ||
- ftdm_test_flag(check, FTDM_CHANNEL_SUSPENDED) ||
- ftdm_test_flag(check, FTDM_CHANNEL_IN_ALARM) ||
- check->state != FTDM_CHANNEL_STATE_DOWN) {
- return 0;
+ if (check->type == FTDM_CHAN_TYPE_CLEAR) {
+ if (!ftdm_test_flag(check, FTDM_CHANNEL_READY) ||
+ ftdm_test_flag(check, FTDM_CHANNEL_INUSE) ||
+ ftdm_test_flag(check, FTDM_CHANNEL_SUSPENDED) ||
+ ftdm_test_flag(check, FTDM_CHANNEL_IN_ALARM) ||
+ check->state != FTDM_CHANNEL_STATE_DOWN) {
+ return 0;
+ }
+ } else {
+ if (!ftdm_test_flag(check, FTDM_CHANNEL_READY) ||
+ !ftdm_test_flag(check, FTDM_CHANNEL_SIG_UP) ||
+ ftdm_test_flag(check, FTDM_CHANNEL_INUSE) ||
+ ftdm_test_flag(check, FTDM_CHANNEL_SUSPENDED) ||
+ ftdm_test_flag(check, FTDM_CHANNEL_IN_ALARM) ||
+ check->state != FTDM_CHANNEL_STATE_DOWN) {
+ return 0;
+ }
}
return 1;
}
} else {
ftdm_log(FTDM_LOG_WARNING, "Cannot add EM channels to a non-EM trunk!\n");
}
+ } else if (!strcasecmp(var, "clear-channel")) {
+ unsigned chans_configured = 0;
+ chan_config.type = FTDM_CHAN_TYPE_CLEAR;
+ if (ftdm_configure_span_channels(span, val, &chan_config, &chans_configured) == FTDM_SUCCESS) {
+ configured += chans_configured;
+ }
} else if (!strcasecmp(var, "b-channel")) {
unsigned chans_configured = 0;
chan_config.type = FTDM_CHAN_TYPE_B;
FTDM_CHAN_TYPE_FXO, /*!< FXO analog channel */
FTDM_CHAN_TYPE_EM, /*!< E & M channel */
FTDM_CHAN_TYPE_CAS, /*!< CAS channel */
+ FTDM_CHAN_TYPE_CLEAR, /* Clear channnel - no signalling module */
FTDM_CHAN_TYPE_COUNT /*!< Count of channel types */
} ftdm_chan_type_t;
-#define CHAN_TYPE_STRINGS "B", "DQ921", "DQ931", "FXS", "FXO", "EM", "CAS", "INVALID"
+#define CHAN_TYPE_STRINGS "B", "DQ921", "DQ931", "FXS", "FXO", "EM", "CAS", "CLEAR", "INVALID"
/*! \brief transform from channel type to string and from string to channel type
* ftdm_str2ftdm_chan_type transforms a channel string (ie: "FXO" to FTDM_CHAN_TYPE_FXO)
* ftdm_chan_type2str transforms a channel type to string (ie: FTDM_CHAN_TYPE_B to "B")