工具/软件:
您好、TI
我目前需要通过 L2CAP 协议层传输数据。 我使用 L2CAP_SendSDU()函数发送、输入参数是 l2capPacket_t 类型的结构 哪个函数应该用于为 l2capPacket_t 中的 pPayload 分配存储器?
此致!
普雷斯顿
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:
您好、TI
我目前需要通过 L2CAP 协议层传输数据。 我使用 L2CAP_SendSDU()函数发送、输入参数是 l2capPacket_t 类型的结构 哪个函数应该用于为 l2capPacket_t 中的 pPayload 分配存储器?
此致!
普雷斯顿
您好:
文档的这一部分提到 L2CAP_BM_alloc (...) 应使用: https://dev.ti.com/tirex/content/simplelink_lowpower_f3_sdk_8_40_00_61/docs/ble5stack/ble_user_guide/html/ble-stack-common/l2cap.html?highlight=l2cap#l2cap-mtu
希望这对您有所帮助!
此致、
Nima Behmanesh
嗨、Nima
我对参考文档中的示例代码有疑问。 在发送函数中执行 L2CAP_BM_alloc 后、仅在发送操作失败时才释放存储器。 这可能会在发送批量数据时导致问题(例如内存溢出)吗?
bStatus_t Application_sendL2capData(void) { l2capPacket_t pkt; bStatus_t status = SUCCESS; // Tell L2CAP the desired Channel ID pkt.CID = cocCID; // Allocate space for payload pkt.pPayload = L2CAP_bm_alloc(sizeof(appData)); /* Copy payload data */ memcpy(pkt.pPayload, appData, sizeof(appData)); if (pkt.pPayload != NULL) { pkt.len = (sizeof(appData)); // Print transmit data to serial terminal, expected data is /0 terminated MenuModule_printf(11, 0, "L2CAP Data TX - %s", pkt.pPayload); // Send packet status = L2CAP_SendSDU(&pkt); // Check that the packet was sent if (SUCCESS != status) { // If SDU wasn't sent, free BM_free(pkt.pPayload); } } else { status = bleMemAllocError; } return (status); }
此致!
普雷斯顿
您好:
我对参考文档中的示例代码有疑问。 在发送函数中执行 L2CAP_BM_alloc 后、仅在发送操作失败时才释放存储器。 这可能会在发送批量数据时导致问题(例如内存溢出)吗?
开发人员负责管理此存储器:
对于数据包有效载荷、更高级别的协议(ATT、SM、Application)负责使用进行分配 L2CAP_bm_all
oc(...)
。 对于 ATT 和 SM、这是对用户透明的。 对于 CoC SDU、用户拥有与有效载荷关联的存储器。
但是、您在参考代码中提出了一个很好的观点。 无论数据包是否成功、该数据包都应空闲。
此外、我想确认:CC2745和 CC2340之间的蓝牙功能(包括设备配对和 L2CAP 数据传输)是否已正确测试并验证为可正常运行?
我建议使用最新版本的 SDK (编写此文件时为8.40)、尤其是使用 CC2745时。 您是否遇到问题?
此致、
Nima Behmanesh
嗨、Nima
我将在 CC2745和 CC2340之间建立蓝牙连接以进行 L2CAP 数据传输。 传输大约超过1KB 的数据(最大单帧有效载荷约为100多字节)后、L2CAP 传输失败。 在 CC2745端调试期间、程序始终在 osal_start_system ()处挂起。
BLE 是否进入某种异常状态? 在不同的 SDK 版本之间连接和传输数据时是否会出现兼容性问题?
此致!
普雷斯顿