Fix NXDN audio issue and M17 callsign encode from modes with numeric IDs

pull/8/head
Doug McLain 3 years ago
parent f9d2d6f1b3
commit 47387307b0

@ -93,6 +93,16 @@ CCallsign::CCallsign(const char *sz, uint32_t dmrid, uint16_t nxdnid)
}
}
g_DmridDir.Unlock();
if ( m_uiNXDNid == 0 )
{
g_NXDNidDir.Lock();
{
m_uiNXDNid = g_NXDNidDir.FindNXDNid(*this);
}
g_NXDNidDir.Unlock();
}
CSIn();
}
else if ( m_uiNXDNid != 0 )
{
@ -105,6 +115,16 @@ CCallsign::CCallsign(const char *sz, uint32_t dmrid, uint16_t nxdnid)
}
}
g_NXDNidDir.Unlock();
if ( m_uiDmrid == 0 )
{
g_DmridDir.Lock();
{
m_uiDmrid = g_DmridDir.FindDmrid(*this);
}
g_DmridDir.Unlock();
}
CSIn();
}
}

@ -103,7 +103,7 @@ void CNXDNProtocol::Task(void)
else if ( IsValidDvHeaderPacket(Ip, Buffer, Header) )
{
// node linked and callsign muted?
if ( g_GateKeeper.MayTransmit(Header->GetMyCallsign(), Ip, EProtocol::ysf, Header->GetRpt2Module()) )
if ( g_GateKeeper.MayTransmit(Header->GetMyCallsign(), Ip, EProtocol::nxdn, Header->GetRpt2Module()) )
{
// handle it
OnDvHeaderPacketIn(Header, Ip);
@ -351,7 +351,7 @@ bool CNXDNProtocol::IsValidDisconnectPacket(const CBuffer &Buffer, CCallsign *ca
{
uint8_t tag[] = { 'N','X','D','N','U' };
if ( (Buffer.size() == 14) && (Buffer.Compare(tag, sizeof(tag)) == 0) )
if ( (Buffer.size() == 17) && (Buffer.Compare(tag, sizeof(tag)) == 0) )
{
return true;
}
@ -572,6 +572,7 @@ bool CNXDNProtocol::EncodeNXDNPacket(const CDvHeaderPacket &Header, uint32_t seq
}
get_sacch(&Buffer.data()[11U]);
memset(ambe, 0, 28);
for(int i = 0; i < 4; ++i){
decode(DvFrames[i].GetCodecData(ECodecType::dmr), ambe+(i*7));
}

Loading…
Cancel
Save

Powered by TurnKey Linux.