Просмотр исходного кода

Ignore certain files when calculating the time elapsed since the last update (i.e. do not select MOTION for certain updates)

Zachary Kotlarek 13 лет назад
Родитель
Сommit
54e98d5402
1 измененных файлов с 14 добавлено и 11 удалено
  1. 14 11
      dmx/state.pl

+ 14 - 11
dmx/state.pl

@@ -5,6 +5,7 @@ use IO::Select;
 use File::Basename;
 use File::Basename;
 use File::Temp qw( tempfile );
 use File::Temp qw( tempfile );
 use Sys::Hostname;
 use Sys::Hostname;
+use IPC::System::Simple qw( system capture );
 
 
 # Local modules
 # Local modules
 use Cwd qw(abs_path);
 use Cwd qw(abs_path);
@@ -31,9 +32,7 @@ if ($HOST =~ /loki/i) {
 	my $MEDIA_PATH = undef();
 	my $MEDIA_PATH = undef();
 	{
 	{
 		my $mount = $ENV{'HOME'} . '/bin/video/mediaPath';
 		my $mount = $ENV{'HOME'} . '/bin/video/mediaPath';
-		my $path  = $ENV{'HOME'} . '/bin/video/mediaPath';
-		system($mount);
-		$MEDIA_PATH = `${path}`;
+		$MEDIA_PATH = capture($mount);
 	}
 	}
 	if (!$MEDIA_PATH || !-d $MEDIA_PATH) {
 	if (!$MEDIA_PATH || !-d $MEDIA_PATH) {
 		die("Unable to access media path\n");
 		die("Unable to access media path\n");
@@ -52,11 +51,11 @@ if ($HOST =~ /loki/i) {
 	$MON_FILES{'PLAYING'} = 'PLAYING';
 	$MON_FILES{'PLAYING'} = 'PLAYING';
 
 
 	# RiffTrax
 	# RiffTrax
-	$MON_FILES{'RIFF'} = 'VALUE';
+	$MON_FILES{'RIFF'} = 'VALUE-NOUPDATE';
 
 
 	# Motion detection
 	# Motion detection
 	$MON_FILES{'MOTION'}    = 'MTIME';
 	$MON_FILES{'MOTION'}    = 'MTIME';
-	$MON_FILES{'NO_MOTION'} = 'EXISTS';
+	$MON_FILES{'NO_MOTION'} = 'EXISTS-NOUPDATE';
 
 
 	# Projector
 	# Projector
 	$MON_FILES{'PROJECTOR'}       = 'STATUS';
 	$MON_FILES{'PROJECTOR'}       = 'STATUS';
@@ -82,10 +81,10 @@ if ($HOST =~ /loki/i) {
 	$MON_FILES{'FAN_CMD'} = 'EXISTS-ON';
 	$MON_FILES{'FAN_CMD'} = 'EXISTS-ON';
 
 
 	# OS State
 	# OS State
-	$MON_FILES{'FRONT_APP'}   = 'VALUE';
-	$MON_FILES{'COLOR'}       = 'VALUE';
-	$MON_FILES{'AUDIO'}       = 'VALUE';
-	$MON_FILES{'AUDIO_STATE'} = 'VALUE';
+	$MON_FILES{'FRONT_APP'}   = 'VALUE-NOUPDATE';
+	$MON_FILES{'COLOR'}       = 'VALUE-NOUPDATE';
+	$MON_FILES{'AUDIO'}       = 'VALUE-NOUPDATE';
+	$MON_FILES{'AUDIO_STATE'} = 'VALUE-NOUPDATE';
 
 
 	# TV
 	# TV
 	$MON_FILES{'TV'}     = 'STATUS';
 	$MON_FILES{'TV'}     = 'STATUS';
@@ -169,6 +168,7 @@ foreach my $name (keys(%MON_FILES)) {
 		'mtime'     => 0,
 		'mtime'     => 0,
 		'gui'       => 0,
 		'gui'       => 0,
 		'playing'   => 0,
 		'playing'   => 0,
+		'no_update' => 0,
 	);
 	);
 	if ($file{'type'} =~ /\bSTATUS\b/i) {
 	if ($file{'type'} =~ /\bSTATUS\b/i) {
 		$attr{'status'} = 1;
 		$attr{'status'} = 1;
@@ -197,6 +197,9 @@ foreach my $name (keys(%MON_FILES)) {
 	if ($file{'type'} =~ /\bPLAYING\b/i) {
 	if ($file{'type'} =~ /\bPLAYING\b/i) {
 		$attr{'playing'} = 1;
 		$attr{'playing'} = 1;
 	}
 	}
+	if ($file{'type'} =~ /\bNOUPDATE\b/i) {
+		$attr{'no_update'} = 1;
+	}
 
 
 	# Cross-match some data types for easy of use
 	# Cross-match some data types for easy of use
 	if ($attr{'value'} || $attr{'gui'} || $attr{'playing'}) {
 	if ($attr{'value'} || $attr{'gui'} || $attr{'playing'}) {
@@ -426,9 +429,9 @@ while (1) {
 		}
 		}
 	}
 	}
 
 
-	# Set the global update timestamp
+	# Set the global update timestamp, excluding files marked NOUPDATE
 	foreach my $file (values(%files)) {
 	foreach my $file (values(%files)) {
-		if ($file->{'update'} > $updateLast) {
+		if ($file->{'update'} > $updateLast && !$file->{'attr'}->{'no_update'}) {
 			$updateLast = $file->{'update'};
 			$updateLast = $file->{'update'};
 		}
 		}
 	}
 	}