RPC over HTTP example.

Dependencies:   EthernetInterface HTTPServer mbed-rpc mbed-rtos mbed

Fork of RPC_HTTP by Michael Walker

This is a working example of using RPC over HTTP. This uses an ethernet connection. The program attaches an RPC handler to LED1. You can use a client program to send commands to this LED, addressing it as "led1".

Committer:
sarahmarshy
Date:
Mon Jun 15 16:29:24 2015 +0000
Revision:
2:33d3bcad6a90
Child:
3:6cfcccfe3995
Working example of RPC over HTTP.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sarahmarshy 2:33d3bcad6a90 1 /*
sarahmarshy 2:33d3bcad6a90 2 Copyright (c) 2010 ARM Ltd
sarahmarshy 2:33d3bcad6a90 3
sarahmarshy 2:33d3bcad6a90 4 Permission is hereby granted, free of charge, to any person obtaining a copy
sarahmarshy 2:33d3bcad6a90 5 of this software and associated documentation files (the "Software"), to deal
sarahmarshy 2:33d3bcad6a90 6 in the Software without restriction, including without limitation the rights
sarahmarshy 2:33d3bcad6a90 7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
sarahmarshy 2:33d3bcad6a90 8 copies of the Software, and to permit persons to whom the Software is
sarahmarshy 2:33d3bcad6a90 9 furnished to do so, subject to the following conditions:
sarahmarshy 2:33d3bcad6a90 10
sarahmarshy 2:33d3bcad6a90 11 The above copyright notice and this permission notice shall be included in
sarahmarshy 2:33d3bcad6a90 12 all copies or substantial portions of the Software.
sarahmarshy 2:33d3bcad6a90 13
sarahmarshy 2:33d3bcad6a90 14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
sarahmarshy 2:33d3bcad6a90 15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
sarahmarshy 2:33d3bcad6a90 16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
sarahmarshy 2:33d3bcad6a90 17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
sarahmarshy 2:33d3bcad6a90 18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
sarahmarshy 2:33d3bcad6a90 19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
sarahmarshy 2:33d3bcad6a90 20 THE SOFTWARE.
sarahmarshy 2:33d3bcad6a90 21 */
sarahmarshy 2:33d3bcad6a90 22 #include "mbed.h"
sarahmarshy 2:33d3bcad6a90 23 #include "EthernetInterface.h"
sarahmarshy 2:33d3bcad6a90 24 #include "HTTPServer.h"
sarahmarshy 2:33d3bcad6a90 25 #include "mbed_rpc.h"
sarahmarshy 2:33d3bcad6a90 26
sarahmarshy 2:33d3bcad6a90 27 DigitalOut led1(LED1);
sarahmarshy 2:33d3bcad6a90 28 RpcDigitalOut led2(LED2,"led2");
sarahmarshy 2:33d3bcad6a90 29 RpcDigitalOut led3(LED3,"led3");
sarahmarshy 2:33d3bcad6a90 30 RpcDigitalOut led4(LED4, "led4");
sarahmarshy 2:33d3bcad6a90 31
sarahmarshy 2:33d3bcad6a90 32
sarahmarshy 2:33d3bcad6a90 33 EthernetInterface eth;
sarahmarshy 2:33d3bcad6a90 34 HTTPServer svr;
sarahmarshy 2:33d3bcad6a90 35
sarahmarshy 2:33d3bcad6a90 36 int main() {
sarahmarshy 2:33d3bcad6a90 37 //Turn the LEDs off
sarahmarshy 2:33d3bcad6a90 38 led1.write(1);
sarahmarshy 2:33d3bcad6a90 39 led2.write(1);
sarahmarshy 2:33d3bcad6a90 40 led3.write(1);
sarahmarshy 2:33d3bcad6a90 41 led4.write(1);
sarahmarshy 2:33d3bcad6a90 42
sarahmarshy 2:33d3bcad6a90 43 RPC::add_rpc_class<RpcDigitalOut>();
sarahmarshy 2:33d3bcad6a90 44
sarahmarshy 2:33d3bcad6a90 45 printf("Setting up...\n");
sarahmarshy 2:33d3bcad6a90 46 eth.init();
sarahmarshy 2:33d3bcad6a90 47 int ethErr = eth.connect();
sarahmarshy 2:33d3bcad6a90 48 if(ethErr < 0)
sarahmarshy 2:33d3bcad6a90 49 {
sarahmarshy 2:33d3bcad6a90 50 printf("Error %d in setup.\n", ethErr);
sarahmarshy 2:33d3bcad6a90 51 return -1;
sarahmarshy 2:33d3bcad6a90 52 }
sarahmarshy 2:33d3bcad6a90 53
sarahmarshy 2:33d3bcad6a90 54 svr.addHandler<HTTPRpcRequestHandler>("/rpc");
sarahmarshy 2:33d3bcad6a90 55
sarahmarshy 2:33d3bcad6a90 56 //attach server to port 80
sarahmarshy 2:33d3bcad6a90 57 svr.start(80, &eth);
sarahmarshy 2:33d3bcad6a90 58
sarahmarshy 2:33d3bcad6a90 59 printf("Listening...\n");
sarahmarshy 2:33d3bcad6a90 60
sarahmarshy 2:33d3bcad6a90 61 Timer tm;
sarahmarshy 2:33d3bcad6a90 62 tm.start();
sarahmarshy 2:33d3bcad6a90 63 //Listen indefinitely
sarahmarshy 2:33d3bcad6a90 64 while(true)
sarahmarshy 2:33d3bcad6a90 65 {
sarahmarshy 2:33d3bcad6a90 66 svr.poll();
sarahmarshy 2:33d3bcad6a90 67 if(tm.read()>.5)
sarahmarshy 2:33d3bcad6a90 68 {
sarahmarshy 2:33d3bcad6a90 69 //led1=!led1; //Show that we are alive
sarahmarshy 2:33d3bcad6a90 70 tm.start();
sarahmarshy 2:33d3bcad6a90 71 }
sarahmarshy 2:33d3bcad6a90 72 }
sarahmarshy 2:33d3bcad6a90 73
sarahmarshy 2:33d3bcad6a90 74 }