This source file includes following definitions.
- FTDM_STR2ENUM_P
- FTDM_STR2ENUM_P
- FTDM_STR2ENUM_P
- FTDM_STR2ENUM_P
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #ifndef FTDM_TYPES_H
40 #define FTDM_TYPES_H
41
42 #include "freetdm.h"
43
44 #include "fsk.h"
45
46 #ifdef WIN32
47 typedef intptr_t ftdm_ssize_t;
48 typedef int ftdm_filehandle_t;
49 #else
50 #include <sys/types.h>
51 #include <sys/ioctl.h>
52 #include <stdarg.h>
53 typedef ssize_t ftdm_ssize_t;
54 typedef int ftdm_filehandle_t;
55 #endif
56
57 #ifdef __cplusplus
58 extern "C" {
59 #endif
60
61 #define FTDM_COMMAND_OBJ_SIZE *((ftdm_size_t *)obj)
62 #define FTDM_COMMAND_OBJ_INT *((int *)obj)
63 #define FTDM_COMMAND_OBJ_CHAR_P (char *)obj
64 #define FTDM_COMMAND_OBJ_FLOAT *(float *)obj
65 #define FTDM_FSK_MOD_FACTOR 0x10000
66 #define FTDM_DEFAULT_DTMF_ON 250
67 #define FTDM_DEFAULT_DTMF_OFF 50
68
69 #define FTDM_END -1
70 #define FTDM_ANY_STATE -1
71
72 typedef enum {
73 FTDM_ENDIAN_BIG = 1,
74 FTDM_ENDIAN_LITTLE = -1
75 } ftdm_endian_t;
76
77 typedef enum {
78 FTDM_CID_TYPE_SDMF = 0x04,
79 FTDM_CID_TYPE_MDMF = 0x80
80 } ftdm_cid_type_t;
81
82 typedef enum {
83 MDMF_DATETIME = 1,
84 MDMF_PHONE_NUM = 2,
85 MDMF_DDN = 3,
86 MDMF_NO_NUM = 4,
87 MDMF_PHONE_NAME = 7,
88 MDMF_NO_NAME = 8,
89 MDMF_ALT_ROUTE = 9,
90 MDMF_INVALID = 10
91 } ftdm_mdmf_type_t;
92 #define MDMF_STRINGS "X", "DATETIME", "PHONE_NUM", "DDN", "NO_NUM", "X", "X", "PHONE_NAME", "NO_NAME", "ALT_ROUTE", "INVALID"
93 FTDM_STR2ENUM_P(ftdm_str2ftdm_mdmf_type, ftdm_mdmf_type2str, ftdm_mdmf_type_t)
94
95 #define FTDM_TONEMAP_LEN 128
96 typedef enum {
97 FTDM_TONEMAP_NONE,
98 FTDM_TONEMAP_DIAL,
99 FTDM_TONEMAP_RING,
100 FTDM_TONEMAP_BUSY,
101 FTDM_TONEMAP_FAIL1,
102 FTDM_TONEMAP_FAIL2,
103 FTDM_TONEMAP_FAIL3,
104 FTDM_TONEMAP_ATTN,
105 FTDM_TONEMAP_CALLWAITING_CAS,
106 FTDM_TONEMAP_CALLWAITING_SAS,
107 FTDM_TONEMAP_CALLWAITING_ACK,
108 FTDM_TONEMAP_INVALID
109 } ftdm_tonemap_t;
110 #define TONEMAP_STRINGS "NONE", "DIAL", "RING", "BUSY", "FAIL1", "FAIL2", "FAIL3", "ATTN", "CALLWAITING-CAS", "CALLWAITING-SAS", "CALLWAITING-ACK", "INVALID"
111 FTDM_STR2ENUM_P(ftdm_str2ftdm_tonemap, ftdm_tonemap2str, ftdm_tonemap_t)
112
113 typedef enum {
114 FTDM_ANALOG_START_KEWL,
115 FTDM_ANALOG_START_LOOP,
116 FTDM_ANALOG_START_GROUND,
117 FTDM_ANALOG_START_WINK,
118 FTDM_ANALOG_START_NA
119 } ftdm_analog_start_type_t;
120 #define START_TYPE_STRINGS "KEWL", "LOOP", "GROUND", "WINK", "NA"
121 FTDM_STR2ENUM_P(ftdm_str2ftdm_analog_start_type, ftdm_analog_start_type2str, ftdm_analog_start_type_t)
122
123 typedef enum {
124 FTDM_OOB_NOOP,
125 FTDM_OOB_ONHOOK,
126 FTDM_OOB_OFFHOOK,
127 FTDM_OOB_WINK,
128 FTDM_OOB_FLASH,
129 FTDM_OOB_RING_START,
130 FTDM_OOB_RING_STOP,
131 FTDM_OOB_ALARM_TRAP,
132 FTDM_OOB_ALARM_CLEAR,
133 FTDM_OOB_CAS_BITS_CHANGE,
134 FTDM_OOB_POLARITY_REVERSE,
135 FTDM_OOB_INVALID
136 } ftdm_oob_event_t;
137 #define OOB_STRINGS "NOOP", "ONHOOK", "OFFHOOK", "WINK", "FLASH", "RING_START", "RING_STOP", "ALARM_TRAP", "ALARM_CLEAR", "CAS_BITS_CHANGE", "POLARITY_REVERSE", "INVALID"
138 FTDM_STR2ENUM_P(ftdm_str2ftdm_oob_event, ftdm_oob_event2str, ftdm_oob_event_t)
139
140
141 typedef enum {
142 FTDM_EVENT_NONE,
143
144 FTDM_EVENT_DTMF,
145
146 FTDM_EVENT_OOB,
147 FTDM_EVENT_COUNT
148 } ftdm_event_type_t;
149
150
151 struct ftdm_event {
152 ftdm_event_type_t e_type;
153 uint32_t enum_id;
154 ftdm_channel_t *channel;
155 void *data;
156 };
157
158 typedef enum {
159 FTDM_SIGTYPE_NONE,
160 FTDM_SIGTYPE_ISDN,
161 FTDM_SIGTYPE_RBS,
162 FTDM_SIGTYPE_ANALOG,
163 FTDM_SIGTYPE_SANGOMABOOST,
164 FTDM_SIGTYPE_M3UA,
165 FTDM_SIGTYPE_R2,
166 FTDM_SIGTYPE_SS7
167 } ftdm_signal_type_t;
168
169 typedef enum {
170 FTDM_SPAN_CONFIGURED = (1 << 0),
171 FTDM_SPAN_STARTED = (1 << 1),
172 FTDM_SPAN_STATE_CHANGE = (1 << 2),
173 FTDM_SPAN_SUSPENDED = (1 << 3),
174 FTDM_SPAN_IN_THREAD = (1 << 4),
175 FTDM_SPAN_STOP_THREAD = (1 << 5),
176 FTDM_SPAN_USE_CHAN_QUEUE = (1 << 6),
177 FTDM_SPAN_SUGGEST_CHAN_ID = (1 << 7),
178 FTDM_SPAN_USE_AV_RATE = (1 << 8),
179 FTDM_SPAN_PWR_SAVING = (1 << 9),
180
181
182
183 FTDM_SPAN_USE_SIGNALS_QUEUE = (1 << 10),
184
185 FTDM_SPAN_USE_PROCEED_STATE = (1 << 11),
186
187
188 FTDM_SPAN_USE_SKIP_STATES = (1 << 12),
189
190
191 FTDM_SPAN_NON_STOPPABLE = (1 << 13),
192 } ftdm_span_flag_t;
193
194
195 typedef enum {
196 FTDM_CHANNEL_FEATURE_DTMF_DETECT = (1 << 0),
197 FTDM_CHANNEL_FEATURE_DTMF_GENERATE = (1 << 1),
198 FTDM_CHANNEL_FEATURE_CODECS = (1 << 2),
199 FTDM_CHANNEL_FEATURE_INTERVAL = (1 << 3),
200 FTDM_CHANNEL_FEATURE_CALLERID = (1 << 4),
201 FTDM_CHANNEL_FEATURE_PROGRESS = (1 << 5),
202 FTDM_CHANNEL_FEATURE_CALLWAITING = (1 << 6),
203 FTDM_CHANNEL_FEATURE_HWEC = (1<<7),
204 FTDM_CHANNEL_FEATURE_HWEC_DISABLED_ON_IDLE = (1<<8),
205 FTDM_CHANNEL_FEATURE_IO_STATS = (1<<9),
206 } ftdm_channel_feature_t;
207
208
209 #define FTDM_CHANNEL_CONFIGURED (1ULL << 0)
210 #define FTDM_CHANNEL_READY (1ULL << 1)
211 #define FTDM_CHANNEL_OPEN (1ULL << 2)
212 #define FTDM_CHANNEL_DTMF_DETECT (1ULL << 3)
213 #define FTDM_CHANNEL_SUPRESS_DTMF (1ULL << 4)
214 #define FTDM_CHANNEL_TRANSCODE (1ULL << 5)
215 #define FTDM_CHANNEL_BUFFER (1ULL << 6)
216 #define FTDM_CHANNEL_EVENT (1ULL << 7)
217 #define FTDM_CHANNEL_INTHREAD (1ULL << 8)
218 #define FTDM_CHANNEL_WINK (1ULL << 9)
219 #define FTDM_CHANNEL_FLASH (1ULL << 10)
220 #define FTDM_CHANNEL_STATE_CHANGE (1ULL << 11)
221 #define FTDM_CHANNEL_HOLD (1ULL << 12)
222 #define FTDM_CHANNEL_INUSE (1ULL << 13)
223 #define FTDM_CHANNEL_OFFHOOK (1ULL << 14)
224 #define FTDM_CHANNEL_RINGING (1ULL << 15)
225 #define FTDM_CHANNEL_PROGRESS_DETECT (1ULL << 16)
226 #define FTDM_CHANNEL_CALLERID_DETECT (1ULL << 17)
227 #define FTDM_CHANNEL_OUTBOUND (1ULL << 18)
228 #define FTDM_CHANNEL_SUSPENDED (1ULL << 19)
229 #define FTDM_CHANNEL_3WAY (1ULL << 20)
230
231
232
233
234
235 #define FTDM_CHANNEL_PROGRESS (1ULL << 21)
236 #define FTDM_CHANNEL_MEDIA (1ULL << 22)
237 #define FTDM_CHANNEL_ANSWERED (1ULL << 23)
238
239
240 #define FTDM_CHANNEL_MUTE (1ULL << 24)
241 #define FTDM_CHANNEL_USE_RX_GAIN (1ULL << 25)
242 #define FTDM_CHANNEL_USE_TX_GAIN (1ULL << 26)
243 #define FTDM_CHANNEL_IN_ALARM (1ULL << 27)
244 #define FTDM_CHANNEL_SIG_UP (1ULL << 28)
245 #define FTDM_CHANNEL_USER_HANGUP (1ULL << 29)
246 #define FTDM_CHANNEL_RX_DISABLED (1ULL << 30)
247 #define FTDM_CHANNEL_TX_DISABLED (1ULL << 31)
248
249 #define FTDM_CHANNEL_CALL_STARTED (1ULL << 32)
250
251 #define FTDM_CHANNEL_NONBLOCK (1ULL << 33)
252
253 #define FTDM_CHANNEL_IND_ACK_PENDING (1ULL << 34)
254
255 #define FTDM_CHANNEL_BLOCKING (1ULL << 35)
256
257 #include "ftdm_state.h"
258
259 typedef enum ftdm_channel_hw_link_status {
260 FTDM_HW_LINK_DISCONNECTED = 0,
261 FTDM_HW_LINK_CONNECTED
262 } ftdm_channel_hw_link_status_t;
263
264 typedef ftdm_status_t (*ftdm_stream_handle_raw_write_function_t) (ftdm_stream_handle_t *handle, uint8_t *data, ftdm_size_t datalen);
265 typedef ftdm_status_t (*ftdm_stream_handle_write_function_t) (ftdm_stream_handle_t *handle, const char *fmt, ...);
266
267 #include "ftdm_dso.h"
268
269 #define FTDM_NODE_NAME_SIZE 50
270 struct ftdm_conf_node {
271
272 char name[FTDM_NODE_NAME_SIZE];
273
274
275 unsigned int t_parameters;
276
277
278 unsigned int n_parameters;
279
280
281 ftdm_conf_parameter_t *parameters;
282
283
284 struct ftdm_conf_node *child;
285
286
287 struct ftdm_conf_node *last;
288
289
290 struct ftdm_conf_node *next;
291
292
293 struct ftdm_conf_node *prev;
294
295
296 struct ftdm_conf_node *parent;
297 };
298
299 typedef struct ftdm_module {
300 char name[256];
301 fio_io_load_t io_load;
302 fio_io_unload_t io_unload;
303 fio_sig_load_t sig_load;
304 fio_sig_configure_t sig_configure;
305 fio_sig_unload_t sig_unload;
306
307
308
309
310
311
312
313
314 fio_configure_span_signaling_t configure_span_signaling;
315 ftdm_dso_lib_t lib;
316 char path[256];
317 } ftdm_module_t;
318
319 #ifndef __FUNCTION__
320 #define __FUNCTION__ (const char *)__func__
321 #endif
322
323 typedef struct ftdm_fsk_data_state ftdm_fsk_data_state_t;
324 typedef int (*ftdm_fsk_data_decoder_t)(ftdm_fsk_data_state_t *state);
325 typedef ftdm_status_t (*ftdm_fsk_write_sample_t)(int16_t *buf, ftdm_size_t buflen, void *user_data);
326 typedef struct hashtable ftdm_hash_t;
327 typedef struct hashtable_iterator ftdm_hash_iterator_t;
328 typedef struct key ftdm_hash_key_t;
329 typedef struct value ftdm_hash_val_t;
330 typedef struct ftdm_bitstream ftdm_bitstream_t;
331 typedef struct ftdm_fsk_modulator ftdm_fsk_modulator_t;
332 typedef ftdm_status_t (*ftdm_span_start_t)(ftdm_span_t *span);
333 typedef ftdm_status_t (*ftdm_span_stop_t)(ftdm_span_t *span);
334 typedef ftdm_status_t (*ftdm_channel_sig_read_t)(ftdm_channel_t *ftdmchan, void *data, ftdm_size_t size);
335 typedef ftdm_status_t (*ftdm_channel_sig_write_t)(ftdm_channel_t *ftdmchan, void *data, ftdm_size_t size);
336
337 typedef enum {
338 FTDM_ITERATOR_VARS = 1,
339 FTDM_ITERATOR_CHANS,
340 } ftdm_iterator_type_t;
341
342 struct ftdm_iterator {
343 ftdm_iterator_type_t type;
344 unsigned int allocated:1;
345 union {
346 struct {
347 uint32_t index;
348 const ftdm_span_t *span;
349 } chaniter;
350 ftdm_hash_iterator_t *hashiter;
351 } pvt;
352 };
353
354 #ifdef __cplusplus
355 }
356 #endif
357
358 #endif
359
360
361
362
363
364
365
366
367
368
369
370