l@270
|
1 /***** OSCServer.h *****/
|
l@270
|
2 #ifndef __OSCServer_H_INCLUDED__
|
l@270
|
3 #define __OSCServer_H_INCLUDED__
|
l@270
|
4
|
l@270
|
5 #include <UdpServer.h>
|
l@270
|
6 #include <oscpkt.hh>
|
giuliomoro@301
|
7 #include <Bela.h>
|
l@270
|
8 #include <queue>
|
l@270
|
9
|
l@270
|
10 #define UDP_RECIEVE_TIMEOUT_MS 20
|
l@270
|
11 #define UDP_RECIEVE_MAX_LENGTH 16384
|
l@270
|
12
|
l@270
|
13 class OSCServer{
|
l@270
|
14 public:
|
l@270
|
15 OSCServer();
|
l@270
|
16
|
l@270
|
17 // must be called once during setup
|
l@270
|
18 void setup(int port);
|
l@270
|
19
|
l@270
|
20 // returns true if messages are queued
|
l@270
|
21 // audio-thread safe
|
l@270
|
22 bool messageWaiting();
|
l@270
|
23
|
l@270
|
24 // removes and returns the oldest message from the queue
|
l@270
|
25 // audio-thread safe, but don't call unless messageWaiting() returns true
|
l@270
|
26 oscpkt::Message popMessage();
|
l@270
|
27
|
l@270
|
28 // if there are OSC messages waiting, decode and queue them
|
l@270
|
29 // not audio-thread safe!
|
l@270
|
30 void recieveMessageNow(int timeout);
|
l@270
|
31
|
l@270
|
32 private:
|
l@270
|
33 int port;
|
l@270
|
34 UdpServer socket;
|
l@270
|
35
|
l@270
|
36 AuxiliaryTask OSCRecieveTask;
|
l@270
|
37
|
l@270
|
38 void createAuxTasks();
|
l@270
|
39 void messageCheck();
|
l@270
|
40
|
l@270
|
41 static void checkMessages(void*);
|
l@270
|
42
|
l@270
|
43 int inBuffer[UDP_RECIEVE_MAX_LENGTH];
|
l@270
|
44 std::queue<oscpkt::Message> inQueue;
|
l@270
|
45 oscpkt::Message poppedMessage;
|
l@270
|
46 oscpkt::PacketReader pr;
|
l@270
|
47 };
|
l@270
|
48
|
l@270
|
49
|
giuliomoro@301
|
50 #endif
|