Ethernet-based I/O Control

This example application demonstrates web-based I/O control using the
Stellaris Ethernet controller and the lwIP TCP/IP Stack.  DHCP is used to
obtain an Ethernet address.  If DHCP times out without obtaining an
address, a static IP address will be chosen using AutoIP.  The address that
is selected will be shown on the QVGA display allowing you to access the
internal web pages served by the application via your normal web browser.

Two different methods of controlling board peripherals via web pages are
illustrated via pages labelled ``IO Control Demo 1'' and ``IO Control
Demo 2'' in the navigation menu on the left of the application's home page.
In both cases, the example allows you to toggle the state of the user LED
on the board and set the speed of a graphical animation on the display.

``IO Control Demo 1'' uses JavaScript running in the web browser to send
HTTP requests for particular special URLs.  These special URLs are
intercepted in the file system support layer (lmi_fs.c) and used to
control the LED and animation.  Responses generated by the board are
returned to the browser and inserted into the page HTML dynamically by
more JavaScript code.

``IO Control Demo 2'' uses standard HTML forms to pass parameters to CGI
(Common Gateway Interface) handlers running on the board.  These handlers
process the form data and control the animation and LED as requested before
sending a response page (in this case, the original form) back to the
browser.  The application registers the names and handlers for each of its
CGIs with the HTTPD server during initialization and the server calls
these handlers after parsing URL parameters each time one of the CGI URLs
is requested.

Information on the state of the various controls in the second demo is
inserted into the served HTML using SSI (Server Side Include) tags which
are parsed by the HTTPD server in the application.  As with the CGI
handlers, the application registers its list of SSI tags and a handler
function with the web server during initialization and this handler is
called whenever any registered tag is found in a .shtml, .ssi, .shtm or
.xml file being served to the browser.

In addition to LED and animation speed control, the second example also
allows a line of text to be sent to the board for display on the LCD
panel.  This is included to illustrate the decoding of HTTP text strings.

Note that the web server used by this example has been modified from the
example shipped with the basic lwIP package.  Additions include SSI and
CGI support along with the ability to have the server automatically insert
the HTTP headers rather than having these built in to the files in the
file system image.

For additional details on lwIP, refer to the lwIP web page at:
http://www.sics.se/~adam/lwip/

-------------------------------------------------------------------------------

Copyright (c) 2007-2009 Luminary Micro, Inc.  All rights reserved.
Software License Agreement

Luminary Micro, Inc. (LMI) is supplying this software for use solely and
exclusively on LMI's microcontroller products.

The software is owned by LMI and/or its suppliers, and is protected under
applicable copyright laws.  All rights are reserved.  You may not combine
this software with "viral" open-source software in order to form a larger
program.  Any use in violation of the foregoing restrictions may subject
the user to criminal sanctions under applicable laws, as well as to civil
liability for the breach of the terms and conditions of this license.

THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.

This is part of revision 4652 of the DK-LM3S9B96 Firmware Package.
