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