Adding NXDN TX preamble

pull/32/head
Andy CA6JAU 8 years ago
parent 3a27213c41
commit 44b36684a6

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

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

Loading…
Cancel
Save

Powered by TurnKey Linux.