GATT_Notification()返回SUCCESS,是指已经通过无线发送成功了吗?
GATT_Notification是否存在相关event来使用?比如发送成功,发送失败?
目的是为了既快速传输数据(6~10KB/s),又保证数据不丢失。
可以在GATT_Notification()中发送大于MTU的数据吗?如果不能,能否告之CH582的speedtest例程达到60KB/s的思路,以方便阅读源码。
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已经提供了源码出来,可自行查看并进行测试。
好的,明白了。我尝试进行测试后,再交流。