BLE例程中GATT_Notification(),返回值

GATT_Notification()返回SUCCESS,是指已经通过无线发送成功了吗?

GATT_Notification是否存在相关event来使用?比如发送成功,发送失败?


目的是为了既快速传输数据(6~10KB/s),又保证数据不丢失。

可以在GATT_Notification()中发送大于MTU的数据吗?如果不能,能否告之CH582的speedtest例程达到60KB/s的思路,以方便阅读源码。

你所说的返回SUCCESS是否是

return?GATT_Notification(connHandle,?pNoti,?FALSE);

可以选中GATT_Notification右击,点击open decleration就可以看到这句

extern?bStatus_t?GATT_Notification(?uint16_t?connHandle,?attHandleValueNoti_t?*pNoti,?uint8_t?authenticated?);

定位authenticated,可以看到一句注释 authenticated - whether an authenticated link is required


GATT_Notification和通知有关,因此我们可以看到这段函数

????if(events?&?SBP_PERIODIC_EVT)
????{
????????//?Restart?timer
????????if(SBP_PERIODIC_EVT_PERIOD)
????????{
????????????tmos_start_task(Peripheral_TaskID,?SBP_PERIODIC_EVT,?SBP_PERIODIC_EVT_PERIOD);
????????}
????????//?Perform?periodic?application?task
????????performPeriodicTask();//你所需的
????????return?(events?^?SBP_PERIODIC_EVT);
????}


不能够发送大于MTU的数据

????if(len?>?(peripheralMTU?-?3))
????{
????????PRINT("Too?large?noti\n");
????????return;
????}



你回复中提到的事件,是自定义事件。

想知道有GATT_Notification()的BLE协议栈相关事件吗?以表示数据通过无线发送成功?


若不能发送大于MTU个数的数据,请问,如何在一个连接事件中进行多次数据交互?


BLE协议栈进行处理Noti数据,目前暂不对外开放。

simpleProfile_Notify的返回值是指发送成功和失败,在对应函数的上面注释已书写。

通过Noti发送数据一包也不可能超过最大MTU,如果需要发送大量数据,可以尝试TMOS调用该Noti进行发送,时间参数减小,同时连接间隔拉到最小,MTU拉大最大。

Speedtest已经提供了源码出来,可自行查看并进行测试。



好的,明白了。我尝试进行测试后,再交流。



只有登录才能回复,可以选择微信账号登录