Hi,
I never worked with netconn so I am not sure. I worked mainly with RAW API. See these: http://www.ultimaserial.com/avr_lwip_udp.html lwIP Example, How to write an UDP echo broadcaster on ...<http://www.ultimaserial.com/avr_lwip_udp.html> www.ultimaserial.com lwIP UDP Echo Broadcaster Example using Raw API, Socket or Netconn approaches UltimaSerial . Windaq Add-ons https://lists.nongnu.org/archive/html/lwip-users/2010-04/msg00053.html http://www.freertos.org/FreeRTOS_Support_Forum_Archive/April_2009/freertos_Start_lwIP_UDP_in_a_Task_3216066.html Seems that in the examples for every send they allocate a new buffer and after every send the delete it. For me it looks perfectly sensible. I hope that helps a bit. BR, Noam. [RTOS Support] Start lwIP UDP in a Task - FreeRTOS<http://www.freertos.org/FreeRTOS_Support_Forum_Archive/April_2009/freertos_Start_lwIP_UDP_in_a_Task_3216066.html> www.freertos.org FreeRTOS support forum archive - Start lwIP UDP in a Task ________________________________ From: lwip-users <[email protected]> on behalf of Mike Fleetwood <[email protected]> Sent: Wednesday, July 27, 2016 6:07 PM To: [email protected] Subject: [lwip-users] Problems with sending UDP packets in FreeRTOS Hi, I’m hoping someone can help me with a problem that has been causing me grief for a few days now! I am writing an RTP audio system, that needs to send a packet of audio data every 4mS. This is in a multi-thread RTOS environment, running on STM32F427, with initial code generated using ST’s “Cube” (wish I hadn’t!). I have threads to handle NetBIOS and HTTP, but they are all disabled at the moment. The problem I’m having is that after a variable length of time – sometimes immediately on start-up, sometimes after half an hour – the code stops working. The central “netconn_send” returns with “ERR_USE”. I have tried many variations with this code, all showing the same problem. None of the other error warnings get activated, only the GPIO pins set to indicate the error. Question 1: Why should send return with ERR_USE? At present there is only one connection and it is only bound/connected once – outside the loop. I get the same error with connection within the loop, or if I use sendto instead. Question 2: Why does this supposedly non-fatal error cause all lower level LWIP functions to stop? If I have the HTTP thread running (to show status/fault information) it also stops. Question 3: Why does not SOF_REUSEADDR mask the error (SO_REUSE is enabled in lwipopts)? Many thanks, Mike. void udp_test(void *arg) { struct netconn *conn; struct netbuf *buf; char *data; err_t err; uint16_t index; size_t bufsize = 100; conn = netconn_new(NETCONN_UDP); if (conn == NULL) debugmessage("Could not create new netconn for UDP test<br>"); if (conn != NULL) { ip_set_option(conn->pcb.udp, SOF_REUSEADDR); err = netconn_bind(conn, IP_ADDR_ANY, 5004); if (err != ERR_OK) debugmessage("Could not bind to port 5004 for RTP data<br>"); // err = netconn_connect(conn, IP_ADDR_BROADCAST, 5004); // if (err != ERR_OK) debugmessage("Could not connect port 5004 to BROADCAST for RTP data<br>"); // while(1) { buf = netbuf_new(); if (buf == NULL) debugmessage("Could not create netbuf for UDP test<br>"); if (buf != NULL) { data = netbuf_alloc(buf, bufsize); if (data == NULL) debugmessage("Could not allocate pointer to UDP test data in netbuf<br>"); if (data != NULL) { while(1) { HAL_GPIO_WritePin(CONT6_GPIO_Port, CONT6_Pin, GPIO_PIN_SET); for (index = 0; index <bufsize; index++) { data[index] = index; } // err = netconn_send(conn, buf); err = netconn_sendto(conn, buf, IP_ADDR_BROADCAST, 5004); if (err == ERR_USE) HAL_GPIO_WritePin(CONT3_GPIO_Port, CONT3_Pin, GPIO_PIN_SET); if (err == ERR_MEM) HAL_GPIO_WritePin(CONT4_GPIO_Port, CONT4_Pin, GPIO_PIN_SET); if (err != ERR_OK) HAL_GPIO_WritePin(CONT5_GPIO_Port, CONT5_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(CONT6_GPIO_Port, CONT6_Pin, GPIO_PIN_RESET); osDelay(4); } netbuf_delete(buf); } } // osDelay(4); } } } Sent from Mail<https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
_______________________________________________ lwip-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/lwip-users
