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:33:43 2015 +0000
Revision:
4:a1b6651dd2ae
Parent:
3:6cfcccfe3995
Child:
5:5322cbfd7c01
Changed to use LED1.

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 4:a1b6651dd2ae 27 RpcDigitalOut led1(LED1,"led1");
sarahmarshy 2:33d3bcad6a90 28
sarahmarshy 2:33d3bcad6a90 29
sarahmarshy 2:33d3bcad6a90 30 EthernetInterface eth;
sarahmarshy 2:33d3bcad6a90 31 HTTPServer svr;
sarahmarshy 2:33d3bcad6a90 32
sarahmarshy 2:33d3bcad6a90 33 int main() {
sarahmarshy 4:a1b6651dd2ae 34 //Turn the LED off
sarahmarshy 4:a1b6651dd2ae 35 led1.write(1)
sarahmarshy 2:33d3bcad6a90 36
sarahmarshy 2:33d3bcad6a90 37 RPC::add_rpc_class<RpcDigitalOut>();
sarahmarshy 2:33d3bcad6a90 38
sarahmarshy 2:33d3bcad6a90 39 printf("Setting up...\n");
sarahmarshy 2:33d3bcad6a90 40 eth.init();
sarahmarshy 2:33d3bcad6a90 41 int ethErr = eth.connect();
sarahmarshy 2:33d3bcad6a90 42 if(ethErr < 0)
sarahmarshy 2:33d3bcad6a90 43 {
sarahmarshy 2:33d3bcad6a90 44 printf("Error %d in setup.\n", ethErr);
sarahmarshy 2:33d3bcad6a90 45 return -1;
sarahmarshy 2:33d3bcad6a90 46 }
sarahmarshy 2:33d3bcad6a90 47
sarahmarshy 2:33d3bcad6a90 48 svr.addHandler<HTTPRpcRequestHandler>("/rpc");
sarahmarshy 2:33d3bcad6a90 49
sarahmarshy 2:33d3bcad6a90 50 //attach server to port 80
sarahmarshy 2:33d3bcad6a90 51 svr.start(80, &eth);
sarahmarshy 2:33d3bcad6a90 52
sarahmarshy 2:33d3bcad6a90 53 printf("Listening...\n");
sarahmarshy 2:33d3bcad6a90 54
sarahmarshy 2:33d3bcad6a90 55 Timer tm;
sarahmarshy 2:33d3bcad6a90 56 tm.start();
sarahmarshy 2:33d3bcad6a90 57 //Listen indefinitely
sarahmarshy 2:33d3bcad6a90 58 while(true)
sarahmarshy 2:33d3bcad6a90 59 {
sarahmarshy 2:33d3bcad6a90 60 svr.poll();
sarahmarshy 2:33d3bcad6a90 61 if(tm.read()>.5)
sarahmarshy 2:33d3bcad6a90 62 {
sarahmarshy 2:33d3bcad6a90 63 tm.start();
sarahmarshy 2:33d3bcad6a90 64 }
sarahmarshy 2:33d3bcad6a90 65 }
sarahmarshy 2:33d3bcad6a90 66
sarahmarshy 2:33d3bcad6a90 67 }