add a LOG_DTMF logging channel and send all bridged DTMF events out that channel...
authorKevin P. Fleming <kpfleming@digium.com>
Mon, 22 Aug 2005 21:19:59 +0000 (21:19 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Mon, 22 Aug 2005 21:19:59 +0000 (21:19 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6358 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channel.c
configs/logger.conf.sample
include/asterisk/logger.h
logger.c

index 8fe3ee5..b0894e3 100755 (executable)
--- a/channel.c
+++ b/channel.c
@@ -1966,6 +1966,14 @@ int ast_write(struct ast_channel *chan, struct ast_frame *fr)
                                res = 0;
                }
        }
+
+       /* It's possible this is a translated frame */
+       if (f && f->frametype == AST_FRAME_DTMF) {
+               ast_log(LOG_DTMF, "%s : %c\n", chan->name, f->subclass);
+       } else if (fr->frametype == AST_FRAME_DTMF) {
+               ast_log(LOG_DTMF, "%s : %c\n", chan->name, fr->subclass);
+       }
+
        if (f && (f != fr))
                ast_frfree(f);
        ast_clear_flag(chan, AST_FLAG_BLOCKING);
index fc000a1..0085542 100755 (executable)
@@ -40,6 +40,7 @@
 ;    warning
 ;    error
 ;    verbose
+;    dtmf
 ;
 ; Special filename "console" represents the system console
 ;
index 2e8a786..c94fd96 100755 (executable)
@@ -99,6 +99,12 @@ extern void ast_console_puts(const char *string);
 #define __LOG_VERBOSE  5
 #define LOG_VERBOSE    __LOG_VERBOSE, _A_
 
+#ifdef LOG_DTMF
+#undef LOG_DTMF
+#endif
+#define __LOG_DTMF  6
+#define LOG_DTMF    __LOG_DTMF, _A_
+
 #if defined(__cplusplus) || defined(c_plusplus)
 }
 #endif
index 8e5cdbf..be3b8c1 100755 (executable)
--- a/logger.c
+++ b/logger.c
@@ -44,6 +44,7 @@ static int syslog_level_map[] = {
        LOG_NOTICE,
        LOG_WARNING,
        LOG_ERR,
+       LOG_DEBUG,
        LOG_DEBUG
 };
 
@@ -107,7 +108,8 @@ static char *levels[] = {
        "NOTICE",
        "WARNING",
        "ERROR",
-       "VERBOSE"
+       "VERBOSE",
+       "DTMF"
 };
 
 static int colors[] = {
@@ -116,7 +118,8 @@ static int colors[] = {
        COLOR_YELLOW,
        COLOR_BRRED,
        COLOR_RED,
-       COLOR_GREEN
+       COLOR_GREEN,
+       COLOR_BRGREEN
 };
 
 static int make_components(char *s, int lineno)
@@ -141,6 +144,8 @@ static int make_components(char *s, int lineno)
                        res |= (1 << __LOG_DEBUG);
                else if (!strcasecmp(w, "verbose"))
                        res |= (1 << __LOG_VERBOSE);
+               else if (!strcasecmp(w, "dtmf"))
+                       res |= (1 << __LOG_DTMF);
                else {
                        fprintf(stderr, "Logfile Warning: Unknown keyword '%s' at line %d of logger.conf\n", w, lineno);
                }
@@ -495,6 +500,8 @@ static int handle_logger_show_channels(int fd, int argc, char *argv[])
                ast_cli(fd, " - ");
                if (chan->logmask & (1 << __LOG_DEBUG)) 
                        ast_cli(fd, "Debug ");
+               if (chan->logmask & (1 << __LOG_DTMF)) 
+                       ast_cli(fd, "DTMF ");
                if (chan->logmask & (1 << __LOG_VERBOSE)) 
                        ast_cli(fd, "Verbose ");
                if (chan->logmask & (1 << __LOG_WARNING)) 
@@ -653,6 +660,9 @@ static void ast_log_vsyslog(int level, const char *file, int line, const char *f
        if (level == __LOG_VERBOSE) {
                snprintf(buf, sizeof(buf), "VERBOSE[%ld]: ", (long)GETTID());
                level = __LOG_DEBUG;
+       } else if (level == __LOG_DTMF) {
+               snprintf(buf, sizeof(buf), "DTMF[%ld]: ", (long)GETTID());
+               level = __LOG_DEBUG;
        } else {
                snprintf(buf, sizeof(buf), "%s[%ld]: %s:%d in %s: ",
                         levels[level], (long)GETTID(), file, line, function);