或者更具体地说,在“平台管理器”级别操作时如何请求更改MTU?
我正在使用作为GATT客户端的示例程序LinuxGATM_CLT
,它使用Bluetopia Platform Manager Framework。
我正在使用TI的WL183xMOD WiLink硬件,该硬件使用Bluetopia(之前由Stonestreet One拥有)。
该函数存在,但似乎在堆栈层低于PM:
~/src/ti_bluetopia/ $ grep GATT_Exchange_MTU_Request ./BluetopiaPM/Bluetopia/include/GATTAPI.h
BTPSAPI_DECLARATION int BTPSAPI GATT_Exchange_MTU_Request(unsigned int BluetoothStackID, unsigned int ConnectionID, Word_t RequestedMTU, GATT_Client_Event_Callback_t ClientEventCallback, unsigned long CallbackParameter);
BluetopiaPM/sample/LinuxGATM/LinuxGATM_CLT.c
中的所有内容都使用GATM
BluetopiaPM/include/client/GATMAPI.h
个函数
感觉{PM}级别没有公开GATT_Exchange_MTU_Request()
功能。很难深入研究PM如何工作,因为它们只发送二进制文件(似乎不是开源的)。例如,唯一匹配是GATTAPI.h
头文件和二进制库文件:
~/src/ti_bluetopia/ $ grep -ri GATT_Initialize ./
Binary file ./BluetopiaPM/Bluetopia/lib/libSS1BTGAT.a matches
我觉得解决方案是找到报告我当前的Platform Manager BluetoothStackID
,ConnectionID
和回调参数的方法,以便我可以直接调用GATT_Exchange_MTU_Request()
函数。
答案 0 :(得分:1)
简而言之,解决方法是在创建“平台管理器”之前获得Stonestreet One的Bluetopia的早期版本。这些早期版本(例如4.012和4.013)没有Platform Manager的优势,但它们允许您拥有更多控制权,可在较低级别运行,您可以调用:
GATT_Initialize()
和
GATT_Exchange_MTU_Request()
一个很好的例子是4.013的SPPLEDemo.c
,它调用了上述方法。