@ -33,12 +33,10 @@
* 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 )
@ -54,13 +52,14 @@ void DHCPClientApp_Init(void)
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 +90,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 +98,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 +115,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 +136,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 +144,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 ;