From 6379fbe86db156d799c797ed763e9c9a62e3eafa Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Fri, 25 Jan 2019 13:17:13 +0000 Subject: [PATCH] 49_SSCam: fix version numbering git-svn-id: https://svn.fhem.de/fhem/trunk@18411 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/49_SSCam.pm | 31 ++++++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index b78d57b5c..1b8336c20 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - bugfix: 49_SSCam: fix version numbering - bugfix: 93_DbRep: fix version numbering - feature: 98_livetracking: added events for OwnTrack zones - feature: 93_DbRep: command exportToFile or attribute "expimpfile" accept diff --git a/fhem/FHEM/49_SSCam.pm b/fhem/FHEM/49_SSCam.pm index fc2b5a734..b714850bc 100644 --- a/fhem/FHEM/49_SSCam.pm +++ b/fhem/FHEM/49_SSCam.pm @@ -47,6 +47,7 @@ use Encode; # Versions History intern our %SSCam_vNotesIntern = ( + "8.6.2" => "25.01.2019 fix version numbering ", "8.6.1" => "21.01.2019 time format in readings and galleries depends from global language attribute, minor bug fixes ", "8.6.0" => "20.01.2019 new attribute snapReadingRotate ", "8.5.0" => "17.01.2019 SVS device has \"snapCams\" command ", @@ -120,6 +121,7 @@ our %SSCam_vNotesIntern = ( # Versions History extern our %SSCam_vNotesExtern = ( + "8.6.2" => "25.01.2019 fix version numbering ", "8.6.1" => "21.01.2019 new attribute \"snapReadingRotate\" to activate versioning of snap data, ". "time format in readings and galleries depends from global language attribute ", "8.5.0" => "17.01.2019 SVS device has \"snapCams\" command. Now are able to take snapshots of all defined cameras and may ". @@ -399,7 +401,7 @@ sub SSCam_Define($@) { $hash->{SERVERADDR} = $serveraddr; $hash->{SERVERPORT} = $serverport; $hash->{CAMNAME} = $camname; - $hash->{VERSION} = (reverse sort(keys %SSCam_vNotesIntern))[0]; + $hash->{VERSION} = (SSCam_sortVersion("desc",keys %SSCam_vNotesIntern))[0]; $hash->{MODEL} = ($camname =~ m/^SVS$/i)?"SVS":"CAM"; # initial, CAM wird später ersetzt durch CamModel $hash->{PROTOCOL} = $proto; $hash->{COMPATIBILITY} = $compstat; # getestete SVS-version Kompatibilität @@ -1513,7 +1515,7 @@ sub SSCam_Get($@) { } } $i = 0; - foreach my $key (reverse sort(keys %hs)) { + foreach my $key (SSCam_sortVersion("desc",keys %hs)) { $val0 = $hs{$key}; $ret .= sprintf("$key $val0" ); $ret .= ""; @@ -1538,7 +1540,7 @@ sub SSCam_Get($@) { $ret .= ""; $ret .= ""; $i = 0; - foreach my $key (reverse sort(keys %SSCam_vNotesExtern)) { + foreach my $key (SSCam_sortVersion("desc",keys %SSCam_vNotesExtern)) { ($val0,$val1) = split(/\s/,$SSCam_vNotesExtern{$key},2); $ret .= sprintf("$key $val0 $val1" ); $ret .= ""; @@ -7300,6 +7302,29 @@ sub SSCam_experror ($$) { return ($error); } +################################################################ +# sortiert eine Liste von Versionsnummern x.x.x +# Schwartzian Transform and the GRT transform +# Übergabe: "asc | desc", +################################################################ +sub SSCam_sortVersion (@){ + my ($sseq,@versions) = @_; + + my @sorted = map {$_->[0]} + sort {$a->[1] cmp $b->[1]} + map {[$_, pack "C*", split /\./]} @versions; + + @sorted = map {join ".", unpack "C*", $_} + sort + map {pack "C*", split /\./} @versions; + + if($sseq eq "desc") { + @sorted = reverse @sorted; + } + +return @sorted; +} + ############################################################################## # Zusätzliche Redings in Rotation erstellen # Sub ($hash,,,,)