From 860b15c6906f9c6d5b8df09a1927840ba2e8fb3a Mon Sep 17 00:00:00 2001 From: Caylan Larson Date: Mon, 15 Jan 2018 14:40:11 -0600 Subject: [PATCH] Fix modbt scan response adv data length MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Although advertising packets are limited to 31 bytes, certain advertising peripherals allow for an additional “scan response” of more data. The ble_adv data bytes should use dynamic sizing via sizeof instead of static ESP_BLE_ADV_DATA_LEN_MAX. More information is documented at a nearly identical issue: https://github.com/espressif/esp-idf/issues/369 --- esp32/mods/modbt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/esp32/mods/modbt.c b/esp32/mods/modbt.c index 84674f7837..ab5d358249 100644 --- a/esp32/mods/modbt.c +++ b/esp32/mods/modbt.c @@ -787,7 +787,7 @@ STATIC mp_obj_t bt_read_scan(mp_obj_t self_in) { tuple[1] = mp_obj_new_int(bt_event.scan.scan_rst.ble_addr_type); tuple[2] = mp_obj_new_int(bt_event.scan.scan_rst.ble_evt_type & 0x03); // FIXME tuple[3] = mp_obj_new_int(bt_event.scan.scan_rst.rssi); - tuple[4] = mp_obj_new_bytes((const byte *)bt_event.scan.scan_rst.ble_adv, ESP_BLE_ADV_DATA_LEN_MAX); + tuple[4] = mp_obj_new_bytes((const byte *)bt_event.scan.scan_rst.ble_adv, sizeof(bt_event.scan.scan_rst.ble_adv)); return mp_obj_new_attrtuple(bt_scan_info_fields, 5, tuple); } @@ -809,7 +809,7 @@ STATIC mp_obj_t bt_get_advertisements(mp_obj_t self_in) { tuple[1] = mp_obj_new_int(bt_event.scan.scan_rst.ble_addr_type); tuple[2] = mp_obj_new_int(bt_event.scan.scan_rst.ble_evt_type & 0x03); // FIXME tuple[3] = mp_obj_new_int(bt_event.scan.scan_rst.rssi); - tuple[4] = mp_obj_new_bytes((const byte *)bt_event.scan.scan_rst.ble_adv, ESP_BLE_ADV_DATA_LEN_MAX); + tuple[4] = mp_obj_new_bytes((const byte *)bt_event.scan.scan_rst.ble_adv, sizeof(bt_event.scan.scan_rst.ble_adv)); mp_obj_list_append(advs, mp_obj_new_attrtuple(bt_scan_info_fields, 5, tuple)); }