diff --git a/src/connections/ble_handler.rs b/src/connections/ble_handler.rs index 1d5d195..c3ea085 100644 --- a/src/connections/ble_handler.rs +++ b/src/connections/ble_handler.rs @@ -243,7 +243,13 @@ impl BleHandler { pub async fn write_to_radio(&self, buffer: &[u8]) -> Result<(), Error> { self.radio // TODO: remove the skipping of the first 4 bytes - .write(&self.toradio_char, &buffer[4..], WriteType::WithResponse) + .write( + &self.toradio_char, + buffer.get(4..).ok_or(Error::InvalidaDataSize { + data_length: buffer.len(), + })?, + WriteType::WithResponse, + ) .await .map_err(|e: btleplug::Error| { Error::InternalStreamError(InternalStreamError::StreamWriteError { diff --git a/src/utils_internal.rs b/src/utils_internal.rs index 17dd032..067a1b9 100644 --- a/src/utils_internal.rs +++ b/src/utils_internal.rs @@ -331,7 +331,9 @@ pub async fn build_ble_stream( // Data from user, forward it to the device from_server = server.read(&mut buf) => { let len = from_server.map_err(duplex_write_error_fn)?; - ble_handler.write_to_radio(&buf[..len]).await?; + if len != 0 { + ble_handler.write_to_radio(&buf[..len]).await?; + } }, event = adapter_events.next() => { if Some(AdapterEvent::Disconnected) == event {