Change timings to match a real repeater.
This commit is contained in:
parent
af4709497e
commit
27abecd31d
1 changed files with 53 additions and 26 deletions
63
DMRSlot.cpp
63
DMRSlot.cpp
|
@ -165,6 +165,7 @@ void CDMRSlot::writeModem(unsigned char *data)
|
|||
if (m_duplex) {
|
||||
writeQueueRF(data);
|
||||
writeQueueRF(data);
|
||||
writeQueueRF(data);
|
||||
}
|
||||
|
||||
writeNetworkRF(data, DT_VOICE_LC_HEADER);
|
||||
|
@ -223,9 +224,9 @@ void CDMRSlot::writeModem(unsigned char *data)
|
|||
writeNetworkRF(data, DT_TERMINATOR_WITH_LC);
|
||||
writeNetworkRF(data, DT_TERMINATOR_WITH_LC);
|
||||
|
||||
// 480ms of terminator to space things out
|
||||
if (m_duplex) {
|
||||
for (unsigned int i = 0U; i < 8U; i++)
|
||||
writeQueueRF(data);
|
||||
writeQueueRF(data);
|
||||
writeQueueRF(data);
|
||||
}
|
||||
|
||||
|
@ -489,6 +490,7 @@ void CDMRSlot::writeModem(unsigned char *data)
|
|||
if (m_duplex) {
|
||||
writeQueueRF(start);
|
||||
writeQueueRF(start);
|
||||
writeQueueRF(start);
|
||||
}
|
||||
|
||||
writeNetworkRF(start, DT_VOICE_LC_HEADER);
|
||||
|
@ -570,10 +572,11 @@ void CDMRSlot::endOfRFData()
|
|||
|
||||
m_rfDataHeader.getTerminator(bytes + 2U);
|
||||
|
||||
bytes[0U] = TAG_DATA;
|
||||
bytes[0U] = TAG_EOT;
|
||||
bytes[1U] = 0x00U;
|
||||
|
||||
for (unsigned int i = 0U; i < 5U; i++)
|
||||
writeQueueRF(bytes);
|
||||
writeQueueRF(bytes);
|
||||
writeQueueRF(bytes);
|
||||
}
|
||||
|
||||
|
@ -610,11 +613,11 @@ void CDMRSlot::writeEndRF(bool writeEnd)
|
|||
slotType.setDataType(DT_TERMINATOR_WITH_LC);
|
||||
slotType.getData(data + 2U);
|
||||
|
||||
data[0U] = TAG_DATA;
|
||||
data[0U] = TAG_EOT;
|
||||
data[1U] = 0x00U;
|
||||
|
||||
// 480ms of terminator to space things out
|
||||
for (unsigned int i = 0U; i < 8U; i++)
|
||||
writeQueueRF(data);
|
||||
writeQueueRF(data);
|
||||
writeQueueRF(data);
|
||||
}
|
||||
}
|
||||
|
@ -639,10 +642,11 @@ void CDMRSlot::endOfNetData()
|
|||
|
||||
m_netDataHeader.getTerminator(bytes + 2U);
|
||||
|
||||
bytes[0U] = TAG_DATA;
|
||||
bytes[0U] = TAG_EOT;
|
||||
bytes[1U] = 0x00U;
|
||||
|
||||
for (unsigned int i = 0U; i < 5U; i++)
|
||||
writeQueueNet(bytes);
|
||||
writeQueueNet(bytes);
|
||||
writeQueueNet(bytes);
|
||||
}
|
||||
|
||||
|
@ -681,11 +685,11 @@ void CDMRSlot::writeEndNet(bool writeEnd)
|
|||
slotType.setDataType(DT_TERMINATOR_WITH_LC);
|
||||
slotType.getData(data + 2U);
|
||||
|
||||
data[0U] = TAG_DATA;
|
||||
data[0U] = TAG_EOT;
|
||||
data[1U] = 0x00U;
|
||||
|
||||
// 480ms of terminator to space things out
|
||||
for (unsigned int i = 0U; i < 8U; i++)
|
||||
writeQueueNet(data);
|
||||
writeQueueNet(data);
|
||||
writeQueueNet(data);
|
||||
}
|
||||
|
||||
|
@ -746,10 +750,12 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
|||
m_netBits = 1U;
|
||||
m_netErrs = 0U;
|
||||
|
||||
// 300ms of idle to give breathing space for lost frames
|
||||
for (unsigned int i = 0U; i < 5U; i++)
|
||||
writeQueueNet(m_idle);
|
||||
writeQueueNet(m_idle);
|
||||
writeQueueNet(m_idle);
|
||||
writeQueueNet(m_idle);
|
||||
|
||||
writeQueueNet(data);
|
||||
writeQueueNet(data);
|
||||
writeQueueNet(data);
|
||||
|
||||
|
@ -814,8 +820,8 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
|||
data[0U] = TAG_EOT;
|
||||
data[1U] = 0x00U;
|
||||
|
||||
// 480ms of terminator to space things out
|
||||
for (unsigned int i = 0U; i < 8U; i++)
|
||||
writeQueueNet(data);
|
||||
writeQueueNet(data);
|
||||
writeQueueNet(data);
|
||||
|
||||
#if defined(DUMP_DMR)
|
||||
|
@ -889,9 +895,30 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
|||
|
||||
m_netTimeoutTimer.start();
|
||||
|
||||
// 540ms of idle to give breathing space for lost frames
|
||||
for (unsigned int i = 0U; i < 9U; i++)
|
||||
writeQueueNet(m_idle);
|
||||
writeQueueNet(m_idle);
|
||||
writeQueueNet(m_idle);
|
||||
writeQueueNet(m_idle);
|
||||
|
||||
// Create a dummy start frame
|
||||
unsigned char start[DMR_FRAME_LENGTH_BYTES + 2U];
|
||||
|
||||
CSync::addDMRDataSync(start + 2U);
|
||||
|
||||
CDMRFullLC fullLC;
|
||||
fullLC.encode(*m_netLC, start + 2U, DT_VOICE_LC_HEADER);
|
||||
|
||||
CDMRSlotType slotType;
|
||||
slotType.setColorCode(m_colorCode);
|
||||
slotType.setDataType(DT_VOICE_LC_HEADER);
|
||||
slotType.getData(start + 2U);
|
||||
|
||||
start[0U] = TAG_DATA;
|
||||
start[1U] = 0x00U;
|
||||
|
||||
writeQueueRF(start);
|
||||
writeQueueRF(start);
|
||||
writeQueueRF(start);
|
||||
|
||||
#if defined(DUMP_DMR)
|
||||
openFile();
|
||||
|
|
Loading…
Reference in a new issue