RFID tracking with mbed & RS-EDP reference design

Dependencies:   RWDModule mbed SDCard

Committer:
donatien
Date:
Wed Jul 28 11:02:36 2010 +0000
Revision:
0:fd63457452f4

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:fd63457452f4 1 /*
donatien 0:fd63457452f4 2 Copyright (c) 2010 ARM Limited
donatien 0:fd63457452f4 3
donatien 0:fd63457452f4 4 Permission is hereby granted, free of charge, to any person obtaining a copy
donatien 0:fd63457452f4 5 of this software and associated documentation files (the "Software"), to deal
donatien 0:fd63457452f4 6 in the Software without restriction, including without limitation the rights
donatien 0:fd63457452f4 7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
donatien 0:fd63457452f4 8 copies of the Software, and to permit persons to whom the Software is
donatien 0:fd63457452f4 9 furnished to do so, subject to the following conditions:
donatien 0:fd63457452f4 10
donatien 0:fd63457452f4 11 The above copyright notice and this permission notice shall be included in
donatien 0:fd63457452f4 12 all copies or substantial portions of the Software.
donatien 0:fd63457452f4 13
donatien 0:fd63457452f4 14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
donatien 0:fd63457452f4 15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
donatien 0:fd63457452f4 16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
donatien 0:fd63457452f4 17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
donatien 0:fd63457452f4 18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
donatien 0:fd63457452f4 19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
donatien 0:fd63457452f4 20 THE SOFTWARE.
donatien 0:fd63457452f4 21 */
donatien 0:fd63457452f4 22
donatien 0:fd63457452f4 23 /*
donatien 0:fd63457452f4 24 This is a generic queue implementation to avoid using std::queue.
donatien 0:fd63457452f4 25 */
donatien 0:fd63457452f4 26
donatien 0:fd63457452f4 27
donatien 0:fd63457452f4 28 #ifndef QUEUE_H
donatien 0:fd63457452f4 29 #define QUEUE_H
donatien 0:fd63457452f4 30
donatien 0:fd63457452f4 31 #include "string.h" //For size_t
donatien 0:fd63457452f4 32
donatien 0:fd63457452f4 33 namespace mbed {
donatien 0:fd63457452f4 34
donatien 0:fd63457452f4 35 template<class T>
donatien 0:fd63457452f4 36 class queue
donatien 0:fd63457452f4 37 {
donatien 0:fd63457452f4 38 public:
donatien 0:fd63457452f4 39 queue(const size_t size) : m_size(size+1)
donatien 0:fd63457452f4 40 {
donatien 0:fd63457452f4 41 m_table = new T*[size + 1];
donatien 0:fd63457452f4 42 m_backPos = m_frontPos = 0;
donatien 0:fd63457452f4 43 }
donatien 0:fd63457452f4 44
donatien 0:fd63457452f4 45 ~queue()
donatien 0:fd63457452f4 46 {
donatien 0:fd63457452f4 47 delete[] m_table;
donatien 0:fd63457452f4 48 }
donatien 0:fd63457452f4 49
donatien 0:fd63457452f4 50 void push(const T& item)
donatien 0:fd63457452f4 51 {
donatien 0:fd63457452f4 52 if(size() >= (m_size - 1))
donatien 0:fd63457452f4 53 return;
donatien 0:fd63457452f4 54 m_table[m_backPos] = new T(item);
donatien 0:fd63457452f4 55 m_backPos++;
donatien 0:fd63457452f4 56 if(m_backPos>=m_size)
donatien 0:fd63457452f4 57 m_backPos = 0;
donatien 0:fd63457452f4 58 }
donatien 0:fd63457452f4 59
donatien 0:fd63457452f4 60 void pop()
donatien 0:fd63457452f4 61 {
donatien 0:fd63457452f4 62 if(empty())
donatien 0:fd63457452f4 63 return;
donatien 0:fd63457452f4 64 delete m_table[m_frontPos];
donatien 0:fd63457452f4 65 m_frontPos++;
donatien 0:fd63457452f4 66 if(m_frontPos>=m_size)
donatien 0:fd63457452f4 67 m_frontPos = 0;
donatien 0:fd63457452f4 68 }
donatien 0:fd63457452f4 69
donatien 0:fd63457452f4 70 T& front()
donatien 0:fd63457452f4 71 {
donatien 0:fd63457452f4 72 return *m_table[m_frontPos];
donatien 0:fd63457452f4 73 }
donatien 0:fd63457452f4 74
donatien 0:fd63457452f4 75 T& back()
donatien 0:fd63457452f4 76 {
donatien 0:fd63457452f4 77 return *m_table[m_backPos];
donatien 0:fd63457452f4 78 }
donatien 0:fd63457452f4 79
donatien 0:fd63457452f4 80 size_t size() const
donatien 0:fd63457452f4 81 {
donatien 0:fd63457452f4 82 if(m_backPos >= m_frontPos)
donatien 0:fd63457452f4 83 return (m_backPos - m_frontPos);
donatien 0:fd63457452f4 84 else
donatien 0:fd63457452f4 85 return m_size - (m_frontPos - m_backPos);
donatien 0:fd63457452f4 86 }
donatien 0:fd63457452f4 87
donatien 0:fd63457452f4 88 bool empty() const
donatien 0:fd63457452f4 89 {
donatien 0:fd63457452f4 90 return !size();
donatien 0:fd63457452f4 91 }
donatien 0:fd63457452f4 92
donatien 0:fd63457452f4 93 private:
donatien 0:fd63457452f4 94 T** m_table;
donatien 0:fd63457452f4 95 uint32_t m_frontPos; //Position of front element
donatien 0:fd63457452f4 96 uint32_t m_backPos; //Position of last element
donatien 0:fd63457452f4 97
donatien 0:fd63457452f4 98 size_t m_size;
donatien 0:fd63457452f4 99
donatien 0:fd63457452f4 100 };
donatien 0:fd63457452f4 101
donatien 0:fd63457452f4 102 }
donatien 0:fd63457452f4 103
donatien 0:fd63457452f4 104 #endif