+++ /dev/null
-/*
- * Copyright (c) 2007, Anthony Minessale II
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * * Neither the name of the original author; nor the names of any contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
- * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * Contributors:
- *
- * Moises Silva <moy@sangoma.com>
- *
- */
-
-#ifndef FTDM_TYPES_H
-#define FTDM_TYPES_H
-
-#include "freetdm.h"
-
-#include "fsk.h"
-
-#ifdef WIN32
-typedef intptr_t ftdm_ssize_t;
-typedef int ftdm_filehandle_t;
-#else
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <stdarg.h>
-typedef ssize_t ftdm_ssize_t;
-typedef int ftdm_filehandle_t;
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define FTDM_COMMAND_OBJ_INT *((int *)obj)
-#define FTDM_COMMAND_OBJ_CHAR_P (char *)obj
-#define FTDM_COMMAND_OBJ_FLOAT *(float *)obj
-#define FTDM_FSK_MOD_FACTOR 0x10000
-#define FTDM_DEFAULT_DTMF_ON 250
-#define FTDM_DEFAULT_DTMF_OFF 50
-
-#define FTDM_END -1
-#define FTDM_ANY_STATE -1
-
-typedef uint64_t ftdm_time_t;
-
-typedef enum {
- FTDM_ENDIAN_BIG = 1,
- FTDM_ENDIAN_LITTLE = -1
-} ftdm_endian_t;
-
-typedef enum {
- FTDM_CID_TYPE_SDMF = 0x04,
- FTDM_CID_TYPE_MDMF = 0x80
-} ftdm_cid_type_t;
-
-typedef enum {
- MDMF_DATETIME = 1,
- MDMF_PHONE_NUM = 2,
- MDMF_DDN = 3,
- MDMF_NO_NUM = 4,
- MDMF_PHONE_NAME = 7,
- MDMF_NO_NAME = 8,
- MDMF_ALT_ROUTE = 9,
- MDMF_INVALID = 10
-} ftdm_mdmf_type_t;
-#define MDMF_STRINGS "X", "DATETIME", "PHONE_NUM", "DDN", "NO_NUM", "X", "X", "PHONE_NAME", "NO_NAME", "ALT_ROUTE", "INVALID"
-FTDM_STR2ENUM_P(ftdm_str2ftdm_mdmf_type, ftdm_mdmf_type2str, ftdm_mdmf_type_t)
-
-#define FTDM_TONEMAP_LEN 128
-typedef enum {
- FTDM_TONEMAP_NONE,
- FTDM_TONEMAP_DIAL,
- FTDM_TONEMAP_RING,
- FTDM_TONEMAP_BUSY,
- FTDM_TONEMAP_FAIL1,
- FTDM_TONEMAP_FAIL2,
- FTDM_TONEMAP_FAIL3,
- FTDM_TONEMAP_ATTN,
- FTDM_TONEMAP_CALLWAITING_CAS,
- FTDM_TONEMAP_CALLWAITING_SAS,
- FTDM_TONEMAP_CALLWAITING_ACK,
- FTDM_TONEMAP_INVALID
-} ftdm_tonemap_t;
-#define TONEMAP_STRINGS "NONE", "DIAL", "RING", "BUSY", "FAIL1", "FAIL2", "FAIL3", "ATTN", "CALLWAITING-CAS", "CALLWAITING-SAS", "CALLWAITING-ACK", "INVALID"
-FTDM_STR2ENUM_P(ftdm_str2ftdm_tonemap, ftdm_tonemap2str, ftdm_tonemap_t)
-
-typedef enum {
- FTDM_TRUNK_E1,
- FTDM_TRUNK_T1,
- FTDM_TRUNK_J1,
- FTDM_TRUNK_BRI,
- FTDM_TRUNK_BRI_PTMP,
- FTDM_TRUNK_FXO,
- FTDM_TRUNK_FXS,
- FTDM_TRUNK_EM,
- FTDM_TRUNK_NONE
-} ftdm_trunk_type_t;
-#define TRUNK_STRINGS "E1", "T1", "J1", "BRI", "BRI_PTMP", "FXO", "FXS", "EM", "NONE"
-FTDM_STR2ENUM_P(ftdm_str2ftdm_trunk_type, ftdm_trunk_type2str, ftdm_trunk_type_t)
-
-typedef enum {
- FTDM_ANALOG_START_KEWL,
- FTDM_ANALOG_START_LOOP,
- FTDM_ANALOG_START_GROUND,
- FTDM_ANALOG_START_WINK,
- FTDM_ANALOG_START_NA
-} ftdm_analog_start_type_t;
-#define START_TYPE_STRINGS "KEWL", "LOOP", "GROUND", "WINK", "NA"
-FTDM_STR2ENUM_P(ftdm_str2ftdm_analog_start_type, ftdm_analog_start_type2str, ftdm_analog_start_type_t)
-
-typedef enum {
- FTDM_OOB_ONHOOK,
- FTDM_OOB_OFFHOOK,
- FTDM_OOB_WINK,
- FTDM_OOB_FLASH,
- FTDM_OOB_RING_START,
- FTDM_OOB_RING_STOP,
- FTDM_OOB_ALARM_TRAP,
- FTDM_OOB_ALARM_CLEAR,
- FTDM_OOB_NOOP,
- FTDM_OOB_CAS_BITS_CHANGE,
- FTDM_OOB_INVALID
-} ftdm_oob_event_t;
-#define OOB_STRINGS "DTMF", "ONHOOK", "OFFHOOK", "WINK", "FLASH", "RING_START", "RING_STOP", "ALARM_TRAP", "ALARM_CLEAR", "NOOP", "CAS_BITS_CHANGE", "INVALID"
-FTDM_STR2ENUM_P(ftdm_str2ftdm_oob_event, ftdm_oob_event2str, ftdm_oob_event_t)
-
-typedef enum {
- FTDM_SIGTYPE_NONE,
- FTDM_SIGTYPE_ISDN,
- FTDM_SIGTYPE_RBS,
- FTDM_SIGTYPE_ANALOG,
- FTDM_SIGTYPE_SANGOMABOOST,
- FTDM_SIGTYPE_M3UA,
- FTDM_SIGTYPE_R2
-} ftdm_signal_type_t;
-
-typedef enum {
- FTDM_SPAN_CONFIGURED = (1 << 0),
- FTDM_SPAN_READY = (1 << 1),
- FTDM_SPAN_STATE_CHANGE = (1 << 2),
- FTDM_SPAN_SUSPENDED = (1 << 3),
- FTDM_SPAN_IN_THREAD = (1 << 4),
- FTDM_SPAN_STOP_THREAD = (1 << 5),
- FTDM_SPAN_USE_CHAN_QUEUE = (1 << 6),
- FTDM_SPAN_SUGGEST_CHAN_ID = (1 << 7),
-} ftdm_span_flag_t;
-
-typedef enum {
- FTDM_CHANNEL_FEATURE_DTMF_DETECT = (1 << 0),
- FTDM_CHANNEL_FEATURE_DTMF_GENERATE = (1 << 1),
- FTDM_CHANNEL_FEATURE_CODECS = (1 << 2),
- FTDM_CHANNEL_FEATURE_INTERVAL = (1 << 3),
- FTDM_CHANNEL_FEATURE_CALLERID = (1 << 4),
- FTDM_CHANNEL_FEATURE_PROGRESS = (1 << 5)
-} ftdm_channel_feature_t;
-
-typedef enum {
- FTDM_CHANNEL_STATE_DOWN,
- FTDM_CHANNEL_STATE_HOLD,
- FTDM_CHANNEL_STATE_SUSPENDED,
- FTDM_CHANNEL_STATE_DIALTONE,
- FTDM_CHANNEL_STATE_COLLECT,
- FTDM_CHANNEL_STATE_RING,
- FTDM_CHANNEL_STATE_BUSY,
- FTDM_CHANNEL_STATE_ATTN,
- FTDM_CHANNEL_STATE_GENRING,
- FTDM_CHANNEL_STATE_DIALING,
- FTDM_CHANNEL_STATE_GET_CALLERID,
- FTDM_CHANNEL_STATE_CALLWAITING,
- FTDM_CHANNEL_STATE_RESTART,
- FTDM_CHANNEL_STATE_PROGRESS,
- FTDM_CHANNEL_STATE_PROGRESS_MEDIA,
- FTDM_CHANNEL_STATE_UP,
- FTDM_CHANNEL_STATE_IDLE,
- FTDM_CHANNEL_STATE_TERMINATING,
- FTDM_CHANNEL_STATE_CANCEL,
- FTDM_CHANNEL_STATE_HANGUP,
- FTDM_CHANNEL_STATE_HANGUP_COMPLETE,
- FTDM_CHANNEL_STATE_IN_LOOP,
- FTDM_CHANNEL_STATE_INVALID
-} ftdm_channel_state_t;
-#define CHANNEL_STATE_STRINGS "DOWN", "HOLD", "SUSPENDED", "DIALTONE", "COLLECT", \
- "RING", "BUSY", "ATTN", "GENRING", "DIALING", "GET_CALLERID", "CALLWAITING", \
- "RESTART", "PROGRESS", "PROGRESS_MEDIA", "UP", "IDLE", "TERMINATING", "CANCEL", \
- "HANGUP", "HANGUP_COMPLETE", "IN_LOOP", "INVALID"
-FTDM_STR2ENUM_P(ftdm_str2ftdm_channel_state, ftdm_channel_state2str, ftdm_channel_state_t)
-
-typedef enum {
- FTDM_CHANNEL_CONFIGURED = (1 << 0),
- FTDM_CHANNEL_READY = (1 << 1),
- FTDM_CHANNEL_OPEN = (1 << 2),
- FTDM_CHANNEL_DTMF_DETECT = (1 << 3),
- FTDM_CHANNEL_SUPRESS_DTMF = (1 << 4),
- FTDM_CHANNEL_TRANSCODE = (1 << 5),
- FTDM_CHANNEL_BUFFER = (1 << 6),
- FTDM_CHANNEL_EVENT = (1 << 7),
- FTDM_CHANNEL_INTHREAD = (1 << 8),
- FTDM_CHANNEL_WINK = (1 << 9),
- FTDM_CHANNEL_FLASH = (1 << 10),
- FTDM_CHANNEL_STATE_CHANGE = (1 << 11),
- FTDM_CHANNEL_HOLD = (1 << 12),
- FTDM_CHANNEL_INUSE = (1 << 13),
- FTDM_CHANNEL_OFFHOOK = (1 << 14),
- FTDM_CHANNEL_RINGING = (1 << 15),
- FTDM_CHANNEL_PROGRESS_DETECT = (1 << 16),
- FTDM_CHANNEL_CALLERID_DETECT = (1 << 17),
- FTDM_CHANNEL_OUTBOUND = (1 << 18),
- FTDM_CHANNEL_SUSPENDED = (1 << 19),
- FTDM_CHANNEL_3WAY = (1 << 20),
- FTDM_CHANNEL_PROGRESS = (1 << 21),
- FTDM_CHANNEL_MEDIA = (1 << 22),
- FTDM_CHANNEL_ANSWERED = (1 << 23),
- FTDM_CHANNEL_MUTE = (1 << 24),
- FTDM_CHANNEL_USE_RX_GAIN = (1 << 25),
- FTDM_CHANNEL_USE_TX_GAIN = (1 << 26),
- FTDM_CHANNEL_IN_ALARM = (1 << 27),
- FTDM_CHANNEL_SIG_UP = (1 << 28),
-} ftdm_channel_flag_t;
-#if defined(__cplusplus) && defined(WIN32)
- // fix C2676
-__inline__ ftdm_channel_flag_t operator|=(ftdm_channel_flag_t a, int32_t b) {
- a = (ftdm_channel_flag_t)(a | b);
- return a;
-}
-__inline__ ftdm_channel_flag_t operator&=(ftdm_channel_flag_t a, int32_t b) {
- a = (ftdm_channel_flag_t)(a & b);
- return a;
-}
-#endif
-
-typedef enum {
- ZSM_NONE,
- ZSM_UNACCEPTABLE,
- ZSM_ACCEPTABLE
-} ftdm_state_map_type_t;
-
-typedef enum {
- ZSD_INBOUND,
- ZSD_OUTBOUND,
-} ftdm_state_direction_t;
-
-#define FTDM_MAP_NODE_SIZE 512
-#define FTDM_MAP_MAX FTDM_CHANNEL_STATE_INVALID+2
-
-struct ftdm_state_map_node {
- ftdm_state_direction_t direction;
- ftdm_state_map_type_t type;
- ftdm_channel_state_t check_states[FTDM_MAP_MAX];
- ftdm_channel_state_t states[FTDM_MAP_MAX];
-};
-typedef struct ftdm_state_map_node ftdm_state_map_node_t;
-
-struct ftdm_state_map {
- ftdm_state_map_node_t nodes[FTDM_MAP_NODE_SIZE];
-};
-typedef struct ftdm_state_map ftdm_state_map_t;
-
-typedef enum ftdm_channel_hw_link_status {
- FTDM_HW_LINK_DISCONNECTED = 0,
- FTDM_HW_LINK_CONNECTED
-} ftdm_channel_hw_link_status_t;
-
-typedef ftdm_status_t (*ftdm_stream_handle_raw_write_function_t) (ftdm_stream_handle_t *handle, uint8_t *data, ftdm_size_t datalen);
-typedef ftdm_status_t (*ftdm_stream_handle_write_function_t) (ftdm_stream_handle_t *handle, const char *fmt, ...);
-
-#include "ftdm_dso.h"
-
-#define FTDM_NODE_NAME_SIZE 50
-struct ftdm_conf_node {
- /* node name */
- char name[FTDM_NODE_NAME_SIZE];
-
- /* total slots for parameters */
- unsigned int t_parameters;
-
- /* current number of parameters */
- unsigned int n_parameters;
-
- /* array of parameters */
- ftdm_conf_parameter_t *parameters;
-
- /* first node child */
- struct ftdm_conf_node *child;
-
- /* next node sibling */
- struct ftdm_conf_node *next;
-
- /* my parent if any */
- struct ftdm_conf_node *parent;
-};
-
-typedef struct ftdm_module {
- char name[256];
- fio_io_load_t io_load;
- fio_io_unload_t io_unload;
- fio_sig_load_t sig_load;
- fio_sig_configure_t sig_configure;
- fio_sig_unload_t sig_unload;
- /*!
- \brief configure a given span signaling
- \see sig_configure
- This is just like sig_configure but receives
- an an ftdm_conf_node_t instead
- I'd like to deprecate sig_configure and move
- all modules to use configure_span_signaling
- */
- fio_configure_span_signaling_t configure_span_signaling;
- ftdm_dso_lib_t lib;
- char path[256];
-} ftdm_module_t;
-
-#ifndef __FUNCTION__
-#define __FUNCTION__ (const char *)__func__
-#endif
-
-typedef struct ftdm_fsk_data_state ftdm_fsk_data_state_t;
-typedef int (*ftdm_fsk_data_decoder_t)(ftdm_fsk_data_state_t *state);
-typedef ftdm_status_t (*ftdm_fsk_write_sample_t)(int16_t *buf, ftdm_size_t buflen, void *user_data);
-typedef struct hashtable ftdm_hash_t;
-typedef struct hashtable_iterator ftdm_hash_iterator_t;
-typedef struct key ftdm_hash_key_t;
-typedef struct value ftdm_hash_val_t;
-typedef struct ftdm_bitstream ftdm_bitstream_t;
-typedef struct ftdm_fsk_modulator ftdm_fsk_modulator_t;
-typedef ftdm_status_t (*ftdm_span_start_t)(ftdm_span_t *span);
-typedef ftdm_status_t (*ftdm_span_stop_t)(ftdm_span_t *span);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-/* For Emacs:
- * Local Variables:
- * mode:c
- * indent-tabs-mode:t
- * tab-width:4
- * c-basic-offset:4
- * End:
- * For VIM:
- * vim:set softtabstop=4 shiftwidth=4 tabstop=4:
- */
-