Add extra headers for DMR DMO operation.

This commit is contained in:
Jonathan Naylor 2017-04-02 13:39:28 +01:00
parent c0571edb0b
commit 1a49641fe0

View file

@ -61,6 +61,9 @@ const unsigned char TALKER_ID_BLOCK1 = 0x02U;
const unsigned char TALKER_ID_BLOCK2 = 0x04U; const unsigned char TALKER_ID_BLOCK2 = 0x04U;
const unsigned char TALKER_ID_BLOCK3 = 0x08U; const unsigned char TALKER_ID_BLOCK3 = 0x08U;
const unsigned int NO_HEADERS_SIMPLEX = 8U;
const unsigned int NO_HEADERS_DUPLEX = 3U;
// #define DUMP_DMR // #define DUMP_DMR
CDMRSlot::CDMRSlot(unsigned int slotNo, unsigned int timeout) : CDMRSlot::CDMRSlot(unsigned int slotNo, unsigned int timeout) :
@ -253,9 +256,8 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len)
m_queue.clear(); m_queue.clear();
m_modem->writeDMRAbort(m_slotNo); m_modem->writeDMRAbort(m_slotNo);
writeQueueRF(data); for (unsigned int i = 0U; i < NO_HEADERS_DUPLEX; i++)
writeQueueRF(data); writeQueueRF(data);
writeQueueRF(data);
} }
writeNetworkRF(data, DT_VOICE_LC_HEADER); writeNetworkRF(data, DT_VOICE_LC_HEADER);
@ -754,9 +756,8 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len)
m_queue.clear(); m_queue.clear();
m_modem->writeDMRAbort(m_slotNo); m_modem->writeDMRAbort(m_slotNo);
writeQueueRF(start); for (unsigned int i = 0U; i < NO_HEADERS_DUPLEX; i++)
writeQueueRF(start); writeQueueRF(start);
writeQueueRF(start);
} }
writeNetworkRF(start, DT_VOICE_LC_HEADER); writeNetworkRF(start, DT_VOICE_LC_HEADER);
@ -991,9 +992,13 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
for (unsigned int i = 0U; i < m_jitterSlots; i++) for (unsigned int i = 0U; i < m_jitterSlots; i++)
writeQueueNet(m_idle); writeQueueNet(m_idle);
writeQueueNet(data); if (m_duplex) {
writeQueueNet(data); for (unsigned int i = 0U; i < NO_HEADERS_DUPLEX; i++)
writeQueueNet(data); writeQueueNet(data);
} else {
for (unsigned int i = 0U; i < NO_HEADERS_SIMPLEX; i++)
writeQueueNet(data);
}
m_netState = RS_NET_AUDIO; m_netState = RS_NET_AUDIO;
@ -1047,9 +1052,13 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
start[0U] = TAG_DATA; start[0U] = TAG_DATA;
start[1U] = 0x00U; start[1U] = 0x00U;
writeQueueRF(start); if (m_duplex) {
writeQueueRF(start); for (unsigned int i = 0U; i < NO_HEADERS_DUPLEX; i++)
writeQueueRF(start); writeQueueRF(start);
} else {
for (unsigned int i = 0U; i < NO_HEADERS_SIMPLEX; i++)
writeQueueRF(start);
}
#if defined(DUMP_DMR) #if defined(DUMP_DMR)
openFile(); openFile();
@ -1118,8 +1127,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
if (m_duplex) { if (m_duplex) {
for (unsigned int i = 0U; i < m_hangCount; i++) for (unsigned int i = 0U; i < m_hangCount; i++)
writeQueueNet(data); writeQueueNet(data);
} } else {
else {
for (unsigned int i = 0U; i < 3U; i++) for (unsigned int i = 0U; i < 3U; i++)
writeQueueNet(data); writeQueueNet(data);
} }
@ -1232,9 +1240,13 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
start[0U] = TAG_DATA; start[0U] = TAG_DATA;
start[1U] = 0x00U; start[1U] = 0x00U;
writeQueueRF(start); if (m_duplex) {
writeQueueRF(start); for (unsigned int i = 0U; i < NO_HEADERS_DUPLEX; i++)
writeQueueRF(start); writeQueueRF(start);
} else {
for (unsigned int i = 0U; i < NO_HEADERS_SIMPLEX; i++)
writeQueueRF(start);
}
#if defined(DUMP_DMR) #if defined(DUMP_DMR)
openFile(); openFile();