SatNOGS-COMMS  4.1.0
A COMMS subsystem for CubeSats
Loading...
Searching...
No Matches

A singleton class for the entire board management. More...

Classes

class  satnogs::comms::lib::board::io_conf
 IO peripherals required for the control of the various subsystems of the board. More...
class  satnogs::comms::lib::board::params
 Board initialization parameters. More...

Detailed Description

A singleton class for the entire board management.

This class provides a singleton interface for managing and controlling the entire board. By adhering to the singleton design pattern, it ensures that the firmware maintains a single instance of the board, simplifying usage and preventing potential race conditions and duplication.

This class offers a singleton for the entire board management and control. Following this design pattern, it is assured that the entire firmware has only one instance declared for the board. This simplifies the usage of the control library and avoid any duplication and race conditions.

Warning
The singleton pattern inherently limits the ability to pass parameters to the class instance. To address this, the init() static method is provided for initialization. This method creates the unique instance and throws an initialization_exception if called multiple times. Once initialized, the get_instance() method grants access to the single Board interface instance. Calling get_instance() before initialization will result in an uninitialization_exception.

The initialized Board interface instance provides access to various subsystems and peripherals, as illustrated in the schematic below.

flowchart A["board::init()"] -->B("board::get_instance()") B -->P("board::power()") B -->R("board::radio()") B -->F("board::fpga()") B -->L("board::leds()") B -->E("board::emmc()") B -->T("board::temperature()") R -->U("radio::uhf()") R -->S("radio::sband()")