diff --git a/src/host/dmr/packet/ControlSignaling.cpp b/src/host/dmr/packet/ControlSignaling.cpp index d61836d9..bf268d93 100644 --- a/src/host/dmr/packet/ControlSignaling.cpp +++ b/src/host/dmr/packet/ControlSignaling.cpp @@ -221,7 +221,8 @@ bool ControlSignaling::process(uint8_t* data, uint32_t len) if (m_slot->m_authoritative) { writeRF_CSBK_Grant(srcId, dstId, isp->getServiceOptions(), false); } else { - m_slot->m_network->writeGrantReq(modem::DVM_STATE::STATE_DMR, srcId, dstId, m_slot->m_slotNo, true); + if (m_slot->m_network != nullptr) + m_slot->m_network->writeGrantReq(modem::DVM_STATE::STATE_DMR, srcId, dstId, m_slot->m_slotNo, true); } break; case SVC_KIND_GRP_VOICE_CALL: @@ -239,7 +240,8 @@ bool ControlSignaling::process(uint8_t* data, uint32_t len) if (m_slot->m_authoritative) { writeRF_CSBK_Grant(srcId, dstId, isp->getServiceOptions(), true); } else { - m_slot->m_network->writeGrantReq(modem::DVM_STATE::STATE_DMR, srcId, dstId, m_slot->m_slotNo, false); + if (m_slot->m_network != nullptr) + m_slot->m_network->writeGrantReq(modem::DVM_STATE::STATE_DMR, srcId, dstId, m_slot->m_slotNo, false); } break; case SVC_KIND_IND_DATA_CALL: @@ -1355,7 +1357,8 @@ void ControlSignaling::writeRF_CSBK_U_Reg_Rsp(uint32_t srcId, uint8_t serviceOpt // remove dynamic unit registration table entry m_slot->m_affiliations->unitDereg(srcId); - m_slot->m_network->announceUnitDeregistration(srcId); + if (m_slot->m_network != nullptr) + m_slot->m_network->announceUnitDeregistration(srcId); csbk->setReason(TS_ACK_RSN_REG); } @@ -1382,7 +1385,8 @@ void ControlSignaling::writeRF_CSBK_U_Reg_Rsp(uint32_t srcId, uint8_t serviceOpt m_slot->m_affiliations->unitReg(srcId); } - m_slot->m_network->announceUnitRegistration(srcId); + if (m_slot->m_network != nullptr) + m_slot->m_network->announceUnitRegistration(srcId); } } diff --git a/src/host/nxdn/packet/ControlSignaling.cpp b/src/host/nxdn/packet/ControlSignaling.cpp index 2c2aee81..9a6a711e 100644 --- a/src/host/nxdn/packet/ControlSignaling.cpp +++ b/src/host/nxdn/packet/ControlSignaling.cpp @@ -187,7 +187,8 @@ bool ControlSignaling::process(uint8_t fct, uint8_t option, uint8_t* data, uint3 if (m_nxdn->m_authoritative) { writeRF_Message_Grant(srcId, dstId, serviceOptions, true); } else { - m_nxdn->m_network->writeGrantReq(modem::DVM_STATE::STATE_NXDN, srcId, dstId, 0U, false); + if (m_nxdn->m_network != nullptr) + m_nxdn->m_network->writeGrantReq(modem::DVM_STATE::STATE_NXDN, srcId, dstId, 0U, false); } } break; @@ -724,7 +725,8 @@ bool ControlSignaling::writeRF_Message_Grp_Reg_Rsp(uint32_t srcId, uint32_t dstI // update dynamic affiliation table m_nxdn->m_affiliations.groupAff(srcId, dstId); - m_nxdn->m_network->announceGroupAffiliation(srcId, dstId); + if (m_nxdn->m_network != nullptr) + m_nxdn->m_network->announceGroupAffiliation(srcId, dstId); } writeRF_Message_Imm(rcch.get(), false); @@ -767,7 +769,8 @@ void ControlSignaling::writeRF_Message_U_Reg_Rsp(uint32_t srcId, uint32_t locId) m_nxdn->m_affiliations.unitReg(srcId); } - m_nxdn->m_network->announceUnitRegistration(srcId); + if (m_nxdn->m_network != nullptr) + m_nxdn->m_network->announceUnitRegistration(srcId); } rcch->setSrcId(srcId); diff --git a/src/host/p25/packet/ControlSignaling.cpp b/src/host/p25/packet/ControlSignaling.cpp index a79d5e7f..086c8cce 100644 --- a/src/host/p25/packet/ControlSignaling.cpp +++ b/src/host/p25/packet/ControlSignaling.cpp @@ -242,7 +242,8 @@ bool ControlSignaling::process(uint8_t* data, uint32_t len, std::unique_ptrm_network->writeGrantReq(modem::DVM_STATE::STATE_P25, srcId, dstId, 0U, false); + if (m_p25->m_network != nullptr) + m_p25->m_network->writeGrantReq(modem::DVM_STATE::STATE_P25, srcId, dstId, 0U, false); } } break; @@ -272,7 +273,8 @@ bool ControlSignaling::process(uint8_t* data, uint32_t len, std::unique_ptrm_network->writeGrantReq(modem::DVM_STATE::STATE_P25, srcId, dstId, 0U, true); + if (m_p25->m_network != nullptr) + m_p25->m_network->writeGrantReq(modem::DVM_STATE::STATE_P25, srcId, dstId, 0U, true); } } } @@ -302,7 +304,8 @@ bool ControlSignaling::process(uint8_t* data, uint32_t len, std::unique_ptrm_network->writeGrantReq(modem::DVM_STATE::STATE_P25, srcId, dstId, 0U, true); + if (m_p25->m_network != nullptr) + m_p25->m_network->writeGrantReq(modem::DVM_STATE::STATE_P25, srcId, dstId, 0U, true); } } else if (iosp->getResponse() == P25_ANS_RSP_DENY) { @@ -2685,7 +2688,8 @@ bool ControlSignaling::writeRF_TSDU_Grp_Aff_Rsp(uint32_t srcId, uint32_t dstId) // update dynamic affiliation table m_p25->m_affiliations.groupAff(srcId, dstId); - m_p25->m_network->announceGroupAffiliation(srcId, dstId); + if (m_p25->m_network != nullptr) + m_p25->m_network->announceGroupAffiliation(srcId, dstId); } writeRF_TSDU_SBF_Imm(iosp.get(), noNet); @@ -2731,7 +2735,8 @@ void ControlSignaling::writeRF_TSDU_U_Reg_Rsp(uint32_t srcId, uint32_t sysId) m_p25->m_affiliations.unitReg(srcId); } - m_p25->m_network->announceUnitRegistration(srcId); + if (m_p25->m_network != nullptr) + m_p25->m_network->announceUnitRegistration(srcId); } writeRF_TSDU_SBF_Imm(iosp.get(), true); @@ -2767,7 +2772,8 @@ void ControlSignaling::writeRF_TSDU_U_Dereg_Ack(uint32_t srcId) writeRF_TSDU_SBF_Imm(osp.get(), false); - m_p25->m_network->announceUnitDeregistration(srcId); + if (m_p25->m_network != nullptr) + m_p25->m_network->announceUnitDeregistration(srcId); } } diff --git a/src/host/p25/packet/Voice.cpp b/src/host/p25/packet/Voice.cpp index 8b44520f..4a56e57c 100644 --- a/src/host/p25/packet/Voice.cpp +++ b/src/host/p25/packet/Voice.cpp @@ -365,10 +365,12 @@ bool Voice::process(uint8_t* data, uint32_t len) } // send network grant demand TDU - if (!m_p25->m_enableControl && m_p25->m_convNetGrantDemand) { - uint8_t controlByte = 0x80U + ((group) ? 0x00U : 0x01U); - LogMessage(LOG_RF, P25_HDU_STR " remote grant demand, srcId = %u, dstId = %u", srcId, dstId); - m_p25->m_network->writeP25TDU(lc, m_rfLSD, controlByte); + if (m_p25->m_network != nullptr) { + if (!m_p25->m_enableControl && m_p25->m_convNetGrantDemand) { + uint8_t controlByte = 0x80U + ((group) ? 0x00U : 0x01U); + LogMessage(LOG_RF, P25_HDU_STR " remote grant demand, srcId = %u, dstId = %u", srcId, dstId); + m_p25->m_network->writeP25TDU(lc, m_rfLSD, controlByte); + } } m_rfLC = lc;