@@ -2161,7 +2161,19 @@ SARA_R5_error_t SARA_R5::socketConnect(int socket, const char *address,
2161
2161
return err;
2162
2162
}
2163
2163
2164
- SARA_R5_error_t SARA_R5::socketWrite (int socket, const char *str)
2164
+ SARA_R5_error_t SARA_R5::socketConnect (int socket, IPAddress address,
2165
+ unsigned int port)
2166
+ {
2167
+ char *charAddress = sara_r5_calloc_char (16 );
2168
+ if (charAddress == NULL )
2169
+ return SARA_R5_ERROR_OUT_OF_MEMORY;
2170
+ memset (charAddress, 0 , 16 );
2171
+ sprintf (charAddress, " %d.%d.%d.%d" , address[0 ], address[1 ], address[2 ], address[3 ]);
2172
+
2173
+ return (socketConnect (socket, (const char *)charAddress, port));
2174
+ }
2175
+
2176
+ SARA_R5_error_t SARA_R5::socketWrite (int socket, const char *str, int len)
2165
2177
{
2166
2178
char *command;
2167
2179
char *response;
@@ -2177,7 +2189,8 @@ SARA_R5_error_t SARA_R5::socketWrite(int socket, const char *str)
2177
2189
free (command);
2178
2190
return SARA_R5_ERROR_OUT_OF_MEMORY;
2179
2191
}
2180
- sprintf (command, " %s=%d,%d" , SARA_R5_WRITE_SOCKET, socket, strlen (str));
2192
+ int dataLen = len == -1 ? strlen (str) : len;
2193
+ sprintf (command, " %s=%d,%d" , SARA_R5_WRITE_SOCKET, socket, dataLen);
2181
2194
2182
2195
err = sendCommandWithResponse (command, " @" , response,
2183
2196
SARA_R5_2_MIN_TIMEOUT);
@@ -2188,12 +2201,26 @@ SARA_R5_error_t SARA_R5::socketWrite(int socket, const char *str)
2188
2201
while (millis () < (writeDelay + 50 ))
2189
2202
; // uBlox specification says to wait 50ms after receiving "@" to write data.
2190
2203
2191
- if (_printDebug == true )
2204
+ if (len == - 1 )
2192
2205
{
2193
- _debugPort->print (F (" socketWrite: writing: " ));
2194
- _debugPort->println (str);
2206
+ if (_printDebug == true )
2207
+ {
2208
+ _debugPort->print (F (" socketWrite: writing: " ));
2209
+ _debugPort->println (str);
2210
+ }
2211
+ hwPrint (str);
2195
2212
}
2196
- hwPrint (str);
2213
+ else
2214
+ {
2215
+ if (_printDebug == true )
2216
+ {
2217
+ _debugPort->print (F (" socketWrite: writing " ));
2218
+ _debugPort->print (len);
2219
+ _debugPort->println (F (" bytes" ));
2220
+ }
2221
+ hwWriteData (str, len);
2222
+ }
2223
+
2197
2224
err = waitForResponse (SARA_R5_RESPONSE_OK, SARA_R5_RESPONSE_ERROR, SARA_R5_SOCKET_WRITE_TIMEOUT);
2198
2225
}
2199
2226
@@ -2216,7 +2243,7 @@ SARA_R5_error_t SARA_R5::socketWrite(int socket, const char *str)
2216
2243
2217
2244
SARA_R5_error_t SARA_R5::socketWrite (int socket, String str)
2218
2245
{
2219
- return socketWrite (socket, str.c_str ());
2246
+ return socketWrite (socket, str.c_str (), str. length () );
2220
2247
}
2221
2248
2222
2249
SARA_R5_error_t SARA_R5::socketWriteUDP (int socket, const char *address, int port, const char *str, int len)
@@ -2265,6 +2292,17 @@ SARA_R5_error_t SARA_R5::socketWriteUDP(int socket, const char *address, int por
2265
2292
return err;
2266
2293
}
2267
2294
2295
+ SARA_R5_error_t SARA_R5::socketWriteUDP (int socket, IPAddress address, int port, const char *str, int len)
2296
+ {
2297
+ char *charAddress = sara_r5_calloc_char (16 );
2298
+ if (charAddress == NULL )
2299
+ return SARA_R5_ERROR_OUT_OF_MEMORY;
2300
+ memset (charAddress, 0 , 16 );
2301
+ sprintf (charAddress, " %d.%d.%d.%d" , address[0 ], address[1 ], address[2 ], address[3 ]);
2302
+
2303
+ return (socketWriteUDP (socket, (const char *)charAddress, port, str, len));
2304
+ }
2305
+
2268
2306
SARA_R5_error_t SARA_R5::socketWriteUDP (int socket, String address, int port, String str, int len)
2269
2307
{
2270
2308
return socketWriteUDP (socket, address.c_str (), port, str.c_str (), len);
0 commit comments