CH573的BLE协议栈应用需求问题
  1. BLE作为从机使用时,如何手动断开蓝牙连接,有没有相关的接口可以调用?

  2. 应用程序的某个任务需要手动查询当前蓝牙处于连接状态还是广播状态,怎么操作?

断开可调用下面代码:

//这里的connHandle 是连接建立时候传进来的connection handle, 代表一路连接
extern bStatus_t GAPRole_TerminateLink( uint16 connHandle );


连接会有连接和断开会报事件上来,例程里面通常提供了函数:        

连接断开:Peripheral_LinkTerminated( pEvent );
连接建立:Peripheral_LinkEstablished( pEvent );

至于是否处于广播状态可以通过以下api获取:

//获取当前广播状态//0为非广播,非0为广播uint8_t adv_status;
GAPRole_GetParameter(GAPROLE_ADVERT_ENABLED, &adv_status );


一个要注意的地方:

 * 广播与连接 并不是互斥的, 可以存在连接建立后,仍然开启广播的情况(多连接场景).


应用里只需要一对一连接,不需要多连接,该怎么配置,其他任务需要随时可以查询蓝牙是否断开连接


两个选择:

1,定义一个变量, 在下面两个函数里面 分别复位和置位, 用这个变量作连接断开标识

连接断开:Peripheral_LinkTerminated( pEvent );

连接建立:Peripheral_LinkEstablished( pEvent );


2,直接判断connection handle值, 例程中,这个值,在断开后会赋值为0xffff, 连上后会赋值为对应的connection handle值

如在官方sdk中EXAM>BLE>Peripheral 例程中以下变量:

peripheralConnList.connHandle


只有登录才能回复,可以选择微信账号登录