From a56d0517c68173a3c4315a20f6b82ec342d3fc00 Mon Sep 17 00:00:00 2001 From: Michael Ammann Date: Thu, 24 Nov 2022 20:27:43 +0100 Subject: [PATCH] close socket asynchronously, if short timeouts - this solves an issue during init(), where we quickly close all sockets without waiting for timeouts. - this may throw socket close URCs when they are actually closed. --- src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp b/src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp index dac5d86..43ae8d5 100644 --- a/src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp +++ b/src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp @@ -2507,7 +2507,10 @@ SARA_R5_error_t SARA_R5::socketClose(int socket, unsigned long timeout) free(command); return SARA_R5_ERROR_OUT_OF_MEMORY; } - sprintf(command, "%s=%d", SARA_R5_CLOSE_SOCKET, socket); + // if timeout is short, close asynchronously and don't wait for socket closure (we will get the URC later) + // this will make sure the AT command parser is not confused during init() + const char* format = (SARA_R5_STANDARD_RESPONSE_TIMEOUT == timeout) ? "%s=%d,1" : "%s=%d"; + sprintf(command, format, SARA_R5_CLOSE_SOCKET, socket); err = sendCommandWithResponse(command, SARA_R5_RESPONSE_OK_OR_ERROR, response, timeout);