Fix: Disable DTMF dialing after first received KP (pulse) digit
Once a pulse digit is detected, it makes no sense to detect DTMF. Pulses will create distortion with some phones, causing false detection of DTMF tones.
This commit is contained in:
parent
acaf278f7f
commit
e9b1625405
3
fxs.cpp
3
fxs.cpp
|
@ -409,12 +409,13 @@ void Pfxs::keypulse_ind(unsigned int cont)
|
||||||
{
|
{
|
||||||
struct lcr_msg *message;
|
struct lcr_msg *message;
|
||||||
|
|
||||||
|
p_m_fxs_allow_dtmf = 0; /* disable DTMF from now on */
|
||||||
chan_trace_header(p_m_mISDNport, this, "PULSE", DIRECTION_NONE);
|
chan_trace_header(p_m_mISDNport, this, "PULSE", DIRECTION_NONE);
|
||||||
add_trace("KP", NULL, "%c", cont & DTMF_TONE_MASK);
|
add_trace("KP", NULL, "%c", cont & DTMF_TONE_MASK);
|
||||||
end_trace();
|
end_trace();
|
||||||
message = message_create(p_serial, ACTIVE_EPOINT(p_epointlist), PORT_TO_EPOINT, MESSAGE_INFORMATION);
|
message = message_create(p_serial, ACTIVE_EPOINT(p_epointlist), PORT_TO_EPOINT, MESSAGE_INFORMATION);
|
||||||
message->param.information.id[0] = cont & POTS_KP_MASK;
|
message->param.information.id[0] = cont & POTS_KP_MASK;
|
||||||
PDEBUG(DEBUG_ISDN, "Pfxs(%s) PH_CONTROL INDICATION DTMF digit '%c'\n", p_name, message->param.dtmf);
|
PDEBUG(DEBUG_ISDN, "Pfxs(%s) PH_CONTROL INDICATION KP digit '%c'\n", p_name, message->param.information.id[0]);
|
||||||
message_put(message);
|
message_put(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1060,7 +1060,7 @@ void PmISDN::bchannel_receive(struct mISDNhead *hh, unsigned char *data, int len
|
||||||
if (p_type == PORT_TYPE_POTS_FXS_IN && p_state == PORT_STATE_IN_OVERLAP) {
|
if (p_type == PORT_TYPE_POTS_FXS_IN && p_state == PORT_STATE_IN_OVERLAP) {
|
||||||
class Pfxs *pfxs = (class Pfxs *)this;
|
class Pfxs *pfxs = (class Pfxs *)this;
|
||||||
if (!pfxs->p_m_fxs_allow_dtmf) {
|
if (!pfxs->p_m_fxs_allow_dtmf) {
|
||||||
PDEBUG(DEBUG_PORT, "PmISDN(%s) DTMF for FXS not yet allowed\n", p_name);
|
PDEBUG(DEBUG_PORT, "PmISDN(%s) DTMF for FXS currently disabled\n", p_name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SCCAT(p_dialinginfo.id, cont & DTMF_TONE_MASK);
|
SCCAT(p_dialinginfo.id, cont & DTMF_TONE_MASK);
|
||||||
|
|
Loading…
Reference in New Issue