Hi Everybody,
I am having a ftp account on fsphost.com for trial. They have provided me my FTP host name. I
am able to upload any text file from my hard drive to this site using a ftp client software like
Filezilla. But with the codes it not happening.
So, I am sending you the code that I am trying with all the details that it need to work.
FTP host name : two.fsphost.com
Username : rajarya
Password : EV0jfR
Note : In password “0” is zero
//*************This is the Code that I am trying **************************
/***************************************************************************
PI Componentes - Gustavo M. Nunes
Objetivo: Enviar um arquivo texto para um servidor FTP
Descricao:
1) Criar um comando “at+ftp” que inicia a trasnferencia FTP
Upgrades: --//–
Data Criacao: 22-Fev-2006
Ultima Atualizacao: 22-Fev-2006
/***************************************************************************/
#include “adl_global.h”
#include “ed_gprs.h”
#include “ed_dialup.h”
#include “ed_ftp.h”
#include “ed_msgcodes.h”
/***************************************************************************
Mandatory variables
wm_apmCustomStack
wm_apmCustomStackSize
****************************************************************************/
u32 wm_apmCustomStack [ 256 ];
const u16 wm_apmCustomStackSize = sizeof ( wm_apmCustomStack );
ed_gprsSetupParams_t ParamsGPRS;
ed_FTPSetupParams_t ParamsFTP;
ed_FTPPutFileParams_t ParamsFile;
/***************************************************************************
Function : Config
Description: Setup every information for parameters
Variable Name |IN |OUT|GLB| Utilisation
----------------------±–±--±–±----------------------------------------
| | | |
----------------------±–±--±–±----------------------------------------
****************************************************************************/
void Config (){
//Configuracao da conexao GPRS com o operadora
ParamsGPRS.Cid = 1; //Configura canal 1 de conexao (4 canais estao disponiveis)
ParamsGPRS.Mode = 1; //Configura o modem para conexao GPRS
wm_strcpy(ParamsGPRS.ApnServ,“airtelgprs.com”); //APN da servidora TIM
wm_strcpy(ParamsGPRS.ApnUn,“tim”);
wm_strcpy(ParamsGPRS.ApnPw,“tim”);
//FTP configuration
ParamsFTP.FtpPort = 21;
ParamsFTP.FtpType = ‘A’;
wm_strcpy(ParamsFTP.FtpServ,“two.fsphost.com”);
wm_strcpy(ParamsFTP.FtpUn,“rajarya”);
wm_strcpy(ParamsFTP.FtpPw,“EV0jfR”);
wm_strcpy(ParamsFile.FtpPutFilename,“testeftp01.txt”);
wm_strcpy(ParamsFile.FtpPutPath,"/rajarya");
}
/***************************************************************************
Function : FtpPutHandler
Description: Callback dos eventos da conexao FTP
Variable Name |IN |OUT|GLB| Utilisation
----------------------±–±--±–±----------------------------------------
ResponseCode | | | | Report FTP status
----------------------±–±--±–±----------------------------------------
id | | | | Sempre retorna ED_ID_FTP_PUT
----------------------±–±--±–±----------------------------------------
****************************************************************************/
void FtpPutHandler(s32 ResponseCode,TeDHandle id){
char msg[20];
sprintf(msg,“Put Handler: %d\n\r”,ResponseCode);
adl_atSendResponse ( ADL_AT_UNS, msg);
}
/***************************************************************************
Function : FtpPutData
Description: Essa funcao é chamada quando o servidor FTP esta apto a
receber arquivos
Variable Name |IN |OUT|GLB| Utilisation
----------------------±–±--±–±----------------------------------------
MaxLen | | | | Numero maximo de bytes que podem ser
| | | | enviados no momento
----------------------±–±--±–±----------------------------------------
id | | | | Sempre retorna ED_ID_FTP_PUT
----------------------±–±--±–±----------------------------------------
****************************************************************************/
void FtpPutData(u16 MaxLen,TeDHandle id){
ascii teste[100]=“Exemplo FTP - PI Componentes”;
u8 * ptr = NULL;
ptr = teste;
adl_atSendResponse ( ADL_AT_UNS, “FTP Put Data Event\n\r”);
ed_SendData(ptr,strlen(teste),TRUE);
}
/***************************************************************************
Function : ConexaoFTP
Description: Inicia conexao com o FTP e trasmissao do arquivo
****************************************************************************/
void ConexaoFTP ()
{
//Variaveis
char msg[20];
s8 sreturnCode;
sreturnCode = ed_FTPSetConfig(&ParamsFTP);
if(sreturnCode==0)
{
//FTP configuration ok
adl_atSendResponse ( ADL_AT_UNS, "FTP configurado com sucesso\n\r");
sreturnCode = ed_FTPPutFileSetConfig(&ParamsFile);
if(sreturnCode==0){
//Paramentros do arquivo configurado com sucesso
adl_atSendResponse ( ADL_AT_UNS, "Arquivo FTP configurado com sucesso\n\r");
//Iniciar transferencia FTP
ed_FTPPut(FtpPutHandler,FtpPutData);
}else{
//Falha na configuracao do arquivo
adl_atSendResponse ( ADL_AT_UNS, "Erro na configuracao do arquivo FTP\n\r");
}
}else{
//FTP configuration failed
adl_atSendResponse ( ADL_AT_UNS, "Erro nos parametros FTP\n\r");
sprintf(msg,"+Erro: %d\n\r",sreturnCode);
adl_atSendResponse ( ADL_AT_UNS, msg);
}
}
/***************************************************************************
Function : DialupHandler
Description: ed_DialupConnectionStart Handler
Variable Name |IN |OUT|GLB| Utilisation
----------------------±–±--±–±----------------------------------------
ResponseCode | | | | Report Dialup status
----------------------±–±--±–±----------------------------------------
****************************************************************************/
void DialupHandler(s32 ResponseCode){
char msg[20];
s8 sreturnCode;
switch (ResponseCode){
case ED_OK_GPRS_SESSION_SET: // GPRS online
adl_atSendResponse ( ADL_AT_UNS, "GPRS conectado\n\r");
//Inicia conexao FTP
ConexaoFTP();
break;
default:
//Erro na conexao GPRS
adl_atSendResponse ( ADL_AT_UNS, "Erro na conexao GPRS\n\r");
break;
}
}
/***************************************************************************
Function : TimerHandler
Description: adl_tmrSubscribe Handler
Variable Name |IN |OUT|GLB| Utilisation
----------------------±–±--±–±----------------------------------------
tmerId | | | | Say which time Id is running at the
| | | | moment
----------------------±–±--±–±----------------------------------------
****************************************************************************/
void TimerHandler(u8 timerId){
char msg[20];
s8 sreturnCode;
sreturnCode = ed_DialupConnectionStart(DialupHandler);
if(sreturnCode == 0){
//GPRS Conectado
adl_atSendResponse ( ADL_AT_UNS, "Diaul up Ok\n\r");
}else{
//Verifica se GPRS ja nao esta conectado
if(sreturnCode == ED_ERR_MODEM_RUNNING)
{
adl_atSendResponse ( ADL_AT_UNS, "GPRS ja conectado\n\r");
ConexaoFTP ();
}else{
//Falha na conexao GPRS
adl_atSendResponse ( ADL_AT_UNS, "Falha no Dial Up\n\r");
sprintf(msg,"+Erro: %d\n\r",sreturnCode);
adl_atSendResponse ( ADL_AT_UNS, msg);
}
}
}
/***************************************************************************
Function : GPRSHandler
Description: Callback do comando “at+cgatt=1” que é enviado pela funcao
GPRSConnection
Variable Name |IN |OUT|GLB| Utilisation
----------------------±–±--±–±----------------------------------------
paras | | | | CmdCreate answer
----------------------±–±--±–±----------------------------------------
****************************************************************************/
bool GPRSHandler(adl_atResponse_t *paras){
s8 sreturnCode = ERROR;
char msg[20];
if( !wm_strncmp(paras->StrData,"\r\nOK",4)){
//Comando AT+CGATT executado com sucesso
sreturnCode = ed_GprsSetConfig(&ParamsGPRS);
if (sreturnCode == 0){
//Parametros OK
adl_atSendResponse ( ADL_AT_UNS, "Parametros Ok\n\r");
adl_tmrSubscribe(FALSE,10,ADL_TMR_TYPE_100MS,TimerHandler);
}else{
//Parametros com erro
adl_atSendResponse ( ADL_AT_UNS, "Erro nos parametros GPRS\n\r");
sprintf(msg,"+Erro: %d\n\r",sreturnCode);
adl_atSendResponse ( ADL_AT_UNS, msg);
}
}else{
//Erro ao tentar usar o comando AT+CGATT
adl_atSendResponse ( ADL_AT_UNS, "Falha na conexao GPRS\n\r");
}
return TRUE;
}
/***************************************************************************
Function : GPRSConnection
Description: Inicia conexao GPRS
****************************************************************************/
void GPRSConnection (){
adl_atSendResponse ( ADL_AT_UNS, “Abrindo conexao GPRS…\n\r”);
adl_atCmdCreate(“AT+CGATT=1”,TRUE,GPRSHandler,"*",NULL);
}
/***************************************************************************
Function : AtFTP
Description: Callback do comando “at+ftp”
Variable Name |IN |OUT|GLB| Utilisation
----------------------±–±--±–±----------------------------------------
paras | | | | Parametros do comando
----------------------±–±--±–±----------------------------------------
****************************************************************************/
void AtFTP(adl_atCmdPreParser_t * paras)
{
//Inicia conexao GPRS
GPRSConnection();
//Mensagem de retorno do comando AT
adl_atSendResponse ( ADL_AT_RSP, “OK\n\r”);
}
/***************************************************************************
Function : SimCard
Description: Display the SimCard Events
Variable Name |IN |OUT|GLB| Utilisation
----------------------±–±--±–±----------------------------------------
Event | | | | Sim Card Events
----------------------±–±--±–±----------------------------------------
****************************************************************************/
void SimCard (u8 Event){
switch(Event){
//Normal Events
case ADL_SIM_EVENT_PIN_OK:
adl_atSendResponse ( ADL_AT_UNS, “PIN Code Ok\n\rConectando…\n\r”);
break;
case ADL_SIM_EVENT_REMOVED:
adl_atSendResponse ( ADL_AT_UNS, “SimCard Removido\n\r”);
break;
case ADL_SIM_EVENT_INSERTED:
adl_atSendResponse ( ADL_AT_UNS, “SimCard Inserido\n\r”);
break;
case ADL_SIM_EVENT_FULL_INIT:
adl_atSendResponse ( ADL_AT_UNS, “Conectado !\n\r”);
//Cria comando para conectar no servidor FTP
adl_atCmdSubscribe("at+ftp",AtFTP,ADL_CMD_TYPE_ACT);
break;
//Error Events
case ADL_SIM_EVENT_PIN_ERROR:
adl_atSendResponse ( ADL_AT_UNS, “PIN Code Incorreto\n\r”);
break;
/Erro quando se e necessario inserir o PIN Code.
Por comandos AT, insera o PIN Code usando
AT+CPIN=“xxxx”, onde xxxx e o codigo de 4 digitos/
case ADL_SIM_EVENT_PIN_WAIT:
adl_atSendResponse ( ADL_AT_UNS, “Entre com o PIN Code\n\r”);
break;
}
}
/***************************************************************************
Function : adl_main
Description: Main function
Variable Name |IN |OUT|GLB| Utilisation
----------------------±–±--±–±----------------------------------------
InitType | | | | Application start mode reason
----------------------±–±--±–±----------------------------------------
****************************************************************************/
void adl_main ( adl_InitType_e InitType )
{
//Inicio da aplicacao
adl_atSendResponse(ADL_AT_UNS, “\n\rInicio da aplicacao\n\r”);
//Executa a funcao SimCard a cada evento que ocorrer
adl_simSubscribe(SimCard,NULL);
//Inicializaçao das bibliotecas IP
ed_Init();
//Configura parametros diversos
Config();
}