by Rob Toulson and Tim Wilmshurst from textbook "Fast and Effective Embedded Systems Design: Applying the ARM mbed"

Dependencies:   mbed

main.cpp

Committer:
robt
Date:
2013-06-16
Revision:
0:9206091eda82

File content as of revision 0:9206091eda82:

/* Program Example 12.12 Using RPC variables for remote mbed control
                                                                        */
#include "mbed.h"
#include "EthernetNetIf.h"
#include "HTTPServer.h"
#include "RPCVariable.h"
#include "SerialRPCInterface.h"
LocalFileSystem fs("webfs");
EthernetNetIf eth(
    IpAddr(192,168,0,101),//IP Address
    IpAddr(255,255,255,0),//Network Mask
    IpAddr(192,168,0,1),  //Gateway
    IpAddr(192,168,0,1)   //DNS
);
HTTPServer svr;
DigitalOut Led1(LED1);              // define mbed object
DigitalIn Button1(p21);             // button
int RemoteLEDStatus=0;
RPCVariable<int> RPC_RemoteLEDStatus(&RemoteLEDStatus,"RemoteLEDStatus");
int RemoteLED1Button=0;
RPCVariable<int> RPC_RemoteLED1Button(&RemoteLED1Button,"RemoteLED1Button");
int main() {
    Base::add_rpc_class<DigitalOut>();        // RPC base command
    eth.setup();                              // Ethernet setup
    FSHandler::mount("/webfs", "/");   // Mount /webfs path root path
    svr.addHandler<FSHandler>("/"); //Default handler
    svr.addHandler<RPCHandler>("/rpc");       // Define RPC handler
    svr.bind(80);
    printf("Listening...\n");
    while (true) {
        Net::poll();
        if ((Button1==1)|(RemoteLED1Button==1)) {
            Led1=1;
            RemoteLEDStatus=1;
        } else {
            Led1=0;
            RemoteLEDStatus=0;
        }
    }
}