Adding some additional idle frames after a DMR Abort

nxdn
Andy CA6JAU 2018-02-03 20:10:25 -03:00
parent e7b52023c6
commit 7b88e883f9
2 changed files with 8 additions and 1 deletions

8
DMRTX.cpp 100644 → 100755
View File

@ -54,6 +54,7 @@ const uint8_t BIT_MASK_TABLE[] = {0x80U, 0x40U, 0x20U, 0x10U, 0x08U, 0x04U, 0x02
#define READ_BIT1(p,i) (p[(i)>>3] & BIT_MASK_TABLE[(i)&7])
const uint32_t STARTUP_COUNT = 20U;
const uint32_t ABORT_COUNT = 8U;
CDMRTX::CDMRTX() :
m_fifo(),
@ -69,6 +70,7 @@ m_poBuffer(),
m_poLen(0U),
m_poPtr(0U),
m_frameCount(0U),
m_abortCount(0U),
m_abort()
{
::memset(m_modState, 0x00U, 16U * sizeof(q15_t));
@ -210,10 +212,12 @@ uint8_t CDMRTX::writeAbort(const uint8_t* data, uint8_t length)
switch (data[0U]) {
case 1U:
m_abortCount = 0U;
m_abort[0U] = true;
return 0U;
case 2U:
m_abortCount = 0U;
m_abort[1U] = true;
return 0U;
@ -227,6 +231,7 @@ void CDMRTX::setStart(bool start)
m_state = start ? DMRTXSTATE_SLOT1 : DMRTXSTATE_IDLE;
m_frameCount = 0U;
m_abortCount = 0U;
m_abort[0U] = false;
m_abort[1U] = false;
@ -282,7 +287,7 @@ uint8_t CDMRTX::getSpace2() const
void CDMRTX::createData(uint8_t slotIndex)
{
if (m_fifo[slotIndex].getData() > 0U && m_frameCount >= STARTUP_COUNT) {
if (m_fifo[slotIndex].getData() > 0U && m_frameCount >= STARTUP_COUNT && m_abortCount >= ABORT_COUNT) {
for (unsigned int i = 0U; i < DMR_FRAME_LENGTH_BYTES; i++) {
m_poBuffer[i] = m_fifo[slotIndex].get();
m_markBuffer[i] = MARK_NONE;
@ -335,6 +340,7 @@ void CDMRTX::createCal()
void CDMRTX::createCACH(uint8_t txSlotIndex, uint8_t rxSlotIndex)
{
m_frameCount++;
m_abortCount++;
if (m_cachPtr >= 12U)
m_cachPtr = 0U;

1
DMRTX.h 100644 → 100755
View File

@ -72,6 +72,7 @@ private:
uint16_t m_poLen;
uint16_t m_poPtr;
uint32_t m_frameCount;
uint32_t m_abortCount;
bool m_abort[2U];
void createData(uint8_t slotIndex);