Prosper Van / xbeeCom

Fork of com by Prosper Van

Files at this revision

API Documentation at this revision

Comitter:
oprospero
Date:
Tue Oct 21 21:22:21 2014 +0000
Parent:
18:19bcb2dbf3c8
Child:
20:95244d4f47f6
Commit message:
Added tx serial object

Changed in this revision

com.cpp Show annotated file Show diff for this revision Revisions of this file
com.h Show annotated file Show diff for this revision Revisions of this file
--- a/com.cpp	Wed Oct 15 04:57:15 2014 +0000
+++ b/com.cpp	Tue Oct 21 21:22:21 2014 +0000
@@ -24,7 +24,7 @@
     #define GET(x)
 #endif
 
-com::com(PinName tx, PinName rx): xbee(tx,rx)
+com::com(PinName tx, PinName rx): xbee(NC,rx), xbtx(tx,NC)
 {
     xbee.baud(BAUDRATE);
     xbee.attach(this,&com::callback);
@@ -36,12 +36,14 @@
 
 void com::callback()
 {
+    __disable_irq();
     while(xbee.readable())
     {
         char data = xbee.getc();
 //        xbee.putc(data);
         rxBuffer.add(data);
     }
+    __enable_irq();
 }
 
 bool com::isData()
@@ -106,6 +108,7 @@
                 pack_checksum = data;
                 if ( temp == pack_checksum )
                 {
+                    __disable_irq();
                     short * ackPacket = new short[2];
                     ackPacket[0] = pack_cmd;
                     ackPacket[1] = pack_seq;
@@ -115,6 +118,7 @@
                     array[0] = pack_cmd;
                     array[1] = pack_value[1] * 128 + pack_value[0];
                     cmdBuffer.add( array );
+                    __enable_irq();
                 }
                 
                 packetIndex = 0;
@@ -148,22 +152,28 @@
 
 void com::sendACK()
 {
+    __disable_irq();
     if( !txBuffer.isEmpty())
     {
         short * pkt = txBuffer.pop();
-        __disable_irq();
         write(pkt[0],pkt[1]); //may need to disable interrupt
-        __enable_irq();
         delete[] pkt;
     
     }
+    __enable_irq();
 }
 
 void com::write( short command, short seq  )
 {  
-    xbee.putc( 255 );                     // End of message.
-    xbee.putc( (char)command );           // Command
-    xbee.putc( (char) seq);            // Second 8 bits in array.
-    xbee.putc( (char) command + seq );        // Checksum array[0] + array[1].
+    xbtx.putc( 255 );                     // End of message.
+    xbtx.putc( (char)command );           // Command
+    xbtx.putc( (char) seq);            // Second 8 bits in array.
+    xbtx.putc( (char) command + seq );        // Checksum array[0] + array[1].
 }
 
+void com::print(char* str)
+{
+    __disable_irq();
+    xbee.printf(str);
+    __enable_irq();
+}
--- a/com.h	Wed Oct 15 04:57:15 2014 +0000
+++ b/com.h	Tue Oct 21 21:22:21 2014 +0000
@@ -18,10 +18,12 @@
     bool rdy2ack();
     void sendACK();
     void write(short,short);
+    void print(char*);
     
     
 private:
     Serial xbee;
+    Serial xbtx;
     queue cmdBuffer;
     queue txBuffer;
     queueChar rxBuffer;