赛普拉斯蓝牙BLE---主机协议栈事件描述

[复制链接]
1221|3
手机看帖
扫描二维码
随时随地手机跟帖
阳光豆苗|  楼主 | 2016-3-30 13:51 | 显示全部楼层 |阅读模式
以下内容纯属个人翻译,有误之处还望指出!

赛普拉斯蓝牙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 。。。。


okyouwin| | 2016-3-30 15:09 | 显示全部楼层
翻译不错,多谢楼主分享了。

使用特权

评论回复
qiangg| | 2016-3-30 15:14 | 显示全部楼层
楼主好人啊,这个很好

使用特权

评论回复
zzzhui| | 2016-3-30 15:17 | 显示全部楼层
不错,标记下,应该会用的着

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

94

主题

469

帖子

8

粉丝