Merge "chan_dahdi: Add faxdetect_timeout option."
This commit is contained in:
commit
4ffffa8bc4
6
CHANGES
6
CHANGES
|
@ -364,6 +364,12 @@ cdr_csv
|
||||||
--- Functionality changes from Asterisk 13.10.0 to Asterisk 13.11.0 ----------
|
--- Functionality changes from Asterisk 13.10.0 to Asterisk 13.11.0 ----------
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
chan_dahdi
|
||||||
|
------------------
|
||||||
|
* Added "faxdetect_timeout" option.
|
||||||
|
The option determines how many seconds into a call before faxdetect
|
||||||
|
is disabled for the call. Setting the value to zero disables the timeout.
|
||||||
|
|
||||||
res_pjsip
|
res_pjsip
|
||||||
------------------
|
------------------
|
||||||
* Added "fax_detect_timeout" to endpoint.
|
* Added "fax_detect_timeout" to endpoint.
|
||||||
|
|
|
@ -2345,7 +2345,6 @@ static void my_pri_ss7_open_media(void *p)
|
||||||
|
|
||||||
if (pvt->dsp_features && pvt->dsp) {
|
if (pvt->dsp_features && pvt->dsp) {
|
||||||
ast_dsp_set_features(pvt->dsp, pvt->dsp_features);
|
ast_dsp_set_features(pvt->dsp, pvt->dsp_features);
|
||||||
pvt->dsp_features = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* defined(HAVE_PRI) || defined(HAVE_SS7) */
|
#endif /* defined(HAVE_PRI) || defined(HAVE_SS7) */
|
||||||
|
@ -8640,6 +8639,15 @@ static struct ast_frame *dahdi_read(struct ast_channel *ast)
|
||||||
/* Perform busy detection etc on the dahdi line */
|
/* Perform busy detection etc on the dahdi line */
|
||||||
int mute;
|
int mute;
|
||||||
|
|
||||||
|
if ((p->dsp_features & DSP_FEATURE_FAX_DETECT)
|
||||||
|
&& p->faxdetect_timeout
|
||||||
|
&& p->faxdetect_timeout <= ast_channel_get_up_time(ast)) {
|
||||||
|
p->dsp_features &= ~DSP_FEATURE_FAX_DETECT;
|
||||||
|
ast_dsp_set_features(p->dsp, p->dsp_features);
|
||||||
|
ast_debug(1, "Channel driver fax CNG detection timeout on %s\n",
|
||||||
|
ast_channel_name(ast));
|
||||||
|
}
|
||||||
|
|
||||||
f = ast_dsp_process(ast, p->dsp, &p->subs[idx].f);
|
f = ast_dsp_process(ast, p->dsp, &p->subs[idx].f);
|
||||||
|
|
||||||
/* Check if DSP code thinks we should be muting this frame and mute the conference if so */
|
/* Check if DSP code thinks we should be muting this frame and mute the conference if so */
|
||||||
|
@ -12539,6 +12547,7 @@ static struct dahdi_pvt *mkintf(int channel, const struct dahdi_chan_conf *conf,
|
||||||
tmp->callprogress = conf->chan.callprogress;
|
tmp->callprogress = conf->chan.callprogress;
|
||||||
tmp->waitfordialtone = conf->chan.waitfordialtone;
|
tmp->waitfordialtone = conf->chan.waitfordialtone;
|
||||||
tmp->dialtone_detect = conf->chan.dialtone_detect;
|
tmp->dialtone_detect = conf->chan.dialtone_detect;
|
||||||
|
tmp->faxdetect_timeout = conf->chan.faxdetect_timeout;
|
||||||
tmp->cancallforward = conf->chan.cancallforward;
|
tmp->cancallforward = conf->chan.cancallforward;
|
||||||
tmp->dtmfrelax = conf->chan.dtmfrelax;
|
tmp->dtmfrelax = conf->chan.dtmfrelax;
|
||||||
tmp->callwaiting = tmp->permcallwaiting;
|
tmp->callwaiting = tmp->permcallwaiting;
|
||||||
|
@ -17790,6 +17799,10 @@ static int process_dahdi(struct dahdi_chan_conf *confp, const char *cat, struct
|
||||||
confp->chan.callprogress |= CALLPROGRESS_FAX_OUTGOING;
|
confp->chan.callprogress |= CALLPROGRESS_FAX_OUTGOING;
|
||||||
} else if (!strcasecmp(v->value, "both") || ast_true(v->value))
|
} else if (!strcasecmp(v->value, "both") || ast_true(v->value))
|
||||||
confp->chan.callprogress |= CALLPROGRESS_FAX_INCOMING | CALLPROGRESS_FAX_OUTGOING;
|
confp->chan.callprogress |= CALLPROGRESS_FAX_INCOMING | CALLPROGRESS_FAX_OUTGOING;
|
||||||
|
} else if (!strcasecmp(v->name, "faxdetect_timeout")) {
|
||||||
|
if (sscanf(v->value, "%30u", &confp->chan.faxdetect_timeout) != 1) {
|
||||||
|
confp->chan.faxdetect_timeout = 0;
|
||||||
|
}
|
||||||
} else if (!strcasecmp(v->name, "echocancel")) {
|
} else if (!strcasecmp(v->name, "echocancel")) {
|
||||||
process_echocancel(confp, v->value, v->lineno);
|
process_echocancel(confp, v->value, v->lineno);
|
||||||
} else if (!strcasecmp(v->name, "echotraining")) {
|
} else if (!strcasecmp(v->name, "echotraining")) {
|
||||||
|
|
|
@ -612,6 +612,11 @@ struct dahdi_pvt {
|
||||||
*/
|
*/
|
||||||
int dialtone_detect;
|
int dialtone_detect;
|
||||||
int dialtone_scanning_time_elapsed; /*!< Amount of audio scanned for dialtone, in frames */
|
int dialtone_scanning_time_elapsed; /*!< Amount of audio scanned for dialtone, in frames */
|
||||||
|
/*!
|
||||||
|
* \brief The number of seconds into call to disable fax detection. (0 = disabled)
|
||||||
|
* \note Set from the "faxdetect_timeout" value read in from chan_dahdi.conf
|
||||||
|
*/
|
||||||
|
unsigned int faxdetect_timeout;
|
||||||
struct timeval waitingfordt; /*!< Time we started waiting for dialtone */
|
struct timeval waitingfordt; /*!< Time we started waiting for dialtone */
|
||||||
struct timeval flashtime; /*!< Last flash-hook time */
|
struct timeval flashtime; /*!< Last flash-hook time */
|
||||||
/*! \brief Opaque DSP configuration structure. */
|
/*! \brief Opaque DSP configuration structure. */
|
||||||
|
|
|
@ -1119,6 +1119,15 @@ pickupgroup=1
|
||||||
;faxdetect=outgoing
|
;faxdetect=outgoing
|
||||||
;faxdetect=no
|
;faxdetect=no
|
||||||
;
|
;
|
||||||
|
; When 'faxdetect' is enabled, one could use 'faxdetect_timeout' to disable fax
|
||||||
|
; detection after the specified number of seconds into a call. Be aware that
|
||||||
|
; outgoing analog channels may consider the channel is answered immediately
|
||||||
|
; when dialing completes. Analog does not have a reliable method of detecting
|
||||||
|
; when the far end answers. Zero disables the timeout.
|
||||||
|
; Default is 0 to disable the timeout.
|
||||||
|
;
|
||||||
|
;faxdetect_timeout=30
|
||||||
|
;
|
||||||
; When 'faxdetect' is used, one could use 'faxbuffers' to configure the DAHDI
|
; When 'faxdetect' is used, one could use 'faxbuffers' to configure the DAHDI
|
||||||
; transmit buffer policy. The default is *OFF*. When this configuration
|
; transmit buffer policy. The default is *OFF*. When this configuration
|
||||||
; option is used, the faxbuffer policy will be used for the life of the call
|
; option is used, the faxbuffer policy will be used for the life of the call
|
||||||
|
|
Loading…
Reference in New Issue