Merge "astobj2: Create function to copy weak proxied objects from container."
[asterisk/asterisk.git] / apps / app_flash.c
index 37965fe..d55993e 100644 (file)
 
 /*! \file
  *
- * \brief App to flash a zap trunk
+ * \brief App to flash a DAHDI trunk
  *
  * \author Mark Spencer <markster@digium.com>
- * 
+ *
  * \ingroup applications
  */
+
 /*** MODULEINFO
-       <depend>zaptel</depend>
+       <depend>dahdi</depend>
+       <support_level>core</support_level>
  ***/
 
 #include "asterisk.h"
 
-ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
-
-#include "asterisk/zapata.h"
+#include <dahdi/user.h>
 
 #include "asterisk/lock.h"
 #include "asterisk/file.h"
@@ -42,59 +41,66 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/module.h"
 #include "asterisk/translate.h"
 #include "asterisk/image.h"
-#include "asterisk/options.h"
-
-static char *app = "Flash";
 
-static char *synopsis = "Flashes a Zap Trunk";
-
-static char *descrip = 
-"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";
+/*** DOCUMENTATION
+       <application name="Flash" language="en_US">
+               <synopsis>
+                       Flashes a DAHDI Trunk.
+               </synopsis>
+               <syntax />
+               <description>
+                       <para>Performs a flash on a DAHDI trunk. This can be used to access features
+                       provided on an incoming analogue circuit such as conference and call waiting.
+                       Use with SendDTMF() to perform external transfers.</para>
+               </description>
+               <see-also>
+                       <ref type="application">SendDTMF</ref>
+               </see-also>
+       </application>
+ ***/
 
+static char *app = "Flash";
 
-static inline int zt_wait_event(int fd)
+static inline int dahdi_wait_event(int fd)
 {
-       /* Avoid the silly zt_waitevent which ignores a bunch of events */
+       /* Avoid the silly dahdi_waitevent which ignores a bunch of events */
        int i,j=0;
-       i = ZT_IOMUX_SIGEVENT;
-       if (ioctl(fd, ZT_IOMUX, &i) == -1) return -1;
-       if (ioctl(fd, ZT_GETEVENT, &j) == -1) return -1;
+       i = DAHDI_IOMUX_SIGEVENT;
+       if (ioctl(fd, DAHDI_IOMUX, &i) == -1) return -1;
+       if (ioctl(fd, DAHDI_GETEVENT, &j) == -1) return -1;
        return j;
 }
 
-static int flash_exec(struct ast_channel *chan, void *data)
+static int flash_exec(struct ast_channel *chan, const char *data)
 {
        int res = -1;
        int x;
-       struct zt_params ztp;
+       struct dahdi_params dahdip;
 
-       if (strcasecmp(chan->tech->type, "Zap")) {
-               ast_log(LOG_WARNING, "%s is not a Zap channel\n", chan->name);
+       if (strcasecmp(ast_channel_tech(chan)->type, "DAHDI")) {
+               ast_log(LOG_WARNING, "%s is not a DAHDI channel\n", ast_channel_name(chan));
                return -1;
        }
-       
-       memset(&ztp, 0, sizeof(ztp));
-       res = ioctl(chan->fds[0], ZT_GET_PARAMS, &ztp);
+
+       memset(&dahdip, 0, sizeof(dahdip));
+       res = ioctl(ast_channel_fd(chan, 0), DAHDI_GET_PARAMS, &dahdip);
        if (!res) {
-               if (ztp.sigtype & __ZT_SIG_FXS) {
-                       x = ZT_FLASH;
-                       res = ioctl(chan->fds[0], ZT_HOOK, &x);
+               if (dahdip.sigtype & __DAHDI_SIG_FXS) {
+                       x = DAHDI_FLASH;
+                       res = ioctl(ast_channel_fd(chan, 0), DAHDI_HOOK, &x);
                        if (!res || (errno == EINPROGRESS)) {
                                if (res) {
                                        /* Wait for the event to finish */
-                                       zt_wait_event(chan->fds[0]);
+                                       dahdi_wait_event(ast_channel_fd(chan, 0));
                                }
                                res = ast_safe_sleep(chan, 1000);
-                               ast_verb(3, "Flashed channel %s\n", chan->name);
+                               ast_verb(3, "Flashed channel %s\n", ast_channel_name(chan));
                        } else
-                               ast_log(LOG_WARNING, "Unable to flash channel %s: %s\n", chan->name, strerror(errno));
+                               ast_log(LOG_WARNING, "Unable to flash channel %s: %s\n", ast_channel_name(chan), strerror(errno));
                } else
-                       ast_log(LOG_WARNING, "%s is not an FXO Channel\n", chan->name);
+                       ast_log(LOG_WARNING, "%s is not an FXO Channel\n", ast_channel_name(chan));
        } else
-               ast_log(LOG_WARNING, "Unable to get parameters of %s: %s\n", chan->name, strerror(errno));
+               ast_log(LOG_WARNING, "Unable to get parameters of %s: %s\n", ast_channel_name(chan), strerror(errno));
 
        return res;
 }
@@ -106,8 +112,7 @@ static int unload_module(void)
 
 static int load_module(void)
 {
-       return ast_register_application(app, flash_exec, synopsis, descrip);
+       return ast_register_application_xml(app, flash_exec);
 }
 
 AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Flash channel application");
-