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.
Dependencies: mbed ESC SR04 TSI
com/com.cpp@16:5f736b955d53, 2013-06-06 (annotated)
- Committer:
- gabdo
- Date:
- Thu Jun 06 00:18:29 2013 +0000
- Revision:
- 16:5f736b955d53
Motor
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gabdo | 16:5f736b955d53 | 1 | /****************************** com.cpp **********************************/ |
gabdo | 16:5f736b955d53 | 2 | /* Version: 1.0 */ |
gabdo | 16:5f736b955d53 | 3 | /* Last Updated: June 1, 2013 */ |
gabdo | 16:5f736b955d53 | 4 | /*************************************************************************/ |
gabdo | 16:5f736b955d53 | 5 | |
gabdo | 16:5f736b955d53 | 6 | #include "mbed.h" |
gabdo | 16:5f736b955d53 | 7 | #include "com.h" |
gabdo | 16:5f736b955d53 | 8 | |
gabdo | 16:5f736b955d53 | 9 | /*********************** com( PinName, PinName ) *************************/ |
gabdo | 16:5f736b955d53 | 10 | /* */ |
gabdo | 16:5f736b955d53 | 11 | /*************************************************************************/ |
gabdo | 16:5f736b955d53 | 12 | |
gabdo | 16:5f736b955d53 | 13 | com::com( PinName tx, PinName rx ) : xbee( tx, rx) |
gabdo | 16:5f736b955d53 | 14 | { |
gabdo | 16:5f736b955d53 | 15 | bLength = 0; |
gabdo | 16:5f736b955d53 | 16 | xbee.attach( this, &com::callback ); |
gabdo | 16:5f736b955d53 | 17 | readBuffer = new queue(); |
gabdo | 16:5f736b955d53 | 18 | } |
gabdo | 16:5f736b955d53 | 19 | |
gabdo | 16:5f736b955d53 | 20 | /************************* bool isData() ********************************/ |
gabdo | 16:5f736b955d53 | 21 | /* */ |
gabdo | 16:5f736b955d53 | 22 | /*************************************************************************/ |
gabdo | 16:5f736b955d53 | 23 | |
gabdo | 16:5f736b955d53 | 24 | bool com::isData() |
gabdo | 16:5f736b955d53 | 25 | { |
gabdo | 16:5f736b955d53 | 26 | if( readBuffer->isEmpty() ) |
gabdo | 16:5f736b955d53 | 27 | return false; |
gabdo | 16:5f736b955d53 | 28 | |
gabdo | 16:5f736b955d53 | 29 | return true; |
gabdo | 16:5f736b955d53 | 30 | } |
gabdo | 16:5f736b955d53 | 31 | |
gabdo | 16:5f736b955d53 | 32 | /************************ void write( char ) *****************************/ |
gabdo | 16:5f736b955d53 | 33 | /* */ |
gabdo | 16:5f736b955d53 | 34 | /*************************************************************************/ |
gabdo | 16:5f736b955d53 | 35 | |
gabdo | 16:5f736b955d53 | 36 | void com::write( char value ) |
gabdo | 16:5f736b955d53 | 37 | { |
gabdo | 16:5f736b955d53 | 38 | |
gabdo | 16:5f736b955d53 | 39 | } |
gabdo | 16:5f736b955d53 | 40 | |
gabdo | 16:5f736b955d53 | 41 | /*************************** char read() ********************************/ |
gabdo | 16:5f736b955d53 | 42 | /* */ |
gabdo | 16:5f736b955d53 | 43 | /*************************************************************************/ |
gabdo | 16:5f736b955d53 | 44 | |
gabdo | 16:5f736b955d53 | 45 | char * com::read() |
gabdo | 16:5f736b955d53 | 46 | { |
gabdo | 16:5f736b955d53 | 47 | // Are there commands in the readBuffer queue? |
gabdo | 16:5f736b955d53 | 48 | if( !readBuffer->isEmpty()) |
gabdo | 16:5f736b955d53 | 49 | return readBuffer->pop(); |
gabdo | 16:5f736b955d53 | 50 | |
gabdo | 16:5f736b955d53 | 51 | return NULL; |
gabdo | 16:5f736b955d53 | 52 | } |
gabdo | 16:5f736b955d53 | 53 | |
gabdo | 16:5f736b955d53 | 54 | /********************** void eventHandler() ******************************/ |
gabdo | 16:5f736b955d53 | 55 | /* */ |
gabdo | 16:5f736b955d53 | 56 | /*************************************************************************/ |
gabdo | 16:5f736b955d53 | 57 | |
gabdo | 16:5f736b955d53 | 58 | void com::callback() |
gabdo | 16:5f736b955d53 | 59 | { |
gabdo | 16:5f736b955d53 | 60 | while( xbee.readable() ) |
gabdo | 16:5f736b955d53 | 61 | { |
gabdo | 16:5f736b955d53 | 62 | char data = xbee.getc(); |
gabdo | 16:5f736b955d53 | 63 | |
gabdo | 16:5f736b955d53 | 64 | if( bLength++ < 15 ) |
gabdo | 16:5f736b955d53 | 65 | buffer[bLength] = data; |
gabdo | 16:5f736b955d53 | 66 | |
gabdo | 16:5f736b955d53 | 67 | if( data == 255 ) |
gabdo | 16:5f736b955d53 | 68 | packetBuilder(); |
gabdo | 16:5f736b955d53 | 69 | } |
gabdo | 16:5f736b955d53 | 70 | } |
gabdo | 16:5f736b955d53 | 71 | |
gabdo | 16:5f736b955d53 | 72 | /********************** void eventHandler() ******************************/ |
gabdo | 16:5f736b955d53 | 73 | /* */ |
gabdo | 16:5f736b955d53 | 74 | /*************************************************************************/ |
gabdo | 16:5f736b955d53 | 75 | |
gabdo | 16:5f736b955d53 | 76 | void com::packetBuilder() |
gabdo | 16:5f736b955d53 | 77 | { |
gabdo | 16:5f736b955d53 | 78 | // As long as there is data in the buffer, we need to read it. |
gabdo | 16:5f736b955d53 | 79 | while( bLength > 0 ) |
gabdo | 16:5f736b955d53 | 80 | { |
gabdo | 16:5f736b955d53 | 81 | // If the buffer has at least 3 chars and the 3rd one is 2555 |
gabdo | 16:5f736b955d53 | 82 | //then we have a complete string, we must read it. |
gabdo | 16:5f736b955d53 | 83 | if( bLength > 2 && buffer[bLength] == 255 ) |
gabdo | 16:5f736b955d53 | 84 | { |
gabdo | 16:5f736b955d53 | 85 | char * commandData = new char[2]; |
gabdo | 16:5f736b955d53 | 86 | commandData[1] = buffer[--bLength]; |
gabdo | 16:5f736b955d53 | 87 | commandData[0] = buffer[--bLength]; |
gabdo | 16:5f736b955d53 | 88 | readBuffer->add( commandData ); |
gabdo | 16:5f736b955d53 | 89 | --bLength; |
gabdo | 16:5f736b955d53 | 90 | } |
gabdo | 16:5f736b955d53 | 91 | // There must have been a read error, just flush the buffer. |
gabdo | 16:5f736b955d53 | 92 | else |
gabdo | 16:5f736b955d53 | 93 | bLength--; |
gabdo | 16:5f736b955d53 | 94 | } |
gabdo | 16:5f736b955d53 | 95 | } |
gabdo | 16:5f736b955d53 | 96 | |
gabdo | 16:5f736b955d53 | 97 | |
gabdo | 16:5f736b955d53 | 98 | |
gabdo | 16:5f736b955d53 | 99 | |
gabdo | 16:5f736b955d53 | 100 | |
gabdo | 16:5f736b955d53 | 101 | |
gabdo | 16:5f736b955d53 | 102 | |
gabdo | 16:5f736b955d53 | 103 | |
gabdo | 16:5f736b955d53 | 104 | |
gabdo | 16:5f736b955d53 | 105 | |
gabdo | 16:5f736b955d53 | 106 |