#include <gadget/Type/SampleBuffer.h>
Public Types | |
| typedef std::vector< std::vector< DATA_TYPE > > | buffer_t |
Public Member Functions | |
| SampleBuffer () | |
| void | addSample (const std::vector< DATA_TYPE > &dataSample) |
| Adds a new sample to the buffer. | |
| void | swapBuffers () |
| Swaps the data buffers. | |
| void | lock () |
| void | unlock () |
| buffer_t & | stableBuffer () |
Protected Member Functions | |
| SampleBuffer (const SampleBuffer &b) | |
| void | operator= (const SampleBuffer &b) |
Protected Attributes | |
| buffer_t | mStableBuffer |
| buffer_t | mReadyBuffer |
| vpr::Mutex | mLock |
| Lock to protect the buffer. | |
The SampleBuffer stores the readings from an input device.
It consists of two buffers (vectors of vectors of samples) that hold. The "stable" samples and the "ready" samples.
Stable - Samples that the application is actually looking at. Ready - Samples that have been completed and could be swapped over to current.
ASSERTION: The buffers can be empty at the start, but after the first cycle (first time stable gets values) the Stable buffer must have at least one sample.
| MAX_BUFFER_SIZE | The maximum allowable size of the buffer. After it gets this large we will start throwing away old data. |
Definition at line 67 of file SampleBuffer.h.
| typedef std::vector< std::vector< DATA_TYPE > > gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::buffer_t |
Definition at line 70 of file SampleBuffer.h.
| gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::SampleBuffer | ( | ) | [inline] |
| gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::SampleBuffer | ( | const SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE > & | b | ) | [inline, protected] |
| void gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::addSample | ( | const std::vector< DATA_TYPE > & | dataSample | ) | [inline] |
Adds a new sample to the buffer.
Definition at line 82 of file SampleBuffer.h.
References gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::mLock, and gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::mReadyBuffer.
Referenced by gadget::Analog::addAnalogSample(), gadget::Position::addPositionSample(), gadget::String::readObject(), gadget::Position::readObject(), gadget::Glove::readObject(), gadget::Digital::readObject(), gadget::Command::readObject(), and gadget::Analog::readObject().
00083 { 00084 vprASSERT(mLock.test()); // Verify that it is locked 00085 mReadyBuffer.push_back(dataSample); 00086 if(mReadyBuffer.size() > MAX_BUFFER_SIZE) 00087 { 00088 while(mReadyBuffer.size() > MAX_BUFFER_SIZE) 00089 { mReadyBuffer.erase(mReadyBuffer.begin()); } 00090 } 00091 }
| void gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::swapBuffers | ( | ) | [inline] |
Swaps the data buffers.
Definition at line 101 of file SampleBuffer.h.
References gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::mLock, gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::mReadyBuffer, and gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::mStableBuffer.
Referenced by gadget::String::readObject(), gadget::Digital::readObject(), gadget::Command::readObject(), and gadget::Analog::swapAnalogBuffers().
00102 { 00103 vpr::Guard<vpr::Mutex> guard(mLock); 00104 00105 if(!mReadyBuffer.empty()) // If Ready buffer has data 00106 { 00107 mStableBuffer = mReadyBuffer; // Copy over the ready values 00108 } 00109 00110 mReadyBuffer.clear(); 00111 }
| void gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::lock | ( | ) | [inline] |
Definition at line 113 of file SampleBuffer.h.
References gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::mLock.
Referenced by gadget::Analog::addAnalogSample(), gadget::Position::addPositionSample(), gadget::String::readObject(), gadget::Position::readObject(), gadget::Glove::readObject(), gadget::Digital::readObject(), gadget::Command::readObject(), gadget::Analog::readObject(), gadget::String::writeObject(), gadget::Position::writeObject(), gadget::Glove::writeObject(), gadget::Digital::writeObject(), gadget::Command::writeObject(), and gadget::Analog::writeObject().
00114 { mLock.acquire(); }
| void gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::unlock | ( | ) | [inline] |
Definition at line 116 of file SampleBuffer.h.
References gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::mLock.
Referenced by gadget::Analog::addAnalogSample(), gadget::Position::addPositionSample(), gadget::String::readObject(), gadget::Position::readObject(), gadget::Glove::readObject(), gadget::Digital::readObject(), gadget::Command::readObject(), gadget::Analog::readObject(), gadget::String::writeObject(), gadget::Position::writeObject(), gadget::Glove::writeObject(), gadget::Digital::writeObject(), gadget::Command::writeObject(), and gadget::Analog::writeObject().
00117 { mLock.release(); }
| buffer_t& gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::stableBuffer | ( | ) | [inline] |
Definition at line 119 of file SampleBuffer.h.
References gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::mStableBuffer.
Referenced by gadget::Analog::getAnalogData(), gadget::Analog::getAnalogDataBuffer(), gadget::Command::getCommandData(), gadget::Digital::getDigitalData(), gadget::Glove::getGloveData(), gadget::String::getStringData(), gadget::String::writeObject(), gadget::Position::writeObject(), gadget::Glove::writeObject(), gadget::Digital::writeObject(), gadget::Command::writeObject(), and gadget::Analog::writeObject().
00120 { return mStableBuffer; }
| void gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::operator= | ( | const SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE > & | b | ) | [inline, protected] |
buffer_t gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::mStableBuffer [protected] |
Definition at line 127 of file SampleBuffer.h.
Referenced by gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::stableBuffer(), and gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::swapBuffers().
buffer_t gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::mReadyBuffer [protected] |
Definition at line 128 of file SampleBuffer.h.
Referenced by gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::addSample(), and gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::swapBuffers().
vpr::Mutex gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::mLock [protected] |
Lock to protect the buffer.
Definition at line 130 of file SampleBuffer.h.
Referenced by gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::addSample(), gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::lock(), gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::swapBuffers(), and gadget::SampleBuffer< DATA_TYPE, MAX_BUFFER_SIZE >::unlock().
1.5.1