2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-04 17:36:39 +00:00

00_ZWDongle.pm: LastMsg patch from gero (Forum #35126)

git-svn-id: https://svn.fhem.de/fhem/trunk@8657 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2015-05-30 12:57:18 +00:00
parent a29e1fba32
commit 5b51bc2884

View File

@ -491,6 +491,8 @@ ZWDongle_Write($$$@)
push @{$hash->{SendStack}}, $msg; push @{$hash->{SendStack}}, $msg;
return if(int(@{$hash->{SendStack}}) > 1); return if(int(@{$hash->{SendStack}}) > 1);
} }
$hash->{LastMsg}=$msg;
$hash->{RetransmitCount} = 0;
$msg = "$fn$msg"; $msg = "$fn$msg";
$msg = sprintf("%02x%s", length($msg)/2+1, $msg); $msg = sprintf("%02x%s", length($msg)/2+1, $msg);
$msg = "01$msg" . ZWDongle_CheckSum($msg); $msg = "01$msg" . ZWDongle_CheckSum($msg);
@ -537,18 +539,31 @@ ZWDongle_Read($@)
if($fb eq "06") { # ACK if($fb eq "06") { # ACK
$data = substr($data, 2); $data = substr($data, 2);
delete $hash->{LastMsg};
delete $hash->{RetransmitCount};
next; next;
} }
if($fb eq "15") { # NACK if($fb eq "15") { # NACK
Log3 $name, 1, "$name: NACK received"; Log3 $name, 1, "$name: NACK received";
undef @{$hash->{SendStack}}; undef @{$hash->{SendStack}};
delete $hash->{LastMsg};
delete $hash->{RetransmitCount};
$data = substr($data, 2); $data = substr($data, 2);
next; next;
} }
if($fb eq "18") { # CAN if($fb eq "18") { # CAN
if(int(@{$hash->{SendStack}})) { if(defined($hash->{LastMsg})){
Log3 $name, 4, "$name: CANCEL received, retransmitting."; if(++$hash->{RetransmitCount} <= 5) {
ZWDongle_Write($hash, "00", $hash->{SendStack}->[0], 1); Log3 $name, 4, "$name: CANCEL received, retransmit nr. ".
$hash->{RetransmitCount};
ZWDongle_Write($hash, "00", $hash->{LastMsg}, 1);
} else {
Log3 $name, 4, "$name: CANCEL received, no more retransmits";
delete $hash->{LastMsg};
delete $hash->{RetransmitCount};
}
} else { } else {
Log3 $name, 4, "$name: CANCEL received, nothing to retransmit."; Log3 $name, 4, "$name: CANCEL received, nothing to retransmit.";
} }