diff --git a/src/dmr/packet/ControlSignaling.cpp b/src/dmr/packet/ControlSignaling.cpp
index c01bc1cd..e3b70606 100644
--- a/src/dmr/packet/ControlSignaling.cpp
+++ b/src/dmr/packet/ControlSignaling.cpp
@@ -450,7 +450,7 @@ void ControlSignaling::processNetwork(const data::Data & dmrData)
if (m_slot->m_authoritative) {
if (!m_slot->m_affiliations->isGranted(dstId)) {
- writeRF_CSBK_Grant(srcId, dstId, isp->getServiceOptions(), false);
+ writeRF_CSBK_Grant(srcId, dstId, isp->getServiceOptions(), false, true);
}
}
break;
@@ -459,7 +459,7 @@ void ControlSignaling::processNetwork(const data::Data & dmrData)
if (m_slot->m_authoritative) {
if (!m_slot->m_affiliations->isGranted(dstId)) {
- writeRF_CSBK_Grant(srcId, dstId, isp->getServiceOptions(), true);
+ writeRF_CSBK_Grant(srcId, dstId, isp->getServiceOptions(), true, true);
}
}
break;
@@ -468,7 +468,7 @@ void ControlSignaling::processNetwork(const data::Data & dmrData)
writeRF_CSBK_ACK_RSP(srcId, TS_WAIT_RSN, 0U);
if (!m_slot->m_affiliations->isGranted(dstId)) {
- writeRF_CSBK_Data_Grant(srcId, dstId, isp->getServiceOptions(), false);
+ writeRF_CSBK_Data_Grant(srcId, dstId, isp->getServiceOptions(), false, true);
}
break;
case SVC_KIND_GRP_DATA_CALL:
@@ -476,7 +476,7 @@ void ControlSignaling::processNetwork(const data::Data & dmrData)
writeRF_CSBK_ACK_RSP(srcId, TS_WAIT_RSN, 0U);
if (!m_slot->m_affiliations->isGranted(dstId)) {
- writeRF_CSBK_Data_Grant(srcId, dstId, isp->getServiceOptions(), true);
+ writeRF_CSBK_Data_Grant(srcId, dstId, isp->getServiceOptions(), true, true);
}
break;
case SVC_KIND_REG_SVC:
@@ -776,12 +776,11 @@ void ControlSignaling::writeRF_CSBK_NACK_RSP(uint32_t dstId, uint8_t reason, uin
///
///
///
+///
///
///
-///
-///
///
-bool ControlSignaling::writeRF_CSBK_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool skip, uint32_t chNo, bool net, bool skipNetCheck)
+bool ControlSignaling::writeRF_CSBK_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool net, bool skip, uint32_t chNo)
{
Slot *m_tscc = m_slot->m_dmr->getTSCCSlot();
@@ -1018,11 +1017,11 @@ bool ControlSignaling::writeRF_CSBK_Grant(uint32_t srcId, uint32_t dstId, uint8_
///
///
///
+///
///
///
-///
///
-bool ControlSignaling::writeRF_CSBK_Data_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool skip, uint32_t chNo, bool net)
+bool ControlSignaling::writeRF_CSBK_Data_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool net, bool skip, uint32_t chNo)
{
Slot *m_tscc = m_slot->m_dmr->getTSCCSlot();
diff --git a/src/dmr/packet/ControlSignaling.h b/src/dmr/packet/ControlSignaling.h
index c702f162..b4aec562 100644
--- a/src/dmr/packet/ControlSignaling.h
+++ b/src/dmr/packet/ControlSignaling.h
@@ -95,9 +95,9 @@ namespace dmr
/// Helper to write a NACK RSP packet.
void writeRF_CSBK_NACK_RSP(uint32_t dstId, uint8_t reason, uint8_t service);
/// Helper to write a grant packet.
- bool writeRF_CSBK_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool skip = false, uint32_t chNo = 0U, bool net = false, bool skipNetCheck = false);
+ bool writeRF_CSBK_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool net = false, bool skip = false, uint32_t chNo = 0U);
/// Helper to write a data grant packet.
- bool writeRF_CSBK_Data_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool skip = false, uint32_t chNo = 0U, bool net = false);
+ bool writeRF_CSBK_Data_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool net = false, bool skip = false, uint32_t chNo = 0U);
/// Helper to write a unit registration response packet.
void writeRF_CSBK_U_Reg_Rsp(uint32_t srcId, uint8_t serviceOptions);
diff --git a/src/nxdn/packet/Trunk.cpp b/src/nxdn/packet/Trunk.cpp
index ede142e5..47a16eae 100644
--- a/src/nxdn/packet/Trunk.cpp
+++ b/src/nxdn/packet/Trunk.cpp
@@ -258,18 +258,18 @@ bool Trunk::processNetwork(uint8_t fct, uint8_t option, lc::RTCH& netLC, uint8_t
switch (rcch->getMessageType()) {
case RTCH_MESSAGE_TYPE_VCALL:
{
- if (m_verbose) {
- LogMessage(LOG_NET, NXDN_RCCH_MSG_TYPE_VCALL_CONN_REQ ", emerg = %u, encrypt = %u, prio = %u, chNo = %u, srcId = %u, dstId = %u",
- rcch->getEmergency(), rcch->getEncrypted(), rcch->getPriority(), rcch->getGrpVchNo(), srcId, dstId);
- }
-
- uint8_t serviceOptions = (rcch->getEmergency() ? 0x80U : 0x00U) + // Emergency Flag
- (rcch->getEncrypted() ? 0x40U : 0x00U) + // Encrypted Flag
- (rcch->getPriority() & 0x07U); // Priority
-
if (m_nxdn->m_dedicatedControl && !m_nxdn->m_voiceOnControl) {
if (!m_nxdn->m_affiliations.isGranted(dstId)) {
- writeRF_Message_Grant(srcId, dstId, serviceOptions, true);
+ if (m_verbose) {
+ LogMessage(LOG_NET, NXDN_RCCH_MSG_TYPE_VCALL_CONN_REQ ", emerg = %u, encrypt = %u, prio = %u, chNo = %u, srcId = %u, dstId = %u",
+ rcch->getEmergency(), rcch->getEncrypted(), rcch->getPriority(), rcch->getGrpVchNo(), srcId, dstId);
+ }
+
+ uint8_t serviceOptions = (rcch->getEmergency() ? 0x80U : 0x00U) + // Emergency Flag
+ (rcch->getEncrypted() ? 0x40U : 0x00U) + // Encrypted Flag
+ (rcch->getPriority() & 0x07U); // Priority
+
+ writeRF_Message_Grant(srcId, dstId, serviceOptions, true, true);
}
}
}
@@ -456,12 +456,11 @@ void Trunk::writeRF_Message(RCCH* rcch, bool noNetwork, bool clearBeforeWrite)
///
///
///
+///
///
///
-///
-///
///
-bool Trunk::writeRF_Message_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool skip, uint32_t chNo, bool net, bool skipNetCheck)
+bool Trunk::writeRF_Message_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool net, bool skip, uint32_t chNo)
{
bool emergency = ((serviceOptions & 0xFFU) & 0x80U) == 0x80U; // Emergency Flag
bool encryption = ((serviceOptions & 0xFFU) & 0x40U) == 0x40U; // Encryption Flag
@@ -587,7 +586,7 @@ bool Trunk::writeRF_Message_Grant(uint32_t srcId, uint32_t dstId, uint8_t servic
}
// transmit group grant
- writeRF_Message(rcch.get(), false, true);
+ writeRF_Message(rcch.get(), net, true);
return true;
}
diff --git a/src/nxdn/packet/Trunk.h b/src/nxdn/packet/Trunk.h
index e4d9d182..89d5f789 100644
--- a/src/nxdn/packet/Trunk.h
+++ b/src/nxdn/packet/Trunk.h
@@ -102,7 +102,7 @@ namespace nxdn
void writeRF_Message(lc::RCCH* rcch, bool noNetwork, bool clearBeforeWrite = false);
/// Helper to write a grant packet.
- bool writeRF_Message_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool skip = false, uint32_t chNo = 0U, bool net = false, bool skipNetCheck = false);
+ bool writeRF_Message_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool net = false, bool skip = false, uint32_t chNo = 0U);
/// Helper to write a deny packet.
void writeRF_Message_Deny(uint32_t srcId, uint32_t dstId, uint8_t reason, uint8_t service);
/// Helper to write a group registration response packet.
diff --git a/src/p25/packet/Trunk.cpp b/src/p25/packet/Trunk.cpp
index 52b1d08f..f92a5f6c 100644
--- a/src/p25/packet/Trunk.cpp
+++ b/src/p25/packet/Trunk.cpp
@@ -701,36 +701,36 @@ bool Trunk::processNetwork(uint8_t* data, uint32_t len, lc::LC& control, data::L
switch (tsbk->getLCO()) {
case TSBK_IOSP_GRP_VCH:
{
- if (m_verbose) {
- LogMessage(LOG_NET, P25_TSDU_STR ", TSBK_IOSP_GRP_VCH (Group Voice Channel Grant), emerg = %u, encrypt = %u, prio = %u, chNo = %u, srcId = %u, dstId = %u",
- tsbk->getEmergency(), tsbk->getEncrypted(), tsbk->getPriority(), tsbk->getGrpVchNo(), srcId, dstId);
- }
-
- uint8_t serviceOptions = (tsbk->getEmergency() ? 0x80U : 0x00U) + // Emergency Flag
- (tsbk->getEncrypted() ? 0x40U : 0x00U) + // Encrypted Flag
- (tsbk->getPriority() & 0x07U); // Priority
-
if (m_p25->m_dedicatedControl && !m_p25->m_voiceOnControl) {
if (!m_p25->m_affiliations.isGranted(dstId)) {
- writeRF_TSDU_Grant(srcId, dstId, serviceOptions, true);
+ if (m_verbose) {
+ LogMessage(LOG_NET, P25_TSDU_STR ", TSBK_IOSP_GRP_VCH (Group Voice Channel Grant), emerg = %u, encrypt = %u, prio = %u, chNo = %u, srcId = %u, dstId = %u",
+ tsbk->getEmergency(), tsbk->getEncrypted(), tsbk->getPriority(), tsbk->getGrpVchNo(), srcId, dstId);
+ }
+
+ uint8_t serviceOptions = (tsbk->getEmergency() ? 0x80U : 0x00U) + // Emergency Flag
+ (tsbk->getEncrypted() ? 0x40U : 0x00U) + // Encrypted Flag
+ (tsbk->getPriority() & 0x07U); // Priority
+
+ writeRF_TSDU_Grant(srcId, dstId, serviceOptions, true, true);
}
}
}
return true; // don't allow this to write to the air
case TSBK_IOSP_UU_VCH:
{
- if (m_verbose) {
- LogMessage(LOG_NET, P25_TSDU_STR ", TSBK_IOSP_UU_VCH (Unit-to-Unit Voice Channel Grant), emerg = %u, encrypt = %u, prio = %u, chNo = %u, srcId = %u, dstId = %u",
- tsbk->getEmergency(), tsbk->getEncrypted(), tsbk->getPriority(), tsbk->getGrpVchNo(), srcId, dstId);
- }
-
- uint8_t serviceOptions = (tsbk->getEmergency() ? 0x80U : 0x00U) + // Emergency Flag
- (tsbk->getEncrypted() ? 0x40U : 0x00U) + // Encrypted Flag
- (tsbk->getPriority() & 0x07U); // Priority
-
if (m_p25->m_dedicatedControl && !m_p25->m_voiceOnControl) {
if (!m_p25->m_affiliations.isGranted(dstId)) {
- writeRF_TSDU_Grant(srcId, dstId, serviceOptions, false);
+ if (m_verbose) {
+ LogMessage(LOG_NET, P25_TSDU_STR ", TSBK_IOSP_UU_VCH (Unit-to-Unit Voice Channel Grant), emerg = %u, encrypt = %u, prio = %u, chNo = %u, srcId = %u, dstId = %u",
+ tsbk->getEmergency(), tsbk->getEncrypted(), tsbk->getPriority(), tsbk->getGrpVchNo(), srcId, dstId);
+ }
+
+ uint8_t serviceOptions = (tsbk->getEmergency() ? 0x80U : 0x00U) + // Emergency Flag
+ (tsbk->getEncrypted() ? 0x40U : 0x00U) + // Encrypted Flag
+ (tsbk->getPriority() & 0x07U); // Priority
+
+ writeRF_TSDU_Grant(srcId, dstId, serviceOptions, false, true);
}
}
}
@@ -2138,13 +2138,12 @@ void Trunk::queueRF_TSBK_Ctrl(uint8_t lco)
///
///
///
-///
///
-///
///
-///
+///
+///
///
-bool Trunk::writeRF_TSDU_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool skip, uint32_t chNo, bool net, bool skipNetCheck)
+bool Trunk::writeRF_TSDU_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool net, bool skip, uint32_t chNo)
{
bool emergency = ((serviceOptions & 0xFFU) & 0x80U) == 0x80U; // Emergency Flag
bool encryption = ((serviceOptions & 0xFFU) & 0x40U) == 0x40U; // Encryption Flag
@@ -2269,7 +2268,7 @@ bool Trunk::writeRF_TSDU_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOp
}
// transmit group grant
- writeRF_TSDU_SBF(iosp.get(), false);//, true, net);
+ writeRF_TSDU_SBF(iosp.get(), net);
}
else {
if (!net) {
@@ -2309,7 +2308,7 @@ bool Trunk::writeRF_TSDU_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOp
}
// transmit private grant
- writeRF_TSDU_SBF(iosp.get(), false);//, true, net);
+ writeRF_TSDU_SBF(iosp.get(), net);
}
}
diff --git a/src/p25/packet/Trunk.h b/src/p25/packet/Trunk.h
index 70860ad5..d0f55d6c 100644
--- a/src/p25/packet/Trunk.h
+++ b/src/p25/packet/Trunk.h
@@ -189,7 +189,7 @@ namespace p25
void queueRF_TSBK_Ctrl(uint8_t lco);
/// Helper to write a grant packet.
- bool writeRF_TSDU_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool skip = false, uint32_t chNo = 0U, bool net = false, bool skipNetCheck = false);
+ bool writeRF_TSDU_Grant(uint32_t srcId, uint32_t dstId, uint8_t serviceOptions, bool grp, bool net = false, bool skip = false, uint32_t chNo = 0U);
/// Helper to write a SNDCP grant packet.
bool writeRF_TSDU_SNDCP_Grant(uint32_t srcId, uint32_t dstId, bool skip = false, bool net = false);
/// Helper to write a unit to unit answer request packet.