TI's CC3100 websocket camera demo with Arducam mini ov5642 and freertos. Should work with other M3's. Work in progress test demo.

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers HttpResponse.h Source File

HttpResponse.h

00001 //*****************************************************************************
00002 // Copyright (C) 2014 Texas Instruments Incorporated
00003 //
00004 // All rights reserved. Property of Texas Instruments Incorporated.
00005 // Restricted rights to use, duplicate or disclose this code are
00006 // granted through contract.
00007 // The program may not be used without the written permission of
00008 // Texas Instruments Incorporated or against the terms and conditions
00009 // stipulated in the agreement under which this program has been supplied,
00010 // and under no circumstances can it be used with non-TI connectivity device.
00011 //
00012 //*****************************************************************************
00013 
00014 #ifndef _HTTP_RESPONSE_H_
00015 #define _HTTP_RESPONSE_H_
00016 
00017 #include "datatypes.h"
00018 #include "HttpString.h"
00019 
00020 /**
00021  * @defgroup HttpResponse HTTP and WebSocket Response modules
00022  * This module implements routines to allow content handler modules to build and send HTTP responses back to the client.
00023  * There are two layers in this module:
00024  * - The lower layer consists of HttpResponse_Headers() and HttpResponse_Content(). These routines allow the caller to specify all details of the response.
00025  * - The higher layer consists of HttpResponse_Canned*(). These routines emit canned (pre-made) responses, such as redirects and errors, which are useful in many situations.
00026  *
00027  * @{
00028  */
00029 
00030 #define HTTP_STATUS_OK                 200
00031 #define HTTP_STATUS_REDIRECT_PERMANENT 301
00032 #define HTTP_STATUS_REDIRECT_TEMPORARY 302
00033 #define HTTP_STATUS_ERROR_UNAUTHORIZED 401
00034 #define HTTP_STATUS_ERROR_NOT_FOUND    404
00035 #define HTTP_STATUS_ERROR_NOT_ACCEPTED 406
00036 #define HTTP_STATUS_ERROR_INTERNAL     500
00037 
00038 
00039 /// The response data is gzip-compressed. Implies the header Content-Encoding: gzip
00040 #define HTTP_RESPONSE_FLAG_COMPRESSED   (1 << 0)
00041 
00042 #define WS_STATUS_OK                   1000         // Purpose of connection has been fulfilled
00043 #define WS_STATUS_GOING_AWAY           1001         //Server going going down or browser re-navigating
00044 #define WS_STATUS_ERROR_PROTOCOL       1002         //Protocol error
00045 #define WS_STATUS_ERROR_DATATYPE       1003         //Text frame or binary sent not supported by the application
00046 #define WS_STATUS_ERROR_ENCODING       1007         //Type not consistent with the rest of the message
00047 #define WS_STATUS_ERROR_POLICY     1008         //Policy violation for server
00048 #define WS_STATUS_ERROR_OVERFLOW       1009         //Data too large for buffer
00049 #define WS_STATUS_ERROR_UNEXPECTED   1011           //Unexpected event
00050 
00051 #ifdef  __cplusplus
00052 extern "C" {
00053 #endif
00054 
00055 
00056 /**
00057  * Respond with the specified HTTP status and headers
00058  * @param uConnection The connection number, as it appears in the HttpRequest structure
00059  * @param uHttpStatus The HTTP status number to response with. Must be one of HTTP_STATUS_*
00060  * @param uFlags Flags which are manifested in the response headers. See HTTP_RESPONSE_FLAG_*
00061  * @param uContentLength The total length of content which will be sent via HttpResponse_Content()
00062  * @param contentType The content type string, or NULL to omit the content type
00063  * @param location A string which will be used for the Location header, or NULL to omit the Location header
00064  */
00065 int HttpResponse_Headers(UINT16 uConnection, UINT16 uHttpStatus, UINT16 uFlags, UINT32 uContentLength, struct HttpBlob contentType, struct HttpBlob location);
00066 
00067 /**
00068  * Retrieves the pointer and size of the packet-send buffer
00069  * This function should be called by content handlers that wish to use the already-allocated packet-send buffer in calls to HttpResponse_Content()
00070  * @param[out] pPacketSendBuffer Returns the pointer and size of the packet-send buffer
00071  */
00072 void HttpResponse_GetPacketSendBuffer(struct HttpBlob* pPacketSendBuffer);
00073 
00074 /**
00075  * Send response content to the client.
00076  * This function may be called more than once, until all the content is sent.
00077  * @param uConnection The connection number, as it appears in the HttpRequest structure
00078  * @param content Content blob to send to the client.
00079  */
00080 int HttpResponse_Content(UINT16 uConnection, struct HttpBlob content);
00081 
00082 /**
00083  * Sends a canned response, with an HTTP redirect
00084  * This function should be called *instead* of HttpResponse_Status(), HttpResponse_Headers() and HttpResponse_Content()
00085  * @param uConnection The connection number, as it appears in the HttpRequest structure
00086  * @param pLocation The redirect URL
00087  * @param bPermanent zero for temporary redirect, nonzero for permanent redirect
00088  */
00089 int HttpResponse_CannedRedirect(UINT16 uConnection, struct HttpBlob location, UINT16 bPermanent);
00090 
00091 /**
00092  * Sends a canned response, with an error message
00093  * This function should be called *instead* of HttpResponse_Status(), HttpResponse_Headers() and HttpResponse_Content()
00094  * @param uConnection The connection number, as it appears in the HttpRequest structure
00095  * @param uHttpStatus The HTTP error status. Must be one of HTTP_STATUS_ERROR_*
00096  */
00097 int HttpResponse_CannedError(UINT16 uConnection, UINT16 uHttpStatus);
00098 
00099 /// @}
00100 #ifdef  __cplusplus
00101 }
00102 #endif /* __cplusplus */
00103 #endif //_HTTP_RESPONSE_H_
00104