Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 4:cca1b8c0e5c1, committed 2021-06-28
- Comitter:
- JohnnyK
- Date:
- Mon Jun 28 10:18:49 2021 +0000
- Parent:
- 3:c96c0b0c92df
- Commit message:
- Constructor change - allow to change size of internal buffer from constructor.
Changed in this revision
FTPClient.cpp | Show annotated file Show diff for this revision Revisions of this file |
FTPClient.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r c96c0b0c92df -r cca1b8c0e5c1 FTPClient.cpp --- a/FTPClient.cpp Thu Jun 24 08:45:46 2021 +0000 +++ b/FTPClient.cpp Mon Jun 28 10:18:49 2021 +0000 @@ -17,16 +17,14 @@ #include "mbed.h" #include "FTPClient.h" -#define FTP_BUF_SIZE (1460) - #define FTP_DEBUG 1 -FTPClient::FTPClient(NetworkInterface *net, const char* root) { +FTPClient::FTPClient(NetworkInterface *net, const char* root, size_t ftp_buf_size):_ftp_buf_size(ftp_buf_size) { _ctr_open = false; _login = false; strcpy(_root, root); p_network = net; - p_ftp_buf = new char[FTP_BUF_SIZE]; + p_ftp_buf = new char[_ftp_buf_size]; } FTPClient::~FTPClient() { @@ -45,7 +43,7 @@ } _ctr_open = true; - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -57,7 +55,7 @@ _login = false; sprintf(p_ftp_buf, "user %s\r\n", user); FTPClientControlSock.send(p_ftp_buf, strlen(p_ftp_buf)); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -68,7 +66,7 @@ sprintf(p_ftp_buf, "pass %s\r\n", pass); FTPClientControlSock.send(p_ftp_buf, strlen(p_ftp_buf)); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -79,7 +77,7 @@ sprintf(p_ftp_buf, "type I\r\n"); FTPClientControlSock.send(p_ftp_buf, strlen(p_ftp_buf)); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -96,7 +94,7 @@ sprintf(p_ftp_buf, "quit \r\n"); FTPClientControlSock.send(p_ftp_buf, strlen(p_ftp_buf)); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -128,7 +126,7 @@ FTPClientDataSock.set_timeout(500); sprintf(p_ftp_buf, "retr %s\r\n", file_name); FTPClientControlSock.send(p_ftp_buf, strlen(p_ftp_buf)); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -140,7 +138,7 @@ sprintf(p_ftp_buf, "%s/%s", _root, file_name); fp = fopen(p_ftp_buf, "w"); while (1) { - size = FTPClientDataSock.recv(p_ftp_buf, FTP_BUF_SIZE); + size = FTPClientDataSock.recv(p_ftp_buf, _ftp_buf_size); if (size > 0) { fwrite(p_ftp_buf, size, sizeof(char), fp); } else { @@ -150,7 +148,7 @@ fclose(fp); FTPClientDataSock.close(); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -179,7 +177,7 @@ FTPClientDataSock.set_timeout(osWaitForever); sprintf(p_ftp_buf, "stor %s\r\n", file_name); FTPClientControlSock.send(p_ftp_buf, strlen(p_ftp_buf)); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -195,8 +193,8 @@ fseek(fp, 0, SEEK_SET); while (remain_size > 0) { - if (remain_size > FTP_BUF_SIZE) { - send_size = FTP_BUF_SIZE; + if (remain_size > _ftp_buf_size) { + send_size = _ftp_buf_size; } else { send_size = remain_size; } @@ -207,7 +205,7 @@ fclose(fp); FTPClientDataSock.close(); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -226,7 +224,7 @@ sprintf(p_ftp_buf, "dele %s\r\n", file_name); FTPClientControlSock.send(p_ftp_buf, strlen(p_ftp_buf)); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -246,7 +244,7 @@ sprintf(p_ftp_buf, "xmkd %s\r\n", dir_name); FTPClientControlSock.send(p_ftp_buf, strlen(p_ftp_buf)); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -266,7 +264,7 @@ sprintf(p_ftp_buf, "cwd %s\r\n", dir_name); FTPClientControlSock.send(p_ftp_buf, strlen(p_ftp_buf)); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -302,7 +300,7 @@ FTPClientDataSock.set_timeout(500); sprintf(p_ftp_buf, "list\r\n"); FTPClientControlSock.send(p_ftp_buf, strlen(p_ftp_buf)); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -312,7 +310,7 @@ } while (remain_size > 0) { - size = FTPClientDataSock.recv(p_ftp_buf, FTP_BUF_SIZE); + size = FTPClientDataSock.recv(p_ftp_buf, _ftp_buf_size); if (size > 0) { if (size > remain_size) { size = remain_size; @@ -327,7 +325,7 @@ list_buf[idx] = '\0'; FTPClientDataSock.close(); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -362,7 +360,7 @@ FTPClientDataSock.set_timeout(500); sprintf(p_ftp_buf, "nlst\r\n"); FTPClientControlSock.send(p_ftp_buf, strlen(p_ftp_buf)); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -372,7 +370,7 @@ } while (remain_size > 0) { - size = FTPClientDataSock.recv(p_ftp_buf, FTP_BUF_SIZE); + size = FTPClientDataSock.recv(p_ftp_buf, _ftp_buf_size); if (size > 0) { if (size > remain_size) { size = remain_size; @@ -387,7 +385,7 @@ list_buf[idx] = '\0'; FTPClientDataSock.close(); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -407,7 +405,7 @@ sprintf(p_ftp_buf, "pasv\r\n"); FTPClientControlSock.send(p_ftp_buf, strlen(p_ftp_buf)); - if (FTPClientControlSock.recv(p_ftp_buf, FTP_BUF_SIZE) <= 0) { + if (FTPClientControlSock.recv(p_ftp_buf, _ftp_buf_size) <= 0) { debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; } @@ -448,5 +446,4 @@ } debug_if(FTP_DEBUG,"ERROR: %s(%d)\r\n", __FILE__, __LINE__); return false; -} - +} \ No newline at end of file
diff -r c96c0b0c92df -r cca1b8c0e5c1 FTPClient.h --- a/FTPClient.h Thu Jun 24 08:45:46 2021 +0000 +++ b/FTPClient.h Mon Jun 28 10:18:49 2021 +0000 @@ -24,10 +24,11 @@ public: /** Constructor * - * @param net FTP server port - * @param root User name + * @param net FTP server port + * @param root User name + * @param ftp_buf_size Internal buffer size, default is 500 */ - FTPClient(NetworkInterface *net, const char* root); + FTPClient(NetworkInterface *net, const char* root, size_t ftp_buf_size = 500); ~FTPClient(); /** Opens address. @@ -106,6 +107,7 @@ char ftp_data_ip_addr[20]; char * p_ftp_buf; char _root[20]; + size_t _ftp_buf_size; bool open_data_sock(); };