DelegateCallbackTimer< TimerApi > Class Template Reference

Class template adding delegate callback method support to the basic CallbackTimer template. More...

#include <Timer.h>

Inheritance diagram for DelegateCallbackTimer< TimerApi >:
[legend]
Collaboration diagram for DelegateCallbackTimer< TimerApi >:
[legend]

Public Types

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

Public Member Functions

template<TimeType microseconds>
DelegateCallbackTimerinitializeUs (TimerDelegate delegateFunction)
 Initialise timer in microseconds, with static check. More...
 
template<uint32_t milliseconds>
DelegateCallbackTimerinitializeMs (TimerDelegate delegateFunction)
 Initialise hardware timer in milliseconds, with static check. More...
 
DelegateCallbackTimerinitializeMs (uint32_t milliseconds, TimerDelegate delegateFunction)
 Initialise millisecond timer. More...
 
DelegateCallbackTimerinitializeUs (uint32_t microseconds, TimerDelegate delegateFunction)
 Initialise microsecond timer. More...
 
void setCallback (TimerDelegate delegateFunction)
 Set timer trigger function using Delegate callback method. More...
 
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 DelegateCallbackTimer< TimerApi >

Class template adding delegate callback method support to the basic CallbackTimer template.

Member Typedef Documentation

◆ Micros

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

◆ Millis

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

Member Function Documentation

◆ checkInterval() [1/3]

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

Check timer interval is valid.

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

◆ checkInterval() [2/3]

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

Check timer interval in ticks is valid (static check)

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

◆ checkInterval() [3/3]

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

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

◆ checkIntervalMs()

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

Check timer interval in milliseconds is valid (static check)

◆ checkIntervalUs()

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

Check timer interval in microseconds is valid (static check)

◆ getInterval()

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

Get timer interval in clock ticks.

◆ getIntervalMs()

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

Get timer interval in milliseconds.

◆ getIntervalUs()

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

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 
)
inlineinherited

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 
)
inlineinherited

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/6]

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

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

◆ initializeMs() [2/6]

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

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

◆ initializeMs() [3/6]

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

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

◆ initializeMs() [4/6]

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

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

◆ initializeMs() [5/6]

template<typename TimerApi>
template<uint32_t milliseconds>
DelegateCallbackTimer& DelegateCallbackTimer< TimerApi >::initializeMs ( TimerDelegate  delegateFunction)
inline

Initialise hardware timer in milliseconds, with static check.

Template Parameters
millisecondsTimer interval in milliseconds
Parameters
delegateFunctionFunction to call when timer triggers
Return values
ExtendedCallbackTimer&Reference to timer

◆ initializeMs() [6/6]

template<typename TimerApi>
DelegateCallbackTimer& DelegateCallbackTimer< TimerApi >::initializeMs ( uint32_t  milliseconds,
TimerDelegate  delegateFunction 
)
inline

Initialise millisecond timer.

Parameters
millisecondsDuration of timer in milliseconds
delegateFunctionFunction to call when timer triggers
Note
Delegate callback method

◆ initializeUs() [1/6]

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

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

◆ initializeUs() [2/6]

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

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

◆ initializeUs() [3/6]

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

Initialise timer in microseconds with Timer Callback and optional argument.

◆ initializeUs() [4/6]

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

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

◆ initializeUs() [5/6]

template<typename TimerApi>
template<TimeType microseconds>
DelegateCallbackTimer& DelegateCallbackTimer< TimerApi >::initializeUs ( TimerDelegate  delegateFunction)
inline

Initialise timer in microseconds, with static check.

Template Parameters
microsecondsTimer interval in microseconds
Parameters
delegateFunctionFunction to call when timer triggers
Return values
ExtendedCallbackTimer&Reference to timer

◆ initializeUs() [6/6]

template<typename TimerApi>
DelegateCallbackTimer& DelegateCallbackTimer< TimerApi >::initializeUs ( uint32_t  microseconds,
TimerDelegate  delegateFunction 
)
inline

Initialise microsecond timer.

Parameters
microsecondsDuration of timer in milliseconds
delegateFunctionFunction to call when timer triggers
Note
Delegate callback method

◆ isStarted()

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

Check if timer is started.

Return values
boolTrue if started

◆ micros()

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

Get a microsecond time source.

◆ millis()

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

Get a millisecond time source.

◆ restart()

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

Restart timer.

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

◆ setCallback() [1/3]

template<typename TimerApi>
void DelegateCallbackTimer< TimerApi >::setCallback ( TimerDelegate  delegateFunction)
inline

Set timer trigger function using Delegate callback method.

Parameters
delegateFunctionFunction to be called on timer trigger
Note
Don't use this for interrupt timers

◆ setCallback() [2/3]

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

Set timer trigger callback.

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

◆ setCallback() [3/3]

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

Set timer trigger callback.

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

◆ setInterval() [1/4]

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

Set timer interval in timer ticks.

Parameters
ticksInterval in timer ticks

◆ setInterval() [2/4]

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

Set timer interval in timer ticks (static check)

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

◆ setInterval() [3/4]

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

Set timer interval in specific time unit (static check)

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

◆ setInterval() [4/4]

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

Set timer interval in timer ticks.

Template Parameters
unit
Parameters
timeInterval in given units

◆ setIntervalMs() [1/2]

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

Set timer interval in milliseconds.

◆ setIntervalMs() [2/2]

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

Set timer interval in milliseconds (static check)

◆ setIntervalUs() [1/2]

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

Set timer interval in microseconds.

◆ setIntervalUs() [2/2]

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

Set timer interval in microseconds (static check)

◆ startOnce()

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

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 ( )
inlineinherited

Stops timer.

◆ ticksToUs() [1/2]

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

Convert timer ticks into microseconds.

◆ ticksToUs() [2/2]

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

Convert timer ticks into microseconds.

◆ usToTicks() [1/2]

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

Convert microsecond count into timer ticks.

◆ usToTicks() [2/2]

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

Convert microsecond count into timer ticks.

Member Data Documentation

◆ callbackSet

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

User has provided callback function.

◆ intervalSet

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

User has set valid time interval.

◆ repeating

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

Timer is auto-repeat.

◆ started

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

Timer is active, or has fired.


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