From a9cf0fbb70b8b8dd5b720a7198776a00828272a5 Mon Sep 17 00:00:00 2001 From: jensb <> Date: Fri, 19 Jan 2018 21:07:42 +0000 Subject: [PATCH] 20_FRM_OUT.pm: fix "uninitialised" warning when calling FRM_OUT_Set without command (Forum #81815) git-svn-id: https://svn.fhem.de/fhem/trunk@15928 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/20_FRM_OUT.pm | 74 ++++++++++++++++++++++++++--------------- 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/fhem/FHEM/20_FRM_OUT.pm b/fhem/FHEM/20_FRM_OUT.pm index ac7c5aaa5..fc7e82e3a 100755 --- a/fhem/FHEM/20_FRM_OUT.pm +++ b/fhem/FHEM/20_FRM_OUT.pm @@ -114,21 +114,25 @@ FRM_OUT_Set($$$) my ($hash, $name, $cmd, @a) = @_; my $value; my $invert = AttrVal($hash->{NAME},"activeLow", "no"); - if ($cmd eq "on") { - $value = $invert eq "yes" ? PIN_LOW : PIN_HIGH; - } elsif ($cmd eq "off") { - $value = $invert eq "yes" ? PIN_HIGH : PIN_LOW; - } else { - my $list = "on off"; - return SetExtensions($hash, $list, $name, $cmd, @a); - } - eval { - FRM_Client_FirmataDevice($hash)->digital_write($hash->{PIN},$value); - if (AttrVal($hash->{NAME}, "valueMode", "send") ne "receive") { - main::readingsSingleUpdate($hash,"value",$cmd, 1); + if (defined ($cmd)) { + if ($cmd eq "on") { + $value = $invert eq "yes" ? PIN_LOW : PIN_HIGH; + } elsif ($cmd eq "off") { + $value = $invert eq "yes" ? PIN_HIGH : PIN_LOW; + } else { + my $list = "on off"; + return SetExtensions($hash, $list, $name, $cmd, @a); } - }; - return $@; + eval { + FRM_Client_FirmataDevice($hash)->digital_write($hash->{PIN},$value); + if (AttrVal($hash->{NAME}, "valueMode", "send") ne "receive") { + main::readingsSingleUpdate($hash,"value",$cmd, 1); + } + }; + return $@; + } else { + return "no command specified"; + } } sub FRM_OUT_State($$$$) @@ -195,6 +199,8 @@ FRM_OUT_Attr($$$$) { o create reading "value" in FRM_OUT_Init if missing 02.01.2018 jensb o new attribute "valueMode" to control how "value" reading is updated + 14.01.2018 jensb + o fix "uninitialised" when calling FRM_OUT_Set without command =cut @@ -207,18 +213,20 @@ FRM_OUT_Attr($$$$) {
define <name> FRM_OUT <pin>
setPinModeCallback
":portConfigInputs[pin / 8] |= (1 << (pin & 7));
" to enable