Program Listing for File Task.h

Return to documentation for file (components/Task/src/Task.h)

/*
 * Task.h
 *
 *  Created on: Mar 4, 2017
 *      Author: kolban
 */

#ifndef TASK_H_
#define TASK_H_

#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <string>

class Task
{
public:
    Task(std::string task_name = "Task", uint16_t stack_size = 10000, uint8_t priority = 5);

    virtual ~Task();

    void setStackSize(uint16_t stack_size);

    void setPriority(uint8_t priority);

    void setName(std::string name);

    void setCore(BaseType_t core_id);

    void start(void* task_data = nullptr);

    void stop();

    virtual void run(void* data) = 0; // Make run pure virtual

    static void delay(int ms);

private:
    xTaskHandle m_handle;
    void* m_task_data;

    static void runTask(void* task_instance);

    std::string m_task_name;
    uint16_t m_stack_size;
    uint8_t m_priority;
    BaseType_t m_core_id;
};

#endif /* COMPONENTS_CPP_UTILS_TASK_H_ */