forked from mfulz_github/qmk_firmware
Added 404 errors to the RNDIS Webserver example.
This commit is contained in:
parent
6928f17b64
commit
bb05712efe
|
@ -39,11 +39,15 @@
|
||||||
/** HTTP server response header, for transmission before the page contents. This indicates to the host that a page exists at the
|
/** HTTP server response header, for transmission before the page contents. This indicates to the host that a page exists at the
|
||||||
* given location, and gives extra connection information.
|
* given location, and gives extra connection information.
|
||||||
*/
|
*/
|
||||||
char PROGMEM HTTPHeader[] = "HTTP/1.1 200 OK\r\n"
|
char PROGMEM HTTP200Header[] = "HTTP/1.1 200 OK\r\n"
|
||||||
"Server: LUFA RNDIS\r\n"
|
"Server: LUFA RNDIS\r\n"
|
||||||
"Content-type: text/html\r\n"
|
"Content-type: text/html\r\n"
|
||||||
"Connection: close\r\n\r\n";
|
"Connection: close\r\n\r\n";
|
||||||
|
|
||||||
|
char PROGMEM HTTP404Header[] = "HTTP/1.1 404 Not Found\r\n"
|
||||||
|
"Server: LUFA RNDIS\r\n"
|
||||||
|
"Connection: close\r\n\r\n";
|
||||||
|
|
||||||
/** 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
|
/** 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
|
||||||
* broken up into smaller blocks and sent as a series of packets each time the webserver application callback is run.
|
* broken up into smaller blocks and sent as a series of packets each time the webserver application callback is run.
|
||||||
*/
|
*/
|
||||||
|
@ -104,11 +108,13 @@ void Webserver_ApplicationCallback(TCP_ConnectionState_t* ConnectionState, TCP_C
|
||||||
if (TCP_APP_HAS_RECEIVED_PACKET(Buffer))
|
if (TCP_APP_HAS_RECEIVED_PACKET(Buffer))
|
||||||
{
|
{
|
||||||
if (IsHTTPCommand(Buffer->Data, "GET"))
|
if (IsHTTPCommand(Buffer->Data, "GET"))
|
||||||
|
{
|
||||||
|
if (IsHTTPCommand(Buffer->Data, "GET / "))
|
||||||
{
|
{
|
||||||
PageBlock = 0;
|
PageBlock = 0;
|
||||||
|
|
||||||
/* Copy the HTTP response header into the packet buffer */
|
/* Copy the HTTP 200 response header into the packet buffer */
|
||||||
strcpy_P(BufferDataStr, HTTPHeader);
|
strcpy_P(BufferDataStr, HTTP200Header);
|
||||||
|
|
||||||
/* Send the buffer contents to the host */
|
/* Send the buffer contents to the host */
|
||||||
TCP_APP_SEND_BUFFER(Buffer, strlen(BufferDataStr));
|
TCP_APP_SEND_BUFFER(Buffer, strlen(BufferDataStr));
|
||||||
|
@ -116,18 +122,47 @@ void Webserver_ApplicationCallback(TCP_ConnectionState_t* ConnectionState, TCP_C
|
||||||
/* Lock the buffer to Device->Host transmissions only while we send the page contents */
|
/* Lock the buffer to Device->Host transmissions only while we send the page contents */
|
||||||
TCP_APP_CAPTURE_BUFFER(Buffer);
|
TCP_APP_CAPTURE_BUFFER(Buffer);
|
||||||
}
|
}
|
||||||
else if (IsHTTPCommand(Buffer->Data, "HEAD"))
|
else
|
||||||
{
|
{
|
||||||
/* Copy the HTTP response header into the packet buffer */
|
/* Copy the HTTP 404 response header into the packet buffer */
|
||||||
strcpy_P(BufferDataStr, HTTPHeader);
|
strcpy_P(BufferDataStr, HTTP404Header);
|
||||||
|
|
||||||
/* Send the buffer contents to the host */
|
/* Send the buffer contents to the host */
|
||||||
TCP_APP_SEND_BUFFER(Buffer, strlen(BufferDataStr));
|
TCP_APP_SEND_BUFFER(Buffer, strlen(BufferDataStr));
|
||||||
|
|
||||||
|
/* All data sent, close the connection */
|
||||||
|
TCP_APP_CLOSECONNECTION(ConnectionState);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (IsHTTPCommand(Buffer->Data, "HEAD"))
|
||||||
|
{
|
||||||
|
if (IsHTTPCommand(Buffer->Data, "HEAD / "))
|
||||||
|
{
|
||||||
|
/* Copy the HTTP response header into the packet buffer */
|
||||||
|
strcpy_P(BufferDataStr, HTTP200Header);
|
||||||
|
|
||||||
|
/* Send the buffer contents to the host */
|
||||||
|
TCP_APP_SEND_BUFFER(Buffer, strlen(BufferDataStr));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Copy the HTTP response header into the packet buffer */
|
||||||
|
strcpy_P(BufferDataStr, HTTP404Header);
|
||||||
|
|
||||||
|
/* Send the buffer contents to the host */
|
||||||
|
TCP_APP_SEND_BUFFER(Buffer, strlen(BufferDataStr));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* All data sent, close the connection */
|
||||||
|
TCP_APP_CLOSECONNECTION(ConnectionState);
|
||||||
}
|
}
|
||||||
else if (IsHTTPCommand(Buffer->Data, "TRACE"))
|
else if (IsHTTPCommand(Buffer->Data, "TRACE"))
|
||||||
{
|
{
|
||||||
/* Echo the host's query back to the host */
|
/* Echo the host's query back to the host */
|
||||||
TCP_APP_SEND_BUFFER(Buffer, Buffer->Length);
|
TCP_APP_SEND_BUFFER(Buffer, Buffer->Length);
|
||||||
|
|
||||||
|
/* All data sent, close the connection */
|
||||||
|
TCP_APP_CLOSECONNECTION(ConnectionState);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -39,11 +39,15 @@
|
||||||
/** HTTP server response header, for transmission before the page contents. This indicates to the host that a page exists at the
|
/** HTTP server response header, for transmission before the page contents. This indicates to the host that a page exists at the
|
||||||
* given location, and gives extra connection information.
|
* given location, and gives extra connection information.
|
||||||
*/
|
*/
|
||||||
char PROGMEM HTTPHeader[] = "HTTP/1.1 200 OK\r\n"
|
char PROGMEM HTTP200Header[] = "HTTP/1.1 200 OK\r\n"
|
||||||
"Server: LUFA RNDIS\r\n"
|
"Server: LUFA RNDIS\r\n"
|
||||||
"Content-type: text/html\r\n"
|
"Content-type: text/html\r\n"
|
||||||
"Connection: close\r\n\r\n";
|
"Connection: close\r\n\r\n";
|
||||||
|
|
||||||
|
char PROGMEM HTTP404Header[] = "HTTP/1.1 404 Not Found\r\n"
|
||||||
|
"Server: LUFA RNDIS\r\n"
|
||||||
|
"Connection: close\r\n\r\n";
|
||||||
|
|
||||||
/** 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
|
/** 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
|
||||||
* broken up into smaller blocks and sent as a series of packets each time the webserver application callback is run.
|
* broken up into smaller blocks and sent as a series of packets each time the webserver application callback is run.
|
||||||
*/
|
*/
|
||||||
|
@ -104,11 +108,13 @@ void Webserver_ApplicationCallback(TCP_ConnectionState_t* ConnectionState, TCP_C
|
||||||
if (TCP_APP_HAS_RECEIVED_PACKET(Buffer))
|
if (TCP_APP_HAS_RECEIVED_PACKET(Buffer))
|
||||||
{
|
{
|
||||||
if (IsHTTPCommand(Buffer->Data, "GET"))
|
if (IsHTTPCommand(Buffer->Data, "GET"))
|
||||||
|
{
|
||||||
|
if (IsHTTPCommand(Buffer->Data, "GET / "))
|
||||||
{
|
{
|
||||||
PageBlock = 0;
|
PageBlock = 0;
|
||||||
|
|
||||||
/* Copy the HTTP response header into the packet buffer */
|
/* Copy the HTTP 200 response header into the packet buffer */
|
||||||
strcpy_P(BufferDataStr, HTTPHeader);
|
strcpy_P(BufferDataStr, HTTP200Header);
|
||||||
|
|
||||||
/* Send the buffer contents to the host */
|
/* Send the buffer contents to the host */
|
||||||
TCP_APP_SEND_BUFFER(Buffer, strlen(BufferDataStr));
|
TCP_APP_SEND_BUFFER(Buffer, strlen(BufferDataStr));
|
||||||
|
@ -116,18 +122,47 @@ void Webserver_ApplicationCallback(TCP_ConnectionState_t* ConnectionState, TCP_C
|
||||||
/* Lock the buffer to Device->Host transmissions only while we send the page contents */
|
/* Lock the buffer to Device->Host transmissions only while we send the page contents */
|
||||||
TCP_APP_CAPTURE_BUFFER(Buffer);
|
TCP_APP_CAPTURE_BUFFER(Buffer);
|
||||||
}
|
}
|
||||||
else if (IsHTTPCommand(Buffer->Data, "HEAD"))
|
else
|
||||||
{
|
{
|
||||||
/* Copy the HTTP response header into the packet buffer */
|
/* Copy the HTTP 404 response header into the packet buffer */
|
||||||
strcpy_P(BufferDataStr, HTTPHeader);
|
strcpy_P(BufferDataStr, HTTP404Header);
|
||||||
|
|
||||||
/* Send the buffer contents to the host */
|
/* Send the buffer contents to the host */
|
||||||
TCP_APP_SEND_BUFFER(Buffer, strlen(BufferDataStr));
|
TCP_APP_SEND_BUFFER(Buffer, strlen(BufferDataStr));
|
||||||
|
|
||||||
|
/* All data sent, close the connection */
|
||||||
|
TCP_APP_CLOSECONNECTION(ConnectionState);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (IsHTTPCommand(Buffer->Data, "HEAD"))
|
||||||
|
{
|
||||||
|
if (IsHTTPCommand(Buffer->Data, "HEAD / "))
|
||||||
|
{
|
||||||
|
/* Copy the HTTP response header into the packet buffer */
|
||||||
|
strcpy_P(BufferDataStr, HTTP200Header);
|
||||||
|
|
||||||
|
/* Send the buffer contents to the host */
|
||||||
|
TCP_APP_SEND_BUFFER(Buffer, strlen(BufferDataStr));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Copy the HTTP response header into the packet buffer */
|
||||||
|
strcpy_P(BufferDataStr, HTTP404Header);
|
||||||
|
|
||||||
|
/* Send the buffer contents to the host */
|
||||||
|
TCP_APP_SEND_BUFFER(Buffer, strlen(BufferDataStr));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* All data sent, close the connection */
|
||||||
|
TCP_APP_CLOSECONNECTION(ConnectionState);
|
||||||
}
|
}
|
||||||
else if (IsHTTPCommand(Buffer->Data, "TRACE"))
|
else if (IsHTTPCommand(Buffer->Data, "TRACE"))
|
||||||
{
|
{
|
||||||
/* Echo the host's query back to the host */
|
/* Echo the host's query back to the host */
|
||||||
TCP_APP_SEND_BUFFER(Buffer, Buffer->Length);
|
TCP_APP_SEND_BUFFER(Buffer, Buffer->Length);
|
||||||
|
|
||||||
|
/* All data sent, close the connection */
|
||||||
|
TCP_APP_CLOSECONNECTION(ConnectionState);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
* - Added new LEDs_ToggleLEDs() function to the LEDs driver
|
* - Added new LEDs_ToggleLEDs() function to the LEDs driver
|
||||||
* - Added new Pipe_BoundEndpointNumber() and Pipe_IsEndpointBound() functions
|
* - Added new Pipe_BoundEndpointNumber() and Pipe_IsEndpointBound() functions
|
||||||
* - Added new DEVICE_STATE_AS_GPIOR and HOST_STATE_AS_GPIOR compile time options
|
* - Added new DEVICE_STATE_AS_GPIOR and HOST_STATE_AS_GPIOR compile time options
|
||||||
|
* - Added 404 errors to the Webserver in the RNDIS demos to indicate invalid URLs
|
||||||
*
|
*
|
||||||
* <b>Changed:</b>
|
* <b>Changed:</b>
|
||||||
* - Deprecated psuedo-scheduler and removed dynamic memory allocator from the library (first no longer needed and second unused)
|
* - Deprecated psuedo-scheduler and removed dynamic memory allocator from the library (first no longer needed and second unused)
|
||||||
|
|
Loading…
Reference in New Issue