以下内容纯属个人翻译,有误之处还望指出!
赛普拉斯蓝牙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协议栈;
CYBLE_EVT_TIMEOUT
这个事件在发生超时的时候产生,应用程序需要处理这个事件,超时的原因由CYBLE_TO_REASON_CODE_T定义
CYBLE_EVT_HARDWARE_ERROR
这个事件表明内部发生了硬件错误,需要复位硬件。
CYBLE_EVT_HCI_STATUS
这个事件由主机协议栈(Host Stack)产生。当控制器响应HCI命令返回错误码的时候,主机协议栈会产生此事件。
CYBLE_EVT_STACK_BUSY_STATUS
BLE协议栈忙或不忙时主机协议栈会触发这个事件。参数为BLE协议栈当前状态
BLE stack busy = CYBLE_STACK_STATE_BUSY,
BLE stack not busy = CYBLE_STACK_STATE_FREE
CYBLE_EVT_GAPC_SCAN_PROGRESS_RESULT
这个事件在每次发现设备的时候都会被触发;一个指向CYBLE_GAPC_ADV_REPORT_T类型结构体的指针会被当做事件参数返回。
CYBLE_EVT_GAP_AUTH_REQ
这个事件由外设或中心设备接收。
当外设接收到这个事件的时候,它需要调用CyBle_GappAuthReqReply() 函数来响应来自中心设备的认证请求。
当中心设备接收到这个事件的时候,意味着从设备要求中心设备初始化认证流程。中心设备需要调用CyBle_GappAuthReq()这个函数来初始化认证流程。一个指向CYBLE_GAP_AUTH_INFO_T类型结构体的指针作为事件参数返回。
CYBLE_EVT_GAP_PASSKEY_ENTRY_REQUEST
这个事件表明在配对过程中,设备需要发送配对密码。收到这个事件之后,要调用CyBle_GapAuthPassKeyReply() 函数,并给他传递有效的参数。这个事件并没有返回任何参数。
CYBLE_EVT_GAP_PASSKEY_DISPLAY_REQUEST
这个事件表明在配对过程中,设备要显示配对密钥。一个指向uint32类型的数据作为事件参数返回。配对密钥可以是任何6位十进制值。
CYBLE_EVT_GAP_AUTH_COMPLETE
这个事件表明认证程序已经完成。
事件参数包含了安全信息,该信息在CYBLE_GAP_AUTH_INFO_T结构体中定义。这个事件在以下三种操作结束时产生:
1、认证由一个最新连接的设备发起;
2、加密由一个已经绑定的设备发起;
3、重加密由一个连接已经加密的设备发起。
在加密或重加密期间,配对时交换的加密信息用于加密或重加密连接。因为这并不修改设备配对需要的认证参数,这个事件没有事件参数和加密操作结果。
CYBLE_EVT_GAP_AUTH_FAILED
设备之间的认证失败。CYBLE_GAP_AUTH_FAILED_REASON_T类型的返回值表明失败原因。
外设已停止或启动广播。这个事件在调用CyBle_GappEnterDiscoveryMode 和CyBle_GappExitDiscoveryMode函数之后产生。事件参数是uint8类型的状态值。如果这个值为0x00,表明成功,否则失败。
CYBLE_EVT_GAP_DEVICE_CONNECTED
连接到由蓝牙设备句柄标识的远端设备。事件参数包含一个指向设备句柄的uint8类型指针。
CYBLE_EVT_GAP_DEVICE_DISCONNECTED
与远端设备断开连接。事件参数指向的数据表明连接断开的原因。
CYBLE_EVT_GAP_ENCRYPT_CHANGE
有效连接的加密改变事件。evParam可以被解密为:
evParam[0] = 0x00 -> Encryption OFF
evParam[0] = 0x01 -> Encryption ON
Any other value of evParam[0] -> Error
这个事件在加密改变时对应用程序非常有益。应用程序也可以选择忽略这个事件。
CYBLE_EVT_GAP_RESOLVE_PVT_ADDR_VERIFY_CNF
CYBLE_EVT_GAPC_CONNECTION_UPDATE_COMPLETE
这个事件在主机要求控制器更新连接参数时产生。事件参数为指向CYBLE_GAP_CONN_PARAM_UPDATED_IN_CONTROLLER_T结构体的指针。
CYBLE_EVT_GAPC_SCAN_START_STOP
中心设备开始或停止扫描。这个事件在调用CyBle_GapcStartDiscovery和CyBle_GapcStopDiscovery函数的时候产生。事件参数包含扫描状态,是一个uint8类型的指针。0x00表明成功,否则失败。
CYBLE_EVT_GATTC_HANDLE_VALUE_NTF
通知从sever设备收到数据。事件参数是一个指向CYBLE_GATTC_HANDLE_VALUE_NTF_PARAM_T结构体的指针。
CYBLE_EVT_GATTC_HANDLE_VALUE_IND
表明从sever设备收到数据。事件参数是一个指向CYBLE_GATTC_HANDLE_VALUE_IND_PARAM_T的结构体指针
CYBLE_EVT_GATTS_DATA_SIGNED_CMD_REQ 。。。。
|