蓝牙设备节点协议栈基础知识

蓝牙设备节点协议栈基础知识

一:TTY(虚拟控制台,串口以及伪终端设备组成的终端设备)
Android/Linux 几乎所有的外设都以”设备节点”的形式存在
例如PC插入串口,会识别成COM1/COM2…在linux下面则以/dev/ttyXXX的形式存在,如/dev/ttyS1
同时,协议栈还可以生成虚拟串口,例如/dev/bw_serial, 操作方式同物理串口/dev/ttyS1一样
在飞易通AT指令版本协议栈中,实际的通讯流程如下,以BT825B为例:

BT825B <–物理节点/dev/ttyS1–> 协议栈blueware <– 虚拟节点/dev/bw_serial –> 客户蓝牙应用

当客户需要拨打电话10086时:

客户蓝牙应用=>发送AT+HFPDIAL=10086\r\n 至 /dev/bw_serial
blueware监听/dev/bw_serial,收到拨号请求
将拨号请求通过HFP协议解析成指定格式HCI数据
将HCI数据通过 /dev/ttyS1 发送至BT825B
注意:
1:虚拟串口的名字可以自定义,如别的蓝牙厂商名字为/dev/goc_serial
2:连接模块的物理串口(如/dev/ttyS1),需要和客户确认,并添加到协议栈的配置文件中

二:GPIO(通用输入输出端口的简称)
协议栈对GPIO的操作一般只会用到BT使能脚(BT_EN)
GPIO的也是以”节点”的形式存在于系统中
例gpio123的路径一般为: /sys/class/gpio/gpio123/value
同物理串口一样,需要和客户确认该gpio并添加到协议栈的配置文件中
注意:
1:特殊的,蓝牙一般用节点rfkill来控制BT_EN,路径为/sys/class/rfkill/rfkill0/state
2:若使用rfkill,需要客户在驱动层,将对该节点的控制映射层对实际GPIO的控制
3:部分客户该节点的路径为非标准路径,如:/sys/bus/platform/drivers/mtc-car/bt_power

三:SOCKET(用来描述IP地址和端口,Socket是支持TCP/IP协议的网络通信的基本操作单元,是对网络通信过程中端点的抽象表示,包含了进行网络通信所必须的五种信息:连接所使用的协议;本地主机的IP地址;本地远程的协议端口;远地主机的IP地址以及远地进程的协议端口)
当出现协议栈和上层应用“大量数据交互”的场景时,一般可以考虑使用socket通讯
socket通讯机制类似于tty,区别是socket有client和server之分
server:负责创建socket节点(如/dev/socket/bw_gatt),并开启监听(listen)
client:连接已经存在的节点,连接成功后则可以互相通讯
协议栈接可以作为socket server,也可以作为client
例:
蓝牙上层应用作为client
协议栈blueware为server在这里插入图片描述
总结:这些只是协议栈的很小一部分设置逻辑,想了解更多,可以下面留言,一起学习!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

112126407

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值