Zachary Kotlarek 13 лет назад
Родитель
Сommit
6417fb885e
1 измененных файлов с 17 добавлено и 9 удалено
  1. 17 9
      dmx/projectorPower.pl

+ 17 - 9
dmx/projectorPower.pl

@@ -22,7 +22,6 @@ my $PROJ_SOCK    = $DATA_DIR . 'PROJECTOR.socket';
 my $PUSH_TIMEOUT = 20;
 my $PULL_TIMEOUT = $PUSH_TIMEOUT * 3;
 my $DELAY        = $PULL_TIMEOUT / 2;
-my $CMD_DELAY    = $PUSH_TIMEOUT / 4;
 
 # Prototypes
 sub say($);
@@ -59,15 +58,17 @@ while (1) {
 
 	# Wait for state updates
 	{
+		my %mtimeTmp  = ();
 		my %existsTmp = ();
-		my $cmdState = DMX::readState($DELAY, \%existsTmp, \%mtime, undef());
+		my $cmdState = DMX::readState($DELAY, \%existsTmp, \%mtimeTmp, undef());
 		if (defined($cmdState)) {
 			$newState = $cmdState;
 			$pullLast = time();
 		}
 
-		# Only record valid exists hashes
-		if (scalar(keys(%existsTmp)) < 1) {
+		# Only record valid exists/mtime hashes
+		if (scalar(keys(%existsTmp)) > 0) {
+			%mtime  = %mtimeTmp;
 			%exists = %existsTmp;
 		}
 	}
@@ -100,9 +101,15 @@ while (1) {
 	}
 
 	# Record the shutdown timestamp, if the projector is on
+print STDERR 'NewState: ' . $newState . "\n";
 	if ($newState eq 'SHUTDOWN' && $exists{'PROJECTOR'}) {
+		if ($DEBUG) {
+			print STDERR "Recorded shutdown timestamp\n";
+		}
 		$shutdown = time();
 		$lastUser = $shutdown;
+} elsif ($newState eq 'SHUTDOWN') {
+print STDERR "Not recording shutdown because exists is false?\n";
 	}
 
 	# Calculate the elapsed time
@@ -202,20 +209,21 @@ while (1) {
 
 		# Clear the update flag
 		$update = 0;
-
-		# Wait before accepting a new command
-		sleep($CMD_DELAY);
 	}
 }
 
 # Speak
 sub say($) {
-	my $str = (@_);
+	my ($str) = @_;
+
+	if ($DEBUG) {
+		print STDERR 'Say: ' . $str . "\n";
+	}
 	system('say', $str);
 }
 
 sub sayShutdown($) {
-	my $minutesLeft = (@_);
+	my ($minutesLeft) = @_;
 
 	# Only allow annoucements once per minute
 	if (time() < $lastAnnounce + 60) {