WrappedSemaphore.h 659 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #ifndef WRAPPEDSEMAPHORE_H
  2. #define WRAPPEDSEMAPHORE_H
  3. #ifdef ESP_PLATFORM
  4. #include "freertos/FreeRTOS.h"
  5. #include "freertos/semphr.h"
  6. #elif __APPLE__
  7. #include <dispatch/dispatch.h>
  8. #elif _WIN32
  9. #include <winsock2.h>
  10. #else
  11. #include <time.h>
  12. #include <semaphore.h>
  13. #endif
  14. class WrappedSemaphore
  15. {
  16. private:
  17. #ifdef ESP_PLATFORM
  18. xSemaphoreHandle semaphoreHandle;
  19. #elif __APPLE__
  20. dispatch_semaphore_t semaphoreHandle;
  21. #elif _WIN32
  22. HANDLE semaphoreHandle;
  23. #else
  24. sem_t semaphoreHandle;
  25. #endif
  26. public:
  27. WrappedSemaphore(int maxVal = 200);
  28. ~WrappedSemaphore();
  29. int wait();
  30. int twait(long milliseconds = 10);
  31. void give();
  32. };
  33. #endif