mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 22:19:38 +00:00
improve AES reject handling
git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@3924 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
d41426fa45
commit
e065d80964
@ -368,6 +368,7 @@ sub HMLAN_Parse($$) {##########################################################
|
|||||||
if ($HMcnd == 0x01){#HMLAN responded to AES request
|
if ($HMcnd == 0x01){#HMLAN responded to AES request
|
||||||
# $CULinfo = "AESresp";# General needs approval
|
# $CULinfo = "AESresp";# General needs approval
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($stat){# message with status information
|
if ($stat){# message with status information
|
||||||
HMLAN_condUpdate($hash,$HMcnd)if ($hash->{helper}{q}{HMcndN} != $HMcnd);
|
HMLAN_condUpdate($hash,$HMcnd)if ($hash->{helper}{q}{HMcndN} != $HMcnd);
|
||||||
|
|
||||||
@ -380,6 +381,7 @@ sub HMLAN_Parse($$) {##########################################################
|
|||||||
return;
|
return;
|
||||||
}elsif (($stat & 0x70) == 0x30){Log $ll5, "HMLAN_Parse: $name AES code rejected for $dst $stat";
|
}elsif (($stat & 0x70) == 0x30){Log $ll5, "HMLAN_Parse: $name AES code rejected for $dst $stat";
|
||||||
$CULinfo = "AESerrReject";
|
$CULinfo = "AESerrReject";
|
||||||
|
HMLAN_qResp($hash,$src,0);
|
||||||
}elsif (($stat & 0x70) == 0x20){$CULinfo = "AESok";
|
}elsif (($stat & 0x70) == 0x20){$CULinfo = "AESok";
|
||||||
}elsif (($stat & 0x70) == 0x40){;#$CULinfo = "???";
|
}elsif (($stat & 0x70) == 0x40){;#$CULinfo = "???";
|
||||||
}
|
}
|
||||||
|
@ -489,20 +489,14 @@ sub CUL_HM_Parse($$) {##############################
|
|||||||
my ($len,$mNo,$mFlg,$mTp,$src,$dst,$p) = ($1,$2,$3,$4,$5,$6,$7);
|
my ($len,$mNo,$mFlg,$mTp,$src,$dst,$p) = ($1,$2,$3,$4,$5,$6,$7);
|
||||||
$p = "" if(!defined($p));
|
$p = "" if(!defined($p));
|
||||||
my @mI = unpack '(A2)*',$p; # split message info to bytes
|
my @mI = unpack '(A2)*',$p; # split message info to bytes
|
||||||
if ($msgStat){
|
|
||||||
return "" if($msgStat eq 'NACK');#discard if lowlevel error
|
return "" if( ($msgStat && $msgStat eq 'NACK')# lowlevel error
|
||||||
}
|
||($src eq $id)); # mirrored messages
|
||||||
return "" if($src eq $id);#discard mirrored messages
|
|
||||||
|
|
||||||
# $shash will be replaced for multichannel commands
|
# $shash will be replaced for multichannel commands
|
||||||
my $shash = $modules{CUL_HM}{defptr}{$src};
|
my $shash = $modules{CUL_HM}{defptr}{$src};
|
||||||
my $dhash = $modules{CUL_HM}{defptr}{$dst};
|
my $dhash = $modules{CUL_HM}{defptr}{$dst};
|
||||||
|
|
||||||
if ($msgStat){
|
|
||||||
$shash->{"protEvt_$msgStat"} = 0 if (!$shash->{"protEvt_$msgStat"});
|
|
||||||
$shash->{"protEvt_$msgStat"}++;
|
|
||||||
}
|
|
||||||
|
|
||||||
$respRemoved = 0; #set to 'no response in this message' at start
|
$respRemoved = 0; #set to 'no response in this message' at start
|
||||||
if(!$shash) { # Unknown source
|
if(!$shash) { # Unknown source
|
||||||
# Generate an UNKNOWN event for pairing requests, ignore everything else
|
# Generate an UNKNOWN event for pairing requests, ignore everything else
|
||||||
@ -518,6 +512,7 @@ sub CUL_HM_Parse($$) {##############################
|
|||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
CUL_HM_eventP($shash,"Evt_$msgStat")if ($msgStat);#log io-events
|
||||||
CUL_HM_eventP($shash,"Rcv");
|
CUL_HM_eventP($shash,"Rcv");
|
||||||
my $name = $shash->{NAME};
|
my $name = $shash->{NAME};
|
||||||
my $dname = ($dst eq "000000") ? "broadcast" :
|
my $dname = ($dst eq "000000") ? "broadcast" :
|
||||||
@ -1534,7 +1529,7 @@ sub CUL_HM_parseCommon(@){#####################################################
|
|||||||
my $reply;
|
my $reply;
|
||||||
my $success;
|
my $success;
|
||||||
|
|
||||||
if ($subType =~ m/^8/){ #NACK
|
if ($subType =~ m/^8/){#NACK
|
||||||
$success = "no";
|
$success = "no";
|
||||||
CUL_HM_eventP($shash,"Nack");
|
CUL_HM_eventP($shash,"Nack");
|
||||||
$reply = "NACK";
|
$reply = "NACK";
|
||||||
@ -1559,13 +1554,19 @@ sub CUL_HM_parseCommon(@){#####################################################
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
elsif($subType eq "04"){ #ACK-AES, interim########
|
||||||
|
#$success = ""; #result not final, another response should come
|
||||||
|
$reply = "done";
|
||||||
|
}
|
||||||
else{ #ACK
|
else{ #ACK
|
||||||
$success = "yes";
|
$success = "yes";
|
||||||
$reply = "ACK";
|
$reply = "ACK";
|
||||||
}
|
}
|
||||||
|
if($success){#do we have a final ack?
|
||||||
readingsSingleUpdate($chnhash,"CommandAccepted",$success,0);
|
readingsSingleUpdate($chnhash,"CommandAccepted",$success,0);
|
||||||
CUL_HM_ProcessCmdStack($shash)
|
CUL_HM_ProcessCmdStack($shash)
|
||||||
if($dhash->{DEF} && (CUL_HM_IOid($shash) eq $dhash->{DEF}));
|
if($dhash->{DEF} && (CUL_HM_IOid($shash) eq $dhash->{DEF}));
|
||||||
|
}
|
||||||
$ret = $reply;
|
$ret = $reply;
|
||||||
}
|
}
|
||||||
elsif($mTp eq "00"){######################################
|
elsif($mTp eq "00"){######################################
|
||||||
@ -3273,7 +3274,7 @@ sub CUL_HM_eventP($$) {#handle protocol events
|
|||||||
my ($evntCnt,undef) = split(' last_at:',$evnt);
|
my ($evntCnt,undef) = split(' last_at:',$evnt);
|
||||||
$nAttr->{"prot".$evntType} = ++$evntCnt." last_at:".TimeNow();
|
$nAttr->{"prot".$evntType} = ++$evntCnt." last_at:".TimeNow();
|
||||||
|
|
||||||
if ($evntType ne "Snd"){#count unusual events
|
if ($evntType !~ m/(Snd|Evt_AESok)/){#count abnormal events
|
||||||
$hash->{helper}{burstEvtCnt}=0 if(!defined $hash->{helper}{burstEvtCnt});
|
$hash->{helper}{burstEvtCnt}=0 if(!defined $hash->{helper}{burstEvtCnt});
|
||||||
$hash->{helper}{burstEvtCnt}++;
|
$hash->{helper}{burstEvtCnt}++;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user