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):
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.
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 viaR/Gto defeat BPQ's ~20s idle disconnect, tolerant of BPQ-vs-XR's differingXregister-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 standalonePacket.AgwNuGet 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):
<PackageReference Include="Packet.Agw" Version="..." />to dapps.clientdapps.client.Transport.Agw.*with the equivalent surface fromPacket.Agw.*(AgwClient,AgwSession,AgwFrame)IDappsTxGateTX-inhibit hook,OperationalMetrics,IBackhaulInboxrouting) into a thin adapter layer that wrapsPacket.Agw.AgwClientrather than reimplements its plumbingTransport/Agw/AgwFrame.cs/AgwFrameTransport.cs/AgwSessionStream.cs/AgwOutboundTransport.csand the inbound service's frame-level gutsThe keepalive
Gping every 15s (defeats BPQ's ~20s idle disconnect) is in the NuGet too. The BPQ-0x01-vs-XR-0x00X-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.