FTP client library for mbed-os

Committer:
dkato
Date:
Fri Feb 28 00:17:00 2020 +0000
Revision:
2:88b7399c8260
Parent:
0:c2da359279a6
Added switch to binary mode

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:c2da359279a6 1 /* FTP client library
dkato 0:c2da359279a6 2 * Copyright (c) 2018 Renesas Electronics Corporation
dkato 0:c2da359279a6 3 *
dkato 0:c2da359279a6 4 * Licensed under the Apache License, Version 2.0 (the "License");
dkato 0:c2da359279a6 5 * you may not use this file except in compliance with the License.
dkato 0:c2da359279a6 6 * You may obtain a copy of the License at
dkato 0:c2da359279a6 7 *
dkato 0:c2da359279a6 8 * http://www.apache.org/licenses/LICENSE-2.0
dkato 0:c2da359279a6 9 *
dkato 0:c2da359279a6 10 * Unless required by applicable law or agreed to in writing, software
dkato 0:c2da359279a6 11 * distributed under the License is distributed on an "AS IS" BASIS,
dkato 0:c2da359279a6 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dkato 0:c2da359279a6 13 * See the License for the specific language governing permissions and
dkato 0:c2da359279a6 14 * limitations under the License.
dkato 0:c2da359279a6 15 */
dkato 0:c2da359279a6 16
dkato 0:c2da359279a6 17 #ifndef FTP_CLIENT_H
dkato 0:c2da359279a6 18 #define FTP_CLIENT_H
dkato 0:c2da359279a6 19 #include "mbed.h"
dkato 0:c2da359279a6 20
dkato 0:c2da359279a6 21 /** FTPClient class.
dkato 0:c2da359279a6 22 */
dkato 0:c2da359279a6 23 class FTPClient {
dkato 0:c2da359279a6 24 public:
dkato 0:c2da359279a6 25 /** Constructor
dkato 0:c2da359279a6 26 *
dkato 0:c2da359279a6 27 * @param net FTP server port
dkato 0:c2da359279a6 28 * @param root User name
dkato 0:c2da359279a6 29 */
dkato 0:c2da359279a6 30 FTPClient(NetworkInterface *net, const char* root);
dkato 0:c2da359279a6 31 ~FTPClient();
dkato 0:c2da359279a6 32
dkato 0:c2da359279a6 33 /** Opens address.
dkato 0:c2da359279a6 34 *
dkato 0:c2da359279a6 35 * @param ip_addr FTP server IP address
dkato 0:c2da359279a6 36 * @param port FTP server port
dkato 0:c2da359279a6 37 * @param user User name
dkato 0:c2da359279a6 38 * @param pass Password
dkato 0:c2da359279a6 39 * @return true = success, false = failure
dkato 0:c2da359279a6 40 */
dkato 0:c2da359279a6 41 bool open(const char* ip_addr, int port, const char* user, const char* pass);
dkato 0:c2da359279a6 42
dkato 0:c2da359279a6 43 /** Exits from FTP.
dkato 0:c2da359279a6 44 *
dkato 0:c2da359279a6 45 * @return true = success, false = failure
dkato 0:c2da359279a6 46 */
dkato 0:c2da359279a6 47 bool quit();
dkato 0:c2da359279a6 48
dkato 0:c2da359279a6 49 /** Get file from the remote computer.
dkato 0:c2da359279a6 50 *
dkato 0:c2da359279a6 51 * @param file_name File name
dkato 0:c2da359279a6 52 * @return true = success, false = failure
dkato 0:c2da359279a6 53 */
dkato 0:c2da359279a6 54 bool get(const char* file_name);
dkato 0:c2da359279a6 55
dkato 0:c2da359279a6 56 /** Send one file.
dkato 0:c2da359279a6 57 *
dkato 0:c2da359279a6 58 * @param file_name File name
dkato 0:c2da359279a6 59 * @return true = success, false = failure
dkato 0:c2da359279a6 60 */
dkato 0:c2da359279a6 61 bool put(const char* file_name);
dkato 0:c2da359279a6 62
dkato 0:c2da359279a6 63 /** Deletes a file.
dkato 0:c2da359279a6 64 *
dkato 0:c2da359279a6 65 * @param file_name File name
dkato 0:c2da359279a6 66 * @return true = success, false = failure
dkato 0:c2da359279a6 67 */
dkato 0:c2da359279a6 68 bool del(const char* file_name);
dkato 0:c2da359279a6 69
dkato 0:c2da359279a6 70 /** Make directory.
dkato 0:c2da359279a6 71 *
dkato 0:c2da359279a6 72 * @param dir_name Directory name
dkato 0:c2da359279a6 73 * @return true = success, false = failure
dkato 0:c2da359279a6 74 */
dkato 0:c2da359279a6 75 bool mkdir(const char* dir_name);
dkato 0:c2da359279a6 76
dkato 0:c2da359279a6 77 /** Changes directory.
dkato 0:c2da359279a6 78 *
dkato 0:c2da359279a6 79 * @param dir_name Directory name
dkato 0:c2da359279a6 80 * @return true = success, false = failure
dkato 0:c2da359279a6 81 */
dkato 0:c2da359279a6 82 bool cd(const char* dir_name);
dkato 0:c2da359279a6 83
dkato 0:c2da359279a6 84 /** Lists files, if connected.
dkato 0:c2da359279a6 85 *
dkato 0:c2da359279a6 86 * @param list_buf Buffer to store results
dkato 0:c2da359279a6 87 * @param buf_size Size of list_buf
dkato 0:c2da359279a6 88 * @return true = success, false = failure
dkato 0:c2da359279a6 89 */
dkato 0:c2da359279a6 90 bool dir(char* list_buf, int buf_size);
dkato 0:c2da359279a6 91
dkato 0:c2da359279a6 92 /** Lists files of the remotely connected computer.
dkato 0:c2da359279a6 93 *
dkato 0:c2da359279a6 94 * @param list_buf Buffer to store results
dkato 0:c2da359279a6 95 * @param buf_size Size of list_buf
dkato 0:c2da359279a6 96 * @return true = success, false = failure
dkato 0:c2da359279a6 97 */
dkato 0:c2da359279a6 98 bool ls(char* list_buf, int buf_size);
dkato 0:c2da359279a6 99
dkato 0:c2da359279a6 100 private:
dkato 0:c2da359279a6 101 NetworkInterface * p_network;
dkato 0:c2da359279a6 102 TCPSocket FTPClientControlSock;
dkato 0:c2da359279a6 103 TCPSocket FTPClientDataSock;
dkato 0:c2da359279a6 104 bool _ctr_open;
dkato 0:c2da359279a6 105 bool _login;
dkato 0:c2da359279a6 106 char ftp_data_ip_addr[20];
dkato 0:c2da359279a6 107 char * p_ftp_buf;
dkato 0:c2da359279a6 108 char _root[20];
dkato 0:c2da359279a6 109
dkato 0:c2da359279a6 110 bool open_data_sock();
dkato 0:c2da359279a6 111 };
dkato 0:c2da359279a6 112 #endif