Announcements
IMPORTANT: Cypress Developer Community is transitioning on October 20th. To learn more and be prepared for this change, check out our latest announcement.
cancel
Showing results for 
Search instead for 
Did you mean: 

WICED Smart Bluetooth

NiVa_4337911
New Contributor II

Hi,

I have improved the data throughput for peripheral devices by setting the connection interval to the minimum (7.5ms). I used long_characteristic example as a peripheral and hello_client is modified for sending long characteristic similar to the http_client example. But still the throughput is less than 8kbps, whereas the following discussion suggesting Re: Maximum BLE throughput for reliable data transfer  ~85kbps. What can I do to improve data?

Does a big MTU helps?

How can I get ride of application level ack?

What is the practical limit with two CyBLE013025 devices as central and peripheral?

0 Likes
1 Solution
Owen_Zhang123
Moderator
Moderator

For client-to-server transfers, please use the API void bleprofile_sendWriteCmd(UINT16 attrHandle, UINT8 *data, INT32 len) instead of void bleprofile_sendWriteReq(UINT16 attrHandle, UINT8 *attr, INT32 len).

For server-to-client transfers, please use the API void bleprofile_sendNotification(UINT16 attrHandle, UINT8 *attr, INT32 len) instead of void bleprofile_sendIndication(UINT16 attrHandle, UINT8 *attr, INT32 len, LEATT_NO_PARAM_CB cb).

View solution in original post

0 Likes
3 Replies
Owen_Zhang123
Moderator
Moderator

If you want to maximize the throughput. Please try the following notes:

1. Minimize the connection interval. You've already used 7.5ms interval. You may ignore it.

2. Maximize the payload size for GATT transfers. A big MTU size will help.

3. Use unacknowledged transfers. For client-to-server transfers, use the "write-no-response" operation instead of "write". For server-to-client transfers, use the "notify" operation instead of "indicate".

NiVa_4337911
New Contributor II

Hi,

Thank you for the reply, but how can implement the step 3 in the software? Could you please provide the API reference or documentation

0 Likes
Owen_Zhang123
Moderator
Moderator

For client-to-server transfers, please use the API void bleprofile_sendWriteCmd(UINT16 attrHandle, UINT8 *data, INT32 len) instead of void bleprofile_sendWriteReq(UINT16 attrHandle, UINT8 *attr, INT32 len).

For server-to-client transfers, please use the API void bleprofile_sendNotification(UINT16 attrHandle, UINT8 *attr, INT32 len) instead of void bleprofile_sendIndication(UINT16 attrHandle, UINT8 *attr, INT32 len, LEATT_NO_PARAM_CB cb).

View solution in original post

0 Likes