Mercurial > hg > beaglert
diff include/ReceiveAudioThread.h @ 117:ada68d50e56a scope-refactoring
ReceiveAudioThread hs been ported to BBB. The scope project now is sending audio locally and receiving it at the same time
author | Giulio Moro <giuliomoro@yahoo.it> |
---|---|
date | Thu, 20 Aug 2015 16:37:15 +0100 |
parents | |
children | c692827083e1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/ReceiveAudioThread.h Thu Aug 20 16:37:15 2015 +0100 @@ -0,0 +1,55 @@ +#ifndef RECEIVEAUDIOTHREAD_H_INCLUDED +#define RECEIVEAUDIOTHREAD_H_INCLUDED +#include <vector> +#include <iostream> +#include <UdpServer.h> +#include <BeagleRT.h> +#include <native/task.h> + +class ReceiveAudioThread{ +private: + // FILE *fd; //DEBUG + // FILE *fd2; //DEBUG + UdpServer socket; +//JUCE DatagramSocket socket; + bool listening; + bool bufferReady; + bool threadIsExiting; + bool threadRunning; + float *buffer; + float *stackBuffer; + int bufferLength; + float readPointer; + int writePointer; + int lastValidPointer; + int sleepTime; + int waitForSocketTime; + int payloadLength; //size of the payload of each datagram + int headerLength; //size of the header of each datagram + int bytesToRead; + int threadPriority; + void dealloc(); + void wrapWritePointer(); + void pushPayload(int startIndex); + void popPayload(int startIndex); + int readUdpToBuffer(); + bool threadShouldExit(); + static AuxiliaryTask receiveDataTask; //TODO: allow different AuxiliaryTasks for different priorities (e.g.: audio vs scope) +// static std::vector<NetworkReceive *> objAddrs; +public: + ReceiveAudioThread(); + ~ReceiveAudioThread(); + void init(int aSamplesPerBlock); + void setup(); + void bindToPort(int aPort); + bool isListening(); + float* getCurrentBuffer(int length); + int getSamplesSrc(float *destination, int length, float samplingRateRatio); + bool isBufferReady(); + void run(); + void startThread(); + void stopThread(); +// static int getNumInstances(); +// static void receiveAllData(); +}; +#endif // RECEIVEAUDIOTHREAD_H_INCLUDED