background image

  EMBEDDED APPLICATIONS FCT 

 
 
 
 

2.7  

TCP 

Send 

Function 

Script {TCP_send.sc} 

It is important to note that when using tcps(), the intrinsic 
TCP send function, the application-writer must check the 
number of bytes sent on successful return from the 
function, because a successful return is possible with the 
number of bytes actually sent being less than the number 
requested. In this case it is the responsibility of the 
application-writer to ensure that the remainder of the data 
buffer is re-submitted to the function. 

The following is an example of a TCP send script function 
that checks for and corrects problems when not all data 
requested is sent by the tcps() function. 

 

TCPSend( char cSckNum, char *cpTxBuffer, int *ipLen ) 

 

int MAX_TX_ATTEMPTS = 20; 

 

int TX_FAILED = -2; 

 

int TCP_BACKOFF_DLYS = 2; 

 

int iResult = 0, iInitLen = *ipLen, iSent = 0, iTxAttempts = 0; 

 int 

iReqLen; 

 char 

*cpBuffer; 

 
 

while ( (iSent != iInitLen) && (iResult == 0) ) 

 { 
 

 

iReqLen = iInitLen - iSent; 

 

 

cpBuffer = cpTx iSent; 

 
 

 

iResult = tcps( cSckNum, cpBuffer, &iReqLen ); 

 

 

while ( (iResult != 0) && (iTxAttempts < MAX_TX_ATTEMPTS) ) 

  { 
   dlys( 

TCP_BACKOFF_DLYS 

); 

 

 

 

iResult = tcps( cSckNum, cpBuffer, &iReqLen ); 

   iTxA+; 
  } 
 

 

if ( iTxAttempts >= MAX_TX_ATTEMPTS ) 

  { 
   return 

TX_FAILED; 

  } 
 
 

 

iSent = iSent + iReqLen; 

 

 

if ( iSent != iInitLen ) 

  { 

   dlys( 

TCP_BACKOFF_DLYS 

); 

  } 
  iTxA+; 
 } 
 
 return 

iResult; 

 

The parameters for the call to TCPSend are the same as 
for tcps(), but the length parameter is an input only. The 
function will not return until either all the data has been 
sent, or a failure has occurred. Obviously the values for 

 
 
 

LZT 123 8019 R1A

  

14 

Содержание Embedded Applications

Страница 1: ...Application Note Embedded Applications Using the on board TCP IP stack...

Страница 2: ...Mobile Communications reserves the right to make modifications additions and deletions to this manual due to typographical errors inaccurate information or improvements to programs and or equipment a...

Страница 3: ...pt 6 2 2 4 TCP Connect Operations 7 2 2 5 Testing Communications over TCP IP 8 2 3 General Restrictions 8 2 4 Resource Restrictions 8 2 4 1 Packet Buffers 8 2 4 2 IP Fragmentation 9 2 4 3 Performance...

Страница 4: ...EMBEDDED APPLICATIONS FCT 1 Introduction This application note describes the use of the TCP IP sack that is resident on the module within the embedded applications environment LZT 123 8019 R1A 4...

Страница 5: ...series of functions outlined below pdpa Activate and deactivate a PDP context for TCP IP over GPRS ipo Open a UDP or TCP socket for data transfer ipc Close a previously opened UDP or TCP socket tcpc...

Страница 6: ...access to any ICMP features 2 2 2 GPRS Transport for IP In order to use the embedded TCP IP functions a GPRS PDP context must be activated first to provide the underlying IP transport This should be d...

Страница 7: ...depending upon the link performance lost packets etc Therefore the tcpc function has been made non blocking to avoid stalling the script for long periods A call to tcpc will initiate a connection but...

Страница 8: ...ion requires that the script closes one socket before attempting to open or re open another For the majority of applications the module is only ever transferring data over a single socket so the restr...

Страница 9: ...ts are being received The TCP IP stack will especially during busy periods buffer and consolidate transmit data This will sometimes result in data being sent from the radio device in larger units than...

Страница 10: ...VD 13 int APPS_IP_TCPSTATUS_BYTE 14 Reset the IP error flag by reading it gtf APPS_IP_ERROR_TRIGGER Err pdpa 1 1 prtf n PDP activate result d n Err if Err 0 Val ipi 0 prtf IP Address x Val Val ipi 1 p...

Страница 11: ...0 prtf n Breaking out of receive loop n Complete TRUE Log status monitoring if gtf APPS_IP_ERROR_TRIGGER prtf n IP ERROR d n gtb APPS_IP_ERROR_STATUSBYTE Err ipc SckNum if Err 0 prtf n Socket close f...

Страница 12: ...13 int APPS_IP_DATA_RECVD 13 int APPS_IP_TCPSTATUS_BYTE 14 int TCP_NOT_CONNECTED 1 int TCP_CONNECTING 2 int TCP_CONNECTED 3 Reset the IP error flag by reading it gtf APPS_IP_ERROR_TRIGGER Err pdpa 1 1...

Страница 13: ...ct occurs n n else prtf n Received d bytes of data n n len Log status monitoring if gtf APPS_IP_ERROR_TRIGGER prtf n IP ERROR d n gtb APPS_IP_ERROR_STATUSBYTE Complete 1 if gtb APPS_IP_TCPSTATUS_BYTE...

Страница 14: ...sent by the tcps function TCPSend char cSckNum char cpTxBuffer int ipLen int MAX_TX_ATTEMPTS 20 int TX_FAILED 2 int TCP_BACKOFF_DLYS 2 int iResult 0 iInitLen ipLen iSent 0 iTxAttempts 0 int iReqLen c...

Страница 15: ...ers are inaccessible up to 3 are supported or if the domain name does not resolve there can be an overall delay of between 125 and 140 seconds before the iprh function returns During this delay script...

Страница 16: ...it Many modern systems use a TTL of 128 but apart from the most complex of routing arrangements a figure of 64 will be perfectly adequate 2 10 2 DNS Name Caching Period The TCP IP stack of the radio...

Отзывы: