|
From: <pf...@us...> - 2012-05-10 07:49:29
|
Revision: 803
http://openautomation.svn.sourceforge.net/openautomation/?rev=803&view=rev
Author: pfry
Date: 2012-05-10 07:49:18 +0000 (Thu, 10 May 2012)
Log Message:
-----------
Mini-Patch, betrifft m?\195?\182gliche Zirkellogiken (Logiken, die sich selbst wieder aufrufen und damit zu Endlosschleifen f?\195?\188hren)
Modified Paths:
--------------
wiregate/plugin/generic/Logikprozessor.pl
Modified: wiregate/plugin/generic/Logikprozessor.pl
===================================================================
--- wiregate/plugin/generic/Logikprozessor.pl 2012-05-09 20:59:51 UTC (rev 802)
+++ wiregate/plugin/generic/Logikprozessor.pl 2012-05-10 07:49:18 UTC (rev 803)
@@ -232,15 +232,8 @@
# Aufruf der Logik-Engine
my $result=execute_logic($t, $receive, $ga, $in);
- # In bestimmten Sonderfaellen nichts schicken
- unless(defined $result) # Resultat undef => nichts senden
- {
- plugin_log($plugname, "$ga:$in -> \$logic{$t}{receive}(Logik) -> nichts zu senden") if $debug;
- next;
- }
-
# Zirkelaufruf ausschliessen
- if($sender_is_wiregate && $in eq $result)
+ if($sender_is_wiregate && $in == $result)
{
# kommt transmit-GA unter den receive-GAs vor?
# Wenn transmit_ga gesetzt ist, ist das schon mal der Fall
@@ -249,9 +242,16 @@
next if ref $receive && grep /^$transmit$/, @{$receive};
}
+ # In bestimmten Sonderfaellen nichts schicken
+ unless(defined $result) # Resultat undef => nichts senden
+ {
+ plugin_log($plugname, "$ga:$in -> \$logic{$t}{receive}(Logik) -> nichts zu senden") if $debug;
+ next;
+ }
+
if($logic{$t}{transmit_only_on_request})
{
- plugin_log($plugname, "$ga:$in -> \$logic{$t}{receive}(Logik) -> $transmit:$result, wird erst auf spaeteres Lesetelegramm versendet")
+ plugin_log($plugname, "$ga:$in -> \$logic{$t}{receive}(Logik) -> $transmit:$result gespeichert")
if $debug;
next;
}
@@ -312,10 +312,10 @@
# Timer loeschen bzw. neu setzen
set_next_call($t, $debug);
- next unless defined $result;
- next if $toor;
-
- knx_write($transmit, $result);
+ if(defined $result && !$toor)
+ {
+ knx_write($transmit, $result);
+ }
}
else # noch nicht faelliger Timer
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|