WrappedSemaphore.cpp 681 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "WrappedSemaphore.h"
  2. /**
  3. * Platform semaphopre implementation for the esp-idf.
  4. */
  5. using namespace bell;
  6. WrappedSemaphore::WrappedSemaphore(int count) {
  7. semaphoreHandle = xSemaphoreCreateCounting(count, 0);
  8. }
  9. WrappedSemaphore::~WrappedSemaphore() {
  10. vSemaphoreDelete(semaphoreHandle);
  11. }
  12. int WrappedSemaphore::wait() {
  13. if (xSemaphoreTake(semaphoreHandle, portMAX_DELAY) == pdTRUE) {
  14. return 0;
  15. }
  16. return 1;
  17. }
  18. int WrappedSemaphore::twait(long milliseconds) {
  19. if (xSemaphoreTake(semaphoreHandle, milliseconds / portTICK_PERIOD_MS) ==
  20. pdTRUE) {
  21. return 0;
  22. }
  23. return 1;
  24. }
  25. void WrappedSemaphore::give() {
  26. xSemaphoreGive(semaphoreHandle);
  27. }