Elmar van Rijnswou
7 years ago
13 changed files with 224 additions and 86 deletions
@ -0,0 +1,21 @@ |
|||||
|
/*
|
||||
|
* port_utilities.cpp |
||||
|
* |
||||
|
* Created on: Aug 29, 2017 |
||||
|
* Author: Elmar |
||||
|
*/ |
||||
|
|
||||
|
#include "port_utilities.h" |
||||
|
|
||||
|
namespace rijnfel { |
||||
|
|
||||
|
cPortUtilities::cPortUtilities() { |
||||
|
// TODO Auto-generated constructor stub
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
cPortUtilities::~cPortUtilities() { |
||||
|
// TODO Auto-generated destructor stub
|
||||
|
} |
||||
|
|
||||
|
} /* namespace rijnfel */ |
@ -0,0 +1,23 @@ |
|||||
|
/*
|
||||
|
* port_utilities.h |
||||
|
* |
||||
|
* Created on: Aug 29, 2017 |
||||
|
* Author: Elmar |
||||
|
*/ |
||||
|
|
||||
|
#ifndef APP_PORT_UTILITIES_H_ |
||||
|
#define APP_PORT_UTILITIES_H_ |
||||
|
|
||||
|
#include <rijnfel_core/rijnfel_core.h> |
||||
|
|
||||
|
namespace rijnfel { |
||||
|
|
||||
|
class cPortUtilities { |
||||
|
public: |
||||
|
cPortUtilities(); |
||||
|
virtual ~cPortUtilities(); |
||||
|
}; |
||||
|
|
||||
|
} /* namespace rijnfel */ |
||||
|
|
||||
|
#endif /* APP_PORT_UTILITIES_H_ */ |
@ -0,0 +1,53 @@ |
|||||
|
/*
|
||||
|
* provider_averager.h |
||||
|
* |
||||
|
* Created on: Aug 29, 2017 |
||||
|
* Author: Elmar |
||||
|
*/ |
||||
|
|
||||
|
#ifndef APP_PROVIDER_AVERAGER_H_ |
||||
|
#define APP_PROVIDER_AVERAGER_H_ |
||||
|
|
||||
|
#include "data_provider.h" |
||||
|
|
||||
|
namespace rijnfel { |
||||
|
template<typename DataType, typename MaxType> |
||||
|
class cProviderAverager: public cDataSink { |
||||
|
public: |
||||
|
cProviderAverager(uint32_t i_averageSize = 250) : |
||||
|
m_input(this) { |
||||
|
m_averageSize = i_averageSize; |
||||
|
m_counter = 0; |
||||
|
} |
||||
|
|
||||
|
virtual void ReceiveCallback(void * i_data, cDataReceiver * i_receiver) { |
||||
|
m_outcome += *static_cast<DataType*>(i_data); |
||||
|
m_counter++; |
||||
|
if (m_counter >= m_averageSize ) { |
||||
|
if (m_averageSize == 0) { |
||||
|
//TODO log message
|
||||
|
return; |
||||
|
} |
||||
|
m_outcome = m_outcome / m_counter; |
||||
|
m_output.Push(&m_outcome); |
||||
|
Reset(); |
||||
|
} |
||||
|
} |
||||
|
void Reset() { |
||||
|
m_outcome = 0; |
||||
|
m_counter = 0; |
||||
|
} |
||||
|
virtual ~cProviderAverager() { |
||||
|
} |
||||
|
cDataReceiver m_input; |
||||
|
cDataProvider m_output; |
||||
|
private: |
||||
|
uint32_t m_averageSize; |
||||
|
uint32_t m_counter; |
||||
|
|
||||
|
MaxType m_outcome; |
||||
|
}; |
||||
|
|
||||
|
} /* namespace rijnfel */ |
||||
|
|
||||
|
#endif /* APP_PROVIDER_AVERAGER_H_ */ |
@ -0,0 +1,52 @@ |
|||||
|
/*
|
||||
|
* provider_buffer.h |
||||
|
* |
||||
|
* Created on: Aug 29, 2017 |
||||
|
* Author: Elmar |
||||
|
*/ |
||||
|
|
||||
|
#ifndef APP_PROVIDER_BUFFER_H_ |
||||
|
#define APP_PROVIDER_BUFFER_H_ |
||||
|
|
||||
|
#include "data_provider.h" |
||||
|
#include "helper_structs.h" |
||||
|
|
||||
|
namespace rijnfel { |
||||
|
template<typename Data> |
||||
|
class cProviderBuffer: public cDataSink { |
||||
|
public: |
||||
|
cProviderBuffer(size_t i_bufferSize) : |
||||
|
m_input(this) { |
||||
|
m_bufferSize = i_bufferSize; |
||||
|
m_counter = 0; |
||||
|
m_array = new Data[i_bufferSize]; |
||||
|
m_sizedArray.p_array = static_cast<void*>(m_array); |
||||
|
m_sizedArray.size = m_bufferSize; |
||||
|
} |
||||
|
|
||||
|
virtual void ReceiveCallback(void * i_data, cDataReceiver * i_receiver) { |
||||
|
m_array[m_counter] = *static_cast<Data*>(i_data); |
||||
|
m_counter++; |
||||
|
if (m_counter == m_bufferSize) { |
||||
|
m_output.Push(static_cast<void*>(&m_sizedArray)); |
||||
|
Reset(); |
||||
|
} |
||||
|
} |
||||
|
void Reset(){ |
||||
|
m_counter = 0; |
||||
|
} |
||||
|
virtual ~cProviderBuffer() { |
||||
|
delete[] m_array; |
||||
|
} |
||||
|
cDataReceiver m_input; |
||||
|
cDataProvider m_output; |
||||
|
private: |
||||
|
sSizedArray m_sizedArray; |
||||
|
size_t m_bufferSize; |
||||
|
size_t m_counter; |
||||
|
Data * m_array; |
||||
|
}; |
||||
|
|
||||
|
} /* namespace rijnfel */ |
||||
|
|
||||
|
#endif /* APP_PROVIDER_BUFFER_H_ */ |
Loading…
Reference in new issue