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

Monitor for the GARAGE_CMD file in the new DMX/cmd folder

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

+ 20 - 1
dmx/state.pl

@@ -25,6 +25,8 @@ my %MON_FILES     = (
 	'LIGHTS'      => 'EXISTS',
 	'LIGHTS'      => 'EXISTS',
 	'FAN_CMD'     => 'EXISTS',
 	'FAN_CMD'     => 'EXISTS',
 	'RAVE'        => 'EXISTS_OFF',
 	'RAVE'        => 'EXISTS_OFF',
+
+	'/mnt/media/DMX/cmd/GARAGE_CMD' => 'EXISTS_CLEAR',
 );
 );
 
 
 # App config
 # App config
@@ -74,6 +76,12 @@ foreach my $file (keys(%MON_FILES)) {
 		'status' => 0,
 		'status' => 0,
 		'last'   => 0,
 		'last'   => 0,
 	);
 	);
+
+	# Allow absolute paths to override the $DATA_DIR path
+	if ($file =~ /^\//) {
+		$tmp{$path} = $file;
+	}
+
 	$files{$file} = \%tmp;
 	$files{$file} = \%tmp;
 }
 }
 
 
@@ -197,7 +205,7 @@ while (1) {
 		$state = 'OFF';
 		$state = 'OFF';
 	}
 	}
 
 
-	# Clear exists files when the main state is "OFF"
+	# Clear exists files when the main state is "OFF" (and before we append their status)
 	foreach my $file (values(%files)) {
 	foreach my $file (values(%files)) {
 		if ($file->{'type'} eq 'EXISTS' && $file->{'status'} && $state eq 'OFF') {
 		if ($file->{'type'} eq 'EXISTS' && $file->{'status'} && $state eq 'OFF') {
 			unlink($file->{'path'});
 			unlink($file->{'path'});
@@ -219,6 +227,17 @@ while (1) {
 		$state .= ' (' . join(', ', @exists) . ')';
 		$state .= ' (' . join(', ', @exists) . ')';
 	}
 	}
 
 
+	# Clear exists_clear files immediately (but after we append their status)
+	foreach my $file (values(%files)) {
+		if ($file->{'type'} eq 'EXISTS_CLEAR' && $file->{'status'}) {
+			unlink($file->{'path'});
+			$file->{'stauts'} = 0;
+			if ($DEBUG) {
+				print STDERR 'Clearing exists flag for: ' . $file->{'name'} . "\n";
+			}
+		}
+	}
+
 	# Force updates on a periodic basis
 	# Force updates on a periodic basis
 	if (time() - $pushLast > $PUSH_TIMEOUT) {
 	if (time() - $pushLast > $PUSH_TIMEOUT) {
 		$update = 1;
 		$update = 1;