Embedded Artistry Framework
Embedded Systems C++ Framework
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
embvm::gpio::base< TDir > Class Template Referenceabstract

This class defines the common GPIO interfaces. More...

#include <gpio.hpp>

Inheritance diagram for embvm::gpio::base< TDir >:
Inheritance graph

Public Member Functions

gpio::direction direction () const noexcept
 Check the direction of the GPIO pin. 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
 GPIO Driver Type ID. More...
 

Protected Member Functions

 base () noexcept
 Default constructor. More...
 
 base (const char *name) noexcept
 Construct an gpio::base with a C-string name. More...
 
 base (const std::string &name) noexcept
 Construct an gpio::base with a std::string name. More...
 
 base (const std::string_view &name) noexcept
 Construct an gpio::base with a std::string_view name. More...
 
 ~base () noexcept override=default
 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

template<gpio::direction TDir>
class embvm::gpio::base< TDir >

This class defines the common GPIO interfaces.

The gpio::base class defines interfaces which are common to all GPIO objects. This class is not intended to be used directly for implementing GPIO drivers. Instead, additional specializations are provided:

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

Template Parameters
TDirThe direction of the GPIO pin (e.g. input, output).
TPullThe pull setting for the GPIO pin.

Constructor & Destructor Documentation

◆ base() [1/4]

template<gpio::direction TDir>
embvm::gpio::base< TDir >::base ( )
inlineprotectednoexcept

Default constructor.

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

◆ base() [2/4]

template<gpio::direction TDir>
embvm::gpio::base< TDir >::base ( const char *  name)
inlineexplicitprotectednoexcept

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

Initializes the gpio::base instance with a name.

Parameters
nameThe name of the GPIO instance.

◆ base() [3/4]

template<gpio::direction TDir>
embvm::gpio::base< TDir >::base ( const std::string &  name)
inlineexplicitprotectednoexcept

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

Initializes the gpio::base instance with a name.

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

◆ base() [4/4]

template<gpio::direction TDir>
embvm::gpio::base< TDir >::base ( const std::string_view &  name)
inlineexplicitprotectednoexcept

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

Initializes the gpio::base instance with a name.

Parameters
nameThe name of the GPIO instance.

◆ ~base()

template<gpio::direction TDir>
embvm::gpio::base< TDir >::~base ( )
overrideprotecteddefaultnoexcept

Default destructor.

Member Function Documentation

◆ direction()

template<gpio::direction TDir>
gpio::direction embvm::gpio::base< TDir >::direction ( ) const
inlinenoexcept

Check the direction of the GPIO pin.

Returns
The configured direction of this GPIO pin.

◆ 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_.

◆ 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_()

template<gpio::direction TDir>
void embvm::gpio::base< TDir >::start_ ( )
overrideprotectedpure virtualnoexcept

◆ 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_()

template<gpio::direction TDir>
void embvm::gpio::base< TDir >::stop_ ( )
overrideprotectedpure virtualnoexcept

◆ type()

template<gpio::direction TDir>
static constexpr embvm::DriverType embvm::gpio::base< TDir >::type ( )
inlinestaticnoexcept

GPIO Driver Type ID.

Returns
GPIO type ID.

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 file: