From e57de64a3cccfd6097046e925b070146e87323be Mon Sep 17 00:00:00 2001 From: HanCheol Cho Date: Wed, 5 Jun 2019 20:37:06 +0900 Subject: [PATCH] Fixed multi_heap_free failed during setting the value of the characteristic in BLE Library. (#2789) --- libraries/BLE/src/BLECharacteristic.cpp | 2 ++ libraries/BLE/src/BLECharacteristic.h | 1 + 2 files changed, 3 insertions(+) diff --git a/libraries/BLE/src/BLECharacteristic.cpp b/libraries/BLE/src/BLECharacteristic.cpp index 95966cc7..9b75f5b5 100644 --- a/libraries/BLE/src/BLECharacteristic.cpp +++ b/libraries/BLE/src/BLECharacteristic.cpp @@ -628,7 +628,9 @@ void BLECharacteristic::setValue(uint8_t* data, size_t length) { log_e("Size %d too large, must be no bigger than %d", length, ESP_GATT_MAX_ATTR_LEN); return; } + m_semaphoreSetValue.take(); m_value.setValue(data, length); + m_semaphoreSetValue.give(); log_v("<< setValue"); } // setValue diff --git a/libraries/BLE/src/BLECharacteristic.h b/libraries/BLE/src/BLECharacteristic.h index 5eb1e8d6..dd65cc4b 100644 --- a/libraries/BLE/src/BLECharacteristic.h +++ b/libraries/BLE/src/BLECharacteristic.h @@ -117,6 +117,7 @@ private: void setHandle(uint16_t handle); FreeRTOS::Semaphore m_semaphoreCreateEvt = FreeRTOS::Semaphore("CreateEvt"); FreeRTOS::Semaphore m_semaphoreConfEvt = FreeRTOS::Semaphore("ConfEvt"); + FreeRTOS::Semaphore m_semaphoreSetValue = FreeRTOS::Semaphore("SetValue"); }; // BLECharacteristic