Components::ResetManager
The ResetManager component provides system reset functionality, allowing the satellite to perform both cold and warm resets through commands or direct port calls.
Usage Examples
The ResetManager component can be triggered in two ways:
1. Through ground commands (COLD_RESET or WARM_RESET)
2. Through direct port calls (coldReset or warmReset)
Typical Usage
- The component is instantiated and initialized during system startup
- When a reset is needed:
- Via Command: Ground station sends
COLD_RESET or WARM_RESET command
- Via Port: Another component calls the
coldReset or warmReset port
- The component:
- Logs the appropriate event (
INITIATE_COLD_RESET or INITIATE_WARM_RESET)
- Calls the Zephyr
sys_reboot() function with the appropriate reset type
- System resets (command response is not received)
Note: After initiating a reset, the command response will indicate EXECUTION_ERROR since the system will reset before the response can be transmitted.
Class Diagram
classDiagram
namespace Components {
class ResetManagerComponentBase {
<<Auto-generated>>
}
class ResetManager {
+ ResetManager(const char* compName)
+ ~ResetManager()
- coldReset_handler(const FwIndexType portNum)
- warmReset_handler(const FwIndexType portNum)
- COLD_RESET_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)
- WARM_RESET_cmdHandler(FwOpcodeType opCode, U32 cmdSeq)
- handleColdReset()
- handleWarmReset()
}
}
ResetManagerComponentBase <|-- ResetManager : inherits
Port Descriptions
| Name |
Type |
Description |
| coldReset |
sync input |
Triggers a cold reset of the system |
| warmReset |
sync input |
Triggers a warm reset of the system |
Sequence Diagrams
Cold Reset via Command
sequenceDiagram
participant Ground Station
participant ResetManager
participant Zephyr RTOS
participant Hardware
Ground Station->>ResetManager: COLD_RESET command
ResetManager->>ResetManager: Log INITIATE_COLD_RESET event
ResetManager->>Zephyr RTOS: sys_reboot(SYS_REBOOT_COLD)
Zephyr RTOS->>Hardware: Initiate cold reset
Note over Hardware: System resets
ResetManager-->>Ground Station: EXECUTION_ERROR response (not received)
Warm Reset via Port
sequenceDiagram
participant Component
participant ResetManager
participant Zephyr RTOS
participant Hardware
Component->>ResetManager: warmReset port call
ResetManager->>ResetManager: Log INITIATE_WARM_RESET event
ResetManager->>Zephyr RTOS: sys_reboot(SYS_REBOOT_WARM)
Zephyr RTOS->>Hardware: Initiate warm reset
Note over Hardware: System resets
Commands
| Name |
Description |
| COLD_RESET |
Command to initiate a cold reset (full hardware reset) |
| WARM_RESET |
Command to initiate a warm reset (software reset, preserves some state) |
Events
| Name |
Severity |
Description |
| INITIATE_COLD_RESET |
ACTIVITY_HI |
Event indicating that a cold reset has been initiated |
| INITIATE_WARM_RESET |
ACTIVITY_HI |
Event indicating that a warm reset has been initiated |
Requirements
| Name |
Description |
Validation |
| Cold Reset Command |
The component shall provide a command to initiate a cold reset of the system |
Verify system performs full hardware reset when command is issued |
| Warm Reset Command |
The component shall provide a command to initiate a warm reset of the system |
Verify system performs software reset when command is issued |
| Cold Reset Port |
The component shall provide a port to trigger a cold reset programmatically |
Verify system resets when port is called |
| Warm Reset Port |
The component shall provide a port to trigger a warm reset programmatically |
Verify system resets when port is called |
| Reset Event Logging |
The component shall log an event before initiating any reset |
Verify appropriate event is logged before reset occurs |
| Zephyr Integration |
The component shall use Zephyr's sys_reboot() function for reset operations |
Verify sys_reboot() is called with correct parameters |
Change Log
| Date |
Description |
| 2025-11-12 |
Initial ResetManager component |