xbee communication for UWB quadcopter project
Diff: com.cpp
- Revision:
- 3:f8e953201251
- Parent:
- 2:bd1621102cad
- Child:
- 4:7cdf299ea7a4
--- a/com.cpp Sun Apr 20 02:27:39 2014 +0000 +++ b/com.cpp Tue Apr 22 05:43:33 2014 +0000 @@ -99,6 +99,21 @@ /* */ /*************************************************************************/ +void com::ackCheck() +{ + if( !txBuffer->isEmpty()) + { + short * pkt = rxBuffer->pop(); + write(pkt[0],pkt[1]); + } + +} + + +/*************************** char read() ********************************/ +/* */ +/*************************************************************************/ + short * com::read() { if( !rxBuffer->isEmpty()) @@ -113,6 +128,7 @@ void com::callback() { + __disable_irq(); while( xbeeRx.readable() ) { char data = xbeeRx.getc(); @@ -121,10 +137,14 @@ // xbeeTx.putc( data ); if( bLength++ < BUFFERSIZE ) buffer[bLength] = data; - + // +// xbeeTx.putc( bLength ); +// xbeeTx.putc( bLength ); +// xbeeTx.putc( 255 ); if( data == 255 ) packetBuilder(); } + __enable_irq(); } //void com::api_callback() @@ -167,7 +187,13 @@ rxBuffer->add( array ); // Add to read buffer. // xbeeTx.putc( 255 ); // xbeeTx.putc( 255 ); - write( (short)commandData[0], (short)commandData[4]); // Ack the packet with sequence nuber. + if ( commandData[0] != 0 ) + { + short * ackPacket = new short[2]; + ackPacket[1] = commandData[0]; + ackPacket[1] = commandData[4]; + txBuffer->add( ackPacket ); // Ack the packet with sequence nuber. + } } delete[] commandData; bLength = 0; // Reset the buffer length.