1 Star 1 Fork 2

Giftina/Wireless_SD

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
ESP8266FtpServer.h 4.18 KB
一键复制 编辑 原始数据 按行查看 历史
Neutrino 提交于 2020-07-17 12:30 . Minor fixes
/*
* FTP SERVER FOR ESP8266
* based on FTP Serveur for Arduino Due and Ethernet shield (W5100) or WIZ820io (W5200)
* based on Jean-Michel Gallego's work
* modified to work with esp8266 SPIFFS by David Paiva (david@nailbuster.com)
* modified to work with esp8266 SD by "https://trionking.blogspot.com/2017/02/esp8266-wifi-ftp-server-with-sd.html"
* modified to work with esp8266 SD without modifying SD library by Srinivasan https://Github.com/Neutrino-1
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*******************************************************************************
** **
** DEFINITIONS FOR FTP SERVER **
** **
*******************************************************************************/
// Uncomment to print debugging info to console attached to ESP8266
//#define FTP_DEBUG
#ifndef FTP_SERVERESP_H
#define FTP_SERVERESP_H
//#include "Streaming.h"
#include <FS.h>
#include <WiFiClient.h>
#include <SD.h>
#define FTP_SERVER_VERSION "FTP-2017-10-18"
#define FTP_CTRL_PORT 21 // Command port on wich server is listening
#define FTP_DATA_PORT_PASV 50009 // Data port in passive mode
#define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity
#define FTP_CMD_SIZE 255 + 8 // max size of a command
#define FTP_CWD_SIZE 255 + 8 // max size of a directory name
#define FTP_FIL_SIZE 255 // max size of a file name
//#define FTP_BUF_SIZE 1024 //512 // size of file buffer for read/write
#define FTP_BUF_SIZE 2*1460 //512 // size of file buffer for read/write
class FtpServer
{
public:
void begin(String uname, String pword);
void handleFTP();
private:
void iniVariables();
void clientConnected();
void disconnectClient();
boolean userIdentity();
boolean userPassword();
boolean processCommand();
boolean dataConnect();
boolean doRetrieve();
boolean doStore();
void closeTransfer();
void abortTransfer();
boolean makePath( char * fullname );
boolean makePath( char * fullName, char * param );
uint8_t getDateTime( uint16_t * pyear, uint8_t * pmonth, uint8_t * pday,
uint8_t * phour, uint8_t * pminute, uint8_t * second );
char * makeDateTimeStr( char * tstr, uint16_t date, uint16_t time );
int8_t readChar();
IPAddress dataIp; // IP address of client for data
WiFiClient client;
WiFiClient data;
File file;
boolean dataPassiveConn;
uint16_t dataPort;
char buf[ FTP_BUF_SIZE ]; // data buffer for transfers
char cmdLine[ FTP_CMD_SIZE ]; // where to store incoming char from client
char cwdName[ FTP_CWD_SIZE ]; // name of current directory
char command[ 5 ]; // command sent by client
boolean rnfrCmd; // previous command was RNFR
char * parameters; // point to begin of parameters sent by client
uint16_t iCL; // pointer to cmdLine next incoming char
int8_t SD_Status,
cmdStatus, // status of ftp command connexion
transferStatus; // status of ftp data transfer
uint32_t millisTimeOut, // disconnect after 5 min of inactivity
millisDelay,
millisEndConnection, //
millisBeginTrans, // store time of beginning of a transaction
bytesTransfered; //
String _FTP_USER;
String _FTP_PASS;
};
#endif // FTP_SERVERESP_H
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/Giftina/Wireless_SD.git
git@gitee.com:Giftina/Wireless_SD.git
Giftina
Wireless_SD
Wireless_SD
master

搜索帮助

A270a887 8829481 3d7a4017 8829481