Skip to content

Commit 3f0d69e

Browse files
authored
Merge pull request #24 from mazgch/patch-1
More tolerant AT parser
2 parents f71c6d3 + 541cd38 commit 3f0d69e

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp

+10-9
Original file line numberDiff line numberDiff line change
@@ -550,10 +550,10 @@ bool SARA_R5::processURCEvent(const char *event)
550550
int scanNum;
551551
int qos = -1;
552552
String topic;
553-
scanNum = sscanf(event, "+UUMQTTC: %d,%d", &command, &result);
553+
scanNum = sscanf(event, "+UUMQTTC:%d,%d", &command, &result);
554554
if ((scanNum == 2) && (command == SARA_R5_MQTT_COMMAND_SUBSCRIBE)) {
555555
char topicC[100] = "";
556-
scanNum = sscanf(event, "+UUMQTTC: %*d,%*d,%d,\"%[^\"]\"", &qos, topicC);
556+
scanNum = sscanf(event, "+UUMQTTC:%*d,%*d,%d,\"%[^\"]\"", &qos, topicC);
557557
topic = topicC;
558558
}
559559
if ((scanNum == 2) || (scanNum == 4))
@@ -580,7 +580,7 @@ bool SARA_R5::processURCEvent(const char *event)
580580
const char *searchPtr = event;
581581

582582
// Try to extract the UUPING retries and payload size
583-
scanNum = sscanf(searchPtr, "+UUPING: %d,%d,", &retry, &p_size);
583+
scanNum = sscanf(searchPtr, "+UUPING:%d,%d,", &retry, &p_size);
584584

585585
if (scanNum == 2)
586586
{
@@ -3952,9 +3952,9 @@ SARA_R5_error_t SARA_R5::getHTTPprotocolError(int profile, int *error_class, int
39523952
if (err == SARA_R5_ERROR_SUCCESS)
39533953
{
39543954
int scanned = 0;
3955-
char *searchPtr = strstr(response, "+UHTTPER: ");
3955+
char *searchPtr = strstr(response, "+UHTTPER:");
39563956
if (searchPtr != NULL)
3957-
scanned = sscanf(searchPtr, "+UHTTPER: %d,%d,%d\r\n",
3957+
scanned = sscanf(searchPtr, "+UHTTPER:%d,%d,%d\r\n",
39583958
&rprofile, &eclass, &ecode);
39593959
if (scanned == 3)
39603960
{
@@ -4129,10 +4129,11 @@ SARA_R5_error_t SARA_R5::readMQTT(int* pQos, String* pTopic, uint8_t *readDest,
41294129
}
41304130

41314131
// Extract the data
4132-
char *searchPtr = strstr(response, "+UMQTTC: 6");
4132+
char *searchPtr = strstr(response, "+UMQTTC:");
4133+
int cmd = 0;
41334134
if (searchPtr != NULL)
4134-
scanNum = sscanf(searchPtr, "+UMQTTC: 6,%d,%d,%d,\"%*[^\"]\",%d,\"", pQos, &total_length, &topic_length, &data_length);
4135-
if (scanNum != 4)
4135+
scanNum = sscanf(searchPtr, "+UMQTTC:%d,%d,%d,%d,\"%*[^\"]\",%d,\"", &cmd, pQos, &total_length, &topic_length, &data_length);
4136+
if ((scanNum != 5) || (cmd != SARA_R5_MQTT_COMMAND_READ))
41364137
{
41374138
if (_printDebug == true)
41384139
{
@@ -4195,7 +4196,7 @@ SARA_R5_error_t SARA_R5::getMQTTprotocolError(int *error_code, int *error_code2)
41954196
if (err == SARA_R5_ERROR_SUCCESS)
41964197
{
41974198
int scanned = 0;
4198-
char *searchPtr = strstr(response, "+UMQTTER: ");
4199+
char *searchPtr = strstr(response, "+UMQTTER:");
41994200
if (searchPtr != NULL)
42004201
scanned = sscanf(searchPtr, "+UMQTTER:%d,%d\r\n",
42014202
&code, &code2);

0 commit comments

Comments
 (0)