Thomas Boyer-Chammard c3b2e04880
Use data return pattern on Uplink and standardize port names (#3546)
* First pass at Svc + TcpClient implementation

* Revert FileUplink changes

* Add copy (with allocation/deallocation) to FprimeRouter to simplify buffer management

* Update FprimeRouter UTs

* Update FprimeDeframer UTs

* Update FrameAccumulator UTs

* Update ComStub UTs

* Update missing Drv and UTs

* Update ComInterface to use ComDataWithContext on output

* Update Ref/RPI topology

* Fix spelling

* Fix test typo

* Update Udp component and UTs

* Rename data ports and standardize "Return" naming pattern

* Fix variable name

* Adapt UTs

* Update Communication Adapter Interface docs

* Full SDD updates

* Spelling &  nits and details

* Put formatting back to original

* Update Deframer interface to include bufferReturn

* Address review comments
2025-05-08 10:54:54 -07:00

2.7 KiB
Raw Blame History

Svc FPP Interfaces

The Svc interfaces are a set of .fppi files that define FPP interfaces for components to implement. An FPP interface is an FPP file that defines a set of ports. A component that implements an FPP interface must implement handlers for the input ports and has access to the output ports of the interface.

Svc/ComInterface

The Svc/ComInterface is an interface for implementing the Communications Adapter Interface. Svc::ComStub implements this interface and uses a ByteStream driver to send and receive data on a TCP/UDP/UART link, and is often used in development and early testing.

Svc/DeframerInterface

The Svc/DeframerInterface is an interface for implementing a Deframer component. This interface allows a component to be dropped in the common F´ Uplink stack and implement deframing for a specific communications protocol. The Svc::FprimeDeframer component implements this interface for the F´ communications protocol.

Svc/FramerInterface

The Svc/FramerInterface is an interface for implementing the Framer component. This interface allows a component to be dropped in the common F´ Downlink stack and implement framing for a specific communications protocol. The Svc::FprimeFramer component implements this interface for the F´ communications protocol.

Svc/RouterInterface

The Svc/RouterInterface is an interface for implementing a Router component. This interface allows a component to be dropped in the common F´ Uplink stack and implement routing for a project. The Svc::FprimeRouter component implements this interface routing the common F´ packets, as well as passing unknown packets down to another component for further processing.

Svc/FrameAccumulatorInterface

The Svc/FrameAccumulatorInterface is an interface for implementing a Frame Accumulator component. This allows a component to be dropped in the common F´ Uplink stack and implement frame accumulation, using any desirable algorithm. The Svc::FrameAccumulator component implements this interface by storing the data in a circular buffer and using a Svc::FrameDetector to detect frames in the buffer.

Svc/TimeInterface

The Svc/TimeInterface is an interface for implementing a Time provider. A time provider must provide a way for other components to get the current time. The Svc::PosixTime component implements this interface, using common Posix functions to retrieve the current time.