3 changed files with 114 additions and 2 deletions
			
			
		@ -0,0 +1,44 @@ | 
				
			|||
//----------------------------------------------------------------------------------------------------------------------------
 | 
				
			|||
// Project:     Uppsense
 | 
				
			|||
// Name:        signal_processor.cpp
 | 
				
			|||
// Author:      Maximilian Stiefel
 | 
				
			|||
// Date:        22.08.2017
 | 
				
			|||
//
 | 
				
			|||
// Description:
 | 
				
			|||
//
 | 
				
			|||
//----------------------------------------------------------------------------------------------------------------------------
 | 
				
			|||
 | 
				
			|||
//-------------------------------------Libraries------------------------------------------------------------------------------
 | 
				
			|||
#include "signal_processor.h" | 
				
			|||
#include <SmingCore/SmingCore.h> | 
				
			|||
 | 
				
			|||
//-------------------------------------Namespaces-----------------------------------------------------------------------------
 | 
				
			|||
namespace rijnfel { | 
				
			|||
 | 
				
			|||
cSignalProcessor* cSignalProcessor::s_instance = NULL; | 
				
			|||
 | 
				
			|||
//-------------------------------------GetInstance----------------------------------------------------------------------------
 | 
				
			|||
cSignalProcessor* cSignalProcessor::GetInstance() | 
				
			|||
{ | 
				
			|||
	if(s_instance == NULL) | 
				
			|||
		s_instance = new cSignalProcessor; | 
				
			|||
	return s_instance; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
//-------------------------------------receiveADCValues-----------------------------------------------------------------------
 | 
				
			|||
void cSignalProcessor::receiveADCValues(cADC<ads::ads_sample_t, int32_t> & i_adc, cDoubleBuffer<ads::ads_sample_t>& i_adcBuffer) { | 
				
			|||
        ads::ads_sample_t * buf = &i_adcBuffer.GetReadyBuffer()[0]; | 
				
			|||
        if (buf != NULL) { | 
				
			|||
                int pos = buf->mux - ads::eInputMux::AIN_0; | 
				
			|||
                int64_t average = 0; | 
				
			|||
                int size = i_adcBuffer.GetSize(); | 
				
			|||
                for (int i = 0; i < size; i++) { | 
				
			|||
                        average += i_adc.ConvertSample(buf[i]);                  | 
				
			|||
                } | 
				
			|||
                if (size != 0) { | 
				
			|||
                        average /= size; | 
				
			|||
                } | 
				
			|||
       		Serial.printf("Average: %d/n/r", average);          | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
} | 
				
			|||
@ -0,0 +1,66 @@ | 
				
			|||
//----------------------------------------------------------------------------------------------------------------------------
 | 
				
			|||
// Project:    	Uppsense
 | 
				
			|||
// Name:	signal_processor.h
 | 
				
			|||
// Author:	Maximilian Stiefel
 | 
				
			|||
// Date:	22.08.2017
 | 
				
			|||
//
 | 
				
			|||
// Description: 
 | 
				
			|||
//
 | 
				
			|||
//----------------------------------------------------------------------------------------------------------------------------
 | 
				
			|||
 | 
				
			|||
#ifndef APP_SIGNAL_PROCESSOR_H_ | 
				
			|||
#define APP_SIGNAL_PROCESSOR_H_ | 
				
			|||
 | 
				
			|||
//-------------------------------------Libraries------------------------------------------------------------------------------
 | 
				
			|||
#include <stdint.h> | 
				
			|||
#include "defines.h" | 
				
			|||
#include "double_buffer.h" | 
				
			|||
#include "adc.h" | 
				
			|||
#include "ads101x.h" | 
				
			|||
 | 
				
			|||
//-------------------------------------Defines--------------------------------------------------------------------------------
 | 
				
			|||
 | 
				
			|||
//-------------------------------------Namespaces-----------------------------------------------------------------------------
 | 
				
			|||
namespace rijnfel { | 
				
			|||
 | 
				
			|||
//-------------------------------------Enums----------------------------------------------------------------------------------
 | 
				
			|||
 | 
				
			|||
//-------------------------------------cDAC101085-----------------------------------------------------------------------------
 | 
				
			|||
/** Small simple driver for the TI DAC101C085.
 | 
				
			|||
 */ | 
				
			|||
class cSignalProcessor | 
				
			|||
{ | 
				
			|||
 | 
				
			|||
public:	 | 
				
			|||
	/**
 | 
				
			|||
	  * 	@brief Returns the global cSignalProcessor instance. | 
				
			|||
	  *     Only one webserver should ever be running | 
				
			|||
	  *     @return global cSignalProcessor instance | 
				
			|||
	  *                                     */ | 
				
			|||
	static cSignalProcessor *GetInstance(); | 
				
			|||
public:	 | 
				
			|||
	/**
 | 
				
			|||
	 * 	@brief Notifies object that new samples are available. | 
				
			|||
	 * 	@param i_adc Instance of the adc sensor. | 
				
			|||
	 * 	@param i_adcBuffer Buffer containing the raw adc values. | 
				
			|||
	 *                                     */ | 
				
			|||
        void receiveADCValues(cADC<ads::ads_sample_t, int32_t> & i_adc, cDoubleBuffer<ads::ads_sample_t> & i_adcBuffer);	 | 
				
			|||
 | 
				
			|||
private: | 
				
			|||
	// Singleton instance
 | 
				
			|||
	static cSignalProcessor *s_instance; | 
				
			|||
	/**
 | 
				
			|||
	 * @brief Constructor is private, so it can not be called. | 
				
			|||
	 */ | 
				
			|||
	cSignalProcessor(){}; | 
				
			|||
	/**
 | 
				
			|||
	 * @brief Copy constructor is private, so it can not be called. | 
				
			|||
	 */ | 
				
			|||
	cSignalProcessor(cSignalProcessor const&){}; | 
				
			|||
	/**
 | 
				
			|||
	 * @brief Assignment operator is private, so it can not be used. | 
				
			|||
	 */ | 
				
			|||
	cSignalProcessor& operator=(cSignalProcessor const&){}; | 
				
			|||
}; | 
				
			|||
} | 
				
			|||
#endif /* APP_SIGNAL_PROCESSOR_H_ */ | 
				
			|||
					Loading…
					
					
				
		Reference in new issue