Committer:
mbed714
Date:
Sun Mar 06 20:34:30 2011 +0000
Revision:
0:ccb3da95ae98

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed714 0:ccb3da95ae98 1 #include "mbed.h"
mbed714 0:ccb3da95ae98 2 #include "EthernetNetIf.h"
mbed714 0:ccb3da95ae98 3 #include "HTTPClient.h"
mbed714 0:ccb3da95ae98 4 #include "NTPClient.h"
mbed714 0:ccb3da95ae98 5 #include "HTTPServer.h"
mbed714 0:ccb3da95ae98 6 #include "RPCFunction.h"
mbed714 0:ccb3da95ae98 7
mbed714 0:ccb3da95ae98 8 #include "AvailableMemory.h"
mbed714 0:ccb3da95ae98 9
mbed714 0:ccb3da95ae98 10 #define HOSTNAME "mbedSE"
mbed714 0:ccb3da95ae98 11
mbed714 0:ccb3da95ae98 12 EthernetNetIf eth(HOSTNAME);
mbed714 0:ccb3da95ae98 13 HTTPClient http;
mbed714 0:ccb3da95ae98 14 NTPClient ntp;
mbed714 0:ccb3da95ae98 15 HTTPServer svr;
mbed714 0:ccb3da95ae98 16
mbed714 0:ccb3da95ae98 17 DigitalOut led1(LED1, "led1");
mbed714 0:ccb3da95ae98 18 DigitalOut led2(LED2, "led2");
mbed714 0:ccb3da95ae98 19 DigitalOut led3(LED3, "led3");
mbed714 0:ccb3da95ae98 20 DigitalOut led4(LED4, "led4");
mbed714 0:ccb3da95ae98 21
mbed714 0:ccb3da95ae98 22 void DoEcho(char* input, char* output);
mbed714 0:ccb3da95ae98 23 RPCFunction Echo(&DoEcho, "echo");
mbed714 0:ccb3da95ae98 24
mbed714 0:ccb3da95ae98 25 void DoEcho(char* input, char* output) {
mbed714 0:ccb3da95ae98 26 printf("%s\n", input);
mbed714 0:ccb3da95ae98 27 strcpy(output, input);
mbed714 0:ccb3da95ae98 28 }
mbed714 0:ccb3da95ae98 29
mbed714 0:ccb3da95ae98 30 int main() {
mbed714 0:ccb3da95ae98 31
mbed714 0:ccb3da95ae98 32 printf("\n\n/* Segundo Equipo NetServices library demonstration */\n");
mbed714 0:ccb3da95ae98 33 printf("Try starting the program with the network disconnected and then connect after a few timeouts reported\n\n");
mbed714 0:ccb3da95ae98 34 EthernetErr ethErr;
mbed714 0:ccb3da95ae98 35 int count = 0;
mbed714 0:ccb3da95ae98 36 do {
mbed714 0:ccb3da95ae98 37 printf("Setting up %d...\n", ++count);
mbed714 0:ccb3da95ae98 38 ethErr = eth.setup();
mbed714 0:ccb3da95ae98 39 if (ethErr) printf("Timeout\n", ethErr);
mbed714 0:ccb3da95ae98 40 } while (ethErr != ETH_OK);
mbed714 0:ccb3da95ae98 41
mbed714 0:ccb3da95ae98 42 printf("Connected OK\n");
mbed714 0:ccb3da95ae98 43 const char* hwAddr = eth.getHwAddr();
mbed714 0:ccb3da95ae98 44 printf("HW address : %02x:%02x:%02x:%02x:%02x:%02x\n",
mbed714 0:ccb3da95ae98 45 hwAddr[0], hwAddr[1], hwAddr[2],
mbed714 0:ccb3da95ae98 46 hwAddr[3], hwAddr[4], hwAddr[5]);
mbed714 0:ccb3da95ae98 47
mbed714 0:ccb3da95ae98 48 IpAddr ethIp = eth.getIp();
mbed714 0:ccb3da95ae98 49 printf("IP address : %d.%d.%d.%d\n", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);
mbed714 0:ccb3da95ae98 50 printf("Check router DHCP table for name : %s\n", eth.getHostname());
mbed714 0:ccb3da95ae98 51
mbed714 0:ccb3da95ae98 52 printf("\nHTTPClient get...\n");
mbed714 0:ccb3da95ae98 53 HTTPText txt;
mbed714 0:ccb3da95ae98 54 HTTPResult r = http.get("http://mbed.org/media/uploads/donatien/hello.txt", &txt);
mbed714 0:ccb3da95ae98 55 if (r==HTTP_OK) {
mbed714 0:ccb3da95ae98 56 printf("Result ok : %s\n", txt.gets());
mbed714 0:ccb3da95ae98 57 } else {
mbed714 0:ccb3da95ae98 58 printf("Error %d\n", r);
mbed714 0:ccb3da95ae98 59 }
mbed714 0:ccb3da95ae98 60
mbed714 0:ccb3da95ae98 61 time_t ctTime;
mbed714 0:ccb3da95ae98 62 ctTime = time(NULL);
mbed714 0:ccb3da95ae98 63 printf("\nCurrent time is (UTC): %d %s\n", ctTime, ctime(&ctTime));
mbed714 0:ccb3da95ae98 64 printf("NTP setTime...\n");
mbed714 0:ccb3da95ae98 65 Host server(IpAddr(), 123, "pool.ntp.org");
mbed714 0:ccb3da95ae98 66 printf("Result : %d\n", ntp.setTime(server));
mbed714 0:ccb3da95ae98 67
mbed714 0:ccb3da95ae98 68 ctTime = time(NULL);
mbed714 0:ccb3da95ae98 69 printf("\nTime is now (UTC): %d %s\n", ctTime, ctime(&ctTime));
mbed714 0:ccb3da95ae98 70
mbed714 0:ccb3da95ae98 71 printf("NTP setTime to a deliberately incorrect server...\n");
mbed714 0:ccb3da95ae98 72 server.setName("www.google.com");
mbed714 0:ccb3da95ae98 73 printf("Result : %d\n", ntp.setTime(server));
mbed714 0:ccb3da95ae98 74
mbed714 0:ccb3da95ae98 75 ctTime = time(NULL);
mbed714 0:ccb3da95ae98 76 printf("\nTime should still be correct (UTC): %d %s\n", ctTime, ctime(&ctTime));
mbed714 0:ccb3da95ae98 77
mbed714 0:ccb3da95ae98 78 char ip[16];
mbed714 0:ccb3da95ae98 79 sprintf(ip, "%d.%d.%d.%d", ethIp[0], ethIp[1], ethIp[2], ethIp[3]);
mbed714 0:ccb3da95ae98 80
mbed714 0:ccb3da95ae98 81 #define PORT 80
mbed714 0:ccb3da95ae98 82 svr.addHandler<RPCHandler>("/rpc");
mbed714 0:ccb3da95ae98 83 svr.bind(PORT);
mbed714 0:ccb3da95ae98 84 printf("Server listening (port %d)\n", PORT);
mbed714 0:ccb3da95ae98 85 printf("- LED1 should flash\n");
mbed714 0:ccb3da95ae98 86 printf("- type into browser to test url decode : %s/rpc/echo/run \"quoted string with <>\" or http://192.168.1.103/rpc/echo/run%%20%%22quoted%%20string%%20with%%20%%3C%%3E%%22\n", ip);
mbed714 0:ccb3da95ae98 87
mbed714 0:ccb3da95ae98 88 printf("Available memory (exact bytes) : %d\n", AvailableMemory(1));
mbed714 0:ccb3da95ae98 89
mbed714 0:ccb3da95ae98 90 Timer tm;
mbed714 0:ccb3da95ae98 91 tm.start();
mbed714 0:ccb3da95ae98 92
mbed714 0:ccb3da95ae98 93 while (true) {
mbed714 0:ccb3da95ae98 94 Net::poll();
mbed714 0:ccb3da95ae98 95 if (tm.read() > 0.5) {
mbed714 0:ccb3da95ae98 96 led1 = !led1;
mbed714 0:ccb3da95ae98 97 tm.start();
mbed714 0:ccb3da95ae98 98 }
mbed714 0:ccb3da95ae98 99 }
mbed714 0:ccb3da95ae98 100 }