NRF52832学习笔记(39)——设备信息服务(DIS)

2021-11-20  本文已影响0人  Leung_ManWah

一、简介

Device Information Service(DIS)服务,它是对设备的制造商,设备软硬件版本控制,生产信息披露的一个非常好的方式。因此也建议大家在开发时都加入这个由SIG定义的标准服务。DIS服务可通过使用GATT在LE、BR/EDR或HS设备上传输。

协议细节可在 Bluetooth SIG官网——设备信息服务1.1 中查看。

二、服务内容

Specification Name Specification Type Assign Number Specification Level
Device Information Org.bluetooth.service.device_information 0x180A Adopted

它的16位短UUID是0x180A,用于公开设备制造商的信息,不依赖任何其他服务可独立存在。一个设备上只能有一个实例。在经典蓝牙和LE上都得到支持。

DIS服务包含以下特征:

编号 特征名 UUID 特征行为 实例 描述
1 Manufacturer Name String 0x2A29 只读 Newbit Studio 设备制造商的名称,写设备制造商为外界所熟识的名称。
2 Model Number String 0x2A24 只读 MI_Scale 由设备制造商定义,建议写为某个产品的型号。
3 Serial Number String 0x2A25 只读 AAAA-S032-4321 由制造商定义的产品编号,为每个产品赋一唯一的编号,可以按实际应用定义自己产品SN的格式。
4 Hardware Revision String 0x2A27 只读 0.9.0 产品的硬件编号,建议使用三位数以点相隔,分别表示主版本号,副版本号,发行编号(偶数发行,奇数调试)。
5 Firmware Revision String 0x2A26 只读 BLE-1.4.0 设备内固件的版本号,建议可以写该应用程序建立所使用的协议栈版本。
6 Software Revision String 0x2A27 只读 0.9.0 应用软件版本号,建议使用三位数以点相隔,分别表示主版本号,副版本号,发行编号(偶数发行,奇数调试)。
7 System ID 0x2A23 只读 - 包含OUI(Oranizationally Unique Identifier)和一个由制造商为该产品编排的唯一编号。
8 IEEE 11073-20601 Regulatory Certification Data List 0x2A2A 只读 - 设备要求的一个混合结构体,长度不定。这里的数据通常用于监管或者认证。
9 PnP ID 0x2A50 只读 - 包含由国标组织颁给制造商的编号,制造商定义的产品ID,由制造商定义的产品版本信息。

以上9个特征值并非都要包含到设备上,但越全面越好,若受限于代码空间,或者公司暂未加入国际组织,可以优先将 Manufacturer Name, Model Number, Serial Number, HW Revision, SW Revision, System ID 包含进来,其他 System ID 中的 OUI 可以没用 IC 原厂的编号。如 TI 公司的 OUI 便可取 0x000D。

三、添加服务

3.1 添加.c文件

需要把官方驱动例程添加到我们的工程目录里面:
路径是:工程目录\components\ble\ble_services\ble_dis

3.2 添加头文件路径

3.3 修改sdkconfig

在nRF_BLE_Services中勾选DIS服务


3.4 包含头文件和宏定义

#include "ble_dis.h"

#define MANUFACTURER_NAME               "test"                                  /**< Manufacturer. Will be passed to Device Information Service. */
#define HARDWARE_REVISION               "v1.0.0"
#define SOFTWARE_REVISION               "v1.0.0"
#define FIRMWARE_REVISION               "s132_nrf52_7.2.0"

3.5 修改服务初始化函数

在服务初始化函数中services_init()

添加以下内容:

ble_nus_init_t     nus_init;

// Initialize Device Information Service.
memset(&dis_init, 0, sizeof(dis_init));
    
ble_srv_ascii_to_utf8(&dis_init.manufact_name_str, (char *)MANUFACTURER_NAME);
ble_srv_ascii_to_utf8(&dis_init.hw_rev_str, (char *)HARDWARE_REVISION);
ble_srv_ascii_to_utf8(&dis_init.sw_rev_str, (char *)SOFTWARE_REVISION);
ble_srv_ascii_to_utf8(&dis_init.fw_rev_str, (char *)FIRMWARE_REVISION);

dis_init.dis_char_rd_sec = SEC_OPEN;
 
err_code = ble_dis_init(&dis_init);
APP_ERROR_CHECK(err_code);

3.6 查看服务

使用手机nRF Connect APP连接设备后查看:



• 由 Leung 写于 2021 年 11 月 20 日

• 参考:NRF51822蓝牙服务(6)——显示设备信息

上一篇下一篇

猜你喜欢

热点阅读