1--一个从机都没有 扫描时间到了 就停止了
case ESP_GAP_SEARCH_INQ_CMPL_EVT:
ESP_LOGI(HCI_TAG, "X ESP_GAP_SEARCH_INQ_CMPL_EVT 程序会截至到这里 表示扫描的时间到了 一个满足条件的从机都没有扫到");
esp_ble_gap_start_scanning(10);//我再次开始扫描 这里是10S 使用串口工具看 就是实打实的10S 如果还是没有满足条件的从机 那就是10S后再次到这里过来 循环 这样维持 永不停止的扫描
break;
default:
ESP_LOGI(HCI_TAG, "YYYYYYYYYYYY????????YYYYYYY%d",event);
break;
}
break;
源码是30S 它是独立的
这是一个循环 有没有别的 永不停止的烧苗呢?
ESP32开发笔记 如何实现 demo gatt client永久扫描_q911997的博客-CSDN博客_esp32 gatt_client
答案是可以的?
当 duration 值为 0 时,将会永久扫描?而不不产?生超时。
好像也不是很好 有时候需要断开扫描的
------------------
2--MTU
case ESP_GATTC_CONNECT_EVT:{
ESP_LOGI(GATTC_TAG, "6 ESP_GATTC_CONNECT_EVT conn_id %d, if %d", p_data->connect.conn_id, gattc_if);
gl_profile_tab[PROFILE_A_APP_ID].conn_id = p_data->connect.conn_id;
memcpy(gl_profile_tab[PROFILE_A_APP_ID].remote_bda, p_data->connect.remote_bda, sizeof(esp_bd_addr_t));
ESP_LOGI(HCI_TAG, "6 准备连接这个MAC的从机 REMOTE BDA:");
esp_log_buffer_hex(GATTC_TAG, gl_profile_tab[PROFILE_A_APP_ID].remote_bda, sizeof(esp_bd_addr_t));
//esp_err_t mtu_ret = esp_ble_gattc_send_mtu_req (gattc_if, p_data->connect.conn_id);
//if (mtu_ret){
// ESP_LOGE(GATTC_TAG, "config MTU error, error code = %x", mtu_ret);
//}
//ESP_LOGI(HCI_TAG, "6 <KK> 设置MTU");
/*24日--测试扫描150次 成功100次 失败50次 所以暂时不设置这个试试 优化 1*/
/*25日--测试如果开启MTU的测试 那么主机收到的消息是每个142 如果不放开的话 不执行的话 那就每包20个*/
break;
如果没有上面的mtu设置 那么
每次收到从机是20
放开代码 设置MTU那就和树莓派一样 那么树莓派的设置MYU在乃????
?
33333333
排在前面的是 设置扫描参数? ? ? case ESP_GATTC_REG_EVT: ? ? ? ? esp_ble_gap_set_scan_params(&ble_scan_params); 随后火车轰轰轰启动了
优化建议 https://blog.csdn.net/qq_36347513/article/details/118103231?spm=1001.2014.3001.5506 static esp_ble_scan_params_t ble_scan_params = { ? ? .scan_type ? ? ? ? ? ? ?= BLE_SCAN_TYPE_PASSIVE, ? ? .own_addr_type ? ? ? ? ?= BLE_ADDR_TYPE_PUBLIC, ? ? .scan_filter_policy ? ? = BLE_SCAN_FILTER_ALLOW_ALL, ? ? .scan_interval ? ? ? ? ?= 0x30, ? ? .scan_window ? ? ? ? ? ?= 0x20, ? ? .scan_duplicate ? ? ? ? = BLE_SCAN_DUPLICATE_ENABLE };
参数的意义
BLE_SCAN_TYPE_ACTIVE---主动扫描
BLE_SCAN_TYPE_PASSIVE--被动扫描
主动扫描就可以可以拿到扫描应答包 而被动扫描就没有 看图
实际测试 因为我们dialog的代码是名字放在扫描应答包 如果才有主动扫描 就可以正常扫到 连接 如果用被动扫描 就程序走不下去
扫描策略--目前没有使用
时间 看图
2---参数 https://blog.csdn.net/qq_40537092/article/details/119564866?spm=1001.2014.3001.5506 typedef struct { ? ? esp_ble_scan_type_t ? ? scan_type; ? ? ? ? ? ? ?/*!< 扫描类型 */ ? ? esp_ble_addr_type_t ? ? own_addr_type; ? ? ? ? ?/*!< 主人地址类型 */ ? ? esp_ble_scan_filter_t ? scan_filter_policy; ? ? /*!< 扫描过滤政策 */ ? ? uint16_t ? ? ? ? ? ? ? ?scan_interval; ? ? ? ? ?/*!< 扫描间隔。这被定义为从控制器开始其最后一次 LE 扫描到开始后续 LE 扫描的时间间隔*/ ? ? //范围:0x0004 到 0x4000? ? ? //默认值:0x0010 (10 ms)? ? ? //时间 = N * 0.625 毫秒 ? ? //时间范围:2.5 毫秒到 10.24 秒 ? ? uint16_t ? ? ? ? ? ? ? ?scan_window; ? ? ? ? ? ?/*!</* !< 扫描窗口。LE 扫描的持续时间。LE_Scan_Window 应小于或等于 LE_Scan_Interval */? ? ? //范围:0x0004 到 0x4000 //默认值:0x0010(10 毫秒) ? ? //时间 = N * 0.625 毫秒 ? ? //时间范围:2.5 毫秒到 10240 毫秒 ? ? esp_ble_scan_duplicate_t ?scan_duplicate; ? ? ? /*!< Scan_Duplicates参数控制链路层是否应该被过滤复制的广告报告(BLE_SCAN_DUPLICATE_ENABLE)给主机,或者链路层是否应该生成收到的每个包的广告报告 */ } esp_ble_scan_params_t;
https://blog.csdn.net/qq_36347513/article/details/118103231?spm=1001.2014.3001.5506
1---https://mp.weixin.qq.com/s/J1MZGaGqlTXR9aeaUFuBRg 丢弃重复的
|