RX buffer reader was simplified
This commit is contained in:
@@ -15,7 +15,7 @@ BluetoothDispatcher::BluetoothDispatcher(BluetoothSerial *controller, const char
|
|||||||
_controller = controller;
|
_controller = controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BluetoothDispatcher::initialize(volatile bool loop_on_fail, int readTimeoutMS) {
|
bool BluetoothDispatcher::initialize(int readTimeoutMS) {
|
||||||
_controller->enableSSP();
|
_controller->enableSSP();
|
||||||
_controller->onConfirmRequest([this](uint16_t pin) {
|
_controller->onConfirmRequest([this](uint16_t pin) {
|
||||||
_onConfirmRequest(pin);
|
_onConfirmRequest(pin);
|
||||||
@@ -31,8 +31,7 @@ bool BluetoothDispatcher::initialize(volatile bool loop_on_fail, int readTimeout
|
|||||||
bool success = _controller->begin(_device_name, false);
|
bool success = _controller->begin(_device_name, false);
|
||||||
if (!success) {
|
if (!success) {
|
||||||
ESP_LOGI(_tag, "Failed to initialize Bluetooth controller!");
|
ESP_LOGI(_tag, "Failed to initialize Bluetooth controller!");
|
||||||
while (loop_on_fail);
|
assert(false);
|
||||||
return false;
|
|
||||||
} else {
|
} else {
|
||||||
ESP_LOGI(_tag, "Bluetooth host initialized");
|
ESP_LOGI(_tag, "Bluetooth host initialized");
|
||||||
return true;
|
return true;
|
||||||
@@ -45,23 +44,19 @@ void BluetoothDispatcher::onNewPackageReceived(NewPackageCallback newPackageRece
|
|||||||
|
|
||||||
void BluetoothDispatcher::tick(const char message_delimeter) {
|
void BluetoothDispatcher::tick(const char message_delimeter) {
|
||||||
/* Call the callback, if new package received */
|
/* Call the callback, if new package received */
|
||||||
while (_controller->available()) { _buffer += (char) _controller->read(); }
|
/* Warning! Logging below can cause errors and freezes */
|
||||||
if (_buffer.lastIndexOf(message_delimeter) != -1) {
|
while (_controller->available()) {
|
||||||
char buffer[_buffer_size];
|
int c = _controller->read();
|
||||||
auto messageEnd = _buffer.indexOf(message_delimeter) - 1;
|
if (c == -1) {
|
||||||
if (messageEnd == -1) {
|
_buffer.clear();
|
||||||
|
} else if (c == message_delimeter) {
|
||||||
|
if (_newPackageReceivedCb) {
|
||||||
|
_newPackageReceivedCb(_buffer.buf);
|
||||||
|
}
|
||||||
_buffer.clear();
|
_buffer.clear();
|
||||||
} else {
|
} else {
|
||||||
_buffer.substring(0, messageEnd, buffer);
|
_buffer += (char) c;
|
||||||
}
|
}
|
||||||
ESP_LOGD(_tag, "Received new buffer %s", buffer);
|
|
||||||
if (_newPackageReceivedCb) {
|
|
||||||
_newPackageReceivedCb(buffer);
|
|
||||||
}
|
|
||||||
_buffer.clear();
|
|
||||||
}
|
|
||||||
if (_buffer.length() > _real_buffer_size) {
|
|
||||||
_buffer.clear();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user