Ver Fonte

Merge branch 'bugfix/ble_mesh_node_id_adv_v4.0' into 'release/v4.0'

ble_mesh: stack: Fix Node ID adv with wrong timeout (v4.0)

See merge request espressif/esp-idf!11879
Island há 5 anos atrás
pai
commit
b4261e53d9
1 ficheiros alterados com 7 adições e 2 exclusões
  1. 7 2
      components/bt/esp_ble_mesh/mesh_core/adv.c

+ 7 - 2
components/bt/esp_ble_mesh/mesh_core/adv.c

@@ -239,6 +239,11 @@ static inline int adv_send(struct net_buf *buf)
     return 0;
     return 0;
 }
 }
 
 
+static inline TickType_t K_WAIT(int32_t val)
+{
+    return (val == K_FOREVER) ? portMAX_DELAY : (val / portTICK_PERIOD_MS);
+}
+
 static void adv_thread(void *p)
 static void adv_thread(void *p)
 {
 {
 #if defined(CONFIG_BLE_MESH_RELAY_ADV_BUF)
 #if defined(CONFIG_BLE_MESH_RELAY_ADV_BUF)
@@ -262,7 +267,7 @@ static void adv_thread(void *p)
             BT_DBG("Mesh Proxy Advertising start");
             BT_DBG("Mesh Proxy Advertising start");
             timeout = bt_mesh_proxy_server_adv_start();
             timeout = bt_mesh_proxy_server_adv_start();
             BT_DBG("Mesh Proxy Advertising up to %d ms", timeout);
             BT_DBG("Mesh Proxy Advertising up to %d ms", timeout);
-            xQueueReceive(adv_queue.handle, &msg, timeout);
+            xQueueReceive(adv_queue.handle, &msg, K_WAIT(timeout));
             BT_DBG("Mesh Proxy Advertising stop");
             BT_DBG("Mesh Proxy Advertising stop");
             bt_mesh_proxy_server_adv_stop();
             bt_mesh_proxy_server_adv_stop();
         }
         }
@@ -285,7 +290,7 @@ static void adv_thread(void *p)
                 BT_DBG("Mesh Proxy Advertising start");
                 BT_DBG("Mesh Proxy Advertising start");
                 timeout = bt_mesh_proxy_server_adv_start();
                 timeout = bt_mesh_proxy_server_adv_start();
                 BT_DBG("Mesh Proxy Advertising up to %d ms", timeout);
                 BT_DBG("Mesh Proxy Advertising up to %d ms", timeout);
-                handle = xQueueSelectFromSet(mesh_queue_set, timeout);
+                handle = xQueueSelectFromSet(mesh_queue_set, K_WAIT(timeout));
                 BT_DBG("Mesh Proxy Advertising stop");
                 BT_DBG("Mesh Proxy Advertising stop");
                 bt_mesh_proxy_server_adv_stop();
                 bt_mesh_proxy_server_adv_stop();
                 if (handle) {
                 if (handle) {