蓝牙的控制器实现方案
主要的目的是为让我们时刻能分清楚什么是Controller,什么是Host
HCI 命令包格式
链路控制命令
-
BR/EDR 控制器
当链路控制命令被使用,LM控制微微网和散射网建立和维护。这些命令通知LM来创建和修改链路层和远程蓝牙设备的连接,执行查询其它BR/EDR控制器和其它的LMP命令 -
AMP 控制器
链路控制命令用来创建修改和断开物理连接和逻辑连接 -
LE 控制器
链路控制命令用来断开物理连接
注意:链路控制命令的OGF等于0x01
查询命令
描述:
查询命令 让BR/EDR控制器进入查询模式。查询模式被用来发现其它附近的BR/EDR控制器。如果有应答的设备在这之前没有被上报在这期间和该设备没有被过滤掉使用Set_Event_Filter命令,对于在询问或查询期间有应答的设备应该总是报告给HOST在查询结果事件中。如果这个设备已经在询问和查询过程之前被上报过了,那么他可能也可能不被上报是看如何实现的(如果早先的结果被保存在BR/EDR控制器,我们需要看多少应答已经被保存了),被建议的一种方式是BR/EDR控制器尝试仅在一次询问或查询期间上报一个特定的设备。
命令参数:
返回参数
NULL
生成的事件(除非被设置掩码)
- 一个命令状态事件将会从BR/EDR Controller 向Host发送当BR/EDR控制器已经启动了查询进程。
- 除非被过滤了,一个查询结果事件将会被创建对每个响应查询消息的BR/EDR控制器。
- 另外,多个响应查询消息的BR/EDR控制器可能被合并在同一个事件中。一个查询完成事件将会被生成当查询进行已经完成的时候
注意:
没有命令完成事件将会被发送通过BR/EDR控制器表明这个命令已经被完成了。用来替代的是,查询完成事件将会被表明这个命令已经被完成了。没有查询完成事件将会被生成为取消查询进程。