@@ -71,69 +71,49 @@ static bool schedule_send(struct bt_mesh_ext_adv *ext_adv);
7171
7272static struct bt_mesh_ext_adv advs [] = {
7373 [0 ] = {
74- .tags = (
75- #if !defined (CONFIG_BT_MESH_ADV_EXT_FRIEND_SEPARATE )
76- BT_MESH_ADV_TAG_BIT_FRIEND |
77- #endif
78- #if !defined (CONFIG_BT_MESH_ADV_EXT_GATT_SEPARATE )
79- BT_MESH_ADV_TAG_BIT_PROXY |
80- #endif /* !CONFIG_BT_MESH_ADV_EXT_GATT_SEPARATE */
81- #if defined(CONFIG_BT_MESH_ADV_EXT_RELAY_USING_MAIN_ADV_SET )
82- BT_MESH_ADV_TAG_BIT_RELAY |
83- #endif /* CONFIG_BT_MESH_ADV_EXT_RELAY_USING_MAIN_ADV_SET */
84- #if defined(CONFIG_BT_MESH_PB_ADV )
85- BT_MESH_ADV_TAG_BIT_PROV |
86- #endif /* CONFIG_BT_MESH_PB_ADV */
87- BT_MESH_ADV_TAG_BIT_LOCAL
88- ),
89- .work = Z_WORK_INITIALIZER (send_pending_adv ),
90- },
91- #if CONFIG_BT_MESH_RELAY_ADV_SETS
92- [1 ... CONFIG_BT_MESH_RELAY_ADV_SETS ] = {
93- .tags = (
94- #if defined(CONFIG_BT_MESH_RELAY )
95- BT_MESH_ADV_TAG_BIT_RELAY |
96- #endif /* CONFIG_BT_MESH_RELAY */
97- #if defined(CONFIG_BT_MESH_PB_ADV_USE_RELAY_SETS )
98- BT_MESH_ADV_TAG_BIT_PROV |
99- #endif /* CONFIG_BT_MESH_PB_ADV_USE_RELAY_SETS */
100- 0 ),
101- .work = Z_WORK_INITIALIZER (send_pending_adv ),
102- },
103- #endif /* CONFIG_BT_MESH_RELAY_ADV_SETS */
104- #if defined(CONFIG_BT_MESH_ADV_EXT_FRIEND_SEPARATE )
105- {
106- .tags = BT_MESH_ADV_TAG_BIT_FRIEND ,
107- .work = Z_WORK_INITIALIZER (send_pending_adv ),
108- },
109- #endif /* CONFIG_BT_MESH_ADV_EXT_FRIEND_SEPARATE */
110- #if defined(CONFIG_BT_MESH_ADV_EXT_GATT_SEPARATE )
111- {
112- .tags = BT_MESH_ADV_TAG_BIT_PROXY ,
74+ .tags = (BT_MESH_ADV_TAG_BIT_LOCAL |
75+ (IS_ENABLED (CONFIG_BT_MESH_ADV_EXT_FRIEND_SEPARATE )
76+ ? 0 : BT_MESH_ADV_TAG_BIT_FRIEND ) |
77+ (IS_ENABLED (CONFIG_BT_MESH_ADV_EXT_GATT_SEPARATE )
78+ ? 0 : BT_MESH_ADV_TAG_BIT_PROXY ) |
79+ (IS_ENABLED (CONFIG_BT_MESH_ADV_EXT_RELAY_USING_MAIN_ADV_SET )
80+ ? BT_MESH_ADV_TAG_BIT_RELAY : 0 ) |
81+ (IS_ENABLED (CONFIG_BT_MESH_PB_ADV )
82+ ? BT_MESH_ADV_TAG_BIT_PROV : 0 )),
11383 .work = Z_WORK_INITIALIZER (send_pending_adv ),
11484 },
115- #endif /* CONFIG_BT_MESH_ADV_EXT_GATT_SEPARATE */
85+ COND_CODE_0 (CONFIG_BT_MESH_RELAY_ADV_SETS ,
86+ ( ), ([1 ... CONFIG_BT_MESH_RELAY_ADV_SETS ] = {
87+ .tags = (
88+ (IS_ENABLED (CONFIG_BT_MESH_RELAY ) ?
89+ BT_MESH_ADV_TAG_BIT_RELAY : 0 ) |
90+ (IS_ENABLED (CONFIG_BT_MESH_PB_ADV_USE_RELAY_SETS ) ?
91+ BT_MESH_ADV_TAG_BIT_PROV : 0 )
92+ ),
93+ .work = Z_WORK_INITIALIZER (send_pending_adv ),
94+ }))
95+ COND_CODE_1 (IS_ENABLED (CONFIG_BT_MESH_ADV_EXT_FRIEND_SEPARATE ),
96+ ({ .tags = BT_MESH_ADV_TAG_BIT_FRIEND ,
97+ .work = Z_WORK_INITIALIZER (send_pending_adv ),
98+ }), ( ))
99+ COND_CODE_1 (IS_ENABLED (CONFIG_BT_MESH_ADV_EXT_GATT_SEPARATE ),
100+ ({ .tags = BT_MESH_ADV_TAG_BIT_PROXY ,
101+ .work = Z_WORK_INITIALIZER (send_pending_adv ),
102+ }), ( ))
116103};
117104
118105BUILD_ASSERT (ARRAY_SIZE (advs ) <= CONFIG_BT_EXT_ADV_MAX_ADV_SET ,
119106 "Insufficient adv instances" );
120107
121108static inline struct bt_mesh_ext_adv * relay_adv_get (void )
122109{
123- if (!!(CONFIG_BT_MESH_RELAY_ADV_SETS )) {
124- return & advs [1 ];
125- } else {
126- return & advs [0 ];
127- }
110+ return !!(CONFIG_BT_MESH_RELAY_ADV_SETS ) ? & advs [1 ] : & advs [0 ];
128111}
129112
130113static inline struct bt_mesh_ext_adv * gatt_adv_get (void )
131114{
132- if (IS_ENABLED (CONFIG_BT_MESH_ADV_EXT_GATT_SEPARATE )) {
133- return & advs [ARRAY_SIZE (advs ) - 1 ];
134- } else {
135- return & advs [0 ];
136- }
115+ return IS_ENABLED (CONFIG_BT_MESH_ADV_EXT_GATT_SEPARATE ) ?
116+ & advs [ARRAY_SIZE (advs ) - 1 ] : & advs [0 ];
137117}
138118
139119static int adv_start (struct bt_mesh_ext_adv * ext_adv ,
@@ -233,14 +213,6 @@ static int adv_send(struct bt_mesh_ext_adv *ext_adv, struct bt_mesh_adv *adv)
233213 return err ;
234214}
235215
236- static const char * const adv_tag_to_str [] = {
237- [BT_MESH_ADV_TAG_LOCAL ] = "local adv" ,
238- [BT_MESH_ADV_TAG_RELAY ] = "relay adv" ,
239- [BT_MESH_ADV_TAG_PROXY ] = "proxy adv" ,
240- [BT_MESH_ADV_TAG_FRIEND ] = "friend adv" ,
241- [BT_MESH_ADV_TAG_PROV ] = "prov adv" ,
242- };
243-
244216static bool schedule_send_with_mask (struct bt_mesh_ext_adv * ext_adv , int ignore_mask )
245217{
246218 if (atomic_test_and_clear_bit (ext_adv -> flags , ADV_FLAG_PROXY )) {
@@ -265,6 +237,13 @@ static bool schedule_send_with_mask(struct bt_mesh_ext_adv *ext_adv, int ignore_
265237
266238static void send_pending_adv (struct k_work * work )
267239{
240+ static const char * const adv_tag_to_str [] = {
241+ [BT_MESH_ADV_TAG_LOCAL ] = "local" ,
242+ [BT_MESH_ADV_TAG_RELAY ] = "relay" ,
243+ [BT_MESH_ADV_TAG_PROXY ] = "proxy" ,
244+ [BT_MESH_ADV_TAG_FRIEND ] = "friend" ,
245+ [BT_MESH_ADV_TAG_PROV ] = "prov" ,
246+ };
268247 struct bt_mesh_ext_adv * ext_adv ;
269248 struct bt_mesh_adv * adv ;
270249 int err ;
@@ -277,7 +256,7 @@ static void send_pending_adv(struct k_work *work)
277256 }
278257
279258 if (atomic_test_and_clear_bit (ext_adv -> flags , ADV_FLAG_SENT )) {
280- LOG_DBG ("Advertising stopped after %u ms for %s" ,
259+ LOG_DBG ("Advertising stopped after %u ms for %s adv " ,
281260 k_uptime_get_32 () - ext_adv -> timestamp ,
282261 ext_adv -> adv ? adv_tag_to_str [ext_adv -> adv -> ctx .tag ]
283262 : adv_tag_to_str [BT_MESH_ADV_TAG_PROXY ]);
0 commit comments