btleplug
btleplug copied to clipboard
Reading characteristic updates with Peripheral::notifications.next().await returns value with max len=20
Describe the bug Reading characteristic updates with Peripheral::notifications.next().await returns value with max len=20.
Expected behavior It should return the value as it is, not missing any data.
Actual behavior It cuts off after 20.
Additional context
Is this happening on all platforms, or just one?
@qwandor I have only tested it on Windows 11. Here is a snippet of my code:
peripheral.subscribe(&peripherals_char).await;
let mut notification_stream = peripheral.notifications().await?;
loop {
while let Some(data) = notification_stream.next().await {
if data.uuid == char_uuid{
println!(
"{}", String::from_utf8_lossy(&data.value)
);
}
}
'data.value' here is a vector that is never greater than 20 in size.
I have tried to just read the characteristic manually which works fine (the values are more than 20 bytes), like this:
match peripheral.read(&peripherals_char).await {
Ok(value) => {
let msg_str = String::from_utf8_lossy(&value);
println!("{}", msg_str);
}
Err(error) => {
println!("ERROR: {:?}", error);
}
};
But that is too slow for my use case since the characteristic is updating very fast.
Seems to be happening on both Windows, Mac and Linux.