"Server: LUFA RNDIS\r\n"\r
"Connection: close\r\n\r\n";\r
\r
-/** HTTP page to serve to the host when a HTTP request is made. This page is too long for a single response, thus it is automatically\r
- * broken up into smaller blocks and sent as a series of packets each time the webserver application callback is run.\r
- */\r
+/** Static HTTP page to serve to the host when a HTTP request is made from a host. */\r
char PROGMEM HTTPPage[] = \r
"<html>"\r
" <head>"\r
void WebserverApp_Init(void)\r
{\r
/* Listen on port 80 for HTTP connections from hosts */\r
- uip_listen(HTONS(80));\r
+ uip_listen(HTONS(HTTP_SERVER_PORT));\r
}\r
\r
/** uIP stack application callback for the simple HTTP webserver. This function must be called each time the\r
*/\r
void WebserverApp_Callback(void)\r
{\r
- char* AppDataPtr = (char*)uip_appdata;\r
- uint16_t AppDataSize = 0;\r
+ uip_tcp_appstate_t* const AppState = &uip_conn->appstate;\r
+ char* AppData = (char*)uip_appdata;\r
+ uint16_t AppDataSize = 0;\r
\r
if (uip_closed() || uip_aborted() || uip_timedout())\r
{\r
else if (uip_connected())\r
{\r
/* New connection - initialize connection state and data pointer to the appropriate HTTP header */\r
- uip_conn->appstate.SendPos = HTTP200Header;\r
- uip_conn->appstate.CurrentState = WEBSERVER_STATE_SendHeaders;\r
+ AppState->SendPos = HTTP200Header;\r
+ AppState->CurrentState = WEBSERVER_STATE_SendHeaders;\r
}\r
\r
/* Calculate the maximum segment size and remaining data size */\r
- uint16_t BytesRemaining = strlen_P(uip_conn->appstate.SendPos);\r
+ uint16_t BytesRemaining = strlen_P(AppState->SendPos);\r
uint16_t MaxSegSize = uip_mss();\r
\r
/* No more bytes remaining in the current data being sent - progress to next data chunk or\r
if (!(BytesRemaining))\r
{\r
/* Check which data chunk we are currently sending (header or data) */\r
- if (uip_conn->appstate.CurrentState == WEBSERVER_STATE_SendHeaders)\r
+ if (AppState->CurrentState == WEBSERVER_STATE_SendHeaders)\r
{\r
- uip_conn->appstate.SendPos = HTTPPage;\r
- uip_conn->appstate.CurrentState = WEBSERVER_STATE_SendData; \r
+ AppState->SendPos = HTTPPage;\r
+ AppState->CurrentState = WEBSERVER_STATE_SendData; \r
}\r
- else if (uip_conn->appstate.CurrentState == WEBSERVER_STATE_SendData)\r
+ else if (AppState->CurrentState == WEBSERVER_STATE_SendData)\r
{\r
uip_close();\r
- uip_conn->appstate.CurrentState = WEBSERVER_STATE_Closed;\r
+ AppState->CurrentState = WEBSERVER_STATE_Closed;\r
}\r
\r
return;\r
}\r
\r
/* Copy over the next data segment to the application buffer, advance send position pointer */\r
- strncpy_P(uip_appdata, uip_conn->appstate.SendPos, AppDataSize);\r
- uip_conn->appstate.SendPos += AppDataSize;\r
+ strncpy_P(AppData, AppState->SendPos, AppDataSize);\r
+ AppState->SendPos += AppDataSize;\r
\r
/* Send the data to the requesting host */\r
- uip_send(AppDataPtr, AppDataSize);\r
+ uip_send(AppData, AppDataSize);\r
}\r