Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of com by
Revision 19:dc9d18037565, committed 2014-10-21
- 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;