Add TX Delay buffer protection.

c4fmdemod
Jonathan Naylor 2017-04-02 13:48:40 +01:00
parent e93b264d9c
commit c0941c4856
5 changed files with 14 additions and 2 deletions

View File

@ -166,7 +166,10 @@ uint8_t CDMRDMOTX::getSpace() const
void CDMRDMOTX::setTXDelay(uint8_t delay)
{
m_txDelay = 240U + uint16_t(delay) * 12U; // 200ms + tx delay
m_txDelay = 600U + uint16_t(delay) * 12U; // 500ms + tx delay
if (m_txDelay > 1200U)
m_txDelay = 1200U;
}
void CDMRDMOTX::createCACH(uint8_t* buffer, uint8_t slotIndex)

View File

@ -42,7 +42,7 @@ private:
CSerialRB m_fifo;
arm_fir_interpolate_instance_q15 m_modFilter;
q15_t m_modState[16U]; // blockSize + phaseLength - 1, 4 + 9 - 1 plus some spare
uint8_t m_poBuffer[800U];
uint8_t m_poBuffer[1200U];
uint16_t m_poLen;
uint16_t m_poPtr;
uint32_t m_txDelay;

View File

@ -434,6 +434,9 @@ void CDStarTX::writeByte(uint8_t c)
void CDStarTX::setTXDelay(uint8_t delay)
{
m_txDelay = 300U + uint16_t(delay) * 6U; // 250ms + tx delay
if (m_txDelay > 600U)
m_txDelay = 600U;
}
uint8_t CDStarTX::getSpace() const

View File

@ -166,6 +166,9 @@ void CP25TX::writeByte(uint8_t c)
void CP25TX::setTXDelay(uint8_t delay)
{
m_txDelay = 600U + uint16_t(delay) * 12U; // 500ms + tx delay
if (m_txDelay > 1200U)
m_txDelay = 1200U;
}
uint8_t CP25TX::getSpace() const

View File

@ -152,6 +152,9 @@ void CYSFTX::writeByte(uint8_t c)
void CYSFTX::setTXDelay(uint8_t delay)
{
m_txDelay = 600U + uint16_t(delay) * 12U; // 500ms + tx delay
if (m_txDelay > 1200U)
m_txDelay = 1200U;
}
uint8_t CYSFTX::getSpace() const