Mon Jun 27 16:51:00 2011

Asterisk developer's documentation


app_senddtmf.c File Reference

App to send DTMF digits. More...

#include "asterisk.h"
#include "asterisk/pbx.h"
#include "asterisk/module.h"
#include "asterisk/app.h"
#include "asterisk/manager.h"
#include "asterisk/channel.h"

Go to the source code of this file.

Functions

static void __reg_module (void)
static void __unreg_module (void)
static int load_module (void)
static int manager_play_dtmf (struct mansession *s, const struct message *m)
static int senddtmf_exec (struct ast_channel *chan, const char *vdata)
static int unload_module (void)

Variables

static struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Send DTMF digits Application" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "8586c2a7d357cb591cc3a6607a8f62d1" , .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, }
static char * app = "SendDTMF"
static struct ast_module_infoast_module_info = &__mod_info


Detailed Description

App to send DTMF digits.

Author:
Mark Spencer <markster@digium.com>

Definition in file app_senddtmf.c.


Function Documentation

static void __reg_module ( void   )  [static]

Definition at line 175 of file app_senddtmf.c.

static void __unreg_module ( void   )  [static]

Definition at line 175 of file app_senddtmf.c.

static int load_module ( void   )  [static]

Definition at line 165 of file app_senddtmf.c.

References ast_manager_register_xml, ast_register_application_xml, EVENT_FLAG_CALL, manager_play_dtmf(), and senddtmf_exec().

00166 {
00167    int res;
00168 
00169    res = ast_manager_register_xml("PlayDTMF", EVENT_FLAG_CALL, manager_play_dtmf);
00170    res |= ast_register_application_xml(app, senddtmf_exec);
00171 
00172    return res;
00173 }

static int manager_play_dtmf ( struct mansession s,
const struct message m 
) [static]

Definition at line 129 of file app_senddtmf.c.

References ast_channel_get_by_name(), ast_channel_unref, ast_senddigit(), ast_strlen_zero(), astman_get_header(), astman_send_ack(), and astman_send_error().

Referenced by load_module().

00130 {
00131    const char *channel = astman_get_header(m, "Channel");
00132    const char *digit = astman_get_header(m, "Digit");
00133    struct ast_channel *chan;
00134 
00135    if (!(chan = ast_channel_get_by_name(channel))) {
00136       astman_send_error(s, m, "Channel not found");
00137       return 0;
00138    }
00139 
00140    if (ast_strlen_zero(digit)) {
00141       astman_send_error(s, m, "No digit specified");
00142       chan = ast_channel_unref(chan);
00143       return 0;
00144    }
00145 
00146    ast_senddigit(chan, *digit, 0);
00147 
00148    chan = ast_channel_unref(chan);
00149 
00150    astman_send_ack(s, m, "DTMF successfully queued");
00151 
00152    return 0;
00153 }

static int senddtmf_exec ( struct ast_channel chan,
const char *  vdata 
) [static]

Definition at line 85 of file app_senddtmf.c.

References args, AST_APP_ARG, ast_app_parse_timelen(), ast_autoservice_start(), ast_autoservice_stop(), ast_channel_get_by_name(), ast_channel_unref, AST_DECLARE_APP_ARGS, ast_dtmf_stream(), ast_log(), AST_STANDARD_APP_ARGS, ast_strdupa, ast_strlen_zero(), LOG_WARNING, and TIMELEN_MILLISECONDS.

Referenced by load_module().

00086 {
00087    int res = 0;
00088    char *data;
00089    int dinterval = 0, duration = 0;
00090    struct ast_channel *dchan;
00091    AST_DECLARE_APP_ARGS(args,
00092       AST_APP_ARG(digits);
00093       AST_APP_ARG(dinterval);
00094       AST_APP_ARG(duration);
00095       AST_APP_ARG(channel);
00096    );
00097 
00098    if (ast_strlen_zero(vdata)) {
00099       ast_log(LOG_WARNING, "SendDTMF requires an argument (digits or *#aAbBcCdD)\n");
00100       return 0;
00101    }
00102 
00103    dchan = chan;
00104 
00105    data = ast_strdupa(vdata);
00106    AST_STANDARD_APP_ARGS(args, data);
00107 
00108    if (!ast_strlen_zero(args.dinterval)) {
00109       ast_app_parse_timelen(args.dinterval, &dinterval, TIMELEN_MILLISECONDS);
00110    }
00111    if (!ast_strlen_zero(args.duration)) {
00112       ast_app_parse_timelen(args.duration, &duration, TIMELEN_MILLISECONDS);
00113    }
00114    if (!ast_strlen_zero(args.channel)) {
00115       dchan = ast_channel_get_by_name(args.channel);
00116    }
00117    if (dchan != chan) {
00118       ast_autoservice_start(chan);
00119    }
00120    res = ast_dtmf_stream(dchan, NULL, args.digits, dinterval <= 0 ? 250 : dinterval, duration);
00121    if (dchan != chan) {
00122       ast_autoservice_stop(chan);
00123       ast_channel_unref(dchan);
00124    }
00125 
00126    return res;
00127 }

static int unload_module ( void   )  [static]

Definition at line 155 of file app_senddtmf.c.

References ast_manager_unregister(), and ast_unregister_application().

00156 {
00157    int res;
00158 
00159    res = ast_unregister_application(app);
00160    res |= ast_manager_unregister("PlayDTMF");
00161 
00162    return res; 
00163 }


Variable Documentation

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "Send DTMF digits Application" , .key = "This paragraph is copyright (c) 2006 by Digium, Inc. \In order for your module to load, it must return this \key via a function called \"key\". Any code which \includes this paragraph must be licensed under the GNU \General Public License version 2 or later (at your \option). In addition to Digium's general reservations \of rights, Digium expressly reserves the right to \allow other parties to license this paragraph under \different terms. Any use of Digium, Inc. trademarks or \logos (including \"Asterisk\" or \"Digium\") without \express written permission of Digium, Inc. is prohibited.\n" , .buildopt_sum = "8586c2a7d357cb591cc3a6607a8f62d1" , .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, } [static]

Definition at line 175 of file app_senddtmf.c.

char* app = "SendDTMF" [static]

Definition at line 83 of file app_senddtmf.c.

struct ast_module_info* ast_module_info = &__mod_info [static]

Definition at line 175 of file app_senddtmf.c.


Generated on Mon Jun 27 16:51:00 2011 for Asterisk - The Open Source Telephony Project by  doxygen 1.4.7