Embedded Artistry Framework
Embedded Systems C++ Framework
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
embvm::led::base Class Referenceabstract

This class provides LED interface definitions. More...

#include <led.hpp>

Inheritance diagram for embvm::led::base:
Inheritance graph

Public Member Functions

virtual void on () noexcept=0
 Turn on the LED. More...
 
virtual void off () noexcept=0
 Turn off the LED. More...
 
virtual void toggle () noexcept=0
 Toggle the LED state. More...
 
void start () noexcept
 Start the driver. More...
 
void stop () noexcept
 Stop the driver. More...
 
void restart () noexcept
 Restart the driver. More...
 
type_safe::boolean started () const noexcept
 Check if the driver has been started. More...
 
constexpr embvm::DriverType_t DriverType () const noexcept
 Returns the registered type ID of the driver. More...
 
constexpr const std::string_view & name () const noexcept
 Provides a string_view reference of the driver name. More...
 
constexpr const char * name_cstr () const noexcept
 Provides a c-string version of the driver name. More...
 
virtual DriverBaseoperator++ () noexcept
 Increment operator is a no-op, but is used for iterator compatibility. More...
 

Static Public Member Functions

static constexpr embvm::DriverType type () noexcept
 LED Driver Type ID. More...
 

Protected Member Functions

 base () noexcept
 Default constructor. More...
 
 base (const char *name) noexcept
 Construct an led::base with a C-string name. More...
 
 base (const std::string &name) noexcept
 Construct an led::base with a std::string name. More...
 
 base (const std::string_view &name) noexcept
 Construct an led::base with a std::string_view name. More...
 
 ~base () noexcept override
 Default destructor. More...
 
void start_ () noexcept override=0
 Derived classes override the start_ method to control driver-specific startup behavior. More...
 
void stop_ () noexcept override=0
 Derived classes override the start_ method to control driver-specific startup behavior. More...
 

Protected Attributes

type_safe::boolean started_ = false
 Tracks the driver state. More...
 
const std::string_view name_
 Name of the driver instance. More...
 
const embvm::DriverType_t type_
 Type ID of the driver instance. More...
 

Detailed Description

This class provides LED interface definitions.

The led::base class defines the common interfaces for LED drivers. This class can be inherited to provide specific LED implementations, such as GPIO, port-pin, LED IC, etc.

Define an LED driver

To create a specialized LED interface, derive from the led::base object:

class gpio final : public base
{ ... };

Derived classes must implement the following interfaces:

Derived classes must also implement pure virtual embvm::DriverBase functions:

Using an LED driver

The primary means of working with LED driver types is the on(), off(), and toggle() functions.

Any configuration needed for LED driver specializations should be handled in the derived classes (preferably in the start_() and stop_() functions). The generic interface has no knowledge of configuration requirements.

Constructor & Destructor Documentation

◆ base() [1/4]

embvm::led::base::base ( )
inlineprotectednoexcept

Default constructor.

Initializes the led::base instance with a generic name.

◆ base() [2/4]

embvm::led::base::base ( const char *  name)
inlineexplicitprotectednoexcept

Construct an led::base with a C-string name.

Initializes the led::base instance with a name.

Parameters
nameThe name of the LED instance.

◆ base() [3/4]

embvm::led::base::base ( const std::string &  name)
inlineexplicitprotectednoexcept

Construct an led::base with a std::string name.

Initializes the led::base instance with a name.

Parameters
nameThe name of the LED instance. led::base() uses a std::string_view, so the std::string must remain valid

◆ base() [4/4]

embvm::led::base::base ( const std::string_view &  name)
inlineexplicitprotectednoexcept

Construct an led::base with a std::string_view name.

Initializes the led::base instance with a name.

Parameters
nameThe name of the LED instance.

◆ ~base()

embvm::led::base::~base ( )
overrideprotecteddefaultnoexcept

Default destructor.

Member Function Documentation

◆ DriverType()

constexpr embvm::DriverType_t embvm::DriverBase::DriverType ( ) const
inlinenoexceptinherited

Returns the registered type ID of the driver.

When using DriverBase interfaces, clients can retrieve the registered driver type in order to up-cast to the correct interface.

The type is returned as a embvm::DriverType_t rather than a embvm::DriverType enum to work with custom user-defined types. Enforcing a embvm::DriverType return value would prevent clients from defining and using their own custom types.

Returns
the registered driver type as a embvm::DriverType_t value

References embvm::DriverBase::type_.

◆ name()

constexpr const std::string_view& embvm::DriverBase::name ( ) const
inlinenoexceptinherited

Provides a string_view reference of the driver name.

Returns
std::string_view ref containing the driver name.

References embvm::DriverBase::name_.

◆ name_cstr()

constexpr const char* embvm::DriverBase::name_cstr ( ) const
inlinenoexceptinherited

Provides a c-string version of the driver name.

Returns
c-string containing the driver name

References embvm::DriverBase::name_.

◆ off()

virtual void embvm::led::base::off ( )
pure virtualnoexcept

Turn off the LED.

Postcondition
LED is turned off.

Implemented in embvm::led::gpio< TActiveHigh >.

Referenced by embvm::led::gpio< TActiveHigh >::start_(), and embvm::led::gpio< TActiveHigh >::toggle().

◆ on()

virtual void embvm::led::base::on ( )
pure virtualnoexcept

Turn on the LED.

Postcondition
LED is turned on.

Implemented in embvm::led::gpio< TActiveHigh >.

Referenced by embvm::led::gpio< TActiveHigh >::toggle().

◆ operator++()

virtual DriverBase& embvm::DriverBase::operator++ ( )
inlinevirtualnoexceptinherited

Increment operator is a no-op, but is used for iterator compatibility.

◆ restart()

void embvm::DriverBase::restart ( )
inlinenoexceptinherited

Restart the driver.

Calls stop() and then start() on the driver. If the driver is not started, then it will be started after the start() function is invoked.

References embvm::DriverBase::start(), and embvm::DriverBase::stop().

◆ start()

void embvm::DriverBase::start ( )
inlinenoexceptinherited

◆ start_()

void embvm::led::base::start_ ( )
overrideprotectedpure virtualnoexcept

Derived classes override the start_ method to control driver-specific startup behavior.

(Template Method Pattern)

Implements embvm::DriverBase.

Implemented in embvm::led::gpio< TActiveHigh >.

◆ started()

type_safe::boolean embvm::DriverBase::started ( ) const
inlinenoexceptinherited

Check if the driver has been started.

Returns
true if the driver is running (started), false if not running (stopped).

References embvm::DriverBase::started_.

Referenced by embdrv::aardvarkSPIMaster::configure_(), embdrv::aardvarkGPIOInput< 4 >::get(), embdrv::aardvarkGPIOOutput< 5 >::set(), embdrv::vl53l1x::start_(), embdrv::aardvarkAdapter::start_(), and embdrv::aardvarkAdapter::stop_().

◆ stop()

void embvm::DriverBase::stop ( )
inlinenoexceptinherited

◆ stop_()

void embvm::led::base::stop_ ( )
overrideprotectedpure virtualnoexcept

Derived classes override the start_ method to control driver-specific startup behavior.

(Template Method Pattern)

Implements embvm::DriverBase.

Implemented in embvm::led::gpio< TActiveHigh >.

◆ toggle()

virtual void embvm::led::base::toggle ( )
pure virtualnoexcept

Toggle the LED state.

If the LED is on, turn it off. If the LED is off, turn it on. The logic for implementing toggle is left to the base class, as there may be efficient options that depend on the specific implementation.

Derived classes must implement the toggle() function.

Postcondition
If the LED was off, the LED is now on. If the LED was on, LED is now off.

Implemented in embvm::led::gpio< TActiveHigh >.

◆ type()

static constexpr embvm::DriverType embvm::led::base::type ( )
inlinestaticnoexcept

LED Driver Type ID.

Returns
LED type ID.

References embvm::LED.

Member Data Documentation

◆ name_

const std::string_view embvm::DriverBase::name_
protectedinherited

Name of the driver instance.

Referenced by embvm::DriverBase::name(), and embvm::DriverBase::name_cstr().

◆ started_

type_safe::boolean embvm::DriverBase::started_ = false
protectedinherited

Tracks the driver state.

True if the driver has been started, false if it has been stopped or not yet started.

Referenced by embvm::DriverBase::start(), embvm::DriverBase::started(), and embvm::DriverBase::stop().

◆ type_

const embvm::DriverType_t embvm::DriverBase::type_
protectedinherited

Type ID of the driver instance.

Referenced by embvm::DriverBase::DriverType().


The documentation for this class was generated from the following files: