Stanislav Silnitskiy / rtos
Committer:
mailgate_user
Date:
Sun Jun 24 19:47:00 2012 +0000
Revision:
0:ea15e955433d
N threads cut down to 4, stack size cut down to 1024

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mailgate_user 0:ea15e955433d 1 /* Copyright (c) 2012 mbed.org */
mailgate_user 0:ea15e955433d 2 #ifndef TIMER_H
mailgate_user 0:ea15e955433d 3 #define TIMER_H
mailgate_user 0:ea15e955433d 4
mailgate_user 0:ea15e955433d 5 #include <stdint.h>
mailgate_user 0:ea15e955433d 6 #include "cmsis_os.h"
mailgate_user 0:ea15e955433d 7
mailgate_user 0:ea15e955433d 8 namespace rtos {
mailgate_user 0:ea15e955433d 9
mailgate_user 0:ea15e955433d 10 /*! The RtosTimer class allow creating and and controlling of timer functions in the system.
mailgate_user 0:ea15e955433d 11 A timer function is called when a time period expires whereby both on-shot and
mailgate_user 0:ea15e955433d 12 periodic timers are possible. A timer can be started, restarted, or stopped.
mailgate_user 0:ea15e955433d 13
mailgate_user 0:ea15e955433d 14 Timers are handled in the thread osTimerThread.
mailgate_user 0:ea15e955433d 15 Callback functions run under control of this thread and may use CMSIS-RTOS API calls.
mailgate_user 0:ea15e955433d 16 */
mailgate_user 0:ea15e955433d 17 class RtosTimer {
mailgate_user 0:ea15e955433d 18 public:
mailgate_user 0:ea15e955433d 19 /*! Create and Start timer.
mailgate_user 0:ea15e955433d 20 \param task name of the timer call back function.
mailgate_user 0:ea15e955433d 21 \param type osTimerOnce for one-shot or osTimerPeriodic for periodic behaviour. (default: osTimerPeriodic)
mailgate_user 0:ea15e955433d 22 \param argument argument to the timer call back function. (default: NULL)
mailgate_user 0:ea15e955433d 23 */
mailgate_user 0:ea15e955433d 24 RtosTimer(void (*task)(void const *argument),
mailgate_user 0:ea15e955433d 25 os_timer_type type=osTimerPeriodic,
mailgate_user 0:ea15e955433d 26 void *argument=NULL);
mailgate_user 0:ea15e955433d 27
mailgate_user 0:ea15e955433d 28 /*! Stop the timer.
mailgate_user 0:ea15e955433d 29 \return status code that indicates the execution status of the function.
mailgate_user 0:ea15e955433d 30 */
mailgate_user 0:ea15e955433d 31 osStatus stop(void);
mailgate_user 0:ea15e955433d 32
mailgate_user 0:ea15e955433d 33 /*! start a timer.
mailgate_user 0:ea15e955433d 34 \param millisec time delay value of the timer.
mailgate_user 0:ea15e955433d 35 \return status code that indicates the execution status of the function.
mailgate_user 0:ea15e955433d 36 */
mailgate_user 0:ea15e955433d 37 osStatus start(uint32_t millisec);
mailgate_user 0:ea15e955433d 38
mailgate_user 0:ea15e955433d 39 private:
mailgate_user 0:ea15e955433d 40 osTimerId _timer_id;
mailgate_user 0:ea15e955433d 41 osTimerDef_t _timer;
mailgate_user 0:ea15e955433d 42 #ifdef CMSIS_OS_RTX
mailgate_user 0:ea15e955433d 43 uint32_t _timer_data[5];
mailgate_user 0:ea15e955433d 44 #endif
mailgate_user 0:ea15e955433d 45 };
mailgate_user 0:ea15e955433d 46
mailgate_user 0:ea15e955433d 47 }
mailgate_user 0:ea15e955433d 48
mailgate_user 0:ea15e955433d 49 #endif