RF69 - Fixed incorrect size of dynamically allocated array
This commit is contained in:
parent
619fd8a072
commit
0ca15ac41f
1 changed files with 21 additions and 21 deletions
|
@ -84,6 +84,14 @@ int16_t RF69::begin(float freq, float br, float rxBw, float freqDev, int8_t powe
|
|||
return(ERR_NONE);
|
||||
}
|
||||
|
||||
int16_t RF69::transmit(String& str, uint8_t addr) {
|
||||
return(RF69::transmit(str.c_str()));
|
||||
}
|
||||
|
||||
int16_t RF69::transmit(const char* str, uint8_t addr) {
|
||||
return(RF69::transmit((uint8_t*)str, strlen(str), addr));
|
||||
}
|
||||
|
||||
int16_t RF69::transmit(uint8_t* data, size_t len, uint8_t addr) {
|
||||
// check packet length
|
||||
if(len > 64) {
|
||||
|
@ -125,12 +133,18 @@ int16_t RF69::transmit(uint8_t* data, size_t len, uint8_t addr) {
|
|||
return(ERR_NONE);
|
||||
}
|
||||
|
||||
int16_t RF69::transmit(const char* str, uint8_t addr) {
|
||||
return(RF69::transmit((uint8_t*)str, strlen(str), addr));
|
||||
int16_t RF69::receive(String& str, size_t len) {
|
||||
// create temporary array to store received data
|
||||
char* data = new char[len];
|
||||
int16_t state = RF69::receive((uint8_t*)data, len);
|
||||
|
||||
// if packet was received successfully, copy data into String
|
||||
if(state == ERR_NONE) {
|
||||
str = String(data);
|
||||
}
|
||||
|
||||
int16_t RF69::transmit(String& str, uint8_t addr) {
|
||||
return(RF69::transmit(str.c_str()));
|
||||
delete[] data;
|
||||
return(state);
|
||||
}
|
||||
|
||||
int16_t RF69::receive(uint8_t* data, size_t len) {
|
||||
|
@ -170,7 +184,7 @@ int16_t RF69::receive(uint8_t* data, size_t len) {
|
|||
// 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];
|
||||
data = new uint8_t[length + 1];
|
||||
}
|
||||
_mod->SPIreadRegisterBurst(RF69_REG_FIFO, length, data);
|
||||
|
||||
|
@ -185,20 +199,6 @@ int16_t RF69::receive(uint8_t* data, size_t len) {
|
|||
return(ERR_NONE);
|
||||
}
|
||||
|
||||
int16_t RF69::receive(String& str, size_t len) {
|
||||
// create temporary array to store received data
|
||||
char* data = new char[len];
|
||||
int16_t state = RF69::receive((uint8_t*)data, len);
|
||||
|
||||
// if packet was received successfully, copy data into String
|
||||
if(state == ERR_NONE) {
|
||||
str = String(data);
|
||||
}
|
||||
|
||||
delete[] data;
|
||||
return(state);
|
||||
}
|
||||
|
||||
int16_t RF69::sleep() {
|
||||
// set module to sleep
|
||||
return(setMode(RF69_SLEEP));
|
||||
|
|
Loading…
Add table
Reference in a new issue