mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-20 22:45:44 +08:00
Extend preamble length for network CSBK preamble
This commit is contained in:
13
DMRCSBK.cpp
13
DMRCSBK.cpp
@@ -127,6 +127,14 @@ void CDMRCSBK::get(unsigned char* bytes) const
|
||||
{
|
||||
assert(bytes != NULL);
|
||||
|
||||
m_data[10U] ^= CSBK_CRC_MASK[0U];
|
||||
m_data[11U] ^= CSBK_CRC_MASK[1U];
|
||||
|
||||
CCRC::addCCITT162(m_data, 12U);
|
||||
|
||||
m_data[10U] ^= CSBK_CRC_MASK[0U];
|
||||
m_data[11U] ^= CSBK_CRC_MASK[1U];
|
||||
|
||||
CBPTC19696 bptc;
|
||||
bptc.encode(m_data, bytes);
|
||||
}
|
||||
@@ -170,3 +178,8 @@ unsigned char CDMRCSBK::getCBF() const
|
||||
{
|
||||
return m_CBF;
|
||||
}
|
||||
|
||||
void CDMRCSBK::setCBF(unsigned char cbf)
|
||||
{
|
||||
m_CBF = m_data[3U] = cbf;
|
||||
}
|
||||
|
||||
@@ -57,6 +57,8 @@ public:
|
||||
bool getDataContent() const;
|
||||
unsigned char getCBF() const;
|
||||
|
||||
void setCBF(unsigned char cbf);
|
||||
|
||||
private:
|
||||
unsigned char* m_data;
|
||||
CSBKO m_CSBKO;
|
||||
|
||||
24
DMRSlot.cpp
24
DMRSlot.cpp
@@ -66,6 +66,7 @@ const unsigned char TALKER_ID_BLOCK3 = 0x08U;
|
||||
|
||||
const unsigned int NO_HEADERS_SIMPLEX = 8U;
|
||||
const unsigned int NO_HEADERS_DUPLEX = 3U;
|
||||
const unsigned int NO_PREAMBLE_CSBK = 15U;
|
||||
|
||||
// #define DUMP_DMR
|
||||
|
||||
@@ -1565,7 +1566,28 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
||||
data[0U] = TAG_DATA;
|
||||
data[1U] = 0x00U;
|
||||
|
||||
writeQueueNet(data);
|
||||
if (csbko == CSBKO_PRECCSBK && csbk.getDataContent()) {
|
||||
unsigned int cbf = NO_PREAMBLE_CSBK + csbk.getCBF() - 1U;
|
||||
for (unsigned int i = 0U; i < NO_PREAMBLE_CSBK; i++, cbf--) {
|
||||
// Change blocks to follow
|
||||
csbk.setCBF(cbf);
|
||||
|
||||
// Regenerate the CSBK data
|
||||
csbk.get(data + 2U);
|
||||
|
||||
// Regenerate the Slot Type
|
||||
CDMRSlotType slotType;
|
||||
slotType.putData(data + 2U);
|
||||
slotType.setColorCode(m_colorCode);
|
||||
slotType.getData(data + 2U);
|
||||
|
||||
// Convert the Data Sync to be from the BS or MS as needed
|
||||
CSync::addDMRDataSync(data + 2U, m_duplex);
|
||||
|
||||
writeQueueNet(data);
|
||||
}
|
||||
} else
|
||||
writeQueueNet(data);
|
||||
|
||||
#if defined(DUMP_DMR)
|
||||
openFile();
|
||||
|
||||
Reference in New Issue
Block a user