Back to Fprime

Svc::ActivePhaser

Svc/ActivePhaser/docs/sdd.md

4.2.22.5 KB
Original Source

Svc::ActivePhaser

Svc::ActivePhaser is an active component that drives a set of components connected to Svc::Sched output ports. It periodically schedules port calls by dividing each periodic cycle into ticks and mapping each port call to a window of ticks. Port calls are invoked in the order of their registrations during phaser configuration.

In the example below, a phaser cycle consists of 10 ticks. Port call A (with a length of 2) is set to start at tick 0, port call B (with a length of 3) to start at tick 2, and port call C (with a length of 1) to start at tick 6 & 8. The schedule repeats every 10 ticks.

If a port call is specified a length, this component checks if the call overruns its specified length at runtime.

Requirements

The requirements for Svc::ActivePhaser are as follows:

RequirementDescriptionVerification Method
AP-001The Svc::ActivePhaser component shall be active and will be woken up by an input asynchronous port callInspection, Unit test
AP-002The Svc::ActivePhaser component shall invoke its output ports in the order of port call registrationsUnit Test
AP-003The Svc::ActivePhaser component shall report a MissedDeadline warning event when a port call overruns its specified lengthUnit Test

Design

Component Diagram

The Svc::ActivePhaser component has the following component diagram:

Ports

The Svc::ActivePhaser component uses the following port types:

Port Data TypeNameDirectionKindUsage
Svc::CycleCycleInInputAsynchronousReceive a call to run one cycle of the phaser
Svc::SchedPhaserMemberOutOutputn/aPhaser ports

Port Descriptions

NameDescription
CycleInScheduling input port for executing a phaser cycle
PhaserMemberOutOutput ports for invoking downstream components
timeCallerPort for requesting current time for telemetry timestamps
logTextOutText event port for logging messages
logOutEvent port for binary logs
tlmOutPort for sending telemetry channels to downlink

Events

NameDescription
MissedDeadlineEmitted when a port call overruns its specified length

Unit Tests

To see unit test coverage run fprime-util check --coverage