reduce number of P_GRANTs; ensure late entry is properly transmitting;

3.56-maint
Bryan Biedenkapp 2 years ago
parent d76bb77966
commit 9da279ac88

@ -1371,12 +1371,13 @@ void Slot::writeRF_ControlData(uint16_t frameCnt, uint8_t n)
if (j == m_lastLateEntry) {
uint32_t dstId = entry.first;
uint32_t srcId = m_affiliations->getGrantedSrcId(dstId);
bool grp = m_affiliations->isGroup(dstId);
if (m_debug) {
LogDebug(LOG_DMR, "writeRF_ControlData, frameCnt = %u, seq = %u, late entry, dstId = %u, srcId = %u", frameCnt, n, dstId, srcId);
}
m_control->writeRF_CSBK_Grant_LateEntry(dstId, srcId);
m_control->writeRF_CSBK_Grant_LateEntry(dstId, srcId, grp);
m_lastLateEntry = j++;
break;
}

@ -1323,13 +1323,15 @@ void ControlSignaling::writeRF_CSBK_U_Reg_Rsp(uint32_t srcId, uint8_t serviceOpt
/// </summary>
/// <param name="dstId"></param>
/// <param name="srcId"></param>
void ControlSignaling::writeRF_CSBK_Grant_LateEntry(uint32_t dstId, uint32_t srcId)
/// <param name="grp"></param>
void ControlSignaling::writeRF_CSBK_Grant_LateEntry(uint32_t dstId, uint32_t srcId, bool grp)
{
Slot *m_tscc = m_slot->m_dmr->getTSCCSlot();
uint32_t chNo = m_tscc->m_affiliations->getGrantedCh(dstId);
uint8_t slot = m_tscc->m_affiliations->getGrantedSlot(dstId);
if (grp) {
std::unique_ptr<CSBK_TV_GRANT> csbk = new_unique(CSBK_TV_GRANT);
csbk->setLogicalCh1(chNo);
csbk->setSlotNo(slot);
@ -1338,6 +1340,17 @@ void ControlSignaling::writeRF_CSBK_Grant_LateEntry(uint32_t dstId, uint32_t src
csbk->setDstId(dstId);
writeRF_CSBK(csbk.get());
}
else {
std::unique_ptr<CSBK_PV_GRANT> csbk = new_unique(CSBK_PV_GRANT);
csbk->setLogicalCh1(chNo);
csbk->setSlotNo(slot);
csbk->setSrcId(srcId);
csbk->setDstId(dstId);
writeRF_CSBK(csbk.get());
}
}
/// <summary>
@ -1381,9 +1394,8 @@ void ControlSignaling::writeRF_CSBK_Payload_Activate(uint32_t dstId, uint32_t sr
}
m_slot->setShortLC_Payload(m_slot->m_siteData, 1U);
for (int i = 0; i < 3; i++) {
for (int i = 0; i < 2; i++) {
writeRF_CSBK(csbk.get(), false, true);
for (int i = 0; i < 3; i++)
writeRF_CSBK(csbk.get());
}
}

@ -110,7 +110,7 @@ namespace dmr
void writeRF_CSBK_U_Reg_Rsp(uint32_t srcId, uint8_t serviceOptions);
/// <summary>Helper to write a TSCC late entry channel grant packet on the RF interface.</summary>
void writeRF_CSBK_Grant_LateEntry(uint32_t dstId, uint32_t srcId);
void writeRF_CSBK_Grant_LateEntry(uint32_t dstId, uint32_t srcId, bool grp);
/// <summary>Helper to write a payload random access to a TSCC payload channel on the RF interface.</summary>
void writeRF_CSBK_Payload_Activate(uint32_t dstId, uint32_t srcId, bool grp, bool voice);

Loading…
Cancel
Save

Powered by TurnKey Linux.