SRP Protocol
For carrying register and memory transactions across a Rogue stream link,
Rogue provides rogue.protocols.srp. SRP bridges the memory interface and
the stream interface: reads and writes are serialized into SRP frames, carried
over a stream transport, and decoded by FPGA or ASIC logic that implements the
corresponding SRP protocol.
In most deployed systems, SRP is not used by itself. It is usually combined
with a transport/reliability stack such as UDP -> RSSI -> Packetizer or a
DMA-backed stream path, with SRP providing the register-transaction semantics
on top of that stream path.
Rogue documentation focuses on integration and usage. The wire-format protocol specifications are maintained externally:
C++ API details for SRP protocol classes are documented in rogue::protocols::srp.
Choosing SRP Version
Use SRP Protocol Version 3 for current systems unless compatibility requires v0.
Use SRP Protocol Version 0 only when endpoint firmware is locked to v0 framing.
Use SRP Protocol Command for lightweight command opcodes rather than register access.
Where SRP Fits
SRP bridges memory transactions to stream transport.
Tree-facing configuration and register semantics remain in PyRogue device definitions.
Transport selection and tuning belong in the lower stream and protocol layers such as Network Wrapper, UDP Protocol, and AxiStreamDma.
Common Integration Patterns
PyRogue tree pattern: create
SrpV0orSrpV3, connect it to stream transport, then pass the SRP object asmemBasewhen constructing Devices.Standalone script pattern: use SRP + stream transport directly without a
Rootwhen you only need a narrow read/write utility path.Command path pattern: use SRP Protocol Command for opcode/context control channels that are intentionally separate from register-access transactions.