mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-11-12 20:47:06 +00:00
Support for AT&T *8 Transfer (VRU only)
This commit is contained in:
1 parent
3fa2fce3f3
commit
bd7672242c
17 files changed
+845
-197
No files matched your search
@@ -155,6 +155,10 @@ extern "C" {
|
||||
#define ftdm_clear_alarm_flag(obj, flag) (obj)->alarm_flags &= ~(flag)
|
||||
#define ftdm_test_alarm_flag(obj, flag) ((obj)->alarm_flags & flag)
|
||||
|
||||
#define ftdm_set_io_flag(obj, flag) (obj)->io_flags |= (flag)
|
||||
#define ftdm_clear_io_flag(obj, flag) (obj)->io_flags &= ~(flag)
|
||||
#define ftdm_test_io_flag(obj, flag) ((obj)->io_flags & flag)
|
||||
|
||||
/*!
|
||||
\brief Set a flag on an arbitrary object
|
||||
\command obj the object to set the flags on
|
||||
@@ -399,6 +403,7 @@ struct ftdm_channel {
|
||||
uint64_t flags;
|
||||
uint32_t pflags;
|
||||
uint32_t sflags;
|
||||
uint8_t io_flags;
|
||||
ftdm_alarm_flag_t alarm_flags;
|
||||
ftdm_channel_feature_t features;
|
||||
ftdm_codec_t effective_codec;
|
||||
@@ -503,6 +508,7 @@ struct ftdm_span {
|
||||
ftdm_span_stop_t stop;
|
||||
ftdm_channel_sig_read_t sig_read;
|
||||
ftdm_channel_sig_write_t sig_write;
|
||||
ftdm_channel_sig_dtmf_t sig_dtmf;
|
||||
ftdm_channel_state_processor_t state_processor; /*!< This guy is called whenever state processing is required */
|
||||
void *io_data; /*!< Private I/O data per span. Do not touch unless you are an I/O module */
|
||||
char *type;
|
||||
@@ -591,6 +597,10 @@ FT_DECLARE(void) ftdm_ack_indication(ftdm_channel_t *ftdmchan, ftdm_channel_indi
|
||||
|
||||
FT_DECLARE(ftdm_iterator_t *) ftdm_get_iterator(ftdm_iterator_type_t type, ftdm_iterator_t *iter);
|
||||
|
||||
FT_DECLARE(ftdm_status_t) ftdm_channel_process_media(ftdm_channel_t *ftdmchan, void *data, ftdm_size_t *datalen);
|
||||
|
||||
FIO_WRITE_FUNCTION(ftdm_raw_write);
|
||||
FIO_READ_FUNCTION(ftdm_raw_read);
|
||||
|
||||
/*!
|
||||
* \brief Retrieves an event from the span
|
||||
|
||||
@@ -67,6 +67,7 @@ typedef enum {
|
||||
FTDM_CHANNEL_STATE_PROGRESS,
|
||||
FTDM_CHANNEL_STATE_PROGRESS_MEDIA,
|
||||
FTDM_CHANNEL_STATE_UP,
|
||||
FTDM_CHANNEL_STATE_TRANSFER,
|
||||
FTDM_CHANNEL_STATE_IDLE,
|
||||
FTDM_CHANNEL_STATE_TERMINATING,
|
||||
FTDM_CHANNEL_STATE_CANCEL,
|
||||
@@ -78,7 +79,7 @@ typedef enum {
|
||||
} ftdm_channel_state_t;
|
||||
#define CHANNEL_STATE_STRINGS "DOWN", "HOLD", "SUSPENDED", "DIALTONE", "COLLECT", \
|
||||
"RING", "RINGING", "BUSY", "ATTN", "GENRING", "DIALING", "GET_CALLERID", "CALLWAITING", \
|
||||
"RESTART", "PROCEED", "PROGRESS", "PROGRESS_MEDIA", "UP", "IDLE", "TERMINATING", "CANCEL", \
|
||||
"RESTART", "PROCEED", "PROGRESS", "PROGRESS_MEDIA", "UP", "TRANSFER", "IDLE", "TERMINATING", "CANCEL", \
|
||||
"HANGUP", "HANGUP_COMPLETE", "IN_LOOP", "RESET", "INVALID"
|
||||
FTDM_STR2ENUM_P(ftdm_str2ftdm_channel_state, ftdm_channel_state2str, ftdm_channel_state_t)
|
||||
|
||||
|
||||
@@ -189,6 +189,8 @@ typedef enum {
|
||||
/* If this flag is set, then this span cannot be stopped individually, it can only be stopped
|
||||
on freetdm unload */
|
||||
FTDM_SPAN_NON_STOPPABLE = (1 << 13),
|
||||
/* If this flag is set, then this span supports TRANSFER state */
|
||||
FTDM_SPAN_USE_TRANSFER = (1 << 14),
|
||||
} ftdm_span_flag_t;
|
||||
|
||||
/*! \brief Channel supported features */
|
||||
@@ -206,6 +208,13 @@ typedef enum {
|
||||
FTDM_CHANNEL_FEATURE_MF_GENERATE = (1<<10), /*!< Channel can generate R2 MF tones (read-only) */
|
||||
} ftdm_channel_feature_t;
|
||||
|
||||
/*! \brief Channel IO pending flags */
|
||||
typedef enum {
|
||||
FTDM_CHANNEL_IO_EVENT = (1 << 0),
|
||||
FTDM_CHANNEL_IO_READ = (1 << 1),
|
||||
FTDM_CHANNEL_IO_WRITE = (1 << 2),
|
||||
} ftdm_channel_io_flags_t;
|
||||
|
||||
/*!< Channel flags. This used to be an enum but we reached the 32bit limit for enums, is safer this way */
|
||||
#define FTDM_CHANNEL_CONFIGURED (1ULL << 0)
|
||||
#define FTDM_CHANNEL_READY (1ULL << 1)
|
||||
@@ -214,7 +223,6 @@ typedef enum {
|
||||
#define FTDM_CHANNEL_SUPRESS_DTMF (1ULL << 4)
|
||||
#define FTDM_CHANNEL_TRANSCODE (1ULL << 5)
|
||||
#define FTDM_CHANNEL_BUFFER (1ULL << 6)
|
||||
#define FTDM_CHANNEL_EVENT (1ULL << 7)
|
||||
#define FTDM_CHANNEL_INTHREAD (1ULL << 8)
|
||||
#define FTDM_CHANNEL_WINK (1ULL << 9)
|
||||
#define FTDM_CHANNEL_FLASH (1ULL << 10)
|
||||
@@ -331,10 +339,11 @@ typedef ftdm_status_t (*ftdm_span_start_t)(ftdm_span_t *span);
|
||||
typedef ftdm_status_t (*ftdm_span_stop_t)(ftdm_span_t *span);
|
||||
typedef ftdm_status_t (*ftdm_channel_sig_read_t)(ftdm_channel_t *ftdmchan, void *data, ftdm_size_t size);
|
||||
typedef ftdm_status_t (*ftdm_channel_sig_write_t)(ftdm_channel_t *ftdmchan, void *data, ftdm_size_t size);
|
||||
typedef ftdm_status_t (*ftdm_channel_sig_dtmf_t)(ftdm_channel_t *ftdmchan, const char *dtmf);
|
||||
|
||||
typedef enum {
|
||||
FTDM_ITERATOR_VARS = 1,
|
||||
FTDM_ITERATOR_CHANS,
|
||||
FTDM_ITERATOR_CHANS,
|
||||
} ftdm_iterator_type_t;
|
||||
|
||||
struct ftdm_iterator {
|
||||
|
||||
Reference in new issue
Block a user