X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/8154331da60ac08b0e2b09ca67008ec4a8c7698b..a9e0935a90346beb0c981924becc1f55d969a08b:/Projects/Webserver/Lib/uIPManagement.c?ds=sidebyside diff --git a/Projects/Webserver/Lib/uIPManagement.c b/Projects/Webserver/Lib/uIPManagement.c index 18e355bde..45f8a6ae5 100644 --- a/Projects/Webserver/Lib/uIPManagement.c +++ b/Projects/Webserver/Lib/uIPManagement.c @@ -46,13 +46,14 @@ struct timer ARPTimer; /** MAC address of the RNDIS device, when enumerated */ struct uip_eth_addr MACAddress; +bool HaveIPConfiguration; /** Configures the uIP stack ready for network traffic. */ void uIPManagement_Init(void) { /* uIP Timing Initialization */ clock_init(); - timer_set(&ConnectionTimer, CLOCK_SECOND / 10); + timer_set(&ConnectionTimer, CLOCK_SECOND / 2); timer_set(&ARPTimer, CLOCK_SECOND * 10); /* uIP Stack Initialization */ @@ -62,8 +63,10 @@ void uIPManagement_Init(void) /* DHCP/Server IP Settings Initialization */ #if defined(ENABLE_DHCP_CLIENT) + HaveIPConfiguration = false; DHCPClientApp_Init(); #else + HaveIPConfiguration = true; uip_ipaddr_t IPAddress, Netmask, GatewayIPAddress; uip_ipaddr(&IPAddress, DEVICE_IP_ADDRESS[0], DEVICE_IP_ADDRESS[1], DEVICE_IP_ADDRESS[2], DEVICE_IP_ADDRESS[3]); uip_ipaddr(&Netmask, DEVICE_NETMASK[0], DEVICE_NETMASK[1], DEVICE_NETMASK[2], DEVICE_NETMASK[3]); @@ -77,7 +80,9 @@ void uIPManagement_Init(void) HTTPServerApp_Init(); /* TELNET Server Initialization */ + #if defined(ENABLE_TELNET_SERVER) TELNETServerApp_Init(); + #endif } /** uIP Management function. This function manages the uIP stack when called while an RNDIS device has been @@ -103,9 +108,11 @@ void uIPManagement_TCPCallback(void) case HTONS(HTTP_SERVER_PORT): HTTPServerApp_Callback(); break; + #if defined(ENABLE_TELNET_SERVER) case HTONS(TELNET_SERVER_PORT): TELNETServerApp_Callback(); break; + #endif } } @@ -153,7 +160,7 @@ static void uIPManagement_ProcessIncomingPacket(void) /* Add destination MAC to outgoing packet */ uip_arp_out(); - RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface, uip_buf, uip_len); + uip_split_output(); } break; @@ -163,13 +170,13 @@ static void uIPManagement_ProcessIncomingPacket(void) /* If a response was generated, send it */ if (uip_len > 0) - RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface, uip_buf, uip_len); + uip_split_output(); break; } } - LEDs_SetAllLEDs(LEDMASK_USB_READY); + LEDs_SetAllLEDs(LEDMASK_USB_READY | ((HaveIPConfiguration) ? LEDMASK_UIP_READY_CONFIG : LEDMASK_UIP_READY_NOCONFIG)); } /** Manages the currently open network connections, including TCP and (if enabled) UDP. */ @@ -186,7 +193,8 @@ static void uIPManagement_ManageConnections(void) /* Add destination MAC to outgoing packet */ uip_arp_out(); - RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface, uip_buf, uip_len); + /* Split and send the outgoing packet */ + uip_split_output(); } } @@ -208,7 +216,8 @@ static void uIPManagement_ManageConnections(void) /* Add destination MAC to outgoing packet */ uip_arp_out(); - RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface, uip_buf, uip_len); + /* Split and send the outgoing packet */ + uip_split_output(); } } @@ -224,7 +233,8 @@ static void uIPManagement_ManageConnections(void) /* Add destination MAC to outgoing packet */ uip_arp_out(); - RNDIS_Host_SendPacket(&Ethernet_RNDIS_Interface, uip_buf, uip_len); + /* Split and send the outgoing packet */ + uip_split_output(); } } #endif