Skip to content

Commit d0d6428

Browse files
committed
Add socketReadAvailable and socketReadAvailableUDP
1 parent 34ffb80 commit d0d6428

File tree

3 files changed

+102
-0
lines changed

3 files changed

+102
-0
lines changed

keywords.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ socketConnect KEYWORD2
106106
socketWrite KEYWORD2
107107
socketWriteUDP KEYWORD2
108108
socketRead KEYWORD2
109+
socketReadAvailable KEYWORD2
109110
socketReadUDP KEYWORD2
111+
socketReadAvailableUDP KEYWORD2
110112
socketListen KEYWORD2
111113
socketDirectLinkMode KEYWORD2
112114
socketDirectLinkTimeTrigger KEYWORD2

src/SparkFun_u-blox_SARA-R5_Arduino_Library.cpp

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2401,6 +2401,55 @@ SARA_R5_error_t SARA_R5::socketRead(int socket, int length, char *readDest)
24012401
return err;
24022402
}
24032403

2404+
SARA_R5_error_t SARA_R5::socketReadAvailable(int socket, int *length)
2405+
{
2406+
char *command;
2407+
char *response;
2408+
SARA_R5_error_t err;
2409+
int scanNum;
2410+
int readLength = 0;
2411+
int socketStore = 0;
2412+
2413+
command = sara_r5_calloc_char(strlen(SARA_R5_READ_SOCKET) + 32);
2414+
if (command == NULL)
2415+
return SARA_R5_ERROR_OUT_OF_MEMORY;
2416+
sprintf(command, "%s=%d,0", SARA_R5_READ_SOCKET, socket);
2417+
2418+
response = sara_r5_calloc_char(strlen(SARA_R5_READ_SOCKET) + 16);
2419+
if (response == NULL)
2420+
{
2421+
free(command);
2422+
return SARA_R5_ERROR_OUT_OF_MEMORY;
2423+
}
2424+
2425+
err = sendCommandWithResponse(command, SARA_R5_RESPONSE_OK, response,
2426+
SARA_R5_STANDARD_RESPONSE_TIMEOUT);
2427+
2428+
if (err == SARA_R5_ERROR_SUCCESS)
2429+
{
2430+
scanNum = sscanf(response, "+USORD: %d,%d",
2431+
&socketStore, &readLength);
2432+
if (scanNum != 2)
2433+
{
2434+
if (_printDebug == true)
2435+
{
2436+
_debugPort->print(F("socketReadAvailable: error: scanNum is "));
2437+
_debugPort->println(scanNum);
2438+
}
2439+
free(command);
2440+
free(response);
2441+
return SARA_R5_ERROR_UNEXPECTED_RESPONSE;
2442+
}
2443+
2444+
*length = readLength;
2445+
}
2446+
2447+
free(command);
2448+
free(response);
2449+
2450+
return err;
2451+
}
2452+
24042453
SARA_R5_error_t SARA_R5::socketReadUDP(int socket, int length, char *readDest, IPAddress *remoteIPAddress, int *remotePort)
24052454
{
24062455
char *command;
@@ -2516,6 +2565,55 @@ SARA_R5_error_t SARA_R5::socketReadUDP(int socket, int length, char *readDest, I
25162565
return err;
25172566
}
25182567

2568+
SARA_R5_error_t SARA_R5::socketReadAvailableUDP(int socket, int *length)
2569+
{
2570+
char *command;
2571+
char *response;
2572+
SARA_R5_error_t err;
2573+
int scanNum;
2574+
int readLength = 0;
2575+
int socketStore = 0;
2576+
2577+
command = sara_r5_calloc_char(strlen(SARA_R5_READ_UDP_SOCKET) + 32);
2578+
if (command == NULL)
2579+
return SARA_R5_ERROR_OUT_OF_MEMORY;
2580+
sprintf(command, "%s=%d,0", SARA_R5_READ_UDP_SOCKET, socket);
2581+
2582+
response = sara_r5_calloc_char(strlen(SARA_R5_READ_UDP_SOCKET) + 16);
2583+
if (response == NULL)
2584+
{
2585+
free(command);
2586+
return SARA_R5_ERROR_OUT_OF_MEMORY;
2587+
}
2588+
2589+
err = sendCommandWithResponse(command, SARA_R5_RESPONSE_OK, response,
2590+
SARA_R5_STANDARD_RESPONSE_TIMEOUT);
2591+
2592+
if (err == SARA_R5_ERROR_SUCCESS)
2593+
{
2594+
scanNum = sscanf(response, "+USORF: %d,%d",
2595+
&socketStore, &readLength);
2596+
if (scanNum != 2)
2597+
{
2598+
if (_printDebug == true)
2599+
{
2600+
_debugPort->print(F("socketReadAvailableUDP: error: scanNum is "));
2601+
_debugPort->println(scanNum);
2602+
}
2603+
free(command);
2604+
free(response);
2605+
return SARA_R5_ERROR_UNEXPECTED_RESPONSE;
2606+
}
2607+
2608+
*length = readLength;
2609+
}
2610+
2611+
free(command);
2612+
free(response);
2613+
2614+
return err;
2615+
}
2616+
25192617
SARA_R5_error_t SARA_R5::socketListen(int socket, unsigned int port)
25202618
{
25212619
SARA_R5_error_t err;

src/SparkFun_u-blox_SARA-R5_Arduino_Library.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,9 @@ class SARA_R5 : public Print
643643
SARA_R5_error_t socketWriteUDP(int socket, IPAddress address, int port, const char *str, int len = -1);
644644
SARA_R5_error_t socketWriteUDP(int socket, String address, int port, String str, int len = -1);
645645
SARA_R5_error_t socketRead(int socket, int length, char *readDest);
646+
SARA_R5_error_t socketReadAvailable(int socket, int *length);
646647
SARA_R5_error_t socketReadUDP(int socket, int length, char *readDest, IPAddress *remoteIPAddress = NULL, int *remotePort = NULL);
648+
SARA_R5_error_t socketReadAvailableUDP(int socket, int *length);
647649
SARA_R5_error_t socketListen(int socket, unsigned int port);
648650
SARA_R5_error_t socketDirectLinkMode(int socket);
649651
SARA_R5_error_t socketDirectLinkTimeTrigger(int socket, unsigned long timerTrigger);

0 commit comments

Comments
 (0)