bio robot
Dependencies: MPU6050-DMP QEI_hw mbed-rpc mbed
Fork of MPU6050_Example by
Diff: Comm/Comm.cpp
- Revision:
- 5:c3d671959ef3
- Parent:
- 4:ebb882658c50
- Child:
- 6:12b6be801ad8
diff -r ebb882658c50 -r c3d671959ef3 Comm/Comm.cpp --- a/Comm/Comm.cpp Thu Dec 03 03:14:00 2015 +0000 +++ b/Comm/Comm.cpp Thu Dec 03 04:52:45 2015 +0000 @@ -1,5 +1,4 @@ #include "Comm.h" -#include "mbed_rpc.h" Comm::Comm(CommDelegate *gains, CommDelegate *target, CommDelegate *myMPU6050_1):_pc(USBTX, USBRX), _json(&_pc) @@ -10,11 +9,11 @@ _myMPU6050_1 = myMPU6050_1; } -void Comm::openGripper1(){ +void Comm::openGripper1(Arguments* input, Reply* output){ printGripper1State(true); } -void Comm::closeGripper1(){ +void Comm::closeGripper1(Arguments* input, Reply* output){ printGripper1State(false); } @@ -25,11 +24,11 @@ _json.close(); } -void Comm::openGripper2(){ +void Comm::openGripper2(Arguments* input, Reply* output){ printGripper2State(true); } -void Comm::closeGripper2(){ +void Comm::closeGripper2(Arguments* input, Reply* output){ printGripper2State(false); } @@ -40,8 +39,17 @@ _json.close(); } -void Comm::setGains(float k1, float d1, float k2, float d2){ +void Comm::setGains(Arguments* input, Reply* output){ + if (input->argc < _gains->numGains()){ + throwNotEnoughArgsError(); + return; + } + float k1 = input->getArg<float>(); + float d1 = input->getArg<float>(); + float k2 = input->getArg<float>(); + float d2 = input->getArg<float>(); _gains->setGains(k1, d1, k2, d2); + printGains(); } void Comm::printGains(){ @@ -56,8 +64,14 @@ _json.close(); } -void Comm::setTarget(int targetPosition){ +void Comm::setTarget(Arguments* input, Reply* output){ + if (input->argc < 1){ + throwNotEnoughArgsError(); + return; + } + int targetPosition = input->getArg<int>(); _target->setPosition(targetPosition); + printTarget(); } void Comm::printTarget(){ @@ -75,8 +89,15 @@ } void Comm::check(){ + if(!_pc.readable()) return; _pc.gets(buf, 256); //Call the static call method on the RPC class RPC::call(buf, outbuf); - _pc.printf("%s\n", outbuf); +// _pc.printf("%s\n", outbuf); } + +void Comm::throwNotEnoughArgsError(){ + _json.open(); + _json.print("error", "not enough input arguments"); + _json.close(); +}