forked from benkuper/juce_dmx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDMXManager.cpp
60 lines (48 loc) · 1.07 KB
/
DMXManager.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
==============================================================================
DMXManager.cpp
Created: 6 Apr 2017 10:23:15pm
Author: Ben
==============================================================================
*/
#include "JuceHeader.h"
juce_ImplementSingleton(DMXManager)
DMXManager::DMXManager() :
Thread("ArtNetRead")
{
artNetUDP.bindToPort(3333);
startTimer(1000);
startThread();
}
DMXManager::~DMXManager()
{
stopThread(1000);
}
void DMXManager::checkForArtNetDevices()
{
sendArtNetPollRequest(ARTNET_FULL_INFO);
}
void DMXManager::sendArtNetPollRequest(int type)
{
const char typeData[1]{ (char)type };
artNetUDP.write(IPAddress::broadcast().toString(), ARTNET_PORT, "ESPP", 4);
artNetUDP.write(IPAddress::broadcast().toString(), ARTNET_PORT, typeData, 1);
}
void DMXManager::timerCallback()
{
checkForArtNetDevices();
}
void DMXManager::run()
{
uint8 buffer[600];
while (threadShouldExit())
{
String remoteIP;
int remotePort;
int numBytes = artNetUDP.read(buffer, 600, false, remoteIP, remotePort);
if (numBytes > 0)
{
}
wait(20);
}
}