From 10af5043af94ec1f4f558acc16d7980860060a23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Grome=C5=A1?= Date: Fri, 13 Jul 2018 10:35:44 +0200 Subject: [PATCH] SX127x - Sync with LoRaLib v3.0.1 --- src/modules/SX127x.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/modules/SX127x.cpp b/src/modules/SX127x.cpp index 724cb9ef..9dcf72e2 100644 --- a/src/modules/SX127x.cpp +++ b/src/modules/SX127x.cpp @@ -150,8 +150,19 @@ uint8_t SX127x::receive(uint8_t* data, size_t len) { } // read packet data + if(len == 0) { + // argument len equal to zero indicates String call, which means dynamically allocated data array + // dispose of the original and create a new one + delete[] data; + data = new uint8_t[length]; + } _mod->SPIreadRegisterBurst(SX127X_REG_FIFO, length, data); + // add terminating null + if(len == 0) { + data[length] = 0; + } + // update data rate, RSSI and SNR dataRate = (length*8.0)/((float)elapsed/1000.0); lastPacketRSSI = -157 + _mod->SPIgetRegValue(SX127X_REG_PKT_RSSI_VALUE); @@ -166,12 +177,11 @@ uint8_t SX127x::receive(uint8_t* data, size_t len) { uint8_t SX127x::receive(String& str, size_t len) { // create temporary array to store received data - char* data = new char[0]; + char* data = new char[len]; uint8_t state = SX127x::receive((uint8_t*)data, len); // if packet was received successfully, copy data into String if(state == ERR_NONE) { - data[strlen(data) - 1] = 0; str = String(data); }