diff --git a/src/fne/network/fne/TagP25Data.cpp b/src/fne/network/fne/TagP25Data.cpp index eaa5a736..a509b85d 100644 --- a/src/fne/network/fne/TagP25Data.cpp +++ b/src/fne/network/fne/TagP25Data.cpp @@ -1002,22 +1002,30 @@ void TagP25Data::write_TSDU_Queue(uint32_t peerId, uint32_t srcId, uint32_t dstI /// void TagP25Data::write_TSDU(uint32_t peerId, lc::TSBK* tsbk) { - uint8_t data[P25_TSDU_FRAME_LENGTH_BYTES + 2U]; - ::memset(data + 2U, 0x00U, P25_TSDU_FRAME_LENGTH_BYTES); + uint8_t data[P25_TSDU_FRAME_LENGTH_BYTES]; + ::memset(data, 0x00U, P25_TSDU_FRAME_LENGTH_BYTES); // Generate Sync - Sync::addP25Sync(data + 2U); + Sync::addP25Sync(data); + + // network bursts have no NID // Generate TSBK block tsbk->setLastBlock(true); // always set last block -- this a Single Block TSDU - tsbk->encode(data + 2U); + tsbk->encode(data); + + // Add busy bits + P25Utils::addBusyBits(data, P25_TSDU_FRAME_LENGTH_BYTES, true, false); + + // Set first busy bits to 1,1 + P25Utils::setBusyBits(data, P25_SS0_START, true, true); if (m_debug) { LogDebug(LOG_RF, P25_TSDU_STR ", lco = $%02X, mfId = $%02X, lastBlock = %u, AIV = %u, EX = %u, srcId = %u, dstId = %u, sysId = $%03X, netId = $%05X", tsbk->getLCO(), tsbk->getMFId(), tsbk->getLastBlock(), tsbk->getAIV(), tsbk->getEX(), tsbk->getSrcId(), tsbk->getDstId(), tsbk->getSysId(), tsbk->getNetId()); - Utils::dump(1U, "!!! *TSDU (SBF) TSBK Block Data", data + P25_PREAMBLE_LENGTH_BYTES + 2U, P25_TSBK_FEC_LENGTH_BYTES); + Utils::dump(1U, "!!! *TSDU (SBF) TSBK Block Data", data + P25_PREAMBLE_LENGTH_BYTES, P25_TSBK_FEC_LENGTH_BYTES); } lc::LC lc = lc::LC();