BLE蓝牙项目开发相关说明
1、蓝牙协议栈
蓝牙相关功能由底层协议栈负责监控、返回以及处理事件回调函数;在创建自定义服务时,协议栈将分配一个服务句柄;通过该句柄确定对应事件的处理功能。

2、SDK配置文件
在SDK_config.h文件中进行配置设置,在configuration wizard界面内选择与所需功能相对应的功能项即可完成设置

3、GAP和GATT
GATT全称为Generic Attribute profile协议,在线传输数据;而GAP则为Generic Access profile协议,在线前进行数据广播;两者均通过直接配置协议栈来实现相关功能

4、profile
项目开发是以profile为核心部分进行的,在依据项目的需求基础上 SIG已推出多种基于实际应用的标准化配置文件 用户可根据特定需求定制属于自己的配置方案
该术语被用来描述各种蓝牙应用场景,规范了蓝牙设备与其他设备之间的一般通信行为。通常情况下, profile会指定参与的角色,并明确所需的服务内容,推荐使用的广播参数设置,包括建立连接的具体过程。

5、服务和特征
服务是一组特征集合与它们所嵌入的设备之间的交互机制;一个服务可能包含多个子特征;该服务功能由嵌入在设备中的特定能力构成;每个服务代表设备的一项核心功能。每个子特征由三个关键组成部分构成:声明域、数值域和描述符域;其中声明域与数值域是不可或缺的关键组成部分;而描述符字段最多可配置多个。若使用了通知或指示功能,则必须配置客户端特征配置描述符CCCD。该服务支持以下四种基本属性:Read读属性、Notify通知属性、Write写属性与WriteWithout Response无反馈写操作(仅用于无需返回结果的高效 write 操作)。从其命名意义来看:WriteWithout Response即无反馈 write 操作具有以下特点:无需向应用层返回结果信息;完全依赖协议层进行数据传输;这种设计使得 write 操作速度远超协议处理能力时仍能保证数据一致性;但同时也带来了潜在的数据丢失风险

6、UUID
基于现有技术的发展情况而言,在设计哈希算法时采用了 128 位基数与 16 位扩展数据相结合的方式。具体来说,在实际应用中该方案会将 16 位扩展数据用于取代原始哈希算法中的第 12 和 13 个字节位置。
蓝牙广播中对服务 UUID 格式定义都有三种 16 bit UUID、32 bit UUID、128 bit UUID:
16bit 和 32bit 的 UUID 与 128bit 的值之间转换关系:
128_bit_UUID = 16_bit_UUID * 2^96 + Bluetooth_Base_UUID
128_bit_UUID = 32_bit_UUID * 2^96 + Bluetooth_Base_UUID
其中 Bluetooth_Base_UUID 定义为 00000000-0000-1000-8000-00805F9B34FB


