From 6416f3404a3692188621a93394eaa4c84a1ada2b Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Thu, 23 Mar 2023 14:40:01 -0400 Subject: [PATCH] transmit C_WACKD after voice call requests; --- src/dmr/DMRDefines.h | 5 +++++ src/dmr/packet/ControlSignaling.cpp | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/src/dmr/DMRDefines.h b/src/dmr/DMRDefines.h index bfac1675..5c843fb1 100644 --- a/src/dmr/DMRDefines.h +++ b/src/dmr/DMRDefines.h @@ -246,6 +246,11 @@ namespace dmr const uint8_t TS_DENY_RSN_TGT_BUSY = 0x2EU; const uint8_t TS_DENY_RSN_TGT_GROUP_NOT_VALID = 0x2FU; + const uint8_t TS_QUEUED_RSN_NO_RESOURCE = 0xA0U; + const uint8_t TS_QUEUED_RSN_SYS_BUSY = 0xA1U; + + const uint8_t TS_WAIT_RSN = 0xE0U; + const uint8_t MS_DENY_RSN_UNSUPPORTED_SVC = 0x00U; // Random Access Service Kind diff --git a/src/dmr/packet/ControlSignaling.cpp b/src/dmr/packet/ControlSignaling.cpp index 6bf96a45..53203d75 100644 --- a/src/dmr/packet/ControlSignaling.cpp +++ b/src/dmr/packet/ControlSignaling.cpp @@ -216,6 +216,8 @@ bool ControlSignaling::process(uint8_t* data, uint32_t len) // verify the source RID is registered VERIFY_SRCID_REG("DT_CSBK, CSBKO_RAND (Random Access), SVC_KIND_IND_VOICE_CALL (Individual Voice Call)", SVC_KIND_IND_VOICE_CALL, srcId); + writeRF_CSBK_ACK_RSP(srcId, TS_WAIT_RSN, 1U); + if (m_slot->m_authoritative) { writeRF_CSBK_Grant(srcId, dstId, isp->getServiceOptions(), false); } else { @@ -232,6 +234,8 @@ bool ControlSignaling::process(uint8_t* data, uint32_t len) // validate the talkgroup ID VALID_TGID("DT_CSBK, CSBKO_RAND (Random Access), SVC_KIND_GRP_VOICE_CALL (Group Voice Call)", SVC_KIND_GRP_VOICE_CALL, srcId, dstId); + writeRF_CSBK_ACK_RSP(srcId, TS_WAIT_RSN, 1U); + if (m_slot->m_authoritative) { writeRF_CSBK_Grant(srcId, dstId, isp->getServiceOptions(), true); } else { @@ -252,6 +256,8 @@ bool ControlSignaling::process(uint8_t* data, uint32_t len) // verify the source RID is registered VERIFY_SRCID_REG("DT_CSBK, CSBKO_RAND (Random Access), SVC_KIND_IND_VOICE_CALL (Individual Voice Call)", SVC_KIND_IND_VOICE_CALL, srcId); + writeRF_CSBK_ACK_RSP(srcId, TS_WAIT_RSN, 0U); + writeRF_CSBK_Data_Grant(srcId, dstId, isp->getServiceOptions(), false); break; case SVC_KIND_GRP_DATA_CALL: @@ -265,6 +271,8 @@ bool ControlSignaling::process(uint8_t* data, uint32_t len) // validate the talkgroup ID VALID_TGID("DT_CSBK, CSBKO_RAND (Random Access), SVC_KIND_GRP_VOICE_CALL (Group Voice Call)", SVC_KIND_GRP_VOICE_CALL, srcId, dstId); + writeRF_CSBK_ACK_RSP(srcId, TS_WAIT_RSN, 0U); + writeRF_CSBK_Data_Grant(srcId, dstId, isp->getServiceOptions(), true); break; case SVC_KIND_REG_SVC: