You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

48 lines
975 B

#pragma once
#include "osbasic_h.hpp"
namespace iflytop {
typedef function<void()> zosthread_cb_t;
class ZThread {
public:
typedef enum {
kidle,
kworking,
kdead,
} status_t;
const char* m_name;
size_t m_stacksize;
osPriority m_uxPriority;
status_t m_status = kidle;
#if 0
bool m_threadisworkingFlag = false;
bool m_threadisWaitingForStopFlag = false;
#endif
bool m_threadisworkingFlagCallSide = false;
zosthread_cb_t m_taskfunction;
EventGroupHandle_t m_zthreadstartworkevent;
osThreadId m_defaultTaskHandle;
SemaphoreHandle_t m_lock;
public:
void init(const char* threadname, int stack_size = 1024, osPriority priority = osPriorityNormal);
void start(zosthread_cb_t cb);
void stop();
bool getExitFlag() { return !m_threadisworkingFlagCallSide; }
bool isworking() { return m_status == kworking; }
void sleep(uint32_t ms);
void wake();
public:
void threadcb();
};
} // namespace iflytop