a

Dependencies:   mbed mbed-rtos

Committer:
alexpirciu
Date:
Thu Mar 28 07:44:42 2019 +0000
Revision:
1:ceee5a608e7c
assa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alexpirciu 1:ceee5a608e7c 1 /**
alexpirciu 1:ceee5a608e7c 2 ******************************************************************************
alexpirciu 1:ceee5a608e7c 3 * @file TaskManager.cpp
alexpirciu 1:ceee5a608e7c 4 * @author RBRO/PJ-IU
alexpirciu 1:ceee5a608e7c 5 * @version V1.0.0
alexpirciu 1:ceee5a608e7c 6 * @date day-month-2017
alexpirciu 1:ceee5a608e7c 7 * @brief This file contains the class definition for task manager.
alexpirciu 1:ceee5a608e7c 8 ******************************************************************************
alexpirciu 1:ceee5a608e7c 9 */
alexpirciu 1:ceee5a608e7c 10
alexpirciu 1:ceee5a608e7c 11 #include <TaskManager/taskmanager.hpp>
alexpirciu 1:ceee5a608e7c 12
alexpirciu 1:ceee5a608e7c 13 namespace task{
alexpirciu 1:ceee5a608e7c 14
alexpirciu 1:ceee5a608e7c 15 /******************************************************************************/
alexpirciu 1:ceee5a608e7c 16 /** \brief CTask class constructor
alexpirciu 1:ceee5a608e7c 17 *
alexpirciu 1:ceee5a608e7c 18 * Constructor method
alexpirciu 1:ceee5a608e7c 19 *
alexpirciu 1:ceee5a608e7c 20 * @param f_period execution period
alexpirciu 1:ceee5a608e7c 21 */
alexpirciu 1:ceee5a608e7c 22 CTask::CTask(uint32_t f_period)
alexpirciu 1:ceee5a608e7c 23 : m_period(f_period)
alexpirciu 1:ceee5a608e7c 24 , m_ticks(0)
alexpirciu 1:ceee5a608e7c 25 , m_triggered(false)
alexpirciu 1:ceee5a608e7c 26 {
alexpirciu 1:ceee5a608e7c 27 }
alexpirciu 1:ceee5a608e7c 28
alexpirciu 1:ceee5a608e7c 29 /** \brief CTask class destructor
alexpirciu 1:ceee5a608e7c 30 *
alexpirciu 1:ceee5a608e7c 31 * Destructor method
alexpirciu 1:ceee5a608e7c 32 *
alexpirciu 1:ceee5a608e7c 33 *
alexpirciu 1:ceee5a608e7c 34 */
alexpirciu 1:ceee5a608e7c 35 CTask::~CTask()
alexpirciu 1:ceee5a608e7c 36 {
alexpirciu 1:ceee5a608e7c 37 }
alexpirciu 1:ceee5a608e7c 38
alexpirciu 1:ceee5a608e7c 39 /** \brief Run method
alexpirciu 1:ceee5a608e7c 40 *
alexpirciu 1:ceee5a608e7c 41 * Destructor method
alexpirciu 1:ceee5a608e7c 42 *
alexpirciu 1:ceee5a608e7c 43 *
alexpirciu 1:ceee5a608e7c 44 *
alexpirciu 1:ceee5a608e7c 45 */
alexpirciu 1:ceee5a608e7c 46 void CTask::run()
alexpirciu 1:ceee5a608e7c 47 {
alexpirciu 1:ceee5a608e7c 48 if (m_triggered)
alexpirciu 1:ceee5a608e7c 49 {
alexpirciu 1:ceee5a608e7c 50 m_triggered = false;
alexpirciu 1:ceee5a608e7c 51 _run();
alexpirciu 1:ceee5a608e7c 52 }
alexpirciu 1:ceee5a608e7c 53 }
alexpirciu 1:ceee5a608e7c 54
alexpirciu 1:ceee5a608e7c 55 /******************************************************************************/
alexpirciu 1:ceee5a608e7c 56 /** \brief CTaskManager class constructor
alexpirciu 1:ceee5a608e7c 57 *
alexpirciu 1:ceee5a608e7c 58 * Constructor method
alexpirciu 1:ceee5a608e7c 59 *
alexpirciu 1:ceee5a608e7c 60 * @param f_taskList task list
alexpirciu 1:ceee5a608e7c 61 * @param f_taskCount task count
alexpirciu 1:ceee5a608e7c 62 * @param f_baseFreq base frequency
alexpirciu 1:ceee5a608e7c 63 */
alexpirciu 1:ceee5a608e7c 64 CTaskManager::CTaskManager(task::CTask** f_taskList, uint32_t f_taskCount, float f_baseFreq)
alexpirciu 1:ceee5a608e7c 65 : m_taskList(f_taskList)
alexpirciu 1:ceee5a608e7c 66 , m_taskCount(f_taskCount)
alexpirciu 1:ceee5a608e7c 67 {
alexpirciu 1:ceee5a608e7c 68 m_ticker.attach(mbed::callback(&task::CTaskManager::callback, this), f_baseFreq);
alexpirciu 1:ceee5a608e7c 69 }
alexpirciu 1:ceee5a608e7c 70
alexpirciu 1:ceee5a608e7c 71 /** \brief CTaskManager class destructor
alexpirciu 1:ceee5a608e7c 72 *
alexpirciu 1:ceee5a608e7c 73 * Destructor method
alexpirciu 1:ceee5a608e7c 74 *
alexpirciu 1:ceee5a608e7c 75 *
alexpirciu 1:ceee5a608e7c 76 */
alexpirciu 1:ceee5a608e7c 77 CTaskManager::~CTaskManager()
alexpirciu 1:ceee5a608e7c 78 {
alexpirciu 1:ceee5a608e7c 79 m_ticker.detach();
alexpirciu 1:ceee5a608e7c 80 }
alexpirciu 1:ceee5a608e7c 81
alexpirciu 1:ceee5a608e7c 82 /** \brief Callback method
alexpirciu 1:ceee5a608e7c 83 *
alexpirciu 1:ceee5a608e7c 84 * @param thisPointer The object pointer
alexpirciu 1:ceee5a608e7c 85 */
alexpirciu 1:ceee5a608e7c 86 void CTaskManager::callback(void *thisPointer)
alexpirciu 1:ceee5a608e7c 87 {
alexpirciu 1:ceee5a608e7c 88 task::CTaskManager* self = static_cast<task::CTaskManager*>(thisPointer);
alexpirciu 1:ceee5a608e7c 89 self->timerCallback();
alexpirciu 1:ceee5a608e7c 90 }
alexpirciu 1:ceee5a608e7c 91
alexpirciu 1:ceee5a608e7c 92 }; // namespace task