蓝牙核心规范(V5.2)4.0-深入详解之错误码

简介: 蓝牙核心规范(V5.2)4.0-深入详解之错误码

image.png

image.png

image.png

1.HCI命令错误


如果HCI_Command_Complete事件的HCI命令产生错误,则应HCI_Command_Complete事件中报告此错误。


如果发送带有错误代码的HCI_Command_Complete的HCI命令处理前向主机发送“成功”消息可能会在执行过程中发现错误然后,该错误可能会在服务器的正常完成命令中报告原始命令或在HCI_Command_Complete状态事件中。


一些HCI命令可能会产生需要报告给主机的错误,但没有足够的信息来确定通常将如何处理该命令。在这种情况下,可以使用两个事件向主机指示这个事件,即HCI_Command_Complete事件和HCI_Command_Status事件。使用的是这两个事件中的哪一个事件,这些事件都依赖于实现。

2.错误代码列表

image.png


(未完待补充)


对应代码宏定义:

/* Success code */
#define HCI_SUCCESS                                                  0x00
/* Possible error codes */
#define HCI_UNKNOWN_HCI_COMMAND                                      0x01
#define HCI_NO_CONNECTION                                            0x02
#define HCI_HW_FAILURE                                               0x03
#define HCI_PAGE_TIMEOUT                                             0x04
#define HCI_AUTHENTICATION_FAILURE                                   0x05
#define HCI_KEY_MISSING                                              0x06
#define HCI_MEMORY_FULL                                              0x07
#define HCI_CONN_TIMEOUT                                             0x08
#define HCI_MAX_NUMBER_OF_CONNECTIONS                                0x09
#define HCI_MAX_NUMBER_OF_SCO_CONNECTIONS_TO_DEVICE                  0x0A
#define HCI_ACL_CONNECTION_EXISTS                                    0x0B
#define HCI_COMMAND_DISSALLOWED                                      0x0C
#define HCI_HOST_REJECTED_DUE_TO_LIMITED_RESOURCES                   0x0D
#define HCI_HOST_REJECTED_DUE_TO_SECURITY_REASONS                    0x0E
#define HCI_HOST_REJECTED_DUE_TO_REMOTE_DEVICE_ONLY_PERSONAL_SERVICE 0x0F
#define HCI_HOST_TIMEOUT                                             0x10
#define HCI_UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE                   0x11
#define HCI_INVALID_HCI_COMMAND_PARAMETERS                           0x12
#define HCI_OTHER_END_TERMINATED_CONN_USER_ENDED                     0x13
#define HCI_OTHER_END_TERMINATED_CONN_LOW_RESOURCES                  0x14
#define HCI_OTHER_END_TERMINATED_CONN_ABOUT_TO_POWER_OFF             0x15
#define HCI_CONN_TERMINATED_BY_LOCAL_HOST                            0x16
#define HCI_REPETED_ATTEMPTS                                         0x17
#define HCI_PAIRING_NOT_ALLOWED                                      0x18
#define HCI_UNKNOWN_LMP_PDU                                          0x19
#define HCI_UNSUPPORTED_REMOTE_FEATURE                               0x1A
#define HCI_SCO_OFFSET_REJECTED                                      0x1B
#define HCI_SCO_INTERVAL_REJECTED                                    0x1C
#define HCI_SCO_AIR_MODE_REJECTED                                    0x1D
#define HCI_INVALID_LMP_PARAMETERS                                   0x1E
#define HCI_UNSPECIFIED_ERROR                                        0x1F
#define HCI_UNSUPPORTED_LMP_PARAMETER_VALUE                          0x20
#define HCI_ROLE_CHANGE_NOT_ALLOWED                                  0x21
#define HCI_LMP_RESPONSE_TIMEOUT                                     0x22
#define HCI_LMP_ERROR_TRANSACTION_COLLISION                          0x23
#define HCI_LMP_PDU_NOT_ALLOWED                                      0x24
#define HCI_ENCRYPTION_MODE_NOT_ACCEPTABLE                           0x25
#define HCI_UNIT_KEY_USED                                            0x26
#define HCI_QOS_NOT_SUPPORTED                                        0x27
#define HCI_INSTANT_PASSED                                           0x28
#define HCI_PAIRING_UNIT_KEY_NOT_SUPPORTED                           0x29


3.错误码详细描述


3.1 未知HCI命令(0x01)

未知的HCI命令错误代码表示控制器不理解主机发送的HCI命令数据包操作码。给出的选项代码可能不对应于本文档中指定的任何OpCode,或任何特定于供应商的OpCode,或该命令可能尚未实现。


3.2 未知的连接标识符(0x02)

未知连接标识符错误代码表示已从主机发送了一个应该标识连接的命令,但该连接不存在。


3.3  硬件故障(0x03)

硬件故障错误代码向主机指示控制器中的某个东西发生了故障,但无法用任何其他错误代码来描述。此错误代码所隐含的含义依赖于实现。


3.4 页面超时(0x04)

页面超时错误代码表明页面由于页面超时配置参数而超时。此错误代码可能只发生在HCI_Remote_Name_Request和HCI_Create_Connection命令中。


3.5 认证失败(0x05)

认证证失败错误代码表示配对或身份验证失败由于配对或身份验证过程中的结果不正确而失败。这可能是因为PIN或链接key不正确。


3.6 PIN或KEY缺失

PIN或密钥丢失错误代码用于因故障导致配对失败时缺少PIN,或由于缺少密钥而导致身份验证失败。

目录
相关文章
|
传感器 移动开发 物联网
【Bluetooth开发】蓝牙开发入门
【Bluetooth开发】蓝牙开发入门
618 0
|
存储 安全 算法
【BLE】 BLE配对绑定保姆级介绍
实现蓝牙通信安全,除了paring/bonding这种底层方式,用户也可以在应用层去实现相同功能,两者从功能上和安全性上没有本质区别,只不过应用层自己实现的话,需要自己选择密码算法,密钥生成,密钥交换等,如果你不是这方面的专家,你的应用就有可能会存在安全漏洞。设备跟手机绑定成功后,手机再次重连这个设备时,就会自动跳过service discovery过程,换句话说,配对的时候手机会把设备所有服务和characteristic的handle保存下来,二次重连的时候,直接用以前保存的handle值去操作设备。
5137 1
【BLE】 BLE配对绑定保姆级介绍
|
物联网
低功耗蓝牙(BLE)设备常用的4种角色
对于主从设备的其它说法,大家需要了解一下。对于Central和Peripheral有多种说法,上面我们说的是主从,还有客户端/服务端,中心设备/外围设备,我们这里简单介绍一下,客户端(Client)对应上面的Central,接收数据;服务端(Server)对应上面的额Peripheral,提供数据,这个需要和网站的服务器/客户端区别一下;中心设备(Central)和外围设备(Peripheral),其实上面叫中心设备和外围设备。上面主设备(Master)和从设备(Slave)应该对应主/从。这个根据个人习惯,主/从用的比较多,如果在蓝牙中提到这些知道就行了。
1532 0
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
2768 0
蓝牙核心规范(V5.3)-深入详解之SCO和eSCO的异同
|
机器学习/深度学习 自然语言处理 算法
中断向量表的作用是什么?
【10月更文挑战第28天】中断向量表在计算机系统中扮演着至关重要的角色,它是实现中断处理、优先级管理、系统初始化以及硬件与软件交互的核心机制。通过中断向量表,计算机系统能够高效地响应各种中断事件,保证系统的稳定性、可靠性和实时性,为计算机的正常运行和各种应用程序的执行提供了有力支持。
1100 60
|
监控 前端开发 JavaScript
如何处理异步请求中的错误?
【10月更文挑战第29天】通过以上多种方法的综合运用,可以全面地处理异步请求中的各种错误,提高应用程序的稳定性和可靠性,同时为用户提供更好的错误反馈和体验。在实际开发中,应根据具体的项目需求和应用场景,选择合适的错误处理策略和方法,并进行充分的测试和优化。
|
物联网 API 数据库
一文带你认识蓝牙 GATT 协议
正所谓磨刀不误砍柴工,我们有必要先深入的学习一下 GATT 以及 GATT 相关的一些知识。 本文我们就来了解一下 蓝牙 GATT 到底是什么?同时了解下我们使用的 ESP32-C3 GATT示例的工程的代码结构。
8559 5
一文带你认识蓝牙 GATT 协议
|
传感器 Ubuntu Java
ESP-IDF 蓝牙开发实战 — 传感器数据上传及手机控制开发板
ESP32-C3 蓝牙部分我们学习了GATT,本文博主手把手带领大家使用 ESP32-C3的蓝牙做一个简单的小应用。
2350 0
ESP-IDF 蓝牙开发实战 — 传感器数据上传及手机控制开发板
|
Linux 编译器 测试技术
探索Linux中的objcopy命令:数据处理与分析的得力助手
`objcopy`是GNU工具集中的实用程序,用于复制和转换二进制目标文件,如ELF到S-record。它支持格式转换、内容提取和修改,如移除调试信息。命令参数包括指定输入/输出格式和复制特定段。示例用途有:`objcopy -O binary input.elf output.bin`(ELF转二进制)和`objcopy -j .text input.elf output.o`(复制.text段)。使用时注意文件格式、备份原始文件并查阅文档。对于处理和分析二进制数据,`objcopy`是不可或缺的工具。