From c2cfe597ccbc9f7f0164850ece391d8a00d715ab Mon Sep 17 00:00:00 2001 From: jgromes Date: Sun, 21 Nov 2021 21:16:45 +0100 Subject: [PATCH] [SX128x] Fixed known binary receive length --- src/modules/SX128x/SX128x.cpp | 7 ++++--- src/modules/SX128x/SX128x.h | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/modules/SX128x/SX128x.cpp b/src/modules/SX128x/SX128x.cpp index cdf797d6..972e6ffc 100644 --- a/src/modules/SX128x/SX128x.cpp +++ b/src/modules/SX128x/SX128x.cpp @@ -573,9 +573,10 @@ int16_t SX128x::readData(uint8_t* data, size_t len) { } // get packet length - size_t length = len; - if(len == RADIOLIB_SX128X_MAX_PACKET_LENGTH) { - length = getPacketLength(); + size_t length = getPacketLength(); + if((len != 0) && (len < length)) { + // user requested less data than we got, only return what was requested + length = len; } // read packet data diff --git a/src/modules/SX128x/SX128x.h b/src/modules/SX128x/SX128x.h index b1a39e94..9f258bb1 100644 --- a/src/modules/SX128x/SX128x.h +++ b/src/modules/SX128x/SX128x.h @@ -567,7 +567,8 @@ class SX128x: public PhysicalLayer { \param data Pointer to array to save the received binary data. - \param len Number of bytes that will be received. Must be known in advance for binary transmissions. + \param len Number of bytes that will be read. When set to 0, the packet length will be retreived automatically. + When more bytes than received are requested, only the number of bytes requested will be returned. \returns \ref status_codes */