The codebase to run the *spark d-fuser controller www.sparkav.co.uk/dvimixer

Dependencies:   SPK-TVOne DMX DmxArtNet NetServicesMin OSC PinDetect mRotaryEncoder iniparser mbed spk_oled_ssd1305 filter

Revision:
77:20f948d4885e
Parent:
76:f56c2b955535
diff -r f56c2b955535 -r 20f948d4885e main.cpp
--- a/main.cpp	Tue Dec 10 15:51:54 2013 +0000
+++ b/main.cpp	Fri Jan 17 15:04:33 2014 +0000
@@ -305,8 +305,8 @@
 {
     if (artNet->Work()) 
     {
-        int xFadeDMX = artNet->DmxIn[0][0];
-        int fadeUpDMX = artNet->DmxIn[0][1];
+        int xFadeDMX = artNet->DmxIn[settings.artNet.universe][settings.dmx.inChannelXFade];
+        int fadeUpDMX = artNet->DmxIn[settings.artNet.universe][settings.dmx.inChannelFadeUp];
     
         commsXFade  = (float)xFadeDMX/255;
         commsFadeUp = (float)fadeUpDMX/255;
@@ -329,10 +329,19 @@
     int xFadeDMX = xFade*255;
     int fadeUpDMX = fadeUp*255;
     
-    // Universe 0, Channel 0 = xFade, Channel 1 = fadeUp
-    char dmxData[2] = {xFadeDMX, fadeUpDMX};
-    artNet->Send_ArtDmx(0, 0, dmxData, 2);
+    // Create array for all 512 DMX channels in the universe
+    char dmxData[512];
     
+    // Don't set every other channel to 0, rather channel values we already have
+    memcpy(dmxData, artNet->DmxIn[settings.artNet.universe], 512);
+        
+    // Set fade channels
+    dmxData[settings.dmx.outChannelXFade] = xFadeDMX;
+    dmxData[settings.dmx.outChannelFadeUp] = fadeUpDMX;
+    
+    // Send
+    artNet->Send_ArtDmx(settings.artNet.universe, 0, dmxData, 512);
+
     char statusMessageBuffer[kStringBufferLength];
     snprintf(statusMessageBuffer, kStringBufferLength, "A'Net Out: xF%3i fUp %3i", xFadeDMX, fadeUpDMX);
     screen.clearBufferRow(kCommsStatusLine);