Commit aca78633 authored by Dean Camera's avatar Dean Camera
Browse files

Added ENABLE_TELNET_SERVER compile time option to the Webserver project to...

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.
parent 92418433
......@@ -17,6 +17,7 @@
* - Increased the speed of both software and hardware TPI/PDI programming modes of the AVRISP project
* - Added a timeout value to the TWI_StartTransmission() function, within which the addressed device must respond
* - Webserver project now uses the board LEDs to indicate the current IP configuration state
* - Added ENABLE_TELNET_SERVER compile time option to the Webserver project to disable the TELNET server if desired
*
* <b>Fixed:</b>
* - Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin
......
......@@ -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)
......
......@@ -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
......@@ -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));
......
......@@ -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
......@@ -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
}
}
......
......@@ -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>
......
......@@ -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
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment