mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-21 01:46:08 +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:
parent
7b1e5ed85e
commit
9c45cdb11b
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user