Skip to content

BluetoothSerial::flush() takes too long #9868

Closed
@vincadrn

Description

@vincadrn

Related area

Classic Bluetooth

Hardware specification

All ESP32 boards

Is your feature request related to a problem?

For a small but frequent Bluetooth serial data, using delay of 100 ms in flush() degrade the performance very much.

void BluetoothSerial::flush() {
if (_spp_tx_queue != NULL) {
while (uxQueueMessagesWaiting(_spp_tx_queue) > 0) {
delay(100);
}
}
}

Describe the solution you'd like

I'd suggest that the delay is reduced to 1 ms. By using much smaller delay, it can accomodate different kinds of serial data.

Describe alternatives you've considered

Currently I have no alternative approaches in mind that is as efficient and minimal in changes.

Additional context

When I try without using flush() for my project, typically the data is sent in its entirety in about 5 - 20 ms. However, when I try to use flush(), the data would be sent entirely in > 100 ms. For a bigger serial data, the loop in the function would cause other 100 ms of delay(s). To avoid the problem altogether, one can avoid using flush() at all. But then, there is no way to know and make sure that the transmission buffer is cleared.

I have checked existing list of Feature requests and the Contribution Guide

  • I confirm I have checked existing list of Feature requests and Contribution Guide.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions