]> granicus.if.org Git - esp-idf/commitdiff
ble_mesh: fix checking for active heartbeat publication
authorlly <lly@espressif.com>
Mon, 2 Sep 2019 07:09:48 +0000 (15:09 +0800)
committerlly <lly@espressif.com>
Mon, 9 Sep 2019 09:15:16 +0000 (17:15 +0800)
components/bt/esp_ble_mesh/mesh_core/cfg_srv.c
components/bt/esp_ble_mesh/mesh_core/transport.c

index 9e1db8517ee7fdfb6ebff20441c76111cdce8fbf..82e09890062e5871b31ca747f3a0b7072e462278 100644 (file)
@@ -787,7 +787,6 @@ static void gatt_proxy_set(struct bt_mesh_model *model,
                            struct net_buf_simple *buf)
 {
     struct bt_mesh_cfg_srv *cfg = model->user_data;
-    struct bt_mesh_subnet *sub;
 
     BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s",
            ctx->net_idx, ctx->app_idx, ctx->addr, buf->len,
@@ -846,8 +845,7 @@ static void gatt_proxy_set(struct bt_mesh_model *model,
     bt_mesh_adv_update();
 #endif
 
-    sub = bt_mesh_subnet_get(cfg->hb_pub.net_idx);
-    if ((cfg->hb_pub.feat & BLE_MESH_FEAT_PROXY) && sub) {
+    if (cfg->hb_pub.feat & BLE_MESH_FEAT_PROXY) {
         bt_mesh_heartbeat_send();
     }
 
@@ -943,7 +941,6 @@ static void relay_set(struct bt_mesh_model *model,
     if (!cfg) {
         BT_WARN("No Configuration Server context available");
     } else if (buf->data[0] == 0x00 || buf->data[0] == 0x01) {
-        struct bt_mesh_subnet *sub;
         bool change;
 
         if (cfg->relay == BLE_MESH_RELAY_NOT_SUPPORTED) {
@@ -964,8 +961,7 @@ static void relay_set(struct bt_mesh_model *model,
                BLE_MESH_TRANSMIT_COUNT(cfg->relay_retransmit),
                BLE_MESH_TRANSMIT_INT(cfg->relay_retransmit));
 
-        sub = bt_mesh_subnet_get(cfg->hb_pub.net_idx);
-        if ((cfg->hb_pub.feat & BLE_MESH_FEAT_RELAY) && sub && change) {
+        if ((cfg->hb_pub.feat & BLE_MESH_FEAT_RELAY) && change) {
             bt_mesh_heartbeat_send();
         }
     } else {
@@ -2682,7 +2678,6 @@ static void friend_set(struct bt_mesh_model *model,
                        struct net_buf_simple *buf)
 {
     struct bt_mesh_cfg_srv *cfg = model->user_data;
-    struct bt_mesh_subnet *sub;
 
     BT_DBG("net_idx 0x%04x app_idx 0x%04x src 0x%04x len %u: %s",
            ctx->net_idx, ctx->app_idx, ctx->addr, buf->len,
@@ -2716,8 +2711,7 @@ static void friend_set(struct bt_mesh_model *model,
         }
     }
 
-    sub = bt_mesh_subnet_get(cfg->hb_pub.net_idx);
-    if ((cfg->hb_pub.feat & BLE_MESH_FEAT_FRIEND) && sub) {
+    if (cfg->hb_pub.feat & BLE_MESH_FEAT_FRIEND) {
         bt_mesh_heartbeat_send();
     }
 
index 552bc653fd04ccd9d3d820eefbc9490c8e9e672c..ed244ccb8fa0e04594a46cf6c111d377261cd534 100644 (file)
@@ -1614,6 +1614,11 @@ void bt_mesh_heartbeat_send(void)
         .xmit = bt_mesh_net_transmit_get(),
     };
 
+    /* Do nothing if heartbeat publication is not enabled */
+    if (cfg->hb_pub.dst == BLE_MESH_ADDR_UNASSIGNED) {
+        return;
+    }
+
     hb.init_ttl = cfg->hb_pub.ttl;
 
     if (bt_mesh_relay_get() == BLE_MESH_RELAY_ENABLED) {