#include "user_ftp.h" #include #include "syslib.h" //#define STR2(R) STR1(R) /******************************************************************************** * @file userftp.c * @author 江苏九比特信息系统有限公司 Mr.Wang * @version V1.0.0 * @date 11-Dec-2018 * @brief 提供Quectel模块EC20关于FTP硬件驱动程序 ****************************************************************************** * @attention * 约定基本名词如下: * contextID:链路ID * EC20模块链路ID范围1~16,每一个链路ID都会对应一个本地IP;。 * 本驱动强制规定,FTP协议只用一个链路ID(即contextID=3)用于ftp链路。 *******************************************************************************/ /***************************************** *内部使用的常变量定义 ****************************************/ #define FTP_CONTEXTID 3 //FTP默认使用的链路通道ID 即CONTEXTID #define FTP_USERNAME "caiyu" //FTP服务器的登陆用户名 #define FTP_PASSWORD "aa" //FTP服务器的登陆密码 #define FTP_FILETYPE bin //文件类型为.bin文件 #define FTP_TRANSMODE passive //传输模式为被动模式 #define FTP_RSTIMEOUT 90 //FTP响应超时时间(范围20——180S),默认90S #define FTP_IP "58.23.31.118" //FTP Server的IP #define FTP_PORT 14002 //FTP Server的port #define FTP_DIRECTORY "/firmware" //访问FTP服务器的默认路径 例如:“/ABM” FtpP_s sFtpBoot = {FTP_CONTEXTID, FTP_USERNAME, FTP_PASSWORD, FTP_FILETYPE, FTP_TRANSMODE, FTP_RSTIMEOUT, FTP_IP, FTP_PORT, FTP_DIRECTORY} ; //用户连接FTP的配置参数 /************************************************************************************************** * 名 称: void SetAppFtpDir(FtpP_s *psFtp, char* newDir) * 功能说明: 设置FTP访问的根目录 **************************************************************************************************/ void SetAppFtpDir(FtpP_s *psFtp, char* newDir) { memset(psFtp->ftpDirectory, 0, ACCOUNT_MAXLEN ) ; strcpy((char*)psFtp->ftpDirectory, newDir) ; } /************************************************************************************************** * 名 称: SetAppFtpUsername(FtpP_s *psFtp, char* username) * 功能说明: 设置登陆FTP服务器的用户名 **************************************************************************************************/ void SetAppFtpUsername(FtpP_s *psFtp, char* username) { memset(psFtp->userName, 0, ACCOUNT_MAXLEN ) ; strcpy((char*)psFtp->userName, username) ; } /************************************************************************************************** * 名 称: void SetAppFtpPassword(FtpP_s *psFtp, char* password) * 功能说明: 设置登陆FTP服务器的用户名密码 **************************************************************************************************/ void SetAppFtpPassword(FtpP_s *psFtp, char* password) { memset(psFtp->password, 0, ACCOUNT_MAXLEN ) ; strcpy((char*)psFtp->password, password) ; } /************************************************************************************************** * 名 称: void SetAppFtpIP(FtpP_s *psFtp, char* ip) * 功能说明: 设置登陆FTP服务器的IP **************************************************************************************************/ void SetAppFtpIP(FtpP_s *psFtp, char* ip) { memset(psFtp->ftpServerIP , 0, MAX_IP_LEN ) ; strcpy((char*)psFtp->ftpServerIP, ip) ; } /************************************************************************************************** * 名 称: RunResult AppFtpInit(void) * 功能说明: 对FTP配置、PDP激活、登录、设置默认路径 * 入口参数: 无 * 出口参数: * @param1 runResult RunResult枚举类型变量,返回函数运行结果 **************************************************************************************************/ RunResult AppFtpInit(void) { RunResult runResult = TIMEOUT ; runResult = Ftp_Config(&sFtpBoot) ; //FTP配置 if(RUNOK != runResult) return (runResult) ; runResult = Ftp_PDP_Init(&sFtpBoot) ; //激活ftp链路 if(RUNOK != runResult) return (runResult) ; runResult = Ftp_Login(&sFtpBoot) ; //登陆FTP服务器 if(RUNOK != runResult) return (runResult) ; runResult = Ftp_Set_Dir(&sFtpBoot) ; //设置FTP操作目录 return (runResult) ; } /************************************************************************************************** * 名 称: RunResult AppFtpClose(void) * 功能说明: 退出FTP服务器、关闭PDP * 入口参数: 无 * 出口参数: * @param1 runResult RunResult枚举类型变量,返回函数运行结果 **************************************************************************************************/ RunResult AppFtpClose(void) { RunResult runResult = TIMEOUT ; runResult = Ftp_Logout(&sFtpBoot) ; //退出FTP服务器 if(RUNOK != runResult) return (runResult) ; runResult = Deact_Context(sFtpBoot.contextId ) ; //关闭PDP return (runResult) ; }