About FTP (Problem in sending the file)


#1

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();

}