diff --git a/YSFGateway/YSFGateway.cpp b/YSFGateway/YSFGateway.cpp index 295ec9a..8da5b49 100644 --- a/YSFGateway/YSFGateway.cpp +++ b/YSFGateway/YSFGateway.cpp @@ -268,13 +268,22 @@ int CYSFGateway::run() unsigned char ft = fich.getFT(); CYSFReflector* reflector = m_wiresX->getReflector(); - if ( (wiresXCommandPassthrough) && (reflector->m_wiresX) ) { - // Allow WiresX to Pass Through - processDTMF(buffer, dt); - processWiresX(buffer, fi, dt, fn, ft, true); + if ( (wiresXCommandPassthrough) && (reflector) ) { + // Connected to a reflector, figure out what kind it is + if (reflector->m_wiresX) { + // Pass Control Commands (WiresX capable reflector) + processDTMF(buffer, dt); + processWiresX(buffer, fi, dt, fn, ft, true); + } + else { + // Don't Pass Control Commands (Not a WiresX capable reflector) + m_exclude = (dt == YSF_DT_DATA_FR_MODE); + processDTMF(buffer, dt); + processWiresX(buffer, fi, dt, fn, ft, false); + } } else { - // Don't Pass Control Commands + // Don't Pass Control Commands (Not connected to a reflector) m_exclude = (dt == YSF_DT_DATA_FR_MODE); processDTMF(buffer, dt); processWiresX(buffer, fi, dt, fn, ft, false);