以下内容纯属个人翻译,有误之处还望指出!
赛普拉斯蓝牙BLE协议栈会产生多种事件,在事件产生的时候会执行用户定义的回调函数,事件类型以参数形式传入。
主要有以下五种事件:
Generic events: 0x01 to 0x1F
GAP events: 0x20 to 0x3F
GATT events: 0x40 to 6F
L2AP events: 0x70 to 0x7F
Future use: 0x80 to 0xFF
下面对各个事件进行描述:
CYBLE_EVT_STACK_ON
这个事件在调用CyBle_StackInit ()函数时产生,该函数初始化并启动BLE协议栈;
BLE stack not busy = CYBLE_STACK_STATE_FREE
CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT
这个事件在每次发现设备的时候都会被触发;一个指向CYBLE_GAPC_ADV_REPORT_T类型结构体的指针会被当做事件参数返回。
当外设接收到这个事件的时候,它需要调用CyBle_GappAuthReqReply() 函数来响应来自中心设备的认证请求。
当中心设备接收到这个事件的时候,意味着从设备要求中心设备初始化认证流程。中心设备需要调用CyBle_GappAuthReq()这个函数来初始化认证流程。一个指向CYBLE_GAP_AUTH_INFO_T类型结构体的指针作为事件参数返回。
事件参数包含了安全信息,该信息在CYBLE_GAP_AUTH_INFO_T结构体中定义。这个事件在以下三种操作结束时产生:
1、认证由一个最新连接的设备发起;
2、加密由一个已经绑定的设备发起;
3、重加密由一个连接已经加密的设备发起。
在加密或重加密期间,配对时交换的加密信息用于加密或重加密连接。因为这并不修改设备配对需要的认证参数,这个事件没有事件参数和加密操作结果。
外设已停止或启动广播。这个事件在调用CyBle_GappEnterDiscoveryMode 和CyBle_GappExitDiscoveryMode函数之后产生。事件参数是uint8类型的状态值。如果这个值为0x00,表明成功,否则失败。
- evParam[0] = 0x00 -> Encryption OFF
- evParam[0] = 0x01 -> Encryption ON
- Any other value of evParam[0] -> Error