Sat Apr 12 07:12:29 2008

Asterisk developer's documentation


app_flash.c File Reference

App to flash a zap trunk. More...

#include "asterisk.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <zaptel/zaptel.h>
#include "asterisk/lock.h"
#include "asterisk/file.h"
#include "asterisk/logger.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/module.h"
#include "asterisk/translate.h"
#include "asterisk/image.h"
#include "asterisk/options.h"

Include dependency graph for app_flash.c:

Go to the source code of this file.

Functions

 AST_MODULE_INFO_STANDARD (ASTERISK_GPL_KEY,"Flash channel application")
static int flash_exec (struct ast_channel *chan, void *data)
static int load_module (void)
static int unload_module (void)
static int zt_wait_event (int fd)

Variables

static char * app = "Flash"
static char * descrip
static char * synopsis = "Flashes a Zap Trunk"


Detailed Description

App to flash a zap trunk.

Author:
Mark Spencer <markster@digium.com>

Definition in file app_flash.c.


Function Documentation

AST_MODULE_INFO_STANDARD ( ASTERISK_GPL_KEY  ,
"Flash channel application"   
)

static int flash_exec ( struct ast_channel chan,
void *  data 
) [static]

Definition at line 74 of file app_flash.c.

References ast_log(), ast_module_user_add, ast_module_user_remove, ast_safe_sleep(), ast_verbose(), errno, ast_channel::fds, LOG_WARNING, option_verbose, ast_channel::tech, ast_channel_tech::type, VERBOSE_PREFIX_3, and zt_wait_event().

Referenced by load_module().

00075 {
00076    int res = -1;
00077    int x;
00078    struct ast_module_user *u;
00079    struct zt_params ztp;
00080    u = ast_module_user_add(chan);
00081    if (!strcasecmp(chan->tech->type, "Zap")) {
00082       memset(&ztp, 0, sizeof(ztp));
00083       res = ioctl(chan->fds[0], ZT_GET_PARAMS, &ztp);
00084       if (!res) {
00085          if (ztp.sigtype & __ZT_SIG_FXS) {
00086             x = ZT_FLASH;
00087             res = ioctl(chan->fds[0], ZT_HOOK, &x);
00088             if (!res || (errno == EINPROGRESS)) {
00089                if (res) {
00090                   /* Wait for the event to finish */
00091                   zt_wait_event(chan->fds[0]);
00092                }
00093                res = ast_safe_sleep(chan, 1000);
00094                if (option_verbose > 2)
00095                   ast_verbose(VERBOSE_PREFIX_3 "Flashed channel %s\n", chan->name);
00096             } else
00097                ast_log(LOG_WARNING, "Unable to flash channel %s: %s\n", chan->name, strerror(errno));
00098          } else
00099             ast_log(LOG_WARNING, "%s is not an FXO Channel\n", chan->name);
00100       } else
00101          ast_log(LOG_WARNING, "Unable to get parameters of %s: %s\n", chan->name, strerror(errno));
00102    } else
00103       ast_log(LOG_WARNING, "%s is not a Zap channel\n", chan->name);
00104    ast_module_user_remove(u);
00105    return res;
00106 }

static int load_module ( void   )  [static]

Definition at line 119 of file app_flash.c.

References ast_register_application(), and flash_exec().

00120 {
00121    return ast_register_application(app, flash_exec, synopsis, descrip);
00122 }

static int unload_module ( void   )  [static]

Definition at line 108 of file app_flash.c.

References ast_module_user_hangup_all, and ast_unregister_application().

00109 {
00110    int res;
00111 
00112    res = ast_unregister_application(app);
00113 
00114    ast_module_user_hangup_all();
00115 
00116    return res;
00117 }

static int zt_wait_event ( int  fd  )  [inline, static]

Definition at line 64 of file app_flash.c.

00065 {
00066    /* Avoid the silly zt_waitevent which ignores a bunch of events */
00067    int i,j=0;
00068    i = ZT_IOMUX_SIGEVENT;
00069    if (ioctl(fd, ZT_IOMUX, &i) == -1) return -1;
00070    if (ioctl(fd, ZT_GETEVENT, &j) == -1) return -1;
00071    return j;
00072 }


Variable Documentation

char* app = "Flash" [static]

Definition at line 53 of file app_flash.c.

char* descrip [static]

Initial value:

 
"Performs a flash on a zap trunk.  This can be used\n"
"to access features provided on an incoming analogue circuit\n"
"such as conference and call waiting. Use with SendDTMF() to\n"
"perform external transfers\n"

Definition at line 57 of file app_flash.c.

char* synopsis = "Flashes a Zap Trunk" [static]

Definition at line 55 of file app_flash.c.


Generated on Sat Apr 12 07:12:29 2008 for Asterisk - the Open Source PBX by  doxygen 1.5.5