00_ZWDongle: fixing multiple-get-bug intorduced with the last patch.

git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@4751 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig
2014-01-26 15:32:03 +00:00
parent dc9f65beec
commit d3fce8d2d9

View File

@@ -197,6 +197,7 @@ ZWDongle_Define($$)
$hash->{DeviceName} = $dev; $hash->{DeviceName} = $dev;
$hash->{CallbackNr} = 0; $hash->{CallbackNr} = 0;
$hash->{nrNAck} = 0;
my @empty; my @empty;
$hash->{SendStack} = \@empty; $hash->{SendStack} = \@empty;
my $ret = DevIo_OpenDev($hash, 0, "ZWDongle_DoInit"); my $ret = DevIo_OpenDev($hash, 0, "ZWDongle_DoInit");
@@ -480,7 +481,11 @@ ZWDongle_Read($@)
if($rcs ne $ccs) { if($rcs ne $ccs) {
Log3 $name, 1, Log3 $name, 1,
"$name: wrong checksum: received $rcs, computed $ccs for $len$msg"; "$name: wrong checksum: received $rcs, computed $ccs for $len$msg";
DevIo_SimpleWrite($hash, "15", 1) # Send NACK
if(++$hash->{nrNAck} < 5);
next;
} }
$hash->{nrNAck} = 0;
DevIo_SimpleWrite($hash, "06", 1); # Send ACK DevIo_SimpleWrite($hash, "06", 1); # Send ACK
Log3 $name, 5, "ZWDongle_Read $name: $msg"; Log3 $name, 5, "ZWDongle_Read $name: $msg";
@@ -504,6 +509,7 @@ ZWDongle_ReadAnswer($$$)
if(!$hash || ($^O !~ /Win/ && !defined($hash->{FD}))); if(!$hash || ($^O !~ /Win/ && !defined($hash->{FD})));
my $to = ($hash->{RA_Timeout} ? $hash->{RA_Timeout} : 3); my $to = ($hash->{RA_Timeout} ? $hash->{RA_Timeout} : 3);
shift @{$hash->{SendStack}}; # Hope this is right.
for(;;) { for(;;) {
my $buf; my $buf;