Derek McLean / Mbed 2 deprecated uwb-quadcopter

Dependencies:   mbed ESC SR04 TSI

Committer:
gabdo
Date:
Thu Jun 06 00:18:29 2013 +0000
Revision:
16:5f736b955d53
Motor

Who changed what in which revision?

UserRevisionLine numberNew 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