From 2fd56b7ed805b2ee83e2f92d0d6a4240adfabe7c Mon Sep 17 00:00:00 2001 From: zhiweijian Date: Thu, 27 Mar 2025 20:22:06 +0800 Subject: [PATCH] feat(ble/bluedroid): report cte_type in periodic adv report if CTE feature is enabled --- .../host/bluedroid/api/include/api/esp_gap_ble_api.h | 7 +++++++ .../host/bluedroid/btc/profile/std/gap/btc_gap_ble.c | 10 ++++++++-- components/bt/host/bluedroid/stack/btu/btu_hcif.c | 2 +- .../host/bluedroid/stack/include/stack/btm_ble_api.h | 1 + 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h b/components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h index 3d470a628d..a668ad6b8a 100644 --- a/components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h +++ b/components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h @@ -1025,6 +1025,13 @@ typedef struct { uint16_t sync_handle; /*!< periodic advertising train handle */ uint8_t tx_power; /*!< periodic advertising tx power*/ int8_t rssi; /*!< periodic advertising rssi */ +#if (CONFIG_BT_BLE_FEAT_CTE_EN) // #if (BLE_FEAT_CTE_EN == TRUE) + uint8_t cte_type; /*!< The type of Constant Tone Extension + 0x00: AoA Constant Tone Extension + 0x01: AoD Constant Tone Extension with 1 μs slots + 0x02: AoD Constant Tone Extension with 2 μs slots + 0xFF: No Constant Tone Extension */ +#endif // BT_BLE_FEAT_CTE_EN esp_ble_gap_ext_adv_data_status_t data_status; /*!< periodic advertising data type*/ uint8_t data_length; /*!< periodic advertising data length */ uint8_t data[251]; /*!< periodic advertising data */ diff --git a/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c b/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c index 37e1a8bfd7..022074105a 100644 --- a/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c +++ b/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c @@ -1144,8 +1144,14 @@ static void btc_ble_5_gap_callback(tBTA_DM_BLE_5_GAP_EVENT event, #if (BLE_50_EXTEND_SYNC_EN == TRUE) case BTA_DM_BLE_5_GAP_PERIODIC_ADV_REPORT_EVT: { msg.act = ESP_GAP_BLE_PERIODIC_ADV_REPORT_EVT; - memcpy(¶m.period_adv_report, ¶ms->period_adv_report, - sizeof(esp_ble_gap_periodic_adv_report_t)); + param.period_adv_report.params.sync_handle = params->period_adv_report.sync_handle; + param.period_adv_report.params.tx_power = params->period_adv_report.tx_power; + param.period_adv_report.params.rssi = params->period_adv_report.rssi; + #if (BLE_FEAT_CTE_EN == TRUE) + param.period_adv_report.params.cte_type = params->period_adv_report.cte_type; + #endif // #if (BLE_FEAT_CTE_EN == TRUE) + param.period_adv_report.params.data_status = params->period_adv_report.data_status; + param.period_adv_report.params.data_length = params->period_adv_report.data_length; if (params->period_adv_report.data) { memcpy(param.period_adv_report.params.data, params->period_adv_report.data, params->period_adv_report.data_length); diff --git a/components/bt/host/bluedroid/stack/btu/btu_hcif.c b/components/bt/host/bluedroid/stack/btu/btu_hcif.c index 53fdfba58a..0a45729abb 100644 --- a/components/bt/host/bluedroid/stack/btu/btu_hcif.c +++ b/components/bt/host/bluedroid/stack/btu/btu_hcif.c @@ -2576,7 +2576,7 @@ static void btu_ble_periodic_adv_report_evt(UINT8 *p, UINT8 evt_len) STREAM_TO_UINT16(adv_report.sync_handle, p); STREAM_TO_UINT8(adv_report.tx_power, p); STREAM_TO_UINT8(adv_report.rssi, p); - STREAM_TO_UINT8(unused, p); + STREAM_TO_UINT8(adv_report.cte_type, p); STREAM_TO_UINT8(adv_report.data_status, p); STREAM_TO_UINT8(adv_report.data_length, p); diff --git a/components/bt/host/bluedroid/stack/include/stack/btm_ble_api.h b/components/bt/host/bluedroid/stack/include/stack/btm_ble_api.h index a236c4db99..fbad343cfb 100644 --- a/components/bt/host/bluedroid/stack/include/stack/btm_ble_api.h +++ b/components/bt/host/bluedroid/stack/include/stack/btm_ble_api.h @@ -1330,6 +1330,7 @@ typedef struct { UINT16 sync_handle; UINT8 tx_power; INT8 rssi; + UINT8 cte_type; tBTM_BLE_EXT_ADV_DATA_STATUS data_status; UINT8 data_length; UINT8 *data;