From c018ea08481d33bcc8daf7864da2b0e6586f8754 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 15 Jan 2024 13:31:51 +0900 Subject: [PATCH] Fail if memory not allocated --- .../components/esp_adf/speaker/esp_adf_speaker.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/esphome/components/esp_adf/speaker/esp_adf_speaker.cpp b/esphome/components/esp_adf/speaker/esp_adf_speaker.cpp index ca616a21a6..eb65861530 100644 --- a/esphome/components/esp_adf/speaker/esp_adf_speaker.cpp +++ b/esphome/components/esp_adf/speaker/esp_adf_speaker.cpp @@ -24,7 +24,17 @@ void ESPADFSpeaker::setup() { ESP_LOGCONFIG(TAG, "Setting up ESP ADF Speaker..."); this->buffer_queue_ = xQueueCreate(BUFFER_COUNT, sizeof(DataEvent)); + if (this->buffer_queue_ == nullptr) { + ESP_LOGW(TAG, "Could not allocate buffer queue."); + this->mark_failed(); + return; + } this->event_queue_ = xQueueCreate(20, sizeof(TaskEvent)); + if (this->event_queue_ == nullptr) { + ESP_LOGW(TAG, "Could not allocate event queue."); + this->mark_failed(); + return; + } } void ESPADFSpeaker::start() { this->state_ = speaker::STATE_STARTING; } @@ -246,6 +256,10 @@ void ESPADFSpeaker::loop() { } size_t ESPADFSpeaker::play(const uint8_t *data, size_t length) { + if (this->is_failed()) { + ESP_LOGE(TAG, "Failed to play audio, speaker is in failed state."); + return 0; + } if (this->state_ != speaker::STATE_RUNNING && this->state_ != speaker::STATE_STARTING) { this->start(); }