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:
Andreas Eversberg 2012-11-22 14:48:44 +01:00
parent acaf278f7f
commit e9b1625405
2 changed files with 3 additions and 2 deletions

View File

@ -409,12 +409,13 @@ void Pfxs::keypulse_ind(unsigned int cont)
{
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);
add_trace("KP", NULL, "%c", cont & DTMF_TONE_MASK);
end_trace();
message = message_create(p_serial, ACTIVE_EPOINT(p_epointlist), PORT_TO_EPOINT, MESSAGE_INFORMATION);
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);
}

View File

@ -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) {
class Pfxs *pfxs = (class Pfxs *)this;
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;
}
SCCAT(p_dialinginfo.id, cont & DTMF_TONE_MASK);