HTTP RPC Server mit vordefinierten Objekten

Dependencies:   EthernetInterface HttpServer Servo mbed-rtos mbed

Fork of RPCHTTPServerVariable by th.iotkit2.ch

Mittels RPCVariable lassen sich lokale Variablen setzen. Diese Variablen können gesetzt write oder gelesen read werden.

Mittels Ticker u.ä. Varianten lassen sich damit auch Objektwerte setzen, welche von RPC nicht unterstützt werden, z.B. Servo's.

Client

Wert setzen: http://<IP-Adresse mbed>/rpc/servo2/write+0.5

Committer:
yueee_yt
Date:
Thu Feb 20 13:12:46 2014 +0000
Revision:
3:5758cfefe980
Parent:
0:050a5d4ffd55
Child:
4:155c6ff99458
FileSytem and RPC Success

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yueee_yt 0:050a5d4ffd55 1 //#define DNS_SERVER_ADDRESS(ipaddr) (ip4_addr_set_u32(ipaddr, ipaddr_addr("208.67.222.222"))) /* resolver1.opendns.com */
yueee_yt 0:050a5d4ffd55 2 #define __DEBUG
yueee_yt 0:050a5d4ffd55 3 #include "mbed.h"
yueee_yt 0:050a5d4ffd55 4 #include "rtos.h"
yueee_yt 0:050a5d4ffd55 5 #include "EthernetInterface.h"
yueee_yt 0:050a5d4ffd55 6 #include "HTTPServer.h"
yueee_yt 3:5758cfefe980 7 #include "mbed_rpc.h"
yueee_yt 0:050a5d4ffd55 8
yueee_yt 0:050a5d4ffd55 9 EthernetInterface eth;
yueee_yt 3:5758cfefe980 10
yueee_yt 3:5758cfefe980 11 DigitalOut led4(LED4);
yueee_yt 3:5758cfefe980 12
yueee_yt 3:5758cfefe980 13 LocalFileSystem local("local");
yueee_yt 0:050a5d4ffd55 14
yueee_yt 0:050a5d4ffd55 15 void aliveState(void const *args) {
yueee_yt 0:050a5d4ffd55 16 while (true) {
yueee_yt 3:5758cfefe980 17 led4 = !led4;
yueee_yt 0:050a5d4ffd55 18 Thread::wait(1000);
yueee_yt 0:050a5d4ffd55 19 }
yueee_yt 0:050a5d4ffd55 20 }
yueee_yt 0:050a5d4ffd55 21
yueee_yt 0:050a5d4ffd55 22 int main()
yueee_yt 0:050a5d4ffd55 23 {
yueee_yt 0:050a5d4ffd55 24 printf("********* PROGRAM START ***********\r\n");
yueee_yt 0:050a5d4ffd55 25 Thread thread(aliveState);
yueee_yt 3:5758cfefe980 26 RPC::add_rpc_class<RpcDigitalOut>();
yueee_yt 3:5758cfefe980 27 RPC::construct<RpcDigitalOut, PinName, const char*>(LED1, "led1"); // mbed LED
yueee_yt 3:5758cfefe980 28 RPC::construct<RpcDigitalOut, PinName, const char*>(LED2, "led2");
yueee_yt 3:5758cfefe980 29 RPC::construct<RpcDigitalOut, PinName, const char*>(LED3, "led3");
yueee_yt 3:5758cfefe980 30
yueee_yt 0:050a5d4ffd55 31 printf("EthernetInterface Setting up...\r\n");
yueee_yt 0:050a5d4ffd55 32 if(eth.init()!=0) { //for DHCP Server
yueee_yt 0:050a5d4ffd55 33 //if(eth.init(IPAddress,NetMasks,Gateway)!=0) { //for Static IP Address
yueee_yt 0:050a5d4ffd55 34 printf("EthernetInterface Initialize Error \r\n");
yueee_yt 0:050a5d4ffd55 35 return -1;
yueee_yt 0:050a5d4ffd55 36 }
yueee_yt 0:050a5d4ffd55 37 if(eth.connect()!=0) {
yueee_yt 0:050a5d4ffd55 38 printf("EthernetInterface Connect Error \r\n");
yueee_yt 0:050a5d4ffd55 39 return -1;
yueee_yt 0:050a5d4ffd55 40 }
yueee_yt 0:050a5d4ffd55 41 printf("IP Address is %s\r\n", eth.getIPAddress());
yueee_yt 0:050a5d4ffd55 42 printf("NetMask is %s\r\n", eth.getNetworkMask());
yueee_yt 0:050a5d4ffd55 43 printf("Gateway Address is %s\r\n", eth.getGateway());
yueee_yt 0:050a5d4ffd55 44 printf("Ethernet Setup OK\r\n");
yueee_yt 0:050a5d4ffd55 45
yueee_yt 3:5758cfefe980 46 HTTPServerAddHandler<SimpleHandler>("/hello"); //Default handler
yueee_yt 3:5758cfefe980 47 FSHandler::mount("/local", "/");
yueee_yt 3:5758cfefe980 48 HTTPServerAddHandler<FSHandler>("/");
yueee_yt 3:5758cfefe980 49 HTTPServerAddHandler<RPCHandler>("/rpc");
yueee_yt 3:5758cfefe980 50
yueee_yt 0:050a5d4ffd55 51 HTTPServerStart(80);
yueee_yt 0:050a5d4ffd55 52 }
yueee_yt 0:050a5d4ffd55 53