Back to Fprime

Svc::Ccsds::AosFramer

Svc/Ccsds/AosFramer/docs/sdd.md

4.2.23.5 KB
Original Source

Svc::Ccsds::AosFramer

The Svc::Ccsds::AosFramer is an implementation of the FramerInterface for the CCSDS AOS Space Data Link Protocol.

It receives payload data (such as a Space Packet or Encapsulation Packet) on input and produces a AOS frame on its output port as a result. Please refer to the CCSDS AOS specification (CCSDS 732.0-B-5) for details on the frame format and protocol.

The Svc::Ccsds::AosFramer is designed to work in the common F Prime telemetry stack, receiving data from an upstream Svc::ComQueue and passing frames to a Communications Adapter, such as a Radio manager component or Svc::ComStub, for transmission on the wire. It is commonly coupled with the Svc::Ccsds::SpacePacketFramer to wrap CCSDS Space Packets into AOS frames.

AOS Framing Support

The AOS Framer and Deframer support the following subset of CCSDS AOS SDL:

  • Single, port context driven virtual channel
  • Space Data Link Security (SDLS) disabled
  • Frame Header Error Control Field is disabled
  • Transfer Frame Insert Zone is disabled
  • Transfer Frame Data Field is driven by the per-instance, compile time fixed_frame_size setting
  • This component only supports the Virtual Channel Packet (VCP) service, using Multiplexing Protocol Data Units (M_PDU)
  • Operational Control Field is disabled
  • Frame Error Control Field is compile-time configurable
  • This component supports packing multiple CCSDS Recognized packets (i.e. Space Packet Protocol or Encapsulation Packet Protocol) into one AOS SDL Frame. It also supports striping a single packet across multiple frames. Extra space is padded with idle packets.

Internals

The AOS protocol specifies a fixed frame size. The maximum for all AOS framers can be configured in the config/ComCfg.fpp file. Individual AOS Framer instances can have their frame size overridden via the configure function.

The Svc::Ccsds::AosFramer uses an internal (member) buffer to hold the fixed size frame. The buffer must be returned to the AosFramer via the dataReturnIn port once it has been used or consumed. When the buffer returns to the AosFramer it will reuse the buffer for the next frame. Should a component want to use the frame data past the time it is returned to the AosFramer, data should be copied before the original buffer is returned to the AosFramer via the dataReturnIn port.

Port Descriptions

KindNamePort TypeDescription
sync inputdataInSvc.ComDataWithContextReceives data to frame, in a Fw::Buffer with optional context
outputdataOutSvc.ComDataWithContextOutputs framed data with optional context
outputdataReturnOutSvc.ComDataWithContextReturns ownership of the incoming Fw::Buffer to its sender once framing is handled
sync inputdataReturnInSvc.ComDataWithContextReceives buffer from a deallocate call in a ComDriver component
sync inputcomStatusInFw.SuccessConditionReceives general status from downstream component indicating readiness for more input
outputcomStatusOutFw.SuccessConditionIndicates the status of framer for receiving more data