From 7aa74a82dbca55ef3158a72c04d9ef72f2da8c2a Mon Sep 17 00:00:00 2001 From: ntruchsess Date: Thu, 31 Jul 2014 20:29:17 +0000 Subject: [PATCH] OWX_ASYNC: schedule all tasks to single queue if buspower is parasitic git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@6337 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_OWX_ASYNC.pm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/fhem/FHEM/00_OWX_ASYNC.pm b/fhem/FHEM/00_OWX_ASYNC.pm index 664d44b9d..8a97b63ae 100644 --- a/fhem/FHEM/00_OWX_ASYNC.pm +++ b/fhem/FHEM/00_OWX_ASYNC.pm @@ -127,7 +127,7 @@ my %attrs = ( ); #-- some globals needed for the 1-Wire module -$owx_async_version=5.11; +$owx_async_version=5.12; #-- Debugging 0,1,2,3 $owx_async_debug=0; @@ -158,7 +158,7 @@ sub OWX_ASYNC_Initialize ($) { $hash->{ReadFn} = "OWX_ASYNC_Read"; $hash->{ReadyFn} = "OWX_ASYNC_Ready"; $hash->{InitFn} = "OWX_ASYNC_Init"; - $hash->{AttrList} = "dokick:0,1 interval IODev timeout maxtimeouts"; + $hash->{AttrList} = "dokick:0,1 interval buspower:real,parasitic IODev timeout maxtimeouts"; main::LoadModule("OWX"); } @@ -981,6 +981,10 @@ sub OWX_ASYNC_Schedule($$) { Log3 ($master->{NAME},5,"OWX_ASYNC_Schedule master: ".$master->{NAME}.", task: ".$name); die "OWX_ASYNC_Schedule: Master not Active" unless $master->{STATE} eq "Active"; $task->{ExecuteTime} = gettimeofday() unless (defined $task->{ExecuteTime}); + + #if buspower is parasitic serialize all tasks by scheduling everything to master queue. + $name = $master->{NAME} if (AttrVal($master->{NAME},"buspower","real") eq "parasitic"); + if (defined $master->{tasks}->{$name}) { push @{$master->{tasks}->{$name}}, $task; $hash->{NUMTASKS} = @{$master->{tasks}->{$name}};