correct some minor NXDN issues;

pull/121/merge
Bryan Biedenkapp 2 weeks ago
parent 689243e099
commit c76b417082

@ -362,7 +362,7 @@ void RTCH::encodeLC(uint8_t* data)
break;
case MessageType::RTCH_DCALL_DATA:
case MessageType::RTCH_SDCALL_REQ_DATA:
data[1U] = (m_dataFrameNumber & 0x0FU << 4) + // Frame Number
data[1U] = ((m_dataFrameNumber & 0x0FU) << 4) + // Frame Number
(m_dataBlockNumber & 0x0FU); // Block Number
break;
case MessageType::RTCH_DCALL_ACK:

@ -127,7 +127,7 @@ bool TagNXDNData::processFrame(const uint8_t* data, uint32_t len, uint32_t peerI
case FuncChannelType::USC_UDCH:
{
channel::UDCH udch;
bool validUDCH = udch.decode(data + 2U);
bool validUDCH = udch.decode(frame.get() + 2U);
if (validUDCH) {
// The layer3 data will only be correct if valid is true
uint8_t buffer[NXDN_RTCH_LC_LENGTH_BYTES];

@ -946,7 +946,7 @@ bool Voice::processNetwork(FuncChannelType::E fct, ChOption::E option, lc::RTCH&
sacch.encode(start + 2U);
uint8_t buffer[NXDN_RTCH_LC_LENGTH_BYTES];
m_nxdn->m_rfLC.encode(buffer, NXDN_RTCH_LC_LENGTH_BITS);
m_nxdn->m_netLC.encode(buffer, NXDN_RTCH_LC_LENGTH_BITS);
facch.setData(buffer);
facch.encode(start + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS);
@ -963,7 +963,7 @@ bool Voice::processNetwork(FuncChannelType::E fct, ChOption::E option, lc::RTCH&
}
}
if (m_nxdn->m_rfState == RS_RF_AUDIO) {
if (m_nxdn->m_netState == RS_NET_AUDIO) {
// regenerate the sync
Sync::addNXDNSync(data + 2U);

@ -194,3 +194,23 @@ TEST_CASE("RTCH assignment operator preserves all fields", "[nxdn][rtch]") {
REQUIRE(assigned.getEmergency() == original.getEmergency());
REQUIRE(assigned.getEncrypted() == original.getEncrypted());
}
TEST_CASE("RTCH encodes and decodes data frame and block numbers", "[nxdn][rtch]") {
uint8_t data[NXDN_RTCH_LC_LENGTH_BYTES];
::memset(data, 0x00U, sizeof(data));
RTCH rtch;
rtch.setMessageType(MessageType::RTCH_DCALL_DATA);
rtch.setDataFrameNumber(0x0AU);
rtch.setDataBlockNumber(0x05U);
rtch.encode(data, NXDN_RTCH_LC_LENGTH_BITS);
REQUIRE(data[1U] == 0xA5U);
RTCH decoded;
decoded.decode(data, NXDN_RTCH_LC_LENGTH_BITS);
REQUIRE(decoded.getMessageType() == MessageType::RTCH_DCALL_DATA);
REQUIRE(decoded.getDataFrameNumber() == 0x0AU);
REQUIRE(decoded.getDataBlockNumber() == 0x05U);
}

Loading…
Cancel
Save

Powered by TurnKey Linux.