33_readingsProxy.pm: avoid endless loops for self referencing readingsProxys

git-svn-id: https://svn.fhem.de/fhem/trunk@7650 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
justme1968
2015-01-21 10:35:30 +00:00
parent 1d013fec03
commit bbf0c08e66

View File

@@ -228,10 +228,16 @@ readingsProxy_Set($@)
readingsSingleUpdate($hash, "lastCmd", $a[0], 0);
}
Log3 $name, 4, "$name: set hash->{DEVICE} $v";
return CommandSet(undef,"$hash->{DEVICE} ".$v);
if( $hash->{INSET} ) {
Log3 $name, 2, "$name: ERROR: endless loop detected";
return "ERROR: endless loop detected for $hash->{NAME}";
}
return undef;
Log3 $name, 4, "$name: set hash->{DEVICE} $v";
$hash->{INSET} = 1;
my $ret = CommandSet(undef,"$hash->{DEVICE} ".$v);
delete($hash->{INSET});
return $ret;
}
sub
@@ -268,10 +274,16 @@ readingsProxy_Get($@)
$v = $get_fn if( $get_fn );
}
Log3 $name, 4, "$name: get hash->{DEVICE} $v";
return CommandGet(undef,"$hash->{DEVICE} ".$v);
if( $hash->{INGET} ) {
Log3 $name, 2, "$name: ERROR: endless loop detected";
return "ERROR: endless loop detected for $hash->{NAME}";
}
return undef;
Log3 $name, 4, "$name: get hash->{DEVICE} $v";
$hash->{INSET} = 1;
my$ret = CommandGet(undef,"$hash->{DEVICE} ".$v);
delete($hash->{INSET});
return $ret;
}
1;