This source file includes following definitions.
- 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 FREETDM_H
40 #define FREETDM_H
41
42
43 #include "ftdm_declare.h"
44
45
46 #define FTDM_MAX_CHANNELS_PHYSICAL_SPAN 32
47
48
49 #define FTDM_MAX_PHYSICAL_SPANS_PER_LOGICAL_SPAN 32
50
51
52 #define FTDM_MAX_CHANNELS_SPAN FTDM_MAX_CHANNELS_PHYSICAL_SPAN * FTDM_MAX_PHYSICAL_SPANS_PER_LOGICAL_SPAN
53
54
55 #define FTDM_MAX_SPANS_INTERFACE 128
56
57
58 #define FTDM_MAX_CHANNELS_GROUP 1024
59
60
61 #define FTDM_MAX_GROUPS_INTERFACE FTDM_MAX_SPANS_INTERFACE
62
63 #define FTDM_INVALID_INT_PARM 0xFF
64
65
66 typedef enum {
67 FTDM_SUCCESS,
68 FTDM_FAIL,
69 FTDM_MEMERR,
70 FTDM_TIMEOUT,
71 FTDM_NOTIMPL,
72 FTDM_BREAK,
73 FTDM_EINVAL
74 } ftdm_status_t;
75
76
77 typedef enum {
78 FTDM_FALSE,
79 FTDM_TRUE
80 } ftdm_bool_t;
81
82
83 #include "ftdm_os.h"
84
85 #ifdef __cplusplus
86 extern "C" {
87 #endif
88
89
90 #define FTDM_MAX_NAME_STR_SZ 80
91
92
93 #define FTDM_MAX_NUMBER_STR_SZ 20
94
95
96 typedef enum {
97 FTDM_CAUSE_NONE = 0,
98 FTDM_CAUSE_UNALLOCATED = 1,
99 FTDM_CAUSE_NO_ROUTE_TRANSIT_NET = 2,
100 FTDM_CAUSE_NO_ROUTE_DESTINATION = 3,
101 FTDM_CAUSE_CHANNEL_UNACCEPTABLE = 6,
102 FTDM_CAUSE_CALL_AWARDED_DELIVERED = 7,
103 FTDM_CAUSE_NORMAL_CLEARING = 16,
104 FTDM_CAUSE_USER_BUSY = 17,
105 FTDM_CAUSE_NO_USER_RESPONSE = 18,
106 FTDM_CAUSE_NO_ANSWER = 19,
107 FTDM_CAUSE_SUBSCRIBER_ABSENT = 20,
108 FTDM_CAUSE_CALL_REJECTED = 21,
109 FTDM_CAUSE_NUMBER_CHANGED = 22,
110 FTDM_CAUSE_REDIRECTION_TO_NEW_DESTINATION = 23,
111 FTDM_CAUSE_EXCHANGE_ROUTING_ERROR = 25,
112 FTDM_CAUSE_DESTINATION_OUT_OF_ORDER = 27,
113 FTDM_CAUSE_INVALID_NUMBER_FORMAT = 28,
114 FTDM_CAUSE_FACILITY_REJECTED = 29,
115 FTDM_CAUSE_RESPONSE_TO_STATUS_ENQUIRY = 30,
116 FTDM_CAUSE_NORMAL_UNSPECIFIED = 31,
117 FTDM_CAUSE_NORMAL_CIRCUIT_CONGESTION = 34,
118 FTDM_CAUSE_NETWORK_OUT_OF_ORDER = 38,
119 FTDM_CAUSE_NORMAL_TEMPORARY_FAILURE = 41,
120 FTDM_CAUSE_SWITCH_CONGESTION = 42,
121 FTDM_CAUSE_ACCESS_INFO_DISCARDED = 43,
122 FTDM_CAUSE_REQUESTED_CHAN_UNAVAIL = 44,
123 FTDM_CAUSE_PRE_EMPTED = 45,
124 FTDM_CAUSE_FACILITY_NOT_SUBSCRIBED = 50,
125 FTDM_CAUSE_OUTGOING_CALL_BARRED = 52,
126 FTDM_CAUSE_INCOMING_CALL_BARRED = 54,
127 FTDM_CAUSE_BEARERCAPABILITY_NOTAUTH = 57,
128 FTDM_CAUSE_BEARERCAPABILITY_NOTAVAIL = 58,
129 FTDM_CAUSE_SERVICE_UNAVAILABLE = 63,
130 FTDM_CAUSE_BEARERCAPABILITY_NOTIMPL = 65,
131 FTDM_CAUSE_CHAN_NOT_IMPLEMENTED = 66,
132 FTDM_CAUSE_FACILITY_NOT_IMPLEMENTED = 69,
133 FTDM_CAUSE_SERVICE_NOT_IMPLEMENTED = 79,
134 FTDM_CAUSE_INVALID_CALL_REFERENCE = 81,
135 FTDM_CAUSE_INCOMPATIBLE_DESTINATION = 88,
136 FTDM_CAUSE_INVALID_MSG_UNSPECIFIED = 95,
137 FTDM_CAUSE_MANDATORY_IE_MISSING = 96,
138 FTDM_CAUSE_MESSAGE_TYPE_NONEXIST = 97,
139 FTDM_CAUSE_WRONG_MESSAGE = 98,
140 FTDM_CAUSE_IE_NONEXIST = 99,
141 FTDM_CAUSE_INVALID_IE_CONTENTS = 100,
142 FTDM_CAUSE_WRONG_CALL_STATE = 101,
143 FTDM_CAUSE_RECOVERY_ON_TIMER_EXPIRE = 102,
144 FTDM_CAUSE_MANDATORY_IE_LENGTH_ERROR = 103,
145 FTDM_CAUSE_PROTOCOL_ERROR = 111,
146 FTDM_CAUSE_INTERWORKING = 127,
147 FTDM_CAUSE_SUCCESS = 142,
148 FTDM_CAUSE_ORIGINATOR_CANCEL = 487,
149 FTDM_CAUSE_CRASH = 500,
150 FTDM_CAUSE_SYSTEM_SHUTDOWN = 501,
151 FTDM_CAUSE_LOSE_RACE = 502,
152 FTDM_CAUSE_MANAGER_REQUEST = 503,
153 FTDM_CAUSE_BLIND_TRANSFER = 600,
154 FTDM_CAUSE_ATTENDED_TRANSFER = 601,
155 FTDM_CAUSE_ALLOTTED_TIMEOUT = 602,
156 FTDM_CAUSE_USER_CHALLENGE = 603,
157 FTDM_CAUSE_MEDIA_TIMEOUT = 604
158 } ftdm_call_cause_t;
159
160
161 typedef enum {
162 FTDM_TOP_DOWN,
163 FTDM_BOTTOM_UP
164 } ftdm_direction_t;
165
166
167 typedef enum {
168 FTDM_CHAN_TYPE_B,
169 FTDM_CHAN_TYPE_DQ921,
170 FTDM_CHAN_TYPE_DQ931,
171 FTDM_CHAN_TYPE_FXS,
172 FTDM_CHAN_TYPE_FXO,
173 FTDM_CHAN_TYPE_EM,
174 FTDM_CHAN_TYPE_CAS,
175 FTDM_CHAN_TYPE_COUNT
176 } ftdm_chan_type_t;
177 #define CHAN_TYPE_STRINGS "B", "DQ921", "DQ931", "FXS", "FXO", "EM", "CAS", "INVALID"
178
179
180
181
182 FTDM_STR2ENUM_P(ftdm_str2ftdm_chan_type, ftdm_chan_type2str, ftdm_chan_type_t)
183
184
185 #define FTDM_IS_VOICE_CHANNEL(ftdm_chan) ((ftdm_chan)->type != FTDM_CHAN_TYPE_DQ921 && (ftdm_chan)->type != FTDM_CHAN_TYPE_DQ931)
186
187
188 #define FTDM_IS_DCHAN(ftdm_chan) ((ftdm_chan)->type == FTDM_CHAN_TYPE_DQ921 || (ftdm_chan)->type == FTDM_CHAN_TYPE_DQ931)
189
190
191
192
193 typedef void (*ftdm_logger_t)(const char *file, const char *func, int line, int level, const char *fmt, ...);
194
195
196
197
198 typedef ftdm_status_t (*ftdm_queue_create_func_t)(ftdm_queue_t **queue, ftdm_size_t capacity);
199 typedef ftdm_status_t (*ftdm_queue_enqueue_func_t)(ftdm_queue_t *queue, void *obj);
200 typedef void *(*ftdm_queue_dequeue_func_t)(ftdm_queue_t *queue);
201 typedef ftdm_status_t (*ftdm_queue_wait_func_t)(ftdm_queue_t *queue, int ms);
202 typedef ftdm_status_t (*ftdm_queue_get_interrupt_func_t)(ftdm_queue_t *queue, ftdm_interrupt_t **interrupt);
203 typedef ftdm_status_t (*ftdm_queue_destroy_func_t)(ftdm_queue_t **queue);
204 typedef struct ftdm_queue_handler {
205 ftdm_queue_create_func_t create;
206 ftdm_queue_enqueue_func_t enqueue;
207 ftdm_queue_dequeue_func_t dequeue;
208 ftdm_queue_wait_func_t wait;
209 ftdm_queue_get_interrupt_func_t get_interrupt;
210 ftdm_queue_destroy_func_t destroy;
211 } ftdm_queue_handler_t;
212
213
214
215 typedef enum {
216 FTDM_TON_UNKNOWN = 0,
217 FTDM_TON_INTERNATIONAL,
218 FTDM_TON_NATIONAL,
219 FTDM_TON_NETWORK_SPECIFIC,
220 FTDM_TON_SUBSCRIBER_NUMBER,
221 FTDM_TON_ABBREVIATED_NUMBER,
222 FTDM_TON_RESERVED,
223 FTDM_TON_INVALID = 255
224 } ftdm_ton_t;
225
226
227 typedef enum {
228 FTDM_NPI_UNKNOWN = 0,
229 FTDM_NPI_ISDN = 1,
230 FTDM_NPI_DATA = 3,
231 FTDM_NPI_TELEX = 4,
232 FTDM_NPI_NATIONAL = 8,
233 FTDM_NPI_PRIVATE = 9,
234 FTDM_NPI_RESERVED = 10,
235 FTDM_NPI_INVALID = 255
236 } ftdm_npi_t;
237
238
239 typedef struct {
240 char digits[25];
241 uint8_t type;
242 uint8_t plan;
243 } ftdm_number_t;
244
245
246 typedef enum {
247 FTDM_BEARER_CAP_SPEECH = 0x00,
248 FTDM_BEARER_CAP_64K_UNRESTRICTED = 0x02,
249 FTDM_BEARER_CAP_3_1KHZ_AUDIO = 0x03
250 } ftdm_bearer_cap_t;
251
252
253 typedef enum {
254 FTDM_USER_LAYER1_PROT_V110 = 0x01,
255 FTDM_USER_LAYER1_PROT_ULAW = 0x02,
256 FTDM_USER_LAYER1_PROT_ALAW = 0x03,
257 } ftdm_user_layer1_prot_t;
258
259
260 typedef struct ftdm_caller_data {
261 char cid_date[8];
262 char cid_name[80];
263 ftdm_number_t cid_num;
264 ftdm_number_t ani;
265 ftdm_number_t dnis;
266 ftdm_number_t rdnis;
267 char aniII[25];
268 uint8_t screen;
269 uint8_t pres;
270 char collected[25];
271 int hangup_cause;
272 char raw_data[1024];
273 uint32_t raw_data_len;
274
275
276 ftdm_bearer_cap_t bearer_capability;
277
278 ftdm_user_layer1_prot_t bearer_layer1;
279 } ftdm_caller_data_t;
280
281
282 typedef enum {
283 FTDM_TONE_DTMF = (1 << 0)
284 } ftdm_tone_type_t;
285
286
287 typedef enum {
288 FTDM_SIGEVENT_START,
289 FTDM_SIGEVENT_STOP,
290 FTDM_SIGEVENT_UP,
291 FTDM_SIGEVENT_FLASH,
292 FTDM_SIGEVENT_PROGRESS,
293 FTDM_SIGEVENT_PROGRESS_MEDIA,
294 FTDM_SIGEVENT_ALARM_TRAP,
295 FTDM_SIGEVENT_ALARM_CLEAR,
296 FTDM_SIGEVENT_COLLECTED_DIGIT,
297 FTDM_SIGEVENT_ADD_CALL,
298 FTDM_SIGEVENT_RESTART,
299 FTDM_SIGEVENT_SIGSTATUS_CHANGED,
300 FTDM_SIGEVENT_COLLISION,
301 FTDM_SIGEVENT_INVALID
302 } ftdm_signal_event_t;
303 #define SIGNAL_STRINGS "START", "STOP", "UP", "FLASH", "PROGRESS", \
304 "PROGRESS_MEDIA", "ALARM_TRAP", "ALARM_CLEAR", \
305 "COLLECTED_DIGIT", "ADD_CALL", "RESTART", "SIGSTATUS_CHANGED", "COLLISION", "INVALID"
306
307
308 FTDM_STR2ENUM_P(ftdm_str2ftdm_signal_event, ftdm_signal_event2str, ftdm_signal_event_t)
309
310
311 typedef enum {
312 FTDM_TRUNK_E1,
313 FTDM_TRUNK_T1,
314 FTDM_TRUNK_J1,
315 FTDM_TRUNK_BRI,
316 FTDM_TRUNK_BRI_PTMP,
317 FTDM_TRUNK_FXO,
318 FTDM_TRUNK_FXS,
319 FTDM_TRUNK_EM,
320 FTDM_TRUNK_NONE
321 } ftdm_trunk_type_t;
322 #define TRUNK_STRINGS "E1", "T1", "J1", "BRI", "BRI_PTMP", "FXO", "FXS", "EM", "NONE"
323
324
325 FTDM_STR2ENUM_P(ftdm_str2ftdm_trunk_type, ftdm_trunk_type2str, ftdm_trunk_type_t)
326
327
328 typedef struct ftdm_channel_config {
329 char name[FTDM_MAX_NAME_STR_SZ];
330 char number[FTDM_MAX_NUMBER_STR_SZ];
331 char group_name[FTDM_MAX_NAME_STR_SZ];
332 ftdm_chan_type_t type;
333 float rxgain;
334 float txgain;
335 } ftdm_channel_config_t;
336
337
338
339
340 typedef enum {
341
342 FTDM_SIG_STATE_DOWN,
343
344 FTDM_SIG_STATE_SUSPENDED,
345
346 FTDM_SIG_STATE_UP,
347
348 FTDM_SIG_STATE_INVALID
349 } ftdm_signaling_status_t;
350 #define SIGSTATUS_STRINGS "DOWN", "SUSPENDED", "UP", "INVALID"
351
352
353 FTDM_STR2ENUM_P(ftdm_str2ftdm_signaling_status, ftdm_signaling_status2str, ftdm_signaling_status_t)
354
355
356 struct ftdm_sigmsg {
357 ftdm_signal_event_t event_id;
358 ftdm_channel_t *channel;
359 uint32_t chan_id;
360 uint32_t span_id;
361 ftdm_signaling_status_t sigstatus;
362 void *raw_data;
363 uint32_t raw_data_len;
364 };
365
366
367
368 typedef enum {
369 FTDM_CRASH_NEVER = 0,
370 FTDM_CRASH_ON_ASSERT
371 } ftdm_crash_policy_t;
372
373
374 typedef enum {
375 FTDM_NO_FLAGS = 0,
376 FTDM_READ = (1 << 0),
377 FTDM_WRITE = (1 << 1),
378 FTDM_EVENTS = (1 << 2)
379 } ftdm_wait_flag_t;
380
381
382 typedef struct ftdm_conf_parameter {
383 const char *var;
384 const char *val;
385 void *ptr;
386 } ftdm_conf_parameter_t;
387
388
389 typedef struct ftdm_iterator ftdm_iterator_t;
390
391
392 typedef enum {
393 FTDM_COMMAND_NOOP,
394 FTDM_COMMAND_SET_INTERVAL,
395 FTDM_COMMAND_GET_INTERVAL,
396 FTDM_COMMAND_SET_CODEC,
397 FTDM_COMMAND_GET_CODEC,
398 FTDM_COMMAND_SET_NATIVE_CODEC,
399 FTDM_COMMAND_GET_NATIVE_CODEC,
400 FTDM_COMMAND_ENABLE_DTMF_DETECT,
401 FTDM_COMMAND_DISABLE_DTMF_DETECT,
402 FTDM_COMMAND_SEND_DTMF,
403 FTDM_COMMAND_SET_DTMF_ON_PERIOD,
404 FTDM_COMMAND_GET_DTMF_ON_PERIOD,
405 FTDM_COMMAND_SET_DTMF_OFF_PERIOD,
406 FTDM_COMMAND_GET_DTMF_OFF_PERIOD,
407 FTDM_COMMAND_GENERATE_RING_ON,
408 FTDM_COMMAND_GENERATE_RING_OFF,
409 FTDM_COMMAND_OFFHOOK,
410 FTDM_COMMAND_ONHOOK,
411 FTDM_COMMAND_FLASH,
412 FTDM_COMMAND_WINK,
413 FTDM_COMMAND_ENABLE_PROGRESS_DETECT,
414 FTDM_COMMAND_DISABLE_PROGRESS_DETECT,
415 FTDM_COMMAND_TRACE_INPUT,
416 FTDM_COMMAND_TRACE_OUTPUT,
417 FTDM_COMMAND_TRACE_END_ALL,
418 FTDM_COMMAND_ENABLE_CALLERID_DETECT,
419 FTDM_COMMAND_DISABLE_CALLERID_DETECT,
420 FTDM_COMMAND_ENABLE_ECHOCANCEL,
421 FTDM_COMMAND_DISABLE_ECHOCANCEL,
422 FTDM_COMMAND_ENABLE_ECHOTRAIN,
423 FTDM_COMMAND_DISABLE_ECHOTRAIN,
424 FTDM_COMMAND_SET_CAS_BITS,
425 FTDM_COMMAND_GET_CAS_BITS,
426 FTDM_COMMAND_SET_RX_GAIN,
427 FTDM_COMMAND_GET_RX_GAIN,
428 FTDM_COMMAND_SET_TX_GAIN,
429 FTDM_COMMAND_GET_TX_GAIN,
430 FTDM_COMMAND_FLUSH_TX_BUFFERS,
431 FTDM_COMMAND_FLUSH_RX_BUFFERS,
432 FTDM_COMMAND_FLUSH_BUFFERS,
433 FTDM_COMMAND_SET_PRE_BUFFER_SIZE,
434 FTDM_COMMAND_SET_LINK_STATUS,
435 FTDM_COMMAND_GET_LINK_STATUS,
436 FTDM_COMMAND_ENABLE_LOOP,
437 FTDM_COMMAND_DISABLE_LOOP,
438 FTDM_COMMAND_COUNT
439 } ftdm_command_t;
440
441
442 typedef void *(*ftdm_malloc_func_t)(void *pool, ftdm_size_t len);
443 typedef void *(*ftdm_calloc_func_t)(void *pool, ftdm_size_t elements, ftdm_size_t len);
444 typedef void *(*ftdm_realloc_func_t)(void *pool, void *buff, ftdm_size_t len);
445 typedef void (*ftdm_free_func_t)(void *pool, void *ptr);
446 struct ftdm_memory_handler {
447 void *pool;
448 ftdm_malloc_func_t malloc;
449 ftdm_calloc_func_t calloc;
450 ftdm_realloc_func_t realloc;
451 ftdm_free_func_t free;
452 };
453
454
455
456 #define FIO_CHANNEL_REQUEST_ARGS (ftdm_span_t *span, uint32_t chan_id, ftdm_direction_t direction, ftdm_caller_data_t *caller_data, ftdm_channel_t **ftdmchan)
457 #define FIO_CHANNEL_OUTGOING_CALL_ARGS (ftdm_channel_t *ftdmchan)
458 #define FIO_CHANNEL_SET_SIG_STATUS_ARGS (ftdm_channel_t *ftdmchan, ftdm_signaling_status_t status)
459 #define FIO_CHANNEL_GET_SIG_STATUS_ARGS (ftdm_channel_t *ftdmchan, ftdm_signaling_status_t *status)
460 #define FIO_SPAN_SET_SIG_STATUS_ARGS (ftdm_span_t *span, ftdm_signaling_status_t status)
461 #define FIO_SPAN_GET_SIG_STATUS_ARGS (ftdm_span_t *span, ftdm_signaling_status_t *status)
462 #define FIO_SPAN_POLL_EVENT_ARGS (ftdm_span_t *span, uint32_t ms)
463 #define FIO_SPAN_NEXT_EVENT_ARGS (ftdm_span_t *span, ftdm_event_t **event)
464 #define FIO_SIGNAL_CB_ARGS (ftdm_sigmsg_t *sigmsg)
465 #define FIO_EVENT_CB_ARGS (ftdm_channel_t *ftdmchan, ftdm_event_t *event)
466 #define FIO_CONFIGURE_SPAN_ARGS (ftdm_span_t *span, const char *str, ftdm_chan_type_t type, char *name, char *number)
467 #define FIO_CONFIGURE_ARGS (const char *category, const char *var, const char *val, int lineno)
468 #define FIO_OPEN_ARGS (ftdm_channel_t *ftdmchan)
469 #define FIO_CLOSE_ARGS (ftdm_channel_t *ftdmchan)
470 #define FIO_CHANNEL_DESTROY_ARGS (ftdm_channel_t *ftdmchan)
471 #define FIO_SPAN_DESTROY_ARGS (ftdm_span_t *span)
472 #define FIO_COMMAND_ARGS (ftdm_channel_t *ftdmchan, ftdm_command_t command, void *obj)
473 #define FIO_WAIT_ARGS (ftdm_channel_t *ftdmchan, ftdm_wait_flag_t *flags, int32_t to)
474 #define FIO_GET_ALARMS_ARGS (ftdm_channel_t *ftdmchan)
475 #define FIO_READ_ARGS (ftdm_channel_t *ftdmchan, void *data, ftdm_size_t *datalen)
476 #define FIO_WRITE_ARGS (ftdm_channel_t *ftdmchan, void *data, ftdm_size_t *datalen)
477 #define FIO_IO_LOAD_ARGS (ftdm_io_interface_t **fio)
478 #define FIO_IO_UNLOAD_ARGS (void)
479 #define FIO_SIG_LOAD_ARGS (void)
480 #define FIO_SIG_CONFIGURE_ARGS (ftdm_span_t *span, fio_signal_cb_t sig_cb, va_list ap)
481 #define FIO_CONFIGURE_SPAN_SIGNALING_ARGS (ftdm_span_t *span, fio_signal_cb_t sig_cb, ftdm_conf_parameter_t *ftdm_parameters)
482 #define FIO_SIG_UNLOAD_ARGS (void)
483 #define FIO_API_ARGS (ftdm_stream_handle_t *stream, const char *data)
484
485
486
487 typedef ftdm_status_t (*fio_channel_request_t) FIO_CHANNEL_REQUEST_ARGS ;
488 typedef ftdm_status_t (*fio_channel_outgoing_call_t) FIO_CHANNEL_OUTGOING_CALL_ARGS ;
489 typedef ftdm_status_t (*fio_channel_set_sig_status_t) FIO_CHANNEL_SET_SIG_STATUS_ARGS;
490 typedef ftdm_status_t (*fio_channel_get_sig_status_t) FIO_CHANNEL_GET_SIG_STATUS_ARGS;
491 typedef ftdm_status_t (*fio_span_set_sig_status_t) FIO_SPAN_SET_SIG_STATUS_ARGS;
492 typedef ftdm_status_t (*fio_span_get_sig_status_t) FIO_SPAN_GET_SIG_STATUS_ARGS;
493 typedef ftdm_status_t (*fio_span_poll_event_t) FIO_SPAN_POLL_EVENT_ARGS ;
494 typedef ftdm_status_t (*fio_span_next_event_t) FIO_SPAN_NEXT_EVENT_ARGS ;
495 typedef ftdm_status_t (*fio_signal_cb_t) FIO_SIGNAL_CB_ARGS ;
496 typedef ftdm_status_t (*fio_event_cb_t) FIO_EVENT_CB_ARGS ;
497 typedef ftdm_status_t (*fio_configure_span_t) FIO_CONFIGURE_SPAN_ARGS ;
498 typedef ftdm_status_t (*fio_configure_t) FIO_CONFIGURE_ARGS ;
499 typedef ftdm_status_t (*fio_open_t) FIO_OPEN_ARGS ;
500 typedef ftdm_status_t (*fio_close_t) FIO_CLOSE_ARGS ;
501 typedef ftdm_status_t (*fio_channel_destroy_t) FIO_CHANNEL_DESTROY_ARGS ;
502 typedef ftdm_status_t (*fio_span_destroy_t) FIO_SPAN_DESTROY_ARGS ;
503 typedef ftdm_status_t (*fio_get_alarms_t) FIO_GET_ALARMS_ARGS ;
504 typedef ftdm_status_t (*fio_command_t) FIO_COMMAND_ARGS ;
505 typedef ftdm_status_t (*fio_wait_t) FIO_WAIT_ARGS ;
506 typedef ftdm_status_t (*fio_read_t) FIO_READ_ARGS ;
507 typedef ftdm_status_t (*fio_write_t) FIO_WRITE_ARGS ;
508 typedef ftdm_status_t (*fio_io_load_t) FIO_IO_LOAD_ARGS ;
509 typedef ftdm_status_t (*fio_sig_load_t) FIO_SIG_LOAD_ARGS ;
510 typedef ftdm_status_t (*fio_sig_configure_t) FIO_SIG_CONFIGURE_ARGS ;
511 typedef ftdm_status_t (*fio_configure_span_signaling_t) FIO_CONFIGURE_SPAN_SIGNALING_ARGS ;
512 typedef ftdm_status_t (*fio_io_unload_t) FIO_IO_UNLOAD_ARGS ;
513 typedef ftdm_status_t (*fio_sig_unload_t) FIO_SIG_UNLOAD_ARGS ;
514 typedef ftdm_status_t (*fio_api_t) FIO_API_ARGS ;
515
516
517
518
519 #define FIO_CHANNEL_REQUEST_FUNCTION(name) ftdm_status_t name FIO_CHANNEL_REQUEST_ARGS
520 #define FIO_CHANNEL_OUTGOING_CALL_FUNCTION(name) ftdm_status_t name FIO_CHANNEL_OUTGOING_CALL_ARGS
521 #define FIO_CHANNEL_SET_SIG_STATUS_FUNCTION(name) ftdm_status_t name FIO_CHANNEL_SET_SIG_STATUS_ARGS
522 #define FIO_CHANNEL_GET_SIG_STATUS_FUNCTION(name) ftdm_status_t name FIO_CHANNEL_GET_SIG_STATUS_ARGS
523 #define FIO_SPAN_SET_SIG_STATUS_FUNCTION(name) ftdm_status_t name FIO_SPAN_SET_SIG_STATUS_ARGS
524 #define FIO_SPAN_GET_SIG_STATUS_FUNCTION(name) ftdm_status_t name FIO_SPAN_GET_SIG_STATUS_ARGS
525 #define FIO_SPAN_POLL_EVENT_FUNCTION(name) ftdm_status_t name FIO_SPAN_POLL_EVENT_ARGS
526 #define FIO_SPAN_NEXT_EVENT_FUNCTION(name) ftdm_status_t name FIO_SPAN_NEXT_EVENT_ARGS
527 #define FIO_SIGNAL_CB_FUNCTION(name) ftdm_status_t name FIO_SIGNAL_CB_ARGS
528 #define FIO_EVENT_CB_FUNCTION(name) ftdm_status_t name FIO_EVENT_CB_ARGS
529 #define FIO_CONFIGURE_SPAN_FUNCTION(name) ftdm_status_t name FIO_CONFIGURE_SPAN_ARGS
530 #define FIO_CONFIGURE_FUNCTION(name) ftdm_status_t name FIO_CONFIGURE_ARGS
531 #define FIO_OPEN_FUNCTION(name) ftdm_status_t name FIO_OPEN_ARGS
532 #define FIO_CLOSE_FUNCTION(name) ftdm_status_t name FIO_CLOSE_ARGS
533 #define FIO_CHANNEL_DESTROY_FUNCTION(name) ftdm_status_t name FIO_CHANNEL_DESTROY_ARGS
534 #define FIO_SPAN_DESTROY_FUNCTION(name) ftdm_status_t name FIO_SPAN_DESTROY_ARGS
535 #define FIO_GET_ALARMS_FUNCTION(name) ftdm_status_t name FIO_GET_ALARMS_ARGS
536 #define FIO_COMMAND_FUNCTION(name) ftdm_status_t name FIO_COMMAND_ARGS
537 #define FIO_WAIT_FUNCTION(name) ftdm_status_t name FIO_WAIT_ARGS
538 #define FIO_READ_FUNCTION(name) ftdm_status_t name FIO_READ_ARGS
539 #define FIO_WRITE_FUNCTION(name) ftdm_status_t name FIO_WRITE_ARGS
540 #define FIO_IO_LOAD_FUNCTION(name) ftdm_status_t name FIO_IO_LOAD_ARGS
541 #define FIO_SIG_LOAD_FUNCTION(name) ftdm_status_t name FIO_SIG_LOAD_ARGS
542 #define FIO_SIG_CONFIGURE_FUNCTION(name) ftdm_status_t name FIO_SIG_CONFIGURE_ARGS
543 #define FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(name) ftdm_status_t name FIO_CONFIGURE_SPAN_SIGNALING_ARGS
544 #define FIO_IO_UNLOAD_FUNCTION(name) ftdm_status_t name FIO_IO_UNLOAD_ARGS
545 #define FIO_SIG_UNLOAD_FUNCTION(name) ftdm_status_t name FIO_SIG_UNLOAD_ARGS
546 #define FIO_API_FUNCTION(name) ftdm_status_t name FIO_API_ARGS
547
548
549
550 struct ftdm_io_interface {
551 const char *name;
552 fio_configure_span_t configure_span;
553 fio_configure_t configure;
554 fio_open_t open;
555 fio_close_t close;
556 fio_channel_destroy_t channel_destroy;
557 fio_span_destroy_t span_destroy;
558 fio_get_alarms_t get_alarms;
559 fio_command_t command;
560 fio_wait_t wait;
561 fio_read_t read;
562 fio_write_t write;
563 fio_span_poll_event_t poll_event;
564 fio_span_next_event_t next_event;
565 fio_api_t api;
566 };
567
568
569 typedef enum {
570 FTDM_CODEC_ULAW = 0,
571 FTDM_CODEC_ALAW = 8,
572 FTDM_CODEC_SLIN = 10,
573 FTDM_CODEC_NONE = (1 << 30)
574 } ftdm_codec_t;
575
576
577
578
579 typedef enum {
580 FTDM_CHANNEL_INDICATE_RING,
581 FTDM_CHANNEL_INDICATE_PROCEED,
582 FTDM_CHANNEL_INDICATE_PROGRESS,
583 FTDM_CHANNEL_INDICATE_PROGRESS_MEDIA,
584 FTDM_CHANNEL_INDICATE_BUSY,
585 } ftdm_channel_indication_t;
586
587
588 typedef enum {
589 FTDM_ALARM_NONE = 0,
590 FTDM_ALARM_RED = (1 << 1),
591 FTDM_ALARM_YELLOW = (1 << 2),
592 FTDM_ALARM_RAI = (1 << 3),
593 FTDM_ALARM_BLUE = (1 << 4),
594 FTDM_ALARM_AIS = (1 << 5),
595 FTDM_ALARM_GENERAL = (1 << 30)
596 } ftdm_alarm_flag_t;
597
598
599 FT_DECLARE(ftdm_status_t) ftdm_global_set_queue_handler(ftdm_queue_handler_t *handler);
600
601
602 #define ftdm_channel_call_answer(ftdmchan) _ftdm_channel_call_answer(__FILE__, __FUNCTION__, __LINE__, (ftdmchan))
603
604
605 FT_DECLARE(ftdm_status_t) _ftdm_channel_call_answer(const char *file, const char *func, int line, ftdm_channel_t *ftdmchan);
606
607
608 #define ftdm_channel_call_place(ftdmchan) _ftdm_channel_call_place(__FILE__, __FUNCTION__, __LINE__, (ftdmchan))
609
610
611 FT_DECLARE(ftdm_status_t) _ftdm_channel_call_place(const char *file, const char *func, int line, ftdm_channel_t *ftdmchan);
612
613
614 #define ftdm_channel_call_indicate(ftdmchan, indication) _ftdm_channel_call_indicate(__FILE__, __FUNCTION__, __LINE__, (ftdmchan), (indication))
615
616
617 FT_DECLARE(ftdm_status_t) _ftdm_channel_call_indicate(const char *file, const char *func, int line, ftdm_channel_t *ftdmchan, ftdm_channel_indication_t indication);
618
619
620 #define ftdm_channel_call_hangup(ftdmchan) _ftdm_channel_call_hangup(__FILE__, __FUNCTION__, __LINE__, (ftdmchan))
621
622
623 FT_DECLARE(ftdm_status_t) _ftdm_channel_call_hangup(const char *file, const char *func, int line, ftdm_channel_t *ftdmchan);
624
625
626 #define ftdm_channel_call_hangup_with_cause(ftdmchan, cause) _ftdm_channel_call_hangup_with_cause(__FILE__, __FUNCTION__, __LINE__, (ftdmchan), (cause))
627
628
629 FT_DECLARE(ftdm_status_t) _ftdm_channel_call_hangup_with_cause(const char *file, const char *func, int line, ftdm_channel_t *ftdmchan, ftdm_call_cause_t);
630
631
632 #define ftdm_channel_call_hold(ftdmchan) _ftdm_channel_call_hold(__FILE__, __FUNCTION__, __LINE__, (ftdmchan))
633
634
635 FT_DECLARE(ftdm_status_t) _ftdm_channel_call_hold(const char *file, const char *func, int line, ftdm_channel_t *ftdmchan);
636
637
638 #define ftdm_channel_call_unhold(ftdmchan) _ftdm_channel_call_unhold(__FILE__, __FUNCTION__, __LINE__, (ftdmchan))
639
640
641 FT_DECLARE(ftdm_status_t) _ftdm_channel_call_unhold(const char *file, const char *func, int line, ftdm_channel_t *ftdmchan);
642
643
644 FT_DECLARE(ftdm_bool_t) ftdm_channel_call_check_answered(const ftdm_channel_t *ftdmchan);
645
646
647 FT_DECLARE(ftdm_bool_t) ftdm_channel_call_check_busy(const ftdm_channel_t *ftdmchan);
648
649
650 FT_DECLARE(ftdm_bool_t) ftdm_channel_call_check_hangup(const ftdm_channel_t *ftdmchan);
651
652
653 FT_DECLARE(ftdm_bool_t) ftdm_channel_call_check_done(const ftdm_channel_t *ftdmchan);
654
655
656 FT_DECLARE(ftdm_bool_t) ftdm_channel_call_check_hold(const ftdm_channel_t *ftdmchan);
657
658
659 FT_DECLARE(ftdm_status_t) ftdm_channel_set_sig_status(ftdm_channel_t *ftdmchan, ftdm_signaling_status_t status);
660
661
662 FT_DECLARE(ftdm_status_t) ftdm_channel_get_sig_status(ftdm_channel_t *ftdmchan, ftdm_signaling_status_t *status);
663
664
665 FT_DECLARE(ftdm_status_t) ftdm_span_set_sig_status(ftdm_span_t *span, ftdm_signaling_status_t status);
666
667
668 FT_DECLARE(ftdm_status_t) ftdm_span_get_sig_status(ftdm_span_t *span, ftdm_signaling_status_t *status);
669
670
671
672
673
674
675
676
677 FT_DECLARE(void) ftdm_channel_set_private(ftdm_channel_t *ftdmchan, void *pvt);
678
679
680
681
682
683
684
685
686 FT_DECLARE(void *) ftdm_channel_get_private(const ftdm_channel_t *ftdmchan);
687
688
689
690
691
692
693
694
695
696
697 FT_DECLARE(ftdm_status_t) ftdm_channel_clear_token(ftdm_channel_t *ftdmchan, const char *token);
698
699
700
701
702
703
704
705
706 FT_DECLARE(void) ftdm_channel_replace_token(ftdm_channel_t *ftdmchan, const char *old_token, const char *new_token);
707
708
709
710
711
712
713
714
715
716
717
718 FT_DECLARE(ftdm_status_t) ftdm_channel_add_token(ftdm_channel_t *ftdmchan, char *token, int end);
719
720
721
722
723
724
725
726
727
728
729 FT_DECLARE(const char *) ftdm_channel_get_token(const ftdm_channel_t *ftdmchan, uint32_t tokenid);
730
731
732
733
734
735
736
737
738 FT_DECLARE(uint32_t) ftdm_channel_get_token_count(const ftdm_channel_t *ftdmchan);
739
740
741
742
743
744
745
746
747 FT_DECLARE(uint32_t) ftdm_channel_get_io_interval(const ftdm_channel_t *ftdmchan);
748
749
750
751
752
753
754
755
756 FT_DECLARE(uint32_t) ftdm_channel_get_io_packet_len(const ftdm_channel_t *ftdmchan);
757
758
759
760
761
762
763
764
765 FT_DECLARE(ftdm_codec_t) ftdm_channel_get_codec(const ftdm_channel_t *ftdmchan);
766
767
768
769
770
771
772
773
774 FT_DECLARE(const char *) ftdm_channel_get_last_error(const ftdm_channel_t *ftdmchan);
775
776
777
778
779
780
781
782
783
784
785 FT_DECLARE(ftdm_status_t) ftdm_channel_get_alarms(ftdm_channel_t *ftdmchan, ftdm_alarm_flag_t *alarmbits);
786
787
788
789
790
791
792
793
794 FT_DECLARE(ftdm_chan_type_t) ftdm_channel_get_type(const ftdm_channel_t *ftdmchan);
795
796
797
798
799
800
801
802
803
804
805
806 FT_DECLARE(ftdm_size_t) ftdm_channel_dequeue_dtmf(ftdm_channel_t *ftdmchan, char *dtmf, ftdm_size_t len);
807
808
809
810
811
812
813 FT_DECLARE(void) ftdm_channel_flush_dtmf(ftdm_channel_t *ftdmchan);
814
815
816
817
818
819
820
821
822
823
824
825 FT_DECLARE(ftdm_status_t) ftdm_span_poll_event(ftdm_span_t *span, uint32_t ms);
826
827
828
829
830
831
832
833
834
835
836 FT_DECLARE(ftdm_status_t) ftdm_span_find(uint32_t id, ftdm_span_t **span);
837
838
839
840
841
842
843
844
845 FT_DECLARE(const char *) ftdm_span_get_last_error(const ftdm_span_t *span);
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861 FT_DECLARE(ftdm_status_t) ftdm_span_create(const char *iotype, const char *name, ftdm_span_t **span);
862
863
864
865
866
867
868
869
870
871
872
873
874 FT_DECLARE(ftdm_status_t) ftdm_span_add_channel(ftdm_span_t *span, ftdm_socket_t sockfd, ftdm_chan_type_t type, ftdm_channel_t **chan);
875
876
877 FT_DECLARE(ftdm_status_t) ftdm_channel_add_to_group(const char* name, ftdm_channel_t* ftdmchan);
878
879
880 FT_DECLARE(ftdm_status_t) ftdm_channel_remove_from_group(ftdm_group_t* group, ftdm_channel_t* ftdmchan);
881
882
883 FT_DECLARE(ftdm_status_t) ftdm_group_find(uint32_t id, ftdm_group_t **group);
884
885
886 FT_DECLARE(ftdm_status_t) ftdm_group_find_by_name(const char *name, ftdm_group_t **group);
887
888
889 FT_DECLARE(ftdm_status_t) ftdm_group_create(ftdm_group_t **group, const char *name);
890
891
892 FT_DECLARE(ftdm_status_t) ftdm_span_channel_use_count(ftdm_span_t *span, uint32_t *count);
893
894
895 FT_DECLARE(ftdm_status_t) ftdm_group_channel_use_count(ftdm_group_t *group, uint32_t *count);
896
897
898 FT_DECLARE(uint32_t) ftdm_group_get_id(const ftdm_group_t *group);
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913 FT_DECLARE(ftdm_status_t) ftdm_channel_open(uint32_t span_id, uint32_t chan_id, ftdm_channel_t **ftdmchan);
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929 FT_DECLARE(ftdm_status_t) ftdm_channel_open_by_span(uint32_t span_id, ftdm_direction_t direction, ftdm_caller_data_t *caller_data, ftdm_channel_t **ftdmchan);
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945 FT_DECLARE(ftdm_status_t) ftdm_channel_open_by_group(uint32_t group_id, ftdm_direction_t direction, ftdm_caller_data_t *caller_data, ftdm_channel_t **ftdmchan);
946
947
948
949
950
951
952
953
954
955
956
957
958 FT_DECLARE(ftdm_status_t) ftdm_channel_close(ftdm_channel_t **ftdmchan);
959
960
961
962
963
964
965
966
967
968
969
970 FT_DECLARE(ftdm_status_t) ftdm_channel_command(ftdm_channel_t *ftdmchan, ftdm_command_t command, void *arg);
971
972
973
974
975
976
977
978
979
980
981
982 FT_DECLARE(ftdm_status_t) ftdm_channel_wait(ftdm_channel_t *ftdmchan, ftdm_wait_flag_t *flags, int32_t timeout);
983
984
985
986
987
988
989
990
991
992
993
994 FT_DECLARE(ftdm_status_t) ftdm_channel_read(ftdm_channel_t *ftdmchan, void *data, ftdm_size_t *datalen);
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019 FT_DECLARE(ftdm_status_t) ftdm_channel_write(ftdm_channel_t *ftdmchan, void *data, ftdm_size_t datasize, ftdm_size_t *datalen);
1020
1021
1022
1023
1024
1025 FT_DECLARE(ftdm_status_t) ftdm_channel_add_var(ftdm_channel_t *ftdmchan, const char *var_name, const char *value);
1026
1027
1028
1029 FT_DECLARE(const char *) ftdm_channel_get_var(ftdm_channel_t *ftdmchan, const char *var_name);
1030
1031
1032
1033
1034
1035
1036
1037
1038 FT_DECLARE(ftdm_iterator_t *) ftdm_channel_get_var_iterator(const ftdm_channel_t *ftdmchan, ftdm_iterator_t *iter);
1039
1040
1041
1042
1043
1044 FT_DECLARE(void *) ftdm_iterator_current(ftdm_iterator_t *iter);
1045
1046
1047 FT_DECLARE(ftdm_status_t) ftdm_channel_get_current_var(ftdm_iterator_t *iter, const char **var_name, const char **var_val);
1048
1049
1050 FT_DECLARE(ftdm_iterator_t *) ftdm_iterator_next(ftdm_iterator_t *iter);
1051
1052
1053
1054
1055 FT_DECLARE(ftdm_status_t) ftdm_iterator_free(ftdm_iterator_t *iter);
1056
1057
1058 FT_DECLARE(ftdm_span_t *) ftdm_channel_get_span(const ftdm_channel_t *ftdmchan);
1059
1060
1061 FT_DECLARE(uint32_t) ftdm_channel_get_span_id(const ftdm_channel_t *ftdmchan);
1062
1063
1064 FT_DECLARE(uint32_t) ftdm_channel_get_ph_span_id(const ftdm_channel_t *ftdmchan);
1065
1066
1067 FT_DECLARE(const char *) ftdm_channel_get_span_name(const ftdm_channel_t *ftdmchan);
1068
1069
1070 FT_DECLARE(uint32_t) ftdm_channel_get_id(const ftdm_channel_t *ftdmchan);
1071
1072
1073 FT_DECLARE(const char *) ftdm_channel_get_name(const ftdm_channel_t *ftdmchan);
1074
1075
1076 FT_DECLARE(const char *) ftdm_channel_get_number(const ftdm_channel_t *ftdmchan);
1077
1078
1079 FT_DECLARE(uint32_t) ftdm_channel_get_ph_id(const ftdm_channel_t *ftdmchan);
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095 FT_DECLARE(ftdm_status_t) ftdm_configure_span(ftdm_span_t *span, const char *type, fio_signal_cb_t sig_cb, ...);
1096 #define FTDM_TAG_END NULL
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110 FT_DECLARE(ftdm_status_t) ftdm_configure_span_signaling(ftdm_span_t *span, const char *type, fio_signal_cb_t sig_cb, ftdm_conf_parameter_t *parameters);
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125 FT_DECLARE(ftdm_status_t) ftdm_span_start(ftdm_span_t *span);
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139 FT_DECLARE(ftdm_status_t) ftdm_span_stop(ftdm_span_t *span);
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149 FT_DECLARE(ftdm_status_t) ftdm_global_add_io_interface(ftdm_io_interface_t *io_interface);
1150
1151
1152 FT_DECLARE(ftdm_status_t) ftdm_span_find_by_name(const char *name, ftdm_span_t **span);
1153
1154
1155 FT_DECLARE(uint32_t) ftdm_span_get_id(const ftdm_span_t *span);
1156
1157
1158 FT_DECLARE(const char *) ftdm_span_get_name(const ftdm_span_t *span);
1159
1160
1161
1162
1163
1164 FT_DECLARE(ftdm_iterator_t *) ftdm_span_get_chan_iterator(const ftdm_span_t *span, ftdm_iterator_t *iter);
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174 FT_DECLARE(char *) ftdm_api_execute(const char *cmd);
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186 FT_DECLARE(ftdm_status_t) ftdm_conf_node_create(const char *name, ftdm_conf_node_t **node, ftdm_conf_node_t *parent);
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198 FT_DECLARE(ftdm_status_t) ftdm_conf_node_add_param(ftdm_conf_node_t *node, const char *param, const char *val);
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208 FT_DECLARE(ftdm_status_t) ftdm_conf_node_destroy(ftdm_conf_node_t *node);
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221 FT_DECLARE(ftdm_status_t) ftdm_configure_span_channels(ftdm_span_t *span, const char *str, ftdm_channel_config_t *chan_config, unsigned *configured);
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231 FT_DECLARE(void) ftdm_span_set_trunk_type(ftdm_span_t *span, ftdm_trunk_type_t type);
1232
1233
1234
1235
1236
1237
1238
1239
1240 FT_DECLARE(ftdm_trunk_type_t) ftdm_span_get_trunk_type(const ftdm_span_t *span);
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250 FT_DECLARE(ftdm_channel_t *) ftdm_span_get_channel(const ftdm_span_t *span, uint32_t chanid);
1251
1252
1253 FT_DECLARE(uint32_t) ftdm_span_get_chan_count(const ftdm_span_t *span);
1254
1255
1256 FT_DECLARE(ftdm_status_t) ftdm_channel_set_caller_data(ftdm_channel_t *ftdmchan, ftdm_caller_data_t *caller_data);
1257
1258
1259 FT_DECLARE(ftdm_caller_data_t *) ftdm_channel_get_caller_data(ftdm_channel_t *channel);
1260
1261
1262 FT_DECLARE(const char *) ftdm_channel_get_state_str(const ftdm_channel_t *channel);
1263
1264
1265 FT_DECLARE(const char *) ftdm_channel_get_last_state_str(const ftdm_channel_t *channel);
1266
1267
1268
1269
1270
1271 FT_DECLARE(char *) ftdm_channel_get_history_str(const ftdm_channel_t *channel);
1272
1273
1274 FT_DECLARE(ftdm_status_t) ftdm_channel_init(ftdm_channel_t *ftdmchan);
1275
1276
1277 FT_DECLARE(ftdm_status_t) ftdm_global_init(void);
1278
1279
1280 FT_DECLARE(ftdm_status_t) ftdm_global_configuration(void);
1281
1282
1283 FT_DECLARE(ftdm_status_t) ftdm_global_destroy(void);
1284
1285
1286 FT_DECLARE(ftdm_status_t) ftdm_global_set_memory_handler(ftdm_memory_handler_t *handler);
1287
1288
1289 FT_DECLARE(void) ftdm_global_set_crash_policy(ftdm_crash_policy_t policy);
1290
1291
1292 FT_DECLARE(void) ftdm_global_set_logger(ftdm_logger_t logger);
1293
1294
1295 FT_DECLARE(void) ftdm_global_set_default_logger(int level);
1296
1297
1298 FT_DECLARE(void) ftdm_global_set_mod_directory(const char *path);
1299
1300
1301 FT_DECLARE(void) ftdm_global_set_config_directory(const char *path);
1302
1303
1304 FT_DECLARE(ftdm_bool_t) ftdm_running(void);
1305
1306 FT_DECLARE_DATA extern ftdm_logger_t ftdm_log;
1307
1308
1309 #define FIO_CODEC_ARGS (void *data, ftdm_size_t max, ftdm_size_t *datalen)
1310 #define FIO_CODEC_FUNCTION(name) FT_DECLARE_NONSTD(ftdm_status_t) name FIO_CODEC_ARGS
1311 typedef ftdm_status_t (*fio_codec_t) FIO_CODEC_ARGS ;
1312
1313
1314 FIO_CODEC_FUNCTION(fio_slin2ulaw);
1315 FIO_CODEC_FUNCTION(fio_ulaw2slin);
1316 FIO_CODEC_FUNCTION(fio_slin2alaw);
1317 FIO_CODEC_FUNCTION(fio_alaw2slin);
1318 FIO_CODEC_FUNCTION(fio_ulaw2alaw);
1319 FIO_CODEC_FUNCTION(fio_alaw2ulaw);
1320
1321 #define FTDM_PRE __FILE__, __FUNCTION__, __LINE__
1322 #define FTDM_LOG_LEVEL_DEBUG 7
1323 #define FTDM_LOG_LEVEL_INFO 6
1324 #define FTDM_LOG_LEVEL_NOTICE 5
1325 #define FTDM_LOG_LEVEL_WARNING 4
1326 #define FTDM_LOG_LEVEL_ERROR 3
1327 #define FTDM_LOG_LEVEL_CRIT 2
1328 #define FTDM_LOG_LEVEL_ALERT 1
1329 #define FTDM_LOG_LEVEL_EMERG 0
1330
1331
1332 #define FTDM_LOG_DEBUG FTDM_PRE, FTDM_LOG_LEVEL_DEBUG
1333 #define FTDM_LOG_INFO FTDM_PRE, FTDM_LOG_LEVEL_INFO
1334 #define FTDM_LOG_NOTICE FTDM_PRE, FTDM_LOG_LEVEL_NOTICE
1335 #define FTDM_LOG_WARNING FTDM_PRE, FTDM_LOG_LEVEL_WARNING
1336 #define FTDM_LOG_ERROR FTDM_PRE, FTDM_LOG_LEVEL_ERROR
1337 #define FTDM_LOG_CRIT FTDM_PRE, FTDM_LOG_LEVEL_CRIT
1338 #define FTDM_LOG_ALERT FTDM_PRE, FTDM_LOG_LEVEL_ALERT
1339 #define FTDM_LOG_EMERG FTDM_PRE, FTDM_LOG_LEVEL_EMERG
1340
1341 #ifdef __cplusplus
1342 }
1343 #endif
1344
1345 #endif
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356