@@ -50,36 +50,59 @@ SARA_R5::SARA_R5(int powerPin, int resetPin, uint8_t maxInitTries)
50
50
_bufferedPollReentrant = false ;
51
51
_pollReentrant = false ;
52
52
_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
+ }
53
71
}
54
72
55
73
#ifdef SARA_R5_SOFTWARE_SERIAL_ENABLED
56
74
bool SARA_R5::begin (SoftwareSerial &softSerial, unsigned long baud)
57
75
{
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
+ }
64
84
}
65
85
memset (_saraRXBuffer, 0 , _RXBuffSize);
66
86
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
+ }
73
95
}
74
96
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
+ }
83
106
memset (_saraResponseBacklog, 0 , _RXBuffSize);
84
107
85
108
SARA_R5_error_t err;
0 commit comments