Hi,
I am trying to run some test involving exchanging UDP traffic. I am opening socket, sending data, waiting for answer and sending data again. The problem is that after some data is received, any subsequent calls to sl_SendTo failed with -1. This return value doesn't give much info. Also according to the documentation SL_NETAPP_SOCKET_TX_FAILED should be sent, which is not happens.
int
foo(void)
{
int stat;
int sock;
SlSockAddr_t AddrTo;
SlSockAddr_t AddrFrom;
SlSockAddrIn_t LocalAddr;
SlSecParams_t sec;
SlSocklen_t fromLen;
uint8 buf[8];
sl_Start(NULL, NULL, NULL);
sec.Type = SL_SEC_TYPE_WPA;
sec.Key = USP_TEST_PASSPHRASE;
sec.KeyLen = strlen(sec.Key);
gCc3100IpReceived = false;
stat = sl_WlanConnect(UDP_TEST_SSID,strlen(UDP_TEST_SSID),NULL,&sec,NULL);
while (!gCc3100IpReceived) // will be set by NetAppEvtHdlr
;
sock = sl_Socket(SL_AF_INET, SL_SOCK_DGRAM, SL_IPPROTO_UDP); // returns 0
AddrTo.sa_family = AF_INET;
AddrTo.sa_data[0] = BYTE(1,UDP_TEST_SERVER_PORT);
AddrTo.sa_data[1] = BYTE(0,UDP_TEST_SERVER_PORT);
AddrTo.sa_data[2] = BYTE(3,UDP_TEST_SERVER_IP);
AddrTo.sa_data[3] = BYTE(2,UDP_TEST_SERVER_IP);
AddrTo.sa_data[4] = BYTE(1,UDP_TEST_SERVER_IP);
AddrTo.sa_data[5] = BYTE(0,UDP_TEST_SERVER_IP);
memset(buf, 0xff, sizeof(buf));
stat = sl_SendTo(sock, buf, sizeof(buf), 0, &AddrTo, sizeof(AddrTo)); // returns 8
stat = sl_SendTo(sock, buf, sizeof(buf), 0, &AddrTo, sizeof(AddrTo)); // returns 8
fromLen = sizeof(AddrFrom);
stat = sl_RecvFrom(sock,buf,sizeof(buf),0,&AddrFrom,&fromLen); // returns valid data
stat = sl_SendTo(sock, buf, sizeof(buf), 0, &AddrTo, sizeof(AddrTo)); // returns -1 !
stat = sl_WlanDisconnect();
sl_Stop(0xff);
return 0;
}
CC3100BOOST 3.2, XCC3100HZ, SDK 5.2
Thanks,
Michael