The daemon does not support the LPN role, and this is unreferenced code. --- mesh/net.c | 56 ++++++++---------------------------------------------- mesh/net.h | 2 -- 2 files changed, 8 insertions(+), 50 deletions(-) diff --git a/mesh/net.c b/mesh/net.c index e708b2aa4..0485086bc 100644 --- a/mesh/net.c +++ b/mesh/net.c @@ -118,7 +118,6 @@ struct mesh_net { uint32_t seq_num; uint16_t src_addr; uint16_t last_addr; - uint16_t friend_addr; uint16_t tx_interval; uint16_t tx_cnt; uint8_t chan; /* Channel of recent Rx */ @@ -1550,10 +1549,6 @@ static void send_net_ack(struct mesh_net *net, struct mesh_sar *sar, if (src & 0x8000) return; - /* We don't ACK segments as a Low Power Node */ - if (net->friend_addr) - return; - hdr = NET_OP_SEG_ACKNOWLEDGE << OPCODE_HDR_SHIFT; hdr |= sar->seqZero << SEQ_ZERO_HDR_SHIFT; @@ -1947,8 +1942,7 @@ static bool seg_rxed(struct mesh_net *net, bool frnd, uint32_t iv_index, if (sar_in->flags == expected) { /* Re-Send ACK for full msg */ - if (!net->friend_addr) - send_net_ack(net, sar_in, expected); + send_net_ack(net, sar_in, expected); return true; } } else { @@ -1966,8 +1960,7 @@ static bool seg_rxed(struct mesh_net *net, bool frnd, uint32_t iv_index, sar_in->key_aid = key_aid; sar_in->len = len; sar_in->last_seg = 0xff; - if (!net->friend_addr) - sar_in->msg_timeout = l_timeout_create(MSG_TO, + sar_in->msg_timeout = l_timeout_create(MSG_TO, inmsg_to, net, NULL); l_debug("First Seg %4.4x", sar_in->flags); @@ -1994,8 +1987,7 @@ static bool seg_rxed(struct mesh_net *net, bool frnd, uint32_t iv_index, if (sar_in->flags == expected) { /* Got it all */ - if (!net->friend_addr) - send_net_ack(net, sar_in, expected); + send_net_ack(net, sar_in, expected); msg_rxed(net, frnd, iv_index, ttl, seq, net_idx, sar_in->remote, dst, @@ -2014,15 +2006,12 @@ static bool seg_rxed(struct mesh_net *net, bool frnd, uint32_t iv_index, l_timeout_remove(sar_in->seg_timeout); /* if this is the largest outstanding segment, send NAK now */ - if (!net->friend_addr) { - largest = (0xffffffff << segO) & expected; - if ((largest & sar_in->flags) == largest) - send_net_ack(net, sar_in, sar_in->flags); + largest = (0xffffffff << segO) & expected; + if ((largest & sar_in->flags) == largest) + send_net_ack(net, sar_in, sar_in->flags); - sar_in->seg_timeout = l_timeout_create(SEG_TO, + sar_in->seg_timeout = l_timeout_create(SEG_TO, inseg_to, net, NULL); - } else - largest = 0; } else largest = 0; @@ -2752,7 +2741,7 @@ static void beacon_recv(void *user_data, struct mesh_io_recv_info *info, bool mesh_net_set_beacon_mode(struct mesh_net *net, bool enable) { - if (!net || !IS_UNASSIGNED(net->friend_addr)) + if (!net) return false; if (net->beacon_enable == enable) @@ -2924,33 +2913,6 @@ void mesh_net_sub_list_del(struct mesh_net *net, uint16_t addr) 0, 0, 0, msg, n); } -/* TODO: change to use net index */ -bool mesh_net_set_friend(struct mesh_net *net, uint16_t friend_addr) -{ - if (!net) - return false; - - net->bea_id = 0; - - l_info("Set Frnd addr: %4.4x", friend_addr); - if (!friend_addr) - trigger_heartbeat(net, FEATURE_LPN, false); - else - trigger_heartbeat(net, FEATURE_LPN, true); - - net->friend_addr = friend_addr; - - return true; -} - -uint16_t mesh_net_get_friend(struct mesh_net *net) -{ - if (!net) - return 0; - - return net->friend_addr; -} - bool mesh_net_dst_reg(struct mesh_net *net, uint16_t dst) { struct mesh_destination *dest = l_queue_find(net->destinations, @@ -3493,8 +3455,6 @@ uint16_t mesh_net_get_features(struct mesh_net *net) features |= FEATURE_PROXY; if (net->friend_enable) features |= FEATURE_FRIEND; - if (net->friend_addr != UNASSIGNED_ADDRESS) - features |= FEATURE_LPN; return features; } diff --git a/mesh/net.h b/mesh/net.h index 90ca8328b..07b87830d 100644 --- a/mesh/net.h +++ b/mesh/net.h @@ -279,8 +279,6 @@ void mesh_net_set_frnd_seq(struct mesh_net *net, bool seq); uint16_t mesh_net_get_address(struct mesh_net *net); bool mesh_net_register_unicast(struct mesh_net *net, uint16_t unicast, uint8_t num_ele); -bool mesh_net_set_friend(struct mesh_net *net, uint16_t friend_addr); -uint16_t mesh_net_get_friend(struct mesh_net *net); uint8_t mesh_net_get_num_ele(struct mesh_net *net); bool mesh_net_set_beacon_mode(struct mesh_net *net, bool enable); bool mesh_net_set_proxy_mode(struct mesh_net *net, bool enable); -- 2.21.0