蓝牙DID协议讲解 Bluetooth Device ID

   日期:2020-11-05     浏览:145    评论:0    
核心提示:零. 概述主要介绍下蓝牙协议栈(bluetooth stack)DID(Device ID)协议讲解btsnoop以及流程在资料中的......\STM32_UBUNTU_BLUETOOTH\2-蓝牙资料\蓝牙协议分析\DID分析.log一. 声明本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件

零. 概述

主要介绍下蓝牙协议栈(bluetooth stack)DID(Device ID)协议讲解

btsnoop以及流程在资料中的......\STM32_UBUNTU_BLUETOOTH\2-蓝牙资料\蓝牙协议分析\DID分析.log

一. 声明

本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下:

第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。

第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,基于USB的H2等

第三篇:传统蓝牙controller介绍,主要介绍传统蓝牙芯片的介绍,包括射频层(RF),基带层(baseband),链路管理层(LMP)等

第四篇:传统蓝牙host介绍,主要介绍传统蓝牙的协议栈,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的协议吧。

第五篇:低功耗蓝牙controller介绍,主要介绍低功耗蓝牙芯片,包括物理层(PHY),链路层(LL)

第六篇:低功耗蓝牙host介绍,低功耗蓝牙协议栈的介绍,包括HCI,L2CAP,ATT,GATT,SM等

第七篇:蓝牙芯片介绍,主要介绍一些蓝牙芯片的初始化流程,基于HCI vendor command的扩展

第八篇:附录,主要介绍以上常用名词的介绍以及一些特殊流程的介绍等。

另外,开发板如下所示,对于想学习蓝牙协议栈的最好人手一套。以便更好的学习蓝牙协议栈,相信我,学完这一套视频你将拥有修改任何协议栈的能力(比如Linux下的bluez,Android下的bluedroid)。

-------------------------------------------------------------------------------------------------------------------------

CSDN学院链接(进入选择你想要学习的课程):https://edu.csdn.net/lecturer/5352?spm=1002.2001.3001.4144

蓝牙交流扣扣群:970324688

Github代码:https://github.com/sj15712795029/bluetooth_stack

入手开发板:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22329603896.18.5aeb41f973iStr&id=622836061708

蓝牙学习目录:https://blog.csdn.net/XiaoXiaoPengBo/article/details/107727900

--------------------------------------------------------------------------------------------------------------------------

二. DID(Device ID)讲解

2.1 DID概述

DID(device id)是一个用于标示蓝牙设备的协议,用于提供蓝牙设备类之外的附加信息(比如厂商ID,产品ID等等信息),并将这些信息合并到SDP记录和EIR响应中,以便remote 设备获取到这些信息。

2.2 DID版本历史

目前在蓝牙SIG官网,只有两个版本(V1.2/V1.3)

主要差别在于V1.2只把DID一些属性注册到SDP中以方便remote 设备问询SDP的时候获取到,而V1.3在V1.2的基础上,增加了把DID的一些属性添加到EIR(Extended Inquery Response)中,方便remote设备在搜寻的时候就能获取到这些信息

2.3 DID 属性

DID一共有以下几个属性:

2.3.1 SpecificationID

2.3.2 VendorID

蓝牙Vendor Id的厂商在以下这个连接可查找到,发现很多大公司都赫然在列

https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers

2.3.3 ProductID

2.3.4 Version

2.3.5 PrimaryRecord

2.3.6 VendorIDSource

2.4 SDP

Device ID information for the device is exported in terms of an explicit SDP record on that device. This will be called the Device ID Service Record, and is identified by a unique UUID – this UUID is called the PNPInformation.

PNPInformation的UUID为0x1200

2.5 EIR

在说明注册什么样形式的EIR之前,我们先来普及下EIR的概念

首先EIR是HCI的范畴,属于protocol,但是我们也简单介绍下

至于HCI command的格式,我们在HCI中再做说明,只说下EIR的数据

EIR一共240byte,非为有用数据和无用数据,但是不管EIR有用数据多少,都要240byte,

格式为 1B len + 1B type + raw data,其中len不包括自身,type是0x10

我们要注册的关于DID相关的EIR为

所以代码可以写成这样:

    
#if PROFILE_DID_ENABLE
    eir_data[data_pos++] = 9;
    eir_data[data_pos++] = BT_DT_DEVICE_ID;
    eir_data[data_pos++] = DID_VENDOR_ID_SOURCE_VALUE & 0xff;
    eir_data[data_pos++] = (DID_VENDOR_ID_SOURCE_VALUE>>8) & 0xff;
    eir_data[data_pos++] = DID_VENDOR_ID_VALUE & 0xff;
    eir_data[data_pos++] = (DID_VENDOR_ID_VALUE>>8) & 0xff;
    eir_data[data_pos++] = DID_PRODUCT_ID_VALUE & 0xff;
    eir_data[data_pos++] = (DID_PRODUCT_ID_VALUE>>8) & 0xff;
    eir_data[data_pos++] = DID_VERSION_ID_VALUE & 0xff;
    eir_data[data_pos++] = (DID_VERSION_ID_VALUE>>8) & 0xff;
#endif

录制出来的模样就是这样:

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服