Bluetooth: Mesh: Fix clearing HB state when disabling HB sub

The heartbeat subscription Count, MinHops & MaxHops should only be
reset when enabling heartbeat subscription. Any other actions should
keep it unchanged.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
Johan Hedberg 2017-11-02 17:17:31 +02:00 committed by Johan Hedberg
commit 33826b91bd

View file

@ -2851,21 +2851,18 @@ static void heartbeat_sub_set(struct bt_mesh_model *model,
sub_period == 0x00) { sub_period == 0x00) {
cfg->hb_sub.src = BT_MESH_ADDR_UNASSIGNED; cfg->hb_sub.src = BT_MESH_ADDR_UNASSIGNED;
cfg->hb_sub.dst = BT_MESH_ADDR_UNASSIGNED; cfg->hb_sub.dst = BT_MESH_ADDR_UNASSIGNED;
cfg->hb_sub.min_hops = 0;
cfg->hb_sub.max_hops = 0;
period_ms = 0; period_ms = 0;
} else { } else {
cfg->hb_sub.src = sub_src; cfg->hb_sub.src = sub_src;
cfg->hb_sub.dst = sub_dst; cfg->hb_sub.dst = sub_dst;
cfg->hb_sub.min_hops = 0x7f; cfg->hb_sub.min_hops = 0x7f;
cfg->hb_sub.max_hops = 0; cfg->hb_sub.max_hops = 0;
cfg->hb_sub.count = 0;
period_ms = hb_pwr2(sub_period, 1) * 1000; period_ms = hb_pwr2(sub_period, 1) * 1000;
} }
BT_DBG("period_ms %u", period_ms); BT_DBG("period_ms %u", period_ms);
cfg->hb_sub.count = 0;
if (period_ms) { if (period_ms) {
cfg->hb_sub.expiry = k_uptime_get() + period_ms; cfg->hb_sub.expiry = k_uptime_get() + period_ms;
} else { } else {