Skip to content

Commit 860b15c

Browse files
committed
Fix modbt scan response adv data length
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: espressif/esp-idf#369
1 parent 96a2f3a commit 860b15c

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

esp32/mods/modbt.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -787,7 +787,7 @@ STATIC mp_obj_t bt_read_scan(mp_obj_t self_in) {
787787
tuple[1] = mp_obj_new_int(bt_event.scan.scan_rst.ble_addr_type);
788788
tuple[2] = mp_obj_new_int(bt_event.scan.scan_rst.ble_evt_type & 0x03); // FIXME
789789
tuple[3] = mp_obj_new_int(bt_event.scan.scan_rst.rssi);
790-
tuple[4] = mp_obj_new_bytes((const byte *)bt_event.scan.scan_rst.ble_adv, ESP_BLE_ADV_DATA_LEN_MAX);
790+
tuple[4] = mp_obj_new_bytes((const byte *)bt_event.scan.scan_rst.ble_adv, sizeof(bt_event.scan.scan_rst.ble_adv));
791791

792792
return mp_obj_new_attrtuple(bt_scan_info_fields, 5, tuple);
793793
}
@@ -809,7 +809,7 @@ STATIC mp_obj_t bt_get_advertisements(mp_obj_t self_in) {
809809
tuple[1] = mp_obj_new_int(bt_event.scan.scan_rst.ble_addr_type);
810810
tuple[2] = mp_obj_new_int(bt_event.scan.scan_rst.ble_evt_type & 0x03); // FIXME
811811
tuple[3] = mp_obj_new_int(bt_event.scan.scan_rst.rssi);
812-
tuple[4] = mp_obj_new_bytes((const byte *)bt_event.scan.scan_rst.ble_adv, ESP_BLE_ADV_DATA_LEN_MAX);
812+
tuple[4] = mp_obj_new_bytes((const byte *)bt_event.scan.scan_rst.ble_adv, sizeof(bt_event.scan.scan_rst.ble_adv));
813813

814814
mp_obj_list_append(advs, mp_obj_new_attrtuple(bt_scan_info_fields, 5, tuple));
815815
}

0 commit comments

Comments
 (0)