xref: /nrf52832-nimble/packages/NimBLE-latest/nimble/host/mesh/src/friend.h (revision 042d53a763ad75cb1465103098bb88c245d95138)
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 
9*042d53a7SEvalZero #ifndef __FRIEND_H__
10*042d53a7SEvalZero #define __FRIEND_H__
11*042d53a7SEvalZero 
12*042d53a7SEvalZero #include "mesh/mesh.h"
13*042d53a7SEvalZero 
14*042d53a7SEvalZero enum bt_mesh_friend_pdu_type {
15*042d53a7SEvalZero 	BT_MESH_FRIEND_PDU_SINGLE,
16*042d53a7SEvalZero 	BT_MESH_FRIEND_PDU_PARTIAL,
17*042d53a7SEvalZero 	BT_MESH_FRIEND_PDU_COMPLETE,
18*042d53a7SEvalZero };
19*042d53a7SEvalZero 
20*042d53a7SEvalZero bool bt_mesh_friend_match(u16_t net_idx, u16_t addr);
21*042d53a7SEvalZero 
22*042d53a7SEvalZero struct bt_mesh_friend *bt_mesh_friend_find(u16_t net_idx, u16_t lpn_addr,
23*042d53a7SEvalZero 					   bool valid, bool established);
24*042d53a7SEvalZero 
25*042d53a7SEvalZero void bt_mesh_friend_enqueue_rx(struct bt_mesh_net_rx *rx,
26*042d53a7SEvalZero 			       enum bt_mesh_friend_pdu_type type,
27*042d53a7SEvalZero 			       u64_t *seq_auth, struct os_mbuf *sbuf);
28*042d53a7SEvalZero bool bt_mesh_friend_enqueue_tx(struct bt_mesh_net_tx *tx,
29*042d53a7SEvalZero 			       enum bt_mesh_friend_pdu_type type,
30*042d53a7SEvalZero 			       u64_t *seq_auth, struct os_mbuf *sbuf);
31*042d53a7SEvalZero 
32*042d53a7SEvalZero void bt_mesh_friend_clear_incomplete(struct bt_mesh_subnet *sub, u16_t src,
33*042d53a7SEvalZero 				     u16_t dst, u64_t *seq_auth);
34*042d53a7SEvalZero 
35*042d53a7SEvalZero void bt_mesh_friend_sec_update(u16_t net_idx);
36*042d53a7SEvalZero 
37*042d53a7SEvalZero void bt_mesh_friend_clear_net_idx(u16_t net_idx);
38*042d53a7SEvalZero 
39*042d53a7SEvalZero int bt_mesh_friend_poll(struct bt_mesh_net_rx *rx, struct os_mbuf *buf);
40*042d53a7SEvalZero int bt_mesh_friend_req(struct bt_mesh_net_rx *rx, struct os_mbuf *buf);
41*042d53a7SEvalZero int bt_mesh_friend_clear(struct bt_mesh_net_rx *rx, struct os_mbuf *buf);
42*042d53a7SEvalZero int bt_mesh_friend_clear_cfm(struct bt_mesh_net_rx *rx,
43*042d53a7SEvalZero 			     struct os_mbuf *buf);
44*042d53a7SEvalZero int bt_mesh_friend_sub_add(struct bt_mesh_net_rx *rx,
45*042d53a7SEvalZero 			   struct os_mbuf *buf);
46*042d53a7SEvalZero int bt_mesh_friend_sub_rem(struct bt_mesh_net_rx *rx,
47*042d53a7SEvalZero 			   struct os_mbuf *buf);
48*042d53a7SEvalZero 
49*042d53a7SEvalZero int bt_mesh_friend_init(void);
50*042d53a7SEvalZero 
51*042d53a7SEvalZero #endif
52