Derek McLean / Mbed 2 deprecated uwb-quadcopter

Dependencies:   mbed ESC SR04 TSI

Committer:
dereklmc
Date:
Sun Jun 09 04:14:21 2013 +0000
Revision:
30:17297295ce0c
Parent:
16:5f736b955d53
Updated sr04 include

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gabdo 16:5f736b955d53 1 /*************************** queue.cpp ***************************************/
gabdo 16:5f736b955d53 2 /* */
gabdo 16:5f736b955d53 3 /* Authers: Oanh Tran, Ling Lei, Sihao Xie, Greg Abdo. */
gabdo 16:5f736b955d53 4 /* Date: February 23, 2013 */
gabdo 16:5f736b955d53 5 /* Version: 1.0 */
gabdo 16:5f736b955d53 6 /* */
gabdo 16:5f736b955d53 7 /* The queue is used to stack StructureItem in order with a FILO */
gabdo 16:5f736b955d53 8 /*arrangement. */
gabdo 16:5f736b955d53 9 /*****************************************************************************/
gabdo 16:5f736b955d53 10
gabdo 16:5f736b955d53 11 #include "queue.h"
gabdo 16:5f736b955d53 12
gabdo 16:5f736b955d53 13 /***************************** constructor ***********************************/
gabdo 16:5f736b955d53 14 /* Description: */
gabdo 16:5f736b955d53 15 /*****************************************************************************/
gabdo 16:5f736b955d53 16
gabdo 16:5f736b955d53 17 queue::queue()
gabdo 16:5f736b955d53 18 {
gabdo 16:5f736b955d53 19 front = NULL; // Set front to NULL at the start.
gabdo 16:5f736b955d53 20 }
gabdo 16:5f736b955d53 21
gabdo 16:5f736b955d53 22 /******************************* distructor **********************************/
gabdo 16:5f736b955d53 23 /* Description: */
gabdo 16:5f736b955d53 24 /*****************************************************************************/
gabdo 16:5f736b955d53 25
gabdo 16:5f736b955d53 26 queue::~queue()
gabdo 16:5f736b955d53 27 {
gabdo 16:5f736b955d53 28 clear(); // Clear the entire queue.
gabdo 16:5f736b955d53 29 }
gabdo 16:5f736b955d53 30
gabdo 16:5f736b955d53 31 /*****************************************************************************/
gabdo 16:5f736b955d53 32 /* Description: */
gabdo 16:5f736b955d53 33 /* Accepts: */
gabdo 16:5f736b955d53 34 /* Returns: */
gabdo 16:5f736b955d53 35 /*****************************************************************************/
gabdo 16:5f736b955d53 36
gabdo 16:5f736b955d53 37 bool queue::isEmpty()
gabdo 16:5f736b955d53 38 {
gabdo 16:5f736b955d53 39 // Is the queue empty?
gabdo 16:5f736b955d53 40 if( front == NULL ) // Check the front pointer.
gabdo 16:5f736b955d53 41 return true; // Queue is empty, return true.
gabdo 16:5f736b955d53 42
gabdo 16:5f736b955d53 43 return false; // There is atleast one item, not empty.
gabdo 16:5f736b955d53 44 }
gabdo 16:5f736b955d53 45
gabdo 16:5f736b955d53 46 /*****************************************************************************/
gabdo 16:5f736b955d53 47 /* Description: */
gabdo 16:5f736b955d53 48 /* Accepts: */
gabdo 16:5f736b955d53 49 /* Returns: */
gabdo 16:5f736b955d53 50 /*****************************************************************************/
gabdo 16:5f736b955d53 51
gabdo 16:5f736b955d53 52 void queue::clear()
gabdo 16:5f736b955d53 53 {
gabdo 16:5f736b955d53 54 // Is the list already empty?
gabdo 16:5f736b955d53 55 if( isEmpty() ) // Check for an empty list.
gabdo 16:5f736b955d53 56 return; // List is empty, don't need to do anything.
gabdo 16:5f736b955d53 57
gabdo 16:5f736b955d53 58 queueNode * current = front; // Create node to help step through list.
gabdo 16:5f736b955d53 59 queueNode * placeHold = front; // Create node to keep place of delete.
gabdo 16:5f736b955d53 60
gabdo 16:5f736b955d53 61 // As long as were not at the end, keep stepping to the next node.
gabdo 16:5f736b955d53 62 while( current != NULL)
gabdo 16:5f736b955d53 63 {
gabdo 16:5f736b955d53 64 placeHold = current->next; // Hold where we have to go.
gabdo 16:5f736b955d53 65 delete current; // Delete the node.
gabdo 16:5f736b955d53 66 current = placeHold; // Set current to the next node.
gabdo 16:5f736b955d53 67 }
gabdo 16:5f736b955d53 68
gabdo 16:5f736b955d53 69 front = NULL; // Reset the front to NULL;
gabdo 16:5f736b955d53 70 }
gabdo 16:5f736b955d53 71
gabdo 16:5f736b955d53 72 /*****************************************************************************/
gabdo 16:5f736b955d53 73 /* Description: */
gabdo 16:5f736b955d53 74 /* Accepts: */
gabdo 16:5f736b955d53 75 /* Returns: */
gabdo 16:5f736b955d53 76 /*****************************************************************************/
gabdo 16:5f736b955d53 77
gabdo 16:5f736b955d53 78 void queue::add( char * item )
gabdo 16:5f736b955d53 79 {
gabdo 16:5f736b955d53 80 // Were we passed an invalid object somehow?
gabdo 16:5f736b955d53 81 if( item == NULL ) // Check for NULL
gabdo 16:5f736b955d53 82 return; // If so, return.
gabdo 16:5f736b955d53 83
gabdo 16:5f736b955d53 84 queueNode * newNode = new queueNode( item ); // Create the new node.
gabdo 16:5f736b955d53 85
gabdo 16:5f736b955d53 86 if( isEmpty() )
gabdo 16:5f736b955d53 87 front = newNode; // Set front to the new node.
gabdo 16:5f736b955d53 88
gabdo 16:5f736b955d53 89 else
gabdo 16:5f736b955d53 90 {
gabdo 16:5f736b955d53 91 queueNode *temp = front;
gabdo 16:5f736b955d53 92 while( temp->next != NULL )
gabdo 16:5f736b955d53 93 temp = temp->next;
gabdo 16:5f736b955d53 94
gabdo 16:5f736b955d53 95 temp->next = newNode;
gabdo 16:5f736b955d53 96 }
gabdo 16:5f736b955d53 97 }
gabdo 16:5f736b955d53 98
gabdo 16:5f736b955d53 99 /*****************************************************************************/
gabdo 16:5f736b955d53 100 /* Description: */
gabdo 16:5f736b955d53 101 /* Accepts: */
gabdo 16:5f736b955d53 102 /* Returns: */
gabdo 16:5f736b955d53 103 /*****************************************************************************/
gabdo 16:5f736b955d53 104
gabdo 16:5f736b955d53 105 char * queue::pop()
gabdo 16:5f736b955d53 106 {
gabdo 16:5f736b955d53 107 // Is the list already empty?
gabdo 16:5f736b955d53 108 if( isEmpty() ) // Check for an empty list.
gabdo 16:5f736b955d53 109 return NULL; // List is empty, don't need to do anything.
gabdo 16:5f736b955d53 110
gabdo 16:5f736b955d53 111 char* placeHold = front->data;
gabdo 16:5f736b955d53 112 // Keep track of what were returning.
gabdo 16:5f736b955d53 113 delete front; // Delete the front node.
gabdo 16:5f736b955d53 114 front = front->next; // Set front to next object.
gabdo 16:5f736b955d53 115 return placeHold; // return the stuctureItem.
gabdo 16:5f736b955d53 116 }
gabdo 16:5f736b955d53 117
gabdo 16:5f736b955d53 118 /*****************************************************************************/
gabdo 16:5f736b955d53 119 /* Description: */
gabdo 16:5f736b955d53 120 /* Accepts: */
gabdo 16:5f736b955d53 121 /* Returns: */
gabdo 16:5f736b955d53 122 /*****************************************************************************/
gabdo 16:5f736b955d53 123
gabdo 16:5f736b955d53 124 char * queue::peek()
gabdo 16:5f736b955d53 125 {
gabdo 16:5f736b955d53 126 if( front != NULL )
gabdo 16:5f736b955d53 127 return front->data;
gabdo 16:5f736b955d53 128
gabdo 16:5f736b955d53 129 return NULL;
gabdo 16:5f736b955d53 130 }