Add support new target: ST Nucleo-L152RE Official mbed Real Time Operating System based on the RTX implementation of the CMSIS-RTOS API open standard.

Fork of mbed-rtos by mbed official

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers RtosTimer.h Source File

RtosTimer.h

00001 /* mbed Microcontroller Library
00002  * Copyright (c) 2006-2012 ARM Limited
00003  *
00004  * Permission is hereby granted, free of charge, to any person obtaining a copy
00005  * of this software and associated documentation files (the "Software"), to deal
00006  * in the Software without restriction, including without limitation the rights
00007  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00008  * copies of the Software, and to permit persons to whom the Software is
00009  * furnished to do so, subject to the following conditions:
00010  *
00011  * The above copyright notice and this permission notice shall be included in
00012  * all copies or substantial portions of the Software.
00013  *
00014  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00015  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00016  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
00017  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00018  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00019  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
00020  * SOFTWARE.
00021  */
00022 #ifndef RTOS_TIMER_H
00023 #define RTOS_TIMER_H
00024 
00025 #include <stdint.h>
00026 #include "cmsis_os.h"
00027 
00028 namespace rtos {
00029 
00030 /** The RtosTimer class allow creating and and controlling of timer functions in the system.
00031  A timer function is called when a time period expires whereby both on-shot and
00032  periodic timers are possible. A timer can be started, restarted, or stopped.
00033 
00034  Timers are handled in the thread osTimerThread.
00035  Callback functions run under control of this thread and may use CMSIS-RTOS API calls. 
00036 */
00037 class RtosTimer {
00038 public:
00039     /** Create and Start timer.
00040       @param   task      name of the timer call back function.
00041       @param   type      osTimerOnce for one-shot or osTimerPeriodic for periodic behaviour. (default: osTimerPeriodic)
00042       @param   argument  argument to the timer call back function. (default: NULL)
00043     */
00044     RtosTimer(void (*task)(void const *argument),
00045           os_timer_type type=osTimerPeriodic,
00046           void *argument=NULL);
00047     
00048     /** Stop the timer.
00049       @return  status code that indicates the execution status of the function. 
00050     */
00051     osStatus stop(void);
00052     
00053     /** start a timer.
00054       @param   millisec  time delay value of the timer.
00055       @return  status code that indicates the execution status of the function. 
00056     */
00057     osStatus start(uint32_t millisec);
00058     
00059     ~RtosTimer();
00060 
00061 private:
00062     osTimerId _timer_id;
00063     osTimerDef_t _timer;
00064 #ifdef CMSIS_OS_RTX
00065     uint32_t _timer_data[5];
00066 #endif
00067 };
00068 
00069 }
00070 
00071 #endif