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; break;
case MessageType::RTCH_DCALL_DATA: case MessageType::RTCH_DCALL_DATA:
case MessageType::RTCH_SDCALL_REQ_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 (m_dataBlockNumber & 0x0FU); // Block Number
break; break;
case MessageType::RTCH_DCALL_ACK: 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: case FuncChannelType::USC_UDCH:
{ {
channel::UDCH udch; channel::UDCH udch;
bool validUDCH = udch.decode(data + 2U); bool validUDCH = udch.decode(frame.get() + 2U);
if (validUDCH) { if (validUDCH) {
// The layer3 data will only be correct if valid is true // The layer3 data will only be correct if valid is true
uint8_t buffer[NXDN_RTCH_LC_LENGTH_BYTES]; 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); sacch.encode(start + 2U);
uint8_t buffer[NXDN_RTCH_LC_LENGTH_BYTES]; 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.setData(buffer);
facch.encode(start + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS); 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 // regenerate the sync
Sync::addNXDNSync(data + 2U); 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.getEmergency() == original.getEmergency());
REQUIRE(assigned.getEncrypted() == original.getEncrypted()); 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.