mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-04 11:26:55 +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:
parent
a29e1fba32
commit
5b51bc2884
@ -491,6 +491,8 @@ ZWDongle_Write($$$@)
|
||||
push @{$hash->{SendStack}}, $msg;
|
||||
return if(int(@{$hash->{SendStack}}) > 1);
|
||||
}
|
||||
$hash->{LastMsg}=$msg;
|
||||
$hash->{RetransmitCount} = 0;
|
||||
$msg = "$fn$msg";
|
||||
$msg = sprintf("%02x%s", length($msg)/2+1, $msg);
|
||||
$msg = "01$msg" . ZWDongle_CheckSum($msg);
|
||||
@ -537,18 +539,31 @@ ZWDongle_Read($@)
|
||||
|
||||
if($fb eq "06") { # ACK
|
||||
$data = substr($data, 2);
|
||||
delete $hash->{LastMsg};
|
||||
delete $hash->{RetransmitCount};
|
||||
next;
|
||||
}
|
||||
if($fb eq "15") { # NACK
|
||||
Log3 $name, 1, "$name: NACK received";
|
||||
undef @{$hash->{SendStack}};
|
||||
delete $hash->{LastMsg};
|
||||
delete $hash->{RetransmitCount};
|
||||
$data = substr($data, 2);
|
||||
next;
|
||||
}
|
||||
if($fb eq "18") { # CAN
|
||||
if(int(@{$hash->{SendStack}})) {
|
||||
Log3 $name, 4, "$name: CANCEL received, retransmitting.";
|
||||
ZWDongle_Write($hash, "00", $hash->{SendStack}->[0], 1);
|
||||
if(defined($hash->{LastMsg})){
|
||||
if(++$hash->{RetransmitCount} <= 5) {
|
||||
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 {
|
||||
Log3 $name, 4, "$name: CANCEL received, nothing to retransmit.";
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user