last minute fix -- the original implementation was naive and always aborted incorrectly;

4.11f_maint
Bryan Biedenkapp 11 months ago
parent 172f0f2eb0
commit e4d2d677fe

@ -452,23 +452,31 @@ void Slot::processNetwork(const data::NetData& dmrData)
if (grantDemand) {
if (m_disableNetworkGrant) {
return;
if (m_enableTSCC && m_dedicatedTSCC) // if we *are* the TSCC exit after this
return;
break;
}
// if we're non-dedicated control, and if we're not in a listening or idle state, ignore any grant
// demands
if (!dedicatedTSCC && (m_rfState != RS_RF_LISTENING || m_netState != RS_NET_IDLE)) {
return;
if (m_enableTSCC && m_dedicatedTSCC) // if we *are* the TSCC exit after this
return;
break;
}
// validate source RID
if (!acl::AccessControl::validateSrcId(dmrData.getSrcId())) {
return;
if (m_enableTSCC && m_dedicatedTSCC) // if we *are* the TSCC exit after this
return;
break;
}
// validate the target ID, if the target is a talkgroup
if (!acl::AccessControl::validateTGId(dmrData.getSlotNo(), dmrData.getDstId())) {
return;
if (m_enableTSCC && m_dedicatedTSCC) // if we *are* the TSCC exit after this
return;
break;
}
if (m_verbose) {
@ -483,7 +491,10 @@ void Slot::processNetwork(const data::NetData& dmrData)
tscc->m_control->writeRF_CSBK_Data_Grant(dmrData.getSrcId(), dmrData.getDstId(), 4U, !unitToUnit, true);
}
}
return;
if (m_enableTSCC && m_dedicatedTSCC) // if we *are* the TSCC exit after this
return;
break;
default:
return;
}

Loading…
Cancel
Save

Powered by TurnKey Linux.