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;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue