From 5d3eb6542ca1651e74ccdc7e1bdd4d85383ae783 Mon Sep 17 00:00:00 2001 From: Stijn Eijndhoven Date: Thu, 12 Mar 2026 12:46:49 +0100 Subject: [PATCH 1/3] Use designated initializer for NimBLEScan::m_scanParams and guard disable_observer_mode field for ESP-IDF >= 5.4.2 The NimBLEScan constructor previously used positional struct initialization, which no longer matches the ble_gap_disc_params layout in newer ESP-IDF versions (>= 5.4.2) where the field `disable_observer_mode` was added. This is caused by -Wmissing-field-initializers. Switch to designated initializers to make the field assignments explicit and more robust across ESP-IDF/NimBLE revisions. The new field is only initialized when building against ESP-IDF 5.4.2 or later to maintain backwards compatibility. --- src/NimBLEScan.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/NimBLEScan.cpp b/src/NimBLEScan.cpp index f037823d..dd3fc667 100644 --- a/src/NimBLEScan.cpp +++ b/src/NimBLEScan.cpp @@ -32,10 +32,20 @@ static NimBLEScanCallbacks defaultScanCallbacks; */ NimBLEScan::NimBLEScan() : m_pScanCallbacks{&defaultScanCallbacks}, - // default interval + window, no whitelist scan filter,not limited scan, no scan response, filter_duplicates - m_scanParams{0, 0, BLE_HCI_SCAN_FILT_NO_WL, 0, 1, 1}, + m_scanParams{ + .itvl = 0, // default interval + .window = 0, // default window + .filter_policy = BLE_HCI_SCAN_FILT_NO_WL, // no whitelist scan filter + .limited = 0, // no limited scan + .passive = 1, // no scan response + .filter_duplicates = 1, // filter duplicates +# if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 2) + .disable_observer_mode = 0, // observer role enabled +# endif + }, m_pTaskData{nullptr}, - m_maxResults{0xFF} {} + m_maxResults{0xFF} { +} /** * @brief Scan destructor, release any allocated resources. From 1606fb5ce4f6ae0d2939a52fec4cdf37de273df5 Mon Sep 17 00:00:00 2001 From: Stijn Eijndhoven Date: Fri, 13 Mar 2026 22:07:37 +0100 Subject: [PATCH 2/3] Conditionally guard disable_observer_mode behind ESP_PLATFORM and CONFIG_USING_NIMBLE_COMPONENT --- src/NimBLEScan.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/NimBLEScan.cpp b/src/NimBLEScan.cpp index dd3fc667..8b92a62e 100644 --- a/src/NimBLEScan.cpp +++ b/src/NimBLEScan.cpp @@ -39,8 +39,10 @@ NimBLEScan::NimBLEScan() .limited = 0, // no limited scan .passive = 1, // no scan response .filter_duplicates = 1, // filter duplicates -# if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 2) - .disable_observer_mode = 0, // observer role enabled +# if defined(ESP_PLATFORM) && !defined(CONFIG_USING_NIMBLE_COMPONENT) +# if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 2) + .disable_observer_mode = 0, +# endif # endif }, m_pTaskData{nullptr}, From d52951ef8d9ee4449a87217c9fdf8b6c8ee2be6c Mon Sep 17 00:00:00 2001 From: Stijn Eijndhoven Date: Fri, 13 Mar 2026 22:19:15 +0100 Subject: [PATCH 3/3] Restore comment for disable_observer_mode field --- src/NimBLEScan.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NimBLEScan.cpp b/src/NimBLEScan.cpp index 8b92a62e..cacb6b60 100644 --- a/src/NimBLEScan.cpp +++ b/src/NimBLEScan.cpp @@ -41,7 +41,7 @@ NimBLEScan::NimBLEScan() .filter_duplicates = 1, // filter duplicates # if defined(ESP_PLATFORM) && !defined(CONFIG_USING_NIMBLE_COMPONENT) # if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(5, 4, 2) - .disable_observer_mode = 0, + .disable_observer_mode = 0, // observer role enabled # endif # endif },