Revision:
1:d0f6e726b244
Parent:
0:a6113b3c872b
Child:
2:0a3c369d0076
--- a/Serializer.cpp	Thu Nov 25 00:10:20 2010 +0000
+++ b/Serializer.cpp	Fri Nov 26 21:00:50 2010 +0000
@@ -1,114 +1,98 @@
-#include "Serializer.h"
-
-Serial pc(USBTX,USBRX);
-
-Serializer::Serializer() {
-    serial=new Serial(p28,p27);
-    wait(2);
-
-    isBusy=0;
-    serial->attach(this, &Serializer::InterruptHandler);
-}
-
-Serializer::~Serializer() {
-    delete serial;
-}
-
-void Serializer::Reset() {
-//    if (serial->writeable())
-//        serial->printf("reset\r");
-}
-int Serializer::IsBusy() {
-    if (serial->writeable())
-        serial->printf("pids\r");
-    return isBusy;
-
-}
-void Serializer::Stop() {
-    if (serial->writeable())
-        serial->printf("stop\r");
-}
-
-int Serializer::GetCountLeft() {
-    return 0;
-}
-int Serializer::GetCountRight() {
-    return 0;
-}
-
-void Serializer::ClearCountLeft() {
-    if (serial->writeable())
-        serial->printf("clrenc 1\r");
-}
-void Serializer::ClearCountRight() {
-    if (serial->writeable())
-        serial->printf("clrenc 2\r");
-}
-
-void Serializer::ClearCount() {
-    if (serial->writeable())
-        serial->printf("clrenc 1 2\r");
-}
-
-void Serializer::SetSpeedLeft(int speed) {
-    if (serial->writeable())
-        serial->printf("mogo 1:%i\r", -speed);
-}
-void Serializer::SetSpeedRight(int speed) {
-    if (serial->writeable())
-        serial->printf("mogo 2:%i\r", -speed);
-}
-void Serializer::SetSpeed(int speed) {
-    if (serial->writeable())
-        serial->printf("mogo 1:%i 2:%i\r", -speed, -speed);
-}
-
-void Serializer::SetVPID(int a,int b,int c,int d) {
-}
-void Serializer::SetDPID(int a,int b,int,int) {
-}
-
-void Serializer::DiGoLeft(int dist,int speed) {
-    if (serial->writeable())
-        serial->printf("digo 1:%i:%i\r",-dist, speed);
-}
-void Serializer::DiGoRight(int dist,int speed) {
-    if (serial->writeable())
-        serial->printf("digo 2:%i:%i\r",-dist, speed);
-}
-void Serializer::DiGo(int dist,int speed) {
-    if (serial->writeable())
-        serial->printf("digo 1:%i:%i 2:%i:%i\r",-dist, speed, -dist, speed);
-}
-
-
-void Serializer::InterruptHandler() {
-    serial->getc();
- /*   pc.putc(serial->getc());
-        isBusy=1;
-        int isReady=0;
-        int len=0;
-        while (serial->readable()) {
-            rxBuffer[len++]=serial->getc();
-            if (len>96)break;
-        }
-        for (int i=0;i<len;i++) {
-            if ((rxBuffer[i]=='A')&&(rxBuffer[i+1]=='C')&&(rxBuffer[i+2]=='K')) {
-                if (i&&(rxBuffer[i-1]=='N'))
-                    response=NEGATIVE;
-                else
-                    response=WILCO;
-                continue;
-            }
-            if (rxBuffer[i]=='>'){
-                isReady=1;
-                break;
-            }
-
-        }
-
-
-        isBusy=0;
-        return;
-     */
-}
+#include "Serializer.h"
+
+Serial pc(USBTX,USBRX);
+
+Serializer::Serializer() {
+    serial=new Serial(p28,p27);
+    wait(2);
+}
+
+Serializer::~Serializer() {
+    delete serial;
+}
+
+void Serializer::Stop() {
+    if (serial->writeable())
+        serial->printf("stop\r");
+}
+
+void Serializer::ClearCountLeft() {
+    if (serial->writeable())
+        serial->printf("clrenc 1\r");
+}
+void Serializer::ClearCountRight() {
+    if (serial->writeable())
+        serial->printf("clrenc 2\r");
+}
+
+void Serializer::ClearCount() {
+    if (serial->writeable())
+        serial->printf("clrenc 1 2\r");
+}
+
+void Serializer::SetSpeedLeft(int speed) {
+    if (serial->writeable())
+        serial->printf("mogo 1:%i\r", -speed);
+}
+void Serializer::SetSpeedRight(int speed) {
+    if (serial->writeable())
+        serial->printf("mogo 2:%i\r", -speed);
+}
+void Serializer::SetSpeed(int speed) {
+    if (serial->writeable())
+        serial->printf("mogo 1:%i 2:%i\r", -speed, -speed);
+}
+
+void Serializer::SetVPID(int p,int i,int d,int l) {
+    if (serial->writeable())
+        serial->printf("vpid %i:%i:%i:%i\r", p,i,d,l);
+}
+
+void Serializer::SetDPID(int p,int i,int d,int a) {
+    if (serial->writeable())
+        serial->printf("dpid %i:%i:%i:%i\r", p,i,d,a);
+}
+
+void Serializer::DiGoLeft(int dist,int speed) {
+    if (serial->writeable())
+        serial->printf("digo 1:%i:%i\r",-dist, speed);
+}
+void Serializer::DiGoRight(int dist,int speed) {
+    if (serial->writeable())
+        serial->printf("digo 2:%i:%i\r",-dist, speed);
+}
+void Serializer::DiGo(int dist,int speed) {
+    if (serial->writeable())
+        serial->printf("digo 1:%i:%i 2:%i:%i\r",-dist, speed, -dist, speed);
+}
+
+
+
+//unused and untested
+int Serializer::GetReply() {
+    int returnValue=0;
+    char c=0;
+    char readyToReturn=0;
+    char ack=0;
+    char nack=0;
+    wait(0.0001);
+    while (serial->readable()) {
+        c=serial->getc();
+        if(readyToReturn)continue;
+        if (c=='N'&&nack==0)nack=1;
+        else nack=0;
+        if (c=='A'&&ack==0)ack++;
+        else ack=nack=0;
+        if (c=='C'&&ack==1)ack++;
+        else ack=nack=0;
+        if (c=='K'&&ack==2)ack++;
+        else ack=nack=0;
+        if (ack==3)
+            if (nack==1)
+                returnValue=1;
+            else
+                returnValue=0;
+        if(c=='>')readyToReturn=1;
+    }
+    return returnValue;
+}