ajout module_mouvement

Dependencies:   mbed xbee_lib ADXL345_I2C IMUfilter ITG3200 Motor RangeFinder Servo mbos PID

Fork of Labo_TRSE_Drone by HERBERT Nicolas

Service/Buffer_Trame.cpp

Committer:
IngesupMbed01
Date:
2013-04-03
Revision:
23:7f5681d8d5b5
Parent:
22:d2adbcc3580d
Child:
24:3462a304f9a0

File content as of revision 23:7f5681d8d5b5:

 /* Copyright (c) 2012 - 2013 AUTEUR
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED 
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 /*
 * Description : Cette classe contient les fonctionnalités d'un buffer de trame.
 * Input
 * Output
 */
 
 #include "Buffer_Trame.h"
 
 /* CONSRTRUCTEUR(S) */
 C_FrameBuffer::C_FrameBuffer()
 {
    m_frameBuffer = new frame [default_size];
    m_maxSize = default_size;
    m_currentReadIndex = 0;
    m_currentWriteIndex = 0;
 }
 
 C_FrameBuffer::C_FrameBuffer(unsigned int size)
 {
    m_maxSize = size;
    m_frameBuffer = new frame [m_maxSize];
    m_currentReadIndex = 0;
    m_currentWriteIndex = 0;
 }
 
 /* DESTRUCTEUR */
 C_FrameBuffer::~C_FrameBuffer()
 {
    delete [] m_frameBuffer;
    m_maxSize = 0;
    m_currentReadIndex = 0;
    m_currentWriteIndex = 0;
 }
 
 /* Propriétés */
 void C_FrameBuffer::frameBuffer(frame newFrame)
 {
    m_frameBuffer[m_currentWriteIndex] = newFrame;
    m_currentWriteIndex++;
    
    if(m_currentWriteIndex >= m_maxSize) m_currentWriteIndex = 0;
 }
 
 frame C_FrameBuffer::frameBuffer(void)
 {
    frame newFrame = m_frameBuffer[m_currentReadIndex];
    m_currentReadIndex++;
    
    if(m_currentReadIndex >= m_maxSize) m_currentReadIndex = 0;
    
    return newFrame;
 }
 
 frame C_FrameBuffer::frameBuffer(unsigned int index)
 {
    if(index >= m_maxSize) index = m_maxSize;
 
    return m_frameBuffer[index];
 }
 
 unsigned int C_FrameBuffer::maxSize(void)
 {
    return m_maxSize;
 }
 
 unsigned int C_FrameBuffer::currentReadIndex(void)
 {
    return m_currentReadIndex;
 }
 
 void C_FrameBuffer::currentReadIndex(unsigned int newIndex)
 {
    if(newIndex >= m_maxSize) newIndex = m_maxSize;
    
    m_currentReadIndex = newIndex;
 }
 
 unsigned int C_FrameBuffer::currentWriteIndex(void)
 {
    return m_currentWriteIndex;
 }
 
 void C_FrameBuffer::currentWriteIndex(unsigned int newIndex)
 {
    if(newIndex >= m_maxSize) newIndex = m_maxSize;
    
    m_currentWriteIndex = newIndex;
 }