2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-21 07:56:03 +00:00

70_ONKYO_AVR.pm,71_ONKYO_AVR_ZONE.pm: improved zone handling when using more than one receiver within the same Fhem instance

git-svn-id: https://svn.fhem.de/fhem/trunk@11509 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
jpawlowski 2016-05-24 08:37:21 +00:00
parent 7b1e5ed85e
commit 9c45cdb11b
2 changed files with 14 additions and 12 deletions

View File

@ -154,8 +154,8 @@ sub ONKYO_AVR_DevInit($) {
my $name = $hash->{NAME};
my $return;
my $definedZones = 0;
$definedZones = scalar keys %{ $modules{ONKYO_AVR_ZONE}{defptr} }
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr} ) );
$definedZones = scalar keys %{ $modules{ONKYO_AVR_ZONE}{defptr}{$name} }
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$name} ) );
Log3 $name, 5, "ONKYO_AVR $name: called function ONKYO_AVR_DevInit()";
@ -221,8 +221,8 @@ sub ONKYO_AVR_Notify($$) {
my $name = $hash->{NAME};
my $devName = $dev->{NAME};
my $definedZones = 0;
$definedZones = scalar keys %{ $modules{ONKYO_AVR_ZONE}{defptr} }
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr} ) );
$definedZones = scalar keys %{ $modules{ONKYO_AVR_ZONE}{defptr}{$name} }
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$name} ) );
return
if ( !$dev->{CHANGED} ); # Some previous notify deleted the array.
@ -324,8 +324,8 @@ sub ONKYO_AVR_Read($) {
my $state = ReadingsVal( $name, "power", "off" );
my $zone = 0;
my $definedZones = 0;
$definedZones = scalar keys %{ $modules{ONKYO_AVR_ZONE}{defptr} }
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr} ) );
$definedZones = scalar keys %{ $modules{ONKYO_AVR_ZONE}{defptr}{$name} }
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$name} ) );
# read from serial device
my $buf = DevIo_SimpleRead($hash);

View File

@ -108,9 +108,9 @@ sub ONKYO_AVR_ZONE_Define($$$) {
my $IOname = $IOhash->{NAME};
my $zone = @$a[2] || "2";
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$zone} ) ) {
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$IOname}{$zone} ) ) {
return "Zone already defined in "
. $modules{ONKYO_AVR_ZONE}{defptr}{$zone}{NAME};
. $modules{ONKYO_AVR_ZONE}{defptr}{$IOname}{$zone}{NAME};
}
elsif ( !defined($IOhash) ) {
return "No matching I/O device found";
@ -126,7 +126,7 @@ sub ONKYO_AVR_ZONE_Define($$$) {
}
$hash->{INPUT} = "";
$modules{ONKYO_AVR_ZONE}{defptr}{$zone} = $hash;
$modules{ONKYO_AVR_ZONE}{defptr}{$IOname}{$zone} = $hash;
# set default settings on first define
if ($init_done) {
@ -153,13 +153,15 @@ sub ONKYO_AVR_ZONE_Define($$$) {
###################################
sub ONKYO_AVR_ZONE_Undefine($$) {
my ( $hash, $name ) = @_;
my $zone = $hash->{ZONE};
my $zone = $hash->{ZONE};
my $IOhash = $hash->{IODev};
my $IOname = $IOhash->{NAME};
Log3 $name, 5,
"ONKYO_AVR_ZONE $name: called function ONKYO_AVR_ZONE_Undefine()";
delete $modules{ONKYO_AVR_ZONE}{defptr}{$zone}
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$zone} ) );
delete $modules{ONKYO_AVR_ZONE}{defptr}{$IOname}{$zone}
if ( defined( $modules{ONKYO_AVR_ZONE}{defptr}{$IOname}{$zone} ) );
# Disconnect from device
DevIo_CloseDev($hash);