aboutsummaryrefslogtreecommitdiffstats
path: root/Projects
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2010-03-10 12:48:20 +0000
committerDean Camera <dean@fourwalledcubicle.com>2010-03-10 12:48:20 +0000
commitaca7863350509a1f390eda93ac0150378d8cd16c (patch)
treecc807cb6af03604e0f019c181b96d31f39b08dcd /Projects
parent92418433a505cdf1db0162cea2bdb22a99014ebb (diff)
downloadlufa-aca7863350509a1f390eda93ac0150378d8cd16c.tar.gz
lufa-aca7863350509a1f390eda93ac0150378d8cd16c.tar.bz2
lufa-aca7863350509a1f390eda93ac0150378d8cd16c.zip
Added ENABLE_TELNET_SERVER compile time option to the Webserver project to disable the TELNET server if desired.
Change over static strings in the Webserver project to use PROGMEM where possible.
Diffstat (limited to 'Projects')
-rw-r--r--Projects/Webserver/Lib/DHCPClientApp.c11
-rw-r--r--Projects/Webserver/Lib/DHCPClientApp.h11
-rw-r--r--Projects/Webserver/Lib/HTTPServerApp.c10
-rw-r--r--Projects/Webserver/Lib/TELNETServerApp.c21
-rw-r--r--Projects/Webserver/Lib/uIPManagement.c4
-rw-r--r--Projects/Webserver/Webserver.txt6
-rw-r--r--Projects/Webserver/makefile1
7 files changed, 42 insertions, 22 deletions
diff --git a/Projects/Webserver/Lib/DHCPClientApp.c b/Projects/Webserver/Lib/DHCPClientApp.c
index 01cbb7e26..1af90ad19 100644
--- a/Projects/Webserver/Lib/DHCPClientApp.c
+++ b/Projects/Webserver/Lib/DHCPClientApp.c
@@ -28,16 +28,17 @@
this software.
*/
+#if defined(ENABLE_DHCP_CLIENT) || defined(__DOXYGEN__)
+
/** \file
*
* DHCP Client Application. When connected to the uIP stack, this will retrieve IP configuration settings from the
* DHCP server on the network.
*/
+#define INCLUDE_FROM_DHCPCLIENTAPP_C
#include "DHCPClientApp.h"
-#if defined(ENABLE_DHCP_CLIENT) || defined(__DOXYGEN__)
-
/** Initialization function for the DHCP client. */
void DHCPClientApp_Init(void)
{
@@ -175,7 +176,7 @@ void DHCPClientApp_Callback(void)
*
* \return Size in bytes of the created DHCP packet
*/
-uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* DHCPHeader, uint8_t DHCPMessageType, uip_udp_appstate_t* AppState)
+static uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* DHCPHeader, uint8_t DHCPMessageType, uip_udp_appstate_t* AppState)
{
/* Erase existing packet data so that we start will all 0x00 DHCP header data */
memset(DHCPHeader, 0, sizeof(DHCP_Header_t));
@@ -214,7 +215,7 @@ uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* DHCPHeader, uint8_t DHCPMes
*
* \return Number of bytes added to the DHCP packet
*/
-uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList, uint8_t Option, uint8_t DataLen, void* OptionData)
+static uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList, uint8_t Option, uint8_t DataLen, void* OptionData)
{
/* Skip through the DHCP options list until the terminator option is found */
while (*DHCPOptionList != DHCP_OPTION_END)
@@ -238,7 +239,7 @@ uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList, uint8_t Option, uint8_t
*
* \return Boolean true if the option was found in the DHCP packet's options list, false otherwise
*/
-bool DHCPClientApp_GetOption(uint8_t* DHCPOptionList, uint8_t Option, void* Destination)
+static bool DHCPClientApp_GetOption(uint8_t* DHCPOptionList, uint8_t Option, void* Destination)
{
/* Look through the incoming DHCP packet's options list for the requested option */
while (*DHCPOptionList != DHCP_OPTION_END)
diff --git a/Projects/Webserver/Lib/DHCPClientApp.h b/Projects/Webserver/Lib/DHCPClientApp.h
index 947151d0b..702f79704 100644
--- a/Projects/Webserver/Lib/DHCPClientApp.h
+++ b/Projects/Webserver/Lib/DHCPClientApp.h
@@ -159,8 +159,11 @@
void DHCPClientApp_Init(void);
void DHCPClientApp_Callback(void);
- uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* DHCPHeader, uint8_t DHCPMessageType, uip_udp_appstate_t* AppState);
- uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList, uint8_t Option, uint8_t DataLen, void* OptionData);
- bool DHCPClientApp_GetOption(uint8_t* DHCPOptionList, uint8_t Option, void* Destination);
-
+ #if defined(INCLUDE_FROM_DHCPCLIENTAPP_C)
+ static uint16_t DHCPClientApp_FillDHCPHeader(DHCP_Header_t* DHCPHeader, uint8_t DHCPMessageType,
+ uip_udp_appstate_t* AppState);
+ static uint8_t DHCPClientApp_SetOption(uint8_t* DHCPOptionList, uint8_t Option, uint8_t DataLen,
+ void* OptionData);
+ static bool DHCPClientApp_GetOption(uint8_t* DHCPOptionList, uint8_t Option, void* Destination);
+ #endif
#endif
diff --git a/Projects/Webserver/Lib/HTTPServerApp.c b/Projects/Webserver/Lib/HTTPServerApp.c
index 1a1d2c4bf..08d849433 100644
--- a/Projects/Webserver/Lib/HTTPServerApp.c
+++ b/Projects/Webserver/Lib/HTTPServerApp.c
@@ -56,12 +56,12 @@ const char PROGMEM HTTP404Header[] = "HTTP/1.1 404 Not Found\r\n"
"Content-Type: text/plain\r\n\r\n"
"Error 404: File Not Found: /";
-/** Default MIME type sent if no other MIME type can be determined. */
-const char PROGMEM DefaultMIMEType[] = "text/plain";
-
/** Default filename to fetch when a directory is requested */
const char PROGMEM DefaultDirFileName[] = "index.htm";
+/** Default MIME type sent if no other MIME type can be determined. */
+const char PROGMEM DefaultMIMEType[] = "text/plain";
+
/** List of MIME types for each supported file extension. */
const MIME_Type_t MIMETypes[] =
{
@@ -174,7 +174,7 @@ static void HTTPServerApp_OpenRequestedFile(void)
char* RequestedFileName = strtok(NULL, " ");
/* Must be a GET request, abort otherwise */
- if (strcmp(RequestToken, "GET") != 0)
+ if (strcmp_P(RequestToken, PSTR("GET")) != 0)
{
uip_abort();
return;
@@ -257,7 +257,7 @@ static void HTTPServerApp_SendResponseHeader(void)
}
/* Add the end-of-line terminator and end-of-headers terminator after the MIME type */
- strcpy(&AppData[strlen(AppData)], "\r\n\r\n");
+ strcpy_P(&AppData[strlen(AppData)], PSTR("\r\n\r\n"));
/* Send the MIME header to the receiving client */
uip_send(AppData, strlen(AppData));
diff --git a/Projects/Webserver/Lib/TELNETServerApp.c b/Projects/Webserver/Lib/TELNETServerApp.c
index d1f1d7f97..2855f8d76 100644
--- a/Projects/Webserver/Lib/TELNETServerApp.c
+++ b/Projects/Webserver/Lib/TELNETServerApp.c
@@ -28,6 +28,8 @@
this software.
*/
+#if defined(ENABLE_TELNET_SERVER) || defined(__DOXYGEN__)
+
/** \file
*
* TELNET Webserver Application. When connected to the uIP stack,
@@ -114,7 +116,7 @@ void TELNETServerApp_Callback(void)
TELNETServerApp_DisplayTCPConnections();
break;
default:
- strcpy(AppData, "Invalid Command.\r\n");
+ strcpy_P(AppData, PSTR("Invalid Command.\r\n"));
uip_send(AppData, strlen(AppData));
break;
}
@@ -144,14 +146,17 @@ static void TELNETServerApp_DisplayTCPConnections(void)
if (CurrConnection->tcpstateflags != UIP_CLOSED)
{
/* Add the current connection's details to the out buffer */
- ResponseLen += sprintf(&AppData[ResponseLen], "%u) %02d.%02d.%02d.%02d (Local %u, Remote %u)\r\n",
- ++ActiveConnCount, CurrConnection->ripaddr.u8[0],
- CurrConnection->ripaddr.u8[1],
- CurrConnection->ripaddr.u8[2],
- CurrConnection->ripaddr.u8[3],
- HTONS(CurrConnection->lport), HTONS(CurrConnection->rport));
+ ResponseLen += sprintf_P(&AppData[ResponseLen], PSTR("%u) %02d.%02d.%02d.%02d (Local %u, Remote %u)\r\n"),
+ ++ActiveConnCount,
+ CurrConnection->ripaddr.u8[0],
+ CurrConnection->ripaddr.u8[1],
+ CurrConnection->ripaddr.u8[2],
+ CurrConnection->ripaddr.u8[3],
+ HTONS(CurrConnection->lport), HTONS(CurrConnection->rport));
}
}
uip_send(AppData, ResponseLen);
-} \ No newline at end of file
+}
+
+#endif
diff --git a/Projects/Webserver/Lib/uIPManagement.c b/Projects/Webserver/Lib/uIPManagement.c
index d5ad515c2..45f8a6ae5 100644
--- a/Projects/Webserver/Lib/uIPManagement.c
+++ b/Projects/Webserver/Lib/uIPManagement.c
@@ -80,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
@@ -106,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
}
}
diff --git a/Projects/Webserver/Webserver.txt b/Projects/Webserver/Webserver.txt
index 05d0b1ffd..3c0c48e35 100644
--- a/Projects/Webserver/Webserver.txt
+++ b/Projects/Webserver/Webserver.txt
@@ -78,6 +78,12 @@
* <td><b>Description:</b></td>
* </tr>
* <tr>
+ * <td>ENABLE_TELNET_SERVER</td>
+ * <td>Makefile CDEFS</td>
+ * <td>When defined, this enables the TELNET server in addition to the HTTP webserver, which listens for incomming connections
+ * and processes user commands.</td>
+ * </tr>
+ * <tr>
* <td>ENABLE_DHCP_CLIENT</td>
* <td>Makefile CDEFS</td>
* <td>When defined, this enables the DHCP client for dynamic IP allocation of the network settings from a DHCP server.</td>
diff --git a/Projects/Webserver/makefile b/Projects/Webserver/makefile
index edd282401..36adb1d51 100644
--- a/Projects/Webserver/makefile
+++ b/Projects/Webserver/makefile
@@ -201,6 +201,7 @@ CSTANDARD = -std=gnu99
# Place -D or -U options here for C sources
CDEFS = -DF_CPU=$(F_CPU)UL -DF_CLOCK=$(F_CLOCK)UL -DBOARD=BOARD_$(BOARD) $(LUFA_OPTS)
CDEFS += -DENABLE_DHCP_CLIENT
+CDEFS += -DENABLE_TELNET_SERVER
CDEFS += -DMAX_URI_LENGTH=50
CDEFS += -DUIP_CONF_UDP="defined(ENABLE_DHCP_CLIENT)" -DUIP_CONF_TCP=1 -DUIP_CONF_UDP_CONNS=1 -DUIP_CONF_MAX_CONNECTIONS=3