Hey,
Found an issue with the parrot feature when using parrotOnlyToOriginatingPeer: true on the FNE with a CC/VC split architecture.
The problem:
When a site has a dedicated CC and separate VC (VC configured as authoritative: false), parrot playback never works. The VC logs this:
W: [NON-AUTHORITATIVE] Ignoring network traffic, destination not permitted, dstId = 9990
What's happening:
In TagP25Data.cpp around line 807, when m_parrotOnlyOriginating is true, the grant demand gets sent directly to pkt.peerId - which is the VC. But since the VC is non-authoritative, it ignores it because there's no active grant from the CC.
The FNE already tracks which VC belongs to which CC via ccPeerId(), but the parrot code doesn't use it.
Suggested fix:
When the originating peer is a VC (has a valid ccPeerId), send the grant demand to the CC instead:
if (m_network->m_parrotOnlyOriginating) {
uint32_t targetPeerId = pkt.peerId;
// If peer is a VC, route grant demand to its CC
auto it = m_network->m_peers.find(pkt.peerId);
if (it != m_network->m_peers.end() && it->second->ccPeerId() != 0) {
targetPeerId = it->second->ccPeerId();
}
m_network->writePeer(targetPeerId, targetPeerId, ...);
}
This way the CC gets the grant demand, assigns the channel properly, and radios actually switch to the VC frequency to hear the parrot.
Cheers!
Hey,
Found an issue with the parrot feature when using
parrotOnlyToOriginatingPeer: trueon the FNE with a CC/VC split architecture.The problem:
When a site has a dedicated CC and separate VC (VC configured as
authoritative: false), parrot playback never works. The VC logs this:W: [NON-AUTHORITATIVE] Ignoring network traffic, destination not permitted, dstId = 9990What's happening:
In
TagP25Data.cpparound line 807, whenm_parrotOnlyOriginatingis true, the grant demand gets sent directly topkt.peerId- which is the VC. But since the VC is non-authoritative, it ignores it because there's no active grant from the CC.The FNE already tracks which VC belongs to which CC via
ccPeerId(), but the parrot code doesn't use it.Suggested fix:
When the originating peer is a VC (has a valid
ccPeerId), send the grant demand to the CC instead:This way the CC gets the grant demand, assigns the channel properly, and radios actually switch to the VC frequency to hear the parrot.
Cheers!