summaryrefslogtreecommitdiff
path: root/mesh
diff options
context:
space:
mode:
Diffstat (limited to 'mesh')
-rw-r--r--mesh/cfgmod-server.c2
-rw-r--r--mesh/net.c20
2 files changed, 5 insertions, 17 deletions
diff --git a/mesh/cfgmod-server.c b/mesh/cfgmod-server.c
index 9c5edf551..55a2d896b 100644
--- a/mesh/cfgmod-server.c
+++ b/mesh/cfgmod-server.c
@@ -496,7 +496,7 @@ static uint16_t hb_subscription_get(struct mesh_node *node, int status)
n += 2;
msg[n++] = uint32_to_log(time_now.tv_sec);
msg[n++] = sub->count != 0xffff ? uint32_to_log(sub->count) : 0xff;
- msg[n++] = sub->count ? sub->min_hops : 0;
+ msg[n++] = sub->min_hops;
msg[n++] = sub->max_hops;
return n;
diff --git a/mesh/net.c b/mesh/net.c
index 699469284..7fec98531 100644
--- a/mesh/net.c
+++ b/mesh/net.c
@@ -3608,24 +3608,14 @@ int mesh_net_set_heartbeat_sub(struct mesh_net *net, uint16_t src, uint16_t dst,
return MESH_STATUS_UNSPECIFIED_ERROR;
/* Check if the subscription should be disabled */
- if (IS_UNASSIGNED(src) || IS_UNASSIGNED(dst)) {
+ if (IS_UNASSIGNED(src) || IS_UNASSIGNED(dst) || !period_log) {
if (IS_GROUP(sub->dst))
mesh_net_dst_unreg(net, sub->dst);
+ /* Preserve collected data, but disable */
sub->enabled = false;
sub->dst = UNASSIGNED_ADDRESS;
sub->src = UNASSIGNED_ADDRESS;
- sub->count = 0;
- sub->period = 0;
- sub->min_hops = 0;
- sub->max_hops = 0;
-
- } else if (!period_log && src == sub->src && dst == sub->dst) {
- if (IS_GROUP(sub->dst))
- mesh_net_dst_unreg(net, sub->dst);
-
- /* Preserve collected data, but disable */
- sub->enabled = false;
sub->period = 0;
} else {
@@ -3637,12 +3627,12 @@ int mesh_net_set_heartbeat_sub(struct mesh_net *net, uint16_t src, uint16_t dst,
mesh_net_dst_reg(net, dst);
}
- sub->enabled = !!period_log;
+ sub->enabled = true;
sub->src = src;
sub->dst = dst;
sub->count = 0;
sub->period = log_to_uint32(period_log);
- sub->min_hops = 0x00;
+ sub->min_hops = 0x7f;
sub->max_hops = 0x00;
gettimeofday(&time_now, NULL);
sub->start = time_now.tv_sec;
@@ -3656,8 +3646,6 @@ int mesh_net_set_heartbeat_sub(struct mesh_net *net, uint16_t src, uint16_t dst,
return MESH_STATUS_SUCCESS;
}
- sub->min_hops = 0xff;
-
if (!sub->timer)
sub->timer = l_timeout_create(sub->period, hb_sub_timeout_func,
net, NULL);