UUID----私有服务与公有服务

一、什么是公有UUID和私有UUID

公有 = 官方身份证,大家都认识,直接用短号码。

私有 = 自己印的身份证,先把模板交给协议栈备案(sd_ble_uuid_vs_add),然后用短号码 + 类型

二、基础UUID、服务UUID、特性UUID

三、UUID的配置

1、公有服务UUID设置

公有服务UUID:你只需要填一个 16 位数字(服务 UUID)

复制代码
BLE_UUID_BLE_ASSIGN(ble_uuid, BLE_UUID_BATTERY_SERVICE);  // 0x180F
  • 你只写了一个 16 位数字 0x180F。

  • 没有"基础 UUID"出现。

  • 特性 UUID(如 0x2A19)是在添加特性时单独填的,也是 16 位数字。

公共服务的特性UUID:

复制代码
static ret_code_t battery_level_char_add(ble_bas_t * p_bas, const ble_bas_init_t * p_bas_init)
{
    // ...
    memset(&add_char_params, 0, sizeof(add_char_params));
    add_char_params.uuid = BLE_UUID_BATTERY_LEVEL_CHAR;   // <--- 这里就是特性 UUID
    // ...
}

2、私有服务UUID设置

私有服务:你需要填一个 128 位数组(基础 UUID)+ 多个 16 位数字(服务 UUID 和特性 UUID)

步骤 1:填基础 UUID(128 位数组)

复制代码
ble_uuid128_t base_uuid = {LBS_UUID_BASE};  // 这里是一堆 0x23,0xD1,...

步骤 2:把这个 128 位数组注册给协议栈

复制代码
sd_ble_uuid_vs_add(&base_uuid, &p_lbs->uuid_type);

步骤 3:填服务 UUID(16 位数字)

复制代码
ble_uuid.uuid = LBS_UUID_SERVICE;   // 比如 0x1523
ble_uuid.type = p_lbs->uuid_type;   // 告诉协议栈用刚才那个 128 位数组去扩展

私有服务的特性UUID:

复制代码
add_char_params.uuid = LBS_UUID_LED_CHAR;   // 比如 0x1525
add_char_params.uuid_type = p_lbs->uuid_type;  // 同样用那个类型

四、解释

四、一句话总结区别

  • 公有服务:只填 16 位数字(服务 UUID 和特性 UUID),协议栈自带基础 UUID 模板。

  • 私有服务:先填一个 128 位数组(基础 UUID),再填多个 16 位数字(服务 UUID 和特性 UUID),并告诉协议栈它们属于同一个基础 UUID。

相关推荐
NYFEA3 小时前
NF532重磅上新:高集成度13.56MHz非接触式控制器
嵌入式硬件
创界工坊工作室5 小时前
29-基于单片机的万年历设计
stm32·单片机·嵌入式硬件·proteus
国科安芯5 小时前
在轨服务与空间机器人任务中跨飞行器CANFD互连的共模与单粒子问题综述
嵌入式硬件·机器人·canfd·低轨卫星·商业航天·抗辐射
沐欣工作室_lvyiyi6 小时前
基于STM32的社区养老控制系统设计(论文+源码)
stm32·单片机·嵌入式硬件·社区养老控制系统·保定理工学院·华德学院·淮南师范学院
chengpei1476 小时前
硬改斐讯K2路由器32M Flash编译适配immortalwrt固件
嵌入式硬件·智能路由器
snow@li6 小时前
单片机:全景梳理核心原理与体系深度分析
单片机·嵌入式硬件
创界工坊工作室6 小时前
26-基于51单片机的智能热水器控制系统设计
stm32·单片机·嵌入式硬件·毕业设计·51单片机·proteus
NendoZen6 小时前
mangopi(芒果派)MQ-R T113 Buildroot开启adbd调试
linux·嵌入式硬件
碧海银沙音频科技研究院7 小时前
基于炬芯ATS308X内置音乐铃声与扫频音频功能实现
单片机·嵌入式硬件
硅基造物主7 小时前
18.从 IP 到 MQTT:STM32 用 AT 指令驱动 ESP-12F 上云的完整链路(含全套实战代码 + 踩坑清单)
网络·stm32·单片机·嵌入式硬件·网络协议·tcp/ip