Hi
I have wrote a server code for UDP communication in CC3000.
It works fantastically fine for first 3 - 4 minutes but after that it wouldn't work at all. I cant receive data I send from the client.
Any help would be really appreciated.
My CC3000 firmware version is 1.11
My App driver version is 4.14.7.13
Here is my code UDP Server code
long socket_fd;
sockaddr from_address;
sockaddr my_addr;
unsigned char rx_buff[512];
memset(&rx_buff,0,sizeof(rx_buff));
memset(&from_address,0x00,sizeof(from_address));
volatile signed long ReturnValue = -1;
fd_set readsds;
timeval timeout;
timeout.tv_usec = 500;
SysCtlDelay(5000);
socket_fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
if(socket_fd < 0)
{
DispatcherUartSendPacket("socket failed to create",23);
closesocket(socket_fd);
}
my_addr.sa_family = AF_INET;
my_addr.sa_data[0] = 0x13;
my_addr.sa_data[1] = 0x88;
my_addr.sa_data[2] = 0x0;
my_addr.sa_data[3] = 0x0;
my_addr.sa_data[4] = 0x0;
my_addr.sa_data[5] = 0x0;
int check_bind;
check_bind = bind(socket_fd,&my_addr,sizeof(my_addr));
if (check_bind < 0)
{
DispatcherUartSendPacket("bind failed",11);
closesocket(socket_fd);
}
while(1)
{
FD_ZERO(&readsds);
FD_SET(socket_fd, &readsds);
ReturnValue = select(socket_fd + 1, &readsds, NULL, NULL, &timeout);
DispatcherUartSendPacket ((unsigned char*)&ReturnValue, 1);
if ((ReturnValue != 0) && (ReturnValue != -1))
{
if (FD_ISSET(socket_fd,&readsds))
{
ReturnValue = recvfrom(socket_fd, rx_buff, sizeof(rx_buff), 0, &from_address, (socklen_t *) sizeof(from_address));
DispatcherUartSendPacket(&rx_buff[0], ReturnValue);
SysCtlDelay(50);
memset(&rx_buff[0],0,sizeof(rx_buff));
if (ReturnValue < 0)
{
closesocket(socket_fd);
DispatcherUartSendPacket("socket closed", 13);
}
}
}
}