A slight Alteration to Donatien's HTTP Server Example so that it registers all the classes with RPC support to demonstrate RPC over HTTP

Dependencies:   EthernetNetIf mbed HTTPServer

Committer:
MichaelW
Date:
Thu Sep 09 13:43:49 2010 +0000
Revision:
0:e30eeef17180
Child:
1:71b64a776133

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MichaelW 0:e30eeef17180 1 #include "mbed.h"
MichaelW 0:e30eeef17180 2 #include "EthernetNetIf.h"
MichaelW 0:e30eeef17180 3 #include "HTTPServer.h"
MichaelW 0:e30eeef17180 4
MichaelW 0:e30eeef17180 5 DigitalOut led1(LED1, "led1");
MichaelW 0:e30eeef17180 6 DigitalOut led2(LED2, "led2");
MichaelW 0:e30eeef17180 7 DigitalOut led3(LED3, "led3");
MichaelW 0:e30eeef17180 8 DigitalOut led4(LED4, "led4");
MichaelW 0:e30eeef17180 9
MichaelW 0:e30eeef17180 10 LocalFileSystem fs("webfs");
MichaelW 0:e30eeef17180 11
MichaelW 0:e30eeef17180 12 EthernetNetIf eth;
MichaelW 0:e30eeef17180 13 HTTPServer svr;
MichaelW 0:e30eeef17180 14
MichaelW 0:e30eeef17180 15 int main() {
MichaelW 0:e30eeef17180 16 Base::add_rpc_class<AnalogIn>();
MichaelW 0:e30eeef17180 17 Base::add_rpc_class<AnalogOut>();
MichaelW 0:e30eeef17180 18 Base::add_rpc_class<DigitalIn>();
MichaelW 0:e30eeef17180 19 Base::add_rpc_class<DigitalOut>();
MichaelW 0:e30eeef17180 20 Base::add_rpc_class<DigitalInOut>();
MichaelW 0:e30eeef17180 21 Base::add_rpc_class<PwmOut>();
MichaelW 0:e30eeef17180 22 Base::add_rpc_class<Timer>();
MichaelW 0:e30eeef17180 23 Base::add_rpc_class<BusOut>();
MichaelW 0:e30eeef17180 24 Base::add_rpc_class<BusIn>();
MichaelW 0:e30eeef17180 25 Base::add_rpc_class<BusInOut>();
MichaelW 0:e30eeef17180 26 Base::add_rpc_class<Serial>();
MichaelW 0:e30eeef17180 27
MichaelW 0:e30eeef17180 28 printf("Setting up...\n");
MichaelW 0:e30eeef17180 29 EthernetErr ethErr = eth.setup();
MichaelW 0:e30eeef17180 30 if(ethErr)
MichaelW 0:e30eeef17180 31 {
MichaelW 0:e30eeef17180 32 printf("Error %d in setup.\n", ethErr);
MichaelW 0:e30eeef17180 33 return -1;
MichaelW 0:e30eeef17180 34 }
MichaelW 0:e30eeef17180 35 printf("Setup OK\n");
MichaelW 0:e30eeef17180 36
MichaelW 0:e30eeef17180 37 FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path
MichaelW 0:e30eeef17180 38 FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path
MichaelW 0:e30eeef17180 39
MichaelW 0:e30eeef17180 40 svr.addHandler<SimpleHandler>("/hello");
MichaelW 0:e30eeef17180 41 svr.addHandler<RPCHandler>("/rpc");
MichaelW 0:e30eeef17180 42 svr.addHandler<FSHandler>("/files");
MichaelW 0:e30eeef17180 43 svr.addHandler<FSHandler>("/"); //Default handler
MichaelW 0:e30eeef17180 44 //Example : Access to mbed.htm : http://a.b.c.d/mbed.htm or http://a.b.c.d/files/mbed.htm
MichaelW 0:e30eeef17180 45
MichaelW 0:e30eeef17180 46 svr.bind(80);
MichaelW 0:e30eeef17180 47
MichaelW 0:e30eeef17180 48 printf("Listening...\n");
MichaelW 0:e30eeef17180 49
MichaelW 0:e30eeef17180 50 Timer tm;
MichaelW 0:e30eeef17180 51 tm.start();
MichaelW 0:e30eeef17180 52 //Listen indefinitely
MichaelW 0:e30eeef17180 53 while(true)
MichaelW 0:e30eeef17180 54 {
MichaelW 0:e30eeef17180 55 Net::poll();
MichaelW 0:e30eeef17180 56 if(tm.read()>.5)
MichaelW 0:e30eeef17180 57 {
MichaelW 0:e30eeef17180 58 led1=!led1; //Show that we are alive
MichaelW 0:e30eeef17180 59 tm.start();
MichaelW 0:e30eeef17180 60 }
MichaelW 0:e30eeef17180 61 }
MichaelW 0:e30eeef17180 62
MichaelW 0:e30eeef17180 63 return 0;
MichaelW 0:e30eeef17180 64
MichaelW 0:e30eeef17180 65 }