Wed Aug 7 17:15:47 2019

Asterisk developer's documentation


app_flash.c File Reference

App to flash a DAHDI trunk. More...

#include "asterisk.h"
#include <dahdi/user.h>
#include "asterisk/lock.h"
#include "asterisk/file.h"
#include "asterisk/channel.h"
#include "asterisk/pbx.h"
#include "asterisk/module.h"
#include "asterisk/translate.h"
#include "asterisk/image.h"

Go to the source code of this file.

Functions

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

Variables

static char * app = "Flash"

Detailed Description

App to flash a DAHDI 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 dahdi_wait_event ( int  fd  )  [inline, static]

Definition at line 66 of file app_flash.c.

Referenced by flash_exec().

00067 {
00068    /* Avoid the silly dahdi_waitevent which ignores a bunch of events */
00069    int i,j=0;
00070    i = DAHDI_IOMUX_SIGEVENT;
00071    if (ioctl(fd, DAHDI_IOMUX, &i) == -1) return -1;
00072    if (ioctl(fd, DAHDI_GETEVENT, &j) == -1) return -1;
00073    return j;
00074 }

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

Definition at line 76 of file app_flash.c.

References ast_log(), ast_safe_sleep(), ast_verb, dahdi_wait_event(), errno, ast_channel::fds, LOG_WARNING, ast_channel::tech, and ast_channel_tech::type.

Referenced by load_module().

00077 {
00078    int res = -1;
00079    int x;
00080    struct dahdi_params dahdip;
00081 
00082    if (strcasecmp(chan->tech->type, "DAHDI")) {
00083       ast_log(LOG_WARNING, "%s is not a DAHDI channel\n", chan->name);
00084       return -1;
00085    }
00086    
00087    memset(&dahdip, 0, sizeof(dahdip));
00088    res = ioctl(chan->fds[0], DAHDI_GET_PARAMS, &dahdip);
00089    if (!res) {
00090       if (dahdip.sigtype & __DAHDI_SIG_FXS) {
00091          x = DAHDI_FLASH;
00092          res = ioctl(chan->fds[0], DAHDI_HOOK, &x);
00093          if (!res || (errno == EINPROGRESS)) {
00094             if (res) {
00095                /* Wait for the event to finish */
00096                dahdi_wait_event(chan->fds[0]);
00097             }
00098             res = ast_safe_sleep(chan, 1000);
00099             ast_verb(3, "Flashed channel %s\n", chan->name);
00100          } else
00101             ast_log(LOG_WARNING, "Unable to flash channel %s: %s\n", chan->name, strerror(errno));
00102       } else
00103          ast_log(LOG_WARNING, "%s is not an FXO Channel\n", chan->name);
00104    } else
00105       ast_log(LOG_WARNING, "Unable to get parameters of %s: %s\n", chan->name, strerror(errno));
00106 
00107    return res;
00108 }

static int load_module ( void   )  [static]

Definition at line 115 of file app_flash.c.

References ast_register_application_xml, and flash_exec().

00116 {
00117    return ast_register_application_xml(app, flash_exec);
00118 }

static int unload_module ( void   )  [static]

Definition at line 110 of file app_flash.c.

References ast_unregister_application().

00111 {
00112    return ast_unregister_application(app);
00113 }


Variable Documentation

char* app = "Flash" [static]

Definition at line 64 of file app_flash.c.


Generated on 7 Aug 2019 for Asterisk - The Open Source Telephony Project by  doxygen 1.6.1