stm32_ota/USER/USER_FTP/user_ftp.c

125 lines
4.9 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include "user_ftp.h"
#include <stdlib.h>
#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) ;
}