一、简介

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)相关推荐

  1. nrf52832 学习笔记(七)蓝牙协议层级理解

    nrf52832 学习笔记(七)蓝牙协议层级理解 本文主要由一下几篇文档摘录汇总而成 ,如有错误欢迎斧正 da14531 蓝牙协议文档 深入浅出低功耗蓝牙(BLE)协议栈 低功耗蓝牙ATT/GATT/ ...

  2. nrf52832 学习笔记(三)蓝牙从机广播

    nrf52832 学习笔记(三)蓝牙从机广播 蓝牙从机要想被主机连接,首先需要发送广播信息,周围主机通过扫描广播信号,根据从机的广播信息,判断是否连接. 蓝牙协议栈初始化 不管是主机还是从机,要想使用 ...

  3. nrf52832 学习笔记(六)配对和绑定

    nrf52832 学习笔记(六)配对和绑定 配对绑定推荐博客低功耗蓝牙配对绑定解读和实践 蓝牙在配对之前都是明文通信的,也就是说主从机之间传输的数据包可以被第三方抓取分析逆向,而且如果没有配对,谁都可 ...

  4. NRF52832学习笔记(38)——修改发射功率

    一.背景 蓝牙接收信号强度 RSSI 的直接影响因素就是蓝牙信号的发射功率.发射功率就是你所使用的设备(开发板.手机)所发射出来给主机或从机设备的信号强度.同时在实际应用当中,时常也需要修改蓝牙的发射 ...

  5. nrf52832 学习笔记(四)蓝牙主机扫描

    nrf52832 学习笔记(四)蓝牙主机扫描 从机发出广播后就需要主机进行扫描了,主机扫描之前和从机一样,也需要协议栈初始化.GAP初始化.GATT初始化,这些和从机类似,参考 nrf52832 学习 ...

  6. Windows phone 8 学习笔记(7) 设备

    Windows phone 8 学习笔记(7) 设备 原文:Windows phone 8 学习笔记(7) 设备 本节主要涉及到 Windows phone 8 手机支持的各类设备,包括相机.设备状态 ...

  7. nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新

    nrf52832 学习笔记(五)蓝牙主从机连接和连接参数更新 主机连接 nrf52832 SDK中主机连接从机需要使用 sd_ble_gap_connect(ble_gap_addr_t const ...

  8. NRF52832学习笔记(40)——RFID RC522使用

    一.简介 MF RC522 是应用于 13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员.是 NXP 公司针对"三表"应用推出的一款低电压.低成本.体积小的非接触式读写 ...

  9. i.MX6ULL学习笔记--字符设备驱动程序

    i.MX6ULL学习笔记--字符设备驱动程序 简介 1.驱动的配置过程 1.1设备号 1.2哈希表-chrdevs 1.3哈希表-obj_map->probes 1.4文件操作接口 1.5简单了 ...

  10. nrf52832 学习笔记(一)开发资料汇总

    nrf52832 学习笔记(一)开发资料汇总 协议栈和SDK下载地址 nordic官方的sdk分为ncs(nRF Connect SDK)和sdk17(nRF5 SDK)两种,区别是: sdk17不会 ...

最新文章

  1. 应用打包Ubuntu下部署ScriptCase应用一例
  2. php获取post表单数据_PHP获取POST表单数据
  3. Django【进阶篇 】
  4. java图形用户界面概述_Java中图形用户界面概述
  5. win系统注册缺少的库 32位系统 64位系统
  6. 光是无限远服务器有道馆吗,光是无限远服务器客户端
  7. oracle表分区设计_ORACLE 分区表的设计
  8. 十分钟学习python_10分钟带你入门Cython
  9. LeetCode 49 Group Anagrams(字符串分组)
  10. GdiPlus[33]: 基本绘图与填充命令
  11. Lync部署之Lync Mobile服务器端的外网设置
  12. 什么是存储过程,存储过程的作用及优点
  13. 关于Python包导入报错的总结
  14. text to image(八):《Image Generation from Scene Graphs》
  15. 浅学 web安全知识(好奇)
  16. Linux 设置开机自启动
  17. 沃顿商学院自我管理课——保持真是性的技能
  18. 计算机视觉(CV)方向今年招聘情况怎么样?是否已经人才过剩?
  19. 开源BI工具2:apache/superset
  20. shell十三问--shell教程

热门文章

  1. 博主文章导航(分门别类,实时更新,永久置顶)
  2. android 百度转码,关于百度移动端转码的问题与解决办法
  3. MATLAB程序设计与应用 4.1 M文件
  4. esp32入门手册学习
  5. Linux 安全设置
  6. 中国证券投资基金从业考试 笔记(时间相关)
  7. 塞雷三分钟漫画中国史3
  8. Handle的详细用法
  9. CANoe之CAPL编程(CANoe系列其三)
  10. 推荐系统综述--初识推荐系统(美研面试专用)