projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added ENABLE_TELNET_SERVER compile time option to the Webserver project to disable...
[pub/USBasp.git]
/
Projects
/
Webserver
/
Lib
/
DHCPClientApp.c
diff --git
a/Projects/Webserver/Lib/DHCPClientApp.c
b/Projects/Webserver/Lib/DHCPClientApp.c
index
0e51d57
..
1af90ad
100644
(file)
--- a/
Projects/Webserver/Lib/DHCPClientApp.c
+++ b/
Projects/Webserver/Lib/DHCPClientApp.c
@@
-28,39
+28,35
@@
this software.
\r
*/
\r
\r
this software.
\r
*/
\r
\r
+#if defined(ENABLE_DHCP_CLIENT) || defined(__DOXYGEN__)
\r
+
\r
/** \file
\r
*
\r
* DHCP Client Application. When connected to the uIP stack, this will retrieve IP configuration settings from the
\r
* DHCP server on the network.
\r
*/
\r
/** \file
\r
*
\r
* DHCP Client Application. When connected to the uIP stack, this will retrieve IP configuration settings from the
\r
* DHCP server on the network.
\r
*/
\r
-
\r
-#include "DHCPClientApp.h"
\r
\r
\r
-#if defined(ENABLE_DHCP_CLIENT) || defined(__DOXYGEN__)
\r
-/** Timer for managing the timeout period for a DHCP server to respond */
\r
-struct timer DHCPTimer;
\r
+#define INCLUDE_FROM_DHCPCLIENTAPP_C
\r
+#include "DHCPClientApp.h"
\r
\r
/** Initialization function for the DHCP client. */
\r
void DHCPClientApp_Init(void)
\r
{
\r
\r
/** Initialization function for the DHCP client. */
\r
void DHCPClientApp_Init(void)
\r
{
\r
- /* Create an IP address to the broadcast network address */
\r
- uip_ipaddr_t DHCPServerIPAddress;
\r
- uip_ipaddr(&DHCPServerIPAddress, 255, 255, 255, 255);
\r
-
\r
/* Create a new UDP connection to the DHCP server port for the DHCP solicitation */
\r
/* Create a new UDP connection to the DHCP server port for the DHCP solicitation */
\r
- struct uip_udp_conn* Connection = uip_udp_new(&
DHCPServerIPAddress
, HTONS(DHCPC_SERVER_PORT));
\r
+ struct uip_udp_conn* Connection = uip_udp_new(&
uip_broadcast_addr
, HTONS(DHCPC_SERVER_PORT));
\r
\r
/* If the connection was successfully created, bind it to the local DHCP client port */
\r
if (Connection != NULL)
\r
{
\r
uip_udp_appstate_t* const AppState = &Connection->appstate;
\r
\r
/* If the connection was successfully created, bind it to the local DHCP client port */
\r
if (Connection != NULL)
\r
{
\r
uip_udp_appstate_t* const AppState = &Connection->appstate;
\r
-
\r
uip_udp_bind(Connection, HTONS(DHCPC_CLIENT_PORT));
\r
uip_udp_bind(Connection, HTONS(DHCPC_CLIENT_PORT));
\r
+
\r
+ /* Set the initial client state */
\r
AppState->DHCPClient.CurrentState = DHCP_STATE_SendDiscover;
\r
AppState->DHCPClient.CurrentState = DHCP_STATE_SendDiscover;
\r
- }
\r
\r
\r
- /* Set timeout period to half a second for a DHCP server to respond */
\r
- timer_set(&DHCPTimer, CLOCK_SECOND / 2);
\r
+ /* Set timeout period to half a second for a DHCP server to respond */
\r
+ timer_set(&AppState->DHCPClient.Timeout, CLOCK_SECOND / 2);
\r
+ }
\r
}
\r
\r
/** uIP stack application callback for the DHCP client. This function must be called each time the TCP/IP stack
\r
}
\r
\r
/** uIP stack application callback for the DHCP client. This function must be called each time the TCP/IP stack
\r
@@
-91,7
+87,7
@@
void DHCPClientApp_Callback(void)
uip_udp_send(AppDataSize);
\r
\r
/* Reset the timeout timer, progress to next state */
\r
uip_udp_send(AppDataSize);
\r
\r
/* Reset the timeout timer, progress to next state */
\r
- timer_reset(&
DHCPTimer
);
\r
+ timer_reset(&
AppState->DHCPClient.Timeout
);
\r
AppState->DHCPClient.CurrentState = DHCP_STATE_WaitForOffer;
\r
\r
break;
\r
AppState->DHCPClient.CurrentState = DHCP_STATE_WaitForOffer;
\r
\r
break;
\r
@@
-99,7
+95,7
@@
void DHCPClientApp_Callback(void)
if (!(uip_newdata()))
\r
{
\r
/* Check if the DHCP timeout period has expired while waiting for a response */
\r
if (!(uip_newdata()))
\r
{
\r
/* Check if the DHCP timeout period has expired while waiting for a response */
\r
- if (timer_expired(&
DHCPTimer
))
\r
+ if (timer_expired(&
AppState->DHCPClient.Timeout
))
\r
AppState->DHCPClient.CurrentState = DHCP_STATE_SendDiscover;
\r
\r
break;
\r
AppState->DHCPClient.CurrentState = DHCP_STATE_SendDiscover;
\r
\r
break;
\r
@@
-116,7
+112,7
@@
void DHCPClientApp_Callback(void)
DHCPClientApp_GetOption(AppData->Options, DHCP_OPTION_ROUTER, &AppState->DHCPClient.DHCPOffer_Data.GatewayIP);
\r
DHCPClientApp_GetOption(AppData->Options, DHCP_OPTION_SERVER_ID, &AppState->DHCPClient.DHCPOffer_Data.ServerIP);
\r
\r
DHCPClientApp_GetOption(AppData->Options, DHCP_OPTION_ROUTER, &AppState->DHCPClient.DHCPOffer_Data.GatewayIP);
\r
DHCPClientApp_GetOption(AppData->Options, DHCP_OPTION_SERVER_ID, &AppState->DHCPClient.DHCPOffer_Data.ServerIP);
\r
\r
- timer_reset(&
DHCPTimer
);
\r
+ timer_reset(&
AppState->DHCPClient.Timeout
);
\r
AppState->DHCPClient.CurrentState = DHCP_STATE_SendRequest;
\r
}
\r
\r
AppState->DHCPClient.CurrentState = DHCP_STATE_SendRequest;
\r
}
\r
\r
@@
-137,7
+133,7
@@
void DHCPClientApp_Callback(void)
uip_udp_send(AppDataSize);
\r
\r
/* Reset the timeout timer, progress to next state */
\r
uip_udp_send(AppDataSize);
\r
\r
/* Reset the timeout timer, progress to next state */
\r
- timer_reset(&
DHCPTimer
);
\r
+ timer_reset(&
AppState->DHCPClient.Timeout
);
\r
AppState->DHCPClient.CurrentState = DHCP_STATE_WaitForACK;
\r
\r
break;
\r
AppState->DHCPClient.CurrentState = DHCP_STATE_WaitForACK;
\r
\r
break;
\r
@@
-145,7
+141,7
@@
void DHCPClientApp_Callback(void)
if (!(uip_newdata()))
\r
{
\r
/* Check if the DHCP timeout period has expired while waiting for a response */
\r
if (!(uip_newdata()))
\r
{
\r
/* Check if the DHCP timeout period has expired while waiting for a response */
\r
- if (timer_expired(&
DHCPTimer
))
\r
+ if (timer_expired(&
AppState->DHCPClient.Timeout
))
\r
AppState->DHCPClient.CurrentState = DHCP_STATE_SendDiscover;
\r
\r
break;
\r
AppState->DHCPClient.CurrentState = DHCP_STATE_SendDiscover;
\r
\r
break;
\r
@@
-161,7
+157,10
@@
void DHCPClientApp_Callback(void)
uip_setnetmask((uip_ipaddr_t*)&AppState->DHCPClient.DHCPOffer_Data.Netmask);
\r
uip_setdraddr((uip_ipaddr_t*)&AppState->DHCPClient.DHCPOffer_Data.GatewayIP);
\r
\r
uip_setnetmask((uip_ipaddr_t*)&AppState->DHCPClient.DHCPOffer_Data.Netmask);
\r
uip_setdraddr((uip_ipaddr_t*)&AppState->DHCPClient.DHCPOffer_Data.GatewayIP);
\r
\r
- AppState->DHCPClient.CurrentState = DHCP_STATE_AddressLeased;
\r
+ /* Indicate to the user that we now have a valid IP configuration */
\r
+ HaveIPConfiguration = true;
\r
+
\r
+ AppState->DHCPClient.CurrentState = DHCP_STATE_AddressLeased;
\r
}
\r
\r
break;
\r
}
\r
\r
break;
\r
@@
-177,7
+176,7
@@
void DHCPClientApp_Callback(void)
*
\r
* \return Size in bytes of the created DHCP packet
\r
*/
\r
*
\r
* \return Size in bytes of the created DHCP packet
\r
*/
\r
-uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* DHCPHeader, uint8_t DHCPMessageType, uip_udp_appstate_t* AppState)
\r
+
static
uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* DHCPHeader, uint8_t DHCPMessageType, uip_udp_appstate_t* AppState)
\r
{
\r
/* Erase existing packet data so that we start will all 0x00 DHCP header data */
\r
memset(DHCPHeader, 0, sizeof(DHCP_Header_t));
\r
{
\r
/* Erase existing packet data so that we start will all 0x00 DHCP header data */
\r
memset(DHCPHeader, 0, sizeof(DHCP_Header_t));
\r
@@
-216,7
+215,7
@@
uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* DHCPHeader, uint8_t DHCPMes
*
\r
* \return Number of bytes added to the DHCP packet
\r
*/
\r
*
\r
* \return Number of bytes added to the DHCP packet
\r
*/
\r
-uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList, uint8_t Option, uint8_t DataLen, void* OptionData)
\r
+
static
uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList, uint8_t Option, uint8_t DataLen, void* OptionData)
\r
{
\r
/* Skip through the DHCP options list until the terminator option is found */
\r
while (*DHCPOptionList != DHCP_OPTION_END)
\r
{
\r
/* Skip through the DHCP options list until the terminator option is found */
\r
while (*DHCPOptionList != DHCP_OPTION_END)
\r
@@
-240,7
+239,7
@@
uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList, uint8_t Option, uint8_t
*
\r
* \return Boolean true if the option was found in the DHCP packet's options list, false otherwise
\r
*/
\r
*
\r
* \return Boolean true if the option was found in the DHCP packet's options list, false otherwise
\r
*/
\r
-bool DHCPClientApp_GetOption(uint8_t* DHCPOptionList, uint8_t Option, void* Destination)
\r
+
static
bool DHCPClientApp_GetOption(uint8_t* DHCPOptionList, uint8_t Option, void* Destination)
\r
{
\r
/* Look through the incoming DHCP packet's options list for the requested option */
\r
while (*DHCPOptionList != DHCP_OPTION_END)
\r
{
\r
/* Look through the incoming DHCP packet's options list for the requested option */
\r
while (*DHCPOptionList != DHCP_OPTION_END)
\r