Components::LoadSwitch
Overview
The LoadSwitch component is an active F' component that controls a single load switch output
through the gpioSet output port (connected to the platform's GPIO driver). It exposes two
async commands to turn the switch on and off, telemetry reporting the current state. It also provides ports to control the switch and notify other components of state changes.
Responsibility
- Control the power rail for a connected peripheral by asserting/deasserting a GPIO.
- Report state changes via an event and telemetry channel.
- Provide an interface for other components to control the switch and subscribe to state changes.
Class Diagram
classDiagram
namespace Components {
class LoadSwitchComponentBase {
<<Auto-generated>>
}
class LoadSwitch {
+ LoadSwitch(const char* compName)
+ ~LoadSwitch()
- TURN_ON_cmdHandler(FwOpcodeType opCode, U32 cmdSeq): void
- TURN_OFF_cmdHandler(FwOpcodeType opCode, U32 cmdSeq): void
- turnOn_handler(FwIndexType portNum): void
- turnOff_handler(FwIndexType portNum): void
}
}
LoadSwitchComponentBase <|-- LoadSwitch : inherits
External interface
Commands
| Name |
Description |
Implementation notes |
| TURN_ON |
Turn on the associated power rail |
TURN_ON_cmdHandler sets the gpio via gpioSet_out(0, Fw::Logic::HIGH), emits StatusChanged (ON), updates IsOn telemetry, replies OK. |
| TURN_OFF |
Turn off the associated power rail |
TURN_OFF_cmdHandler sets the gpio via gpioSet_out(0, Fw::Logic::LOW), emits StatusChanged (OFF), updates IsOn telemetry, replies OK. |
Telemetry
| Name |
Type |
Description |
| IsOn |
Fw.On |
Current power state; written after commands. Note: Reports ON only after a stabilization delay (default 1s) following the turn-on command. |
Events
| Name |
Severity |
ID |
Format |
| StatusChanged |
activity high |
1 |
"Load switch state changed to {}" |
The component logs the StatusChanged event whenever the switch transitions due to a command.
Ports
| Port name |
Direction |
Port type |
Notes |
| gpioSet |
output |
Drv.GpioWrite |
Used to write the physical GPIO. Implementation always uses index 0 (gpioSet_out(0, ...)). |
| gpioGet |
output |
Drv.GpioRead |
Used to read the physical GPIO state. |
| turnOn |
input (sync) |
Fw.Signal |
Turns on the load switch. |
| turnOff |
input (sync) |
Fw.Signal |
Turns off the load switch. |
| loadSwitchStateChanged |
output |
loadSwitchStateChanged |
Notifies connected components when the load switch state changes |
Requirements
| Name |
Description |
Validation |
| Control via Command |
The component shall allow turning the load switch on and off via ground commands TURN_ON and TURN_OFF. |
Integration test |
| Control via Port |
The component shall allow turning the load switch on and off via input ports turnOn and turnOff. |
Verify turnOn and turnOff port calls change the GPIO state and telemetry. |
| State Telemetry |
The component shall report the current state of the load switch via the IsOn telemetry channel. |
Integration test |
| State Event |
The component shall emit a StatusChanged event when the load switch state changes. |
Verify StatusChanged event is emitted upon state transitions. |
| State Notification |
The component shall notify connected components of state changes via the loadSwitchStateChanged port. |
Downstream component testing |
| GPIO Control |
The component shall control the physical GPIO pin corresponding to the load switch using the gpioSet port. |
Downstream component testing |
Change Log
| Date |
Description |
| 10-22-2025 |
Sarah, Kevin, and MoMata's first commit |
| 11-07-2025 |
Updated SDD to match implementation in LoadSwitch.cpp/.hpp/.fpp (commands, telemetry, event, ports, reset behavior). |
| 11-30-2025 |
Removed Reset capability. Added loadSwitchStateChanged output port for state notifications. |