Line data Source code
1 0 : /*
2 : * Copyright (c) 2024 Nordic Semiconductor ASA
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : #ifndef ZEPHYR_INCLUDE_BLUETOOTH_MESH_BRG_CFG_H__
8 : #define ZEPHYR_INCLUDE_BLUETOOTH_MESH_BRG_CFG_H__
9 :
10 : #include <stdint.h>
11 : #include <stdbool.h>
12 :
13 : #ifdef __cplusplus
14 : extern "C" {
15 : #endif
16 :
17 : /**
18 : * @defgroup bt_mesh_brg_cfg Bridge Configuration common header
19 : * @ingroup bt_mesh
20 : * @{
21 : */
22 :
23 : /** Subnet Bridge states */
24 1 : enum bt_mesh_brg_cfg_state {
25 : /** Subnet bridge functionality is disabled. */
26 : BT_MESH_BRG_CFG_DISABLED,
27 : /** Subnet bridge state functionality is enabled. */
28 : BT_MESH_BRG_CFG_ENABLED,
29 : };
30 :
31 : /* Bridging from Addr1 to Addr2. */
32 0 : #define BT_MESH_BRG_CFG_DIR_ONEWAY 1
33 : /* Bidirectional bridging between Addr1 and Addr2. */
34 0 : #define BT_MESH_BRG_CFG_DIR_TWOWAY 2
35 :
36 : /** Bridging Table state entry corresponding to a entry in the Bridging Table. */
37 1 : struct bt_mesh_brg_cfg_table_entry {
38 : /** Allowed directions for the bridged traffic (or bridged traffic not allowed) */
39 1 : uint8_t directions;
40 : /** NetKey Index of the first subnet */
41 1 : uint16_t net_idx1;
42 : /** NetKey Index of the second subnet */
43 1 : uint16_t net_idx2;
44 : /** Address of the node in the first subnet */
45 1 : uint16_t addr1;
46 : /** Address of the node in the second subnet */
47 1 : uint16_t addr2;
48 : };
49 :
50 : /** Bridging Table Status response */
51 1 : struct bt_mesh_brg_cfg_table_status {
52 : /** Status Code of the requesting message */
53 1 : uint8_t status;
54 : /** Requested Bridging Table entry */
55 1 : struct bt_mesh_brg_cfg_table_entry entry;
56 : };
57 :
58 : /** Used to filter set of pairs of NetKey Indexes from the Bridging Table */
59 1 : struct bt_mesh_brg_cfg_filter_netkey {
60 0 : uint16_t filter: 2, /* Filter applied to the set of pairs of NetKey Indexes */
61 0 : prohibited: 2, /* Prohibited */
62 0 : net_idx: 12; /* NetKey Index used for filtering or ignored */
63 : };
64 :
65 : /** Bridged Subnets List response */
66 1 : struct bt_mesh_brg_cfg_subnets_list {
67 : /** Filter applied NetKey Indexes, and NetKey Index used for filtering. */
68 1 : struct bt_mesh_brg_cfg_filter_netkey net_idx_filter;
69 : /** Start offset in units of bridges */
70 1 : uint8_t start_idx;
71 : /** Pointer to allocated buffer for storing filtered of NetKey Indexes */
72 1 : struct net_buf_simple *list;
73 : };
74 :
75 : /** Bridging Table List response */
76 1 : struct bt_mesh_brg_cfg_table_list {
77 : /** Status Code of the requesting message */
78 1 : uint8_t status;
79 : /** NetKey Index of the first subnet */
80 1 : uint16_t net_idx1;
81 : /** NetKey Index of the second subnet */
82 1 : uint16_t net_idx2;
83 : /** Start offset in units of bridging table state entries */
84 1 : uint16_t start_idx;
85 : /** Pointer to allocated buffer for storing list of bridged addresses and directions */
86 1 : struct net_buf_simple *list;
87 : };
88 :
89 : /**
90 : * @}
91 : */
92 :
93 : #ifdef __cplusplus
94 : }
95 : #endif
96 :
97 : #endif /* ZEPHYR_INCLUDE_BLUETOOTH_MESH_BRG_CFG_H__ */
|