From 8f37572a30fadea1f47b3a859830610c5c25cf58 Mon Sep 17 00:00:00 2001 From: Jakob Krantz Date: Wed, 20 Dec 2017 11:32:08 +0100 Subject: [PATCH] Adds missing emit of GATT_EVENT_MTU when the MTU has changed. --- src/ble/gatt_client.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/ble/gatt_client.c b/src/ble/gatt_client.c index 5ca177345..095e6c569 100644 --- a/src/ble/gatt_client.c +++ b/src/ble/gatt_client.c @@ -551,8 +551,17 @@ static void emit_gatt_all_characteristic_descriptors_result_event( reverse_128(uuid128, &packet[6]); emit_event_new(peripheral->callback, packet, sizeof(packet)); } -/// +static void emit_gatt_mtu_exchanged_result_event(gatt_client_t * peripheral, uint16_t new_mtu){ + // @format H2 + uint8_t packet[6]; + packet[0] = GATT_EVENT_MTU; + packet[1] = sizeof(packet) - 2; + little_endian_store_16(packet, 2, peripheral->con_handle); + little_endian_store_16(packet, 4, new_mtu); + emit_event_new(peripheral->callback, packet, sizeof(packet)); +} +/// static void report_gatt_services(gatt_client_t * peripheral, uint8_t * packet, uint16_t size){ uint8_t attr_length = packet[1]; uint8_t uuid_length = attr_length - 4; @@ -1068,7 +1077,7 @@ static void gatt_client_att_packet_handler(uint8_t packet_type, uint16_t handle, uint16_t local_rx_mtu = l2cap_max_le_mtu(); peripheral->mtu = remote_rx_mtu < local_rx_mtu ? remote_rx_mtu : local_rx_mtu; peripheral->mtu_state = MTU_EXCHANGED; - + emit_gatt_mtu_exchanged_result_event(peripheral, peripheral->mtu); break; } case ATT_READ_BY_GROUP_TYPE_RESPONSE: