Skip to content

Commit f3be6e0

Browse files
authored
Add files via upload
1 parent aa77463 commit f3be6e0

File tree

2 files changed

+44
-20
lines changed

2 files changed

+44
-20
lines changed

src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp

Lines changed: 43 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -50,36 +50,59 @@ SARA_R5::SARA_R5(int powerPin, int resetPin, uint8_t maxInitTries)
5050
_bufferedPollReentrant = false;
5151
_pollReentrant = false;
5252
_saraResponseBacklogLength = 0;
53+
_saraRXBuffer = NULL;
54+
_pruneBuffer = NULL;
55+
_saraResponseBacklog = NULL;
56+
}
57+
58+
~SARA_R5() {
59+
if (NULL != _saraRXBuffer) {
60+
delete [] _saraRXBuffer;
61+
_saraRXBuffer = NULL;
62+
}
63+
if (NULL != _pruneBuffer) {
64+
delete [] _pruneBuffer;
65+
_pruneBuffer = NULL;
66+
}
67+
if (NULL != _saraResponseBacklog) {
68+
delete [] _saraResponseBacklog;
69+
_saraResponseBacklog = NULL;
70+
}
5371
}
5472

5573
#ifdef SARA_R5_SOFTWARE_SERIAL_ENABLED
5674
bool SARA_R5::begin(SoftwareSerial &softSerial, unsigned long baud)
5775
{
58-
_saraRXBuffer = new char[_RXBuffSize];
59-
if (_saraRXBuffer == NULL)
60-
{
61-
if (_printDebug == true)
62-
_debugPort->println(F("begin: not enough memory for _saraRXBuffer!"));
63-
return false;
76+
if (NULL == _saraRXBuffer)
77+
_saraRXBuffer = new char[_RXBuffSize];
78+
if (NULL == _saraRXBuffer)
79+
{
80+
if (_printDebug == true)
81+
_debugPort->println(F("begin: not enough memory for _saraRXBuffer!"));
82+
return false;
83+
}
6484
}
6585
memset(_saraRXBuffer, 0, _RXBuffSize);
6686

67-
_pruneBuffer = new char[_RXBuffSize];
68-
if (_pruneBuffer == NULL)
69-
{
70-
if (_printDebug == true)
71-
_debugPort->println(F("begin: not enough memory for _pruneBuffer!"));
72-
return false;
87+
if (NULL == _pruneBuffer) {
88+
_pruneBuffer = new char[_RXBuffSize];
89+
if (NULL == _pruneBuffer) {
90+
{
91+
if (_printDebug == true)
92+
_debugPort->println(F("begin: not enough memory for _pruneBuffer!"));
93+
return false;
94+
}
7395
}
7496
memset(_pruneBuffer, 0, _RXBuffSize);
75-
76-
_saraResponseBacklog = new char[_RXBuffSize];
77-
if (_saraResponseBacklog == NULL)
78-
{
79-
if (_printDebug == true)
80-
_debugPort->println(F("begin: not enough memory for _saraResponseBacklog!"));
81-
return false;
82-
}
97+
98+
if (NULL == _saraResponseBacklog) {
99+
saraResponseBacklog = new char[_RXBuffSize];
100+
if (NULL == _saraResponseBacklog) {
101+
{
102+
if (_printDebug == true)
103+
_debugPort->println(F("begin: not enough memory for _saraResponseBacklog!"));
104+
return false;
105+
}
83106
memset(_saraResponseBacklog, 0, _RXBuffSize);
84107

85108
SARA_R5_error_t err;

src/SparkFun_u-blox_SARA-R5_Arduino_Library.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,7 @@ class SARA_R5 : public Print
577577
// maxInitTries sets the maximum number of initialization attempts. .init is called by .begin.
578578
SARA_R5(int powerPin = SARA_R5_POWER_PIN, int resetPin = SARA_R5_RESET_PIN, uint8_t maxInitTries = 9);
579579

580+
~SARA_R5();
580581
// Begin -- initialize module and ensure it's connected
581582
#ifdef SARA_R5_SOFTWARE_SERIAL_ENABLED
582583
bool begin(SoftwareSerial &softSerial, unsigned long baud = 9600);

0 commit comments

Comments
 (0)