Skip to content

advertising broken with S140 >= 6.1.0 #2000

Closed
@fanoush

Description

@fanoush

with 6.0.0 it works but with 6.1.0 and up no device is visible. Found the issue and solution described here

https://devzone.nordicsemi.com/f/nordic-q-a/37473/advertising-does-not-start-with-s140-6-1-0-same-hex-run-without-issue-with-s140-6-0-0/145157#145157

without understanding details of espruino advertising data lifecycle, quick fix like this seems to work (= device is visible so I can at least connect to console over bluetooth repeatedly)

diff --git a/targets/nrf5x/bluetooth.c b/targets/nrf5x/bluetooth.c
index b667c0ff..1d9815da 100644
--- a/targets/nrf5x/bluetooth.c
+++ b/targets/nrf5x/bluetooth.c
@@ -2513,7 +2513,7 @@ uint32_t jsble_advertising_start() {
   adv_params.interval = bleAdvertisingInterval;

   uint32_t err_code = 0;
-  uint8_t m_enc_scan_response_data[31]; // BLE_GAP_ADV_SET_DATA_SIZE_MAX
+static  uint8_t m_enc_scan_response_data[31]; // BLE_GAP_ADV_SET_DATA_SIZE_MAX
   uint16_t m_enc_scan_response_data_len = sizeof(m_enc_scan_response_data);
 #if NRF_SD_BLE_API_VERSION<5
   err_code = adv_data_encode(&scanrsp, m_enc_scan_response_data, &m_enc_scan_response_data_len);
@@ -2528,8 +2528,10 @@ uint32_t jsble_advertising_start() {

   //jsiConsolePrintf("adv_data_set %d %d\n", advPtr, advLen);
 #if NRF_SD_BLE_API_VERSION>5
-  ble_gap_adv_data_t d;
-  d.adv_data.p_data = (uint8_t*)advPtr;
+static  ble_gap_adv_data_t d;
+static  uint8_t m_adv_data[BLE_GAP_ADV_SET_DATA_SIZE_MAX];
+memcpy(m_adv_data,advPtr,MIN(advLen,BLE_GAP_ADV_SET_DATA_SIZE_MAX));
+  d.adv_data.p_data = m_adv_data;
   d.adv_data.len = advLen;
   d.scan_rsp_data.p_data = m_enc_scan_response_data;
   d.scan_rsp_data.len = m_enc_scan_response_data_len;

however I guess there is maybe better way? the
JSV_GET_AS_CHAR_ARRAY(advPtr, advLen, advDataVar); could read it into static array directly?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions