Jér*_*Roy 6 c bluetooth l2cap bluetooth-lowenergy bluez
我一直在教自己如何使用BlueZ API在C语言中为BLE设备编写程序.但是,我似乎对sockaddr_l2结构的一个特定方面感到困惑.我使用的定义如下:
struct sockaddr_l2 {
sa_family_t l2_family;
unsigned short l2_psm;
bdaddr_t l2_bdaddr;
unsigned short l2_cid;
uint8_t l2_bdaddr_type;
};
Run Code Online (Sandbox Code Playgroud)
现在对于我不明白的部分:l2_psm和l2_cid有什么区别?这是我到目前为止收集的内容:
PSM代表"协议服务多路复用器",是L2CAP连接的"端口".资料来源:程序员蓝牙,作者Albert Huang
CID代表"通道标识符",是表示设备上逻辑通道端点的本地名称.来源:http://ecee.colorado.edu/~ecen4242/marko/Bluetooth/Bluetooth/SPECIFICATION/L2CAP.html
现在我确定答案就在那些定义中,但我似乎无法理解CID的定义.谁能以更全面的方式向我解释PSM和CID之间的差异?
谢谢 :)
在 Syngress 2002 年的蓝牙应用程序开发人员指南中找到以下内容
问:L2CAP PSM 值和 L2CAP CID 之间有什么区别?
答:协议服务多路复用器 (PSM) 值标识用于通过 L2CAP 通道进行通信的协议。实际上,这定义了使用该通道的更高层。同一高层的多个实例可以使用不同的L2CAP通道,但它们都将由相同的PSM值来标识。每个单独的通道均由其通道 ID (CID) 唯一标识。更高层可以通过指定 PSM 值 0x0003 来请求与远程 RFCOMM 实体的 L2CAP 连接。然后,本地和远程 L2CAP 层将 CID 分配给该链路。CID 用于实际识别 RFCOMM 层之间发送的流量。
| 归档时间: |
|
| 查看次数: |
2916 次 |
| 最近记录: |