# About TCP Client

**URL:** <https://forum.sierrawireless.com/t/about-tcp-client/646>\
**Category:** Open AT\
**Created:** [August 30, 2006, 4:51pm UTC](https://forum.sierrawireless.com/t/about-tcp-client/646 "2006-08-30T16:51:53Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![gioiese](https://avatars.discourse-cdn.com/v4/letter/g/46a35a/32.png) [@gioiese](https://forum.sierrawireless.com/u/gioiese)\
**Post date:** [August 30, 2006, 4:51pm UTC](https://forum.sierrawireless.com/t/about-tcp-client/646/1 "2006-08-30T16:51:53Z")

</div>

Hi all,

In my fastrack (firmware 6.55,open at v3.10) I want to realize a TCP client.

In OPEAN AT Sample I have read about FTP and HTTP\_Server but I do not find samples that can help me.

You can help me?

---

<div class="post-metadata">

**Author:** ![gmnvh](https://avatars.discourse-cdn.com/v4/letter/g/dbc845/32.png) [@gmnvh](https://forum.sierrawireless.com/u/gmnvh)\
**Post date:** [August 30, 2006, 8:26pm UTC](https://forum.sierrawireless.com/t/about-tcp-client/646/2 "2006-08-30T20:26:47Z")

</div>

Hey man,

Try this code…(sorry about the comments, they are all in portuguese) and do not forget to change the parameters at Config function !!!

Good luck !!!

Gus

```auto
/ **************************************************************************
	PI Componentes - Gustavo Nunes
*************************************************************************** /

/ **************************************************************************
	File : Appli.c
---------------------------------------------------------------------------
	Data Criacao : 20-Out-2005

	Ult. Modif. : 29-Out-2005

	Descricao : Abre conexao TCP
*************************************************************************** /

#include "adl_global.h"

#include "ed_gprs.h"
#include "ed_dialup.h"
#include "ed_smtp.h"
#include "ed_msgcodes.h"

#include "ed_socket.h" // For "TCP Socket" functions

#include "ed_common.h" // For "ed_Init" function

/ ***************************************************************************
	Mandatory variables
----------------------------------------------------------------------------
	wm_apmCustomStack
	wm_apmCustomStackSize
----------------------------------------------------------------------------
**************************************************************************** /

u32 wm_apmCustomStack [256];
const u16 wm_apmCustomStackSize = sizeof ( wm_apmCustomStack );

/ ***************************************************************************
	Global variables
----------------------------------------------------------------------------
e_gprsSetupParams_t : Parameters for 
ed_SocketSetupParams_t	: Parameters for 
----------------------------------------------------------------------------
**************************************************************************** /

ed_gprsSetupParams_t	ParamsGPRS;	//Parametros para conexao GPRS

ed_SocketSetupParams_t ParamsSocket; // Parametros para Socket TCP

int a=0;
/ ***************************************************************************
functions
**************************************************************************** /

void Config (){

	// GPRS configuration

	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,"tim.br"); //APN da servidora TIM

	wm_strcpy(ParamsGPRS.ApnUn,"tim");
	wm_strcpy(ParamsGPRS.ApnPw,"tim");

	// Socket TCP configuration

	ParamsSocket.TcpPort = 3000;

	wm_strcpy(ParamsSocket.TcpServ,"200.234.31.71");

}

void HelloWorld_TimerHandler ( u8 ID )
{
	char Saida[10];

    /* Hello World */
    //TRACE (( 1, "Embedded : Hello World" ));
    //adl_atSendResponse ( ADL_AT_UNS, "\r\nHello World from Open-AT\r\n" );

	//wm_strcpy(Saida,"Teste");

	a++;

	wm_sprintf(Saida,"%d", a);

	ed_SendDataExt(Saida,wm_strlen(Saida),FALSE,ED_ID_TCPSOCKET_1);
}

void DataTXHandler (u16 MaxLen, TeDHandle id){
	char msg[40];

	wm_sprintf(msg,"TX Handler: %d\n\r", a);
	adl_atSendResponse ( ADL_AT_UNS, msg);

}

u16 DataRXHandler (u16 DataLen, u8 * Data, TeDHandle id){

	char msg[20];

	char Saida[10];

	adl_atSendResponse ( ADL_AT_UNS, "RX Handler: ");

	wm_sprintf(msg,"%c", *Data);

	adl_atSendResponse ( ADL_AT_UNS, msg);

	adl_atSendResponse ( ADL_AT_UNS, "\n\r");

	if (!wm_strncmp(msg,"0",1)){

		adl_atSendResponse ( ADL_AT_UNS, "Opa!!!\n\r");

		wm_strcpy(Saida,"G");

		ed_SendDataExt(Saida,1,TRUE,ED_ID_TCPSOCKET_1);

	}
	
}

void TCPHandler (s32 ResponseCode, TeDHandle id){

	char msg[20];

	adl_atSendResponse ( ADL_AT_UNS, "TCP Socket Handler: ");

	sprintf(msg,"%d",ResponseCode);

	adl_atSendResponse ( ADL_AT_UNS, msg);

	adl_atSendResponse ( ADL_AT_UNS, "\r\n");

	//Tratamento dos eventos de retorno
	switch(ResponseCode)
	{
	case ED_INFO_WAITING_FOR_DATA:
		adl_tmrSubscribe ( TRUE, 30, ADL_TMR_TYPE_100MS, HelloWorld_TimerHandler );
		break;
	}

}

void GPRSTimerHandler (u8 timerId){

	s8 sreturnCode = ERROR;

	ed_dialupGenInfos_t * Infos;

	adl_atSendResponse ( ADL_AT_UNS, "GPRS Link: ");

	ed_DialupGetGeneralInformations(&Infos);

	adl_atSendResponse ( ADL_AT_UNS, "gg" );

}

void DialupHandler(s32 ResponseCode){

	char msg[20];

	s8 sreturnCode = ERROR;

	switch (ResponseCode){

	case ED_OK_GPRS_SESSION_SET: //GPRS conectado

		adl_atSendResponse ( ADL_AT_UNS, "ED_OK_GPRS_SESSION_SET\n\r");

		//adl_tmrSubscribe(TRUE,20,ADL_TMR_TYPE_100MS,GPRSTimerHandler);

		sreturnCode = ed_SocketSetConfig(ED_ID_TCPSOCKET_1,&ParamsSocket);

		if(sreturnCode==0){

			//TCP Socket configurado

			adl_atSendResponse ( ADL_AT_UNS, "TCP Socket configurado com sucesso\n\r");

			sreturnCode = ERROR;

			sreturnCode = ed_SocketTCPStart(ED_ID_TCPSOCKET_1,0,TCPHandler,DataRXHandler,DataTXHandler);

			if(sreturnCode == 0){

				adl_atSendResponse ( ADL_AT_UNS, "TCP Ok\r\n");

			}else{

				adl_atSendResponse ( ADL_AT_UNS, "Falha TCP: ");

				switch (sreturnCode){

				case ED_ERR_INVALID_ARG:
					adl_atSendResponse ( ADL_AT_UNS, "ED_ERR_INVALID_ARG\r\n");
				break;

				default:
					adl_atSendResponse ( ADL_AT_UNS, "Demais erros\r\n");
				break;

				}
					
			}

		}else{

			//Falha na configuracao do Socket TCP

			adl_atSendResponse ( ADL_AT_UNS, "Falha na configuracao do Socket TCP: ");

			sprintf(msg,"%d",sreturnCode);

			adl_atSendResponse ( ADL_AT_UNS, msg);
		}

	break;

	default:
		adl_atSendResponse ( ADL_AT_UNS, "Falha no link GPRS\n\r");
	break;

	}
}

void TimerHandler(u8 timerid){

	char msg[20];

	s8	sreturnCode;

	sreturnCode = ed_DialupConnectionStart(DialupHandler);

	if(sreturnCode == 0){

		//GPRS Conectado

		adl_atSendResponse ( ADL_AT_UNS, "GPRS Online\n\r");

	}else{

		//Falha na conexao GPRS

		adl_atSendResponse ( ADL_AT_UNS, "GPRS Error: ");

		sprintf(msg,"%d",sreturnCode);

		adl_atSendResponse ( ADL_AT_UNS, msg);

	}
}

bool GPRSHandler(adl_atResponse_t *paras){

	s8 sreturnCode = ERROR;
	char	msg[20];

	//adl_atSendResponse ( ADL_AT_UNS, paras->StrData);

	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, "GPRS parameters are ok\n\r");

			adl_tmrSubscribe(FALSE,10,ADL_TMR_TYPE_100MS,TimerHandler);
			
		}else{

			//Parametros com erro
			adl_atSendResponse ( ADL_AT_UNS, "Errors trying to send GPRS parameters: ");

			sprintf(msg,"%d",sreturnCode);

			adl_atSendResponse ( ADL_AT_UNS, msg);
		}
	}else{

		//Erro ao tentar usar o comando AT+CGATT
		adl_atSendResponse ( ADL_AT_UNS, "Connection failed\n\r");
	}	

	return TRUE;
}

void GPRSConnection (){

	adl_atSendResponse ( ADL_AT_UNS, "Openning GPRS connection...");

	adl_atCmdCreate("AT+CGATT=1",TRUE,GPRSHandler,"*",NULL);
}

/ ***************************************************************************
	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\rConnecting...\n\r");
	break;
	case ADL_SIM_EVENT_REMOVED:
			adl_atSendResponse ( ADL_AT_UNS, "SimCard Removed\n\r");
	break;
	case ADL_SIM_EVENT_INSERTED:
			adl_atSendResponse ( ADL_AT_UNS, "SimCard Inserted\n\r");
	break;
	case ADL_SIM_EVENT_FULL_INIT:

			adl_atSendResponse ( ADL_AT_UNS, "Modem on-line !\n\r");

			GPRSConnection(); // Start the GPRS connection
	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, "Enter the 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 )
{

	s8 sreturnCode;

	u8 Teste;

	char	msg[20];

	adl_atSendResponse ( ADL_AT_UNS, "TCP Socket Application\n\r");

    TRACE (( 1, "Embedded Application : Main" ));

	//Sim Card handler
	adl_simSubscribe(SimCard,NULL);

	sreturnCode = ed_Init(); //IP libraries inicialization

	Config(); // Config the GPRS/TCP socket parameters

}
```

---

<div class="post-metadata">

**Author:** ![gioiese](https://avatars.discourse-cdn.com/v4/letter/g/46a35a/32.png) [@gioiese](https://forum.sierrawireless.com/u/gioiese)\
**Post date:** [August 31, 2006, 8:00am UTC](https://forum.sierrawireless.com/t/about-tcp-client/646/3 "2006-08-31T08:00:30Z")

</div>

Hi gmnvh

Your sample will be very important to me

---

<div class="post-metadata">

**Author:** ![gioiese](https://avatars.discourse-cdn.com/v4/letter/g/46a35a/32.png) [@gioiese](https://forum.sierrawireless.com/u/gioiese)\
**Post date:** [August 31, 2006, 4:33pm UTC](https://forum.sierrawireless.com/t/about-tcp-client/646/4 "2006-08-31T16:33:56Z")

</div>

Hi gmnvh,

I am trying your code, I have opened a new project with Open At Project Wizard and after I have copied in appli.c your code.

But when I compile I read this error:

c:\Ex2\src\appli.c(18): fatal error C1083: “ed\_gprs.h”: No such file or directory

I think that this error depends on one bad setting of my Visual [C++.Net](http://C++.Net)

Can you help me on the relative setting please?

ThanKs

---

<div class="post-metadata">

**Author:** ![awneil](https://avatars.discourse-cdn.com/v4/letter/a/49beb7/32.png) [@awneil](https://forum.sierrawireless.com/u/awneil)\
**Post date:** [September 1, 2006, 5:43am UTC](https://forum.sierrawireless.com/t/about-tcp-client/646/5 "2006-09-01T05:43:43Z")

</div>

> [@gioiese](#):
>
> ```auto
> c:\Ex2\src\appli.c(18): fatal error C1083: "ed_gprs.h": No such file or directory
> ```

Have you checked that the ed\_gprs.h file is actually present on your hard drive?

Note that ed\_gprs.h is the very first of the TCP/IP files included by the code:

```auto
/ ************************************************************************** 
   PI Componentes - Gustavo Nunes 
*************************************************************************** / 

/ ************************************************************************** 
   File : Appli.c 
--------------------------------------------------------------------------- 
   Data Criacao : 20-Out-2005 

   Ult. Modif. : 29-Out-2005 

   Descricao : Abre conexao TCP 
*************************************************************************** / 

#include "adl_global.h" 

#include "ed_gprs.h" 
#include "ed_dialup.h" 
#include "ed_smtp.h" 
#include "ed_msgcodes.h" 

#include "ed_socket.h" // For "TCP Socket" functions 

#include "ed_common.h" // For "ed_Init" function
```

Do you actually have the TCP/IP add-on?

Are you sure that it’s installed properly?

On my installation, they are in the C:\OpenAT\OtherLibs\TCPIP\v3.03\inc folder

---

<div class="post-metadata">

**Author:** ![gioiese](https://avatars.discourse-cdn.com/v4/letter/g/46a35a/32.png) [@gioiese](https://forum.sierrawireless.com/u/gioiese)\
**Post date:** [September 1, 2006, 7:57am UTC](https://forum.sierrawireless.com/t/about-tcp-client/646/6 "2006-09-01T07:57:05Z")

</div>

Hi all,

I think to have resolved the problem.

I have controlled and after I have set up the property of my project in visual [C++.Net](http://C++.Net).

I do not know if the procedure is corrected but I have executed the debug

Hi and thanks

---

<div class="post-metadata">

**Author:** ![gmnvh](https://avatars.discourse-cdn.com/v4/letter/g/dbc845/32.png) [@gmnvh](https://forum.sierrawireless.com/u/gmnvh)\
**Post date:** [September 1, 2006, 2:47pm UTC](https://forum.sierrawireless.com/t/about-tcp-client/646/7 "2006-09-01T14:47:52Z")

</div>

Hi all,

Anyway…here is the procedure to add the TCP/IP library on Open At 3.10.

On “Open At Project Wizard” there is a field called “wmnew script additional options:”. Put the following text there:

-otherlib TCPIP

If you are doing that in an existing project do not forget to use Build All to compile the project.

Rgds,  
Gus

---

<div class="post-metadata">

**Author:** ![gioiese](https://avatars.discourse-cdn.com/v4/letter/g/46a35a/32.png) [@gioiese](https://forum.sierrawireless.com/u/gioiese)\
**Post date:** [September 1, 2006, 3:40pm UTC](https://forum.sierrawireless.com/t/about-tcp-client/646/8 "2006-09-01T15:40:18Z")

</div>

Hi gmnvh,

A last question about "-otherlib TCPIP ":

It is valid for target mode too ?

Hi and thanks very much

---

<div class="post-metadata">

**Author:** ![gmnvh](https://avatars.discourse-cdn.com/v4/letter/g/dbc845/32.png) [@gmnvh](https://forum.sierrawireless.com/u/gmnvh)\
**Post date:** [September 1, 2006, 5:56pm UTC](https://forum.sierrawireless.com/t/about-tcp-client/646/9 "2006-09-01T17:56:56Z")

</div>

😃

Yeah man…U can add it to your project and compile for Debug and Target mode…

As I said, just remeber to use Rebuild All (just at the first time) if you add the library in a existing project… 😉

Gus
