X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/41ef05a6e559a10134967e8a899aab78c556b645..ce8d0424b1a59bb2b0bd3ab8f69f4e4cf8c9930b:/Projects/Webserver/Lib/DHCPClientApp.c diff --git a/Projects/Webserver/Lib/DHCPClientApp.c b/Projects/Webserver/Lib/DHCPClientApp.c index 0e51d5707..cf512734e 100644 --- a/Projects/Webserver/Lib/DHCPClientApp.c +++ b/Projects/Webserver/Lib/DHCPClientApp.c @@ -33,34 +33,29 @@ * DHCP Client Application. When connected to the uIP stack, this will retrieve IP configuration settings from the * DHCP server on the network. */ - + #include "DHCPClientApp.h" #if defined(ENABLE_DHCP_CLIENT) || defined(__DOXYGEN__) -/** Timer for managing the timeout period for a DHCP server to respond */ -struct timer DHCPTimer; /** Initialization function for the DHCP client. */ void DHCPClientApp_Init(void) { - /* Create an IP address to the broadcast network address */ - uip_ipaddr_t DHCPServerIPAddress; - uip_ipaddr(&DHCPServerIPAddress, 255, 255, 255, 255); - /* Create a new UDP connection to the DHCP server port for the DHCP solicitation */ - struct uip_udp_conn* Connection = uip_udp_new(&DHCPServerIPAddress, HTONS(DHCPC_SERVER_PORT)); + struct uip_udp_conn* Connection = uip_udp_new(&uip_broadcast_addr, HTONS(DHCPC_SERVER_PORT)); /* If the connection was successfully created, bind it to the local DHCP client port */ if (Connection != NULL) { uip_udp_appstate_t* const AppState = &Connection->appstate; - uip_udp_bind(Connection, HTONS(DHCPC_CLIENT_PORT)); + + /* Set the initial client state */ AppState->DHCPClient.CurrentState = DHCP_STATE_SendDiscover; - } - /* Set timeout period to half a second for a DHCP server to respond */ - timer_set(&DHCPTimer, CLOCK_SECOND / 2); + /* Set timeout period to half a second for a DHCP server to respond */ + timer_set(&AppState->DHCPClient.Timeout, CLOCK_SECOND / 2); + } } /** uIP stack application callback for the DHCP client. This function must be called each time the TCP/IP stack @@ -91,7 +86,7 @@ void DHCPClientApp_Callback(void) uip_udp_send(AppDataSize); /* Reset the timeout timer, progress to next state */ - timer_reset(&DHCPTimer); + timer_reset(&AppState->DHCPClient.Timeout); AppState->DHCPClient.CurrentState = DHCP_STATE_WaitForOffer; break; @@ -99,7 +94,7 @@ void DHCPClientApp_Callback(void) if (!(uip_newdata())) { /* Check if the DHCP timeout period has expired while waiting for a response */ - if (timer_expired(&DHCPTimer)) + if (timer_expired(&AppState->DHCPClient.Timeout)) AppState->DHCPClient.CurrentState = DHCP_STATE_SendDiscover; break; @@ -116,7 +111,7 @@ void DHCPClientApp_Callback(void) DHCPClientApp_GetOption(AppData->Options, DHCP_OPTION_ROUTER, &AppState->DHCPClient.DHCPOffer_Data.GatewayIP); DHCPClientApp_GetOption(AppData->Options, DHCP_OPTION_SERVER_ID, &AppState->DHCPClient.DHCPOffer_Data.ServerIP); - timer_reset(&DHCPTimer); + timer_reset(&AppState->DHCPClient.Timeout); AppState->DHCPClient.CurrentState = DHCP_STATE_SendRequest; } @@ -137,7 +132,7 @@ void DHCPClientApp_Callback(void) uip_udp_send(AppDataSize); /* Reset the timeout timer, progress to next state */ - timer_reset(&DHCPTimer); + timer_reset(&AppState->DHCPClient.Timeout); AppState->DHCPClient.CurrentState = DHCP_STATE_WaitForACK; break; @@ -145,7 +140,7 @@ void DHCPClientApp_Callback(void) if (!(uip_newdata())) { /* Check if the DHCP timeout period has expired while waiting for a response */ - if (timer_expired(&DHCPTimer)) + if (timer_expired(&AppState->DHCPClient.Timeout)) AppState->DHCPClient.CurrentState = DHCP_STATE_SendDiscover; break;