Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of SW_HTTPServer by
Diff: SW_HTTPServer.h
- Revision:
- 2:a29c32190037
- Parent:
- 1:54353af0d20a
- Child:
- 3:17928786bdb5
--- a/SW_HTTPServer.h Fri May 31 03:46:58 2013 +0000 +++ b/SW_HTTPServer.h Sun Jun 02 18:32:05 2013 +0000 @@ -32,14 +32,24 @@ /// @li query_string is any combination of name=value pairs /// @li fragment_id is a reference to an anchor on the page /// +/// Feature request list: /// @todo make it non-blocking. /// @todo hunt down lengthy operations - there seems to be a long timeout somewhere. +/// @todo parse the header similar to the query string, and then make +/// those parameters accessible - perhaps like environment vars. /// @todo move part of the POST method handler to the registered handler, so /// it can decide if it should allocate the needed memory. +/// @todo Add password capability to some web pages /// @todo transform the pc serial interface to a log interface, which might /// be more useful. -/// @todo parse the header similar to the query string, and then make -/// those parameters accessible - perhaps like environment vars. +/// @todo Add ability to put WiFly in AP mode and then configuration pages +/// to find and join a network. +/// @todo Add ability to change/update SW in the WiFly module +/// @todo Add ability to upload a new application to the mbed +/// +/// History: +/// @li 20130530 Initial version +/// @li 20130601 Renamed ip_process to Poll /// /// @note Copyright © 2013 by Smartware Computing, all rights reserved. /// Individuals may use this application for evaluation or non-commercial @@ -62,15 +72,32 @@ char * name; char * value; } namevalue; + + /** + * Indicates the purpose of the callback + */ + typedef enum { + CONTENT_LENGTH_REQUEST, ///<!- ask the user if they wish to accept the data + DATA_TRANSFER, + SEND_PAGE, ///<! the activated method should now send the page + } CallBackType; /** * callback prototype for custom handler * + * This callback gets overloaded for a few purposes, which can be identified by the CallBackType parameter + * @li SEND_PAGE - the callback should now send the html page, using as many svr->send() as needed. + * When the callback returns, it should always indicate true. + * @li CONTENT_LENGTH_REQUEST - the server is asking the callback if it wants to receive the message, + * which may require significant memory. If the request is accepted, true should be returned. + * If the request is denied, false should be returned. + * * @param svr is a handle to this class, so the callback has access to member functions * @param params is a pointer to an array of name value pairs * @paramcount is the number of parameters. + * @return true if command was accepted */ - typedef void (* Handler)(HTTPServer * svr, const char * path, const namevalue *params, int paramcount); + typedef bool (* Handler)(HTTPServer * svr, CallBackType type, const char *path, const namevalue *params, int paramcount); /** * Create the HTTPServer object. @@ -92,8 +119,10 @@ /** * the process to call whenever there is free time, as this basically does * all the work to monitor for connections and handle replies. + * + * 20130601 Renamed from ip_process to Poll */ - void ip_process(); + void Poll(); /** * Send a header back to the client and automatically appends a "\r\n". Each parameter must