Part Number:CC2652RSIP
sdk版本号;simplelink_cc13xx_cc26xx_sdk_7_40_00_77
IDE版本号:CCS12.5.0
编译器版本号:TI Clang v3.2.0LTS
MAX_PDU_SIZE设置为251
如题,我根据project_zero工程的data_service服务,修改simple_peripheral的Characteristic 4,可以通过notify方式给APP发送一组数据。通过调试发现,simpleProfile_ReadAttrCB的maxlen参数就是20个字节,通过跟踪发现simpleProfile_ReadAttrCB的调用路径是:SimpleProfile_SetParameter → GATTServApp_ProcessCharCfg(调试时,只有其声明而没有定义,因此进入不了此函数,在整个协议栈中查找,发现在gattservapp_util.c文件中有其定义,后面的调用路径以此文件为准(能否告知是否正确?)) → gattServApp_SendNotiInd → GATT_bm_alloc( connHandle, ATT_HANDLE_VALUE_NOTI,GATT_MAX_MTU, &len ) → simpleProfile_ReadAttrCB。
由上可知调用GATT_bm_alloc时,申请的内存为GATT_MAX_MTU,而GATT_MAX_MTU是0xffff,len 返回的实际申请的大小正是20字节。
我在调试官方的simple_peripheral工程中,在simpleProfile_ReadAttrCB中打断点,发现其maxlen参数也是20字节。因此应该不是我修改代码的问题
wei wang:
已解决,发送端默认最多传输20字节,可通过调用GATT_ExchangeMTU()修改默认的MTU
,
Cherry VIP:
谢谢你的提问,我的问题解决了。