bio robot

Dependencies:   MPU6050-DMP QEI_hw mbed-rpc mbed

Fork of MPU6050_Example by Shundo Kishi

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();
+}