Skip to content

AGW client: consider consuming the Packet.Agw NuGet once it ships #146

Description

@M0LTE

Filed as a reminder for after the Packet.Agw NuGet lands.

Context

Tom's packet.net project needs an AGW protocol client for interop testing against LinBPQ / direwolf / SoundModem / XRouter. The dapps AGW client in src/dapps/dapps.client/Transport/Agw/ was the de-facto reference for one in C# — same conceptual shape (AgwFrame + framed transport + Stream-shaped sessions, keepalive via R/G to defeat BPQ's ~20s idle disconnect, tolerant of BPQ-vs-XR's differing X register-callsign reply byte, etc).

Rather than lifting the dapps code wholesale (it's coupled to IDappsTxGate, IBackhaulInbox, OperationalMetrics, dapps-specific session-manager interfaces), packet.net is shipping a fresh implementation in the same shape, packaged as a standalone Packet.Agw NuGet with no project-specific dependencies.

Ask

Once the NuGet is published (target: shortly after PR M0LTE/packet.net#124 merges and a release tag goes up):

  • Add <PackageReference Include="Packet.Agw" Version="..." /> to dapps.client
  • Replace dapps.client.Transport.Agw.* with the equivalent surface from Packet.Agw.* (AgwClient, AgwSession, AgwFrame)
  • Move the dapps-specific concerns (IDappsTxGate TX-inhibit hook, OperationalMetrics, IBackhaulInbox routing) into a thin adapter layer that wraps Packet.Agw.AgwClient rather than reimplements its plumbing
  • Delete the now-orphaned Transport/Agw/AgwFrame.cs / AgwFrameTransport.cs / AgwSessionStream.cs / AgwOutboundTransport.cs and the inbound service's frame-level guts

The keepalive G ping every 15s (defeats BPQ's ~20s idle disconnect) is in the NuGet too. The BPQ-0x01-vs-XR-0x00 X-ack tolerance is preserved.

Cross-link: M0LTE/packet.net#124 (the NuGet PR — landing first), M0LTE/packet.net#125 (first interop fidelity test against real LinBPQ AGW).

No urgency — file this for tracking only. Both projects are in-progress and the right time to flip is when both have stabilised independently.

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