In our existing products (using CYBLE-022001 module on a custom MCU board), we use CYSPP mode to establish a 'pipe' to our other software running on a PC. Our MCU firmware is required to use 9600 baud rate, or must add arbitrary wait states after sending 10 bytes or so, to guarantee that the data has been transferred over the air before sending the next packet.
I'm looking for methods of getting faster/more robust communication, such as ACK/NAK returns at the BLE level on successful transmission of a given data-packet. This may not be possible given that CYSPP mode is a pipe and bypasses BLE module commands.
I assume binary vs ASCII command-modes don't provide any better MCU knowledge of connection throughput.
It is difficult to tell where the issue lies, since once in CYSPP mode, the radio-link is a black-box.
Solved! Go to Solution.
Are you using the custom firmware or Ez-BLE serial firmware in your application as mentioned in the link below?
Thanks and regards
If you have configured CYSPP to operate in peripheral mode, then upon connection, a remote peer must subscribe to one of the two “Data” characteristics:
a. Acknowledged Data, enable indications (for guaranteed reliability).
b. Unacknowledged Data, enable notifications (for faster potential throughput).
Please refer to the section '2.4.5 Using CYSPP Mode' for more information.
Actually, CYSPP mode may not be what we need. Although we have our own protocol which has a retry mechanism in place, we still have data drops causing retries which slow down our throughput.
Maybe what I'm looking for is how might I accomplish our data passing using GATT instead of the CYSPP transparent mode.
I have a CY8CKIT-042 pioneer kit with our 002201-00 module where I can do testing. Perhaps you could recommend one of the many example programs for me to study. It seems BLE 4.2 has a higher per-packet payload which I'd like to try in an effort to solve our issues...
For acknowledgement, you can use Indication instead of Notification. The Indicate property has application-level acknowledgement while Notify does not have application-level acknowledgement.
EZ-Serial platform uses the CYSPP profile for bidirectional serial data transfer between two remote devices. You can also use the Direct L2CAP connectivity for maximum throughput feature from EZ-Serial platform.
In an effort to reduce the connection interval, I requested a connection update, however the responses are confusing:
Why does this show an interval of zero? This also shows up twice during the initial negotiations:
How can I confirm a change, be it zero or any other value? Shouldn't it at least show the minimum value of 6?
The CySmart App connection on my phone did not show any activity it its logger when I issued the /UCP command at the 022001 module...