一、前言
本篇将编写代码让主机主动断开与从机的BLE连接。
二、阅读说明
1、泰凌微芯片开发学习者。2、芯科芯片开发学习者。3、蓝牙 spec学习者。
三、正文
1、使用的demo
泰凌芯片:ble_master_kma_dongle
芯科芯片:Bluetooth - SoC Blinky
2、断开API函数介绍
/*** @brief for user to start disconnection process in master role .* @param[in] handle - connect handle* @param[in] reason - terminate reason* @return status, 0x00: succeed* other: failed*/ble_sts_t blm_ll_disconnect (u16 handle, u8 reason);
齐总handle是句柄,单连接的handle是固定的值为BLM_CONN_HANDLE,reason为断开的原因,其中断开原因为枚举类型,大家可以参考“tc_ble_single_sdkstackbleble_common.h”中的ble_sts_t。
平时我们主动断开可以填写HCI_ERR_REMOTE_USER_TERM_CONN,如下是该值所对应的数值。
3、断开连接回调函数
如上图所示,在blm_disconnect_event_handle()函数中增加如下打印代码。
printf("nlink disconnect sucess,reason = %02xn",pDisConn->reason );
在断开之后会打印出相关的log。
4、编写主动断开的函数
void mater_send_disconnect_cmd(){static u32 time_count = 0;static u8 flg = 0;if(blc_ll_getCurrentState() == BLS_LINK_STATE_CONN){if(flg == 0){time_count = clock_time();flg = 1;}if((flg == 1) && (clock_time_exceed(time_count, 5000000))){flg = 2;blm_ll_disconnect (BLM_CONN_HANDLE, HCI_ERR_REMOTE_USER_TERM_CONN);printf("nsend disconnect cmd successn");}}}
上述代码的作用为,当连接成功之后,延时5s,发送断开指令。
备注:该函数需要放在主循环里面。
5、串口打印结果
send disconnect cmd success
link disconnect sucess,reason = 16
上述是打印出来的结果,这里发现一个问题,打印出来的数值为0x16,和我们人为给的数值0x13不符合,本篇先不进行讲解,留到下篇再进行讲解。
四、结尾
本篇的讲解了主机主动断开的API函数。
232