# Internal Design ## Key classes - PowerInterface - Defines the `org.openbmc.control.Power` D-Bus interface. - The `state` property is set to power the chassis on or off. This contains the desired power state. - The `pgood` property contains the actual power state of the chassis. - PowerControl - Created in `main()`. Handles the event loop. - Sub-class of PowerInterface that provides a concrete implementation of the `org.openbmc.control.Power` D-Bus interface. - Finds and loads the JSON configuration file. - Finds power sequencer device information. - Creates a sub-class of PowerSequencerDevice that matches power sequencer device information. - Powers the chassis on and off using the `power-chassis-control` named GPIO. - Monitors the chassis pgood status every 3 seconds using the `power-chassis-good` named GPIO. - Enforces a minimum power off time of 15 seconds from cold start and 25 seconds from power off. - DeviceFinder - Finds power sequencer device information on D-Bus published by EntityManager. - Rail - A voltage rail that is enabled or monitored by the power sequencer device. - PowerSequencerDevice - Abstract base class for a power sequencer device. - Defines virtual methods that must be implemented by all child classes. - StandardDevice - Sub-class of PowerSequencerDevice that implements the standard pgood fault detection algorithm. - PMBusDriverDevice - Sub-class of StandardDevice for power sequencer devices that are bound to a PMBus device driver. - UCD90xDevice - Sub-class of PMBusDriverDevice for the UCD90X family of power sequencer devices. - UCD90160Device - Sub-class of UCD90xDevice representing a UCD90160 power sequencer device. - UCD90320Device - Sub-class of UCD90xDevice representing a UCD90320 power sequencer device. - Services - Abstract base class that provides an interface to system services like error logging and the journal. - BMCServices - Sub-class of Services with real implementation of methods. - MockServices - Sub-class of Services with mock implementation of methods for automated testing.