专栏首页嵌入式智能硬件蓝牙ATT_LIST设置服务指令

蓝牙ATT_LIST设置服务指令

ATT List表格式

Byte0-Byte1

Byte2

Byte3-ByteN+2

Byte N+3

ByteN+4-Byte N+M+3

Handle

Len(N byte)

UUID

Len2(M byte)

注:Handle是从0x0100开始向上累加的数据,0x0000表示列表的结束。

1.建立一个16bit service,service UUID为 0xfee7

0c 00 02 00 28 02 e7 fe

说明:

0c 00为handle,这个需要根据之前的handle+1得到

02 00 28 是Primary Service UUID,表示后面的数据是service UUID

02 为service UUID length,由于建立16bit UUID,所以长度是02

e7 fe 为service UUID,小端在前

2.

建立一个128bit service,service UUID 为0x000102030405060708090a0b0c0d0e0f

0c 00 02 00 28 10 0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00

说明:

0c 00为handle,这个需要根据之前的handle+1得到

02 00 28 是Primary Service UUID,表示后面的数据是service UUID

10 为service UUID length,由于建立128bit UUID,所以长度是10

0f 0e 0d 0c 0b 0a 09 08 07 06 05 04 03 02 01 00为service UUID,小端在前

3.

建立一个16bit master 写通道,UUID为0xfec7,Characteristic为write & write without Response

0d 00 02 03 28 01 0c

0e 00 02 c7 fe 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

说明:

建立一个通道需要2行数据,第一行是对通道特征的描述,第二行是声明了通道的UUID。

0d 00 为handle,这个需要根据之前的handle+1得到

02 03 28 是Characteristic Declaration UUID,表示后面的数据是Characteristic

01 为Characteristic数据长度,固定为01

0c 为Characteristic数据,每个bit为1有效,0c表示write & write without Response,每个bit的含义见附表。

0e 00为handle,这个需要根据之前的handle(0d 00)+1得到

02 为通道UUID长度,由于建立16bit UUID,所以长度是02

C7 fe 为通道UUID,小端在前

14 为通道UUID的数据长度

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00为master发送read request时,会发送这里的数据给master,master向0xfec7通道写数据时,会向这里写入。

4.

建立一个128bit master 写通道,UUID为0x00112233445566778899aabbccddeeff,Characteristic为write & write without Response

0d 00 02 03 28 01 0c

0e 00 10 ff ee dd cc bb aa 99 88 77 66 55 44 33 22 11 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

说明:

建立一个通道需要2行数据,第一行是对通道特征的描述,第二行是声明了通道的UUID。

0d 00 为handle,这个需要根据之前的handle+1得到

02 03 28 是Characteristic Declaration UUID,表示后面的数据是Characteristic

01 为Characteristic数据长度,固定为01

0c 为Characteristic数据,每个bit为1有效,0c表示write & write without Response,每个bit的含义见附表。

0e 00为handle,这个需要根据之前的handle(0d 00)+1得到

10 为通道UUID长度,由于建立128bit UUID,所以长度是10

ff ee dd cc bb aa 99 88 77 66 55 44 33 22 11 00 为通道UUID,小端在前

14 为通道UUID的数据长度

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00为master发送read request时,会发送这里的数据给master,master向0xfec7通道写数据时,会向这里写入。

5.监听通道

建立一个16bit master 监听通道,UUID为0xfec7,Characteristic为Notify

0d 00 02 03 28 01 20

0e 00 02 c7 fe 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

0f 00 02 02 29 02 00 00

说明:

建立一个通道需要3行数据,第一行是对通道特征的描述,第二行是声明了通道的UUID,第三行Client Characteristic Configuration描述,只有notify和indicate需要

0d 00 为handle,这个需要根据之前的handle+1得到

02 03 28 是Characteristic Declaration UUID,表示后面的数据是Characteristic

01 为Characteristic数据长度,固定为01

20为Characteristic数据,每个bit为1有效,20表示indicate,每个bit的含义见附表。

0e 00为handle,这个需要根据之前的handle(0d 00)+1得到

02 为通道UUID长度,由于建立16bit UUID,所以长度是02

C7 fe 为通道UUID,小端在前

14 为通道UUID的数据长度

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00为master发送read request时,会发送这里的数据给master,master向0xfec7通道写数据时,会向这里写入。

0f 00为handle,这个需要根据之前的handle(0e 00)+1得到

02 02 29是Client Characteristic Configuration UUID,表示后面的数据固定00 00

02 00 00是Client Characteristic Configuration的固定数据,手机连接使能后会写入

附表:

Characteristic含义描述,其中Broadcast,Authentication Signed Write,Extended Properties芯片不支持使用

Bit

Characteristic

0

Broadcast

1

Read

2

Write without Response

3

Write

4

Notify

5

Indicate

6

Authentication Signed Write

7

Extended Properties

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 通过例子学习编写shell

    然后百度查了下,发现这是由于脚本文件在保存时使用了DOS文件格式造成的,所以在linux下先创建脚本编辑就没问题了。

    心跳包
  • QCC3040开发笔记之应用程序子系统详解(21)

    应用程序子系统,是一个基于处理器的子系统,提供片上蓝牙高级协议栈功能和客户可编程性。

    心跳包
  • 蓝牙芯片----BK3431开发笔记------RW stack中添加自定义服务教程(4)

    在sdk\ble_stack\common\profiles\custom。将custom.h、custom_task.h文件放在api目录下,custom.c...

    心跳包
  • rtfraptor:从恶意RTF文件中提取OLEv1对象的工具

    rtfraptor是一个简单的工具,通过提取OLEv1对象分析恶意RTF文件。它的工作原理是运行Word并拦截对OLEv1函数的调用。从内存中转储原始OLE对象...

    FB客服
  • AkShare-股票数据-科创板报告

    科创板(The Science and Technology Innovation Board; STAR Market) [1] ,是由国家主席习近平于20...

    AkShare
  • 高效的选择:将键盘上的大小写锁定键 CapsLock 与退出键 Esc 交换位置

    如果你习惯使用 Shift 切换大小写,那么在你左手小指处的 caps lock 大小写锁定键几乎没有用武之地。

    Piper蛋窝
  • 私人订制属于自己的Linux系统

    init通过调用/etc/inittab这个配置文件,然后再去执行/etc/rc.d/rc.sysinit的系统初始化脚本

    常见_youmen
  • AkShare-股票数据-注册制审核-创业板

    深交所10日消息,近日,深交所在做好常态化疫情防控基础上,举办注册制首期改制上市实务研讨培训班,来自25家拟上市企业的36位董事长、总经理、实际控制人等参加。深...

    AkShare
  • 基于web页面开发串口程序界面---代码实现

    后台web框架和串口操作采用的是Python语言,其中web框架使用的是tornado。

    MiaoGIS
  • mysql datetime查询异常

    异常:Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp (201...

    WindWant

扫码关注云+社区

领取腾讯云代金券