aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-08-22 21:19:59 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2005-08-22 21:19:59 +0000
commit887ebd5ee70e374901e5cc60042064986688dce8 (patch)
tree0facb36da28e7e8a9ae2f9f982a452d4c85d344d
parent9a0aaf306a01a56d4fc3863051b1e6f14e3bd5c6 (diff)
add a LOG_DTMF logging channel and send all bridged DTMF events out that channel (issue #4835)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6358 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xchannel.c8
-rwxr-xr-xconfigs/logger.conf.sample1
-rwxr-xr-xinclude/asterisk/logger.h6
-rwxr-xr-xlogger.c14
4 files changed, 27 insertions, 2 deletions
diff --git a/channel.c b/channel.c
index 8fe3ee538..b0894e3a6 100755
--- 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);
diff --git a/configs/logger.conf.sample b/configs/logger.conf.sample
index fc000a103..008554271 100755
--- a/configs/logger.conf.sample
+++ b/configs/logger.conf.sample
@@ -40,6 +40,7 @@
; warning
; error
; verbose
+; dtmf
;
; Special filename "console" represents the system console
;
diff --git a/include/asterisk/logger.h b/include/asterisk/logger.h
index 2e8a786b5..c94fd96d2 100755
--- a/include/asterisk/logger.h
+++ b/include/asterisk/logger.h
@@ -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
diff --git a/logger.c b/logger.c
index 8e5cdbf16..be3b8c176 100755
--- 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);