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 */