我一直在自学如何使用 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;
};
现在对于我不明白的部分:l2_psm 和 l2_cid 有什么区别?这是我到目前为止收集到的:
PSM 代表“协议服务多路复用器”,是 L2CAP 连接的“端口”。资料来源:程序员蓝牙,作者 Albert Huang
CID 代表“通道标识符”,是表示设备上逻辑通道端点的本地名称。来源:http ://ecee.colorado.edu/~ecen4242/marko/Bluetooth/Bluetooth/SPECIFICATION/L2CAP.html
现在我确定答案就在这些定义中,但我似乎无法理解 CID 的定义。谁能以更全面的方式向我解释 PSM 和 CID 之间的区别?
谢谢 :)