2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-07 16:59:18 +00:00

f98_freezemon: Fixed a weird bug when CatchFnCalls was enabled

git-svn-id: https://svn.fhem.de/fhem/trunk@18087 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
KernSani 2018-12-29 19:33:14 +00:00
parent 0feca21542
commit 5650a62a3a

View File

@ -22,6 +22,7 @@
#
##############################################################################
# Changelog:
# 0.0.22: Fixed a weird bug when CatchFnCalls was enabled
# 0.0.21: Added direct help for set, get and attr commands
# 0.0.20: Internal changes
# improved handling of blocking calls
@ -96,7 +97,7 @@ use B qw(svref_2object);
use Blocking;
use vars qw($FW_CSRF);
my $version = "0.0.21";
my $version = "0.0.22";
my @logqueue = ();
my @fmCmd = ();
@ -160,7 +161,7 @@ sub freezemon_Define($$) {
$hash->{STATE} = "inactive";
$hash->{helper}{DISABLED} = 1;
}
$hash->{VERSION} = $version;
return undef;
}
@ -542,7 +543,7 @@ sub freezemon_Set($@) {
my $usage = "Unknown argument $cmd, choose one of active:noArg inactive:noArg clear:noArg";
return "\"set $name\" needs at least one argument" unless ( defined($cmd) );
Log3 $name,5, "$name Coming with command $cmd";
if ( $cmd eq "inactive" ) {
RemoveInternalTimer($hash);
readingsSingleUpdate( $hash, "state", "inactive", 1 );
@ -550,7 +551,7 @@ sub freezemon_Set($@) {
freezemon_unwrap_all($hash);
}
elsif ( $cmd eq "active" ) {
if ( IsDisabled($name) && !AttrVal( $name, "disable", undef ) ) {
if ( IsDisabled($name) ) { #&& !AttrVal( $name, "disable", undef ) ) {
freezemon_start($hash);
}
else {
@ -573,6 +574,7 @@ sub freezemon_Set($@) {
readingsEndUpdate( $hash, 1 );
}
else {
Log3 $name,5, "$name leaving with $usage";
return $usage;
}
return undef;
@ -587,7 +589,7 @@ sub freezemon_Get($@) {
my $usage = 'Unknown argument $a[1], choose one of freeze:noArg log:';
return "\"get $name\" needs at least one argument" unless ( defined( $a[1] ) );
Log3 $name,5, "$name GET Coming with command $a[1]";
#get the logfiles
my @fl = freezemon_getLogFiles($name);
@ -650,6 +652,7 @@ sub freezemon_Get($@) {
# return usage hint
else {
Log3 $name,5, "GET $name leaving with $usage";
return $usage;
}
return undef;
@ -941,7 +944,7 @@ sub freezemon_callFn($@) {
# take current time, then immediately call the original function
my $t0 = [gettimeofday];
my $result = $lfn->(@args);
my ($result,$p) = $lfn->(@args);
my $ms = tv_interval($t0);
my $d = $args[0];
my $n = $args[1];
@ -952,7 +955,8 @@ sub freezemon_callFn($@) {
#$fm_fn .= "$n:$d ";
Log3 undef, 3, "[Freezemon] Long function call detected $n:$d - $ms seconds";
}
return $result;
return ($result,$p) if ($p) ;
return $result;
}
###################################
sub freezemon_analyzeCommand($$$;$) {
@ -1293,7 +1297,7 @@ sub freezemon_getLogPath($) {
<b>Readings</b>
<ul>
<ul>
<li>freezeTime: Duration of the freeze</li>
<li><a name="freezeTime">freezeTime</a>: Duration of the freeze</li>
<li>freezeDevice: List of functions(Devices) that possibly caused the freeze</li>
<li>fcDay: cumulated no. of freezes per day</li>
<li>ftDay: cumulated duration of freezes per day</li>