Skip to content

Commit 629ec6b

Browse files
committed
First attempt to get non-ESP32 platforms to compile.
Fixed enum as sscanf destination. Replaced String.isEmpty() with String.length() < 1. Removed odd String usage in mqttPublishTextMsg. Removed Stream.printf() calls.
1 parent 713cca8 commit 629ec6b

File tree

1 file changed

+20
-24
lines changed

1 file changed

+20
-24
lines changed

src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp

+20-24
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,7 @@ bool SARA_R5::processURCEvent(const char *event)
630630
}
631631
}
632632
{ // URC: +UUFTPCR (FTP Command Result)
633-
SARA_R5_ftp_command_opcode_t ftpCmd;
633+
int ftpCmd;
634634
int ftpResult;
635635
int scanNum;
636636
char *searchPtr = strstr(event, SARA_R5_FTP_COMMAND_URC);
@@ -4466,29 +4466,42 @@ SARA_R5_error_t SARA_R5::readMQTT(int* pQos, String* pTopic, uint8_t *readDest,
44664466

44674467
SARA_R5_error_t SARA_R5::mqttPublishTextMsg(const String& topic, const char * const msg, uint8_t qos, bool retain)
44684468
{
4469-
if (topic.isEmpty() || msg == nullptr)
4469+
if (topic.length() < 1 || msg == nullptr)
44704470
{
44714471
return SARA_R5_ERROR_INVALID;
44724472
}
44734473

44744474
SARA_R5_error_t err;
44754475

4476+
char sanitized_msg[MAX_MQTT_DIRECT_MSG_LEN + 1];
4477+
memset(sanitized_msg, 0, sizeof(sanitized_msg));
4478+
44764479
// Check the message length and truncate if necessary.
44774480
size_t msg_len = strnlen(msg, MAX_MQTT_DIRECT_MSG_LEN);
44784481
if (msg_len > MAX_MQTT_DIRECT_MSG_LEN)
44794482
{
44804483
msg_len = MAX_MQTT_DIRECT_MSG_LEN;
44814484
}
44824485

4483-
String str_msg(msg, msg_len);
4486+
strncpy(sanitized_msg, msg, msg_len);
4487+
char * msg_ptr = sanitized_msg;
4488+
while (*msg_ptr != 0)
4489+
{
4490+
if (*msg_ptr == '"')
4491+
{
4492+
*msg_ptr = ' ';
4493+
}
4494+
4495+
msg_ptr++;
4496+
}
44844497

44854498
char *command = sara_r5_calloc_char(strlen(SARA_R5_MQTT_COMMAND) + 20 + topic.length() + msg_len);
44864499
if (command == nullptr)
44874500
{
44884501
return SARA_R5_ERROR_OUT_OF_MEMORY;
44894502
}
44904503

4491-
sprintf(command, "%s=%d,%u,%u,0,\"%s\",\"%s\"", SARA_R5_MQTT_COMMAND, SARA_R5_MQTT_COMMAND_PUBLISH, qos, (retain ? 1:0), topic.c_str(), str_msg.c_str());
4504+
sprintf(command, "%s=%d,%u,%u,0,\"%s\",\"%s\"", SARA_R5_MQTT_COMMAND, SARA_R5_MQTT_COMMAND_PUBLISH, qos, (retain ? 1:0), topic.c_str(), sanitized_msg);
44924505

44934506
sendCommand(command, true);
44944507
err = waitForResponse(SARA_R5_RESPONSE_MORE, SARA_R5_RESPONSE_ERROR, SARA_R5_STANDARD_RESPONSE_TIMEOUT);
@@ -4513,7 +4526,7 @@ SARA_R5_error_t SARA_R5::mqttPublishBinaryMsg(const String& topic, const char *
45134526
*
45144527
* +UUMQTTC: 9,1
45154528
*/
4516-
if (topic.isEmpty() || msg == nullptr || msg_len > MAX_MQTT_DIRECT_MSG_LEN)
4529+
if (topic.length() < 1|| msg == nullptr || msg_len > MAX_MQTT_DIRECT_MSG_LEN)
45174530
{
45184531
return SARA_R5_ERROR_INVALID;
45194532
}
@@ -4541,7 +4554,7 @@ SARA_R5_error_t SARA_R5::mqttPublishBinaryMsg(const String& topic, const char *
45414554

45424555
SARA_R5_error_t SARA_R5::mqttPublishFromFile(const String& topic, const String& filename, uint8_t qos, bool retain)
45434556
{
4544-
if (topic.isEmpty() || filename.isEmpty())
4557+
if (topic.length() < 1|| filename.length() < 1)
45454558
{
45464559
return SARA_R5_ERROR_INVALID;
45474560
}
@@ -5570,7 +5583,7 @@ SARA_R5_error_t SARA_R5::getFileContents(String filename, char *contents)
55705583
SARA_R5_error_t SARA_R5::getFileBlock(const String& filename, char* buffer, size_t offset, size_t requested_length, size_t& bytes_read)
55715584
{
55725585
bytes_read = 0;
5573-
if (filename.isEmpty() || buffer == nullptr || requested_length < 1)
5586+
if (filename.length() < 1 || buffer == nullptr || requested_length < 1)
55745587
{
55755588
return SARA_R5_ERROR_UNEXPECTED_PARAM;
55765589
}
@@ -5589,10 +5602,6 @@ SARA_R5_error_t SARA_R5::getFileBlock(const String& filename, char* buffer, size
55895602
size_t cmd_len = filename.length() + 32;
55905603
char* cmd = sara_r5_calloc_char(cmd_len);
55915604
sprintf(cmd, "at+urdblock=\"%s\",%zu,%zu\r\n", filename.c_str(), offset, requested_length);
5592-
if (_printDebug == true)
5593-
{
5594-
_debugPort->printf("getFileBlock: sending command: %s\r\n", cmd);
5595-
}
55965605
sendCommand(cmd, false);
55975606

55985607
int ich;
@@ -5620,20 +5629,12 @@ SARA_R5_error_t SARA_R5::getFileBlock(const String& filename, char* buffer, size
56205629
}
56215630

56225631
cmd[bytes_read] = 0;
5623-
if (_printDebug == true)
5624-
{
5625-
_debugPort->printf("getFileBlock: header: [%s]\r\n", cmd);
5626-
}
56275632
cmd[bytes_read - 2] = 0;
56285633

56295634
// Example response:
56305635
// +URDBLOCK: "wombat.bin",64000,"<data starts here>... "<cr><lf>
56315636
size_t data_length = strtoul(&cmd[comma_idx], nullptr, 10);
56325637
free(cmd);
5633-
if (_printDebug == true)
5634-
{
5635-
_debugPort->printf("getFileBlock: reading %zu bytes\r\n", data_length);
5636-
}
56375638

56385639
bytes_read = 0;
56395640
size_t bytes_remaining = data_length;
@@ -5645,11 +5646,6 @@ SARA_R5_error_t SARA_R5::getFileBlock(const String& filename, char* buffer, size
56455646
bytes_remaining -= rc;
56465647
}
56475648

5648-
if (_printDebug == true)
5649-
{
5650-
_debugPort->printf("getFileBlock: read %zu bytes\r\n", bytes_read);
5651-
}
5652-
56535649
return SARA_R5_ERROR_SUCCESS;
56545650
}
56555651

0 commit comments

Comments
 (0)