Hi all,

I'm trying to use the UDP broadcast example posted here:
http://www.ultimaserial.com/avr_lwip_udp.html
under FreeRTOS+lwIP on my Luminary LM3S8962 platform. This is the code:

main.c:

...
void udpThread(void *pvParameters)
{
        int lSocket;
        struct sockaddr_in sLocalAddr, sDestAddr;
        char reply[]="testing";
        char buffer[1024];
        int nbytes;
        int i;

        lSocket = lwip_socket(AF_INET, SOCK_DGRAM, 0);

        memset((char *)&sLocalAddr, 0, sizeof(sLocalAddr));
        memset((char *)&sDestAddr, 0, sizeof(sDestAddr));

        // Destination
        sDestAddr.sin_family = AF_INET;
        sDestAddr.sin_len = sizeof(sDestAddr);
        sDestAddr.sin_addr.s_addr = htonl(INADDR_BROADCAST);
        sDestAddr.sin_port = 1234;

        // Source
        sLocalAddr.sin_family = AF_INET;
        sLocalAddr.sin_len = sizeof(sLocalAddr);
        sLocalAddr.sin_addr.s_addr = htonl(INADDR_ANY);
        sLocalAddr.sin_port = 1235;

        lwip_bind(lSocket, (struct sockaddr *)&sLocalAddr, sizeof(sLocalAddr));

        while (1)
        {
                nbytes=lwip_recv(lSocket, buffer, sizeof(buffer),8);
                if (nbytes>0)
                {
                        lwip_sendto(lSocket, buffer, nbytes, 0, (struct sockaddr
*)&sDestAddr, sizeof(sDestAddr));
                }

                lwip_sendto(lSocket, reply, sizeof(reply), 0, (struct sockaddr
*)&sDestAddr, sizeof(sDestAddr));
                vTaskDelay(200);  //some delay!
        }
        lwip_close(lSocket);
}

...

int main(int argc, char *argv[])
{
        prvSetupHardware();

        // Initial text message
        RIT128x96x4StringDraw("FreeRTOS adapted for", 5, 0, 15);
        RIT128x96x4StringDraw(" Stellaris LM3S8962", 0, 10, 15);

        xTaskCreate(ethernetThread,"ethernet", 1000, NULL, 3, NULL);
        xTaskCreate(udpThread,"udp", 1000, NULL, 3, NULL);

        vTaskStartScheduler();

        for(;;)
        {
        }
}

In order to compile the above code, I changed lwipopts.h as follows:

#define LWIP_SOCKET                                  1
#define LWIP_COMPAT_SOCKETS                  1
#define LWIP_POSIX_SOCKETS_IO_NAMES     1

As result, the program builds correctly, the "udpThread" task is
started but no UDP message is sent on port 1234. This makes me think
that there are some other options to be enabled elsewhere. I decided
to use the BSD socket API just because I'm familiar to it but this is
the first time I work with lwIP. Please feel free to post your
comments and suggestions.

Thanks in advance for your help,

Daniel.


_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to