DMR trunking patches

This commit is contained in:
adrian 2026-04-18 11:58:50 +03:00
parent b5b119fa8e
commit 4ff3bbf766
16 changed files with 696 additions and 55 deletions

View file

@ -123,7 +123,7 @@ void CDMRNetwork::enable(bool enabled)
m_enabled = enabled;
}
bool CDMRNetwork::read(CDMRData& data)
bool CDMRNetwork::read(CDMRData& data, TrunkingCommandParameters &command)
{
if (m_rxData.isEmpty())
return false;
@ -131,6 +131,28 @@ bool CDMRNetwork::read(CDMRData& data)
unsigned char length = 0U;
m_rxData.getData(&length, 1U);
m_rxData.getData(m_buffer, length);
if (::memcmp(m_buffer, "DMRT", 4U) == 0)
{
unsigned int command_type = (unsigned int)m_buffer[4U];
switch(command_type)
{
case DMRCommand::ChannelEnableDisable:
{
command.channelEnable = (m_buffer[5U] & 0x01U) == 0x01U ? true : false;
}
break;
default:
break;
}
command.slot = (m_buffer[5U] & 0x80U) == 0x80U ? 2U : 1U;
command.commandType = command_type;
command.trunkingParams = true;
return true;
}
else
{
command.trunkingParams = false;
}
// Is this a data packet?
if (::memcmp(m_buffer, "DMRD", 4U) != 0)
@ -318,7 +340,7 @@ void CDMRNetwork::clock(unsigned int ms)
if (m_debug)
CUtils::dump(1U, "DMR Network Received", m_buffer, length);
if (::memcmp(m_buffer, "DMRD", 4U) == 0) {
if ((::memcmp(m_buffer, "DMRD", 4U) == 0) || (::memcmp(m_buffer, "DMRT", 4U) == 0)) {
if (m_enabled) {
unsigned char len = length;
m_rxData.addData(&len, 1U);