Преглед изворни кода

Provide emergency lighting when STATE is not available

Zachary Kotlarek пре 13 година
родитељ
комит
0de4830f16
7 измењених фајлова са 70 додато и 48 уклоњено
  1. 6 4
      dmx/audio.pl
  2. 7 6
      dmx/bias.pl
  3. 7 6
      dmx/fan.pl
  4. 7 6
      dmx/garage.pl
  5. 18 14
      dmx/leds.pl
  6. 8 6
      dmx/overhead.pl
  7. 17 6
      dmx/rope.pl

+ 6 - 4
dmx/audio.pl

@@ -36,10 +36,6 @@ if ($ENV{'DEBUG'}) {
 	$DEBUG = 1;
 }
 
-# Sockets
-DMX::stateSocket($STATE_SOCK);
-DMX::stateSubscribe($STATE_SOCK);
-
 # State
 my $state      = 'OFF';
 my $stateLast  = $state;
@@ -50,7 +46,13 @@ my $pushLast   = 0;
 my $pullLast   = time();
 my $update     = 0;
 
+# Sockets
+DMX::stateSocket($STATE_SOCK);
+DMX::stateSubscribe($STATE_SOCK);
+
 # Always force the output to default at launch
+# In most components this happens before state subscription
+# but here we want to avoid making any changes while STATE is not available
 system(@AUDIO_SET, $DEVS{'DEFAULT'});
 
 # Loop forever

+ 7 - 6
dmx/bias.pl

@@ -36,10 +36,6 @@ foreach my $key (keys(%DIM)) {
 	$VALID{$key} = 1;
 }
 
-# Sockets
-DMX::stateSocket($STATE_SOCK);
-DMX::stateSubscribe($STATE_SOCK);
-
 # State
 my $state     = 'OFF';
 my $stateLast = $state;
@@ -48,8 +44,13 @@ my $pushLast  = 0;
 my $pullLast  = time();
 my $update    = 0;
 
-# Always force lights out at launch
-DMX::dim({ 'channel' => 12, 'value' => 0, 'time' => 0 });
+# Always force lights into OFF at launch
+$state = 'OFF';
+DMX::applyDataset($DIM{$state}, $state, $OUTPUT_FILE);
+
+# Sockets
+DMX::stateSocket($STATE_SOCK);
+DMX::stateSubscribe($STATE_SOCK);
 
 # Loop forever
 while (1) {

+ 7 - 6
dmx/fan.pl

@@ -28,10 +28,6 @@ if ($ENV{'DEBUG'}) {
 	$DEBUG = 1;
 }
 
-# Sockets
-DMX::stateSocket($STATE_SOCK);
-DMX::stateSubscribe($STATE_SOCK);
-
 # State
 my $state     = 'OFF';
 my $stateLast = $state;
@@ -41,8 +37,13 @@ my $pushLast  = 0;
 my $pullLast  = time();
 my $update    = 0;
 
-# Always force lights out at launch
-DMX::dim({ 'channel' => 11, 'value' => 0, 'time' => 0 });
+# Always force lights into OFF at launch
+$state = 'OFF';
+DMX::applyDataset($DIM{$state}, $state, $OUTPUT_FILE);
+
+# Sockets
+DMX::stateSocket($STATE_SOCK);
+DMX::stateSubscribe($STATE_SOCK);
 
 # Loop forever
 while (1) {

+ 7 - 6
dmx/garage.pl

@@ -30,10 +30,6 @@ if ($ENV{'DEBUG'}) {
 	$DEBUG = 1;
 }
 
-# Sockets
-DMX::stateSocket($STATE_SOCK);
-DMX::stateSubscribe($STATE_SOCK);
-
 # State
 my $state     = 'OFF';
 my $stateLast = $state;
@@ -42,8 +38,13 @@ my $pushLast  = 0;
 my $pullLast  = time();
 my $update    = 0;
 
-# Always force lights out at launch
-DMX::dim({ 'channel' => 16, 'value' => 0, 'time' => 0 });
+# Always force lights into OFF at launch
+$state = 'OFF';
+DMX::applyDataset($DIM{$state}, $state, $OUTPUT_FILE);
+
+# Sockets
+DMX::stateSocket($STATE_SOCK);
+DMX::stateSubscribe($STATE_SOCK);
 
 # Loop forever
 while (1) {

+ 18 - 14
dmx/leds.pl

@@ -26,9 +26,9 @@ my %DIM            = (
 		{ 'channel' => 15,  'value' => 0,   'time' => 60000 },
 	],
 	'PLAY'      => [
-		{ 'channel' => 13, 'value' => 10,   'time' => 500  },
-		{ 'channel' => 14, 'value' => 10,   'time' => 500  },
-		{ 'channel' => 15, 'value' => 8,    'time' => 500  },
+		{ 'channel' => 13, 'value' => 10,   'time' => 500 },
+		{ 'channel' => 14, 'value' => 10,   'time' => 500 },
+		{ 'channel' => 15, 'value' => 8,    'time' => 500 },
 	],
 	'PLAY_HIGH' => [
 		{ 'channel' => 13, 'value' => 64,  'time' => 1000, 'delay' => 3000 },
@@ -41,9 +41,14 @@ my %DIM            = (
 		{ 'channel' => 15, 'value' => 96,  'time' => 3000, 'delay' => 7000 },
 	],
 	'MOTION'    => [
-		{ 'channel' => 13, 'value' => 144, 'time' => 1000  },
-		{ 'channel' => 14, 'value' => 144, 'time' => 1000  },
-		{ 'channel' => 15, 'value' => 144, 'time' => 1000  },
+		{ 'channel' => 13, 'value' => 144, 'time' => 1000 },
+		{ 'channel' => 14, 'value' => 144, 'time' => 1000 },
+		{ 'channel' => 15, 'value' => 144, 'time' => 1000 },
+	],
+	'ERROR'    => [
+		{ 'channel' => 13, 'value' => 144, 'time' => 0 },
+		{ 'channel' => 14, 'value' => 255, 'time' => 0 },
+		{ 'channel' => 15, 'value' => 144, 'time' => 0 },
 	],
 );
 
@@ -75,10 +80,6 @@ foreach my $key (keys(%DIM)) {
 	$VALID{$key} = 1;
 }
 
-# Sockets
-DMX::stateSocket($STATE_SOCK);
-DMX::stateSubscribe($STATE_SOCK);
-
 # State
 my $state       = 'OFF';
 my $stateLast   = $state;
@@ -89,10 +90,13 @@ my $update      = 0;
 my @COLOR       = ();
 my $colorChange = time();
 
-# Always force lights out at launch
-DMX::dim({ 'channel' => 13, 'value' => 0, 'time' => 0 });
-DMX::dim({ 'channel' => 14, 'value' => 0, 'time' => 0 });
-DMX::dim({ 'channel' => 15, 'value' => 0, 'time' => 0 });
+# Always force lights into ERROR at launch
+$state = 'ERROR';
+DMX::applyDataset($DIM{$state}, $state, $OUTPUT_FILE);
+
+# Sockets
+DMX::stateSocket($STATE_SOCK);
+DMX::stateSubscribe($STATE_SOCK);
 
 # Loop forever
 while (1) {

+ 8 - 6
dmx/overhead.pl

@@ -15,6 +15,7 @@ my %DIM = (
 	'PLAY_HIGH' => [ { 'channel' => 4, 'value' => 48,  'time' => 500 }, ],
 	'PAUSE'     => [ { 'channel' => 4, 'value' => 96,  'time' => 6000, 'delay' => 9000 }, ],
 	'MOTION'    => [ { 'channel' => 4, 'value' => 128, 'time' => 2500 }, ],
+	'ERROR'     => [ { 'channel' => 4, 'value' => 255, 'time' => 0 }, ],
 );
 
 # App config
@@ -37,10 +38,6 @@ foreach my $key (keys(%DIM)) {
 	$VALID{$key} = 1;
 }
 
-# Sockets
-DMX::stateSocket($STATE_SOCK);
-DMX::stateSubscribe($STATE_SOCK);
-
 # State
 my $state     = 'OFF';
 my $stateLast = $state;
@@ -50,8 +47,13 @@ my $pushLast  = 0;
 my $pullLast  = time();
 my $update    = 0;
 
-# Always force lights out at launch
-DMX::dim({ 'channel' => 4, 'value' => 0, 'time' => 0 });
+# Always force lights into ERROR at launch
+$state = 'ERROR';
+DMX::applyDataset($DIM{$state}, $state, $OUTPUT_FILE);
+
+# Sockets
+DMX::stateSocket($STATE_SOCK);
+DMX::stateSubscribe($STATE_SOCK);
 
 # Loop forever
 while (1) {

+ 17 - 6
dmx/rope.pl

@@ -60,6 +60,16 @@ my %DIM = (
 		{ 'channel' => 8,  'value' => 96,  'time' => 2000  },
 		{ 'channel' => 9,  'value' => 96,  'time' => 1500  },
 	],
+	'ERROR'    => [
+		{ 'channel' => 1,  'value' => 0,   'time' => 0  },
+		{ 'channel' => 2,  'value' => 0,   'time' => 0  },
+		{ 'channel' => 3,  'value' => 255, 'time' => 0  },
+		{ 'channel' => 5,  'value' => 0,   'time' => 0  },
+		{ 'channel' => 6,  'value' => 0,   'time' => 0  },
+		{ 'channel' => 7,  'value' => 0,   'time' => 0  },
+		{ 'channel' => 8,  'value' => 0,   'time' => 0  },
+		{ 'channel' => 9,  'value' => 0,   'time' => 0  },
+	],
 );
 
 # App config
@@ -82,10 +92,6 @@ foreach my $key (keys(%DIM)) {
 	$VALID{$key} = 1;
 }
 
-# Sockets
-DMX::stateSocket($STATE_SOCK);
-DMX::stateSubscribe($STATE_SOCK);
-
 # State
 my $state     = 'OFF';
 my $stateLast = $state;
@@ -94,8 +100,13 @@ my $pushLast  = 0;
 my $pullLast  = time();
 my $update    = 0;
 
-# Always force lights out at launch
-DMX::dim({ 'channel' => 0, 'value' => 0, 'time' => 0 });
+# Always force lights into ERROR at launch
+$state = 'ERROR';
+DMX::applyDataset($DIM{$state}, $state, $OUTPUT_FILE);
+
+# Sockets
+DMX::stateSocket($STATE_SOCK);
+DMX::stateSubscribe($STATE_SOCK);
 
 # Loop forever
 while (1) {