1*042d53a7SEvalZero /* Bluetooth Mesh */ 2*042d53a7SEvalZero 3*042d53a7SEvalZero /* 4*042d53a7SEvalZero * Copyright (c) 2017 Intel Corporation 5*042d53a7SEvalZero * 6*042d53a7SEvalZero * SPDX-License-Identifier: Apache-2.0 7*042d53a7SEvalZero */ 8*042d53a7SEvalZero #ifndef __LPN_H__ 9*042d53a7SEvalZero #define __LPN_H__ 10*042d53a7SEvalZero 11*042d53a7SEvalZero #include "mesh/mesh.h" 12*042d53a7SEvalZero 13*042d53a7SEvalZero int bt_mesh_lpn_friend_update(struct bt_mesh_net_rx *rx, 14*042d53a7SEvalZero struct os_mbuf *buf); 15*042d53a7SEvalZero int bt_mesh_lpn_friend_offer(struct bt_mesh_net_rx *rx, 16*042d53a7SEvalZero struct os_mbuf *buf); 17*042d53a7SEvalZero int bt_mesh_lpn_friend_clear_cfm(struct bt_mesh_net_rx *rx, 18*042d53a7SEvalZero struct os_mbuf *buf); 19*042d53a7SEvalZero int bt_mesh_lpn_friend_sub_cfm(struct bt_mesh_net_rx *rx, 20*042d53a7SEvalZero struct os_mbuf *buf); 21*042d53a7SEvalZero bt_mesh_lpn_established(void)22*042d53a7SEvalZerostatic inline bool bt_mesh_lpn_established(void) 23*042d53a7SEvalZero { 24*042d53a7SEvalZero #if (MYNEWT_VAL(BLE_MESH_LOW_POWER)) 25*042d53a7SEvalZero return bt_mesh.lpn.established; 26*042d53a7SEvalZero #else 27*042d53a7SEvalZero return false; 28*042d53a7SEvalZero #endif 29*042d53a7SEvalZero } 30*042d53a7SEvalZero bt_mesh_lpn_match(u16_t addr)31*042d53a7SEvalZerostatic inline bool bt_mesh_lpn_match(u16_t addr) 32*042d53a7SEvalZero { 33*042d53a7SEvalZero #if (MYNEWT_VAL(BLE_MESH_LOW_POWER)) 34*042d53a7SEvalZero if (bt_mesh_lpn_established()) { 35*042d53a7SEvalZero return (addr == bt_mesh.lpn.frnd); 36*042d53a7SEvalZero } 37*042d53a7SEvalZero #endif 38*042d53a7SEvalZero return false; 39*042d53a7SEvalZero } 40*042d53a7SEvalZero bt_mesh_lpn_waiting_update(void)41*042d53a7SEvalZerostatic inline bool bt_mesh_lpn_waiting_update(void) 42*042d53a7SEvalZero { 43*042d53a7SEvalZero #if (MYNEWT_VAL(BLE_MESH_LOW_POWER)) 44*042d53a7SEvalZero return (bt_mesh.lpn.state == BT_MESH_LPN_WAIT_UPDATE); 45*042d53a7SEvalZero #else 46*042d53a7SEvalZero return false; 47*042d53a7SEvalZero #endif 48*042d53a7SEvalZero } 49*042d53a7SEvalZero bt_mesh_lpn_timer(void)50*042d53a7SEvalZerostatic inline bool bt_mesh_lpn_timer(void) 51*042d53a7SEvalZero { 52*042d53a7SEvalZero #if MYNEWT_VAL(BLE_MESH_LOW_POWER) && MYNEWT_VAL(BLE_MESH_LPN_AUTO) 53*042d53a7SEvalZero return (bt_mesh.lpn.state == BT_MESH_LPN_TIMER); 54*042d53a7SEvalZero #else 55*042d53a7SEvalZero return false; 56*042d53a7SEvalZero #endif 57*042d53a7SEvalZero } 58*042d53a7SEvalZero 59*042d53a7SEvalZero void bt_mesh_lpn_msg_received(struct bt_mesh_net_rx *rx); 60*042d53a7SEvalZero 61*042d53a7SEvalZero void bt_mesh_lpn_group_add(u16_t group); 62*042d53a7SEvalZero void bt_mesh_lpn_group_del(u16_t *groups, size_t group_count); 63*042d53a7SEvalZero 64*042d53a7SEvalZero void bt_mesh_lpn_disable(bool force); 65*042d53a7SEvalZero 66*042d53a7SEvalZero int bt_mesh_lpn_init(void); 67*042d53a7SEvalZero 68*042d53a7SEvalZero #endif 69