struct dbginterface* tcpip_init(struct uip_ip_addr *localip,struct uip_ip_addr *netmask,struct uip_ip_addr *gateway,u16 port) { uipdev_s hbba; struct uip_netif *pnet ; struct sockaddr_in name; socklen_t namelen = sizeof(struct sockaddr); memr_init(); uip_ipinit(); uip_pbuf_init(); uip_netif_init(); uip_tcp_init(); UIP_MEMSET(tcpip_socks,0,(UIP_TCPIP_SOCKS*sizeof(struct tcpip_sock))); hbba = uip_bba_create(&netif); pnet = uip_netif_add(&netif,localip,netmask,gateway,hbba,uip_bba_init,uip_ipinput); if(pnet) { uip_netif_setdefault(pnet); listensock = tcpip_socket(); if(listensock<0) return NULL; name.sin_addr.s_addr = INADDR_ANY; name.sin_port = htons(port); name.sin_family = AF_INET; if(tcpip_bind(listensock,(struct sockaddr*)&name,&namelen)<0){ tcpip_close(listensock); listensock = -1; return NULL; } if(tcpip_listen(listensock,1)<0) { tcpip_close(listensock); listensock = -1; return NULL; } netif_device.fhndl = -1; netif_device.wait = waittcpip; netif_device.open = opentcpip; netif_device.close = closetcpip; netif_device.read = readtcpip; netif_device.write = writetcpip; return &netif_device; } return NULL; }
static int closetcpip(struct dbginterface *device) { tcpip_stoptimer(device->fhndl); tcpip_close(device->fhndl); device->fhndl = -1; return 0; }
int cable_close () { return tcpip_close (); }