From 0c6f5bc5293dc7292654f373cbc94c505b069492 Mon Sep 17 00:00:00 2001 From: Glenn Ruben Bakke <glennbakke@gmail.com> Date: Tue, 19 Feb 2019 20:48:50 +0100 Subject: [PATCH] nrf/bluetooth: Improve advertisment behavior for nrf52 targets. This patch makes sure that advertisment data is located in persistent static RAM memory throughout the advertisment. Also, setting m_adv_handle to predifined BLE_GAP_ADV_SET_HANDLE_NOT_SET value to indicate first time usage of the handle. Upon first advertisment configuration this will be populated with a handle value returned by the stack (s132/s140). --- ports/nrf/drivers/bluetooth/ble_drv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/nrf/drivers/bluetooth/ble_drv.c b/ports/nrf/drivers/bluetooth/ble_drv.c index f18a57156..be2f6138e 100644 --- a/ports/nrf/drivers/bluetooth/ble_drv.c +++ b/ports/nrf/drivers/bluetooth/ble_drv.c @@ -109,7 +109,7 @@ static mp_obj_t mp_gattc_char_data_observer; #define BLE_GAP_ADV_MAX_SIZE 31 #define BLE_DRV_CONN_CONFIG_TAG 1 -static uint8_t m_adv_handle; +static uint8_t m_adv_handle = BLE_GAP_ADV_SET_HANDLE_NOT_SET; static uint8_t m_scan_buffer[BLE_GAP_SCAN_BUFFER_MIN]; nrf_nvic_state_t nrf_nvic_state = {0}; @@ -407,7 +407,7 @@ bool ble_drv_advertise_data(ubluepy_advertise_data_t * p_adv_params) { uint8_t byte_pos = 0; - uint8_t adv_data[BLE_GAP_ADV_MAX_SIZE]; + static uint8_t adv_data[BLE_GAP_ADV_MAX_SIZE]; if (p_adv_params->device_name_len > 0) { ble_gap_conn_sec_mode_t sec_mode; -- GitLab