r3 - 08 Mar 2006 - 18:20:47 - IuriDinizYou are here: TWiki >  Asterisk Web  >  AsteriskPBXSoftware > AsteriskDev

Modulos

App Skel

app_skel.c
/*
 * Asterisk -- An open source telephony toolkit.
 *
 * Copyright (C) <Year>, <Your Name Here>
 *
 * <Your Name Here> <<You Email Here>>
 *
 * See http://www.asterisk.org for more information about
 * the Asterisk project. Please do not directly contact
 * any of the maintainers of this project for assistance;
 * the project provides a web site, mailing lists and IRC
 * channels for your use.
 *
 * This program is free software, distributed under the terms of
 * the GNU General Public License Version 2. See the LICENSE file
 * at the top of the source tree.
 */

/*
 *
 * Skeleton application
 * 
 */

#include <stdlib.h>
#include <unistd.h>
#include <string.h>

#include "asterisk.h"

ASTERISK_FILE_VERSION(__FILE__, "$Revision: 1.3 $")

#include "asterisk/file.h"
#include "asterisk/logger.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/module.h"
#include "asterisk/lock.h"
#include "asterisk/app.h"

static char *tdesc = "Trivial skeleton Application";
static char *app = "Skel";
static char *synopsis = 
"Skeleton application.";
static char *descrip = "This application is a template to build other applications from.\n"
 " It shows you the basic structure to create your own Asterisk applications.\n";

#define OPTION_A   (1 << 0)   /* Option A */
#define OPTION_B   (1 << 1)   /* Option B(n) */
#define OPTION_C   (1 << 2)   /* Option C(str) */
#define OPTION_NULL   (1 << 3)   /* Dummy Termination */

AST_DECLARE_OPTIONS(app_opts,{
   ['a'] = { OPTION_A },
   ['b'] = { OPTION_B, 1 },
   ['c'] = { OPTION_C, 2 }
});

STANDARD_LOCAL_USER;

LOCAL_USER_DECL;

static int app_exec(struct ast_channel *chan, void *data)
{
   int res = 0;
   struct ast_flags flags;
   struct localuser *u;
   char *options=NULL;
   char *dummy = NULL;
   char *args;
   int argc = 0;
   char *opts[2];
   char *argv[2];

   if (!(args = ast_strdupa((char *)data))) {
      ast_log(LOG_ERROR, "Out of memory!\n");
      return -1;
   }

   if (!data) {
      ast_log(LOG_WARNING, "%s requires an argument (dummy|[options])\n",app);
      return -1;
   }

   LOCAL_USER_ADD(u);
   if ((argc = ast_separate_app_args(args, '|', argv, sizeof(argv) / sizeof(argv[0])))) {
      dummy = argv[0];
      options = argv[1];
      ast_parseoptions(app_opts, &flags, opts, options);
   }

   if (dummy && !ast_strlen_zero(dummy)) 
      ast_log(LOG_NOTICE, "Dummy value is : %s\n", dummy);

   if (ast_test_flag(&flags, OPTION_A))
      ast_log(LOG_NOTICE, "Option A is set\n");

   if (ast_test_flag(&flags, OPTION_B))
      ast_log(LOG_NOTICE,"Option B is set with : %s\n", opts[0] ? opts[0] : "<unspecified>");

   if (ast_test_flag(&flags, OPTION_C))
      ast_log(LOG_NOTICE,"Option C is set with : %s\n", opts[1] ? opts[1] : "<unspecified>");

   /* Do our thing here */
   LOCAL_USER_REMOVE(u);
   return res;
}

int unload_module(void)
{
   STANDARD_HANGUP_LOCALUSERS;
   return ast_unregister_application(app);
}

int load_module(void)
{
   return ast_register_application(app, app_exec, synopsis, descrip);
}

char *description(void)
{
   return tdesc;
}

int usecount(void)
{
   int res;
   STANDARD_USECOUNT(res);
   return res;
}

char *key()
{
   return ASTERISK_GPL_KEY;
}

Modulos em geral

int 
unload_module() { }

int 
reload() { }

int 
load_module() { }

Registar/Deregistrar os comandos de interface

./include/asterisk/cli.h

ast_cli_register(&cli_show_agents);
ast_cli_unregister(&cli_show_agents);

static struct ast_cli_entry cli_show_agents = {
    { "show", "agents", NULL }, agents_show,
    "Show status of agents", show_agents_usage, NULL };

Registrar/Deregistrar os comandos de manager

./include/asterisk/manager.h

ast_manager_register2("Agents", EVENT_FLAG_AGENT, action_agents, "Lists agents and their status", mandescr_agents);
ast_manager_unregister("Agents");

-- IuriDiniz - 20 Sep 2005

AsteriskForm
Classificacao Documentacao
Resumo Algumas notas sobre o Código Fonte do Asterisk
Versao Asterisk 1.2.X
toggleopenShow attachmentstogglecloseHide attachments
Topic attachments
I Attachment Action Size Date Who Comment
cc app_skel.c manage 3.0 K 20 Sep 2005 - 23:37 IuriDiniz App Skel
Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r3 < r2 < r1 | More topic actions
Asterisk.AsteriskDev moved from Personal.AsteriskDev on 08 Mar 2006 - 18:18 by IuriDiniz - put it back
 
Powered by TWiki
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback