Tutorial Code for working with RPC Functions

Dependencies:   RPCInterface mbed

Fork of RPC_Tutorial by Varun Nambiar

main.cpp

Committer:
nambvarun
Date:
2016-03-12
Revision:
1:50a40baa79bf
Parent:
0:74f2764b636b

File content as of revision 1:50a40baa79bf:

#include "mbed.h"
#include "mbed_rpc.h"

/**
 *  This example program has been updated to use the RPC implementation in the new mbed libraries.
 *  This example demonstrates using RPC over serial
 */

Serial pc(USBTX, USBRX);
void moveTo(Arguments *in, Reply *out);
RPCFunction rpcMove(&moveTo, "moveTo");
double xLoc, yLoc;

int main() {
    //The mbed RPC classes are now wrapped to create an RPC enabled version - see RpcClasses.h so don't add to base class
    
    // receive commands, and send back the responses
    char buf[256], outbuf[256];
    while(1) {
        pc.gets(buf, 256);
        //Call the static call method on the RPC class
        RPC::call(buf, outbuf); 
        pc.printf("%s\n", outbuf);
    }
}

// Make sure the method takes in Arguments and Reply objects.
void moveTo (Arguments *in, Reply *out)   {
    bool success = true;
    
    // In this scenario, when using RPC delimit the two arguments with a space.
    xLoc = in->getArg<double>();
    yLoc = in->getArg<double>();
 
    // Have code here to move robot to location (xLoc, yLoc) and update success.

    char buffer[200];
    sprintf(buffer, "Successfully moved to location (%f, %f)", xLoc, yLoc);
    if (success) {
        out->putData(buffer);
    } else {
        out->putData("Failed to move to location.");
    }
}