3、Head Set 的建链
当蓝牙音频网关A G 接收到一个呼叫, 发起与HS 的链接时, 为使应用层语音通信可靠, 需要蓝牙协议栈建立可靠的通信链路。根据蓝牙协议栈运行, 从底层到高层的建链一般要经过以下几个过程:
(1) 建立ACL 即基带层的链接;
(2) 建立L 2CA P 层的链接;
(3) 进行SDP 的查询过程;
(4) 建立RFCOMM 层的链路;
(5) RFCOMM 链路建好后, 将通过RFCOMM 信道传输Head Set 控制层的一些A T 命令;
(6) 建立SCO 链接;
(7) 根据应用层的动作执行蓝牙HS 与A G 之间的音频通信。
蓝牙协议栈的建链过程具体讨论如下。
3.1 建立ACL 即基带层的链接
A G 接收到一个呼叫时, 首先建立与HS 之间的ACL链接, 此HS 与A G 之间需预先绑定, 或者把原来处于休眠状态下的HS 唤醒。这是通过page 进程完成的, 在用page 进程建立ACL 时, 定义A G 是M aster 角色, 于是A G首先发起查询, 通过查询A G 获得HS 的蓝牙地址。然后A G 在应用层的驱动下向查询到的HS 发起一个page 进程, 当接收到HS 返回的应答时, 这时A G 与HS 之间的
ACL 链接已经成功建立。
一旦ACL 链接建立, 他可以被用来传送振铃信号。振铃信号的发送是通过A T 命令R IN G 来完成的。振铃信号也可以在SCO 链路上发送。
3.2 建立L 2CA P 层的链接
ACL 链接好后, 接着建L 2CA P 链路。A G 首先在信令信道上发送一个链接请求信令, 要求建立信道标号为0x0040 的L 2CA P (0x0001~ 0x003F 是协议保留不可动态分配的, 0x0040~ 0xFFFF 可以自由分配) , 此信道的PSM (协议服务复用) 标志0001, 当对方返回链接响应信号, 表明0x0040 信道已经建好。然后对此信道进行配置,配置完信道后, 就可以利用此C ID 为0x0040 的L 2CA P 信道进行SDP 查询了。
3.3 进行SDP 的查询过程
利用C ID 为0x0040 的L 2CA P 信道进行SDP 的查询过程, 首先是A G 在此L 2CA P 信道上发送一个SDP 查询包, SDP 查询包将查询SDP 服务器端HS 是否具有所需要的服务。若查询成功, 在ACL 链路上再建一条标号为0x0041 的L 2CA P 链路, 此信道的PSM 为0003, 用来传输RFCOMM 数据流的。同时断开用作SDP 查询的标号为0x0040 的L 2CA P 链路。
3.4 建立RFCOMM 层的链路
当C ID 为0x0041 的L 2CA P 信道建好之后, 接着就是RFCOMM 的建链过程, 如图3 所示。首先建控制信道, 建链发起方A G 在信道上发送一个SABM 帧, 即要求建RFCOMM 层上的Channel0, 如果响应方HS 希望建立链接, 返回一个UA 帧, 表明已经建立好了Channel0 这条RFCOMM 信道。此信道为控制信道, 用来传送携带控制消息和命令的U IH 帧。如果响应方HS 不希望建立链接,返回一个DM 帧。
其次建立数据信道, 先是对数据传送信道的参数进行协商, 协商命令PN 参数包括对将要建立的信道Channel1的优先级, 最大帧长等, 当双方协商好后建立传输数据的信道Channel1。
RFCOMM 层的数据信道建好后, 再对Head Set 控制层的控制命令进行传输。即在数据传送信道Channel1 上利用U IH 帧传送A T + CKPD= 200 等命令, 当接收到对方的响应OK 之后, 就可以开始建立SCO 链接。
3.5 建立SCO 链接
初始化时HC I 发一个WR ITE_ VO ICE_ SETT IN G命令, 对音频状态进行设置, 当接收到A G 的建立SCO 链接的请求时, 若HS 允许, 发送一个接收的HC I 命令, 在命令完成之后, 传输音频信号的SCO 链路就建好了, 此时就可以进行语音通信。
4、应用层的状态机设计
在协议栈的通信链路建立后, 可以进行应用层通信。应用层有一个主状态机在运行, 如图4 所示。根据用户的动作以及A G 发送的命令, HS 应用进程将在各状态之间跑动。
空闲状态 HS 与A G 之间可能已经存在ACL 链接,但没有RFCOMM 信道建立, 也没有音频信号的SCO 链路存在。当A G 响应内部事件或者用户请求时, 便发起链接建立的请求, HS 接收到建立链接的请求时, HS 与A G开始建ACL , L 2CA P, RFCOMM 链路, 建好RFCOMM信道后, A G 发送一个或多个A T + R IN G 的振铃指示命令, 通知HS 用户有入呼的音频链接到达。此时状态将转至来电振铃状态。
来电振铃状态 此时音频网关A G 已经建立了与HS的ACL 与RFCOMM 信道, 并且HS 已经接收到振铃信号, 这预示着音频网关要求建立SCO 链接, 若用户不对振铃做出响应, 音频网关将终止RFCOMM 信道, 状态将重新回到空闲状态, 若用户按下HS 上的Bluetoo th 键, 则表示用户接受入呼音频链接的请求, 这时HS 将发送A T 控制命令A T+ CKPD 给A G, 这时两者之间将建立SCO 链
接, 状态将转至链接状态。
呼叫状态 当HS 用户按下HS 上的Bluetoo th 键, 用户发出呼叫音频网关的请求, 这时HS 将先建立ACL 链接, 再对音频网关进行SDP 查询。若SDP 查询成功, HS打开与A G 链接的RFCOMM 信道, 并且发送A T 命令+CKPD 要求建立SCO 的音频链接。当SCO 链接建立时, 状态将转移到连接状态, 若SCO 链接建立失败, 状态将转到空闲状态。
链接状态 链接状态下, ACL , L 2CA P, RFCOMM都已经建立, 而且已经执行了SDP 查询, 音频通话就绪。若用户对HS 讲话, 语音将通过SCO 链路传送至A G, 并通过A G 将语音传到远端。
链接断开状态 链接断开可以通过HS 上的Bluetoo th 键完成, 也可以通过A G 的内部事件或用户干预触发产生。无论那一种原因引起, 实质上都是A G 链路释放的结果。如果HS 发出了断开链接的请求, 并且发送一个A T 命令+ CKPD 到音频网关要求音频网关断开链接, 于是音频网关断开SCO 链接和RFCOMM 信道。当RFCOMM 断开时, 状态将转换到空闲状态。而ACL 链接有可能处于断开状态也有可能处于链接状态。
5、Head Set 的实现方案
以摩托罗拉蓝牙解决方案为例, 摩托罗拉在先进射频技术方面很有经验。摩托罗拉蓝牙解决方案可利用UART, RS 232, U SB 或SP I 连接主处理器, 而主处理器可通过这些接口处理蓝牙协议上的堆栈及主控制器的接口等功能; 而这个蓝牙解决方案则负责执行下堆栈(主控制器接口, 链路管理程序协议, 基带及射频) 其余的功能。并采用摩托罗拉的MCORETM 32 位精简指令集运算
(S ISC) 处理器内核, 内含一个高度灵活的外围设备集, 适用于多种不同的嵌入式蓝牙应用方案。图5 为一个采用摩托罗拉解决方案用于蜂窝式电话的例子。通用异步收发器是连接蜂窝式电话基带处理器与摩托罗拉解决方案的接口, 而SS I 则为语音通讯提供支持。
近年来移动通信、便携式计算机以及因特网的迅速发展, 使人们对电话通信以外的各种数据信息传递的需求日益增长。“蓝牙”技术把各种便携式电脑与蜂窝移动电话用无线电路连接起来, 使计算机与通信更加密切结合起来,使人们能随时随地进行数据信息的交换与传输。
评论
查看更多