ajout module_mouvement

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

Fork of Labo_TRSE_Drone by HERBERT Nicolas

Files at this revision

API Documentation at this revision

Comitter:
IngesupMbed01
Date:
Wed Apr 03 10:36:21 2013 +0000
Parent:
22:d2adbcc3580d
Child:
24:3462a304f9a0
Commit message:
Buffer Trame fini

Changed in this revision

Service/Buffer_Trame.cpp Show annotated file Show diff for this revision Revisions of this file
Service/Buffer_Trame.h Show annotated file Show diff for this revision Revisions of this file
--- a/Service/Buffer_Trame.cpp	Wed Apr 03 09:11:38 2013 +0000
+++ b/Service/Buffer_Trame.cpp	Wed Apr 03 10:36:21 2013 +0000
@@ -22,11 +22,80 @@
  /* 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;
  }
\ No newline at end of file
--- a/Service/Buffer_Trame.h	Wed Apr 03 09:11:38 2013 +0000
+++ b/Service/Buffer_Trame.h	Wed Apr 03 10:36:21 2013 +0000
@@ -23,6 +23,8 @@
  
  #include "mbos.h"
  
+ #define default_size 50
+ 
  typedef struct {
     char identifier;
     char data [8];
@@ -32,16 +34,28 @@
  
  private :
     /* ATTRIBUTS */
- 
+    frame * m_frameBuffer;
+    unsigned int m_currentReadIndex;
+    unsigned int m_currentWriteIndex;
+    unsigned int m_maxSize;
+    
  public :
     /* CONSTRUCTEUR(S) */
     C_FrameBuffer();
+    C_FrameBuffer(unsigned int size);
     
     /* DESTRUCTEUR */
     ~C_FrameBuffer();
     
-    /* METHODES */
- 
+    /* Propriétés */
+    void frameBuffer(frame newFrame);
+    frame frameBuffer(void);
+    frame frameBuffer(unsigned int index);
+    unsigned int maxSize(void);
+    unsigned int currentReadIndex(void);
+    void currentReadIndex(unsigned int newIndex);
+    unsigned int currentWriteIndex(void);
+    void currentWriteIndex(unsigned int newIndex);
  };
  
  #endif
\ No newline at end of file