Bluetooth HCI 学习

四种数据类型

指令分组,事件分组,数据分组。
其中数据分组又分为acl(异步无连接)数据分组和sco(同步面向连接)数据分组。

指令分组只从从主机发送到主机控制器。
事件分组只从主机控制器发送到主机,用以说明指令分组执行的情况。
数据分组在主机和主机控制器之间相互传输。

  • Command (0x1) 指令分组
    协议格式:
    Command 协议格式

  • ACL Data (0x2) 数据分组
    协议格式:
    ACL

  • SCO Data (0x3)
    协议格式

SCO

  • Event (0x4) 事件分组
    协议格式:

Event

HCI Command & Events

参考 Core_v5.2 Vol4 - Part E - P1929
HCI Comand & Event

HCI Command 格式
HCI command 占用两个bits。小端模式(低位在左,高位在右)。OCF + OGF,其中 OCF 占用10位 + OGF 占用6位。
0x3F 是保留给供应商调试使用。

常用指令操作组 组属性值

CommandOGF说明
Link Control0x1链路控制
Link Policy0x2链路策略
Controller & Baseband0x3主机控制器和基带
Infomational Parameters0x4属性参数
Status parameters0x5状态参数
Testing0x6测试

蓝牙主机控制器通信流程

  • 1 蓝牙模块自身初始化
  • 2 流量控制
  • 3 查询
  • 4 建立连接
  • 5 进行数据通讯
  • 6 断开连接
蓝牙模块自身初始化

Reset 指令: 属于 Controller & Baseband 操作组 (OGF:0x03)
reset command ocf
reset command event
示例:

  • Tx payload: 00000001 00000011 00001100 00000000
    在这里插入图片描述
  • Rx payload: 00000100 00001110 00000100 00000001 00000011 00001100 00000000
    在这里插入图片描述

代码:

  response = AWAIT_COMMAND(packet_factory->make_reset());
流量控制

Read Buffer Size
属于 Infomational params (OGF:0x04)

该指令返回的参数
ACL_Data_Packet_Length & Synchronous_Data_Packet_Length
主机发往主机控制器 ACL & SCO 数据分组最大的长度。

Total_Num_Acl_Data_Packets & Total_Num_Synchronous_Data_Packets 决定了主机控制器能接受ACL & SCO 数据总数组。
在这里插入图片描述
在这里插入图片描述

  • Tx payload : 00000001 00000101 00010000 00000000

在这里插入图片描述

  • Rx payload: 00000100 00001110 00001011 00000001 00000101 00010000 00000000 00000000 00000100 00111100 00000111 00000000 00001000 00000000
    在这里插入图片描述

Host Buffer Size command
Controller&Baseband 分组 (OGF : 0x03)
通知主机 控制器发往主机的ACL & SCO 数据指令最大尺寸,同时通知主机控制器在主机数据缓存区中能够存储的ACL & SCO 数据指令的数量。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值