Adding NXDN TX preamble

This commit is contained in:
Andy CA6JAU 2018-02-13 20:24:55 -03:00
parent 3a27213c41
commit 44b36684a6
2 changed files with 22 additions and 7 deletions

View file

@ -32,7 +32,9 @@ m_poBuffer(),
m_poLen(0U),
m_poPtr(0U),
m_txDelay(240U), // 200ms
m_count(0U)
m_count(0U),
m_delay(false),
m_preamble(false)
{
}
@ -44,10 +46,12 @@ void CNXDNTX::process()
if (m_poLen == 0U) {
if (!m_tx) {
m_delay = true;
m_preamble = false;
m_count = 0U;
m_poLen = m_txDelay;
} else {
m_delay = false;
m_preamble = false;
for (uint8_t i = 0U; i < NXDN_FRAME_LENGTH_BYTES; i++)
m_poBuffer[m_poLen++] = m_buffer.get();
}
@ -60,8 +64,10 @@ void CNXDNTX::process()
while (space > 8U) {
if (m_delay) {
m_poPtr++;
writeByte(NXDN_SYNC);
m_poPtr++;
} else if (m_preamble) {
writeByte(NXDN_PREAMBLE[m_poPtr++]);
}
else
writeByte(m_poBuffer[m_poPtr++]);
@ -69,10 +75,18 @@ void CNXDNTX::process()
space -= 8U;
if (m_poPtr >= m_poLen) {
m_poPtr = 0U;
m_poLen = 0U;
m_delay = false;
return;
if (m_delay) {
m_preamble = true;
m_delay = false;
m_poPtr = 0U;
m_poLen = 3U;
} else {
m_poPtr = 0U;
m_poLen = 0U;
m_preamble = false;
m_delay = false;
return;
}
}
}
}

View file

@ -42,7 +42,8 @@ private:
uint16_t m_txDelay;
uint32_t m_count;
bool m_delay;
bool m_preamble;
void writeByte(uint8_t c);
};