This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

UDP send fails after receiving data

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