a8731e5dd063a31ea619518016bdcf88fd9e5642
[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 <string.h>
24 #include <stdlib.h>
25 #include <pthread.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): 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 = data;
47
48         if (!digits || ast_strlen_zero(digits)) {
49                 ast_log(LOG_WARNING, "SendDTMF requires an argument (digits or *#aAbBcCdD)\n");
50                 return -1;
51         }
52         LOCAL_USER_ADD(u);
53         res = ast_dtmf_stream(chan,NULL,digits,250);
54         LOCAL_USER_REMOVE(u);
55         return res;
56 }
57
58 int unload_module(void)
59 {
60         STANDARD_HANGUP_LOCALUSERS;
61         return ast_unregister_application(app);
62 }
63
64 int load_module(void)
65 {
66         return ast_register_application(app, senddtmf_exec, synopsis, descrip);
67 }
68
69 char *description(void)
70 {
71         return tdesc;
72 }
73
74 int usecount(void)
75 {
76         int res;
77         STANDARD_USECOUNT(res);
78         return res;
79 }
80
81 char *key()
82 {
83         return ASTERISK_GPL_KEY;
84 }