mirror of
https://github.com/esp-rs/esp-hal.git
synced 2025-09-28 12:50:53 +00:00
Read more bytes in one go in BleConnector (#3098)
This commit is contained in:
parent
806215fa43
commit
f0faa61a92
@ -50,20 +50,17 @@ impl ErrorType for BleConnector<'_> {
|
||||
}
|
||||
|
||||
impl Read for BleConnector<'_> {
|
||||
fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error> {
|
||||
fn read(&mut self, mut buf: &mut [u8]) -> Result<usize, Self::Error> {
|
||||
let mut total = 0;
|
||||
for b in buf {
|
||||
let mut buffer = [0u8];
|
||||
let len = read_hci(&mut buffer);
|
||||
|
||||
if len == 1 {
|
||||
*b = buffer[0];
|
||||
total += 1;
|
||||
} else {
|
||||
return Ok(total);
|
||||
while !buf.is_empty() {
|
||||
let len = read_hci(buf);
|
||||
if len == 0 {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
buf = &mut buf[len..];
|
||||
total += len;
|
||||
}
|
||||
Ok(total)
|
||||
}
|
||||
}
|
||||
@ -105,24 +102,24 @@ pub(crate) mod asynch {
|
||||
}
|
||||
|
||||
impl embedded_io_async::Read for BleConnector<'_> {
|
||||
async fn read(&mut self, buf: &mut [u8]) -> Result<usize, BleConnectorError> {
|
||||
if !have_hci_read_data() {
|
||||
HciReadyEventFuture.await;
|
||||
async fn read(&mut self, mut buf: &mut [u8]) -> Result<usize, BleConnectorError> {
|
||||
if buf.is_empty() {
|
||||
return Ok(0);
|
||||
}
|
||||
|
||||
let mut total = 0;
|
||||
for b in buf {
|
||||
let mut buffer = [0u8];
|
||||
let len = read_hci(&mut buffer);
|
||||
|
||||
if len == 1 {
|
||||
*b = buffer[0];
|
||||
total += 1;
|
||||
} else {
|
||||
return Ok(total);
|
||||
}
|
||||
if !have_hci_read_data() {
|
||||
HciReadyEventFuture.await;
|
||||
}
|
||||
while !buf.is_empty() {
|
||||
let len = read_hci(buf);
|
||||
if len == 0 {
|
||||
break;
|
||||
}
|
||||
|
||||
buf = &mut buf[len..];
|
||||
total += len;
|
||||
}
|
||||
Ok(total)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user