Skip to content

parrotOnlyToOriginatingPeer broken with CC/VC split sites #111

@proxiboi69

Description

@proxiboi69

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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions