freetdm: add configuration option for DTMF debug directory
This commit is contained in:
parent
3c9ee25a0a
commit
1fabe6fc58
|
@ -20,6 +20,9 @@ cpu_reset_alarm_threshold => 70
|
||||||
; cpu_alarm_action => warn,reject
|
; cpu_alarm_action => warn,reject
|
||||||
cpu_alarm_action => warn
|
cpu_alarm_action => warn
|
||||||
|
|
||||||
|
; Where to dump DTMF debug files (see per span debugdtmf=yes option)
|
||||||
|
debugdtmf_directory=/full/path/to/dtmf/directory
|
||||||
|
|
||||||
; spans are defined with [span <span type> <span name>]
|
; spans are defined with [span <span type> <span name>]
|
||||||
; the span type can either be zt, wanpipe or pika
|
; the span type can either be zt, wanpipe or pika
|
||||||
; the span name can be any unique string
|
; the span name can be any unique string
|
||||||
|
|
|
@ -244,6 +244,7 @@ static struct {
|
||||||
ftdm_caller_data_t *call_ids[MAX_CALLIDS+1];
|
ftdm_caller_data_t *call_ids[MAX_CALLIDS+1];
|
||||||
ftdm_mutex_t *call_id_mutex;
|
ftdm_mutex_t *call_id_mutex;
|
||||||
uint32_t last_call_id;
|
uint32_t last_call_id;
|
||||||
|
char dtmfdebug_directory[1024];
|
||||||
} globals;
|
} globals;
|
||||||
|
|
||||||
enum ftdm_enum_cpu_alarm_action_flags
|
enum ftdm_enum_cpu_alarm_action_flags
|
||||||
|
@ -3469,7 +3470,7 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_queue_dtmf(ftdm_channel_t *ftdmchan, cons
|
||||||
if (!ftdmchan->dtmfdbg.file) {
|
if (!ftdmchan->dtmfdbg.file) {
|
||||||
struct tm currtime;
|
struct tm currtime;
|
||||||
time_t currsec;
|
time_t currsec;
|
||||||
char dfile[512];
|
char dfile[1024];
|
||||||
|
|
||||||
currsec = time(NULL);
|
currsec = time(NULL);
|
||||||
|
|
||||||
|
@ -3480,10 +3481,18 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_queue_dtmf(ftdm_channel_t *ftdmchan, cons
|
||||||
localtime_r(&currsec, &currtime);
|
localtime_r(&currsec, &currtime);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
snprintf(dfile, sizeof(dfile), "dtmf-s%dc%d-20%d-%d-%d-%d:%d:%d.%s",
|
if (ftdm_strlen_zero(globals.dtmfdebug_directory)) {
|
||||||
ftdmchan->span_id, ftdmchan->chan_id,
|
snprintf(dfile, sizeof(dfile), "dtmf-s%dc%d-20%d-%d-%d-%d:%d:%d.%s",
|
||||||
currtime.tm_year-100, currtime.tm_mon+1, currtime.tm_mday,
|
ftdmchan->span_id, ftdmchan->chan_id,
|
||||||
currtime.tm_hour, currtime.tm_min, currtime.tm_sec, ftdmchan->native_codec == FTDM_CODEC_ULAW ? "ulaw" : ftdmchan->native_codec == FTDM_CODEC_ALAW ? "alaw" : "sln");
|
currtime.tm_year-100, currtime.tm_mon+1, currtime.tm_mday,
|
||||||
|
currtime.tm_hour, currtime.tm_min, currtime.tm_sec, ftdmchan->native_codec == FTDM_CODEC_ULAW ? "ulaw" : ftdmchan->native_codec == FTDM_CODEC_ALAW ? "alaw" : "sln");
|
||||||
|
} else {
|
||||||
|
snprintf(dfile, sizeof(dfile), "%s/dtmf-s%dc%d-20%d-%d-%d-%d:%d:%d.%s",
|
||||||
|
globals.dtmfdebug_directory,
|
||||||
|
ftdmchan->span_id, ftdmchan->chan_id,
|
||||||
|
currtime.tm_year-100, currtime.tm_mon+1, currtime.tm_mday,
|
||||||
|
currtime.tm_hour, currtime.tm_min, currtime.tm_sec, ftdmchan->native_codec == FTDM_CODEC_ULAW ? "ulaw" : ftdmchan->native_codec == FTDM_CODEC_ALAW ? "alaw" : "sln");
|
||||||
|
}
|
||||||
ftdmchan->dtmfdbg.file = fopen(dfile, "wb");
|
ftdmchan->dtmfdbg.file = fopen(dfile, "wb");
|
||||||
if (!ftdmchan->dtmfdbg.file) {
|
if (!ftdmchan->dtmfdbg.file) {
|
||||||
ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "failed to open debug dtmf file %s\n", dfile);
|
ftdm_log_chan(ftdmchan, FTDM_LOG_ERROR, "failed to open debug dtmf file %s\n", dfile);
|
||||||
|
@ -4697,6 +4706,9 @@ static ftdm_status_t load_config(void)
|
||||||
globals.cpu_monitor.alarm_action_flags |= FTDM_CPU_ALARM_ACTION_WARN;
|
globals.cpu_monitor.alarm_action_flags |= FTDM_CPU_ALARM_ACTION_WARN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (!strncasecmp(var, "debugdtmf_directory", sizeof("debugdtmf_directory")-1)) {
|
||||||
|
ftdm_set_string(globals.dtmfdebug_directory, val);
|
||||||
|
ftdm_log(FTDM_LOG_DEBUG, "Debug DTMF directory set to '%s'\n", globals.dtmfdebug_directory);
|
||||||
} else if (!strncasecmp(var, "cpu_monitoring_interval", sizeof("cpu_monitoring_interval")-1)) {
|
} else if (!strncasecmp(var, "cpu_monitoring_interval", sizeof("cpu_monitoring_interval")-1)) {
|
||||||
if (atoi(val) > 0) {
|
if (atoi(val) > 0) {
|
||||||
globals.cpu_monitor.interval = atoi(val);
|
globals.cpu_monitor.interval = atoi(val);
|
||||||
|
|
Loading…
Reference in New Issue