Export for Dan

Dependencies:   mbed MODSERIAL1

Revision:
4:810c3971bb3e
Parent:
3:4039b6c8da2e
Child:
5:14a21c3812ed
--- a/main.cpp	Tue Oct 27 20:45:57 2015 +0000
+++ b/main.cpp	Thu Oct 29 20:18:49 2015 +0000
@@ -10,11 +10,11 @@
 DigitalOut led3(LED3);
 DigitalOut led4(LED4);
 
-MODSERIAL messageSystem(USBTX, USBRX);
+MODSERIAL messageSystem(p13, p14);
 
-char messageBufferIncoming[MESSAGE_BUFFER_SIZE];
+//char messageBufferIncoming[MESSAGE_BUFFER_SIZE];
 int hexBufferIncoming[MESSAGE_BUFFER_SIZE];
-char messageBufferOutgoing[MESSAGE_BUFFER_SIZE];
+unsigned char messageBufferOutgoing[MESSAGE_BUFFER_SIZE];
 int count = 0;
 int i = 0;
 bool messageReceived;
@@ -25,11 +25,11 @@
     MODSERIAL *sys = q->serial;
     
     //dereference rxGetLasChar() of sys object 
-    int c = sys->rxGetLastChar(); // Returns the last byte to pass through the RX interrupt handler.
+    unsigned int c = sys->rxGetLastChar(); // Returns the last byte to pass through the RX interrupt handler.
     
     //add char c to messageBufferIncoming
     if(i <=MESSAGE_BUFFER_SIZE){
-        messageBufferIncoming[i] = c;
+     //   messageBufferIncoming[i] = c;
         hexBufferIncoming[i] = c;
 
       // if (c == 0xAA) led4 = !led4;
@@ -40,75 +40,110 @@
         
     count++;
     if (count == 4){ //Need to be able to find the string anywhere in the buffer
-    //need to change to HEX.  When I change to Hex, I can just use '==' instead of strncmp
-        // led4 = !led4;
+         //led4 = !led4;
+         wait(.05);
 
-            if (hexBufferIncoming[0] == 0xAA){
+            if (hexBufferIncoming[0] == 0xAA){              //Start Calibration
+           // led1 = !led1;
                 if (hexBufferIncoming[1] == 0x55){
+             //       led2 = !led2;
                     if (hexBufferIncoming[2] == 0xFF){
+               //         led3 = !led3;
                         if (hexBufferIncoming[3] == 0x00){
                             led1 = !led1;
+                            //Add disable interrupt??
+                            messageSystem.printf("%c", messageBufferOutgoing[0]= 0xAB);              
+                            messageSystem.printf("%c", messageBufferOutgoing[1] = 0x54);
+                            messageSystem.printf("%c", messageBufferOutgoing[2] = 0xFF);
+                            messageSystem.printf("%c", messageBufferOutgoing[3] = 0x00);
+
                             }
                         }
                     }
                 }
             
-         else if (hexBufferIncoming[0] == 0xBB){
+         else if (hexBufferIncoming[0] == 0xBB){                //Stop Calibration
                 if (hexBufferIncoming[1] == 0x44){
                     if (hexBufferIncoming[2] == 0xFF){
                         if (hexBufferIncoming[3] == 0x00){
                             led2 = !led2;
+                            messageSystem.printf("%c", messageBufferOutgoing[0]= 0xBC);
+                            messageSystem.printf("%c", messageBufferOutgoing[1]= 0x43);
+                            messageSystem.printf("%c", messageBufferOutgoing[2]= 0xFF);
+                            messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00);
                             }
                         }
                     }
                 }
                 
-        else if (hexBufferIncoming[0] == 0xCC){
+        else if (hexBufferIncoming[0] == 0xCC){                //Get Calibration Value   Leave room for data bits          
                 if (hexBufferIncoming[1] == 0x33){
                     if (hexBufferIncoming[2] == 0xFF){
                         if (hexBufferIncoming[3] == 0x00){
                             led3 = !led3;
+                            messageSystem.printf("%c", messageBufferOutgoing[0]= 0xCD);
+                            messageSystem.printf("%c", messageBufferOutgoing[1]= 0x32);
+                            messageSystem.printf("%c", messageBufferOutgoing[2]= 0xFF);
+                            messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00);
                             }
                         }
                     }
                 }     
-        else if (hexBufferIncoming[0] == 0xDD){
+        else if (hexBufferIncoming[0] == 0xDD){                 //Get Dynamic Data  Leave room for data bits
                 if (hexBufferIncoming[1] == 0x22){
                     if (hexBufferIncoming[2] == 0xFF){
                         if (hexBufferIncoming[3] == 0x00){
                             led4 = !led4;
+                            messageSystem.printf("%c", messageBufferOutgoing[0]= 0xDE);
+                            messageSystem.printf("%c", messageBufferOutgoing[1]= 0x21);
+                            messageSystem.printf("%c", messageBufferOutgoing[2]= 0xFF);
+                            messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00);
                             }
                         }
                     }
                 }  
-        else if (hexBufferIncoming[0] == 0xDB){             //Get Heading
+        else if (hexBufferIncoming[0] == 0xDB){             //Get Heading //Add space for responses
                 if (hexBufferIncoming[1] == 0x24){
                     if (hexBufferIncoming[2] == 0xFF){
                         if (hexBufferIncoming[3] == 0x00){
                             led1 = !led1;
+                            messageSystem.printf("%c", messageBufferOutgoing[0]= 0xDC);
+                            messageSystem.printf("%c", messageBufferOutgoing[1]= 0x23);
+                            messageSystem.printf("%c", messageBufferOutgoing[2]= 0x00);
+                            messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00);
                             }
                         }
                     }
                 }    
-        else if (hexBufferIncoming[0] == 0xD9){             //Get Temperature
+        else if (hexBufferIncoming[0] == 0xD9){             //Get Temperature //Add space for response
                 if (hexBufferIncoming[1] == 0x26){
                     if (hexBufferIncoming[2] == 0xFF){
                         if (hexBufferIncoming[3] == 0x00){
                             led2 = !led2;
+                            messageSystem.printf("%c", messageBufferOutgoing[0]= 0xDA);
+                            messageSystem.printf("%c", messageBufferOutgoing[1]= 0x25);
+                            messageSystem.printf("%c", messageBufferOutgoing[2]= 0x00);
+                            messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00);
                             }
                         }
                     }
                 }     
-        else if (hexBufferIncoming[0] == 0xEE){             //Get Elapsed Time On
+        else if (hexBufferIncoming[0] == 0xEE){             //Get Elapsed Time On //Add space for response
                 if (hexBufferIncoming[1] == 0x11){
                     if (hexBufferIncoming[2] == 0x00){
                         if (hexBufferIncoming[3] == 0x01){
                             led3 = !led3;
+                            messageSystem.printf("%c", messageBufferOutgoing[0]= 0xEF);
+                            messageSystem.printf("%c", messageBufferOutgoing[1]= 0x10);
+                            messageSystem.printf("%c", messageBufferOutgoing[2]= 0x00);
+                            messageSystem.printf("%c", messageBufferOutgoing[3]= 0x00);
                             }
                         }
                     }
                 }      
-         memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming));
+        // memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming));
+         memset(hexBufferIncoming, '\0', sizeof(hexBufferIncoming));
+         memset(messageBufferOutgoing, '\0', sizeof(messageBufferOutgoing));
          i = 0;
          messageReceived = true;
          count = 0;
@@ -126,7 +161,9 @@
 int main() {
 
     messageReceived = false;
-    memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming));
+   // memset(messageBufferIncoming, '\0', sizeof(messageBufferIncoming));
+    memset(hexBufferIncoming, '\0', sizeof(hexBufferIncoming));
+    memset(messageBufferOutgoing, '\0', sizeof(messageBufferOutgoing));
     messageSystem.baud(9600);
     messageSystem.attach(&messageReceive, MODSERIAL::RxIrq); //Attach a C++ type object/method pointer as the callback.
    
@@ -134,10 +171,12 @@
     LPC_GPIOINT->IO2IntClr = (1UL << 5) | (1UL << 4) | (1UL << 3) | (1UL << 2); 
  \
     while(1) {
-    
+        //led1 = !led1;
+        wait(.05);
         if (messageReceived)
         {
-       // led1 = !led1;
+        //led2 = !led2;
+        wait(.05);
         messageProcess();
          }
     }