These are the examples provided for [[/users/frank26080115/libraries/LPC1700CMSIS_Lib/]] Note, the entire "program" is not compilable!

Revision:
0:bf7b9fba3924
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EMAC/Easy_Web/easyweb.c	Sun Mar 20 05:38:56 2011 +0000
@@ -0,0 +1,187 @@
+/******************************************************************
+ *****                                                        *****
+ *****  Name: easyweb.c                                       *****
+ *****  Ver.: 1.0                                             *****
+ *****  Date: 07/05/2001                                      *****
+ *****  Auth: Andreas Dannenberg                              *****
+ *****        HTWK Leipzig                                    *****
+ *****        university of applied sciences                  *****
+ *****        Germany                                         *****
+ *****  Func: implements a dynamic HTTP-server by using       *****
+ *****        the easyWEB-API                                 *****
+ *****                                                        *****
+ ******************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "adc.h"
+#include "lpc17xx_libcfg.h"
+#include "EMAC.h"         // Keil: *.c -> *.h    // ethernet packet driver
+#define extern            // Keil: Line added for modular project management
+
+#include "easyweb.h"
+#include "tcpip.h"        // Keil: *.c -> *.h    // easyWEB TCP/IP stack
+#include "webpage.h"                             // webside for our HTTP server (HTML)
+
+/* Example group ----------------------------------------------------------- */
+/** @defgroup EMAC_Easy_Web	Easy_Web
+ * @ingroup EMAC_Examples
+ * @{
+ */
+
+// NXP: Include some header files that differs from the origin
+int main(void)
+{
+  TCPLowLevelInit();
+  HTTPStatus = 0;                                // clear HTTP-server's flag register
+
+  TCPLocalPort = TCP_PORT_HTTP;                  // set port we want to listen to
+
+  while (1)                                      // repeat forever
+  {
+    if (!(SocketStatus & SOCK_ACTIVE)) TCPPassiveOpen();   // listen for incoming TCP-connection
+    DoNetworkStuff();                                      // handle network and easyWEB-stack
+                                                           // events
+    HTTPServer();
+  }
+}
+
+// This function implements a very simple dynamic HTTP-server.
+// It waits until connected, then sends a HTTP-header and the
+// HTML-code stored in memory. Before sending, it replaces
+// some special strings with dynamic values.
+// NOTE: For strings crossing page boundaries, replacing will
+// not work. In this case, simply add some extra lines
+// (e.g. CR and LFs) to the HTML-code.
+
+void HTTPServer(void)
+{
+  if (SocketStatus & SOCK_CONNECTED)             // check if somebody has connected to our TCP
+  {
+    if (SocketStatus & SOCK_DATA_AVAILABLE)      // check if remote TCP sent data
+      TCPReleaseRxBuffer();                      // and throw it away
+
+    if (SocketStatus & SOCK_TX_BUF_RELEASED)     // check if buffer is free for TX
+    {
+      if (!(HTTPStatus & HTTP_SEND_PAGE))        // init byte-counter and pointer to webside
+      {                                          // if called the 1st time
+        HTTPBytesToSend = sizeof(WebSide) - 1;   // get HTML length, ignore trailing zero
+        PWebSide = (unsigned char *)WebSide;     // pointer to HTML-code
+      }
+
+      if (HTTPBytesToSend > MAX_TCP_TX_DATA_SIZE)     // transmit a segment of MAX_SIZE
+      {
+        if (!(HTTPStatus & HTTP_SEND_PAGE))           // 1st time, include HTTP-header
+        {
+          memcpy(TCP_TX_BUF, GetResponse, sizeof(GetResponse) - 1);
+          memcpy(TCP_TX_BUF + sizeof(GetResponse) - 1, PWebSide, MAX_TCP_TX_DATA_SIZE - sizeof(GetResponse) + 1);
+          HTTPBytesToSend -= MAX_TCP_TX_DATA_SIZE - sizeof(GetResponse) + 1;
+          PWebSide += MAX_TCP_TX_DATA_SIZE - sizeof(GetResponse) + 1;
+        }
+        else
+        {
+          memcpy(TCP_TX_BUF, PWebSide, MAX_TCP_TX_DATA_SIZE);
+          HTTPBytesToSend -= MAX_TCP_TX_DATA_SIZE;
+          PWebSide += MAX_TCP_TX_DATA_SIZE;
+        }
+
+        TCPTxDataCount = MAX_TCP_TX_DATA_SIZE;   // bytes to xfer
+        InsertDynamicValues();                   // exchange some strings...
+        TCPTransmitTxBuffer();                   // xfer buffer
+      }
+      else if (HTTPBytesToSend)                  // transmit leftover bytes
+      {
+        memcpy(TCP_TX_BUF, PWebSide, HTTPBytesToSend);
+        TCPTxDataCount = HTTPBytesToSend;        // bytes to xfer
+        InsertDynamicValues();                   // exchange some strings...
+        TCPTransmitTxBuffer();                   // send last segment
+        TCPClose();                              // and close connection
+        HTTPBytesToSend = 0;                     // all data sent
+      }
+
+      HTTPStatus |= HTTP_SEND_PAGE;              // ok, 1st loop executed
+    }
+  }
+  else
+    HTTPStatus &= ~HTTP_SEND_PAGE;               // reset help-flag if not connected
+}
+
+// samples and returns the AD-converter value of channel 2 (MCB1700 board) or channel 5 (IAR board)
+
+unsigned int GetAD7Val(void)
+{
+	unsigned int val;
+	ADC_startCnv();
+	val = ADC_getCnv();
+	ADC_stopCnv();
+	return (val/40);
+}
+
+// samples and returns AD-converter value of channel 1
+
+unsigned int GetTempVal(void)
+{
+	// Always return (0)
+	return (0);
+}
+
+
+// searches the TX-buffer for special strings and replaces them
+// with dynamic values (AD-converter results)
+
+void InsertDynamicValues(void)
+{
+  unsigned char *Key;
+           char NewKey[5];
+  unsigned int i;
+
+  if (TCPTxDataCount < 4) return;                     // there can't be any special string
+
+  Key = TCP_TX_BUF;
+
+  for (i = 0; i < (TCPTxDataCount - 3); i++)
+  {
+    if (*Key == 'A')
+     if (*(Key + 1) == 'D')
+       if (*(Key + 3) == '%')
+         switch (*(Key + 2))
+         {
+           case '7' :                                 // "AD7%"?
+           {
+             sprintf(NewKey, "%3u", GetAD7Val());     // insert AD converter value
+             memcpy(Key, NewKey, 3);                  // channel 7 (P6.7)
+             break;
+           }
+           case 'A' :                                 // "ADA%"?
+           {
+             sprintf(NewKey, "%3u", GetTempVal());    // insert AD converter value
+             memcpy(Key, NewKey, 3);                  // channel 10 (temp.-diode)
+             break;
+           }
+         }
+    Key++;
+  }
+}
+
+#ifdef  DEBUG
+/*******************************************************************************
+* @brief		Reports the name of the source file and the source line number
+* 				where the CHECK_PARAM error has occurred.
+* @param[in]	file Pointer to the source file name
+* @param[in]    line assert_param error line source number
+* @return		None
+*******************************************************************************/
+void check_failed(uint8_t *file, uint32_t line)
+{
+	/* User can add his own implementation to report the file name and line number,
+	 ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
+
+	/* Infinite loop */
+	while(1);
+}
+#endif
+
+/*
+ * @}
+ */