如何为白名单操作配置STM32WB LE中央(客户端)或外围设备(服务器)“第3部分”
继续第1部分第2部分3.2客户端配置和设置现在有必要打开和编辑客户端应用程序。需要进行以下修改。表5显示了SW 1功能所需的修改。。。
续第一部分第二部分
现在需要打开和编辑客户端应用程序。需要进行以下修改。
表5显示了SW 1功能所需的修改。
表5:客户端交换机功能修改
表6:客户修改
在连接过程的最后阶段,将对客户端功能进行总结。如前所述,定义Pass 1、Pass 2状态以演示白名单连接过程之后的正常连接过程要有效得多。
表7将这些状态分解为两个部分,如图所示。
表7:重新连接的国家
函数调用,
tBleStatus aci_gap_start_general_connection_secursh_proc(uint8_t LE_Scan_Type,
uint16_t LE_扫描间隔,
uint16_t LE_扫描窗口,
uint8_t所有者地址类型,
uint8_t扫描_过滤器_策略,
uint8_t过滤器_副本);
设置以下关键参数:
LE_Scan_Type=活动扫描(0x01)
所有者地址类型=公共地址
Scanning_Filter_Policy=忽略不在白名单中的设备(0x01)
其他值不会影响连接机制。
需要注意的是,白名单并不是客户端可以用来连接特定设备的唯一方法。函数调用,
tBleStatus aci_gap_start_auto_connection_secursh_proc(uint16_t LE_Scan_Interval,
uint16_t LE_扫描窗口,
uint8_t所有者地址类型,
uint16_t连接间隔分钟,
uint16_t连接间隔最大值,
uint16_t连接专利,
uint16_t监督超时,
uint16_t最小CE_长度,
uint16_t最大_CE_长度,
uint8_t白名单条目的数目,
const Whitelist_Entry_t*Whitelist_Eentry);
可以由客户端用来直接建立与它在扫描之后或扫描期间看到的设备的连接,它可以正在搜索可能正在广告或可能没有广告的白名单设备的连接并且它可以发起与不在白名单中但客户端知道服务器公共地址的设备的连接。
第1条
第二条
第四条
3.2客户端配置和设置
现在需要打开和编辑客户端应用程序。需要进行以下修改。
表5显示了SW 1功能所需的修改。
表5:客户端交换机功能修改
app_ble.c(客户端) | |
代码修改 | 议论 |
无效APP_BLE_Key_Button1_Action(无效) { #如果OOB_DEMO==0 P2PC_APP_SW1_按钮动作(); #其他 如果(P2P_Client_APP_Get_State()!=APP_BLE_CONNECTED_CLIENT) { UTIL_SEQ_Setsk(1<<CFG_TASK_START_SCAN_ID,CFG_SCH_PRIO_0); } 其他的 { P2PC_APP_SW1_按钮动作(); } #结束语 } |
在app_ble.c中,SW 1被使用了两次。 第一次按下时,扫描 并且连接将在 响应于广告服务器。 第二次按下时 连接将通过终止 ACI_GAP_终止命令。 客户端将开始新的扫描,搜索 对于白名单设备 |
表6:客户修改
p2p客户端应用程序 | |
代码修改 | 议论 |
/*用户代码开始FD*/ 无效P2PC_APP_SW1_Button_Action(无效) { /*第二次按下SW 1时,过程到aci_gap_terminate*/ /*这将完成绑定并将白名单保存在客户端和服务器上*/ APP_DBG_MSG(“--SW1按下终止连接而不重置”); APP_DBG_MSG(“\n”); aci_gap_terminate(P2P_Client_App_Context.ConnectionHandle,0x13); /*UTIL_SEQ_Setsk(1<<CFG_TASK_SW1_BUTTON_PUSHED_ID,CFG_SCH_PRIO_0)*/ } /*用户代码结束FD*/ |
当按下SW1时 第一次,命令 Aci_gap_terminate()为 发送到服务器。 这将断开客户端的连接 来自服务器。 当服务器使用其白名单广告设置重新启动广告时,客户端将使用其白列表设置和筛选策略进行扫描。 |
在连接过程的最后阶段,将对客户端功能进行总结。如前所述,定义Pass 1、Pass 2状态以演示白名单连接过程之后的正常连接过程要有效得多。
表7将这些状态分解为两个部分,如图所示。
表7:重新连接的国家
静态无效Connect_Request(无效) { /*用户代码开始Connect_Request_1*/ /*用户代码结束Connect_Request_1*/ tBleStatus结果; APP_DBG_MSG(“\r\n\r\n**创建到服务器的连接**\r\n\r\n”); 如果(BleApplicationContext.Device_Connection_Status!=应用程序_连接_连接) { 如果(通过==1) { result=aci_gap_create_ connection(SCAN_, 扫描_ L, PUBLIC_ADDR、SERVER_REMOTE_bdadr, PUBLIC_ADDR, CONN_ P1, CONN_ P2, 0中, SUPERV_TIMEOUT, CONN_ 1, CONN_L2); } |
标准连接请求 定义Pass 1=初始无白名单连接 响应于从服务器接收到的非白名单初始广告,启动创建连接 |
如果(通过==2) { aci_gap_start_general_connection_secursh_proc(0x01, SCAN_ P, 扫描_ L, PUBLIC_ADDR, 1. 1); result=aci_gap_create_ connection(SCAN_, 扫描_ L, PUBLIC_ADDR、SERVER_REMOTE_bdadr, PUBLIC_ADDR, CONN_ P1, CONN_ P2, 0中, SUPERV_TIMEOUT, CONN_ 1, CONN_L2); } 如果(结果==BLE_STATUS_SCCESS) { /*用户代码开始BLE_CONNECT_SUCCESS*/ /*用户代码结束BLE_CONNECT_SUCCESS*/ BleApplicationContext.Device_Connection_Status=APP_BLE_LP_CONNECTING; } |
一旦发送了断开连接命令,客户端就开始使用如图所示的设置进行新的广告 PUBLIC_ADDR必须与白名单服务器的PUBLIC_ADDR和扫描筛选器策略相匹配,因为设置为1,1指示客户端进行连接。(见下文解释) scan_rsp将根据内部白名单和绑定信息进行验证,以确保连接到正确的设备、服务器或外围设备。 |
函数调用,
tBleStatus aci_gap_start_general_connection_secursh_proc(uint8_t LE_Scan_Type,
uint16_t LE_扫描间隔,
uint16_t LE_扫描窗口,
uint8_t所有者地址类型,
uint8_t扫描_过滤器_策略,
uint8_t过滤器_副本);
设置以下关键参数:
LE_Scan_Type=活动扫描(0x01)
所有者地址类型=公共地址
Scanning_Filter_Policy=忽略不在白名单中的设备(0x01)
其他值不会影响连接机制。
3.3其他连接方式:
需要注意的是,白名单并不是客户端可以用来连接特定设备的唯一方法。函数调用,
tBleStatus aci_gap_start_auto_connection_secursh_proc(uint16_t LE_Scan_Interval,
uint16_t LE_扫描窗口,
uint8_t所有者地址类型,
uint16_t连接间隔分钟,
uint16_t连接间隔最大值,
uint16_t连接专利,
uint16_t监督超时,
uint16_t最小CE_长度,
uint16_t最大_CE_长度,
uint8_t白名单条目的数目,
const Whitelist_Entry_t*Whitelist_Eentry);
可以由客户端用来直接建立与它在扫描之后或扫描期间看到的设备的连接,它可以正在搜索可能正在广告或可能没有广告的白名单设备的连接并且它可以发起与不在白名单中但客户端知道服务器公共地址的设备的连接。
第1条
第二条
第四条