美文网首页
NRF52832学习笔记(39)——设备信息服务(DIS)

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

作者: Leung_ManWah | 来源:发表于2021-11-20 11:00 被阅读0次

    一、简介

    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)——显示设备信息

    相关文章

      网友评论

          本文标题:NRF52832学习笔记(39)——设备信息服务(DIS)

          本文链接:https://www.haomeiwen.com/subject/uujltrtx.html