User single-shot or periodic timer. More...
#include <cmsis-plus/rtos/os.h>
Classes | |
class | attributes |
Timer attributes. More... | |
class | attributes_periodic |
Periodic timer attributes. More... | |
struct | run |
Timer run types. More... | |
struct | state |
Timer states. More... | |
Public Types | |
using | func_args_t = void * |
Timer call back function arguments. | |
using | func_t = void(*)(func_args_t args) |
Entry point of a timer call back function. | |
using | state_t = uint8_t |
Type of of variables holding timer states. | |
using | type_t = uint8_t |
Type of of variables holding timer run types. | |
Public Member Functions | |
Constructors & Destructor | |
timer (func_t function, func_args_t args, const attributes &attr=once_initializer) | |
Construct a timer object instance. | |
timer (const char *name, func_t function, func_args_t args, const attributes &attr=once_initializer) | |
Construct a named timer object instance. | |
~timer () | |
Destruct the timer object instance. | |
Operators | |
bool | operator== (const timer &rhs) const |
Compare timers. | |
Public Member Functions | |
result_t | start (clock::duration_t period) |
Start or restart the timer. | |
result_t | stop (void) |
Stop the timer. | |
Public Member Functions | |
const char * | name (void) const |
Get object name. | |
Static Public Member Functions | |
Operators | |
static void * | operator new (std::size_t bytes) |
Allocate space for a new object instance using the RTOS system allocator. | |
static void * | operator new (std::size_t bytes, void *ptr) |
Emplace a new object instance. | |
static void * | operator new[] (std::size_t bytes) |
Allocate space for an array of new object instances using the RTOS system allocator. | |
static void * | operator new[] (std::size_t bytes, void *ptr) |
Emplace an array of new object instances. | |
static void | operator delete (void *ptr, std::size_t bytes) |
Deallocate the dynamically allocated object instance. using the RTOS system allocator. | |
static void | operator delete[] (void *ptr, std::size_t bytes) |
Deallocate the dynamically allocated array of object. instances using the RTOS system allocator. | |
Static Public Attributes | |
static const attributes | once_initializer |
Default one shot timer initialiser. | |
static const attributes_periodic | periodic_initializer |
Default periodic timer initialiser. | |
User single-shot or periodic timer.
The CMISIS++ timer schedules the execution of a user function after a programmable interval. If the timer is periodic, the function is rescheduled automatically until the timer is stopped.
Definition at line 56 of file os-timer.h.
os::rtos::timer::timer | ( | func_t | function, |
func_args_t | args, | ||
const attributes & | attr = once_initializer |
||
) |
Construct a timer object instance.
[in] | function | Pointer to timer function. |
[in] | args | Pointer to timer function arguments. |
[in] | attr | Reference to attributes. |
This constructor shall initialise a timer object with attributes referenced by attr. If the attributes specified by attr are modified later, the timer attributes shall not be affected.
Upon successful initialisation, the state of the timer object shall become initialised.
Only the timer object itself may be used for running the function. It is not allowed to make copies of timer objects.
In cases where default condition variable attributes are appropriate, the variables timer::once_initializer
or timer::periodic_initializer
can be used to initialise timers. The effect shall be equivalent to creating a timer object with the simple constructor.
If the attr attributes are modified after the timer creation, the timer attributes shall not be affected.
Definition at line 139 of file os-timer.cpp.
os::rtos::timer::timer | ( | const char * | name, |
func_t | function, | ||
func_args_t | args, | ||
const attributes & | attr = once_initializer |
||
) |
Construct a named timer object instance.
[in] | name | Pointer to name. |
[in] | function | Pointer to timer function. |
[in] | args | Pointer to timer function arguments. |
[in] | attr | Reference to attributes. |
This constructor shall initialise a named timer object with attributes referenced by attr. If the attributes specified by attr are modified later, the timer attributes shall not be affected.
Upon successful initialisation, the state of the timer object shall become initialised.
Only the timer object itself may be used for running the function. It is not allowed to make copies of timer objects.
In cases where default condition variable attributes are appropriate, the variables timer::once_initializer
or timer::periodic_initializer
can be used to initialise timers. The effect shall be equivalent to creating a timer object with the simple constructor.
If the attr attributes are modified after the timer creation, the timer attributes shall not be affected.
Definition at line 171 of file os-timer.cpp.
os::rtos::timer::~timer | ( | ) |
Destruct the timer object instance.
This destructor shall destroy the timer object; the object becomes, in effect, uninitialised. An implementation may cause the destructor to set the object to an invalid value.
If the timer is running, it must be automatically stopped.
Definition at line 215 of file os-timer.cpp.
|
inlineinherited |
Get object name.
All objects return a non-null string; anonymous objects return "-"
.
Definition at line 759 of file os-decls.h.
|
inlinestaticinherited |
Deallocate the dynamically allocated object instance. using the RTOS system allocator.
ptr | Pointer to object. |
bytes | Number of bytes to deallocate. |
The deallocation function (3.7.4.2) called by a delete-expression to render the value of ptr invalid.
ptr shall be a null pointer or its value shall be a value returned by an earlier call to the (possibly replaced) operator new() which has not been invalidated by an intervening call to operator delete(void*).
If ptr is null, does nothing. Otherwise, reclaims the storage allocated by the earlier call to operator new.
The storage is deallocated using the RTOS system allocator.
Definition at line 122 of file os-inlines.h.
|
inlinestaticinherited |
Deallocate the dynamically allocated array of object. instances using the RTOS system allocator.
ptr | Pointer to array of objects. |
bytes | Number of bytes to deallocate. |
The deallocation function (3.7.4.2) called by the array form of a delete-expression to render the value of ptr invalid.
If ptr is null, does nothing. Otherwise, reclaims the storage allocated by the earlier call to operator new.
The storage is deallocated using the RTOS system allocator.
Definition at line 143 of file os-inlines.h.
|
inlinestaticinherited |
Allocate space for a new object instance using the RTOS system allocator.
bytes | Number of bytes to allocate. |
The allocation function (3.7.4.1) called by a new-expression (5.3.4) to allocate a storage of size bytes suitably aligned to represent any object of that size. Return a non-null pointer to suitably aligned storage (3.7.4).
The storage is allocated using the RTOS system allocator.
Definition at line 44 of file os-inlines.h.
|
inlinestaticinherited |
Emplace a new object instance.
bytes | Number of bytes to emplace. |
ptr | Pointer to location to emplace the object. |
The allocation function (3.7.4.1) called by a placement new-expression to allocate a storage of size bytes suitably aligned to represent any object of that size. Return a non-null pointer to suitably aligned storage (3.7.4).
The storage is allocated using the RTOS system allocator.
Definition at line 81 of file os-inlines.h.
|
inlinestaticinherited |
Allocate space for an array of new object instances using the RTOS system allocator.
bytes | Number of bytes to allocate. |
The allocation function (3.7.4.1) called by the array form of a new-expression (5.3.4) to allocate a storage of size bytes suitably aligned to represent any array object of that size or smaller.
The storage is allocated using the RTOS system allocator.
Definition at line 62 of file os-inlines.h.
|
inlinestaticinherited |
Emplace an array of new object instances.
bytes | Number of bytes to emplace. |
ptr | Pointer to location to emplace the object. |
The allocation function (3.7.4.1) called by the array form of a placement new-expression to allocate a storage of size bytes suitably aligned to represent any array object of that size or smaller.
The storage is allocated using the RTOS system allocator.
Definition at line 98 of file os-inlines.h.
|
inline |
Compare timers.
true | The given timer is the same as this timer. |
false | The timers are different. |
Identical timers should have the same memory address.
Definition at line 488 of file os-timer.h.
result_t os::rtos::timer::start | ( | clock::duration_t | period | ) |
Start or restart the timer.
[in] | period | Timer period, in clock units (ticks or seconds). |
result::ok | The timer has been started or restarted. |
ENOTRECOVERABLE | Timer could not be started. |
EPERM | Cannot be invoked from an Interrupt Service Routines. |
If the period is 0, it is automatically adjusted to 1.
Definition at line 249 of file os-timer.cpp.
result_t os::rtos::timer::stop | ( | void | ) |
Stop the timer.
result::ok | The timer has been stopped. |
EPERM | Cannot be invoked from an Interrupt Service Routines. |
EAGAIN | The timer is not yet started. |
ENOTRECOVERABLE | Timer could not be stopped. |
Remove the timer from the clock schedule list, so that the next execution of the function is cancelled.
A stopped timer can be restarted later with start()`.
Definition at line 313 of file os-timer.cpp.
|
static |
Default one shot timer initialiser.
This variable can be used to create a single run timer.
Definition at line 208 of file os-timer.h.