Skip to content

Commit 8a8afd7

Browse files
authored
Merge branch 'sparkfun:release_candidate' into release_candidate
2 parents 104f169 + ce670f2 commit 8a8afd7

File tree

4 files changed

+90
-31
lines changed

4 files changed

+90
-31
lines changed

keywords.txt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,18 @@ SARA_R5_sim_states_t KEYWORD1
2626
SARA_R5_http_op_codes_t KEYWORD1
2727
SARA_R5_http_commands_t KEYWORD1
2828
SARA_R5_http_content_types_t KEYWORD1
29+
SARA_R5_mqtt_nv_parameter_t KEYWORD1
30+
SARA_R5_mqtt_profile_opcode_t KEYWORD1
31+
SARA_R5_mqtt_command_opcode_t KEYWORD1
2932
SARA_R5_pdp_configuration_parameter_t KEYWORD1
3033
SARA_R5_pdp_protocol_type_t KEYWORD1
3134
SARA_R5_pdp_actions_t KEYWORD1
35+
SARA_R5_sec_profile_parameter_t KEYWORD1
36+
SARA_R5_sec_profile_certval_op_code_t KEYWORD1
37+
SARA_R5_sec_profile_tls_op_code_t KEYWORD1
38+
SARA_R5_sec_profile_suite_op_code_t KEYWORD1
39+
SARA_R5_sec_manager_opcode_t KEYWORD1
40+
SARA_R5_sec_manager_parameter_t KEYWORD1
3241
SARA_R5_functionality_t KEYWORD1
3342
SARA_R5_pdp_type KEYWORD1
3443
SARA_R5_l2p_t KEYWORD1
@@ -43,6 +52,7 @@ gnss_aiding_mode_t KEYWORD1
4352

4453
begin KEYWORD2
4554
enableDebugging KEYWORD2
55+
enableAtDebugging KEYWORD2
4656
invertPowerPin KEYWORD2
4757
modulePowerOff KEYWORD2
4858
modulePowerOn KEYWORD2
@@ -58,6 +68,9 @@ setSIMstateReportCallback KEYWORD2
5868
setPSDActionCallback KEYWORD2
5969
setPingCallback KEYWORD2
6070
setHTTPCommandCallback KEYWORD2
71+
setMQTTCommandCallback KEYWORD2
72+
setRegistrationCallback KEYWORD2
73+
setEpsRegistrationCallback KEYWORD2
6174
write KEYWORD2
6275
at KEYWORD2
6376
enableEcho KEYWORD2
@@ -87,6 +100,8 @@ setNetworkProfile KEYWORD2
87100
getNetworkProfile KEYWORD2
88101
setAPN KEYWORD2
89102
getAPN KEYWORD2
103+
getSimStatus KEYWORD2
104+
setSimPin KEYWORD2
90105
setSIMstateReportingMode KEYWORD2
91106
getSIMstateReportingMode KEYWORD2
92107
enterPPP KEYWORD2
@@ -140,10 +155,26 @@ setHTTPusername KEYWORD2
140155
setHTTPpassword KEYWORD2
141156
setHTTPauthentication KEYWORD2
142157
setHTTPserverPort KEYWORD2
158+
setHTTPcustomHeader KEYWORD2
143159
setHTTPsecure KEYWORD2
144160
getHTTPprotocolError KEYWORD2
145161
sendHTTPGET KEYWORD2
146162
sendHTTPPOSTdata KEYWORD2
163+
sendHTTPPOSTfile KEYWORD2
164+
nvMQTT KEYWORD2
165+
setMQTTclientId KEYWORD2
166+
setMQTTserver KEYWORD2
167+
setMQTTsecure KEYWORD2
168+
connectMQTT KEYWORD2
169+
disconnectMQTT KEYWORD2
170+
subscribeMQTTtopic KEYWORD2
171+
unsubscribeMQTTtopic KEYWORD2
172+
readMQTT KEYWORD2
173+
getMQTTprotocolError KEYWORD2
174+
resetSecurityProfile KEYWORD2
175+
configSecurityProfileString KEYWORD2
176+
configSecurityProfile KEYWORD2
177+
setSecurityManager KEYWORD2
147178
setPDPconfiguration KEYWORD2
148179
performPDPaction KEYWORD2
149180
activatePDPcontext KEYWORD2
@@ -165,6 +196,7 @@ gpsGetRmc KEYWORD2
165196
gpsRequest KEYWORD2
166197
gpsAidingServerConf KEYWORD2
167198
getFileContents KEYWORD2
199+
appendFileContents KEYWORD2
168200
getFileSize KEYWORD2
169201
deleteFile KEYWORD2
170202
functionality KEYWORD2

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name=SparkFun u-blox SARA-R5 Arduino Library
2-
version=1.1.0
2+
version=1.1.1
33
author=SparkFun Electronics <techsupport@sparkfun.com>
44
maintainer=SparkFun Electronics <sparkfun.com>
55
sentence=Library for the u-blox SARA-R5 LTE-M / NB-IoT modules with secure cloud<br/><br/>

src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp

Lines changed: 54 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,15 @@ SARA_R5::SARA_R5(int powerPin, int resetPin, uint8_t maxInitTries)
5757

5858
SARA_R5::~SARA_R5(void) {
5959
if (NULL != _saraRXBuffer) {
60-
delete [] _saraRXBuffer;
60+
delete[] _saraRXBuffer;
6161
_saraRXBuffer = NULL;
6262
}
6363
if (NULL != _pruneBuffer) {
64-
delete [] _pruneBuffer;
64+
delete[] _pruneBuffer;
6565
_pruneBuffer = NULL;
6666
}
6767
if (NULL != _saraResponseBacklog) {
68-
delete [] _saraResponseBacklog;
68+
delete[] _saraResponseBacklog;
6969
_saraResponseBacklog = NULL;
7070
}
7171
}
@@ -74,6 +74,7 @@ SARA_R5::~SARA_R5(void) {
7474
bool SARA_R5::begin(SoftwareSerial &softSerial, unsigned long baud)
7575
{
7676
if (NULL == _saraRXBuffer)
77+
{
7778
_saraRXBuffer = new char[_RXBuffSize];
7879
if (NULL == _saraRXBuffer)
7980
{
@@ -84,9 +85,10 @@ bool SARA_R5::begin(SoftwareSerial &softSerial, unsigned long baud)
8485
}
8586
memset(_saraRXBuffer, 0, _RXBuffSize);
8687

87-
if (NULL == _pruneBuffer) {
88+
if (NULL == _pruneBuffer)
89+
{
8890
_pruneBuffer = new char[_RXBuffSize];
89-
if (NULL == _pruneBuffer) {
91+
if (NULL == _pruneBuffer)
9092
{
9193
if (_printDebug == true)
9294
_debugPort->println(F("begin: not enough memory for _pruneBuffer!"));
@@ -95,14 +97,16 @@ bool SARA_R5::begin(SoftwareSerial &softSerial, unsigned long baud)
9597
}
9698
memset(_pruneBuffer, 0, _RXBuffSize);
9799

98-
if (NULL == _saraResponseBacklog) {
99-
saraResponseBacklog = new char[_RXBuffSize];
100-
if (NULL == _saraResponseBacklog) {
100+
if (NULL == _saraResponseBacklog)
101+
{
102+
_saraResponseBacklog = new char[_RXBuffSize];
103+
if (NULL == _saraResponseBacklog)
101104
{
102105
if (_printDebug == true)
103106
_debugPort->println(F("begin: not enough memory for _saraResponseBacklog!"));
104107
return false;
105108
}
109+
}
106110
memset(_saraResponseBacklog, 0, _RXBuffSize);
107111

108112
SARA_R5_error_t err;
@@ -120,30 +124,39 @@ bool SARA_R5::begin(SoftwareSerial &softSerial, unsigned long baud)
120124

121125
bool SARA_R5::begin(HardwareSerial &hardSerial, unsigned long baud)
122126
{
123-
_saraRXBuffer = new char[_RXBuffSize];
124-
if (_saraRXBuffer == NULL)
127+
if (NULL == _saraRXBuffer)
125128
{
126-
if (_printDebug == true)
127-
_debugPort->println(F("begin: not enough memory for _saraRXBuffer!"));
128-
return false;
129+
_saraRXBuffer = new char[_RXBuffSize];
130+
if (NULL == _saraRXBuffer)
131+
{
132+
if (_printDebug == true)
133+
_debugPort->println(F("begin: not enough memory for _saraRXBuffer!"));
134+
return false;
135+
}
129136
}
130137
memset(_saraRXBuffer, 0, _RXBuffSize);
131138

132-
_pruneBuffer = new char[_RXBuffSize];
133-
if (_pruneBuffer == NULL)
139+
if (NULL == _pruneBuffer)
134140
{
135-
if (_printDebug == true)
136-
_debugPort->println(F("begin: not enough memory for _pruneBuffer!"));
137-
return false;
141+
_pruneBuffer = new char[_RXBuffSize];
142+
if (NULL == _pruneBuffer)
143+
{
144+
if (_printDebug == true)
145+
_debugPort->println(F("begin: not enough memory for _pruneBuffer!"));
146+
return false;
147+
}
138148
}
139149
memset(_pruneBuffer, 0, _RXBuffSize);
140-
141-
_saraResponseBacklog = new char[_RXBuffSize];
142-
if (_saraResponseBacklog == NULL)
150+
151+
if (NULL == _saraResponseBacklog)
143152
{
144-
if (_printDebug == true)
145-
_debugPort->println(F("begin: not enough memory for _saraResponseBacklog!"));
146-
return false;
153+
_saraResponseBacklog = new char[_RXBuffSize];
154+
if (NULL == _saraResponseBacklog)
155+
{
156+
if (_printDebug == true)
157+
_debugPort->println(F("begin: not enough memory for _saraResponseBacklog!"));
158+
return false;
159+
}
147160
}
148161
memset(_saraResponseBacklog, 0, _RXBuffSize);
149162

@@ -212,7 +225,14 @@ bool SARA_R5::bufferedPoll(void)
212225

213226
if ((hwAvailable() > 0) || (backlogLen > 0)) // If either new data is available, or backlog had data.
214227
{
215-
// Wait for up to _rxWindowMillis for new serial data to arrive.
228+
//Check for incoming serial data. Copy it into the backlog
229+
230+
// Important note:
231+
// On ESP32, Serial.available only provides an update every ~120 bytes during the reception of long messages:
232+
// https://gitter.im/espressif/arduino-esp32?at=5e25d6370a1cf54144909c85
233+
// Be aware that if a long message is being received, the code below will timeout after _rxWindowMillis = 2 millis.
234+
// At 115200 baud, hwAvailable takes ~120 * 10 / 115200 = 10.4 millis before it indicates that data is being received.
235+
216236
while (((millis() - timeIn) < _rxWindowMillis) && (avail < _RXBuffSize))
217237
{
218238
if (hwAvailable() > 0) //hwAvailable can return -1 if the serial port is NULL
@@ -2558,7 +2578,7 @@ SARA_R5_error_t SARA_R5::socketWrite(int socket, const char *str, int len)
25582578
{
25592579
unsigned long writeDelay = millis();
25602580
while (millis() < (writeDelay + 50))
2561-
delay(1); //uBlox specification says to wait 50ms after receiving "@" to write data.
2581+
delay(1); //u-blox specification says to wait 50ms after receiving "@" to write data.
25622582

25632583
if (len == -1)
25642584
{
@@ -5626,7 +5646,14 @@ SARA_R5_error_t SARA_R5::sendCustomCommandWithResponse(const char *command, cons
56265646

56275647
void SARA_R5::sendCommand(const char *command, bool at)
56285648
{
5629-
//Spend up to _rxWindowMillis milliseconds copying any incoming serial data into the backlog
5649+
//Check for incoming serial data. Copy it into the backlog
5650+
5651+
// Important note:
5652+
// On ESP32, Serial.available only provides an update every ~120 bytes during the reception of long messages:
5653+
// https://gitter.im/espressif/arduino-esp32?at=5e25d6370a1cf54144909c85
5654+
// Be aware that if a long message is being received, the code below will timeout after _rxWindowMillis = 2 millis.
5655+
// At 115200 baud, hwAvailable takes ~120 * 10 / 115200 = 10.4 millis before it indicates that data is being received.
5656+
56305657
unsigned long timeIn = millis();
56315658
if (hwAvailable() > 0) //hwAvailable can return -1 if the serial port is NULL
56325659
{

src/SparkFun_u-blox_SARA-R5_Arduino_Library.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -601,9 +601,9 @@ class SARA_R5 : public Print
601601

602602
// This function was originally written by Matthew Menze for the LTE Shield (SARA-R4) library
603603
// See: https://github.com/sparkfun/SparkFun_LTE_Shield_Arduino_Library/pull/8
604-
// It does the same job as ::poll but also processed any 'old' data stored in the backlog first
604+
// It does the same job as ::poll but also processes any 'old' data stored in the backlog first
605605
// It also has a built-in timeout - which ::poll does not
606-
// Use this - it is way better than ::poll. Thank you Natthew!
606+
// Use this - it is way better than ::poll. Thank you Matthew!
607607
bool bufferedPoll(void);
608608

609609
// This is the original poll function.
@@ -964,7 +964,7 @@ class SARA_R5 : public Print
964964
bool _pollReentrant = false; // Prevent reentry of poll - just in case it gets called from a callback
965965

966966
#define _RXBuffSize 2056
967-
const unsigned long _rxWindowMillis = 2; // 1ms is not quite long enough for a single char at 9600 baud. millis roll over much less often than micros.
967+
const unsigned long _rxWindowMillis = 2; // 1ms is not quite long enough for a single char at 9600 baud. millis roll over much less often than micros. See notes in .cpp re. ESP32!
968968
char *_saraRXBuffer; // Allocated in SARA_R5::begin
969969
char *_pruneBuffer;
970970
char *_saraResponseBacklog;

0 commit comments

Comments
 (0)