mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-30 10:47:19 +02:00
fix(ble_mesh): fixed issues with proxy solic pdu adv
(cherry picked from commit ca30088aa8
)
Co-authored-by: luoxu <luoxu@espressif.com>
This commit is contained in:
@ -94,17 +94,16 @@ static inline int adv_send(struct net_buf *buf)
|
|||||||
#if CONFIG_BLE_MESH_PROXY_SOLIC_PDU_TX
|
#if CONFIG_BLE_MESH_PROXY_SOLIC_PDU_TX
|
||||||
if (BLE_MESH_ADV(buf)->type == BLE_MESH_ADV_PROXY_SOLIC) {
|
if (BLE_MESH_ADV(buf)->type == BLE_MESH_ADV_PROXY_SOLIC) {
|
||||||
bt_mesh_adv_buf_ref_debug(__func__, buf, 3U, BLE_MESH_BUF_REF_SMALL);
|
bt_mesh_adv_buf_ref_debug(__func__, buf, 3U, BLE_MESH_BUF_REF_SMALL);
|
||||||
struct bt_mesh_adv_data solic_ad[3] = {
|
struct bt_mesh_adv_data solic_ad[2] = {
|
||||||
BLE_MESH_ADV_DATA_BYTES(BLE_MESH_DATA_FLAGS, (BLE_MESH_AD_GENERAL | BLE_MESH_AD_NO_BREDR)),
|
|
||||||
BLE_MESH_ADV_DATA_BYTES(BLE_MESH_DATA_UUID16_ALL, 0x59, 0x18),
|
BLE_MESH_ADV_DATA_BYTES(BLE_MESH_DATA_UUID16_ALL, 0x59, 0x18),
|
||||||
BLE_MESH_ADV_DATA(BLE_MESH_DATA_SVC_DATA16, buf->data, buf->len),
|
BLE_MESH_ADV_DATA(BLE_MESH_DATA_SVC_DATA16, buf->data, buf->len),
|
||||||
};
|
};
|
||||||
#if CONFIG_BLE_MESH_USE_BLE_50
|
#if CONFIG_BLE_MESH_USE_BLE_50
|
||||||
param.primary_phy = BLE_MESH_ADV_PHY_1M;
|
param.primary_phy = BLE_MESH_ADV_PHY_1M;
|
||||||
param.secondary_phy = BLE_MESH_ADV_PHY_1M;
|
param.secondary_phy = BLE_MESH_ADV_PHY_1M;
|
||||||
err = bt_le_ext_adv_start(CONFIG_BLE_MESH_ADV_INST_ID, ¶m, &ad, 3, NULL, 0);
|
err = bt_le_ext_adv_start(CONFIG_BLE_MESH_ADV_INST_ID, ¶m, solic_ad, ARRAY_SIZE(solic_ad), NULL, 0);
|
||||||
#else /* CONFIG_BLE_MESH_USE_BLE_50 */
|
#else /* CONFIG_BLE_MESH_USE_BLE_50 */
|
||||||
err = bt_le_adv_start(¶m, &ad, 3, NULL, 0);
|
err = bt_le_adv_start(¶m, solic_ad, ARRAY_SIZE(solic_ad), NULL, 0);
|
||||||
#endif /* CONFIG_BLE_MESH_USE_BLE_50 */
|
#endif /* CONFIG_BLE_MESH_USE_BLE_50 */
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
|
@ -625,6 +625,9 @@ void bt_mesh_adv_common_init(void)
|
|||||||
bt_mesh_adv_type_init(BLE_MESH_ADV_DATA, &adv_queue, &adv_buf_pool, adv_alloc);
|
bt_mesh_adv_type_init(BLE_MESH_ADV_DATA, &adv_queue, &adv_buf_pool, adv_alloc);
|
||||||
bt_mesh_adv_type_init(BLE_MESH_ADV_BEACON, &adv_queue, &adv_buf_pool, adv_alloc);
|
bt_mesh_adv_type_init(BLE_MESH_ADV_BEACON, &adv_queue, &adv_buf_pool, adv_alloc);
|
||||||
bt_mesh_adv_type_init(BLE_MESH_ADV_URI, &adv_queue, &adv_buf_pool, adv_alloc);
|
bt_mesh_adv_type_init(BLE_MESH_ADV_URI, &adv_queue, &adv_buf_pool, adv_alloc);
|
||||||
|
#if CONFIG_BLE_MESH_PROXY_SOLIC_PDU_TX
|
||||||
|
bt_mesh_adv_type_init(BLE_MESH_ADV_PROXY_SOLIC, &adv_queue, &adv_buf_pool, adv_alloc);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if CONFIG_BLE_MESH_USE_BLE_50
|
#if CONFIG_BLE_MESH_USE_BLE_50
|
||||||
bt_mesh_adv_inst_init(BLE_MESH_ADV_INS, CONFIG_BLE_MESH_ADV_INST_ID);
|
bt_mesh_adv_inst_init(BLE_MESH_ADV_INS, CONFIG_BLE_MESH_ADV_INST_ID);
|
||||||
|
@ -140,6 +140,9 @@ enum bt_mesh_adv_type {
|
|||||||
#endif
|
#endif
|
||||||
BLE_MESH_ADV_BEACON,
|
BLE_MESH_ADV_BEACON,
|
||||||
BLE_MESH_ADV_URI,
|
BLE_MESH_ADV_URI,
|
||||||
|
#if CONFIG_BLE_MESH_PROXY_SOLIC_PDU_TX
|
||||||
|
BLE_MESH_ADV_PROXY_SOLIC,
|
||||||
|
#endif
|
||||||
#if CONFIG_BLE_MESH_SUPPORT_BLE_ADV
|
#if CONFIG_BLE_MESH_SUPPORT_BLE_ADV
|
||||||
BLE_MESH_ADV_BLE,
|
BLE_MESH_ADV_BLE,
|
||||||
#endif
|
#endif
|
||||||
|
@ -70,6 +70,9 @@ static inline int adv_send(struct bt_mesh_adv_inst *inst, uint16_t *adv_duration
|
|||||||
#endif
|
#endif
|
||||||
#if CONFIG_BLE_MESH_RELAY_ADV_BUF
|
#if CONFIG_BLE_MESH_RELAY_ADV_BUF
|
||||||
case BLE_MESH_ADV_RELAY_DATA:
|
case BLE_MESH_ADV_RELAY_DATA:
|
||||||
|
#endif
|
||||||
|
#if CONFIG_BLE_MESH_PROXY_SOLIC_PDU_TX
|
||||||
|
case BLE_MESH_ADV_PROXY_SOLIC:
|
||||||
#endif
|
#endif
|
||||||
case BLE_MESH_ADV_BEACON:
|
case BLE_MESH_ADV_BEACON:
|
||||||
case BLE_MESH_ADV_URI: {
|
case BLE_MESH_ADV_URI: {
|
||||||
@ -96,9 +99,20 @@ static inline int adv_send(struct bt_mesh_adv_inst *inst, uint16_t *adv_duration
|
|||||||
param.primary_phy = BLE_MESH_ADV_PHY_1M;
|
param.primary_phy = BLE_MESH_ADV_PHY_1M;
|
||||||
param.secondary_phy = BLE_MESH_ADV_PHY_1M;
|
param.secondary_phy = BLE_MESH_ADV_PHY_1M;
|
||||||
|
|
||||||
bt_mesh_adv_buf_ref_debug(__func__, buf, 4U, BLE_MESH_BUF_REF_SMALL);
|
#if CONFIG_BLE_MESH_PROXY_SOLIC_PDU_TX
|
||||||
|
if (BLE_MESH_ADV(buf)->type == BLE_MESH_ADV_PROXY_SOLIC) {
|
||||||
err = bt_le_ext_adv_start(inst->id, ¶m, &ad, 1, NULL, 0);
|
bt_mesh_adv_buf_ref_debug(__func__, buf, 3U, BLE_MESH_BUF_REF_SMALL);
|
||||||
|
struct bt_mesh_adv_data solic_ad[2] = {
|
||||||
|
BLE_MESH_ADV_DATA_BYTES(BLE_MESH_DATA_UUID16_ALL, 0x59, 0x18),
|
||||||
|
BLE_MESH_ADV_DATA(BLE_MESH_DATA_SVC_DATA16, buf->data, buf->len),
|
||||||
|
};
|
||||||
|
err = bt_le_ext_adv_start(CONFIG_BLE_MESH_ADV_INST_ID, ¶m, solic_ad, ARRAY_SIZE(solic_ad), NULL, 0);
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
bt_mesh_adv_buf_ref_debug(__func__, buf, 4U, BLE_MESH_BUF_REF_SMALL);
|
||||||
|
err = bt_le_ext_adv_start(inst->id, ¶m, &ad, 1, NULL, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#if CONFIG_BLE_MESH_SUPPORT_BLE_ADV
|
#if CONFIG_BLE_MESH_SUPPORT_BLE_ADV
|
||||||
|
@ -92,6 +92,9 @@ uint8_t __meshlib_var_BLE_MESH_ADV_RELAY_DATA = BLE_MESH_ADV_RELAY_DATA;
|
|||||||
#endif
|
#endif
|
||||||
uint8_t __meshlib_var_BLE_MESH_ADV_BEACON = BLE_MESH_ADV_BEACON;
|
uint8_t __meshlib_var_BLE_MESH_ADV_BEACON = BLE_MESH_ADV_BEACON;
|
||||||
uint8_t __meshlib_var_BLE_MESH_ADV_URI = BLE_MESH_ADV_URI;
|
uint8_t __meshlib_var_BLE_MESH_ADV_URI = BLE_MESH_ADV_URI;
|
||||||
|
#if CONFIG_BLE_MESH_PROXY_SOLIC_PDU_TX
|
||||||
|
uint8_t __meshlib_var_BLE_MESH_ADV_PROXY_SOLIC = BLE_MESH_ADV_PROXY_SOLIC;
|
||||||
|
#endif
|
||||||
#if CONFIG_BLE_MESH_SUPPORT_BLE_ADV
|
#if CONFIG_BLE_MESH_SUPPORT_BLE_ADV
|
||||||
uint8_t __meshlib_var_BLE_MESH_ADV_BLE = BLE_MESH_ADV_BLE;
|
uint8_t __meshlib_var_BLE_MESH_ADV_BLE = BLE_MESH_ADV_BLE;
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user