Change D-Star EOT RF transmission control.

This commit is contained in:
Jonathan Naylor
2016-02-17 07:23:41 +00:00
parent 6a7b4a95c1
commit d26be71b26
2 changed files with 18 additions and 7 deletions

View File

@@ -191,10 +191,8 @@ bool CDStarControl::writeModem(unsigned char *data)
writeNetworkData(DSTAR_END_PATTERN_BYTES, 0U, true, false); writeNetworkData(DSTAR_END_PATTERN_BYTES, 0U, true, false);
} }
if (m_duplex) { if (m_duplex)
for (unsigned int i = 0U; i < 3U; i++) writeQueueEOT();
writeQueueData(DSTAR_END_PATTERN_BYTES);
}
m_ackTimer.start(); m_ackTimer.start();
@@ -458,9 +456,9 @@ void CDStarControl::writeNetwork()
m_timeoutTimer.stop(); m_timeoutTimer.stop();
writeQueueEOT();
data[1U] = TAG_EOT; data[1U] = TAG_EOT;
for (unsigned int i = 0U; i < 3U; i++)
writeQueueData(data + 1U);
#if defined(DUMP_DSTAR) #if defined(DUMP_DSTAR)
writeFile(data + 1U, length - 1U); writeFile(data + 1U, length - 1U);
@@ -583,6 +581,18 @@ void CDStarControl::writeQueueData(const unsigned char *data)
m_queue.addData(data, len); m_queue.addData(data, len);
} }
void CDStarControl::writeQueueEOT()
{
if (m_timeoutTimer.isRunning() && m_timeoutTimer.hasExpired())
return;
unsigned char len = 1U;
m_queue.addData(&len, 1U);
unsigned char data = TAG_EOT;
m_queue.addData(&data, len);
}
void CDStarControl::writeNetworkHeader(const unsigned char* data, bool busy) void CDStarControl::writeNetworkHeader(const unsigned char* data, bool busy)
{ {
assert(data != NULL); assert(data != NULL);
@@ -758,5 +768,5 @@ void CDStarControl::sendAck()
writeQueueData(data); writeQueueData(data);
} }
writeQueueData(DSTAR_END_PATTERN_BYTES); writeQueueEOT();
} }

View File

@@ -74,6 +74,7 @@ private:
void writeQueueHeader(const unsigned char* data); void writeQueueHeader(const unsigned char* data);
void writeQueueData(const unsigned char* data); void writeQueueData(const unsigned char* data);
void writeQueueEOT();
void writeNetworkHeader(const unsigned char* data, bool busy); void writeNetworkHeader(const unsigned char* data, bool busy);
void writeNetworkData(const unsigned char* data, unsigned int errors, bool end, bool busy); void writeNetworkData(const unsigned char* data, unsigned int errors, bool end, bool busy);