Hi Jens,
You are right, socket_fd returns -1, so after changing codes I have found
socket_fd is not properly assigned.
while((socket_fd = lwip_socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
DisplayString(115, 210 - 10, " lwip socket error... ");
//xTaskDelay(CHGD_OPEN_TIME);
xTaskDelay(SECONDS(5));//arbitrary time for test
}
I see the "lwip socket error" message on LCD.
But, when it comes to errno, I am not sure where to check the value since
this program runs by safeRTOS. Whenever I set up a break point, the
scheduler goes into fail as a result not even reach to the breakpoint.
That's why I print out simple debugging message on LCD.
Probably, it has to do with
#define LWIP_PROVIDE_ERRNO 1
this value is defined in lwipopts.h.
I am not sure this problem happens because this value is defined in wrong
file.
Regards,
Jin
On Thu, Sep 19, 2013 at 11:42 AM, Jens Nielsen <[email protected]> wrote:
> Hi
>
> Did you check the value of socket_fd? lwip_socket() returns -1 on error
> but your code tests for == 0
>
> Also check the value of errno after your call, that might give you a hint
>
> BR /Jens
>
>
>
> On 2013-09-19 20:19, Jin Won Seo wrote:
>
> Hi all,
>
> I posted my issue but I fell like not describing the problem in detail.
> So I re-post it with detail information.
>
> I am testing listener modules using LM3S9B96, lwip1.3.2, safeRTOS,
> StellarisWare 10636, ccs 5.4.x.
>
> The listener task running on safeRTOS basically receives message from
> server daemon in Unix using socket(UDP).
>
> As the server daemon sends messages, the listener seems like not getting
> anything from the server
>
> Also I directly attempts to access the listener using telnet
> command(telnet 192.2.0.208 5701), but the below error message comes out
>
> "telnet : Unable to connect to remote host: Connection refused"
>
> My test scenario is :
>
> 1. Get an IP from Server(Unix) using DHCP
>
> //
> // Initialize lwIP.
> //
> lwIPInit(pucMAC, 0, 0, 0, *IPADDR_USE_DHCP*);
>
> //
> // Setup the remaining services inside the TCP/IP thread's context.
> //
> tcpip_callback(*SetupServices*, 0);
>
> 2. Init lwip socket in SetupServices().
>
> lwip_socket_init();
>
> 3. Create listener task to receive packets from server daemon(UDP).
>
> int socket_fd;
> struct sockaddr_in sa, ra;//sa = sender addr, ra= receiver addr
> NET_MSG *sMsg;
> int length;
>
> u32_t size;
> size = sizeof(sa);
>
> // addr_setup();
> // portTickType xTime1, xTime2;
>
> // Setup the local address.
> memset((char *) &ra, 0, sizeof(ra));
> ra.sin_family = AF_INET;
> ra.sin_len = sizeof(ra);
> // ra.sin_addr.s_addr = lwIPLocalIPAddrGet();
> ra.sin_addr.s_addr = inet_addr("192.2.0.208");
> ra.sin_port = htons(S_PORT);//#define S_PORT 5701
>
> //setup the destination address
> memset((char *) &sa, 0, sizeof(sa));
> sa.sin_family = AF_INET;
> sa.sin_len = sizeof(sa);
> sa.sin_addr.s_addr = inet_addr("192.2.0.3");// for test, hard-corded
> // sDestAddr.sin_addr.s_addr = chgd_in_addr();
> sa.sin_port = htons(S_PORT);
>
> while((socket_fd = *lwip_socket*(AF_INET, SOCK_DGRAM, 0)) == 0)
> {
> *DisplayString(115, 210 - 10, " lwip socket error... ");*
> //xTaskDelay(CHGD_OPEN_TIME);
> xTaskDelay(SECONDS(5));//arbitrary time for test
> }
>
> //bind socket to the local address and port
> if*(lwip_bind*(socket_fd, (struct sockaddr *) &ra, sizeof(ra)) == -1)
> {
> lwip_close(socket_fd);
> *DisplayString(115, 190 - 10, " bind error... ");*//Display
> message on LCD in LM3S9B96
> }
>
> while(1)
> {
>
> //receive from server
> length = lwip_recvfrom(socket_fd, (char *) msg_buf,
> sizeof(msg_buf),
> MSG_DONTWAIT, (struct sockaddr *)&sa, &size);
>
> if(length > 0)
> {
> sMsg = (NET_MSG *) (msg_buf);
> mon_cmd_do(socket_fd, &sa, sMsg, length);
> }
>
> lwip_close(socket_fd);
> xTaskDelay(1);// 1ms tick delay
> }
>
>
> As the program is executed, it seems like not binding socket properly
> since "*bind error..." *is displayed on LCD.
>
> Here is my *lwipopts.h*
>
> #define SYS_LIGHTWEIGHT_PROT 1 // default is 0
> #define NO_SYS 0 // default is 0
> #if !NO_SYS
> #define RTOS_SAFERTOS 1
> #define RTOS_FREERTOS 0
> #endif /* !NO_SYS */
>
> #define MEMP_NUM_PBUF 64
> #define MEMP_NUM_TCP_PCB 40
> #define MEMP_NUM_TCP_SEG 48
> #define MEMP_NUM_SYS_TIMEOUT 10
> #define PBUF_POOL_SIZE 64
>
> #define IP_REASSEMBLY 0 // default is 1
> #define IP_FRAG 0 // default is 1
>
> #define LWIP_DHCP 1
>
> #define LWIP_AUTOIP 1 // default is 0
> #define LWIP_DHCP_AUTOIP_COOP ((LWIP_DHCP) && (LWIP_AUTOIP))
> // default is 0
> #define LWIP_DHCP_AUTOIP_COOP_TRIES 5 // default is 9
>
>
> #define TCP_WND 4096 // default is 2048
> #define TCP_MSS 1500 // default is 128
> //#define TCP_CALCULATE_EFF_SEND_MSS 1
> #define TCP_SND_BUF (6 * TCP_MSS)
> // default is 256
> #define TCP_SND_QUEUELEN (MEMP_NUM_TCP_SEG)
>
> #define PBUF_LINK_HLEN 16 // default is 14
> #define PBUF_POOL_BUFSIZE 256
> // default is
> LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN)
> #define ETH_PAD_SIZE 2 // default is 0
>
> #define TCPIP_THREAD_NAME "tcpip_thread"
> #define TCPIP_THREAD_STACKSIZE 1024
> #define TCPIP_THREAD_PRIO 3
> #define TCPIP_MBOX_SIZE 32
>
> #define LWIP_NETCONN 1 // default is 1
>
>
> //*****************************************************************************
> //
> // ---------- Socket Options ----------
> //
>
> //*****************************************************************************
> #define LWIP_SOCKET 1 // default is 1
> #define LWIP_COMPAT_SOCKETS 0
> #define LWIP_POSIX_SOCKETS_IO_NAMES 0
> #define LWIP_TCP_KEEPALIVE 0
> #define LWIP_SO_RCVTIMEO 0
> #define LWIP_SO_RCVBUF 0
> #define SO_REUSE 0
>
> #define LWIP_PROVIDE_ERRNO 1 //Add for lwip socket
> errors
>
> #define LWIP_STATS_LARGE 1
>
> #define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_OFF
>
> #define LWIP_DBG_TYPES_ON
> (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH)
>
> So far I don't see any clues to figure this out.
>
> If anyone can help me out, I will appreciate that.
>
> Thank,
>
> Jin
>
>
>
> _______________________________________________
> lwip-users mailing
> [email protected]https://lists.nongnu.org/mailman/listinfo/lwip-users
>
>
>
> _______________________________________________
> lwip-users mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/lwip-users
>
_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users