Code cleanup

This commit is contained in:
Will Tatam
2023-03-23 20:42:10 +00:00
parent fb7fa5ab6c
commit 733740da8f
4 changed files with 15 additions and 16 deletions

View File

@@ -98,7 +98,9 @@ void handleDMX() {}
dmx_port_t dmxPort = 2; dmx_port_t dmxPort = 2;
void initDMX() { void initDMX() {
/* Set the DMX hardware pins to the pins that we want to use. */ /* Set the DMX hardware pins to the pins that we want to use. */
int dmxTransmitPin, dmxReceivePin, dmxEnablePin = -1; int dmxTransmitPin = 2;
int dmxReceivePin = 27;
int dmxEnablePin = -1;
dmx_set_pin(dmxPort, dmxTransmitPin, dmxReceivePin, dmxEnablePin); dmx_set_pin(dmxPort, dmxTransmitPin, dmxReceivePin, dmxEnablePin);
/* Now we can install the DMX driver! We'll tell it which DMX port to use and /* Now we can install the DMX driver! We'll tell it which DMX port to use and
@@ -112,9 +114,8 @@ bool dmxIsConnected = false;
unsigned long dmxLastUpdate = 0; unsigned long dmxLastUpdate = 0;
void handleDMXInput() { void handleDMXInput() {
byte data[DMX_PACKET_SIZE]; byte dmxdata[DMX_PACKET_SIZE];
/* We need a place to store information about the DMX packets we receive. We
will use a dmx_packet_t to store that packet information. */
dmx_packet_t packet; dmx_packet_t packet;
/* And now we wait! The DMX standard defines the amount of time until DMX /* And now we wait! The DMX standard defines the amount of time until DMX
@@ -122,7 +123,6 @@ void handleDMXInput() {
ticks using the constant `DMX_TIMEOUT_TICK`. If it takes longer than that ticks using the constant `DMX_TIMEOUT_TICK`. If it takes longer than that
amount of time to receive data, this if statement will evaluate to false. */ amount of time to receive data, this if statement will evaluate to false. */
if (dmx_receive(dmxPort, &packet, DMX_TIMEOUT_TICK)) { if (dmx_receive(dmxPort, &packet, DMX_TIMEOUT_TICK)) {
/* If this code gets called, it means we've received DMX data! */
/* Get the current time since boot in milliseconds so that we can find out /* Get the current time since boot in milliseconds so that we can find out
how long it has been since we last updated data and printed to the Serial how long it has been since we last updated data and printed to the Serial
@@ -137,14 +137,12 @@ void handleDMXInput() {
dmxIsConnected = true; dmxIsConnected = true;
} }
/* Don't forget we need to actually read the DMX data into our buffer so /* read the DMX data into our buffer */
that we can print it out. */ dmx_read(dmxPort, dmxdata, packet.size);
dmx_read(dmxPort, data, packet.size);
if (now - dmxLastUpdate > 1000) { if (now - dmxLastUpdate > 1000) {
/* Print the received start code - it's usually 0. */ /* Print the received start code - it's usually 0. */
DEBUG_PRINTF("Start code is 0x%02X and slot 1 is 0x%02X\n", data[0], DEBUG_PRINTF("Start code is 0x%02X and slot 1 is 0x%02X and slot 2 is 0x%02X \n", dmxdata[0], dmxdata[1], dmxdata[2]);
data[1]);
dmxLastUpdate = now; dmxLastUpdate = now;
} }
} else { } else {
@@ -155,11 +153,12 @@ void handleDMXInput() {
DEBUG_PRINTLN("A DMX error occurred."); DEBUG_PRINTLN("A DMX error occurred.");
} }
} else if (dmxIsConnected) { } else if (dmxIsConnected) {
dmxIsConnected = false;
DEBUG_PRINTLN("DMX was disconnected."); DEBUG_PRINTLN("DMX was disconnected.");
} }
if(dmxIsConnected) { if(dmxIsConnected) {
DEBUG_PRINTF("DMX channel 1 = %u\n", data(1)); // TODO: remove from final code // DEBUG_PRINTF("DMX channel 1 = %u\n", dmxdata[1]);
handleDMXData(1, 512, data, 1, REALTIME_MODE_DMX, 0); handleDMXData(1, 512, dmxdata, REALTIME_MODE_DMX, 0);
} }
} }
#else #else

View File

@@ -111,10 +111,10 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
// update status info // update status info
realtimeIP = clientIP; realtimeIP = clientIP;
handleDMXData(uni, dmxChannels, e131_data, seq, mde, previousUniverses); handleDMXData(uni, dmxChannels, e131_data, mde, previousUniverses);
} }
void handleDMXData(uint16_t uni, uint16_t dmxChannels, uint8_t* e131_data, uint8_t seq, uint8_t mde, uint8_t previousUniverses) { void handleDMXData(uint16_t uni, uint16_t dmxChannels, uint8_t* e131_data, uint8_t mde, uint8_t previousUniverses) {
#ifdef WLED_ENABLE_DMX #ifdef WLED_ENABLE_DMX
// does not act on out-of-order packets yet // does not act on out-of-order packets yet
if (e131ProxyUniverse > 0 && uni == e131ProxyUniverse) { if (e131ProxyUniverse > 0 && uni == e131ProxyUniverse) {

View File

@@ -75,7 +75,7 @@ void handleDMXInput();
//e131.cpp //e131.cpp
void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol); void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol);
void handleDMXData(uint16_t uni, uint16_t dmxChannels, uint8_t* e131_data, uint8_t seq, uint8_t mde, uint8_t previousUniverses); void handleDMXData(uint16_t uni, uint16_t dmxChannels, uint8_t* e131_data, uint8_t mde, uint8_t previousUniverses);
void handleArtnetPollReply(IPAddress ipAddress); void handleArtnetPollReply(IPAddress ipAddress);
void prepareArtnetPollReply(ArtPollReply* reply); void prepareArtnetPollReply(ArtPollReply* reply);
void sendArtnetPollReply(ArtPollReply* reply, IPAddress ipAddress, uint16_t portAddress); void sendArtnetPollReply(ArtPollReply* reply, IPAddress ipAddress, uint16_t portAddress);

View File

@@ -554,7 +554,7 @@ void WLED::setup()
ArduinoOTA.setHostname(cmDNS); ArduinoOTA.setHostname(cmDNS);
} }
#endif #endif
#ifdef WLED_ENABLE_DMX #if defined(WLED_ENABLE_DMX) || defined(WLED_ENABLE_DMX_INPUT)
initDMX(); initDMX();
#endif #endif