Callback timer class template. More...

#include <CallbackTimer.h>

Inheritance diagram for CallbackTimer< TimerApi >:
Collaboration diagram for CallbackTimer< TimerApi >:

Public Types

using Millis = NanoTime::TimeSource< Clock, NanoTime::Milliseconds, uint32_t >
 
using Micros = NanoTime::TimeSource< Clock, NanoTime::Microseconds, TimeType >
 

Public Member Functions

template<NanoTime::Unit unit, TimeType time>
CallbackTimerinitialize (TimerCallback callback, void *arg=nullptr)
 Initialise timer with an interval (static check) and callback. More...
 
template<NanoTime::Unit unit>
CallbackTimerinitialize (TimeType time, TimerCallback callback, void *arg=nullptr)
 Initialise timer with an interval and callback. More...
 
template<TimeType microseconds>
CallbackTimerinitializeUs (TimerCallback callback, void *arg=nullptr)
 Initialise timer in microseconds (static check) with Timer Callback and optional argument. More...
 
template<TimeType microseconds>
CallbackTimerinitializeUs (InterruptCallback callback=nullptr)
 Initialise timer in microseconds (static check) with optional Interrupt Callback (no argument) More...
 
CallbackTimerinitializeUs (TimeType microseconds, TimerCallback callback, void *arg=nullptr)
 Initialise timer in microseconds with Timer Callback and optional argument. More...
 
CallbackTimerinitializeUs (TimeType microseconds, InterruptCallback callback=nullptr)
 Initialise timer in microseconds with optional Interrupt Callback (no arg) More...
 
template<uint32_t milliseconds>
CallbackTimerinitializeMs (TimerCallback callback, void *arg=nullptr)
 Initialise hardware timer in milliseconds (static check) with Timer Callback and optional argument. More...
 
template<uint32_t milliseconds>
CallbackTimerinitializeMs (InterruptCallback callback=nullptr)
 Initialise hardware timer in milliseconds (static check) and optional Interrupt Callback (no arg) More...
 
CallbackTimerinitializeMs (uint32_t milliseconds, TimerCallback callback, void *arg=nullptr)
 Initialise hardware timer in milliseconds with Timer Callback and optional argument. More...
 
CallbackTimerinitializeMs (uint32_t milliseconds, InterruptCallback callback=nullptr)
 Initialise hardware timer in milliseconds with optional Interrupt Callback (no arg) More...
 
bool start (bool repeating=true)
 Start timer running. More...
 
bool startOnce ()
 Start one-shot timer. More...
 
void stop ()
 Stops timer. More...
 
bool restart ()
 Restart timer. More...
 
bool isStarted () const
 Check if timer is started. More...
 
NanoTime::Time< TimeType > getIntervalUs () const
 Get timer interval in microseconds. More...
 
NanoTime::Time< uint32_t > getIntervalMs () const
 Get timer interval in milliseconds. More...
 
TickType getInterval () const
 Get timer interval in clock ticks. More...
 
bool checkInterval (TickType ticks) const
 Check timer interval is valid. More...
 
bool setInterval (TickType ticks)
 Set timer interval in timer ticks. More...
 
template<TimeType ticks>
void setInterval ()
 Set timer interval in timer ticks (static check) More...
 
template<NanoTime::Unit unit, TimeType time>
void setInterval ()
 Set timer interval in specific time unit (static check) More...
 
template<NanoTime::Unit unit>
bool setInterval (TimeType time)
 Set timer interval in timer ticks. More...
 
bool setIntervalUs (TimeType microseconds)
 Set timer interval in microseconds. More...
 
template<TimeType microseconds>
void setIntervalUs ()
 Set timer interval in microseconds (static check) More...
 
bool setIntervalMs (uint32_t milliseconds)
 Set timer interval in milliseconds. More...
 
template<uint32_t milliseconds>
void setIntervalMs ()
 Set timer interval in milliseconds (static check) More...
 
void setCallback (TimerCallback callback, void *arg=nullptr)
 Set timer trigger callback. More...
 
void setCallback (InterruptCallback callback)
 Set timer trigger callback. More...
 

Static Public Member Functions

static constexpr Millis millis ()
 Get a millisecond time source. More...
 
static constexpr Micros micros ()
 Get a microsecond time source. More...
 
template<uint64_t us>
static constexpr uint64_t usToTicks ()
 Convert microsecond count into timer ticks. More...
 
static TickType usToTicks (TimeType time)
 Convert microsecond count into timer ticks. More...
 
template<uint64_t ticks>
static constexpr uint64_t ticksToUs ()
 Convert timer ticks into microseconds. More...
 
static TimeType ticksToUs (TickType ticks)
 Convert timer ticks into microseconds. More...
 
template<uint64_t ticks>
static constexpr void checkInterval ()
 Check timer interval in ticks is valid (static check) More...
 
template<NanoTime::Unit unit, uint64_t time>
static constexpr void checkInterval ()
 Check timer interval in specific time unit is valid (static check) More...
 
template<uint64_t milliseconds>
static constexpr void checkIntervalMs ()
 Check timer interval in milliseconds is valid (static check) More...
 
template<uint64_t microseconds>
static constexpr void checkIntervalUs ()
 Check timer interval in microseconds is valid (static check) More...
 

Protected Attributes

bool callbackSet = false
 User has provided callback function. More...
 
bool intervalSet = false
 User has set valid time interval. More...
 
bool repeating = false
 Timer is auto-repeat. More...
 
bool started = false
 Timer is active, or has fired. More...
 

Detailed Description

template<typename TimerApi>
class CallbackTimer< TimerApi >

Callback timer class template.

Template Parameters
TimerApiThe physical timer implementation
Note
Methods return object reference for Method Chaining http://en.wikipedia.org/wiki/Method_chaining This class template provides basic C-style callbacks for best performance

Member Typedef Documentation

◆ Micros

template<typename TimerApi >
using CallbackTimer< TimerApi >::Micros = NanoTime::TimeSource<Clock, NanoTime::Microseconds, TimeType>

◆ Millis

template<typename TimerApi >
using CallbackTimer< TimerApi >::Millis = NanoTime::TimeSource<Clock, NanoTime::Milliseconds, uint32_t>

Member Function Documentation

◆ checkInterval() [1/3]

template<typename TimerApi >
template<uint64_t ticks>
static constexpr void CallbackTimer< TimerApi >::checkInterval ( )
inlinestaticconstexpr

Check timer interval in ticks is valid (static check)

Template Parameters
ticksTimer interval to check
Note
On error, compilation fails with error message

◆ checkInterval() [2/3]

template<typename TimerApi >
template<NanoTime::Unit unit, uint64_t time>
static constexpr void CallbackTimer< TimerApi >::checkInterval ( )
inlinestaticconstexpr

Check timer interval in specific time unit is valid (static check)

Template Parameters
unitTime unit for interval
timeInterval to check
Note
On error, compilation fails with error message

◆ checkInterval() [3/3]

template<typename TimerApi >
bool CallbackTimer< TimerApi >::checkInterval ( TickType  ticks) const
inline

Check timer interval is valid.

Parameters
ticksInterval to check
Return values
booltrue if interval is within acceptable range for this timer

◆ checkIntervalMs()

template<typename TimerApi >
template<uint64_t milliseconds>
static constexpr void CallbackTimer< TimerApi >::checkIntervalMs ( )
inlinestaticconstexpr

Check timer interval in milliseconds is valid (static check)

◆ checkIntervalUs()

template<typename TimerApi >
template<uint64_t microseconds>
static constexpr void CallbackTimer< TimerApi >::checkIntervalUs ( )
inlinestaticconstexpr

Check timer interval in microseconds is valid (static check)

◆ getInterval()

template<typename TimerApi >
TickType CallbackTimer< TimerApi >::getInterval ( ) const
inline

Get timer interval in clock ticks.

◆ getIntervalMs()

template<typename TimerApi >
NanoTime::Time<uint32_t> CallbackTimer< TimerApi >::getIntervalMs ( ) const
inline

Get timer interval in milliseconds.

◆ getIntervalUs()

template<typename TimerApi >
NanoTime::Time<TimeType> CallbackTimer< TimerApi >::getIntervalUs ( ) const
inline

Get timer interval in microseconds.

◆ initialize() [1/2]

template<typename TimerApi >
template<NanoTime::Unit unit, TimeType time>
CallbackTimer& CallbackTimer< TimerApi >::initialize ( TimerCallback  callback,
void *  arg = nullptr 
)
inline

Initialise timer with an interval (static check) and callback.

Template Parameters
unitTime unit for interval
timeTimer interval
Parameters
callbackCallback function to call when timer triggers
argOptional argument passed to callback
Return values
CallbackTimer&Reference to timer
Note
If interval out of range compilation will fail with error

◆ initialize() [2/2]

template<typename TimerApi >
template<NanoTime::Unit unit>
CallbackTimer& CallbackTimer< TimerApi >::initialize ( TimeType  time,
TimerCallback  callback,
void *  arg = nullptr 
)
inline

Initialise timer with an interval and callback.

Template Parameters
unitTime unit for interval
Parameters
timeTimer interval
callbackCallback function to call when timer triggers
argOptional argument passed to callback
Return values
CallbackTimer&Reference to timer

◆ initializeMs() [1/4]

template<typename TimerApi >
template<uint32_t milliseconds>
CallbackTimer& CallbackTimer< TimerApi >::initializeMs ( InterruptCallback  callback = nullptr)
inline

Initialise hardware timer in milliseconds (static check) and optional Interrupt Callback (no arg)

◆ initializeMs() [2/4]

template<typename TimerApi >
template<uint32_t milliseconds>
CallbackTimer& CallbackTimer< TimerApi >::initializeMs ( TimerCallback  callback,
void *  arg = nullptr 
)
inline

Initialise hardware timer in milliseconds (static check) with Timer Callback and optional argument.

◆ initializeMs() [3/4]

template<typename TimerApi >
CallbackTimer& CallbackTimer< TimerApi >::initializeMs ( uint32_t  milliseconds,
InterruptCallback  callback = nullptr 
)
inline

Initialise hardware timer in milliseconds with optional Interrupt Callback (no arg)

◆ initializeMs() [4/4]

template<typename TimerApi >
CallbackTimer& CallbackTimer< TimerApi >::initializeMs ( uint32_t  milliseconds,
TimerCallback  callback,
void *  arg = nullptr 
)
inline

Initialise hardware timer in milliseconds with Timer Callback and optional argument.

◆ initializeUs() [1/4]

template<typename TimerApi >
template<TimeType microseconds>
CallbackTimer& CallbackTimer< TimerApi >::initializeUs ( InterruptCallback  callback = nullptr)
inline

Initialise timer in microseconds (static check) with optional Interrupt Callback (no argument)

◆ initializeUs() [2/4]

template<typename TimerApi >
template<TimeType microseconds>
CallbackTimer& CallbackTimer< TimerApi >::initializeUs ( TimerCallback  callback,
void *  arg = nullptr 
)
inline

Initialise timer in microseconds (static check) with Timer Callback and optional argument.

◆ initializeUs() [3/4]

template<typename TimerApi >
CallbackTimer& CallbackTimer< TimerApi >::initializeUs ( TimeType  microseconds,
InterruptCallback  callback = nullptr 
)
inline

Initialise timer in microseconds with optional Interrupt Callback (no arg)

◆ initializeUs() [4/4]

template<typename TimerApi >
CallbackTimer& CallbackTimer< TimerApi >::initializeUs ( TimeType  microseconds,
TimerCallback  callback,
void *  arg = nullptr 
)
inline

Initialise timer in microseconds with Timer Callback and optional argument.

◆ isStarted()

template<typename TimerApi >
bool CallbackTimer< TimerApi >::isStarted ( ) const
inline

Check if timer is started.

Return values
boolTrue if started

◆ micros()

template<typename TimerApi >
static constexpr Micros CallbackTimer< TimerApi >::micros ( )
inlinestaticconstexpr

Get a microsecond time source.

◆ millis()

template<typename TimerApi >
static constexpr Millis CallbackTimer< TimerApi >::millis ( )
inlinestaticconstexpr

Get a millisecond time source.

◆ restart()

template<typename TimerApi >
bool CallbackTimer< TimerApi >::restart ( )
inline

Restart timer.

Return values
boolTrue if timer started
Note
Timer is stopped then started with current configuration

◆ setCallback() [1/2]

template<typename TimerApi >
void CallbackTimer< TimerApi >::setCallback ( InterruptCallback  callback)
inline

Set timer trigger callback.

Parameters
callbackFunction to call when timer triggers
Note
Provided for convenience where callback argument not required

◆ setCallback() [2/2]

template<typename TimerApi >
void CallbackTimer< TimerApi >::setCallback ( TimerCallback  callback,
void *  arg = nullptr 
)
inline

Set timer trigger callback.

Parameters
callbackFunction to call when timer triggers
argOptional argument passed to callback

◆ setInterval() [1/4]

template<typename TimerApi >
template<TimeType ticks>
void CallbackTimer< TimerApi >::setInterval ( )
inline

Set timer interval in timer ticks (static check)

Template Parameters
ticksInterval in ticks
Note
On error, compilation fails with error message

◆ setInterval() [2/4]

template<typename TimerApi >
template<NanoTime::Unit unit, TimeType time>
void CallbackTimer< TimerApi >::setInterval ( )
inline

Set timer interval in specific time unit (static check)

Template Parameters
unit
timeInterval to set
Note
On error, compilation fails with error message

◆ setInterval() [3/4]

template<typename TimerApi >
bool CallbackTimer< TimerApi >::setInterval ( TickType  ticks)
inline

Set timer interval in timer ticks.

Parameters
ticksInterval in timer ticks

◆ setInterval() [4/4]

template<typename TimerApi >
template<NanoTime::Unit unit>
bool CallbackTimer< TimerApi >::setInterval ( TimeType  time)
inline

Set timer interval in timer ticks.

Template Parameters
unit
Parameters
timeInterval in given units

◆ setIntervalMs() [1/2]

template<typename TimerApi >
template<uint32_t milliseconds>
void CallbackTimer< TimerApi >::setIntervalMs ( )
inline

Set timer interval in milliseconds (static check)

◆ setIntervalMs() [2/2]

template<typename TimerApi >
bool CallbackTimer< TimerApi >::setIntervalMs ( uint32_t  milliseconds)
inline

Set timer interval in milliseconds.

◆ setIntervalUs() [1/2]

template<typename TimerApi >
template<TimeType microseconds>
void CallbackTimer< TimerApi >::setIntervalUs ( )
inline

Set timer interval in microseconds (static check)

◆ setIntervalUs() [2/2]

template<typename TimerApi >
bool CallbackTimer< TimerApi >::setIntervalUs ( TimeType  microseconds)
inline

Set timer interval in microseconds.

◆ start()

template<typename TimerApi >
bool CallbackTimer< TimerApi >::start ( bool  repeating = true)
inline

Start timer running.

Parameters
repeatingTrue to restart timer when it triggers, false for one-shot (Default: true)
Return values
boolTrue if timer started

◆ startOnce()

template<typename TimerApi >
bool CallbackTimer< TimerApi >::startOnce ( )
inline

Start one-shot timer.

Return values
boolTrue if timer started
Note
Timer starts and will run for configured period then stop

◆ stop()

template<typename TimerApi >
void CallbackTimer< TimerApi >::stop ( )
inline

Stops timer.

◆ ticksToUs() [1/2]

template<typename TimerApi >
template<uint64_t ticks>
static constexpr uint64_t CallbackTimer< TimerApi >::ticksToUs ( )
inlinestaticconstexpr

Convert timer ticks into microseconds.

◆ ticksToUs() [2/2]

template<typename TimerApi >
static TimeType CallbackTimer< TimerApi >::ticksToUs ( TickType  ticks)
inlinestatic

Convert timer ticks into microseconds.

◆ usToTicks() [1/2]

template<typename TimerApi >
template<uint64_t us>
static constexpr uint64_t CallbackTimer< TimerApi >::usToTicks ( )
inlinestaticconstexpr

Convert microsecond count into timer ticks.

◆ usToTicks() [2/2]

template<typename TimerApi >
static TickType CallbackTimer< TimerApi >::usToTicks ( TimeType  time)
inlinestatic

Convert microsecond count into timer ticks.

Member Data Documentation

◆ callbackSet

template<typename TimerApi >
bool CallbackTimer< TimerApi >::callbackSet = false
protected

User has provided callback function.

◆ intervalSet

template<typename TimerApi >
bool CallbackTimer< TimerApi >::intervalSet = false
protected

User has set valid time interval.

◆ repeating

template<typename TimerApi >
bool CallbackTimer< TimerApi >::repeating = false
protected

Timer is auto-repeat.

◆ started

template<typename TimerApi >
bool CallbackTimer< TimerApi >::started = false
protected

Timer is active, or has fired.


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