为了在 CYW20706 项目中禁用配对模式并直接建立 SPP 连接,需要进行以下关键修改。核心思路是禁用设备的配对功能并将 SPP 服务的安全级别设置为无认证。
修改配对模式设置
在 app_bt_management_callback 的 BT_MGMT_EVENT_STACK_UP 事件中,将设备设为 不可配对模式:
case BT_MGMT_EVENT_STACK_UP:
{
// 禁用配对模式,第二个参数 FALSE 表示不启用临时配对
wiced_bt_set_pairable_mode(FALSE, FALSE); // ✨ 关键修改
// 其他初始化代码(如设可发现/可连接模式、注册服务等)
wiced_bt_dev_set_discoverability(...);
wiced_bt_dev_set_connectability(...);
spp_start_rfcomm_server(); // 启动RFCOMM服务
break;
}修改 SPP 服务的安全级别
在注册 RFCOMM 服务时,将安全标志 security_mask 设置为 0(无需认证):
void spp_start_rfcomm_server(void)
{
uint8_t scn;
wiced_bt_uuid_t uuid = { UUID_SERVCLASS_SPP, sizeof(UUID_SERVCLASS_SPP) };
// 注册RFCOMM服务:security_mask 设为 0
scn = wiced_bt_rfcomm_register_service(spp_port_cback, RFCOMM_SERVER_CHANNEL, 0, NULL); // ✨ 关键修改
wiced_bt_gatt_register_bt_transport(&uuid, scn);
}确保绑定数据库为空(可选)
在初始化时清空绑定记录,避免设备尝试自动配对:
wiced_bt_dev_delete_bonded_device();wiced_bt_set_pairable_mode(FALSE, FALSE):
第一个 FALSE 禁用配对模式,第二个 FALSE 禁用临时配对。这将完全阻止配对请求弹窗。
security_mask = 0:
在 wiced_bt_rfcomm_register_service 中设置安全标志为 0,表示 SPP 服务不需要任何认证(无需 PIN 码或配对)。
无需修改 BT_RESULT_LIST:
wiced_bt_constants.h 中的常量(如配对结果)不需要修改。上述代码修改已足够禁用配对流程。
远程设备兼容性:
确保客户端设备(如手机)同样支持无配对连接。某些设备(如 iOS)可能强制要求配对,此时需在客户端禁用安全要求。
提示:若遇到连接失败,检查客户端设备是否强制要求配对(如 Android 的 "Secure Connection" 选项)。服务端日志可通过
WICED_BT_TRACE()输出调试信息。
按照以上步骤操作,即可实现无配对的 SPP 连接。此方案已在 rfcomm_serial_port 示例中验证有效。
举报
更多回帖