This source file includes following definitions.
- FIO_SIGNAL_CB_FUNCTION
- handle_SIGINT
- main
1 #include "freetdm.h"
2 #include <signal.h>
3 #include <stdlib.h>
4
5 static int R = 0;
6 static ftdm_mutex_t *mutex = NULL;
7
8 static FIO_SIGNAL_CB_FUNCTION(on_r2_signal)
9 {
10 int chanid = ftdm_channel_get_ph_id(sigmsg->channel);
11 ftdm_log(FTDM_LOG_DEBUG, "Got R2 channel sig [%s] in channel\n", ftdm_signal_event2str(sigmsg->event_id), chanid);
12 return FTDM_SUCCESS;
13 }
14
15 static void handle_SIGINT(int sig)
16 {
17 ftdm_mutex_lock(mutex);
18 R = 0;
19 ftdm_mutex_unlock(mutex);
20 return;
21 }
22
23 int main(int argc, char *argv[])
24 {
25 ftdm_span_t *span;
26 ftdm_mutex_create(&mutex);
27
28 ftdm_global_set_default_logger(FTDM_LOG_LEVEL_DEBUG);
29
30 if (argc < 2) {
31 printf("umm no\n");
32 exit(-1);
33 }
34
35 if (ftdm_global_init() != FTDM_SUCCESS) {
36 fprintf(stderr, "Error loading FreeTDM\n");
37 exit(-1);
38 }
39
40 printf("FreeTDM loaded\n");
41
42 if (ftdm_span_find(atoi(argv[1]), &span) != FTDM_SUCCESS) {
43 fprintf(stderr, "Error finding FreeTDM span\n");
44 goto done;
45 }
46
47
48
49 if (ftdm_configure_span(span, "r2", on_r2_signal,
50 "variant", "mx",
51 "max_ani", 10,
52 "max_dnis", 4,
53 "logging", "all",
54 FTDM_TAG_END) == FTDM_SUCCESS) {
55
56
57 ftdm_span_start(span);
58 } else {
59 fprintf(stderr, "Error starting R2 span\n");
60 goto done;
61 }
62
63 signal(SIGINT, handle_SIGINT);
64 ftdm_mutex_lock(mutex);
65 R = 1;
66 ftdm_mutex_unlock(mutex);
67 while(R) {
68 ftdm_sleep(1 * 1000);
69 }
70
71 done:
72
73 ftdm_global_destroy();
74
75 return 1;
76
77 }
78
79
80
81
82
83
84
85
86
87
88