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