|
Embedded Artistry Framework
Embedded Systems C++ Framework
|
This class provides generic Timer interface definitions. More...
#include <timer.hpp>

Public Member Functions | |
| timer_period_t | period () const noexcept |
| Get the current timer period. More... | |
| timer_period_t | period (timer_period_t period) noexcept |
| Set the timer period. More... | |
| virtual void | registerCallback (const timer::cb_t &cb) noexcept=0 |
| Register a timer callback. More... | |
| virtual void | registerCallback (timer::cb_t &&cb) noexcept=0 |
| Register a timer callback. More... | |
| virtual void | restart (const timer_period_t period) noexcept |
| Restart the timer with a specific period. More... | |
| void | restart (const timer_period_t::rep period) noexcept |
| Restart the timer with a specific period. More... | |
| void | restart () noexcept |
| Restart the timer with the currently configured period. More... | |
| virtual timer::state | state () const noexcept |
| Check the state of the timer. More... | |
| virtual timer::config | config () const noexcept |
| Check the configuration of the timer. More... | |
| virtual timer::config | config (timer::config c) noexcept |
| Set the timer configuration. More... | |
| virtual timer_period_t | count () const noexcept=0 |
| Read the current timer count. More... | |
| void | start () noexcept |
| Start the driver. More... | |
| void | stop () noexcept |
| Stop 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 DriverBase & | operator++ () noexcept |
| Increment operator is a no-op, but is used for iterator compatibility. More... | |
Static Public Member Functions | |
| static constexpr embvm::DriverType | type () noexcept |
| Timer Driver Type ID. More... | |
Protected Member Functions | |
| Timer () noexcept | |
| Default constructor. More... | |
| Timer (const char *name) noexcept | |
| Construct an Timer with a C-string name. More... | |
| Timer (const std::string &name) noexcept | |
| Construct an Timer with a std::string name. More... | |
| Timer (const std::string_view &name) noexcept | |
| Construct an Timer with a std::string_view name. More... | |
| ~Timer () 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 | |
| timer_period_t | period_ {0} |
| The configured timer period. More... | |
| timer::state | state_ = timer::state::stopped |
| The current state of the timer. More... | |
| timer::config | config_ = timer::config::oneshot |
| The timer configuratoin. More... | |
| 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... | |
This class provides generic Timer interface definitions.
The Timer class defines the common interfaces for Timer drivers. This class can be inherited to provide specific Timer implementations.
Timers can be used with the embvm::TimerManager<> class to provide software timer support.
To create a specialized Timer driver, derive from the Timer object:
Derived classes must implement the following interfaces:
Derived classes must also implement pure virtual embvm::DriverBase functions:
The start_() function must implement the steps for starting the timer hardware. The stop_() function is responsible for stopping the timer hardware.
Timers should be configured with a period(). If the default one-shot configuration is not desired, the config() can be used to change the timer operational mode.
A callback should be registered with the registerCallback() function. When the timer expires, the callback will be invoked. If the timer is configured as a one-shot, the timer will remain expired until start() or restart() is called. If a timer is configured as periodic, the timer will reload the period and re-arm itself.
A timer can be restarted (even while running) using the existing period or with a new period.
Timers can be stopped while they are running using the stop() function.
Timers can be used with the embvm::TimerManager<> class to provide software timer support.
The embvm::TimerManager will use the timer hardware driver as a master timer, enabling multiple software timers to be created and used while consuming only a single hardware resource.
|
inlineprotectednoexcept |
Default constructor.
Initializes the Timer instance with a generic name.
|
inlineexplicitprotectednoexcept |
|
inlineexplicitprotectednoexcept |
|
inlineexplicitprotectednoexcept |
|
overrideprotecteddefaultnoexcept |
Default destructor.
|
inlinevirtualnoexcept |
Check the configuration of the timer.
References config_.
Referenced by embdrv::SimulatorTimer::SimulatorTimer().
|
inlinevirtualnoexcept |
Set the timer configuration.
| c | The desired timer configuration (periodic or oneshot). |
References config_.
|
pure virtualnoexcept |
Read the current timer count.
Implemented in embdrv::SimulatorTimer.
|
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.
References embvm::DriverBase::type_.
|
inlinenoexceptinherited |
Provides a string_view reference of the driver name.
std::string_view ref containing the driver name. References embvm::DriverBase::name_.
|
inlinenoexceptinherited |
Provides a c-string version of the driver name.
References embvm::DriverBase::name_.
|
inlinevirtualnoexceptinherited |
Increment operator is a no-op, but is used for iterator compatibility.
|
inlinenoexcept |
Get the current timer period.
References period_.
Referenced by period(), restart(), and embdrv::SimulatorTimer::SimulatorTimer().
|
inlinenoexcept |
|
pure virtualnoexcept |
Register a timer callback.
The timer callback function is called whenever the timer expires.
Derived classes must implement this function. Derived classes can choose to support either a single callback or multiple callbacks.
| cb | A callback to invoke when the timer expires. |
Implemented in embdrv::SimulatorTimer.
|
pure virtualnoexcept |
Register a timer callback.
The timer callback function is called whenever the timer expires.
Derived classes must implement this function. Derived classes can choose to support either a single callback or multiple callbacks.
| cb | A callback to invoke when the timer expires. |
Implemented in embdrv::SimulatorTimer.
|
inlinevirtualnoexcept |
Restart the timer with a specific period.
| period | The desired timer period to reset the timer to use. Accepts a std::chrono value. |
References period(), period_, embvm::DriverBase::start(), and embvm::DriverBase::stop().
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexceptinherited |
Start the driver.
If the driver is not started, call the start_() function defined by the derived class. (Template Method Pattern)
References embvm::DriverBase::start_(), and embvm::DriverBase::started_.
Referenced by NRF52DongleHWPlatform::init_(), NRF52DKHWPlatform::init_(), BlinkySimulatorHWPlatform::init_(), FWDemoSimulatorHWPlatform::init_(), FrameworkDemoSimPlatform::initHWPlatform_(), embvm::DriverBase::restart(), restart(), embvm::spi::activeMaster< TQueueSize, TLock, TCond >::start_(), embvm::i2c::activeMaster< 128 >::start_(), embdrv::aardvarkSPIMaster::start_(), embdrv::aardvarkI2CMaster::start_(), embdrv::aardvarkGPIOInput< 4 >::start_(), embdrv::vl53l1x::start_(), embdrv::aardvarkGPIOOutput< 5 >::start_(), BlinkySimulatorHWPlatform::startBlink(), and FWDemoSimulatorHWPlatform::startLEDTimer().
|
overrideprotectedpure virtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::DriverBase.
Implemented in embdrv::SimulatorTimer.
|
inlinenoexceptinherited |
Check if the driver has been started.
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_().
|
inlinevirtualnoexcept |
|
inlinenoexceptinherited |
Stop the driver.
If the driver has been started, call the stop_() function defined by the derived class. (Template Method Pattern)
References embvm::DriverBase::started_, and embvm::DriverBase::stop_().
Referenced by embvm::DriverBase::restart(), restart(), embvm::spi::activeMaster< TQueueSize, TLock, TCond >::stop_(), embvm::i2c::activeMaster< 128 >::stop_(), embdrv::aardvarkSPIMaster::stop_(), embdrv::aardvarkI2CMaster::stop_(), embdrv::aardvarkGPIOInput< 4 >::stop_(), embdrv::aardvarkGPIOOutput< 5 >::stop_(), FWDemoSimulatorHWPlatform::~FWDemoSimulatorHWPlatform(), and embdrv::SimulatorTimer::~SimulatorTimer().
|
overrideprotectedpure virtualnoexcept |
Derived classes override the start_ method to control driver-specific startup behavior.
(Template Method Pattern)
Implements embvm::DriverBase.
Implemented in embdrv::SimulatorTimer.
|
inlinestaticnoexcept |
|
protected |
The timer configuratoin.
Referenced by config(), embdrv::SimulatorTimer::SimulatorTimer(), and embdrv::SimulatorTimer::timer_thread().
|
protectedinherited |
Name of the driver instance.
Referenced by embvm::DriverBase::name(), and embvm::DriverBase::name_cstr().
|
protected |
The configured timer period.
Referenced by period(), restart(), embdrv::SimulatorTimer::SimulatorTimer(), and embdrv::SimulatorTimer::timer_thread().
|
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().
|
protected |
The current state of the timer.
Referenced by embdrv::SimulatorTimer::start_(), state(), embdrv::SimulatorTimer::stop_(), and embdrv::SimulatorTimer::timer_thread().
|
protectedinherited |
Type ID of the driver instance.
Referenced by embvm::DriverBase::DriverType().
1.8.15