Restore nullptr checks for xQueueCreate failure

This commit is contained in:
J. Nick Koston
2026-03-31 20:48:33 -10:00
parent 586e37c864
commit 4f33faf89d
+19 -4
View File
@@ -29,7 +29,7 @@ template<class T, uint8_t SIZE> class FreeRTOSQueue {
FreeRTOSQueue() : dropped_count_(0) { this->handle_ = xQueueCreate(SIZE, sizeof(T *)); }
bool push(T *element) {
if (element == nullptr)
if (element == nullptr || this->handle_ == nullptr)
return false;
if (xQueueSend(this->handle_, &element, 0) != pdPASS) {
@@ -40,6 +40,9 @@ template<class T, uint8_t SIZE> class FreeRTOSQueue {
}
T *pop() {
if (this->handle_ == nullptr)
return nullptr;
T *element;
if (xQueueReceive(this->handle_, &element, 0) != pdTRUE) {
return nullptr;
@@ -57,11 +60,23 @@ template<class T, uint8_t SIZE> class FreeRTOSQueue {
void increment_dropped_count() { this->dropped_count_++; }
bool empty() const { return uxQueueMessagesWaiting(this->handle_) == 0; }
bool empty() const {
if (this->handle_ == nullptr)
return true;
return uxQueueMessagesWaiting(this->handle_) == 0;
}
bool full() const { return uxQueueSpacesAvailable(this->handle_) == 0; }
bool full() const {
if (this->handle_ == nullptr)
return true;
return uxQueueSpacesAvailable(this->handle_) == 0;
}
size_t size() const { return uxQueueMessagesWaiting(this->handle_); }
size_t size() const {
if (this->handle_ == nullptr)
return 0;
return uxQueueMessagesWaiting(this->handle_);
}
protected:
QueueHandle_t handle_;