support decoding rogue OSP_SNDCP_CH_GNT (even tho on DVM you can *enable* this you shouldn't because there's no SNDCP application that will respond);

pull/61/head
Bryan Biedenkapp 2 years ago
parent ecda6b13d3
commit 45efd99801

@ -44,7 +44,19 @@ bool OSP_SNDCP_CH_GNT::decode(const uint8_t* data, bool rawTSBK)
{
assert(data != nullptr);
/* stub */
uint8_t tsbk[P25_TSBK_LENGTH_BYTES + 1U];
::memset(tsbk, 0x00U, P25_TSBK_LENGTH_BYTES);
bool ret = TSBK::decode(data, tsbk, rawTSBK);
if (!ret)
return false;
ulong64_t tsbkValue = TSBK::toValue(tsbk);
m_dataServiceOptions = (uint8_t)((tsbkValue >> 56) & 0xFFU); // Data Service Options
m_grpVchId = (uint8_t)((tsbkValue >> 52) & 0x0FU); // Channel (T) ID
m_dataChannelNo = ((tsbkValue >> 40) & 0xFFFU); // Channel (T) Number
m_dstId = (uint32_t)(tsbkValue & 0xFFFFFFU); // Target Radio Address
return true;
}

@ -224,6 +224,8 @@ std::unique_ptr<TSBK> TSBKFactory::createTSBK(const uint8_t* data, bool rawTSBK)
return decode(new ISP_AUTH_SU_DMD(), data, rawTSBK);
case TSBKO::OSP_ADJ_STS_BCAST:
return decode(new OSP_ADJ_STS_BCAST(), data, rawTSBK);
case TSBKO::OSP_SNDCP_CH_GNT:
return decode(new OSP_SNDCP_CH_GNT(), data, rawTSBK);
default:
LogError(LOG_P25, "TSBKFactory::create(), unknown TSBK LCO value, mfId = $%02X, lco = $%02X", mfId, lco);
break;

Loading…
Cancel
Save

Powered by TurnKey Linux.