Files
firmware/src/mesh/PointerQueue.h

28 lines
657 B
C
Raw Normal View History

#pragma once
#include "TypedQueue.h"
/**
* A wrapper for freertos queues that assumes each element is a pointer
*/
2026-01-03 21:19:24 +01:00
template <class T> class PointerQueue : public TypedQueue<T *> {
public:
explicit PointerQueue(int maxElements) : TypedQueue<T *>(maxElements) {}
2026-01-03 21:19:24 +01:00
// returns a ptr or null if the queue was empty
T *dequeuePtr(TickType_t maxWait = portMAX_DELAY) {
T *p;
2026-01-03 21:19:24 +01:00
return this->dequeue(&p, maxWait) ? p : nullptr;
}
2020-06-16 17:01:50 -07:00
#ifdef HAS_FREE_RTOS
2026-01-03 21:19:24 +01:00
// returns a ptr or null if the queue was empty
T *dequeuePtrFromISR(BaseType_t *higherPriWoken) {
T *p;
2026-01-03 21:19:24 +01:00
return this->dequeueFromISR(&p, higherPriWoken) ? p : nullptr;
}
2020-06-16 17:01:50 -07:00
#endif
};