2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-04 11:26:55 +00:00

check sequenz number for mulit-message answer

git-svn-id: https://svn.fhem.de/fhem/trunk@4169 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2013-11-07 07:34:45 +00:00
parent 6ddba6b809
commit b9e064fd36

@ -1693,7 +1693,15 @@ sub CUL_HM_parseCommon(@){#####################################################
$ret = "done";
}
elsif($subType eq "01"){ #storePeerList=================================
my $msgValid = 0;
if ($pendType eq "PeerList"){
if($shash->{helper}{prt}{rspWait}{mNo} == hex($mNo)){#next message
$shash->{helper}{prt}{rspWait}{mNo}++;
$shash->{helper}{prt}{rspWait}{mNo} &= 0xff;
$msgValid = 1;
}
}
if ($msgValid){
my $chn = $shash->{helper}{prt}{rspWait}{forChn};
my $chnhash = $modules{CUL_HM}{defptr}{$src.$chn};
$chnhash = $shash if (!$chnhash);
@ -1730,9 +1738,20 @@ sub CUL_HM_parseCommon(@){#####################################################
}
$ret = "done";
}
else{#response without request - discard
$ret = "done";
}
}
elsif($subType eq "02" ||$subType eq "03"){ #ParamResp==================
my $msgValid = 0;
if ($pendType eq "RegisterRead"){
if($shash->{helper}{prt}{rspWait}{mNo} == hex($mNo)){#next message
$shash->{helper}{prt}{rspWait}{mNo}++;
$shash->{helper}{prt}{rspWait}{mNo} &= 0xff;
$msgValid = 1;
}
}
if ($msgValid){
my $chnSrc = $src.$shash->{helper}{prt}{rspWait}{forChn};
my $chnHash = $modules{CUL_HM}{defptr}{$chnSrc};
$chnHash = $shash if (!$chnHash);
@ -3471,6 +3490,7 @@ sub CUL_HM_responseSetup($$) {#store all we need to handle the response
#--- remember request params in device level
CUL_HM_respWaitSu ($hash,"Pending:=PeerList"
,"cmd:=$cmd" ,"forChn:=".substr($p,0,2)
,"mNo:=".hex($mNo)
,"reSent:=1");
#--- remove readings in channel
@ -3488,6 +3508,7 @@ sub CUL_HM_responseSetup($$) {#store all we need to handle the response
CUL_HM_respWaitSu ($hash,"Pending:=RegisterRead"
,"cmd:=$cmd" ,"forChn:=$chn"
,"forList:=$list","forPeer:=$peer"
,"mNo:=".hex($mNo)
,"reSent:=1");
#--- remove channel entries that will be replaced
my $chnhash = $modules{CUL_HM}{defptr}{"$dst$chn"};