2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +00:00

obey slow write to wakeup devices

git-svn-id: https://svn.fhem.de/fhem/trunk@4155 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2013-11-05 22:20:37 +00:00
parent 7c22f7bd33
commit de30a1332b

View File

@ -383,6 +383,24 @@ sub CUL_HM_Rename($$$) {#############################
$chnHash->{device} = $name;
}
}
if ($hash->{helper}{role}{chn}){
my $HMidCh = substr($HMid."01",0,8);
foreach my $pId (keys %{$modules{CUL_HM}{defptr}}){
my $pH = $modules{CUL_HM}{defptr}{$pId};
my $pN = $pH->{NAME};
my $pPeers = AttrVal($pN, "peerIDs", "");
if ($pPeers =~ m/$HMidCh/){
CUL_HM_ID2PeerList ($pN,"x",0);
foreach my $pR (grep /-$oldName-/,keys%{$pH->{READINGS}}){
my $pRn = $pR;
$pRn =~ s/$oldName/$name/;
$pH->{READINGS}{$pRn}{VAL} = $pH->{READINGS}{$pR}{VAL};
$pH->{READINGS}{$pRn}{TIME} = $pH->{READINGS}{$pR}{TIME};
delete $pH->{READINGS}{$pR};
}
}
}
}
return;
}
sub CUL_HM_Attr(@) {#################################
@ -1559,7 +1577,8 @@ sub CUL_HM_parseCommon(@){#####################################################
#General set timer
return "done"
}
$shash->{protCondBurst} = "on" if ($shash->{protCondBurst} !~ m/forced/);
$shash->{protCondBurst} = "on" if ( $shash->{protCondBurst}
&& $shash->{protCondBurst} !~ m/forced/);
$shash->{helper}{prt}{awake}=2;#awake
}
else{
@ -1604,7 +1623,11 @@ sub CUL_HM_parseCommon(@){#####################################################
}
if ( $shash->{helper}{prt}{mmcS}
&& $shash->{helper}{prt}{mmcS} == 3){
&& $shash->{helper}{prt}{mmcS} == 3){
# after write device might need a break
# allow for wake types only - and if commands are pending
$shash->{helper}{prt}{try} = 1 if (CUL_HM_getRxType($shash) & 0x08 #wakeup
&& $shash->{cmdStack});
if ($success eq 'yes'){
delete $shash->{helper}{prt}{mmcA};
delete $shash->{helper}{prt}{mmcS};
@ -3649,8 +3672,8 @@ sub CUL_HM_respPendRm($) {#del response related entries in messageing entity
$modules{CUL_HM}{prot}{rspPend}-- if($hash->{helper}{prt}{rspWait}{cmd});
delete ($hash->{helper}{prt}{rspWait});
delete $hash->{helper}{tmdOn};
delete $hash->{helper}{prt}{mmcA};
delete $hash->{helper}{prt}{mmcS};
# delete $hash->{helper}{prt}{mmcA};
# delete $hash->{helper}{prt}{mmcS};
RemoveInternalTimer($hash); # remove resend-timer
RemoveInternalTimer("respPend:$hash->{DEF}");# remove responsePending timer
$respRemoved = 1;
@ -3672,6 +3695,12 @@ sub CUL_HM_respPendTout($) {
$pHash->{awake} = 0;# set to asleep
CUL_HM_protState($hash,"CMDs_pending");
}
elsif ($pHash->{try}){# send was a try - revert and wait for wakeup
unshift (@{$hash->{cmdStack}}, "++".substr($pHash->{rspWait}{cmd},6));
delete $pHash->{try};
CUL_HM_respPendRm($hash);# do not count problems with wakeup try, just wait
CUL_HM_protState($hash,"CMDs_pending");
}
elsif ($hash->{IODev}->{STATE} !~ m/^(opened|Initialized)$/){#IO errors
CUL_HM_eventP($hash,"IOdly");
CUL_HM_ProcessCmdStack($hash) if(CUL_HM_getRxType($hash) & 0x03);