use double-quotes instead of angle-brackets for non-system include files (bug #4058)
[asterisk/asterisk.git] / apps / app_senddtmf.c
1 /*
2  * Asterisk -- A telephony toolkit for Linux.
3  *
4  * App to send DTMF digits
5  * 
6  * Copyright (C) 1999, Mark Spencer
7  *
8  * Mark Spencer <markster@linux-support.net>
9  *
10  * This program is free software, distributed under the terms of
11  * the GNU General Public License
12  */
13  
14 #include "asterisk/lock.h"
15 #include "asterisk/file.h"
16 #include "asterisk/logger.h"
17 #include "asterisk/channel.h"
18 #include "asterisk/pbx.h"
19 #include "asterisk/module.h"
20 #include "asterisk/translate.h"
21 #include "asterisk/options.h"
22 #include "asterisk/utils.h"
23 #include "asterisk/app.h"
24 #include <string.h>
25 #include <stdlib.h>
26
27 static char *tdesc = "Send DTMF digits Application";
28
29 static char *app = "SendDTMF";
30
31 static char *synopsis = "Sends arbitrary DTMF digits";
32
33 static char *descrip = 
34 "  SendDTMF(digits[|timeout_ms]): Sends DTMF digits on a channel. \n"
35 "  Accepted digits: 0-9, *#abcd\n"
36 " Returns 0 on success or -1 on a hangup.\n";
37
38 STANDARD_LOCAL_USER;
39
40 LOCAL_USER_DECL;
41
42 static int senddtmf_exec(struct ast_channel *chan, void *data)
43 {
44         int res = 0;
45         struct localuser *u;
46         char *digits = NULL, *to = NULL;
47         int timeout = 250;
48
49         if (data && !ast_strlen_zero(data) && (digits = ast_strdupa((char *)data))) {
50                 if((to = strchr(digits,'|'))) {
51                         *to = '\0';
52                         to++;
53                         timeout = atoi(to);
54                 }
55                 LOCAL_USER_ADD(u);
56                 if(timeout <= 0)
57                         timeout = 250;
58
59                 res = ast_dtmf_stream(chan,NULL,digits,timeout);
60                 LOCAL_USER_REMOVE(u);
61         } else {
62                 ast_log(LOG_WARNING, "SendDTMF requires an argument (digits or *#aAbBcCdD)\n");
63         }
64         return res;
65 }
66
67 int unload_module(void)
68 {
69         STANDARD_HANGUP_LOCALUSERS;
70         return ast_unregister_application(app);
71 }
72
73 int load_module(void)
74 {
75         return ast_register_application(app, senddtmf_exec, synopsis, descrip);
76 }
77
78 char *description(void)
79 {
80         return tdesc;
81 }
82
83 int usecount(void)
84 {
85         int res;
86         STANDARD_USECOUNT(res);
87         return res;
88 }
89
90 char *key()
91 {
92         return ASTERISK_GPL_KEY;
93 }