Skip to content
Snippets Groups Projects
DataThread.h 1.72 KiB
/*
    ------------------------------------------------------------------

    This file is part of the Open Ephys GUI
    Copyright (C) 2012 Open Ephys

    ------------------------------------------------------------------

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/

#ifndef __DATATHREAD_H_C454F4DB__
#define __DATATHREAD_H_C454F4DB__

#include "../../../JuceLibraryCode/JuceHeader.h"
#include <stdio.h>
#include "DataBuffer.h"

/**

  Abstract base class for a data input thread owned by the SourceNode.

  @see SourceNode

*/


class SourceNode;


class DataThread : public Thread
{

public:

	DataThread(SourceNode* sn);
	~DataThread();

	void run();

	DataBuffer* getBufferAddress();

	virtual bool updateBuffer() = 0;

	DataBuffer* dataBuffer;

	virtual bool foundInputSource() = 0;
	virtual bool startAcquisition() = 0;
	virtual bool stopAcquisition() = 0;
	virtual int getNumChannels() = 0;
	virtual float getSampleRate() = 0;

	SourceNode* sn;

private:

    JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (DataThread);

};


#endif  // __DATATHREAD_H_C454F4DB__