根据数据包类型拆分 TTY 设备

Split TTY device based on packet type

我有一个 TTY 设备设置来监视组合 bluetooth/GPS 芯片的串行端口。我正在使用 blueZ 来实现蓝牙堆栈并执行与蓝牙相关的所有操作。通过这个端口发送的数据都是 HCI 数据包,甚至是 GPS 数据。 GPS 数据包装在类型为 0xXX 的 HCI 数据包中(由 HCI 数据包的第一个字节指示)。

我想知道是否已经有任何内核工具可以将 TTY 设备拆分为两个独立的设备。例如,我想使用 blueZ 从 /dev/ttyS0 读取和写入所有 HCI 数据包(GPS 数据包除外)。然后,我想要另一个 TTY 设备来读取所有 0xXX 类型的 HCI 数据包,比如 /dev/ttyGPS

最后,我正在寻找可以将特定类型的所有 HCI 数据包过滤到不同 "pseudo" TTY 设备的东西。如果这不可能,我将需要使用 hcidump 解析应用程序 space 中的所有 HCI 数据包。虽然这是可能的,但由于之前完成的工作,拥有两个 TTY 设备将大大减少应用程序开发。

我用的芯片正好是TI的芯片。我找到的解决方案是他们作为内核内部的驱动程序提供的。

http://processors.wiki.ti.com/index.php/Shared_Transport_Driver