a

Dependencies:   mbed mbed-rtos

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers taskmanager.cpp Source File

taskmanager.cpp

00001 /**
00002   ******************************************************************************
00003   * @file    TaskManager.cpp
00004   * @author  RBRO/PJ-IU
00005   * @version V1.0.0
00006   * @date    day-month-2017
00007   * @brief   This file contains the class definition for task manager.
00008   ******************************************************************************
00009  */
00010 
00011 #include <TaskManager/taskmanager.hpp>
00012 
00013 namespace task{
00014 
00015     /******************************************************************************/
00016     /** \brief  CTask class constructor
00017      *
00018      *  Constructor method
00019      *
00020      *  @param f_period      execution period
00021      */
00022     CTask::CTask(uint32_t f_period) 
00023         : m_period(f_period)
00024         , m_ticks(0)
00025         , m_triggered(false) 
00026     {
00027     }
00028 
00029     /** \brief  CTask class destructor
00030      *
00031      *  Destructor method
00032      *
00033      *  
00034      */
00035     CTask::~CTask() 
00036     {
00037     }
00038 
00039     /** \brief  Run method
00040      *
00041      *  Destructor method
00042      *
00043      *  
00044      *  
00045      */
00046     void CTask::run()
00047     {
00048         if (m_triggered)
00049         {
00050             m_triggered = false;
00051             _run();
00052         }
00053     }
00054 
00055     /******************************************************************************/
00056     /** \brief  CTaskManager class constructor
00057      *
00058      *  Constructor method
00059      *
00060      *  @param f_taskList      task list
00061      *  @param f_taskCount     task count
00062      *  @param f_baseFreq      base frequency
00063      */
00064     CTaskManager::CTaskManager(task::CTask** f_taskList, uint32_t f_taskCount, float f_baseFreq)
00065         : m_taskList(f_taskList)
00066         , m_taskCount(f_taskCount) 
00067     {
00068         m_ticker.attach(mbed::callback(&task::CTaskManager::callback, this), f_baseFreq);
00069     }
00070 
00071     /** \brief  CTaskManager class destructor
00072      *
00073      *  Destructor method
00074      *
00075      *  
00076      */
00077     CTaskManager::~CTaskManager() 
00078     {
00079         m_ticker.detach();
00080     }
00081 
00082     /** \brief  Callback method
00083      *
00084      *  @param thisPointer       The object pointer
00085      */
00086     void CTaskManager::callback(void *thisPointer)
00087     {
00088         task::CTaskManager* self = static_cast<task::CTaskManager*>(thisPointer);
00089         self->timerCallback(); 
00090     }
00091 
00092 }; // namespace task