F´ Flight Software - C/C++ Documentation
devel
A framework for building embedded system applications to NASA flight quality standards.
|
The BufferRepeater component is designed to take in an Fw::buffer
port call and repeat it to multiple output ports. New memory is allocated from a Svc::BufferManager
and the data is copied to ensure that each downstream component has full ownership of its data. The original buffer is deallocated. Users call configure
to set the response of the component when allocation requests fail.
Name | Description | Validation |
---|---|---|
BUFFER_REPEATER_01 | The buffer repeater shall accept incoming Fw::Buffer port calls | Unit Test |
BUFFER_REPEATER_02 | The buffer repeater shall copy the incoming data before each repeated send | Unit Test |
BUFFER_REPEATER_03 | The buffer repeater shall only send a copy to connected components | Unit Test |
BUFFER_REPEATER_04 | The buffer repeater shall have a configurable response to allocation failures | Unit Test |
The buffer repeater has a single portIn
port of type Fw.BufferSend
and an array of portOut
ports of the same type. Each port call received on portIn
is repeated to each connected portOut
port. These repetitions emit a copy of the Fw::Buffer
data.
Svc::BufferRepeater
has the following ports:
Kind | Name | Port Type | Usage |
---|---|---|---|
sync input | portIn | Fw.BufferSend | Port for receiving initial Fw::Buffer |
output | portOut | [BufferRepeaterOutputPorts] Fw.BufferSend | Port array for repeating Fw::Buffers |
output | deallocate | Fw.BufferSend | Deallocate the original buffer |
output | allocate | Fw.BufferGet | Port for allocating new memory |
event | Log | Fw.Log | Port for emitting events |
text event | LogText | Fw.LogText | Port for emitting text events |
time get | Time | Fw.Time | Port for getting the time |
The portIn
port handler receives an Fw::Buffer
data type and a port number. For each connected portOut
port it allocates new memory large enough to hold a copy of the Fw::Buffer
data via the allocate
port, copies the data to the new invocation, and sends it to the active portOut
port. This continues until each portOut
port has been tried and at the end it returns the original buffer via deallocate
.
Should an allocation fail, portOut
is not called and an event may be emitted (see below).
Name | Description |
---|---|
AllocationSoftFailure | WARNING_HI indicating allocation failure when configured to WARNING_ON_OUT_OF_MEMORY |
AllocationHardFailure | FATAL indicating allocation failure when configured to FATAL_ON_OUT_OF_MEMORY |
Buffer repeater maximum output ports are configured using AcConstants.fpp
as shown below:
The component's response to allocation failures is configured with a call to the configure method during system initialization. Possible values include:
Setting | Description |
---|---|
NO_RESPONSE_ON_OUT_OF_MEMORY | The component drops the portOut call and otherwise takes no response action |
WARNING_ON_OUT_OF_MEMORY | The component drops the portOut call and emits a WARNING_HI event |
FATAL_ON_OUT_OF_MEMORY | The component drops the portOut call and emits a FATAL event |