xbee communication for UWB quadcopter project Originally by Greg Abdo Forking to reduce impact of interrupt by moving packetbuilder out of the interrupt and letting be handled in the main loop

Fork of com by Prosper Van

Committer:
oprospero
Date:
Wed Aug 27 06:20:23 2014 +0000
Revision:
15:3f742edaa359
Parent:
14:d2acb373d81c
Child:
16:89695823d407
Changed to new controls.; Off load code from RX callback to main loop

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oprospero 0:26a151d2c6db 1 /******************************* com.h ***********************************/
oprospero 0:26a151d2c6db 2 /* Version: 1.0 */
oprospero 0:26a151d2c6db 3 /* Last Updated: June 1, 2013 */
oprospero 0:26a151d2c6db 4 /* */
oprospero 0:26a151d2c6db 5 /* The com class implements reliable data transfer between two nodes */
oprospero 0:26a151d2c6db 6 /*using a checksum and a sequence number for guaranteed message delivery */
oprospero 0:26a151d2c6db 7 /*over an xbee modem connected to the passed in tx and rx pins. Messages */
oprospero 0:26a151d2c6db 8 /*are received and placed in the rxBuffer to be read when convenient. */
oprospero 0:26a151d2c6db 9 /*Messages are encoded by sending a byte with the value of the command */
oprospero 0:26a151d2c6db 10 /*then and int of the command. */
oprospero 0:26a151d2c6db 11 /* Alternative Pins RX = PTA1, TX PTA2 */
oprospero 0:26a151d2c6db 12 /*************************************************************************/
oprospero 0:26a151d2c6db 13
oprospero 0:26a151d2c6db 14 #ifndef COM_H
oprospero 0:26a151d2c6db 15 #define COM_H
oprospero 0:26a151d2c6db 16 #define RSSI_THRES 0.8
oprospero 0:26a151d2c6db 17
oprospero 0:26a151d2c6db 18 #include "mbed.h"
oprospero 0:26a151d2c6db 19 #include "queue.h"
oprospero 0:26a151d2c6db 20 #include "PwmIn.h"
oprospero 0:26a151d2c6db 21
oprospero 13:2fb7b19dcd70 22 //#define DEBUG_COM
oprospero 13:2fb7b19dcd70 23
oprospero 13:2fb7b19dcd70 24
oprospero 0:26a151d2c6db 25 const int BAUDRATE = 38400;
oprospero 14:d2acb373d81c 26 const int BUFFERSIZE = 16;
oprospero 0:26a151d2c6db 27
oprospero 0:26a151d2c6db 28 class com
oprospero 0:26a151d2c6db 29 {
oprospero 0:26a151d2c6db 30 public:
oprospero 0:26a151d2c6db 31 com( PinName, PinName, PinName ); // Setup the com serial port. (tx, rx)
oprospero 0:26a151d2c6db 32 bool isData(); // Is there data to be read?
oprospero 0:26a151d2c6db 33 bool isSignalGood();
oprospero 0:26a151d2c6db 34 short * read(); // Read from the queue.
oprospero 14:d2acb373d81c 35 void sendACK();
oprospero 5:7cdf299ea7a4 36 bool rdy2ack();
oprospero 0:26a151d2c6db 37
oprospero 1:4f53de75bc96 38 private:
oprospero 12:bf4642578682 39 void write( short, short ); // Write to the port.
oprospero 13:2fb7b19dcd70 40 RawSerial xbeeTx; // tx - DIN, rx - DOUT
oprospero 13:2fb7b19dcd70 41 RawSerial xbeeRx; // tx - DIN, rx - DOUT
oprospero 4:f8e953201251 42 queue *txBuffer;
oprospero 15:3f742edaa359 43 queue *rxBuffer;
oprospero 15:3f742edaa359 44 queue *cmdBuffer;
oprospero 1:4f53de75bc96 45 PwmIn rssi;
oprospero 1:4f53de75bc96 46
oprospero 12:bf4642578682 47 bool rdy2build;
oprospero 12:bf4642578682 48 bool isA1;
oprospero 0:26a151d2c6db 49 void callback(); // Handle the interrupts.
oprospero 0:26a151d2c6db 50
oprospero 12:bf4642578682 51 char buffer1[BUFFERSIZE]; // Buffer for holding serial data.
oprospero 12:bf4642578682 52 char buffer2[BUFFERSIZE]; // Buffer for holding serial data.
oprospero 12:bf4642578682 53 int index1; // Location in the buffer to place next data.
oprospero 12:bf4642578682 54 int index2; // Location in the buffer to place next data.
oprospero 12:bf4642578682 55 int pindex; // Location in the buffer to place next data.
oprospero 0:26a151d2c6db 56 int signalStrength;
oprospero 1:4f53de75bc96 57
oprospero 0:26a151d2c6db 58 };
oprospero 0:26a151d2c6db 59
oprospero 0:26a151d2c6db 60 #endif