diff --git a/src/host/modem/ModemV24.cpp b/src/host/modem/ModemV24.cpp index 221854f8..c34642bf 100644 --- a/src/host/modem/ModemV24.cpp +++ b/src/host/modem/ModemV24.cpp @@ -2333,8 +2333,11 @@ void ModemV24::queueP25Frame(uint8_t* data, uint16_t len, SERIAL_TX_TYPE msgType // otherwise, we time out messages as required by the message type else { if (msgType == STT_DATA) { - // IMBEs must go out at 20ms intervals + // data must go out at 20ms intervals msgTime = m_lastP25Tx + 20U; + } else if (msgType == STT_DATA_FAST) { + // fast data must go out at 10ms intervals + msgTime = m_lastP25Tx + 10U; } else { // Otherwise we don't care, we use 5ms since that's the theoretical minimum time a 9600 baud message can take msgTime = m_lastP25Tx + 5U; @@ -3128,7 +3131,7 @@ void ModemV24::convertFromAirV24(uint8_t* data, uint32_t length) if (m_trace) Utils::dump(1U, "ModemV24::convertFromAirV24(), MotTSBKFrame", tsbkBuf, DFSI_MOT_TSBK_LEN); - queueP25Frame(tsbkBuf, DFSI_MOT_TSBK_LEN, STT_DATA); + queueP25Frame(tsbkBuf, DFSI_MOT_TSBK_LEN, STT_DATA_FAST); } break; diff --git a/src/host/modem/ModemV24.h b/src/host/modem/ModemV24.h index a4c81ba0..6e7fba3d 100644 --- a/src/host/modem/ModemV24.h +++ b/src/host/modem/ModemV24.h @@ -44,7 +44,8 @@ namespace modem STT_NO_DATA, //!< No Data STT_START_STOP, //!< Start/Stop Signalling Frame STT_START_STOP_NO_JITTER, //!< Start/Stop Signalling Frame with Jitter Disabled - STT_DATA //!< Paced Data/Signalling Frame or IMBE Voice Frame + STT_DATA, //!< Paced Data/Signalling Frame or IMBE Voice Frame + STT_DATA_FAST //!< Fast Paced Data/Signalling Frame }; /** @} */ diff --git a/src/host/p25/Control.cpp b/src/host/p25/Control.cpp index fc1a6d3b..29d373d7 100644 --- a/src/host/p25/Control.cpp +++ b/src/host/p25/Control.cpp @@ -116,7 +116,7 @@ Control::Control(bool authoritative, uint32_t nac, uint32_t callHang, uint32_t q m_networkWatchdog(1000U, 0U, 1500U), m_adjSiteUpdate(1000U, 75U), m_activeTGUpdate(1000U, 5U), - m_ccPacketInterval(1000U, 0U, 20U), + m_ccPacketInterval(1000U, 0U, 15U), m_rfVoiceCallTermTimeout(1000U, VOICE_CALL_TERM_TIMEOUT), m_interval(), m_hangCount(3U * 8U),