xref: /nrf52832-nimble/packages/NimBLE-latest/README.md (revision 042d53a763ad75cb1465103098bb88c245d95138)
1*042d53a7SEvalZero# 1 介绍
2*042d53a7SEvalZero
3*042d53a7SEvalZeroNimBLE 软件包是 RT-Thread 基于 [Apache NimBLE](https://github.com/apache/mynewt-nimble) 开源蓝牙 5.0 协议栈的移植实现,该协议栈提供完整的 Host 层和 Controller 层支持,目前支持 Nordic nRF51 和 nRF52 系列芯片。
4*042d53a7SEvalZero
5*042d53a7SEvalZero## 1.1 主要特性
6*042d53a7SEvalZero
7*042d53a7SEvalZero- 扩展广播(LE Advertising Extensions)
8*042d53a7SEvalZero- 2Mbit/s比特率的物理层
9*042d53a7SEvalZero- 长距离编码(Coded PHY for LE Long Range)
10*042d53a7SEvalZero- 高速不可连接广播(High Duty Cycle Non-Connectable Advertising)
11*042d53a7SEvalZero- 新的跳频算法(Channel Selection Algorithm #2)
12*042d53a7SEvalZero- 隐私1.2(LE Privacy 1.2)
13*042d53a7SEvalZero- 安全管理(SM),支持传统配对(LE Legacy Pairing),安全连接(LE Secure Connections),特定秘钥分发(Transport Specific Key Distribution)
14*042d53a7SEvalZero- 链路层PDU数据长度扩展(LE Data Length Extension)
15*042d53a7SEvalZero- 多角色并发(主机(central)/从机(peripheral), server/client)
16*042d53a7SEvalZero- 同时广播和扫描
17*042d53a7SEvalZero- 低速定向广播(Low Duty Cycle Directed Advertising)
18*042d53a7SEvalZero- 连接参数请求(Connection parameters request procedure)
19*042d53a7SEvalZero- LE Ping
20*042d53a7SEvalZero- 完整的GATT客户端,服务端,以及子功能
21*042d53a7SEvalZero- 抽象HCI接口层
22*042d53a7SEvalZero
23*042d53a7SEvalZero## 1.2 Profile和Service支持
24*042d53a7SEvalZero
25*042d53a7SEvalZero- 警报通知服务(ANS)
26*042d53a7SEvalZero- 即时报警服务(IAS)
27*042d53a7SEvalZero- 链路丢失服务(LLS)
28*042d53a7SEvalZero- 电池服务(BAS)
29*042d53a7SEvalZero- 设备信息服务(DIS)
30*042d53a7SEvalZero- 心率服务(HRS)
31*042d53a7SEvalZero- 自行车速度及步调(CSC)
32*042d53a7SEvalZero- 射频功率(TPS)
33*042d53a7SEvalZero
34*042d53a7SEvalZero## 1.3 Mesh 特性
35*042d53a7SEvalZero
36*042d53a7SEvalZero- 广播和GATT承载(Advertising and GATT bearers)
37*042d53a7SEvalZero- PB-GATT 和 PB-ADV provisioning
38*042d53a7SEvalZero- 模型层(Foundation Models (server role))
39*042d53a7SEvalZero- 支持中继(Relay support)
40*042d53a7SEvalZero- 支持GATT代理(GATT Proxy)
41*042d53a7SEvalZero
42*042d53a7SEvalZero更多关于 NimBLE Stack 的介绍请参考 ``http://mynewt.apache.org/latest/network/docs/index.html``。
43*042d53a7SEvalZero
44*042d53a7SEvalZero## 1.4  目录结构
45*042d53a7SEvalZero
46*042d53a7SEvalZero```
47*042d53a7SEvalZeroNimBLE
48*042d53a7SEvalZero   ├───apps                   /* Bluetooth 示例应用程序 */
49*042d53a7SEvalZero   │   ├───blecent
50*042d53a7SEvalZero   │   ├───blecsc
51*042d53a7SEvalZero   │   ├───blehci
52*042d53a7SEvalZero   │   ├───blehr
53*042d53a7SEvalZero   │   ├───blemesh
54*042d53a7SEvalZero   │   ├───blemesh_light
55*042d53a7SEvalZero   │   ├───blemesh_shell
56*042d53a7SEvalZero   │   ├───bleprph
57*042d53a7SEvalZero   │   ├───bleuart
58*042d53a7SEvalZero   │   ├───btshell
59*042d53a7SEvalZero   │   ├───ext_advertiser
60*042d53a7SEvalZero   │   └───ibeacon
61*042d53a7SEvalZero   ├───docs                   /* 官方文档及 API 说明 */
62*042d53a7SEvalZero   ├───ext
63*042d53a7SEvalZero   │   └───tinycrypt          /* Tinycrypt 加密库 */
64*042d53a7SEvalZero   ├───nimble
65*042d53a7SEvalZero   │   ├───controller         /* Controller 实现 */
66*042d53a7SEvalZero   │   │   ├───include
67*042d53a7SEvalZero   │   │   └───src
68*042d53a7SEvalZero   │   ├───drivers            /* Nordic 系列 Phy 驱动 */
69*042d53a7SEvalZero   │   │   ├───nrf51
70*042d53a7SEvalZero   │   │   └───nrf52
71*042d53a7SEvalZero   │   ├───host               /* Host Stack(主机控制器)实现 */
72*042d53a7SEvalZero   │   │   ├───include
73*042d53a7SEvalZero   │   │   ├───mesh           /* Mesh 组网功能 */
74*042d53a7SEvalZero   │   │   ├───pts            /* PTS 测试相关 */
75*042d53a7SEvalZero   │   │   ├───services       /* 通用的 Profile */
76*042d53a7SEvalZero   │   │   │   ├───ans
77*042d53a7SEvalZero   │   │   │   ├───bas
78*042d53a7SEvalZero   │   │   │   ├───bleuart
79*042d53a7SEvalZero   │   │   │   ├───dis
80*042d53a7SEvalZero   │   │   │   ├───gap
81*042d53a7SEvalZero   │   │   │   ├───gatt
82*042d53a7SEvalZero   │   │   │   ├───ias
83*042d53a7SEvalZero   │   │   │   ├───lls
84*042d53a7SEvalZero   │   │   │   └───tps
85*042d53a7SEvalZero   │   │   ├───src
86*042d53a7SEvalZero   │   │   ├───store
87*042d53a7SEvalZero   │   │   ├───tools
88*042d53a7SEvalZero   │   │   └───util
89*042d53a7SEvalZero   │   ├───include
90*042d53a7SEvalZero   │   │   └───nimble
91*042d53a7SEvalZero   │   ├───src
92*042d53a7SEvalZero   │   └───transport          /* HCI 传输抽象层 */
93*042d53a7SEvalZero   │       ├───emspi
94*042d53a7SEvalZero   │       ├───ram
95*042d53a7SEvalZero   │       ├───socket
96*042d53a7SEvalZero   │       └───uart
97*042d53a7SEvalZero   └───porting                /* OS 抽象层及系统配置 */
98*042d53a7SEvalZero       ├───nimble
99*042d53a7SEvalZero       │   ├───include
100*042d53a7SEvalZero       │   └───src
101*042d53a7SEvalZero       └───npl
102*042d53a7SEvalZero           └───rtthread       /* RT-Thread OS 接口实现 */
103*042d53a7SEvalZero               ├───include
104*042d53a7SEvalZero               │   ├───config /* NimBLE 协议栈配置选项 */
105*042d53a7SEvalZero               │   ├───console
106*042d53a7SEvalZero               │   └───nimble
107*042d53a7SEvalZero               └───src
108*042d53a7SEvalZero```
109*042d53a7SEvalZero
110*042d53a7SEvalZero## 1.5 许可证
111*042d53a7SEvalZero
112*042d53a7SEvalZeroNimBLE 软件包遵循 Apache-2.0 许可,详见 LICENSE 文件。
113*042d53a7SEvalZero
114*042d53a7SEvalZero## 1.6 依赖
115*042d53a7SEvalZero
116*042d53a7SEvalZero- RT_Thread 3.0+
117*042d53a7SEvalZero
118*042d53a7SEvalZero## 2 获取软件包
119*042d53a7SEvalZero
120*042d53a7SEvalZero使用 NimBLE 软件包需要在 RT-Thread 的包管理中选中它,具体路径如下:
121*042d53a7SEvalZero
122*042d53a7SEvalZero```
123*042d53a7SEvalZeroRT-Thread online packages
124*042d53a7SEvalZero    IoT - internet of things  --->
125*042d53a7SEvalZero--- NimBLE:An open-source Bluetooth 5.0 stack porting on RT-Thread
126*042d53a7SEvalZero      Bluetooth Role support  --->
127*042d53a7SEvalZero      Host Stack Configuration  --->
128*042d53a7SEvalZero      Controller Configuration  --->
129*042d53a7SEvalZero      Bluetooth Mesh support  --->
130*042d53a7SEvalZero      HCI Transport support  ----
131*042d53a7SEvalZero      Device Driver support  ----
132*042d53a7SEvalZero      Log level (INFO)  --->
133*042d53a7SEvalZero      Bluetooth Samples (Not enable sample)  --->
134*042d53a7SEvalZero(1)   Maximum number of concurrent connections
135*042d53a7SEvalZero[*]   Device Whitelist Support
136*042d53a7SEvalZero(0)   The number of multi-advertising instances
137*042d53a7SEvalZero[ ]   Extended Advertising Feature Support
138*042d53a7SEvalZero      Version (latest)  --->
139*042d53a7SEvalZero
140*042d53a7SEvalZero```
141*042d53a7SEvalZero
142*042d53a7SEvalZero**Bluetooth Role support**  :  配置 BLE角色支持(Central/Peripheral/Broadcaster/Observer) ;
143*042d53a7SEvalZero**Host Stack Configuration**  :  配置 Host 相关功能;
144*042d53a7SEvalZero**Controller Configuration**  :  配置 Controller 相关功能;
145*042d53a7SEvalZero**Bluetooth Mesh support**  :  Mesh 特性支持及配置;
146*042d53a7SEvalZero**HCI Transport support** : 配置HCI层传输方式
147*042d53a7SEvalZero**Device Driver support ** : 底层 SOC Phy 支持
148*042d53a7SEvalZero**Log level (INFO)**  :  配置协议栈日志等级;
149*042d53a7SEvalZero**Bluetooth Samples**  :  配置示例应用;
150*042d53a7SEvalZero**Version**  :  软件包版本选择;
151*042d53a7SEvalZero
152*042d53a7SEvalZero配置完成后让 RT-Thread 的包管理器自动更新,或者使用 pkgs --update 命令更新包到 BSP 中。
153*042d53a7SEvalZero
154*042d53a7SEvalZero## 3 使用 NimBLE 软件包
155*042d53a7SEvalZero
156*042d53a7SEvalZero配合独立的 nrf52832-nimble bsp 使用,参考 https://github.com/EvalZero/nrf52832-nimble157*042d53a7SEvalZero
158*042d53a7SEvalZero## 4 注意事项
159*042d53a7SEvalZero- NimBLE 当前处于开发阶段,暂时只支持 Nodic nRF52832 MCU,参见 [nrf52832-bsp](https://github.com/EvalZero/nrf52832-nimble)
160*042d53a7SEvalZero
161*042d53a7SEvalZero## 5、联系方式 & 感谢
162*042d53a7SEvalZero
163*042d53a7SEvalZero- 维护:RT-Thread 开发团队
164*042d53a7SEvalZero- 主页:https://github.com/RT-Thread-packages/nimble
165