From 75f90d4650365bb1dfc0b4b18ce221a35a585683 Mon Sep 17 00:00:00 2001 From: justme-1968 Date: Fri, 27 Mar 2015 17:41:57 +0000 Subject: [PATCH] 34_SWAP.pm: fixed handling of mixed single bit / mulity byte endpoints, see forum: 34_SWAP.pm: fixed handling of single bit endpoints git-svn-id: https://svn.fhem.de/fhem/trunk@8301 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/34_SWAP.pm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/fhem/FHEM/34_SWAP.pm b/fhem/FHEM/34_SWAP.pm index 396994cba..eecfeffd3 100755 --- a/fhem/FHEM/34_SWAP.pm +++ b/fhem/FHEM/34_SWAP.pm @@ -506,19 +506,21 @@ SWAP_Set($@) } else { my $len = $register->{size}; if( !$len ) { - my $max_position = 0; + my $max_pos = 0; + my $max_pos_size = 1; foreach my $endpoint ( @{$register->{endpoints}} ) { if( !defined($endpoint->{position}) ) { $len = $endpoint->{size}; last; } - $max_position = maxNum( $max_position, int($endpoint->{position}) ); + $max_pos = maxNum( $max_pos, int($endpoint->{position}) ); + $max_pos_size = int($endpoint->{size} + 0.9 ); $len += $endpoint->{size}; } - $len = maxNum( $len, $max_position+1 ); + $len = maxNum( $len, $max_pos+$max_pos_size ); } return "value has to be ". $len ." byte(s) in size" if( $len*2 != length( $arg2 ) );