Hi,
I am writing a simple application in which application running on PC is sending a 100 byte of data to CC3000 and once CC3000 receives this 100 byte of data then it will send back 100 byte to application running on PC.
Here is the code for receiving and sending a data on Host Microcontroller :
void ServerSendRecv()
{
long sd = 0;
sockaddr saddrClient,saddrServer;
long socketStatus = 0;
socklen_t tSoclength ;
int clientDescriptor = -1;
int iLoop =0;
int nNumOfBytesRecvd = 0;
int nNumOfBytesSend = 0;
unsigned long optval = 10000;
int nret = 0;
int Count = 0;
for(Count = 0;Count < 1000; Count++)
{
DataSendCC3000Buffer[Count] = Count+10;
}
saddrClient.sa_family = AF_INET;
saddrServer.sa_data[0] = 0x20;saddrServer.sa_data[1] = 0x1D; saddrServer.sa_data[2] = 0x00;
saddrServer.sa_data[3] = 0x00;saddrServer.sa_data[4] = 0x00; saddrServer.sa_data[5] = 0x00;
if((sd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)) < 0)
return;
if((socketStatus = bind(sd,&saddrServer,sizeof(saddrServer))) != 0)
return;
if((socketStatus = listen(sd,1)) != 0)
return;
tSoclength = sizeof(saddrClient);
while(clientDescriptor < 0)
{
clientDescriptor = accept(sd,&saddrClient,&tSoclength);
}
MCF_GPIO_GPIO1_OUT |= MCF_GPIO_GPIO1_OUT_GPIO_OUT32; //LG2 -CAN1 LED
while(1)
{
nNumOfBytesRecvd = 0 ;
while(nNumOfBytesRecvd != 100)
{
nNumOfBytesRecvd += recv(clientDescriptor,DataRecvCC3000Buffer ,CC3000_MAXIMAL_RX_SIZE ,0);
MCF_GPIO_GPIO1_OUT ^= MCF_GPIO_GPIO1_OUT_GPIO_OUT36;
}
for(Count = 0;Count < 1000; Count++)
{
DataSendCC3000Buffer[Count] = iLoop;
}
iLoop++;
if(nNumOfBytesRecvd)
{
nNumOfBytesSend = 0 ;
while(nNumOfBytesSend != 100)
{
nNumOfBytesSend += send(clientDescriptor, DataSendCC3000Buffer , nNumOfBytesRecvd, 0);
MCF_GPIO_GPIO_OUT ^= MCF_GPIO_GPIO_OUT_GPIO_OUT29;
}
}
}
}
And in the PC side there is one thread which will keep on calling beginreceive API to receive a data from CC3000, but after sending a 100 byte of data from PC, it does not get any data back from CC3000 and when I debug the code then I can see the control is already out of while loop of send MSG, and this data never get lost but when I send a next 100 byte of data from PC then this data comes to PC, sometime it comes with missed data and current data pkt and sometime it comes with only missing data.
What could be the possible reason of it?
In the above scenario after sending a 100 byte I will wait for some time before sending a next pkt from PC-CC3000, but if I will send a data without any delay from PC then CC300 stops responding and get stuck in recv API call in simplelinkwaitevent.
Is there any limit on receiving a data on CC3000, cant we send a large MSG like 1500-2000 from PC to CC3000 over TCP/IP.
See the traces taken by me for TCP communication :
================================================== Index : 48 Protocol : TCP Local Address : 192.168.0.108 Remote Address : 192.168.0.118 Local Port : 50870 Remote Port : 8221 Local Host : Remote Host : Service Name : Packets : 78 Data Size : 5,400 Bytes Total Size : 8,660 Bytes Data Speed : 0.1 KB/Sec Capture Time : 3/26/2013 1:58:57 PM:492 Last Packet Time : 3/26/2013 2:00:17 PM:502 Duration : 00:01:20.010 Local MAC Address : Remote MAC Address: Local IP Country : Remote IP Country : ================================================== 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ Sned Pkt 1 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ send Pkt 2 00000060 00 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 ........ ........ 00000070 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ........ ........ 00000080 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ........ ........ 00000090 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ........ ........ 000000A0 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ........ ........ 000000B0 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ........ ........ 000000C0 01 01 01 01 01 01 01 01 ........ 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ Recv pkt 1 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00000060 00 00 00 00 .... 00000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 ........ ........ Send Pkt 3 00000010 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 ........ ........ 00000020 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 ........ ........ 00000030 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 ........ ........ 00000040 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 ........ ........ 00000050 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 ........ ........ 00000060 02 02 02 02 .... 00000000 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ........ ........ recv Pkt 2 00000010 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ........ ........ 00000020 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ........ ........ 00000030 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ........ ........ 00000040 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ........ ........ 00000050 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 ........ ........ 00000060 01 01 01 01 .... 00000000 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ........ ........ Send Pkt 4 00000010 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ........ ........ 00000020 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ........ ........ 00000030 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ........ ........ 00000040 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ........ ........ 00000050 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ........ ........ 00000060 03 03 03 03 .... 00000000 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 ........ ........ Recv Pkt 3 00000010 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 ........ ........ 00000020 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 ........ ........ 00000030 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 ........ ........ 00000040 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 ........ ........ 00000050 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 ........ ........ 00000060 02 02 02 02 .... 00000000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ........ ........ Send Pkt 5 00000010 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ........ ........ 00000020 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ........ ........ 00000030 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ........ ........ 00000040 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ........ ........ 00000050 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ........ ........ 00000060 04 04 04 04 .... 00000000 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ........ ........ Recv Pkt 4 00000010 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ........ ........ 00000020 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ........ ........ 00000030 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ........ ........ 00000040 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ........ ........ 00000050 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 ........ ........ 00000060 03 03 03 03 .... 00000000 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 ........ ........ Send Pkt 6 00000010 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 ........ ........ 00000020 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 ........ ........ 00000030 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 ........ ........ 00000040 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 ........ ........ 00000050 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 ........ ........ 00000060 05 05 05 05 .... 00000000 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ........ ........ Recv Pkt 5 00000010 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ........ ........ 00000020 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ........ ........ 00000030 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ........ ........ 00000040 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ........ ........ 00000050 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 ........ ........ 00000060 04 04 04 04 05 05 05 05 05 05 05 05 05 05 05 05 ........ ........ Recv Pkt 6 00000070 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 ........ ........ 00000080 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 ........ ........ 00000090 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 ........ ........ 000000A0 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 ........ ........ 000000B0 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 ........ ........ 000000C0 05 05 05 05 05 05 05 05 ........ 00000000 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 ........ ........ Send Pkt 7 00000010 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 ........ ........ 00000020 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 ........ ........ 00000030 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 ........ ........ 00000040 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 ........ ........ 00000050 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 ........ ........ 00000060 06 06 06 06 07 07 07 07 07 07 07 07 07 07 07 07 ........ ........ Send Pkt 8 00000070 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 ........ ........ 00000080 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 ........ ........ 00000090 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 ........ ........ 000000A0 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 ........ ........ 000000B0 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 ........ ........ 000000C0 07 07 07 07 07 07 07 07 ........ 00000000 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 ........ ........ Recv Pkt 7 00000010 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 ........ ........ 00000020 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 ........ ........ 00000030 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 ........ ........ 00000040 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 ........ ........ 00000050 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 ........ ........ 00000060 06 06 06 06 .... 00000000 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 ........ ........ Send Pkt 9 00000010 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 ........ ........ 00000020 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 ........ ........ 00000030 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 ........ ........ 00000040 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 ........ ........ 00000050 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 ........ ........ 00000060 08 08 08 08 .... 00000000 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 ........ ........ Recv Pkt 8 00000010 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 ........ ........ 00000020 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 ........ ........ 00000030 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 ........ ........ 00000040 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 ........ ........ 00000050 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 07 ........ ........ 00000060 07 07 07 07 .... 00000000 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 ........ ........ recv Pkt 9 00000010 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 ........ ........ 00000020 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 ........ ........ 00000030 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 ........ ........ 00000040 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 ........ ........ 00000050 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 ........ ........ 00000060 08 08 08 08 .... 00000000 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B ........ ........ Send Pkt 10 00000010 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B ........ ........ 00000020 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B ........ ........ 00000030 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B ........ ........ 00000040 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B ........ ........ 00000050 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B ........ ........ 00000060 0B 0B 0B 0B 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C ........ ........ Send Pkt 11 00000070 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C ........ ........ 00000080 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C ........ ........ 00000090 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C ........ ........ 000000A0 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C ........ ........ 000000B0 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C 0C ........ ........ 000000C0 0C 0C 0C 0C 0C 0C 0C 0C 0D 0D 0D 0D 0D 0D 0D 0D ........ ........ Send Pkt 12 000000D0 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D ........ ........ 000000E0 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D ........ ........ 000000F0 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D ........ ........ 00000100 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D ........ ........ 00000110 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D ........ ........ 00000120 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0E 0E 0E 0E ........ ........ Send Pkt 13 and so on 00000130 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E ........ ........ 00000140 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E ........ ........ 00000150 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E ........ ........ 00000160 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E ........ ........ 00000170 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E ........ ........ 00000180 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E ........ ........ 00000190 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F ........ ........ 000001A0 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F ........ ........ 000001B0 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F ........ ........ 000001C0 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F ........ ........ 000001D0 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F ........ ........ 000001E0 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F ........ ........ 000001F0 0F 0F 0F 0F 10 10 10 10 10 10 10 10 10 10 10 10 ........ ........ 00000200 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ........ ........ 00000210 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ........ ........ 00000220 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ........ ........ 00000230 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ........ ........ 00000240 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ........ ........ 00000250 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 ........ ........ 00000260 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 ........ ........ 00000270 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 ........ ........ 00000280 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 ........ ........ 00000290 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 ........ ........ 000002A0 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 ........ ........ 000002B0 11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 ........ ........ 000002C0 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 ........ ........ 000002D0 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 ........ ........ 000002E0 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 ........ ........ 000002F0 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 ........ ........ 00000300 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 ........ ........ 00000310 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 ........ ........ 00000320 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 ........ ........ 00000330 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 ........ ........ 00000340 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 ........ ........ 00000350 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 ........ ........ 00000360 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 ........ ........ 00000370 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 ........ ........ 00000380 13 13 13 13 14 14 14 14 14 14 14 14 14 14 14 14 ........ ........ 00000390 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 ........ ........ 000003A0 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 ........ ........ 000003B0 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 ........ ........ 000003C0 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 ........ ........ 000003D0 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 ........ ........ 000003E0 14 14 14 14 14 14 14 14 ........ .................................................................................................... But at the end when I start sending a data pkt back to back then CC3000 hangs and does not send back any data. So I need to use some delay between recv and send