Dependencies:   NetServices mbed

Files at this revision

API Documentation at this revision

Comitter:
segundo
Date:
Fri Nov 19 21:54:02 2010 +0000
Parent:
1:57f922fe8fb5
Child:
3:aeaa9fa8cda0
Commit message:

Changed in this revision

NetServices.lib Show annotated file Show diff for this revision Revisions of this file
RPCInterface.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/NetServices.lib	Tue Nov 16 20:04:25 2010 +0000
+++ b/NetServices.lib	Fri Nov 19 21:54:02 2010 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/segundo/code/NetServices/#79049adc01ed
+http://mbed.org/users/segundo/code/NetServices/#5a6792c147c0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RPCInterface.lib	Fri Nov 19 21:54:02 2010 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/MichaelW/code/RPCInterface/#05f0d66bee57
--- a/main.cpp	Tue Nov 16 20:04:25 2010 +0000
+++ b/main.cpp	Fri Nov 19 21:54:02 2010 +0000
@@ -2,22 +2,49 @@
 #include "EthernetNetIf.h"
 #include "HTTPClient.h"
 #include "NTPClient.h"
+#include "HTTPServer.h"
+#include "RPCFunction.h"
 
-EthernetNetIf eth("mbedSE");
+#define HOSTNAME "mbedSE"
+
+EthernetNetIf eth(HOSTNAME);
 HTTPClient http;
 NTPClient ntp;
+HTTPServer svr;
+
+DigitalOut led1(LED1, "led1");
+DigitalOut led2(LED2, "led2");
+DigitalOut led3(LED3, "led3");
+DigitalOut led4(LED4, "led4");
+
+void DoEcho(char* input, char* output);
+RPCFunction Echo(&DoEcho, "echo");
+
+void DoEcho(char* input, char* output) {
+    printf("%s\n", input);
+    strcpy(output, input);
+}
 
 int main() {
 
-    printf("Setting up...\n");
-    EthernetErr ethErr = eth.setup();
-    if (ethErr) {
-        printf("Error %d in setup\n", ethErr);
-        return -1;
-    }
+    printf("\n\n/* NetServices tribute library demonstration */\n");
+    printf("Try starting the program with the network disconnected and then connect after a few timeouts reported\n\n");
+    EthernetErr ethErr;
+    do {
+        printf("Setting up...\n");
+        ethErr = eth.setup();
+        if (ethErr) printf("Timeout\n", ethErr);
+    } while (ethErr != ETH_OK);
+
+    printf("Connected OK\n");
+    const char* hwAddr = eth.getHwAddr();
+    printf("HW address : %02x:%02x:%02x:%02x:%02x:%02x\n",
+           hwAddr[0], hwAddr[1], hwAddr[2],
+           hwAddr[3], hwAddr[4], hwAddr[5]);
 
     IpAddr ethIp = eth.getIp();
-    printf("Connected ok, IP : %d.%d.%d.%d\n", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);
+    printf("IP address : %d.%d.%d.%d\n", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);
+    printf("Check router DHCP table for name : %s\n", HOSTNAME);
 
     printf("\nHTTPClient get...\n");
     HTTPText txt;
@@ -38,6 +65,31 @@
     ctTime = time(NULL);
     printf("\nTime is now (UTC): %d %s\n", ctTime, ctime(&ctTime));
 
-    printf("Done!\n");
-    return 0;
+    printf("NTP setTime to a deliberately incorrect server...\n");
+    server.setName("www.google.com");
+    printf("Result : %d\n", ntp.setTime(server));
+
+    ctTime = time(NULL);
+    printf("\nTime should still be correct (UTC): %d %s\n", ctTime, ctime(&ctTime));
+    
+    char ip[16];
+    sprintf(ip, "%d.%d.%d.%d", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);
+    
+#define PORT 80
+    svr.addHandler<RPCHandler>("/rpc");
+    svr.bind(PORT);
+    printf("Server listening (port %d)\n", PORT);
+    printf("- LED1 should flash\n");
+    printf("- type into browser to test url decode : %s/rpc/echo/run \"quoted string with <>\"\n", ip);
+
+    Timer tm;
+    tm.start();
+
+    while (true) {
+        Net::poll();
+        if (tm.read() > 0.5) {
+            led1 = !led1;
+            tm.start();
+        }
+    }
 }
\ No newline at end of file