Stonestreet One的Bluetopia你如何申请MTU变更?

时间:2017-04-21 15:45:48

标签: bluetooth-lowenergy gatt

或者更具体地说,在“平台管理器”级别操作时如何请求更改MTU?

更多细节

  • 我正在使用作为GATT客户端的示例程序LinuxGATM_CLT,它使用Bluetopia Platform Manager Framework。

  • 我正在使用TI的WL183xMOD WiLink硬件,该硬件使用Bluetopia(之前由Stonestreet One拥有)。

存在API调用

该函数存在,但似乎在堆栈层低于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 BluetoothStackIDConnectionID和回调参数的方法,以便我可以直接调用GATT_Exchange_MTU_Request()函数。

1 个答案:

答案 0 :(得分:1)

简而言之,解决方法是在创建“平台管理器”之前获得Stonestreet One的Bluetopia的早期版本。这些早期版本(例如4.012和4.013)没有Platform Manager的优势,但它们允许您拥有更多控制权,可在较低级别运行,您可以调用:

GATT_Initialize()

GATT_Exchange_MTU_Request()

一个很好的例子是4.013的SPPLEDemo.c,它调用了上述方法。