Projet Drone de surveillance du labo TRSE (INGESUP)

Dependencies:   mbed PID ADXL345 Camera_LS_Y201 ITG3200 RangeFinder mbos xbee_lib Motor Servo

Revision:
23:7f5681d8d5b5
Parent:
22:d2adbcc3580d
Child:
24:3462a304f9a0
--- 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