ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【BLE蓝牙学习开发笔记】BLE-HCI-Error-Code

2022-01-28 23:34:14  阅读:266  来源: 互联网

标签:STATUS Code Host CODE Error BLE HCI define


文章目录


1 前言

目前博主主要在开发IoT相关的项目,在室内IoT领域用到最多的通讯方式无非就是Wi-Fi和BLE蓝牙。而目前市面上有一些芯片,它既支持Wi-Fi也支持BLE,这种芯片也就是我们常说的Combo芯片,像平头哥的TG7100C,上海博通的BL2028N,都是这一类芯片。

2 什么是BLE?

蓝牙低能耗Bluetooth Low Energy,或称Bluetooth LEBLE,旧商标Bluetooth Smart)也称低功耗蓝牙,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标安防、家庭娱乐等领域的新兴应用。相较经典蓝牙,低功耗蓝牙旨在保持同等通信范围的同时显著降低功耗和成本。(参见:百度百科

蓝牙低能耗

3 BLE与HCI的关系?

3.1 BLE的分层设计

在 BLE 系统中不仅仅是物理层和硬件内容,根据整个 BLE 从上到下,大致分为了 Profile,Host,HCI,Controller 以及 硬件部分的 Baseband 和 RF。

image-20220128232005243

两个 BLE 通信,从逻辑上来看,是每个层的单独通信,从数据的流向来看,发送是自上而下,数据接收是自下而上。

Profile:主要是根据不同的应用场景,制定了最上层的协议交互。比如,心率的 Profile,电池电量检测的 Profile 等。

Host:为上层提供接口支持,自身维护了一些软件层次的协议和加密流程等等控制,纯软件行为。

HCI 的全称是:Host Interface Controller,是 Host 和 Controller 通信之间的接口。那么问题来了,Host 与 app 之间是直接的 Function call,那为啥 Host 与 Controller 之间要专门的定义两层软件之间的通信协议呢?这就要从 BLE 的产品形态说起了。稍后呈现。

Controller:向上负责向 Host 汇报状态,向下,接收 Host 的指令,与 Baseband 交互,协调、控制、管理硬件资源。

Modem:负责调制解调

RF:收发机负责接收/发送空中的数据包。

3.2 HCI层的作用

HCI 的全称是:Host Interface Controller,是 Host 和 Controller 通信之间的接口。

更为详细的介绍,可以参考:https://cxymm.net/article/zhoutaopower/96477626

4 BLE HCI Error Code

实战开发中,经常遇到BLE协议栈抛上来的ErrorCode,如果你不了解其中的含义,那么你将不能更进一步地去分析和解决问题。

这些ErrorCode其实是BLE协议中已经定义好的,具体如下所示:

#define 	BLE_HCI_STATUS_CODE_SUCCESS   0x00
#define 	BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND   0x01
#define 	BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER   0x02
#define 	BLE_HCI_AUTHENTICATION_FAILURE   0x05
#define 	BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING   0x06
#define 	BLE_HCI_MEMORY_CAPACITY_EXCEEDED   0x07
#define 	BLE_HCI_CONNECTION_TIMEOUT   0x08
#define 	BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED   0x0C
#define 	BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS   0x12
#define 	BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION   0x13
#define 	BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES   0x14
#define 	BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF   0x15
#define 	BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION   0x16
#define 	BLE_HCI_UNSUPPORTED_REMOTE_FEATURE   0x1A
#define 	BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS   0x1E
#define 	BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR   0x1F
#define 	BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT   0x22
#define 	BLE_HCI_STATUS_CODE_LMP_ERROR_TRANSACTION_COLLISION   0x23
#define 	BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED   0x24
#define 	BLE_HCI_INSTANT_PASSED   0x28
#define 	BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED   0x29
#define 	BLE_HCI_DIFFERENT_TRANSACTION_COLLISION   0x2A
#define 	BLE_HCI_PARAMETER_OUT_OF_MANDATORY_RANGE   0x30
#define 	BLE_HCI_CONTROLLER_BUSY   0x3A
#define 	BLE_HCI_CONN_INTERVAL_UNACCEPTABLE   0x3B
#define 	BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT   0x3C
#define 	BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE   0x3D
#define 	BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED   0x3E

5 更多分享

欢迎关注我的github仓库01workstation,日常分享一些开发笔记和项目实战,欢迎指正问题。

同时也非常欢迎关注我的CSDN主页和专栏:

【CSDN主页:架构师李肯】

【RT-Thread主页:架构师李肯】

【C/C++语言编程专栏】

【GCC专栏】

【信息安全专栏】

【RT-Thread开发笔记】

【freeRTOS开发笔记】

【BLE蓝牙学习开发笔记】

有问题的话,可以跟我讨论,知无不答,谢谢大家。

标签:STATUS,Code,Host,CODE,Error,BLE,HCI,define
来源: https://blog.csdn.net/szullc/article/details/122738043

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有