【已解决】ESP32-S3蓝牙扫描修改了蓝牙扫描参数为1s,但为什么触发不了ESP_GAP_BLE_SCAN_TIMEOUT_EVT事件
Posted: Mon Oct 28, 2024 7:24 am
1.ESP32-S3蓝牙扫描修改了蓝牙扫描参数为1s,但为什么触发不了ESP_GAP_BLE_SCAN_TIMEOUT_EVT事件
2.已修改扫描参数为BLE_50的参数
esp_ble_gap_prefer_ext_connect_params_set(param->ext_adv_report.params.addr,
ESP_BLE_GAP_PHY_1M_PREF_MASK,
&phy_1m_conn_params, NULL, NULL);
static esp_ble_ext_scan_params_t ext_scan_params = {
.own_addr_type = BLE_ADDR_TYPE_PUBLIC,
.filter_policy = BLE_SCAN_FILTER_ALLOW_ALL,
.scan_duplicate = BLE_SCAN_DUPLICATE_DISABLE,
.cfg_mask = ESP_BLE_GAP_EXT_SCAN_CFG_UNCODE_MASK,
.uncoded_cfg = {BLE_SCAN_TYPE_ACTIVE, 160, 80}, // 400ms 20ms : 640, 32 100ms 50ms : 160, 80
.coded_cfg = {BLE_SCAN_TYPE_ACTIVE, 40, 40},
};
3.扫描接口使用esp_ble_gap_start_ext_scan(EXT_SCAN_DURATION, EXT_SCAN_PERIOD); // 蓝牙开启扫描
4.设置参数为 #define EXT_SCAN_DURATION 1000 // 扫描持续时间 #define EXT_SCAN_PERIOD 1000 // 扫描周期
5.实测一直没有触发ESP_GAP_BLE_SCAN_TIMEOUT_EVT事件,也没有触发ESP_GAP_SEARCH_INQ_CMPL_EVT事件,测试若使用esp_ble_gap_start_scanning接口来扫描,超过设定时间后,会触发ESP_GAP_SEARCH_INQ_CMPL_EVT事件,但我需要使用esp_ble_gap_start_ext_scan接口
6.调用esp_ble_gap_start_ext_scan来扫描,会触发ESP_GAP_BLE_EXT_SCAN_START_COMPLETE_EVT事件,但为什么不能触发ESP_GAP_BLE_SCAN_TIMEOUT_EVT事件,按道理我设置1s的扫描时间,超过1s会触发此事件
7.如何才能触发ESP_GAP_BLE_SCAN_TIMEOUT_EVT事件?
2.已修改扫描参数为BLE_50的参数
esp_ble_gap_prefer_ext_connect_params_set(param->ext_adv_report.params.addr,
ESP_BLE_GAP_PHY_1M_PREF_MASK,
&phy_1m_conn_params, NULL, NULL);
static esp_ble_ext_scan_params_t ext_scan_params = {
.own_addr_type = BLE_ADDR_TYPE_PUBLIC,
.filter_policy = BLE_SCAN_FILTER_ALLOW_ALL,
.scan_duplicate = BLE_SCAN_DUPLICATE_DISABLE,
.cfg_mask = ESP_BLE_GAP_EXT_SCAN_CFG_UNCODE_MASK,
.uncoded_cfg = {BLE_SCAN_TYPE_ACTIVE, 160, 80}, // 400ms 20ms : 640, 32 100ms 50ms : 160, 80
.coded_cfg = {BLE_SCAN_TYPE_ACTIVE, 40, 40},
};
3.扫描接口使用esp_ble_gap_start_ext_scan(EXT_SCAN_DURATION, EXT_SCAN_PERIOD); // 蓝牙开启扫描
4.设置参数为 #define EXT_SCAN_DURATION 1000 // 扫描持续时间 #define EXT_SCAN_PERIOD 1000 // 扫描周期
5.实测一直没有触发ESP_GAP_BLE_SCAN_TIMEOUT_EVT事件,也没有触发ESP_GAP_SEARCH_INQ_CMPL_EVT事件,测试若使用esp_ble_gap_start_scanning接口来扫描,超过设定时间后,会触发ESP_GAP_SEARCH_INQ_CMPL_EVT事件,但我需要使用esp_ble_gap_start_ext_scan接口
6.调用esp_ble_gap_start_ext_scan来扫描,会触发ESP_GAP_BLE_EXT_SCAN_START_COMPLETE_EVT事件,但为什么不能触发ESP_GAP_BLE_SCAN_TIMEOUT_EVT事件,按道理我设置1s的扫描时间,超过1s会触发此事件
7.如何才能触发ESP_GAP_BLE_SCAN_TIMEOUT_EVT事件?