我一直在教自己如何使用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之间的差异?
谢谢 :)