From 9f80c24b74641ec640411e7dfe8e0ce462a6a050 Mon Sep 17 00:00:00 2001 From: lly Date: Mon, 2 Sep 2019 15:09:48 +0800 Subject: [PATCH] ble_mesh: fix checking for active heartbeat publication --- components/bt/esp_ble_mesh/mesh_core/cfg_srv.c | 12 +++--------- components/bt/esp_ble_mesh/mesh_core/transport.c | 5 +++++ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/components/bt/esp_ble_mesh/mesh_core/cfg_srv.c b/components/bt/esp_ble_mesh/mesh_core/cfg_srv.c index 9e1db8517e..82e0989006 100644 --- a/components/bt/esp_ble_mesh/mesh_core/cfg_srv.c +++ b/components/bt/esp_ble_mesh/mesh_core/cfg_srv.c @@ -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(); } diff --git a/components/bt/esp_ble_mesh/mesh_core/transport.c b/components/bt/esp_ble_mesh/mesh_core/transport.c index 552bc653fd..ed244ccb8f 100644 --- a/components/bt/esp_ble_mesh/mesh_core/transport.c +++ b/components/bt/esp_ble_mesh/mesh_core/transport.c @@ -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) { -- 2.40.0