Thread.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "Thread.h"
  2. namespace rtos {
  3. Thread::Thread(void (*task)(void const *argument),
  4. void *argument,
  5. osPriority priority,
  6. uint32_t stacksize) {
  7. // The actual fields of os_thread_def are implementation specific in every CMSIS-RTOS
  8. #ifdef CMSIS_OS_RTX
  9. _thread_def.pthread = task;
  10. _thread_def.tpriority = priority;
  11. _thread_def.instances = 1;
  12. _thread_def.stacksize = stacksize;
  13. #endif
  14. _tid = osThreadCreate(&_thread_def, argument);
  15. }
  16. osStatus Thread::terminate() {
  17. return osThreadTerminate(_tid);
  18. }
  19. osStatus Thread::set_priority(osPriority priority) {
  20. return osThreadSetPriority(_tid, priority);
  21. }
  22. osPriority Thread::get_priority() {
  23. return osThreadGetPriority(_tid);
  24. }
  25. int32_t Thread::signal_set(int32_t signals) {
  26. return osSignalSet(_tid, signals);
  27. }
  28. osEvent Thread::signal_wait(int32_t signals, uint32_t millisec) {
  29. return osSignalWait(signals, millisec);
  30. }
  31. osStatus Thread::wait(uint32_t millisec) {
  32. return osDelay(millisec);
  33. }
  34. osStatus Thread::yield() {
  35. return osThreadYield();
  36. }
  37. osThreadId Thread::gettid() {
  38. return osThreadGetId();
  39. }
  40. }