diff --git a/components/fsl/task.h b/components/fsl/task.h index 99c58e8..671ee38 100644 --- a/components/fsl/task.h +++ b/components/fsl/task.h @@ -17,20 +17,16 @@ namespace fsl { template class Task { public: Task(UBaseType_t priority, void (T::*fp)()) : m_priority(priority), m_fp(fp) {} - void Start(SemaphoreHandle_t doneSem = nullptr, bool waitForInit = false) { - m_handle = xTaskCreateStatic(staticBridge, getName(), sizeof(m_stack)/sizeof(m_stack[0]), + void Start() { + m_handle = xTaskCreateStatic(taskStaticBridge, getName(), sizeof(m_stack)/sizeof(m_stack[0]), this, m_priority, m_stack, &m_tcb); } virtual ~Task() {}; virtual char const * getName() = 0; private: - static void staticBridge(void *taskObj) { - reinterpret_cast*>(taskObj)->taskBridge(); - } - - void taskBridge() { - (static_cast(this)->*m_fp)(); + static void taskStaticBridge(void *_this) { + (static_cast(reinterpret_cast*>(_this))->*(reinterpret_cast*>(_this)->m_fp))(); } TaskHandle_t m_handle;