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__ */