Fixes reading BLE Remote Descriptor (#6903)
This commit is contained in:
parent
9ab81837a2
commit
e1b56fca0a
1 changed files with 19 additions and 2 deletions
|
|
@ -51,9 +51,26 @@ BLEUUID BLERemoteDescriptor::getUUID() {
|
||||||
|
|
||||||
void BLERemoteDescriptor::gattClientEventHandler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t* evtParam) {
|
void BLERemoteDescriptor::gattClientEventHandler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t* evtParam) {
|
||||||
switch(event) {
|
switch(event) {
|
||||||
|
// ESP_GATTC_READ_DESCR_EVT
|
||||||
|
// This event indicates that the server has responded to the read request.
|
||||||
|
//
|
||||||
|
// read:
|
||||||
|
// - esp_gatt_status_t status
|
||||||
|
// - uint16_t conn_id
|
||||||
|
// - uint16_t handle
|
||||||
|
// - uint8_t* value
|
||||||
|
// - uint16_t value_len
|
||||||
case ESP_GATTC_READ_DESCR_EVT:
|
case ESP_GATTC_READ_DESCR_EVT:
|
||||||
if (evtParam->read.handle != getHandle())
|
// If this event is not for us, then nothing further to do.
|
||||||
break;
|
if (evtParam->read.handle != getHandle()) break;
|
||||||
|
// At this point, we have determined that the event is for us, so now we save the value
|
||||||
|
if (evtParam->read.status == ESP_GATT_OK) {
|
||||||
|
// it will read the cached value of the descriptor
|
||||||
|
m_value = std::string((char*) evtParam->read.value, evtParam->read.value_len);
|
||||||
|
} else {
|
||||||
|
m_value = "";
|
||||||
|
}
|
||||||
|
// Unlock the semaphore to ensure that the requestor of the data can continue.
|
||||||
m_semaphoreReadDescrEvt.give();
|
m_semaphoreReadDescrEvt.give();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue