diff --git a/fhem/CHANGED b/fhem/CHANGED index f52e91f3a..ffc31ee89 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,6 +1,7 @@ # 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. - SVN + - feature: Add new module ONKYO_AVR - feature: SYSSTAT: allow (remote) monitoring via snmp, support for monitoring windows systems and synology system temperature - feature: New module LINDY_HDMI_SWITCH.pm added diff --git a/fhem/FHEM/70_ONKYO_AVR.pm b/fhem/FHEM/70_ONKYO_AVR.pm new file mode 100644 index 000000000..f7afe457d --- /dev/null +++ b/fhem/FHEM/70_ONKYO_AVR.pm @@ -0,0 +1,9337 @@ +# $Id$ +############################################################################## +# +# 70_ONKYO_AVR.pm +# An FHEM Perl module for controlling ONKYO A/V receivers +# via network connection. +# +# Copyright by Julian Pawlowski +# e-mail: julian.pawlowski at gmail.com +# +# This file is part of fhem. +# +# Fhem is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# Fhem is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with fhem. If not, see . +# +# +# Version: 0.0.1 +# +# Version History: +# - 1.0.0 - 2013-12-16 +# -- First release +# +############################################################################## + +package main; + +use strict; +use warnings; +use IO::Socket; +use IO::Select; +use XML::Simple; +use Time::HiRes; +use Data::Dumper; + +sub ONKYO_AVR_Set($@); +sub ONKYO_AVR_Get($@); +sub ONKYO_AVR_GetStatus($;$); +sub ONKYO_AVR_Define($$); +sub ONKYO_AVR_Undefine($$); + +######################### +# Forward declaration for remotecontrol module +sub ONKYO_AVR_RClayout_TV(); +sub ONKYO_AVR_RCmakenotify($$); + +################################### +sub ONKYO_AVR_Initialize($) { + my ($hash) = @_; + + $hash->{GetFn} = "ONKYO_AVR_Get"; + $hash->{SetFn} = "ONKYO_AVR_Set"; + $hash->{DefFn} = "ONKYO_AVR_Define"; + $hash->{UndefFn} = "ONKYO_AVR_Undefine"; + + $hash->{AttrList} = +"volumeSteps:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 inputs disable:0,1 " + . $readingFnAttributes; + + # $data{RC_layout}{ONKYO_AVR_SVG} = "ONKYO_AVR_RClayout_SVG"; + # $data{RC_layout}{ONKYO_AVR} = "ONKYO_AVR_RClayout"; + $data{RC_makenotify}{ONKYO_AVR} = "ONKYO_AVR_RCmakenotify"; +} + +##################################### +sub ONKYO_AVR_GetStatus($;$) { + my ( $hash, $local ) = @_; + my $name = $hash->{NAME}; + my $interval = $hash->{INTERVAL}; + my $zone = $hash->{ZONE}; + my $protocol = $hash->{PROTOCOL}; + my $state = ''; + my $reading; + my $states; + + $local = 0 unless ( defined($local) ); + if ( defined( $hash->{attr}{disable} ) && $hash->{attr}{disable} eq "1" ) { + return $hash->{STATE}; + } + + InternalTimer( gettimeofday() + $interval, "ONKYO_AVR_GetStatus", $hash, 0 ) + unless ( $local == 1 ); + + readingsBeginUpdate($hash); + + # cache XML device information + # + # get device information if not available from helper + if ( !defined( $hash->{helper}{receiver} ) && $protocol ne "pre2013" ) { + my $xml = + ONKYO_AVR_SendCommand( $hash, "net-receiver-information", "query" ); + if ( defined($xml) && $xml ne "" ) { + my $xml_parser = XML::Simple->new( + NormaliseSpace => 2, + KeepRoot => 0, + ForceArray => 0, + SuppressEmpty => 1 + ); + $hash->{helper}{receiver} = $xml_parser->XMLin($xml); + + # Safe input names + my $inputs; + foreach my $input ( + sort + keys + %{ $hash->{helper}{receiver}{device}{selectorlist}{selector} } + ) + { + if ( $input ne "" ) { + my $id = + uc( $hash->{helper}{receiver}{device}{selectorlist} + {selector}{$input}{id} ); + $input =~ s/\s/_/g; + $hash->{helper}{receiver}{input}{$id} = $input; + $inputs .= $input . ":"; + } + } + if ( !defined( $attr{$name}{inputs} ) ) { + $inputs = substr( $inputs, 0, -1 ); + $attr{$name}{inputs} = $inputs; + } + + # Brand + $reading = "brand"; + if ( + defined( $hash->{helper}{receiver}{device}{$reading} ) + && ( !defined( $hash->{READINGS}{$reading}{VAL} ) + || $hash->{READINGS}{$reading}{VAL} ne + $hash->{helper}{receiver}{device}{$reading} ) + ) + { + readingsBulkUpdate( $hash, $reading, + $hash->{helper}{receiver}{device}{$reading} ); + } + + # Model + $reading = "model"; + if ( + defined( $hash->{helper}{receiver}{device}{$reading} ) + && ( !defined( $hash->{READINGS}{$reading}{VAL} ) + || $hash->{READINGS}{$reading}{VAL} ne + $hash->{helper}{receiver}{device}{$reading} ) + ) + { + readingsBulkUpdate( $hash, $reading, + $hash->{helper}{receiver}{device}{$reading} ); + } + + # Firmware version + $reading = "firmwareversion"; + if ( + defined( $hash->{helper}{receiver}{device}{$reading} ) + && ( !defined( $hash->{READINGS}{$reading}{VAL} ) + || $hash->{READINGS}{$reading}{VAL} ne + $hash->{helper}{receiver}{device}{$reading} ) + ) + { + readingsBulkUpdate( $hash, $reading, + $hash->{helper}{receiver}{device}{$reading} ); + } + + # device_id + $reading = "deviceid"; + if ( + defined( $hash->{helper}{receiver}{device}{id} ) + && ( !defined( $hash->{READINGS}{$reading}{VAL} ) + || $hash->{READINGS}{$reading}{VAL} ne + $hash->{helper}{receiver}{device}{id} ) + ) + { + readingsBulkUpdate( $hash, $reading, + $hash->{helper}{receiver}{device}{id} ); + } + + # device_year + $reading = "deviceyear"; + if ( + defined( $hash->{helper}{receiver}{device}{year} ) + && ( !defined( $hash->{READINGS}{$reading}{VAL} ) + || $hash->{READINGS}{$reading}{VAL} ne + $hash->{helper}{receiver}{device}{year} ) + ) + { + readingsBulkUpdate( $hash, $reading, + $hash->{helper}{receiver}{device}{year} ); + } + } + else { + $hash->{helper}{receiver} = 0; + } + + # Input alias handling + # + if ( defined( $attr{$name}{inputs} ) ) { + my @inputs = split( ':', $attr{$name}{inputs} ); + + foreach (@inputs) { + if (m/[^,\s]+(,[^,\s]+)+/) { + my @input_names = split( ',', $_ ); + $input_names[1] =~ s/\s/_/g; + $hash->{helper}{receiver}{input_aliases}{ $input_names[0] } + = $input_names[1]; + $hash->{helper}{receiver}{input_names}{ $input_names[1] } = + $input_names[0]; + } + } + } + } + + # Read powerstate + # + my $powerstate = ONKYO_AVR_SendCommand( $hash, "power", "query" ); + + $state = "off"; + if ( defined($powerstate) ) { + if ( $powerstate eq "on" ) { + $state = "on"; + + # Read other state information + $states->{mute} = ONKYO_AVR_SendCommand( $hash, "mute", "query" ); + $states->{volume} = + ONKYO_AVR_SendCommand( $hash, "volume", "query" ); + $states->{sleep} = ONKYO_AVR_SendCommand( $hash, "sleep", "query" ) + if ( $zone eq "main" ); + $states->{input} = ONKYO_AVR_SendCommand( $hash, "input", "query" ); + $states->{video} = + ONKYO_AVR_SendCommand( $hash, "video-information", "query" ) + if ( $zone eq "main" ); + $states->{audio} = + ONKYO_AVR_SendCommand( $hash, "audio-information", "query" ) + if ( $zone eq "main" ); + } + } + else { + $state = "absent"; + } + + # Set reading for power + # + my $readingPower = "off"; + if ( $state eq "on" ) { + $readingPower = "on"; + } + if ( !defined( $hash->{READINGS}{power}{VAL} ) + || $hash->{READINGS}{power}{VAL} ne $readingPower ) + { + readingsBulkUpdate( $hash, "power", $readingPower, 1 ); + } + + # Set reading for state + # + if ( !defined( $hash->{READINGS}{state}{VAL} ) + || $hash->{READINGS}{state}{VAL} ne $state ) + { + readingsBulkUpdate( $hash, "state", $state, 1 ); + } + + # Set general readings for all zones + # + foreach ( "mute", "volume", "input" ) { + if ( defined( $states->{$_} ) && $states->{$_} ne "" ) { + if ( !defined( $hash->{READINGS}{$_}{VAL} ) + || $hash->{READINGS}{$_}{VAL} ne $states->{$_} ) + { + readingsBulkUpdate( $hash, $_, $states->{$_}, 1 ); + } + } + else { + if ( !defined( $hash->{READINGS}{$_}{VAL} ) + || $hash->{READINGS}{$_}{VAL} ne "-" ) + { + readingsBulkUpdate( $hash, $_, "-", 1 ); + } + } + } + + # Process for main zone only + # + if ( $zone eq "main" ) { + + # Set reading for sleep + # + foreach ("sleep") { + if ( defined( $states->{$_} ) && $states->{$_} ne "" ) { + if ( !defined( $hash->{READINGS}{$_}{VAL} ) + || $hash->{READINGS}{$_}{VAL} ne $states->{$_} ) + { + readingsBulkUpdate( $hash, $_, $states->{$_}, 1 ); + } + } + else { + if ( !defined( $hash->{READINGS}{$_}{VAL} ) + || $hash->{READINGS}{$_}{VAL} ne "-" ) + { + readingsBulkUpdate( $hash, $_, "-", 1 ); + } + } + } + + # Set readings for audio + # + if ( defined( $states->{audio} ) ) { + my @audio_split = split( /,/, $states->{audio} ); + if ( scalar(@audio_split) >= 6 ) { + + # Audio-in sampling rate + my ($audin_srate) = split /[:\s]+/, $audio_split[2], 2; + + # Audio-in channels + my ($audin_ch) = split /[:\s]+/, $audio_split[3], 2; + + # Audio-out channels + my ($audout_ch) = split /[:\s]+/, $audio_split[5], 2; + + if ( !defined( $hash->{READINGS}{audin_src}{VAL} ) + || $hash->{READINGS}{audin_src}{VAL} ne $audio_split[0] ) + { + readingsBulkUpdate( $hash, "audin_src", $audio_split[0], + 1 ); + } + if ( !defined( $hash->{READINGS}{audin_enc}{VAL} ) + || $hash->{READINGS}{audin_enc}{VAL} ne $audio_split[1] ) + { + readingsBulkUpdate( $hash, "audin_enc", $audio_split[1], + 1 ); + } + if ( + !defined( $hash->{READINGS}{audin_srate}{VAL} ) + || ( defined($audin_srate) + && $hash->{READINGS}{audin_srate}{VAL} ne $audin_srate ) + ) + { + readingsBulkUpdate( $hash, "audin_srate", $audin_srate, 1 ); + } + if ( + !defined( $hash->{READINGS}{audin_ch}{VAL} ) + || ( defined($audin_ch) + && $hash->{READINGS}{audin_ch}{VAL} ne $audin_ch ) + ) + { + readingsBulkUpdate( $hash, "audin_ch", $audin_ch, 1 ); + } + if ( !defined( $hash->{READINGS}{audout_mode}{VAL} ) + || $hash->{READINGS}{audout_mode}{VAL} ne $audio_split[4] ) + { + readingsBulkUpdate( $hash, "audout_mode", $audio_split[4], + 1 ); + } + if ( + !defined( $hash->{READINGS}{audout_ch}{VAL} ) + || ( defined($audout_ch) + && $hash->{READINGS}{audout_ch}{VAL} ne $audout_ch ) + ) + { + readingsBulkUpdate( $hash, "audout_ch", $audout_ch, 1 ); + } + } + else { + foreach ( + "audin_src", "audin_enc", "audin_srate", + "audin_ch", "audout_ch", "audout_mode", + ) + { + if ( !defined( $hash->{READINGS}{$_}{VAL} ) + || $hash->{READINGS}{$_}{VAL} ne "-" ) + { + readingsBulkUpdate( $hash, $_, "-", 1 ); + } + } + } + } + else { + foreach ( + "audin_src", "audin_enc", "audin_srate", + "audin_ch", "audout_ch", "audout_mode", + ) + { + if ( !defined( $hash->{READINGS}{$_}{VAL} ) + || $hash->{READINGS}{$_}{VAL} ne "-" ) + { + readingsBulkUpdate( $hash, $_, "-", 1 ); + } + } + } + + # Set readings for video + # + if ( defined( $states->{video} ) ) { + my @video_split = split( /,/, $states->{video} ); + if ( scalar(@video_split) >= 9 ) { + + # Video-in resolution + my @vidin_res_string = split( / +/, $video_split[1] ); + my $vidin_res; + if ( uc( $vidin_res_string[0] ) ne "UNKNOWN" + && uc( $vidin_res_string[2] ) ne "UNKNOWN" + && uc( $vidin_res_string[3] ) ne "UNKNOWN" ) + { + $vidin_res = + $vidin_res_string[0] . "x" + . $vidin_res_string[2] + . $vidin_res_string[3]; + } + else { + $vidin_res = ""; + } + + # Video-out resolution + my @vidout_res_string = split( / +/, $video_split[5] ); + my $vidout_res; + if ( uc( $vidout_res_string[0] ) ne "UNKNOWN" + && uc( $vidout_res_string[2] ) ne "UNKNOWN" + && uc( $vidout_res_string[3] ) ne "UNKNOWN" ) + { + $vidout_res = + $vidout_res_string[0] . "x" + . $vidout_res_string[2] + . $vidout_res_string[3]; + } + else { + $vidout_res = ""; + } + + # Video-in color depth + my ($vidin_cdepth) = + split( /[:\s]+/, $video_split[3], 2 ) || ""; + + # Video-out color depth + my ($vidout_cdepth) = + split( /[:\s]+/, $video_split[7], 2 ) || ""; + + if ( !defined( $hash->{READINGS}{vidin_src}{VAL} ) + || $hash->{READINGS}{vidin_src}{VAL} ne $video_split[0] ) + { + readingsBulkUpdate( $hash, "vidin_src", $video_split[0], + 1 ); + } + if ( !defined( $hash->{READINGS}{vidin_res}{VAL} ) + || $hash->{READINGS}{vidin_res}{VAL} ne $vidin_res ) + { + readingsBulkUpdate( $hash, "vidin_res", $vidin_res, 1 ); + } + if ( !defined( $hash->{READINGS}{vidin_cspace}{VAL} ) + || $hash->{READINGS}{vidin_cspace}{VAL} ne + lc( $video_split[2] ) ) + { + readingsBulkUpdate( $hash, "vidin_cspace", + lc( $video_split[2] ), 1 ); + } + if ( !defined( $hash->{READINGS}{vidin_cdepth}{VAL} ) + || $hash->{READINGS}{vidin_cdepth}{VAL} ne $vidin_cdepth ) + { + readingsBulkUpdate( $hash, "vidin_cdepth", $vidin_cdepth, + 1 ); + } + if ( !defined( $hash->{READINGS}{vidout_dst}{VAL} ) + || $hash->{READINGS}{vidout_dst}{VAL} ne $video_split[4] ) + { + readingsBulkUpdate( $hash, "vidout_dst", $video_split[4], + 1 ); + } + if ( !defined( $hash->{READINGS}{vidout_res}{VAL} ) + || $hash->{READINGS}{vidout_res}{VAL} ne $vidout_res ) + { + readingsBulkUpdate( $hash, "vidout_res", $vidout_res, 1 ); + } + if ( !defined( $hash->{READINGS}{vidout_cspace}{VAL} ) + || $hash->{READINGS}{vidout_cspace}{VAL} ne + lc( $video_split[6] ) ) + { + readingsBulkUpdate( $hash, "vidout_cspace", + lc( $video_split[6] ), 1 ); + } + if ( !defined( $hash->{READINGS}{vidout_cdepth}{VAL} ) + || $hash->{READINGS}{vidout_cdepth}{VAL} ne $vidout_cdepth ) + { + readingsBulkUpdate( $hash, "vidout_cdepth", $vidout_cdepth, + 1 ); + } + if ( !defined( $hash->{READINGS}{vidout_mode}{VAL} ) + || $hash->{READINGS}{vidout_mode}{VAL} ne + lc( $video_split[8] ) ) + { + readingsBulkUpdate( $hash, "vidout_mode", + lc( $video_split[8] ), 1 ); + } + } + else { + foreach ( + "vidin_src", "vidin_res", "vidin_cspace", + "vidin_cdepth", "vidout_dst", "vidout_res", + "vidout_cspace", "vidout_cdepth", "vidout_mode", + ) + { + if ( !defined( $hash->{READINGS}{$_}{VAL} ) + || $hash->{READINGS}{$_}{VAL} ne "-" ) + { + readingsBulkUpdate( $hash, $_, "-", 1 ); + } + } + } + } + else { + foreach ( + "vidin_src", "vidin_res", "vidin_cspace", + "vidin_cdepth", "vidout_dst", "vidout_res", + "vidout_cspace", "vidout_cdepth", "vidout_mode", + ) + { + if ( !defined( $hash->{READINGS}{$_}{VAL} ) + || $hash->{READINGS}{$_}{VAL} ne "-" ) + { + readingsBulkUpdate( $hash, $_, "-", 1 ); + } + } + } + } + + readingsEndUpdate( $hash, 1 ); + + Log3 $name, 4, "ONKYO_AVR $name: " . $hash->{STATE}; + + return $hash->{STATE}; +} + +################################### +sub ONKYO_AVR_Get($@) { + my ( $hash, @a ) = @_; + my $what; + + return "argument is missing" if ( int(@a) < 2 ); + + $what = $a[1]; + + if ( $what =~ /^(power|input|volume|mute|sleep)$/ ) { + if ( defined( $hash->{READINGS}{$what} ) ) { + return $hash->{READINGS}{$what}{VAL}; + } + else { + return "no such reading: $what"; + } + } + else { + return +"Unknown argument $what, choose one of power:noArg input:noArg volume:noArg mute:noArg sleep:noArg "; + } +} + +################################### +sub ONKYO_AVR_Set($@) { + my ( $hash, @a ) = @_; + my $name = $hash->{NAME}; + my $interval = $hash->{INTERVAL}; + my $zone = $hash->{ZONE}; + my $state = $hash->{STATE}; + my $return; + my $reading; + my $inputs_txt; + + return "No argument given to ONKYO_AVR_Set" if ( !defined( $a[1] ) ); + + # Input alias handling + if ( defined( $attr{$name}{inputs} ) ) { + my @inputs = split( ':', $attr{$name}{inputs} ); + $inputs_txt = "-," if ( $state ne "on" ); + + foreach (@inputs) { + if (m/[^,\s]+(,[^,\s]+)+/) { + my @input_names = split( ',', $_ ); + $inputs_txt .= $input_names[1] . ","; + $input_names[1] =~ s/\s/_/g; + $hash->{helper}{receiver}{input_aliases}{ $input_names[0] } = + $input_names[1]; + $hash->{helper}{receiver}{input_names}{ $input_names[1] } = + $input_names[0]; + } + else { + $inputs_txt .= $_ . ","; + } + } + + $inputs_txt =~ s/\s/_/g; + $inputs_txt = substr( $inputs_txt, 0, -1 ); + } + + # if we could read the actual available inputs from the receiver, use them + elsif (defined( $hash->{helper}{receiver} ) + && ref( $hash->{helper}{receiver} ) eq "HASH" + && defined( $hash->{helper}{receiver}{device}{selectorlist}{count} ) + && $hash->{helper}{receiver}{device}{selectorlist}{count} > 0 ) + { + $inputs_txt = "-," if ( $state ne "on" ); + + foreach my $input ( + sort + keys %{ $hash->{helper}{receiver}{device}{selectorlist}{selector} } + ) + { + if ( $hash->{helper}{receiver}{device}{selectorlist}{selector} + {$input}{value} eq "1" + && $hash->{helper}{receiver}{device}{selectorlist}{selector} + {$input}{id} !~ /(80)/ ) + { + $inputs_txt .= $input . ","; + } + } + + $inputs_txt =~ s/\s/_/g; + $inputs_txt = substr( $inputs_txt, 0, -1 ); + } + + # use general list of possible inputs + else { + # Find out valid inputs + my $inputs = + ONKYO_AVR_GetRemotecontrolValue( "main", + ONKYO_AVR_GetRemotecontrolCommand( "main", "input" ) ); + + foreach my $input ( sort keys %{$inputs} ) { + $inputs_txt .= $input . "," + if ( !( $input =~ /^(07|08|09|up|down|query)$/ ) ); + } + $inputs_txt = substr( $inputs_txt, 0, -1 ); + } + + my $usage = + "Unknown argument '" + . $a[1] + . "', choose one of statusRequest:noArg toggle:noArg on:noArg off:noArg volume:slider,0,1,100 volumeUp:noArg volumeDown:noArg remoteControl input:" + . $inputs_txt; + $usage .= " sleep:off,5,10,15,30,60,90" if ( $zone eq "main" ); + $usage .= " mute:off,on" if ( $state eq "on" ); + $usage .= " mute:,-" if ( $state ne "on" ); + + my $cmd = ''; + my $result; + + # Stop the internal GetStatus-Loop to avoid + # parallel/conflicting requests to device + RemoveInternalTimer($hash) + if ( $a[1] ne "?" ); + + # statusRequest + if ( $a[1] eq "statusRequest" ) { + Log3 $name, 3, "ONKYO_AVR set $name " . $a[1]; + $hash->{helper}{receiver} = undef; + ONKYO_AVR_GetStatus( $hash, 1 ) if ( !defined( $a[2] ) ); + } + + # toggle + elsif ( $a[1] eq "toggle" ) { + Log3 $name, 3, "ONKYO_AVR set $name " . $a[1]; + + if ( $hash->{READINGS}{power}{VAL} eq "off" ) { + $return = ONKYO_AVR_Set( $hash, $name, "on" ); + } + else { + $return = ONKYO_AVR_Set( $hash, $name, "off" ); + } + } + + # on + elsif ( $a[1] eq "on" ) { + Log3 $name, 3, "ONKYO_AVR set $name " . $a[1]; + + if ( $hash->{READINGS}{state}{VAL} eq "absent" ) { + $return = + "Device is offline and cannot be controlled at that stage."; + } + else { + $result = ONKYO_AVR_SendCommand( $hash, "power", "on" ); + if ( defined($result) ) { + readingsBeginUpdate($hash); + if ( !defined( $hash->{READINGS}{power}{VAL} ) + || $hash->{READINGS}{power}{VAL} ne $result ) + { + readingsBulkUpdate( $hash, "power", $result ); + } + if ( !defined( $hash->{READINGS}{state}{VAL} ) + || $hash->{READINGS}{state}{VAL} ne $result ) + { + readingsBulkUpdate( $hash, "state", $result ); + } + readingsEndUpdate( $hash, 1 ); + } + $interval = 2; + } + } + + # off + elsif ( $a[1] eq "off" ) { + Log3 $name, 3, "ONKYO_AVR set $name " . $a[1]; + + if ( $hash->{READINGS}{state}{VAL} eq "absent" ) { + $return = + "Device is offline and cannot be controlled at that stage."; + } + else { + $result = ONKYO_AVR_SendCommand( $hash, "power", "off" ); + if ( defined($result) ) { + readingsBeginUpdate($hash); + if ( !defined( $hash->{READINGS}{power}{VAL} ) + || $hash->{READINGS}{power}{VAL} ne $result ) + { + readingsBulkUpdate( $hash, "power", $result ); + } + if ( !defined( $hash->{READINGS}{state}{VAL} ) + || $hash->{READINGS}{state}{VAL} ne $result ) + { + readingsBulkUpdate( $hash, "state", $result ); + } + readingsEndUpdate( $hash, 1 ); + } + $interval = 2; + } + } + + # sleep + elsif ( $a[1] eq "sleep" && $zone eq "main" ) { + if ( !defined( $a[2] ) ) { + $return = "No argument given, choose one of minutes off"; + } + else { + Log3 $name, 3, "ONKYO_AVR set $name " . $a[1] . " " . $a[2]; + + if ( $hash->{READINGS}{state}{VAL} eq "absent" ) { + $return = + "Device is offline and cannot be controlled at that stage."; + } + else { + my $_ = $a[2]; + if ( $_ eq "off" ) { + $result = ONKYO_AVR_SendCommand( $hash, "sleep", "off" ); + } + elsif ( m/^\d+$/ && $_ > 0 && $_ <= 90 ) { + $result = + ONKYO_AVR_SendCommand( $hash, "sleep", + ONKYO_AVR_dec2hex($_) ); + } + else { + $return = +"Argument does not seem to be a valid integer between 0 and 90"; + } + + if ( defined($result) ) { + if ( !defined( $hash->{READINGS}{sleep}{VAL} ) + || $hash->{READINGS}{sleep}{VAL} ne $result ) + { + readingsSingleUpdate( $hash, "sleep", $result, 1 ); + } + } + } + } + } + + # mute + elsif ( $a[1] eq "mute" ) { + if ( !defined( $a[2] ) ) { + $return = "No argument given, choose one of on off toggle"; + } + else { + Log3 $name, 3, "ONKYO_AVR set $name " . $a[1] . " " . $a[2]; + + if ( $hash->{READINGS}{state}{VAL} eq "on" ) { + if ( $a[2] eq "off" ) { + $result = ONKYO_AVR_SendCommand( $hash, "mute", "off" ); + } + elsif ( $a[2] eq "on" ) { + $result = ONKYO_AVR_SendCommand( $hash, "mute", "on" ); + } + elsif ( $a[2] eq "toggle" ) { + $result = ONKYO_AVR_SendCommand( $hash, "mute", "toggle" ); + } + else { + $return = + "Argument does not seem to be one of on off toogle"; + } + + if ( defined($result) ) { + if ( !defined( $hash->{READINGS}{mute}{VAL} ) + || $hash->{READINGS}{mute}{VAL} ne $result ) + { + readingsSingleUpdate( $hash, "mute", $result, 1 ); + } + } + } + else { + $return = "Device needs to be ON to mute/unmute audio."; + } + } + } + + # volume + elsif ( $a[1] eq "volume" ) { + if ( !defined( $a[2] ) ) { + $return = "No argument given"; + } + else { + Log3 $name, 3, "ONKYO_AVR set $name " . $a[1] . " " . $a[2]; + + if ( $hash->{READINGS}{state}{VAL} eq "on" ) { + my $_ = $a[2]; + if ( m/^\d+$/ && $_ >= 0 && $_ <= 100 ) { + $result = + ONKYO_AVR_SendCommand( $hash, "volume", + ONKYO_AVR_dec2hex($_) ); + + if ( defined($result) ) { + if ( !defined( $hash->{READINGS}{volume}{VAL} ) + || $hash->{READINGS}{volume}{VAL} ne $result ) + { + readingsSingleUpdate( $hash, "volume", $result, 1 ); + } + } + } + else { + $return = +"Argument does not seem to be a valid integer between 0 and 100"; + } + } + else { + $return = "Device needs to be ON to adjust volume."; + } + } + } + + # volumeUp/volumeDown + elsif ( $a[1] =~ /^(volumeUp|volumeDown)$/ ) { + Log3 $name, 3, "ONKYO_AVR set $name " . $a[1]; + + if ( $hash->{READINGS}{state}{VAL} eq "on" ) { + if ( $a[1] eq "volumeUp" ) { + $result = ONKYO_AVR_SendCommand( $hash, "volume", "level-up" ); + } + else { + $result = + ONKYO_AVR_SendCommand( $hash, "volume", "level-down" ); + } + + if ( defined($result) ) { + if ( !defined( $hash->{READINGS}{volume}{VAL} ) + || $hash->{READINGS}{volume}{VAL} ne $result ) + { + readingsSingleUpdate( $hash, "volume", $result, 1 ); + } + } + } + else { + $return = "Device needs to be ON to adjust volume."; + } + } + + # input + elsif ( $a[1] eq "input" ) { + if ( !defined( $a[2] ) ) { + $return = "No input given"; + } + else { + Log3 $name, 3, "ONKYO_AVR set $name " . $a[1] . " " . $a[2]; + + if ( $hash->{READINGS}{power}{VAL} eq "off" ) { + $return = ONKYO_AVR_Set( $hash, $name, "on" ); + } + + if ( $hash->{READINGS}{state}{VAL} eq "on" ) { + $result = ONKYO_AVR_SendCommand( $hash, "input", $a[2] ); + + if ( defined($result) ) { + if ( !defined( $hash->{READINGS}{input}{VAL} ) + || $hash->{READINGS}{input}{VAL} ne $a[2] ) + { + readingsSingleUpdate( $hash, "input", $a[2], 1 ); + } + } + } + else { + $return = "Device needs to be ON to change input."; + } + $interval = 2; + } + } + + # remoteControl + elsif ( $a[1] eq "remoteControl" ) { + + # Reading commands for zone from HASH table + my $commands = ONKYO_AVR_GetRemotecontrolCommand($zone); + + # Output help for commands + if ( !defined( $a[2] ) || $a[2] eq "help" ) { + + # Get all commands for zone + my $commands_details = + ONKYO_AVR_GetRemotecontrolCommandDetails($zone); + + my $valid_commands = +"Usage: \n\nValid commands in zone '$zone':\n\n\n" + . "COMMAND\t\t\tDESCRIPTION\n\n"; + + # For each valid command + foreach my $command ( sort keys %{$commands} ) { + my $command_raw = $commands->{$command}; + + # add command including description if found + if ( defined( $commands_details->{$command_raw}{description} ) ) + { + $valid_commands .= + $command + . "\t\t\t" + . $commands_details->{$command_raw}{description} . "\n"; + } + + # add command only + else { + $valid_commands .= $command . "\n"; + } + } + + $valid_commands .= + "\nTry ' help' to find out well known values.\n\n\n"; + + $return = $valid_commands; + } + else { + # return if command cannot be found in HASH table + if ( !defined( $commands->{ $a[2] } ) ) { + $return = "Invalid command: " . $a[2]; + } + else { + + # Reading values for command from HASH table + my $values = + ONKYO_AVR_GetRemotecontrolValue( $zone, + $commands->{ $a[2] } ); + + # Output help for values + if ( !defined( $a[3] ) || $a[3] eq "help" ) { + + # Get all details for command + my $command_details = + ONKYO_AVR_GetRemotecontrolCommandDetails( $zone, + $commands->{ $a[2] } ); + + my $valid_values = + "Usage: " + . $a[2] + . " \n\nWell known values:\n\n\n" + . "VALUE\t\t\tDESCRIPTION\n\n"; + + # For each valid value + foreach my $value ( sort keys %{$values} ) { + + # add value including description if found + if ( defined( $command_details->{description} ) ) { + $valid_values .= + $value + . "\t\t\t" + . $command_details->{description} . "\n"; + } + + # add value only + else { + $valid_values .= $value . "\n"; + } + } + + $valid_values .= "\n\n\n"; + + $return = $valid_values; + } + + # normal processing + else { + Log3 $name, 3, + "ONKYO_AVR set $name " + . $a[1] . " " + . $a[2] . " " + . $a[3]; + + if ( $hash->{READINGS}{state}{VAL} ne "absent" ) { + + # special power toogle handling + if ( $a[2] eq "power" + && $a[3] eq "toggle" ) + { + $result = ONKYO_AVR_Set( $hash, $name, "toggle" ); + } + + # normal processing + else { + $result = + ONKYO_AVR_SendCommand( $hash, $a[2], $a[3] ); + } + + if ( !defined($result) ) { + $return = + "ERROR: command '" + . $a[2] . " " + . $a[3] + . "' was NOT successful."; + } + elsif ( $a[3] eq "query" ) { + $return = $result; + } + } + else { + $return = +"Device needs to be reachable to be controlled remotely."; + } + } + } + } + } + + # return usage hint + else { + $return = $usage; + } + + # Re-start internal timer + InternalTimer( gettimeofday() + $interval, "ONKYO_AVR_GetStatus", $hash, 0 ) + if ( $a[1] ne "?" ); + + # return result + return $return; +} + +################################### +sub ONKYO_AVR_Define($$) { + my ( $hash, $def ) = @_; + my @a = split( "[ \t][ \t]*", $def ); + my $name = $hash->{NAME}; + + if ( int(@a) < 3 ) { + my $msg = +"Wrong syntax: define ONKYO_AVR [] [] []"; + Log3 $name, 4, $msg; + return $msg; + } + + my $address = $a[2]; + $hash->{helper}{ADDRESS} = $address; + + # use fixed port 60128 + my $port = 60128; + $hash->{helper}{PORT} = $port; + + # protocol version + my $protocol = $a[3] || 2013; + $hash->{PROTOCOL} = $protocol; + + # used zone to control + my $zone = $a[4] || "main"; + $hash->{ZONE} = $zone; + + my $interval; + if ( $zone eq "main" ) { + + # use interval of 75sec for main zone if not defined + $interval = $a[5] || 75; + } + else { + # use interval of 90sec for other zones if not defined + $interval = $a[5] || 90; + } + $hash->{INTERVAL} = $interval; + + # check values + if ( !( $protocol =~ /^(2013|pre2013)$/ ) ) { + return "Invalid protocol, choose one of 2013 pre2013"; + } + if ( !( $zone =~ /^(main|zone2|zone3|zone4|dock)$/ ) ) { + return "Invalid zone, choose one of main zone2 zone3 zone4 dock"; + } + + # set default attributes + unless ( exists( $hash->{attr}{webCmd} ) ) { + $attr{$name}{webCmd} = 'volume:mute:input'; + } + unless ( exists( $hash->{attr}{devStateIcon} ) ) { + $attr{$name}{devStateIcon} = + 'on:rc_GREEN:off off:rc_STOP:on absent:rc_RED'; + } + $hash->{helper}{receiver} = undef; + + unless ( exists( $hash->{helper}{AVAILABLE} ) + and ( $hash->{helper}{AVAILABLE} == 0 ) ) + { + $hash->{helper}{AVAILABLE} = 1; + readingsSingleUpdate( $hash, "presence", "present", 1 ); + } + + # start the status update timer + RemoveInternalTimer($hash); + InternalTimer( gettimeofday() + 2, "ONKYO_AVR_GetStatus", $hash, 0 ); + + return undef; +} + +############################################################################################################ +# +# Begin of helper functions +# +############################################################################################################ + +################################### +sub ONKYO_AVR_SendCommand($$$) { + my ( $hash, $cmd, $value ) = @_; + my $name = $hash->{NAME}; + my $address = $hash->{helper}{ADDRESS}; + my $port = $hash->{helper}{PORT}; + my $protocol = $hash->{PROTOCOL}; + my $zone = $hash->{ZONE}; + my $timeout = 3; + my $response; + my $response_code; + my $return; + + # Input alias handling + if ( $cmd eq "input" ) { + + # Resolve input alias to correct name + if ( defined( $hash->{helper}{receiver}{input_names}{$value} ) ) { + $value = $hash->{helper}{receiver}{input_names}{$value}; + } + + # Resolve device specific input alias + $value =~ s/_/ /g; + if ( + defined( + $hash->{helper}{receiver}{device}{selectorlist} + {selector}{$value}{id} + ) + ) + { + $value = uc( $hash->{helper}{receiver}{device}{selectorlist} + {selector}{$value}{id} ); + } + } + + # Resolve command and value to ISCP raw command + my $cmd_raw = ONKYO_AVR_GetRemotecontrolCommand( $zone, $cmd ); + my $value_raw = ONKYO_AVR_GetRemotecontrolValue( $zone, $cmd_raw, $value ); + my $request_code = substr( $cmd_raw, 0, 3 ); + + if ( !defined($cmd_raw) ) { + Log3 $name, 4, +"ONKYO_AVR $name($zone): command '$cmd' is not available within zone '$zone' or command is invalid"; + return undef; + } + + if ( !defined($value_raw) ) { + Log3 $name, 4, +"ONKYO_AVR $name($zone): $cmd - Warning, value '$value' not found in HASH table, will be sent to receiver 'as is'"; + $value_raw = $value; + } + + Log3 $name, 4, + "ONKYO_AVR $name($zone): $cmd -> $value ($cmd_raw$value_raw)"; + + my $filehandle = IO::Socket::INET->new( + PeerAddr => $address, + PeerPort => $port, + Proto => 'tcp', + Timeout => $timeout, + ); + + if ( defined($filehandle) && $cmd_raw ne "" && $value_raw ne "" ) { + my $str = ONKYO_AVR_Pack( $cmd_raw . $value_raw, $protocol ); + my $line; + + Log3 $name, 5, + "ONKYO_AVR $name($zone): $address:$port snd " + . ONKYO_AVR_hexdump($str); + syswrite $filehandle, $str, length $str; + + my $sel = IO::Select->new($filehandle); + my $start = Time::HiRes::time; + my $last_read; + my $loop_time; + my $buf = ""; + my $readon = 1; + do { + $sel->can_read($timeout) or $readon = 0; + my $bytes = sysread( $filehandle, $buf, 65 * 1024, length($buf) ); + die defined $bytes ? 'closed' : 'error: '.$! unless ($bytes); + $last_read = Time::HiRes::time; + + $line = ONKYO_AVR_read( $hash, \$buf ); + $response_code = substr( $line, 0, 3 ) if defined($line); + + if ( defined($response_code) && $response_code eq $request_code ) { + $response->{$response_code} = $line; + $readon = 0; + } + elsif ( defined($response_code) ) { + $response->{$response_code} = $line; + } + + $loop_time = $last_read - $start; + $readon = 0 if ( $loop_time ge $timeout ); + } while ($readon); + + # Close socket connections + $sel->remove($filehandle); + $filehandle->close(); + } + + unless ( defined($response) ) { + if ( defined( $hash->{helper}{AVAILABLE} ) + and $hash->{helper}{AVAILABLE} eq 1 ) + { + Log3 $name, 3, "ONKYO_AVR device $name is unavailable"; + readingsSingleUpdate( $hash, "presence", "absent", 1 ); + } + $hash->{helper}{AVAILABLE} = 0; + } + else { + if ( defined( $hash->{helper}{AVAILABLE} ) + and $hash->{helper}{AVAILABLE} eq 0 ) + { + Log3 $name, 3, "ONKYO_AVR device $name is available"; + readingsSingleUpdate( $hash, "presence", "present", 1 ); + } + $hash->{helper}{AVAILABLE} = 1; + + # Search for expected answer + if ( defined( $response->{$request_code} ) ) { + my $_ = substr( $response->{$request_code}, 3 ); + + # Decode return value + # + my $values = + ONKYO_AVR_GetRemotecontrolCommandDetails( $zone, $request_code ); + + # Decode through device information + if ( $cmd eq "input" + && defined( $hash->{helper}{receiver} ) + && ref( $hash->{helper}{receiver} ) eq "HASH" + && defined( $hash->{helper}{receiver}{input}{$_} ) ) + { + Log3 $name, 4, +"ONKYO_AVR $name($zone): $cmd_raw$value_raw return value '$_' converted through device information to '" + . $hash->{helper}{receiver}{input}{$_} . "'"; + $return = $hash->{helper}{receiver}{input}{$_}; + } + + # Decode through HASH table + elsif ( defined( $values->{values}{"$_"}{name} ) ) { + if ( ref( $values->{values}{"$_"}{name} ) eq "ARRAY" ) { + Log3 $name, 4, +"ONKYO_AVR $name($zone): $cmd_raw$value_raw return value '$_' converted through ARRAY from HASH table to '" + . $values->{values}{"$_"}{name}[0] . "'"; + $return = $values->{values}{"$_"}{name}[0]; + } + else { + Log3 $name, 4, +"ONKYO_AVR $name($zone): $cmd_raw$value_raw return value '$_' converted through VALUE from HASH table to '" + . $values->{values}{"$_"}{name} . "'"; + $return = $values->{values}{"$_"}{name}; + } + } + + # return as decimal + elsif ( m/^[0-9A-Fa-f][0-9A-Fa-f]$/ + && $request_code =~ /^(MVL|SLP)$/ ) + { + Log3 $name, 4, +"ONKYO_AVR $name($zone): $cmd_raw$value_raw return value '$_' converted from HEX to DEC "; + $return = ONKYO_AVR_hex2dec($_); + + } + + # just return the original return value if there is + # no decoding function + elsif ( lc($_) ne "n/a" ) { + Log3 $name, 4, +"ONKYO_AVR $name($zone): $cmd_raw$value_raw unconverted return of value '$_'"; + $return = $_; + + } + + # Log if the command is not supported by the device + elsif ( $value_raw ne "QSTN" ) { + Log3 $name, 3, +"ONKYO_AVR $name($zone): command $cmd -> $value ($cmd_raw$value_raw) not supported by device"; + } + + } + else { + Log3 $name, 4, +"ONKYO_AVR $name($zone): No valid response for command '$cmd_raw' during request session of $timeout seconds"; + } + + # Input alias handling + if ( $cmd eq "input" + && defined($return) + && defined( $hash->{helper}{receiver}{input_aliases}{$return} ) ) + { + Log3 $name, 4, +"ONKYO_AVR $name($zone): $cmd_raw$value_raw aliasing '$return' to '" + . $hash->{helper}{receiver}{input_aliases}{$return} . "'"; + $return = $hash->{helper}{receiver}{input_aliases}{$return}; + } + + # clear hash to free memory + %{$response} = (); + + return $return; + } + + return undef; +} + +################################### +sub ONKYO_AVR_Undefine($$) { + my ( $hash, $arg ) = @_; + + # Stop the internal GetStatus-Loop and exit + RemoveInternalTimer($hash); + return undef; +} + +################################### +sub ONKYO_AVR_read($$) { + my ( $hash, $rbuf ) = @_; + my $name = $hash->{NAME}; + my $address = $hash->{helper}{ADDRESS}; + my $port = $hash->{helper}{PORT}; + my $zone = $hash->{ZONE}; + return unless ($$rbuf); + + Log3 $name, 5, + "ONKYO_AVR $name($zone): $address:$port rcv " . ONKYO_AVR_hexdump($$rbuf); + + my $length = length $$rbuf; + return unless ( $length >= 16 ); + + my ( $magic, $header_size, $data_size, $version, $res1, $res2, $res3 ) = + unpack 'a4 N N C4', $$rbuf; + + Log3 $name, 5, + "ONKYO_AVR $name: Unexpected magic: expected 'ISCP', got '$magic'" + and return + unless ( $magic eq 'ISCP' ); + + return unless ( $length >= $header_size + $data_size ); + + substr $$rbuf, 0, $header_size, ''; + + Log3 $name, 5, + "ONKYO_AVR $name: Unexpected version: expected '0x01', got '0x%02x' " + . $version + unless ( $version == 0x01 ); + Log3 $name, 5, + "ONKYO_AVR $name: Unexpected header size: expected '0x10', got '0x%02x' " + . $header_size + unless ( $header_size == 0x10 ); + + my $body = substr $$rbuf, 0, $data_size, ''; + my $sd = substr $body, 0, 2, ''; + $body =~ s/([\032\r\n]|[\032\r]|[\032]|[\r\n]|[\r])+$//; + + Log3 $name, 5, + "ONKYO_AVR $name: Unexpected start/destination: expected '!1', got '$sd'" + unless ( $sd eq '!1' ); + + return $body; +} + +################################### +sub ONKYO_AVR_Pack($;$) { + my ( $d, $protocol ) = @_; + + # ------------------ + # < 2013 (produced by TX-NR515) + # ------------------ + # + # EXAMPLE REQUEST FOR PWRQSTN + # 4953 4350 0000 0010 0000 000a 0100 0000 ISCP............ + # 2131 5057 5251 5354 4e0d !1PWRQSTN. + # + # EXAMPLE REPLY FOR PWRQSTN + # 4953 4350 0000 0010 0000 000a 0100 0000 ISCP............ + # 2131 5057 5230 311a 0d0a !1PWR01... + # + + # ------------------ + # 2013+ (produced by TX-NR626) + # ------------------ + # + # EXAMPLE REQUEST FOR PWRQSTN + # 4953 4350 0000 0010 0000 000b 0100 0000 ISCP............ + # 2131 5057 5251 5354 4e0d 0a !1PWRQSTN.. + # + # EXAMPLE REPLY FOR PWRQSTN + # 4953 4350 0000 0010 0000 000a 0100 0000 ISCP............ + # 2131 5057 5230 311a 0d0a !1PWR01... + # + + # add start character and destination unit type 1=receiver + $d = '!1' . $d; + + # If protocol is defined as pre-2013 use EOF code for older models + if ( defined($protocol) && $protocol eq "pre2013" ) { + + # = 0x0d + $d .= "\r"; + } + + # otherwise use EOF code for newer models + else { + + # = 0x0d0a + $d .= "\r\n"; + } + + pack( "a* N N N a*", 'ISCP', 0x10, ( length $d ), 0x01000000, $d ); +} + +################################### +sub ONKYO_AVR_hexdump { + my $s = shift; + my $r = unpack 'H*', $s; + $s =~ s/[^ -~]/./g; + $r . ' ' . $s; +} + +################################### +sub ONKYO_AVR_hex2dec($) { + my ($hex) = @_; + return unpack( 's', pack 's', hex($hex) ); +} + +################################### +sub ONKYO_AVR_dec2hex($) { + my ($dec) = @_; + my $hex = uc( sprintf( "%x", $dec ) ); + + return "0" . $hex if ( length($hex) eq 1 ); + return $hex; +} + +##################################### +# Callback from 95_remotecontrol for command makenotify. +sub ONKYO_AVR_RCmakenotify($$) { + my ( $name, $ndev ) = @_; + my $nname = "notify_$name"; + + fhem( "define $nname notify $name set $ndev remoteControl " . '$EVENT', 1 ); + Log3 $name, 2, "remotecontrol Notify for $ndev created: $nname"; + return undef; +} + +##################################### +# RC layouts + +sub ONKYO_AVR_RClayout_SVG() { + my @row; + + $row[0] = ":rc_BLANK.svg,:rc_BLANK.svg,power toggle:rc_POWER.svg"; + $row[1] = ":rc_BLANK.svg,:rc_BLANK.svg,:rc_BLANK.svg"; + + $row[2] = "1:rc_1.svg,2:rc_2.svg,3:rc_3.svg"; + $row[3] = "4:rc_4.svg,5:rc_5.svg,6:rc_6.svg"; + $row[4] = "7:rc_7.svg,8:rc_8.svg,9:rc_9.svg"; + $row[5] = ":rc_BLANK.svg,0:rc_0.svg,:rc_BLANK.svg"; + $row[6] = ":rc_BLANK.svg,:rc_BLANK.svg,:rc_BLANK.svg"; + + $row[7] = "VOLUMEUP:rc_VOLPLUS.svg,MUTE:rc_MUTE.svg,CHANNELUP:rc_UP.svg"; + $row[8] = + "VOLUMEDOWN:rc_VOLMINUS.svg,EXIT:rc_EXIT.svg,CHANNELDOWN:rc_DOWN.svg"; + $row[9] = ":rc_BLANK.svg,:rc_BLANK.svg,:rc_BLANK.svg"; + + $row[10] = "INFO:rc_INFO.svg,UP:rc_UP.svg,MENU:rc_MENU.svg"; + $row[11] = "LEFT:rc_LEFT.svg,OK:rc_OK.svg,RIGHT:rc_RIGHT.svg"; + $row[12] = "AUDIO:rc_AUDIO.svg,DOWN:rc_DOWN.svg,VIDEO:rc_VIDEO.svg"; + $row[13] = ":rc_BLANK.svg,EXIT:rc_EXIT.svg,:rc_BLANK.svg"; + + $row[14] = +"RED:rc_REWred.svg,GREEN:rc_PLAYgreen.svg,YELLOW:rc_PAUSEyellow.svg,BLUE:rc_FFblue.svg"; + $row[15] = +"TV:rc_TVstop.svg,RADIO:rc_RADIOred.svg,TEXT:rc_TEXT.svg,HELP:rc_HELP.svg"; + + $row[16] = "attr rc_iconpath icons/remotecontrol"; + $row[17] = "attr rc_iconprefix black_btn_"; + return @row; +} + +sub ONKYO_AVR_RClayout() { + my @row; + + $row[0] = ":blank,:blank,power toggle:POWEROFF"; + $row[1] = ":blank,:blank,:blank"; + + $row[2] = "1,2,3"; + $row[3] = "4,5,6"; + $row[4] = "7,8,9"; + $row[5] = ":blank,0:0,:blank"; + $row[6] = ":blank,:blank,:blank"; + + $row[7] = "VOLUMEUP:VOLUP,MUTE,CHANNELUP:CHUP2"; + $row[8] = "VOLUMEDOWN:VOLDOWN,EXIT,CHANNELDOWN:CHDOWN2"; + $row[9] = ":blank,:blank,:blank"; + + $row[10] = "INFO,UP,MENU"; + $row[11] = "LEFT,OK,RIGHT"; + $row[12] = "AUDIO,DOWN,VIDEO"; + $row[13] = ":blank,:blank,:blank"; + + $row[14] = "RED:REWINDred,GREEN:PLAYgreen,YELLOW:PAUSEyellow,BLUE:FFblue"; + $row[15] = "TV:TVstop,RADIO:RADIOred,TEXT,HELP"; + + $row[16] = "attr rc_iconpath icons/remotecontrol"; + $row[17] = "attr rc_iconprefix black_btn_"; + return @row; +} + +##################################### +sub ONKYO_AVR_GetRemotecontrolCommand($;$) { + my ( $zone, $command ) = @_; + + my $commands_hr = { + 'dock' => { + 'command-for-docking-station-via-ri' => 'CDS' + }, + 'main' => { + '12v-trigger-a' => 'TGA', + '12v-trigger-b' => 'TGB', + '12v-trigger-c' => 'TGC', + 'audio-information' => 'IFA', + 'audio-input' => 'SLA', + 'audyssey-2eq-multeq-multeq-xt' => 'ADY', + 'audyssey-dynamic-eq' => 'ADQ', + 'audyssey-dynamic-volume' => 'ADV', + 'cd-player' => 'CCD', + 'cd-recorder' => 'CCR', + 'center-temporary-level' => 'CTL', + 'cinema-filter' => 'RAS', + 'dab-display-info' => 'UDD', + 'dab-preset' => 'UPR', + 'dab-station-name' => 'UDS', + 'dat-recorder' => 'CDT', + 'dimmer-level' => 'DIM', + 'display-mode' => 'DIF', + 'dolby-volume' => 'DVL', + 'dvd-player' => 'CDV', + 'graphics-equalizer' => 'CEQ', + 'hd-radio-artist-name-info' => 'UHA', + 'hd-radio-blend-mode' => 'UHB', + 'hd-radio-channel-name-info' => 'UHC', + 'hd-radio-channel-program' => 'UHP', + 'hd-radio-detail-info' => 'UHD', + 'hd-radio-title-info' => 'UHT', + 'hd-radio-tuner-status' => 'UHS', + 'hdmi-audio-out' => 'HAO', + 'hdmi-output' => 'HDO', + 'input' => 'SLI', + 'internet-radio-preset' => 'NPR', + 'ipod-album-name-info' => 'IAL', + 'ipod-artist-name-info' => 'IAT', + 'ipod-list-info' => 'ILS', + 'ipod-mode-change' => 'IMD', + 'ipod-play-status' => 'IST', + 'ipod-time-info' => 'ITM', + 'ipod-title-name' => 'ITI', + 'ipod-track-info' => 'ITR', + 'isf-mode' => 'ISF', + 'late-night' => 'LTN', + 'listening-mode' => 'LMD', + 'volume' => 'MVL', + 'md-recorder' => 'CMD', + 'memory-setup' => 'MEM', + 'monitor-out-resolution' => 'RES', + 'music-optimizer' => 'MOT', + 'mute' => 'AMT', + 'net-keyboard' => 'NKY', + 'net-popup-message' => 'NPU', + 'net-receiver-information' => 'NRI', + 'net-service' => 'NSV', + 'net-usb-album-name-info' => 'NAL', + 'net-usb-artist-name-info' => 'NAT', + 'net-usb-jacket-art' => 'NJA', + 'net-usb-list-info' => 'NLS', + 'net-usb-play-status' => 'NST', + 'net-usb-time-info' => 'NTM', + 'net-usb-title-name' => 'NTI', + 'net-usb-track-info' => 'NTR', + 'network-usb' => 'NTC', + 'preset' => 'PRS', + 'preset-memory' => 'UPM', + 'pty-scan' => 'PTS', + 'rds-information' => 'RDS', + 'record-output' => 'SLR', + 'setup' => 'OSD', + 'sirius-artist-name-info' => 'SAT', + 'sirius-category' => 'SCT', + 'sirius-channel-name-info' => 'SCN', + 'sirius-channel-number' => 'SCH', + 'sirius-parental-lock' => 'SLK', + 'sirius-title-info' => 'STI', + 'sleep' => 'SLP', + 'speaker-a' => 'SPA', + 'speaker-b' => 'SPB', + 'speaker-layout' => 'SPL', + 'speaker-level-calibration' => 'SLC', + 'subwoofer-temporary-level' => 'SWL', + 'power' => 'PWR', + 'tape1-a' => 'CT1', + 'tape2-b' => 'CT2', + 'tone-center' => 'TCT', + 'tone-front' => 'TFR', + 'tone-front-high' => 'TFH', + 'tone-front-wide' => 'TFW', + 'tone-subwoofer' => 'TSW', + 'tone-surround' => 'TSR', + 'tone-surround-back' => 'TSB', + 'tp-scan' => 'TPS', + 'tuning' => 'UTN', + 'universal-port' => 'CPT', + 'video-information' => 'IFV', + 'video-output' => 'VOS', + 'video-picture-mode' => 'VPM', + 'video-wide-mode' => 'VWM', + 'volume' => 'MVL', + 'xm-artist-name-info' => 'XAT', + 'xm-category' => 'XCT', + 'xm-channel-name-info' => 'XCN', + 'xm-channel-number' => 'XCH', + 'xm-title-info' => 'XTI' + }, + 'zone2' => { + 'balance' => 'ZBL', + 'internet-radio-preset' => 'NPZ', + 'late-night' => 'LTZ', + 'listening-mode' => 'LMZ', + 'mute' => 'ZMT', + 'net-receiver-information' => 'NRI', + 'net-tune-network' => 'NTZ', + 'power' => 'ZPW', + 'preset' => 'PRZ', + 're-eq-academy-filter' => 'RAZ', + 'input' => 'SLZ', + 'tone' => 'ZTN', + 'tuning' => 'TUZ', + 'volume' => 'ZVL' + }, + 'zone3' => { + 'balance' => 'BL3', + 'internet-radio-preset' => 'NP3', + 'mute' => 'MT3', + 'net-receiver-information' => 'NRI', + 'net-tune-network' => 'NT3', + 'power' => 'PW3', + 'preset' => 'PR3', + 'input' => 'SL3', + 'tone' => 'TN3', + 'tuning' => 'TU3', + 'volume' => 'VL3' + }, + 'zone4' => { + 'internet-radio-preset' => 'NP4', + 'mute' => 'MT4', + 'net-receiver-information' => 'NRI', + 'net-tune-network' => 'NT4', + 'power' => 'PW4', + 'preset' => 'PR4', + 'input' => 'SL4', + 'tuning' => 'TU4', + 'volume' => 'VL4' + } + }; + + if ( !defined($command) && defined( $commands_hr->{$zone} ) ) { + return $commands_hr->{$zone}; + } + elsif ( defined( $commands_hr->{$zone}{$command} ) ) { + return $commands_hr->{$zone}{$command}; + } + else { + return undef; + } +} + +##################################### +sub ONKYO_AVR_GetRemotecontrolValue($$;$) { + my ( $zone, $command, $value ) = @_; + + my $values_hr = { + 'dock' => { + 'CDS' => { + 'album' => 'ALBUM-', + 'blight' => 'BLIGHT', + 'chapt' => 'CHAPT-', + 'down' => 'DOWN', + 'enter' => 'ENTER', + 'ff' => 'FF', + 'men' => 'MENU', + 'mute' => 'MUTE', + 'off' => 'PWROFF', + 'on' => 'PWRON', + 'pause' => 'PAUSE', + 'plist' => 'PLIST-', + 'ply-pa' => 'PLY/PAU', + 'ply-res' => 'PLY/RES', + 'random' => 'RANDOM', + 'repeat' => 'REPEAT', + 'rew' => 'REW', + 'skip-f' => 'SKIP.F', + 'skip-r' => 'SKIP.R', + 'stop' => 'STOP', + 'up' => 'UP' + } + }, + 'main' => { + 'ADQ' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'ADV' => { + 'heavy' => '03', + 'light' => '01', + 'medium' => '02', + 'off' => '00', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'ADY' => { + 'movie' => '01', + 'music' => '02', + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'AMT' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + 'toggle' => 'TG' + }, + 'CCD' => { + '0' => '0', + '1' => '1', + '10' => '+10', + '2' => '2', + '3' => '3', + '4' => '4', + '5' => '5', + '6' => '6', + '7' => '7', + '8' => '8', + '9' => '9', + 'clear' => 'CLEAR', + 'd-mode' => 'D.MODE', + 'd-skip' => 'D.SKIP', + 'disc-f' => 'DISC.F', + 'disc-r' => 'DISC.R', + 'disc1' => 'DISC1', + 'disc2' => 'DISC2', + 'disc3' => 'DISC3', + 'disc4' => 'DISC4', + 'disc5' => 'DISC5', + 'disc6' => 'DISC6', + 'disp' => 'DISP', + 'ff' => 'FF', + 'memory' => 'MEMORY', + 'op-cl' => 'OP/CL', + 'pause' => 'PAUSE', + 'play' => 'PLAY', + 'pon' => 'PON', + 'power' => 'POWER', + 'random' => 'RANDOM', + 'repeat' => 'REPEAT', + 'rew' => 'REW', + 'skip-f' => 'SKIP.F', + 'skip-r' => 'SKIP.R', + 'stby' => 'STBY', + 'stop' => 'STOP', + 'track' => 'TRACK' + }, + 'CCR' => { + '1' => '1', + '10-0' => '10/0', + '2' => '2', + '3' => '3', + '4' => '4', + '5' => '5', + '6' => '6', + '7' => '7', + '8' => '8', + '9' => '9', + 'clear' => 'CLEAR', + 'disp' => 'DISP', + 'ff' => 'FF', + 'memory' => 'MEMORY', + 'op-cl' => 'OP/CL', + 'p-mode' => 'P.MODE', + 'pause' => 'PAUSE', + 'play' => 'PLAY', + 'power' => 'POWER', + 'random' => 'RANDOM', + 'rec' => 'REC', + 'repeat' => 'REPEAT', + 'rew' => 'REW', + 'scroll' => 'SCROLL', + 'skip-f' => 'SKIP.F', + 'skip-r' => 'SKIP.R', + 'stby' => 'STBY', + 'stop' => 'STOP' + }, + 'CDT' => { + 'ff' => 'FF', + 'play' => 'PLAY', + 'rc-pa' => 'RC/PAU', + 'rew' => 'REW', + 'skip-f' => 'SKIP.F', + 'skip-r' => 'SKIP.R', + 'stop' => 'STOP' + }, + 'CDV' => { + '0' => '0', + '1' => '1', + '10' => '10', + '2' => '2', + '3' => '3', + '4' => '4', + '5' => '5', + '6' => '6', + '7' => '7', + '8' => '8', + '9' => '9', + 'abr' => 'ABR', + 'angle' => 'ANGLE', + 'asctg' => 'ASCTG', + 'audio' => 'AUDIO', + 'cdpcd' => 'CDPCD', + 'clear' => 'CLEAR', + 'conmem' => 'CONMEM', + 'disc-f' => 'DISC.F', + 'disc-r' => 'DISC.R', + 'disc1' => 'DISC1', + 'disc2' => 'DISC2', + 'disc3' => 'DISC3', + 'disc4' => 'DISC4', + 'disc5' => 'DISC5', + 'disc6' => 'DISC6', + 'disp' => 'DISP', + 'down' => 'DOWN', + 'enter' => 'ENTER', + 'ff' => 'FF', + 'folddn' => 'FOLDDN', + 'foldup' => 'FOLDUP', + 'funmem' => 'FUNMEM', + 'init' => 'INIT', + 'lastplay' => 'LASTPLAY', + 'left' => 'LEFT', + 'memory' => 'MEMORY', + 'men' => 'MENU', + 'mspdn' => 'MSPDN', + 'mspup' => 'MSPUP', + 'op-cl' => 'OP/CL', + 'p-mode' => 'P.MODE', + 'pause' => 'PAUSE', + 'pct' => 'PCT', + 'play' => 'PLAY', + 'power' => 'POWER', + 'progre' => 'PROGRE', + 'pwroff' => 'PWROFF', + 'pwron' => 'PWRON', + 'random' => 'RANDOM', + 'repeat' => 'REPEAT', + 'return' => 'RETURN', + 'rew' => 'REW', + 'right' => 'RIGHT', + 'rsctg' => 'RSCTG', + 'search' => 'SEARCH', + 'setup' => 'SETUP', + 'skip-f' => 'SKIP.F', + 'skip-r' => 'SKIP.R', + 'slow-f' => 'SLOW.F', + 'slow-r' => 'SLOW.R', + 'step-f' => 'STEP.F', + 'step-r' => 'STEP.R', + 'stop' => 'STOP', + 'subtitle' => 'SUBTITLE', + 'subton-off' => 'SUBTON/OFF', + 'topmen' => 'TOPMENU', + 'up' => 'UP', + 'vdoff' => 'VDOFF', + 'zoomdn' => 'ZOOMDN', + 'zoomtg' => 'ZOOMTG', + 'zoomup' => 'ZOOMUP' + }, + 'CEQ' => { + 'power' => 'POWER', + 'preset' => 'PRESET' + }, + 'CMD' => { + '1' => '1', + '10-0' => '10/0', + '2' => '2', + '3' => '3', + '4' => '4', + '5' => '5', + '6' => '6', + '7' => '7', + '8' => '8', + '9' => '9', + 'clear' => 'CLEAR', + 'disp' => 'DISP', + 'eject' => 'EJECT', + 'enter' => 'ENTER', + 'ff' => 'FF', + 'group' => 'GROUP', + 'm-scan' => 'M.SCAN', + 'memory' => 'MEMORY', + 'name' => 'NAME', + 'p-mode' => 'P.MODE', + 'pause' => 'PAUSE', + 'play' => 'PLAY', + 'power' => 'POWER', + 'random' => 'RANDOM', + 'rec' => 'REC', + 'repeat' => 'REPEAT', + 'rew' => 'REW', + 'scroll' => 'SCROLL', + 'skip-f' => 'SKIP.F', + 'skip-r' => 'SKIP.R', + 'stby' => 'STBY', + 'stop' => 'STOP' + }, + 'CPT' => { + '0' => '0', + '1' => '1', + '10' => '10', + '2' => '2', + '3' => '3', + '4' => '4', + '5' => '5', + '6' => '6', + '7' => '7', + '8' => '8', + '9' => '9', + 'disp' => 'DISP', + 'down' => 'DOWN', + 'enter' => 'ENTER', + 'ff' => 'FF', + 'left' => 'LEFT', + 'mode' => 'MODE', + 'pause' => 'PAUSE', + 'play' => 'PLAY', + 'prsdn' => 'PRSDN', + 'prsup' => 'PRSUP', + 'repeat' => 'REPEAT', + 'return' => 'RETURN', + 'rew' => 'REW', + 'right' => 'RIGHT', + 'setup' => 'SETUP', + 'shuffle' => 'SHUFFLE', + 'skip-f' => 'SKIP.F', + 'skip-r' => 'SKIP.R', + 'stop' => 'STOP', + 'up' => 'UP' + }, + 'CT1' => { + 'ff' => 'FF', + 'play-f' => 'PLAY.F', + 'play-r' => 'PLAY.R', + 'rc-pa' => 'RC/PAU', + 'rew' => 'REW', + 'stop' => 'STOP' + }, + 'CT2' => { + 'ff' => 'FF', + 'op-cl' => 'OP/CL', + 'play-f' => 'PLAY.F', + 'play-r' => 'PLAY.R', + 'rc-pa' => 'RC/PAU', + 'rec' => 'REC', + 'rew' => 'REW', + 'skip-f' => 'SKIP.F', + 'skip-r' => 'SKIP.R', + 'stop' => 'STOP' + }, + 'CTL' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xrange(-12, 0, 12)' => '(-12, 0, 12)' + }, + 'DIF' => { + '02' => '02', + '03' => '03', + 'query' => 'QSTN', + 'listening' => '01', + 'volume' => '00', + 'toggle' => 'TG' + }, + 'DIM' => { + 'bright' => '00', + 'bright-led-off' => '08', + 'dark' => '02', + 'dim' => 'DIM', + 'query' => 'QSTN', + 'shut-off' => '03' + }, + 'DVL' => { + 'high' => '03', + 'low' => '01', + 'mid' => '02', + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'HAO' => { + 'auto' => '02', + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'HAT' => { + 'query' => 'QSTN' + }, + 'HBL' => { + 'analog' => '01', + 'auto' => '00', + 'query' => 'QSTN' + }, + 'HCN' => { + 'query' => 'QSTN' + }, + 'HDO' => { + 'analog' => '00', + 'both' => '05', + 'no' => '00', + 'out' => '01', + 'out-sub' => '02', + 'query' => 'QSTN', + 'sub' => '02', + 'up' => 'UP', + 'yes' => '01' + }, + 'HDS' => { + 'query' => 'QSTN' + }, + 'HPR' => { + 'query' => 'QSTN', + 'xrange(1, 8)' => '(1, 8)' + }, + 'HTI' => { + 'query' => 'QSTN' + }, + 'HTS' => { + 'mmnnoo' => 'mmnnoo', + 'query' => 'QSTN' + }, + 'IAL' => { + 'query' => 'QSTN' + }, + 'IAT' => { + 'query' => 'QSTN' + }, + 'IFA' => { + 'query' => 'QSTN' + }, + 'IFV' => { + 'query' => 'QSTN' + }, + 'ILS' => { + 'tlpnnnnnnnnnn' => 'tlpnnnnnnnnnn' + }, + 'IMD' => { + 'ext' => 'EXT', + 'query' => 'QSTN', + 'std' => 'STD', + 'vdc' => 'VDC' + }, + 'ISF' => { + 'custom' => '00', + 'day' => '01', + 'night' => '02', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'IST' => { + 'prs' => 'prs', + 'query' => 'QSTN' + }, + 'ITI' => { + 'query' => 'QSTN' + }, + 'ITM' => { + 'mm-ss-mm-ss' => 'mm:ss/mm:ss', + 'query' => 'QSTN' + }, + 'ITR' => { + 'cccc-tttt' => 'cccc/tttt', + 'query' => 'QSTN' + }, + 'LMD' => { + 'action' => '05', + 'all-ch-stereo' => '0C', + 'audyssey-dsx' => '16', + 'cinema2' => '50', + 'direct' => '01', + 'dolby-ex' => '41', + 'dolby-ex-audyssey-dsx' => 'A7', + 'dolby-virtual' => '14', + 'down' => 'DOWN', + 'dts-surround-sensation' => '15', + 'enhance' => '0E', + 'enhanced-7' => '0E', + 'film' => '03', + 'full-mono' => '13', + 'game' => 'GAME', + 'game-action' => '05', + 'game-rock' => '06', + 'game-rpg' => '03', + 'game-sports' => '0E', + 'i' => '52', + 'mono' => '0F', + 'mono-movie' => '07', + 'movie' => 'MOVIE', + 'multiplex' => '12', + 'music' => 'MUSIC', + 'musical' => '06', + 'neo-6' => '8C', + 'neo-6-cinema' => '82', + 'neo-6-cinema-audyssey-dsx' => 'A3', + 'neo-6-cinema-dts-surround-sensation' => '91', + 'neo-6-music' => '83', + 'neo-6-music-audyssey-dsx' => 'A4', + 'neo-6-music-dts-surround-sensation' => '92', + 'neo-x-cinema' => '82', + 'neo-x-game' => '9A', + 'neo-x-music' => '83', + 'neo-x-thx-cinema' => '85', + 'neo-x-thx-games' => '8A', + 'neo-x-thx-music' => '8C', + 'neural-digital-music' => '93', + 'neural-digital-music-audyssey-dsx' => 'A6', + 'neural-surr' => '87', + 'neural-surround' => '88', + 'neural-surround-audyssey-dsx' => 'A5', + 'neural-thx' => '88', + 'neural-thx-cinema' => '8D', + 'neural-thx-games' => '8F', + 'neural-thx-music' => '8E', + 'orchestra' => '08', + 'plii' => '8B', + 'plii-game-audyssey-dsx' => 'A2', + 'plii-movie-audyssey-dsx' => 'A0', + 'plii-music-audyssey-dsx' => 'A1', + 'pliix' => 'A2', + 'pliix-game' => '86', + 'pliix-movie' => '80', + 'pliix-music' => '81', + 'pliix-thx-cinema' => '84', + 'pliix-thx-games' => '89', + 'pliix-thx-music' => '8B', + 'pliiz-height' => '90', + 'pliiz-height-thx-cinema' => '94', + 'pliiz-height-thx-games' => '96', + 'pliiz-height-thx-music' => '95', + 'pliiz-height-thx-u2' => '99', + 'pure-audio' => '11', + 'query' => 'QSTN', + 's-cinema' => '50', + 's-games' => '52', + 's-music' => '51', + 's2' => '52', + 's2-cinema' => '97', + 's2-games' => '99', + 's2-music' => '98', + 'stereo' => '00', + 'straight-decode' => '40', + 'studio-mix' => '0A', + 'surround' => '02', + 'theater-dimensional' => '0D', + 'thx' => '04', + 'thx-cinema' => '42', + 'thx-games' => '52', + 'thx-music' => '44', + 'thx-musicmode' => '51', + 'thx-surround-ex' => '43', + 'thx-u2' => '52', + 'tv-logic' => '0B', + 'unplugged' => '09', + 'up' => 'UP', + 'whole-house' => '1F' + }, + 'LTN' => { + 'auto-dolby-truehd' => '03', + 'high-dolbydigital' => '02', + 'low-dolbydigital' => '01', + 'off' => '00', + 'on-dolby-truehd' => '01', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'MEM' => { + 'lock' => 'LOCK', + 'rcl' => 'RCL', + 'str' => 'STR', + 'unlk' => 'UNLK' + }, + 'MOT' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'MVL' => { + 'level-down' => 'DOWN', + 'level-down-1db-step' => 'DOWN1', + 'level-up' => 'UP', + 'level-up-1db-step' => 'UP1', + 'query' => 'QSTN', + 'xrange(100)' => '(0, 100)', + 'xrange(80)' => '(0, 80)' + }, + 'NAL' => { + 'query' => 'QSTN' + }, + 'NAT' => { + 'query' => 'QSTN' + }, + 'NJA' => { + 'tp-xx-xx-xx-xx-xx-xx' => 'tp{xx}{xx}{xx}{xx}{xx}{xx}' + }, + 'NKY' => { + 'll' => 'll' + }, + 'NLS' => { + 'ti' => 'ti' + }, + 'NMD' => { + 'ext' => 'EXT', + 'query' => 'QSTN', + 'std' => 'STD', + 'vdc' => 'VDC' + }, + 'NPR' => { + 'set' => 'SET', + 'xrange(1, 40)' => '(1, 40)' + }, + + # 'NPU' => { + # '' => '' + # }, + 'NST' => { + 'prs' => 'prs', + 'query' => 'QSTN' + }, + + # 'NSV' => { + # '' => '' + # }, + 'NRI' => { + 'query' => 'QSTN' + }, + 'NTC' => { + '0' => '0', + '1' => '1', + '2' => '2', + '3' => '3', + '4' => '4', + '5' => '5', + '6' => '6', + '7' => '7', + '8' => '8', + '9' => '9', + 'album' => 'ALBUM', + 'artist' => 'ARTIST', + 'caps' => 'CAPS', + 'chdn' => 'CHDN', + 'chup' => 'CHUP', + 'delete' => 'DELETE', + 'display' => 'DISPLAY', + 'down' => 'DOWN', + 'ff' => 'FF', + 'genre' => 'GENRE', + 'language' => 'LANGUAGE', + 'left' => 'LEFT', + 'list' => 'LIST', + 'location' => 'LOCATION', + 'men' => 'MENU', + 'mode' => 'MODE', + 'pause' => 'PAUSE', + 'play' => 'PLAY', + 'playlist' => 'PLAYLIST', + 'random' => 'RANDOM', + 'repeat' => 'REPEAT', + 'return' => 'RETURN', + 'rew' => 'REW', + 'right' => 'RIGHT', + 'select' => 'SELECT', + 'setup' => 'SETUP', + 'stop' => 'STOP', + 'top' => 'TOP', + 'trdn' => 'TRDN', + 'trup' => 'TRUP', + 'up' => 'UP' + }, + 'NTI' => { + 'query' => 'QSTN' + }, + 'NTM' => { + 'mm-ss-mm-ss' => 'mm:ss/mm:ss', + 'query' => 'QSTN' + }, + 'NTR' => { + 'cccc-tttt' => 'cccc/tttt', + 'query' => 'QSTN' + }, + 'OSD' => { + 'audio' => 'AUDIO', + 'down' => 'DOWN', + 'enter' => 'ENTER', + 'exit' => 'EXIT', + 'home' => 'HOME', + 'left' => 'LEFT', + 'men' => 'MENU', + 'right' => 'RIGHT', + 'up' => 'UP', + 'video' => 'VIDEO' + }, + 'PRM' => { + 'xrange(1, 40)' => '(1, 40)', + 'xrange(1, 30)' => '(1, 30)' + }, + 'PRS' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xrange(1, 40)' => '(1, 40)', + 'xrange(1, 30)' => '(1, 30)' + }, + 'PTS' => { + 'enter' => 'ENTER', + 'xrange(30)' => '(0, 30)' + }, + 'PWR' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN' + }, + 'RAS' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'RDS' => { + '00' => '00', + '01' => '01', + '02' => '02', + 'up' => 'UP' + }, + 'RES' => { + '1080i' => '04', + '1080p' => '07', + '24fs' => '07', + '480p' => '02', + '4k-upcaling' => '08', + '720p' => '03', + 'auto' => '01', + 'query' => 'QSTN', + 'source' => '06', + 'through' => '00', + 'up' => 'UP' + }, + 'SAT' => { + 'query' => 'QSTN' + }, + 'SCH' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xrange(597)' => '(0, 597)' + }, + 'SCN' => { + 'query' => 'QSTN' + }, + 'SCT' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'SLA' => { + 'analog' => '02', + 'arc' => '07', + 'auto' => '00', + 'balance' => '06', + 'coax' => '05', + 'hdmi' => '04', + 'ilink' => '03', + 'multi-channel' => '01', + 'opt' => '05', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'SLC' => { + 'chsel' => 'CHSEL', + 'down' => 'DOWN', + 'test' => 'TEST', + 'up' => 'UP' + }, + 'SLI' => { + '07' => '07', + '08' => '08', + '09' => '09', + 'am' => '25', + 'aux1' => '03', + 'aux2' => '04', + 'bd' => '10', + 'cbl' => '01', + 'cd' => '23', + 'dlna' => '27', + 'down' => 'DOWN', + 'dvd' => '10', + 'dvr' => '00', + 'fm' => '24', + 'game' => '02', + 'internet-radio' => '28', + 'iradio-favorite' => '28', + 'multi-ch' => '30', + 'music-server' => '27', + 'net' => '2B', + 'network' => '2B', + 'p4s' => '27', + 'pc' => '05', + 'phono' => '22', + 'query' => 'QSTN', + 'sat' => '01', + 'sirius' => '32', + 'tape' => '20', + 'tape-1' => '20', + 'tape2' => '21', + 'tuner' => '26', + 'tv' => '23', + 'tv-cd' => '23', + 'universal-port' => '40', + 'up' => 'UP', + 'usb' => '29', + 'usb-rear' => '2A', + 'usb-toggle' => '2C', + 'vcr' => '00', + 'video1' => '00', + 'video2' => '01', + 'video3' => '02', + 'video4' => '03', + 'video5' => '04', + 'video6' => '05', + 'video7' => '06', + 'xm' => '31' + }, + 'SLK' => { + 'input' => 'INPUT', + 'wrong' => 'WRONG' + }, + 'SLP' => { + 'query' => 'QSTN', + 'off' => 'OFF', + 'up' => 'UP', + 'xrange(1, 90)' => '(1, 90)' + }, + 'SLR' => { + 'am' => '25', + 'cd' => '23', + 'dvd' => '10', + 'fm' => '24', + 'internet-radio' => '28', + 'multi-ch' => '30', + 'music-server' => '27', + 'off' => '7F', + 'phono' => '22', + 'query' => 'QSTN', + 'source' => '80', + 'tape' => '20', + 'tape2' => '21', + 'tuner' => '26', + 'video1' => '00', + 'video2' => '01', + 'video3' => '02', + 'video4' => '03', + 'video5' => '04', + 'video6' => '05', + 'video7' => '06', + 'xm' => '31' + }, + 'SPA' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'SPB' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'SPL' => { + 'front-high' => 'FH', + 'front-high-front-wide-speakers' => 'HW', + 'front-wide' => 'FW', + 'query' => 'QSTN', + 'surrback' => 'SB', + 'surrback-front-high-speakers' => 'FH', + 'surrback-front-wide-speakers' => 'FW', + 'up' => 'UP' + }, + 'STI' => { + 'query' => 'QSTN' + }, + 'SWL' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xrange(-15, 9, 12)' => '(-15, 0, 12)' + }, + 'TCT' => { + 'b-xx' => 'B{xx}', + 'bass-down' => 'BDOWN', + 'bass-up' => 'BUP', + 'query' => 'QSTN', + 't-xx' => 'T{xx}', + 'treble-down' => 'TDOWN', + 'treble-up' => 'TUP' + }, + 'TFH' => { + 'b-xx' => 'B{xx}', + 'bass-down' => 'BDOWN', + 'bass-up' => 'BUP', + 'query' => 'QSTN', + 't-xx' => 'T{xx}', + 'treble-down' => 'TDOWN', + 'treble-up' => 'TUP' + }, + 'TFR' => { + 'b-xx' => 'B{xx}', + 'bass-down' => 'BDOWN', + 'bass-up' => 'BUP', + 'query' => 'QSTN', + 't-xx' => 'T{xx}', + 'treble-down' => 'TDOWN', + 'treble-up' => 'TUP' + }, + 'TFW' => { + 'b-xx' => 'B{xx}', + 'bass-down' => 'BDOWN', + 'bass-up' => 'BUP', + 'query' => 'QSTN', + 't-xx' => 'T{xx}', + 'treble-down' => 'TDOWN', + 'treble-up' => 'TUP' + }, + 'TGA' => { + 'off' => '00', + 'on' => '01' + }, + 'TGB' => { + 'off' => '00', + 'on' => '01' + }, + 'TGC' => { + 'off' => '00', + 'on' => '01' + }, + 'TPS' => { + 'enter' => 'ENTER' + }, + 'TSB' => { + 'b-xx' => 'B{xx}', + 'bass-down' => 'BDOWN', + 'bass-up' => 'BUP', + 'query' => 'QSTN', + 't-xx' => 'T{xx}', + 'treble-down' => 'TDOWN', + 'treble-up' => 'TUP' + }, + 'TSR' => { + 'b-xx' => 'B{xx}', + 'bass-down' => 'BDOWN', + 'bass-up' => 'BUP', + 'query' => 'QSTN', + 't-xx' => 'T{xx}', + 'treble-down' => 'TDOWN', + 'treble-up' => 'TUP' + }, + 'TSW' => { + 'b-xx' => 'B{xx}', + 'bass-down' => 'BDOWN', + 'bass-up' => 'BUP', + 'query' => 'QSTN' + }, + 'TUN' => { + '0-in-direct-mode' => '0', + '1-in-direct-mode' => '1', + '2-in-direct-mode' => '2', + '3-in-direct-mode' => '3', + '4-in-direct-mode' => '4', + '5-in-direct-mode' => '5', + '6-in-direct-mode' => '6', + '7-in-direct-mode' => '7', + '8-in-direct-mode' => '8', + '9-in-direct-mode' => '9', + 'direct' => 'DIRECT', + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'UDD' => { + 'at' => 'AT', + 'mf' => 'MF', + 'mn' => 'MN', + 'pt' => 'PT', + 'up' => 'UP' + }, + 'UDS' => { + 'query' => 'QSTN' + }, + 'UHA' => { + 'query' => 'QSTN' + }, + 'UHB' => { + 'analog' => '01', + 'auto' => '00', + 'query' => 'QSTN' + }, + 'UHC' => { + 'query' => 'QSTN' + }, + 'UHD' => { + 'query' => 'QSTN' + }, + 'UHP' => { + 'query' => 'QSTN', + 'xrange(1, 8)' => '(1, 8)' + }, + 'UHS' => { + 'mmnnoo' => 'mmnnoo', + 'query' => 'QSTN' + }, + 'UHT' => { + 'query' => 'QSTN' + }, + 'UPM' => { + 'xrange(1, 40)' => '(1, 40)' + }, + 'UPR' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xrange(1, 40)' => '(1, 40)' + }, + 'UTN' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'VOS' => { + 'component' => '01', + 'd4' => '00', + 'query' => 'QSTN' + }, + 'VPM' => { + 'cinema' => '02', + 'custom' => '01', + 'direct' => '08', + 'game' => '03', + 'isf-day' => '05', + 'isf-night' => '06', + 'query' => 'QSTN', + 'streaming' => '07', + 'through' => '00', + 'up' => 'UP' + }, + 'VWM' => { + '4-3' => '01', + 'auto' => '00', + 'full' => '02', + 'query' => 'QSTN', + 'smart-zoom' => '05', + 'up' => 'UP', + 'zoom' => '04' + }, + 'XAT' => { + 'query' => 'QSTN' + }, + 'XCH' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xrange(597)' => '(0, 597)' + }, + 'XCN' => { + 'query' => 'QSTN' + }, + 'XCT' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'XTI' => { + 'query' => 'QSTN' + } + }, + 'zone2' => { + 'LMZ' => { + 'direct' => '01', + 'dvs' => '88', + 'mono' => '0F', + 'multiplex' => '12', + 'stereo' => '00' + }, + 'LTZ' => { + 'high' => '02', + 'low' => '01', + 'off' => '00', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'NPZ' => { + 'xrange(1, 40)' => '(1, 40)' + }, + 'NTC' => { + 'pausez' => 'PAUSEz', + 'playz' => 'PLAYz', + 'stopz' => 'STOPz', + 'trdnz' => 'TRDNz', + 'trupz' => 'TRUPz' + }, + 'NTZ' => { + 'chdn' => 'CHDN', + 'chup' => 'CHUP', + 'display' => 'DISPLAY', + 'down' => 'DOWN', + 'ff' => 'FF', + 'left' => 'LEFT', + 'pause' => 'PAUSE', + 'play' => 'PLAY', + 'random' => 'RANDOM', + 'repeat' => 'REPEAT', + 'return' => 'RETURN', + 'rew' => 'REW', + 'right' => 'RIGHT', + 'select' => 'SELECT', + 'stop' => 'STOP', + 'trdn' => 'TRDN', + 'trup' => 'TRUP', + 'up' => 'UP' + }, + 'PRS' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xrange(1, 40)' => '(1, 40)', + 'xrange(1, 30)' => '(1, 30)' + }, + 'PRZ' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xrange(1, 40)' => '(1, 40)', + 'xrange(1, 30)' => '(1, 30)' + }, + 'RAZ' => { + 'both-off' => '00', + 'on' => '02', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'SLZ' => { + 'am' => '25', + 'aux1' => '03', + 'aux2' => '04', + 'bd' => '10', + 'cbl' => '01', + 'cd' => '23', + 'dlna' => '27', + 'down' => 'DOWN', + 'dvd' => '10', + 'dvr' => '00', + 'fm' => '24', + 'game' => '02', + 'hidden1' => '07', + 'hidden2' => '08', + 'hidden3' => '09', + 'internet-radio' => '28', + 'iradio-favorite' => '28', + 'multi-ch' => '30', + 'music-server' => '27', + 'net' => '2B', + 'network' => '2B', + 'off' => '7F', + 'p4s' => '27', + 'pc' => '05', + 'phono' => '22', + 'query' => 'QSTN', + 'sat' => '01', + 'sirius' => '32', + 'source' => '80', + 'tape' => '20', + 'tape2' => '21', + 'tuner' => '26', + 'tv' => '23', + 'tv-cd' => '23', + 'universal-port' => '40', + 'up' => 'UP', + 'usb' => '29', + 'usb-rear' => '2A', + 'usb-toggle' => '2C', + 'vcr' => '00', + 'video1' => '00', + 'video2' => '01', + 'video3' => '02', + 'video4' => '03', + 'video5' => '04', + 'video6' => '05', + 'video7' => '06', + 'xm' => '31' + }, + 'TUN' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'TUZ' => { + '0-in-direct-mode' => '0', + '1-in-direct-mode' => '1', + '2-in-direct-mode' => '2', + '3-in-direct-mode' => '3', + '4-in-direct-mode' => '4', + '5-in-direct-mode' => '5', + '6-in-direct-mode' => '6', + '7-in-direct-mode' => '7', + '8-in-direct-mode' => '8', + '9-in-direct-mode' => '9', + 'direct' => 'DIRECT', + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'ZBL' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xx-is-a-00-a-l-10-0-r-10-2-step' => '{xx}' + }, + 'ZMT' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + 'toggle' => 'TG' + }, + 'ZPW' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + }, + 'ZTN' => { + 'bass-down' => 'BDOWN', + 'bass-up' => 'BUP', + 'bass-xx-is-a-00-a-10-0-10-2-step' => 'B{xx}', + 'query' => 'QSTN', + 'treble-down' => 'TDOWN', + 'treble-up' => 'TUP', + 'treble-xx-is-a-00-a-10-0-10-2-step' => 'T{xx}' + }, + 'ZVL' => { + 'level-down' => 'DOWN', + 'level-up' => 'UP', + 'query' => 'QSTN', + 'xrange(100)' => '(0, 100)', + 'xrange(80)' => '(0, 80)' + } + }, + 'zone3' => { + 'BL3' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xx' => '{xx}' + }, + 'MT3' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + 'toggle' => 'TG' + }, + 'NP3' => { + 'xrange(1, 40)' => '(1, 40)' + }, + 'NT3' => { + 'chdn' => 'CHDN', + 'chup' => 'CHUP', + 'display' => 'DISPLAY', + 'down' => 'DOWN', + 'ff' => 'FF', + 'left' => 'LEFT', + 'pause' => 'PAUSE', + 'play' => 'PLAY', + 'random' => 'RANDOM', + 'repeat' => 'REPEAT', + 'return' => 'RETURN', + 'rew' => 'REW', + 'right' => 'RIGHT', + 'select' => 'SELECT', + 'stop' => 'STOP', + 'trdn' => 'TRDN', + 'trup' => 'TRUP', + 'up' => 'UP' + }, + 'NTC' => { + 'pausez' => 'PAUSEz', + 'playz' => 'PLAYz', + 'stopz' => 'STOPz', + 'trdnz' => 'TRDNz', + 'trupz' => 'TRUPz' + }, + 'PR3' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xrange(1, 40)' => '(1, 40)', + 'xrange(1, 30)' => '(1, 30)' + }, + 'PRS' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xrange(1, 40)' => '(1, 40)', + 'xrange(1, 30)' => '(1, 30)' + }, + 'PW3' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + }, + 'SL3' => { + 'am' => '25', + 'aux1' => '03', + 'aux2' => '04', + 'cbl' => '01', + 'cd' => '23', + 'dlna' => '27', + 'down' => 'DOWN', + 'dvd' => '10', + 'dvr' => '00', + 'fm' => '24', + 'game' => '02', + 'hidden1' => '07', + 'hidden2' => '08', + 'hidden3' => '09', + 'internet-radio' => '28', + 'iradio-favorite' => '28', + 'multi-ch' => '30', + 'music-server' => '27', + 'net' => '2B', + 'network' => '2B', + 'p4s' => '27', + 'pc' => '05', + 'phono' => '22', + 'query' => 'QSTN', + 'sat' => '01', + 'sirius' => '32', + 'source' => '80', + 'tape' => '20', + 'tape2' => '21', + 'tuner' => '26', + 'tv' => '23', + 'tv-cd' => '23', + 'universal-port' => '40', + 'up' => 'UP', + 'usb' => '29', + 'usb-rear' => '2A', + 'usb-toggle' => '2C', + 'vcr' => '00', + 'video1' => '00', + 'video2' => '01', + 'video3' => '02', + 'video4' => '03', + 'video5' => '04', + 'video6' => '05', + 'video7' => '06', + 'xm' => '31' + }, + 'TN3' => { + 'b-xx' => 'B{xx}', + 'bass-down' => 'BDOWN', + 'bass-up' => 'BUP', + 'query' => 'QSTN', + 't-xx' => 'T{xx}', + 'treble-down' => 'TDOWN', + 'treble-up' => 'TUP' + }, + 'TU3' => { + '0-in-direct-mode' => '0', + '1-in-direct-mode' => '1', + '2-in-direct-mode' => '2', + '3-in-direct-mode' => '3', + '4-in-direct-mode' => '4', + '5-in-direct-mode' => '5', + '6-in-direct-mode' => '6', + '7-in-direct-mode' => '7', + '8-in-direct-mode' => '8', + '9-in-direct-mode' => '9', + 'direct' => 'DIRECT', + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'TUN' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'VL3' => { + 'level-down' => 'DOWN', + 'level-up' => 'UP', + 'query' => 'QSTN', + 'xrange(100)' => '(0, 100)', + 'xrange(80)' => '(0, 80)' + } + }, + 'zone4' => { + 'MT4' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + 'toggle' => 'TG' + }, + 'NP4' => { + 'xrange(1, 40)' => '(1, 40)' + }, + 'NT4' => { + 'display' => 'DISPLAY', + 'down' => 'DOWN', + 'ff' => 'FF', + 'left' => 'LEFT', + 'pause' => 'PAUSE', + 'play' => 'PLAY', + 'random' => 'RANDOM', + 'repeat' => 'REPEAT', + 'return' => 'RETURN', + 'rew' => 'REW', + 'right' => 'RIGHT', + 'select' => 'SELECT', + 'stop' => 'STOP', + 'trdn' => 'TRDN', + 'trup' => 'TRUP', + 'up' => 'UP' + }, + 'NTC' => { + 'pausez' => 'PAUSEz', + 'playz' => 'PLAYz', + 'stopz' => 'STOPz', + 'trdnz' => 'TRDNz', + 'trupz' => 'TRUPz' + }, + 'PR4' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xrange(1, 40)' => '(1, 40)', + 'xrange(1, 30)' => '(1, 30)' + }, + 'PRS' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP', + 'xrange(1, 40)' => '(1, 40)', + 'xrange(1, 30)' => '(1, 30)' + }, + 'PW4' => { + 'off' => '00', + 'on' => '01', + 'query' => 'QSTN', + }, + 'SL4' => { + 'am' => '25', + 'aux1' => '03', + 'aux2' => '04', + 'cbl' => '01', + 'cd' => '23', + 'dlna' => '27', + 'down' => 'DOWN', + 'dvd' => '10', + 'dvr' => '00', + 'fm' => '24', + 'game' => '02', + 'hidden1' => '07', + 'hidden2' => '08', + 'hidden3' => '09', + 'internet-radio' => '28', + 'iradio-favorite' => '28', + 'multi-ch' => '30', + 'music-server' => '27', + 'net' => '2B', + 'network' => '2B', + 'p4s' => '27', + 'phono' => '22', + 'query' => 'QSTN', + 'sat' => '01', + 'sirius' => '32', + 'source' => '80', + 'tape' => '20', + 'tape-1' => '20', + 'tape2' => '21', + 'tuner' => '26', + 'tv' => '23', + 'tv-cd' => '23', + 'universal-port' => '40', + 'up' => 'UP', + 'usb' => '29', + 'usb-rear' => '2A', + 'usb-toggle' => '2C', + 'vcr' => '00', + 'video1' => '00', + 'video2' => '01', + 'video3' => '02', + 'video4' => '03', + 'video5' => '04', + 'video6' => '05', + 'video7' => '06', + 'xm' => '31' + }, + 'TU4' => { + '0-in-direct-mode' => '0', + '1-in-direct-mode' => '1', + '2-in-direct-mode' => '2', + '3-in-direct-mode' => '3', + '4-in-direct-mode' => '4', + '5-in-direct-mode' => '5', + '6-in-direct-mode' => '6', + '7-in-direct-mode' => '7', + '8-in-direct-mode' => '8', + '9-in-direct-mode' => '9', + 'direct' => 'DIRECT', + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'TUN' => { + 'down' => 'DOWN', + 'query' => 'QSTN', + 'up' => 'UP' + }, + 'VL4' => { + 'level-down' => 'DOWN', + 'level-up' => 'UP', + 'query' => 'QSTN', + 'xrange(100)' => '(0, 100)', + 'xrange(80)' => '(0, 80)' + } + } + }; + + if ( !defined($value) && defined( $values_hr->{$zone}{$command} ) ) { + return $values_hr->{$zone}{$command}; + } + elsif ( defined( $values_hr->{$zone}{$command}{$value} ) ) { + return $values_hr->{$zone}{$command}{$value}; + } + else { + return undef; + } +} + +##################################### +sub ONKYO_AVR_GetRemotecontrolCommandDetails($;$) { + my ( $zone, $command ) = @_; + + my $commands = { + 'main' => { + 'PWR', + { + 'description' => 'System Power Command', + 'name' => 'power', + 'values' => { + '00', + { + 'description' => 'sets System Standby', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets System On', + 'name' => 'on' + }, + 'QSTN', + { + 'description' => 'gets the System Power Status', + 'name' => 'query' + } + } + }, + 'AMT', + { + 'description' => 'Audio Muting Command', + 'name' => 'mute', + 'values' => { + '00', + { + 'description' => 'sets Audio Muting Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Audio Muting On', + 'name' => 'on' + }, + 'TG', + { + 'description' => 'sets Audio Muting Wrap-Around', + 'name' => 'toggle' + }, + 'QSTN', + { + 'description' => 'gets the Audio Muting State', + 'name' => 'query' + } + } + }, + 'SPA', + { + 'description' => 'Speaker A Command', + 'name' => 'speaker-a', + 'values' => { + '00', + { + 'description' => 'sets Speaker Off', + 'name' => 'off' + }, + '01', + { 'description' => 'sets Speaker On', 'name' => 'on' }, + 'UP', + { + 'description' => 'sets Speaker Switch Wrap-Around', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets the Speaker State', + 'name' => 'query' + } + } + }, + 'SPB', + { + 'description' => 'Speaker B Command', + 'name' => 'speaker-b', + 'values' => { + '00', + { + 'description' => 'sets Speaker Off', + 'name' => 'off' + }, + '01', + { 'description' => 'sets Speaker On', 'name' => 'on' }, + 'UP', + { + 'description' => 'sets Speaker Switch Wrap-Around', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets the Speaker State', + 'name' => 'query' + } + } + }, + 'SPL', + { + 'description' => 'Speaker Layout Command', + 'name' => 'speaker-layout', + 'values' => { + 'SB', + { + 'description' => 'sets SurrBack Speaker', + 'name' => 'surrback' + }, + 'FH', + { + 'description' => +'sets Front High Speaker / SurrBack+Front High Speakers', + 'name' => + { 'front-high', 'surrback-front-high-speakers' } + }, + 'FW', + { + 'description' => +'sets Front Wide Speaker / SurrBack+Front Wide Speakers', + 'name' => + { 'front-wide', 'surrback-front-wide-speakers' } + }, + 'HW', + { + 'description' => 'sets, Front High+Front Wide Speakers', + 'name' => ['front-high-front-wide-speakers'] + }, + 'UP', + { + 'description' => 'sets Speaker Switch Wrap-Around', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets the Speaker State', + 'name' => 'query' + } + } + }, + 'MVL', + { + 'description' => 'Master Volume Command', + 'name' => 'volume', + 'values' => { + '{0,100}', + { + 'description' => + 'Volume Level 0 100 { In hexadecimal representation}', + 'name' => 'None' + }, + '{0,80}', + { + 'description' => + 'Volume Level 0 80 { In hexadecimal representation}', + 'name' => 'None' + }, + 'UP', + { + 'description' => 'sets Volume Level Up', + 'name' => 'level-up' + }, + 'DOWN', + { + 'description' => 'sets Volume Level Down', + 'name' => 'level-down' + }, + 'UP1', + { + 'description' => 'sets Volume Level Up 1dB Step', + 'name' => 'level-up-1db-step' + }, + 'DOWN1', + { + 'description' => 'sets Volume Level Down 1dB Step', + 'name' => 'level-down-1db-step' + }, + 'QSTN', + { + 'description' => 'gets the Volume Level', + 'name' => 'query' + } + } + }, + 'TFR', + { + 'description' => 'Tone{Front} Command', + 'name' => 'tone-front', + 'values' => { + 'B{xx}', + { + 'description' => +'Front Bass {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 'b-xx' + }, + 'T{xx}', + { + 'description' => +'Front Treble {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 't-xx' + }, + 'BUP', + { + 'description' => 'sets Front Bass up{2 step}', + 'name' => 'bass-up' + }, + 'BDOWN', + { + 'description' => 'sets Front Bass down{2 step}', + 'name' => 'bass-down' + }, + 'TUP', + { + 'description' => 'sets Front Treble up{2 step}', + 'name' => 'treble-up' + }, + 'TDOWN', + { + 'description' => 'sets Front Treble down{2 step}', + 'name' => 'treble-down' + }, + 'QSTN', + { + 'description' => 'gets Front Tone {"BxxTxx"}', + 'name' => 'query' + } + } + }, + 'TFW', + { + 'description' => 'Tone{Front Wide} Command', + 'name' => 'tone-front-wide', + 'values' => { + 'B{xx}', + { + 'description' => +'Front Wide Bass {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 'b-xx' + }, + 'T{xx}', + { + 'description' => +'Front Wide Treble {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 't-xx' + }, + 'BUP', + { + 'description' => 'sets Front Wide Bass up{2 step}', + 'name' => 'bass-up' + }, + 'BDOWN', + { + 'description' => 'sets Front Wide Bass down{2 step}', + 'name' => 'bass-down' + }, + 'TUP', + { + 'description' => 'sets Front Wide Treble up{2 step}', + 'name' => 'treble-up' + }, + 'TDOWN', + { + 'description' => 'sets Front Wide Treble down{2 step}', + 'name' => 'treble-down' + }, + 'QSTN', + { + 'description' => 'gets Front Wide Tone {"BxxTxx"}', + 'name' => 'query' + } + } + }, + 'TFH', + { + 'description' => 'Tone{Front High} Command', + 'name' => 'tone-front-high', + 'values' => { + 'B{xx}', + { + 'description' => +'Front High Bass {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 'b-xx' + }, + 'T{xx}', + { + 'description' => +'Front High Treble {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 't-xx' + }, + 'BUP', + { + 'description' => 'sets Front High Bass up{2 step}', + 'name' => 'bass-up' + }, + 'BDOWN', + { + 'description' => 'sets Front High Bass down{2 step}', + 'name' => 'bass-down' + }, + 'TUP', + { + 'description' => 'sets Front High Treble up{2 step}', + 'name' => 'treble-up' + }, + 'TDOWN', + { + 'description' => 'sets Front High Treble down{2 step}', + 'name' => 'treble-down' + }, + 'QSTN', + { + 'description' => 'gets Front High Tone {"BxxTxx"}', + 'name' => 'query' + } + } + }, + 'TCT', + { + 'description' => 'Tone{Center} Command', + 'name' => 'tone-center', + 'values' => { + 'B{xx}', + { + 'description' => +'Center Bass {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 'b-xx' + }, + 'T{xx}', + { + 'description' => +'Center Treble {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 't-xx' + }, + 'BUP', + { + 'description' => 'sets Center Bass up{2 step}', + 'name' => 'bass-up' + }, + 'BDOWN', + { + 'description' => 'sets Center Bass down{2 step}', + 'name' => 'bass-down' + }, + 'TUP', + { + 'description' => 'sets Center Treble up{2 step}', + 'name' => 'treble-up' + }, + 'TDOWN', + { + 'description' => 'sets Center Treble down{2 step}', + 'name' => 'treble-down' + }, + 'QSTN', + { + 'description' => 'gets Cetner Tone {"BxxTxx"}', + 'name' => 'query' + } + } + }, + 'TSR', + { + 'description' => 'Tone{Surround} Command', + 'name' => 'tone-surround', + 'values' => { + 'B{xx}', + { + 'description' => +'Surround Bass {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 'b-xx' + }, + 'T{xx}', + { + 'description' => +'Surround Treble {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 't-xx' + }, + 'BUP', + { + 'description' => 'sets Surround Bass up{2 step}', + 'name' => 'bass-up' + }, + 'BDOWN', + { + 'description' => 'sets Surround Bass down{2 step}', + 'name' => 'bass-down' + }, + 'TUP', + { + 'description' => 'sets Surround Treble up{2 step}', + 'name' => 'treble-up' + }, + 'TDOWN', + { + 'description' => 'sets Surround Treble down{2 step}', + 'name' => 'treble-down' + }, + 'QSTN', + { + 'description' => 'gets Surround Tone {"BxxTxx"}', + 'name' => 'query' + } + } + }, + 'TSB', + { + 'description' => 'Tone{Surround Back} Command', + 'name' => 'tone-surround-back', + 'values' => { + 'B{xx}', + { + 'description' => +'Surround Back Bass {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 'b-xx' + }, + 'T{xx}', + { + 'description' => +'Surround Back Treble {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 't-xx' + }, + 'BUP', + { + 'description' => 'sets Surround Back Bass up{2 step}', + 'name' => 'bass-up' + }, + 'BDOWN', + { + 'description' => 'sets Surround Back Bass down{2 step}', + 'name' => 'bass-down' + }, + 'TUP', + { + 'description' => 'sets Surround Back Treble up{2 step}', + 'name' => 'treble-up' + }, + 'TDOWN', + { + 'description' => + 'sets Surround Back Treble down{2 step}', + 'name' => 'treble-down' + }, + 'QSTN', + { + 'description' => 'gets Surround Back Tone {"BxxTxx"}', + 'name' => 'query' + } + } + }, + 'TSW', + { + 'description' => 'Tone{Subwoofer} Command', + 'name' => 'tone-subwoofer', + 'values' => { + 'B{xx}', + { + 'description' => +'Subwoofer Bass {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 'b-xx' + }, + 'BUP', + { + 'description' => 'sets Subwoofer Bass up{2 step}', + 'name' => 'bass-up' + }, + 'BDOWN', + { + 'description' => 'sets Subwoofer Bass down{2 step}', + 'name' => 'bass-down' + }, + 'QSTN', + { + 'description' => 'gets Subwoofer Tone {"BxxTxx"}', + 'name' => 'query' + } + } + }, + 'SLP', + { + 'description' => 'Sleep Set Command', + 'name' => 'sleep', + 'values' => { + "{1,90}", + { + 'description' => +'sets Sleep Time 1 - 90min { In hexadecimal representation}', + 'name' => 'time-1-90min' + }, + 'OFF', + { + 'description' => 'sets Sleep Time Off', + 'name' => 'off' + }, + '00', + { + 'description' => 'return value if Sleep Time Off', + 'name' => 'off' + }, + 'UP', + { + 'description' => 'sets Sleep Time Wrap-Around UP', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets The Sleep Time', + 'name' => 'query' + } + } + }, + 'SLC', + { + 'description' => 'Speaker Level Calibration Command', + 'name' => 'speaker-level-calibration', + 'values' => { + 'TEST', + { + 'description' => 'TEST Key', + 'name' => 'test' + }, + 'CHSEL', + { + 'description' => 'CH SEL Key', + 'name' => 'chsel' + }, + 'UP', + { 'description' => 'LEVEL + Key', 'name' => 'up' }, + 'DOWN', + { 'description' => 'LEVEL KEY', 'name' => 'down' } + } + }, + 'SWL', + { + 'description' => 'Subwoofer {temporary} Level Command', + 'name' => 'subwoofer-temporary-level', + 'values' => { + '{-15,0,12}', + { + 'description' => + 'sets Subwoofer Level -15dB - 0dB - +12dB', + 'name' => '15db-0db-12db' + }, + 'UP', + { 'description' => 'LEVEL + Key', 'name' => 'up' }, + 'DOWN', + { 'description' => 'LEVEL KEY', 'name' => 'down' }, + 'QSTN', + { + 'description' => 'gets the Subwoofer Level', + 'name' => 'query' + } + } + }, + 'CTL', + { + 'description' => 'Center {temporary} Level Command', + 'name' => 'center-temporary-level', + 'values' => { + '{-12,0,12}', + { + 'description' => + 'sets Center Level -12dB - 0dB - +12dB', + 'name' => '12db-0db-12db' + }, + 'UP', + { 'description' => 'LEVEL + Key', 'name' => 'up' }, + 'DOWN', + { 'description' => 'LEVEL KEY', 'name' => 'down' }, + 'QSTN', + { + 'description' => 'gets the Subwoofer Level', + 'name' => 'query' + } + } + }, + 'DIF', + { + 'description' => 'Display Mode Command', + 'name' => 'display-mode', + 'values' => { + '00', + { + 'description' => 'sets Selector + Volume Display Mode', + 'name' => 'volume' + }, + '01', + { + 'description' => + 'sets Selector + Listening Mode Display Mode', + 'name' => 'listening' + }, + '02', + { + 'description' => + 'Display Digital Format{temporary display}', + 'name' => '02' + }, + '03', + { + 'description' => + 'Display Video Format{temporary display}', + 'name' => '03' + }, + 'TG', + { + 'description' => 'sets Display Mode Wrap-Around Up', + 'name' => 'toggle' + }, + 'QSTN', + { + 'description' => 'gets The Display Mode', + 'name' => 'query' + } + } + }, + 'DIM', + { + 'description' => 'Dimmer Level Command', + 'name' => 'dimmer-level', + 'values' => { + '00', + { + 'description' => 'sets Dimmer Level "Bright"', + 'name' => 'bright' + }, + '01', + { + 'description' => 'sets Dimmer Level "Dim"', + 'name' => 'dim' + }, + '02', + { + 'description' => 'sets Dimmer Level "Dark"', + 'name' => 'dark' + }, + '03', + { + 'description' => 'sets Dimmer Level "Shut-Off"', + 'name' => 'shut-off' + }, + '08', + { + 'description' => 'sets Dimmer Level "Bright & LED OFF"', + 'name' => 'bright-led-off' + }, + 'DIM', + { + 'description' => 'sets Dimmer Level Wrap-Around Up', + 'name' => 'dim' + }, + 'QSTN', + { + 'description' => 'gets The Dimmer Level', + 'name' => 'query' + } + } + }, + 'OSD', + { + 'description' => 'Setup Operation Command', + 'name' => 'setup', + 'values' => { + 'MENU', + { + 'description' => 'Menu Key', + 'name' => 'menu' + }, + 'UP', + { 'description' => 'Up Key', 'name' => 'up' }, + 'DOWN', + { 'description' => 'Down Key', 'name' => 'down' }, + 'RIGHT', + { 'description' => 'Right Key', 'name' => 'right' }, + 'LEFT', + { 'description' => 'Left Key', 'name' => 'left' }, + 'ENTER', + { 'description' => 'Enter Key', 'name' => 'enter' }, + 'EXIT', + { 'description' => 'Exit Key', 'name' => 'exit' }, + 'AUDIO', + { + 'description' => 'Audio Adjust Key', + 'name' => 'audio' + }, + 'VIDEO', + { + 'description' => 'Video Adjust Key', + 'name' => 'video' + }, + 'HOME', + { 'description' => 'Home Key', 'name' => 'home' } + } + }, + 'MEM', + { + 'description' => 'Memory Setup Command', + 'name' => 'memory-setup', + 'values' => { + 'STR', + { + 'description' => 'stores memory', + 'name' => 'str' + }, + 'RCL', + { + 'description' => 'recalls memory', + 'name' => 'rcl' + }, + 'LOCK', + { + 'description' => 'locks memory', + 'name' => 'lock' + }, + 'UNLK', + { + 'description' => 'unlocks memory', + 'name' => 'unlk' + } + } + }, + 'IFA', + { + 'description' => 'Audio Information Command', + 'name' => 'audio-information', + 'values' => { + 'nnnnn:nnnnn', + { + 'description' => +"Infomation of Audio{Same Immediate Display ',' is separator of informations}", + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets Infomation of Audio', + 'name' => 'query' + } + } + }, + 'IFV', + { + 'description' => 'Video Information Command', + 'name' => 'video-information', + 'values' => { + 'nnnnn:nnnnn', + { + 'description' => +"information of Video{Same Immediate Display ',' is separator of informations}", + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets Infomation of Video', + 'name' => 'query' + } + } + }, + 'SLI', + { + 'description' => 'Input Selector Command', + 'name' => 'input', + 'values' => { + '00', + { + 'description' => 'sets VIDEO1, VCR/DVR', + 'name' => [ 'video1', 'vcr', 'dvr' ] + }, + '01', + { + 'description' => 'sets VIDEO2, CBL/SAT', + 'name' => [ 'video2', 'cbl', 'sat' ] + }, + '02', + { + 'description' => 'sets VIDEO3, GAME/TV, GAME', + 'name' => [ 'video3', 'game' ] + }, + '03', + { + 'description' => 'sets VIDEO4, AUX1{AUX}', + 'name' => [ 'video4', 'aux1' ] + }, + '04', + { + 'description' => 'sets VIDEO5, AUX2', + 'name' => [ 'video5', 'aux2' ] + }, + '05', + { + 'description' => 'sets VIDEO6, PC', + 'name' => [ 'video6', 'pc' ] + }, + '06', + { + 'description' => 'sets VIDEO7', + 'name' => 'video7' + }, + '07', + { 'description' => 'Hidden1', 'name' => '07' }, + '08', + { 'description' => 'Hidden2', 'name' => '08' }, + '09', + { 'description' => 'Hidden3', 'name' => '09' }, + '10', + { + 'description' => 'sets DVD, BD/DVD', + 'name' => [ 'dvd', 'bd', 'dvd' ] + }, + '20', + { + 'description' => 'sets TAPE{1}, TV/TAPE', + 'name' => [ 'tape-1', 'tape' ] + }, + '21', + { + 'description' => 'sets TAPE2', + 'name' => 'tape2' + }, + '22', + { + 'description' => 'sets PHONO', + 'name' => 'phono' + }, + '23', + { + 'description' => 'sets CD, TV/CD', + 'name' => [ 'tv-cd', 'tv', 'cd' ] + }, + '24', + { 'description' => 'sets FM', 'name' => 'fm' }, + '25', + { 'description' => 'sets AM', 'name' => 'am' }, + '26', + { + 'description' => 'sets TUNER', + 'name' => 'tuner' + }, + '27', + { + 'description' => 'sets MUSIC SERVER, P4S, DLNA', + 'name' => [ 'music-server', 'p4s', 'dlna' ] + }, + '28', + { + 'description' => 'sets INTERNET RADIO, iRadio Favorite', + 'name' => [ 'internet-radio', 'iradio-favorite' ] + }, + '29', + { + 'description' => 'sets USB/USB{Front}', + 'name' => ['usb'] + }, + '2A', + { + 'description' => 'sets USB{Rear}', + 'name' => 'usb-rear' + }, + '2B', + { + 'description' => 'sets NETWORK, NET', + 'name' => [ 'network', 'net' ] + }, + '2C', + { + 'description' => 'sets USB{toggle}', + 'name' => 'usb-toggle' + }, + '40', + { + 'description' => 'sets Universal PORT', + 'name' => 'universal-port' + }, + '30', + { + 'description' => 'sets MULTI CH', + 'name' => 'multi-ch' + }, + '31', + { 'description' => 'sets XM', 'name' => 'xm' }, + '32', + { + 'description' => 'sets SIRIUS', + 'name' => 'sirius' + }, + 'UP', + { + 'description' => + 'sets Selector Position Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets Selector Position Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Selector Position', + 'name' => 'query' + } + } + }, + 'SLR', + { + 'description' => 'RECOUT Selector Command', + 'name' => 'record-output', + 'values' => { + '00', + { + 'description' => 'sets VIDEO1', + 'name' => 'video1' + }, + '01', + { + 'description' => 'sets VIDEO2', + 'name' => 'video2' + }, + '02', + { + 'description' => 'sets VIDEO3', + 'name' => 'video3' + }, + '03', + { + 'description' => 'sets VIDEO4', + 'name' => 'video4' + }, + '04', + { + 'description' => 'sets VIDEO5', + 'name' => 'video5' + }, + '05', + { + 'description' => 'sets VIDEO6', + 'name' => 'video6' + }, + '06', + { + 'description' => 'sets VIDEO7', + 'name' => 'video7' + }, + '10', + { 'description' => 'sets DVD', 'name' => 'dvd' }, + '20', + { + 'description' => 'sets TAPE{1}', + 'name' => 'tape' + }, + '21', + { + 'description' => 'sets TAPE2', + 'name' => 'tape2' + }, + '22', + { + 'description' => 'sets PHONO', + 'name' => 'phono' + }, + '23', + { 'description' => 'sets CD', 'name' => 'cd' }, + '24', + { 'description' => 'sets FM', 'name' => 'fm' }, + '25', + { 'description' => 'sets AM', 'name' => 'am' }, + '26', + { + 'description' => 'sets TUNER', + 'name' => 'tuner' + }, + '27', + { + 'description' => 'sets MUSIC SERVER', + 'name' => 'music-server' + }, + '28', + { + 'description' => 'sets INTERNET RADIO', + 'name' => 'internet-radio' + }, + '30', + { + 'description' => 'sets MULTI CH', + 'name' => 'multi-ch' + }, + '31', + { 'description' => 'sets XM', 'name' => 'xm' }, + '7F', + { 'description' => 'sets OFF', 'name' => 'off' }, + '80', + { + 'description' => 'sets SOURCE', + 'name' => 'source' + }, + 'QSTN', + { + 'description' => 'gets The Selector Position', + 'name' => 'query' + } + } + }, + 'SLA', + { + 'description' => 'Audio Selector Command', + 'name' => 'audio-input', + 'values' => { + '00', + { 'description' => 'sets AUTO', 'name' => 'auto' }, + '01', + { + 'description' => 'sets MULTI-CHANNEL', + 'name' => 'multi-channel' + }, + '02', + { + 'description' => 'sets ANALOG', + 'name' => 'analog' + }, + '03', + { + 'description' => 'sets iLINK', + 'name' => 'ilink' + }, + '04', + { 'description' => 'sets HDMI', 'name' => 'hdmi' }, + '05', + { + 'description' => 'sets COAX/OPT', + 'name' => [ 'coax', 'opt' ] + }, + '06', + { + 'description' => 'sets BALANCE', + 'name' => 'balance' + }, + '07', + { 'description' => 'sets ARC', 'name' => 'arc' }, + 'UP', + { + 'description' => 'sets Audio Selector Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets The Audio Selector Status', + 'name' => 'query' + } + } + }, + 'TGA', + { + 'description' => '12V Trigger A Command', + 'name' => '12v-trigger-a', + 'values' => { + '00', + { + 'description' => 'sets 12V Trigger A Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets 12V Trigger A On', + 'name' => 'on' + } + } + }, + 'TGB', + { + 'description' => '12V Trigger B Command', + 'name' => '12v-trigger-b', + 'values' => { + '00', + { + 'description' => 'sets 12V Trigger B Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets 12V Trigger B On', + 'name' => 'on' + } + } + }, + 'TGC', + { + 'description' => '12V Trigger C Command', + 'name' => '12v-trigger-c', + 'values' => { + '00', + { + 'description' => 'sets 12V Trigger C Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets 12V Trigger C On', + 'name' => 'on' + } + } + }, + 'VOS', + { + 'description' => 'Video Output Selector {Japanese Model Only}', + 'name' => 'video-output', + 'values' => { + '00', + { 'description' => 'sets D4', 'name' => 'd4' }, + '01', + { + 'description' => 'sets Component', + 'name' => 'component' + }, + 'QSTN', + { + 'description' => 'gets The Selector Position', + 'name' => 'query' + } + } + }, + 'HDO', + { + 'description' => 'HDMI Output Selector', + 'name' => 'hdmi-output', + 'values' => { + '00', + { + 'description' => 'sets No, Analog', + 'name' => [ 'no', 'analog' ] + }, + '01', + { + 'description' => 'sets Yes/Out Main, HDMI Main', + 'name' => [ 'yes', 'out' ] + }, + '02', + { + 'description' => 'sets Out Sub, HDMI Sub', + 'name' => [ 'out-sub', 'sub' ] + }, + '03', + { + 'description' => 'sets, Both', + 'name' => 'both' + }, + '04', + { + 'description' => 'sets, Both{Main}', + 'name' => 'both-main' + }, + '05', + { + 'description' => 'sets, Both{Sub}', + 'name' => 'both-sub' + }, + 'UP', + { + 'description' => + 'sets HDMI Out Selector Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets The HDMI Out Selector', + 'name' => 'query' + } + } + }, + 'HAO', + { + 'description' => 'HDMI Audio Out', + 'name' => 'hdmi-audio-out', + 'values' => { + '00', + { 'description' => 'sets Off', 'name' => 'off' }, + '01', + { 'description' => 'sets On', 'name' => 'on' }, + '02', + { 'description' => 'sets Auto', 'name' => 'auto' }, + 'UP', + { + 'description' => 'sets HDMI Audio Out Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets HDMI Audio Out', + 'name' => 'query' + } + } + }, + 'RES', + { + 'description' => 'Monitor Out Resolution', + 'name' => 'monitor-out-resolution', + 'values' => { + '00', + { + 'description' => 'sets Through', + 'name' => 'through' + }, + '01', + { + 'description' => 'sets Auto{HDMI Output Only}', + 'name' => 'auto' + }, + '02', + { 'description' => 'sets 480p', 'name' => '480p' }, + '03', + { 'description' => 'sets 720p', 'name' => '720p' }, + '04', + { + 'description' => 'sets 1080i', + 'name' => '1080i' + }, + '05', + { + 'description' => 'sets 1080p{HDMI Output Only}', + 'name' => '1080p' + }, + '07', + { + 'description' => 'sets 1080p/24fs{HDMI Output Only}', + 'name' => [ '1080p', '24fs' ] + }, + '08', + { + 'description' => 'sets 4K Upcaling{HDMI Output Only}', + 'name' => '4k-upcaling' + }, + '06', + { + 'description' => 'sets Source', + 'name' => 'source' + }, + 'UP', + { + 'description' => + 'sets Monitor Out Resolution Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets The Monitor Out Resolution', + 'name' => 'query' + } + } + }, + 'ISF', + { + 'description' => 'ISF Mode', + 'name' => 'isf-mode', + 'values' => { + '00', + { + 'description' => 'sets ISF Mode Custom', + 'name' => 'custom' + }, + '01', + { + 'description' => 'sets ISF Mode Day', + 'name' => 'day' + }, + '02', + { + 'description' => 'sets ISF Mode Night', + 'name' => 'night' + }, + 'UP', + { + 'description' => 'sets ISF Mode State Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets The ISF Mode State', + 'name' => 'query' + } + } + }, + 'VWM', + { + 'description' => 'Video Wide Mode', + 'name' => 'video-wide-mode', + 'values' => { + '00', + { 'description' => 'sets Auto', 'name' => 'auto' }, + '01', + { 'description' => 'sets 4:3', 'name' => '4-3' }, + '02', + { 'description' => 'sets Full', 'name' => 'full' }, + '03', + { 'description' => 'sets Zoom', 'name' => 'zoom' }, + '04', + { + 'description' => 'sets Wide Zoom', + 'name' => 'zoom' + }, + '05', + { + 'description' => 'sets Smart Zoom', + 'name' => 'smart-zoom' + }, + 'UP', + { + 'description' => 'sets Video Zoom Mode Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets Video Zoom Mode', + 'name' => 'query' + } + } + }, + 'VPM', + { + 'description' => 'Video Picture Mode', + 'name' => 'video-picture-mode', + 'values' => { + '00', + { + 'description' => 'sets Through', + 'name' => 'through' + }, + '01', + { + 'description' => 'sets Custom', + 'name' => 'custom' + }, + '02', + { + 'description' => 'sets Cinema', + 'name' => 'cinema' + }, + '03', + { 'description' => 'sets Game', 'name' => 'game' }, + '05', + { + 'description' => 'sets ISF Day', + 'name' => 'isf-day' + }, + '06', + { + 'description' => 'sets ISF Night', + 'name' => 'isf-night' + }, + '07', + { + 'description' => 'sets Streaming', + 'name' => 'streaming' + }, + '08', + { + 'description' => 'sets Direct', + 'name' => 'direct' + }, + 'UP', + { + 'description' => 'sets Video Zoom Mode Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets Video Zoom Mode', + 'name' => 'query' + } + } + }, + 'LMD', + { + 'description' => 'Listening Mode Command', + 'name' => 'listening-mode', + 'values' => { + '00', + { + 'description' => 'sets STEREO', + 'name' => 'stereo' + }, + '01', + { + 'description' => 'sets DIRECT', + 'name' => 'direct' + }, + '02', + { + 'description' => 'sets SURROUND', + 'name' => 'surround' + }, + '03', + { + 'description' => 'sets FILM, Game-RPG', + 'name' => [ 'film', 'game-rpg' ] + }, + '04', + { 'description' => 'sets THX', 'name' => 'thx' }, + '05', + { + 'description' => 'sets ACTION, Game-Action', + 'name' => [ 'action', 'game-action' ] + }, + '06', + { + 'description' => 'sets MUSICAL, Game-Rock', + 'name' => [ 'musical', 'game-rock' ] + }, + '07', + { + 'description' => 'sets MONO MOVIE', + 'name' => 'mono-movie' + }, + '08', + { + 'description' => 'sets ORCHESTRA', + 'name' => 'orchestra' + }, + '09', + { + 'description' => 'sets UNPLUGGED', + 'name' => 'unplugged' + }, + '0A', + { + 'description' => 'sets STUDIO-MIX', + 'name' => 'studio-mix' + }, + '0B', + { + 'description' => 'sets TV LOGIC', + 'name' => 'tv-logic' + }, + '0C', + { + 'description' => 'sets ALL CH STEREO', + 'name' => 'all-ch-stereo' + }, + '0D', + { + 'description' => 'sets THEATER-DIMENSIONAL', + 'name' => 'theater-dimensional' + }, + '0E', + { + 'description' => 'sets ENHANCED 7/ENHANCE, Game-Sports', + 'name' => [ 'enhanced-7', 'enhance', 'game-sports' ] + }, + '0F', + { 'description' => 'sets MONO', 'name' => 'mono' }, + '11', + { + 'description' => 'sets PURE AUDIO', + 'name' => 'pure-audio' + }, + '12', + { + 'description' => 'sets MULTIPLEX', + 'name' => 'multiplex' + }, + '13', + { + 'description' => 'sets FULL MONO', + 'name' => 'full-mono' + }, + '14', + { + 'description' => 'sets DOLBY VIRTUAL', + 'name' => 'dolby-virtual' + }, + '15', + { + 'description' => 'sets DTS Surround Sensation', + 'name' => 'dts-surround-sensation' + }, + '16', + { + 'description' => 'sets Audyssey DSX', + 'name' => 'audyssey-dsx' + }, + '1F', + { + 'description' => 'sets Whole House Mode', + 'name' => 'whole-house' + }, + '40', + { + 'description' => 'sets Straight Decode', + 'name' => 'straight-decode' + }, + '41', + { + 'description' => 'sets Dolby EX', + 'name' => 'dolby-ex' + }, + '42', + { + 'description' => 'sets THX Cinema', + 'name' => 'thx-cinema' + }, + '43', + { + 'description' => 'sets THX Surround EX', + 'name' => 'thx-surround-ex' + }, + '44', + { + 'description' => 'sets THX Music', + 'name' => 'thx-music' + }, + '45', + { + 'description' => 'sets THX Games', + 'name' => 'thx-games' + }, + '50', + { + 'description' => 'sets THX U2/S2/I/S Cinema/Cinema2', + 'name' => [ 'thx-u2', 's2', 'i', 's-cinema', 'cinema2' ] + }, + '51', + { + 'description' => + 'sets THX MusicMode,THX U2/S2/I/S Music', + 'name' => + [ 'thx-musicmode', 'thx-u2', 's2', 'i', 's-music' ] + }, + '52', + { + 'description' => + 'sets THX Games Mode,THX U2/S2/I/S Games', + 'name' => + [ 'thx-games', 'thx-u2', 's2', 'i', 's-games' ] + }, + '80', + { + 'description' => 'sets PLII/PLIIx Movie', + 'name' => [ 'plii', 'pliix-movie' ] + }, + '81', + { + 'description' => 'sets PLII/PLIIx Music', + 'name' => [ 'plii', 'pliix-music' ] + }, + '82', + { + 'description' => 'sets Neo:6 Cinema/Neo:X Cinema', + 'name' => [ 'neo-6-cinema', 'neo-x-cinema' ] + }, + '83', + { + 'description' => 'sets Neo:6 Music/Neo:X Music', + 'name' => [ 'neo-6-music', 'neo-x-music' ] + }, + '84', + { + 'description' => 'sets PLII/PLIIx THX Cinema', + 'name' => [ 'plii', 'pliix-thx-cinema' ] + }, + '85', + { + 'description' => 'sets Neo:6/Neo:X THX Cinema', + 'name' => [ 'neo-6', 'neo-x-thx-cinema' ] + }, + '86', + { + 'description' => 'sets PLII/PLIIx Game', + 'name' => [ 'plii', 'pliix-game' ] + }, + '87', + { + 'description' => 'sets Neural Surr', + 'name' => 'neural-surr' + }, + '88', + { + 'description' => 'sets Neural THX/Neural Surround', + 'name' => [ 'neural-thx', 'neural-surround' ] + }, + '89', + { + 'description' => 'sets PLII/PLIIx THX Games', + 'name' => [ 'plii', 'pliix-thx-games' ] + }, + '8A', + { + 'description' => 'sets Neo:6/Neo:X THX Games', + 'name' => [ 'neo-6', 'neo-x-thx-games' ] + }, + '8B', + { + 'description' => 'sets PLII/PLIIx THX Music', + 'name' => [ 'plii', 'pliix-thx-music' ] + }, + '8C', + { + 'description' => 'sets Neo:6/Neo:X THX Music', + 'name' => [ 'neo-6', 'neo-x-thx-music' ] + }, + '8D', + { + 'description' => 'sets Neural THX Cinema', + 'name' => 'neural-thx-cinema' + }, + '8E', + { + 'description' => 'sets Neural THX Music', + 'name' => 'neural-thx-music' + }, + '8F', + { + 'description' => 'sets Neural THX Games', + 'name' => 'neural-thx-games' + }, + '90', + { + 'description' => 'sets PLIIz Height', + 'name' => 'pliiz-height' + }, + '91', + { + 'description' => + 'sets Neo:6 Cinema DTS Surround Sensation', + 'name' => 'neo-6-cinema-dts-surround-sensation' + }, + '92', + { + 'description' => + 'sets Neo:6 Music DTS Surround Sensation', + 'name' => 'neo-6-music-dts-surround-sensation' + }, + '93', + { + 'description' => 'sets Neural Digital Music', + 'name' => 'neural-digital-music' + }, + '94', + { + 'description' => 'sets PLIIz Height + THX Cinema', + 'name' => 'pliiz-height-thx-cinema' + }, + '95', + { + 'description' => 'sets PLIIz Height + THX Music', + 'name' => 'pliiz-height-thx-music' + }, + '96', + { + 'description' => 'sets PLIIz Height + THX Games', + 'name' => 'pliiz-height-thx-games' + }, + '97', + { + 'description' => 'sets PLIIz Height + THX U2/S2 Cinema', + 'name' => [ 'pliiz-height-thx-u2', 's2-cinema' ] + }, + '98', + { + 'description' => 'sets PLIIz Height + THX U2/S2 Music', + 'name' => [ 'pliiz-height-thx-u2', 's2-music' ] + }, + '99', + { + 'description' => 'sets PLIIz Height + THX U2/S2 Games', + 'name' => [ 'pliiz-height-thx-u2', 's2-games' ] + }, + '9A', + { + 'description' => 'sets Neo:X Game', + 'name' => 'neo-x-game' + }, + 'A0', + { + 'description' => 'sets PLIIx/PLII Movie + Audyssey DSX', + 'name' => [ 'pliix', 'plii-movie-audyssey-dsx' ] + }, + 'A1', + { + 'description' => 'sets PLIIx/PLII Music + Audyssey DSX', + 'name' => [ 'pliix', 'plii-music-audyssey-dsx' ] + }, + 'A2', + { + 'description' => 'sets PLIIx/PLII Game + Audyssey DSX', + 'name' => [ 'pliix', 'plii-game-audyssey-dsx' ] + }, + 'A3', + { + 'description' => 'sets Neo:6 Cinema + Audyssey DSX', + 'name' => 'neo-6-cinema-audyssey-dsx' + }, + 'A4', + { + 'description' => 'sets Neo:6 Music + Audyssey DSX', + 'name' => 'neo-6-music-audyssey-dsx' + }, + 'A5', + { + 'description' => 'sets Neural Surround + Audyssey DSX', + 'name' => 'neural-surround-audyssey-dsx' + }, + 'A6', + { + 'description' => + 'sets Neural Digital Music + Audyssey DSX', + 'name' => 'neural-digital-music-audyssey-dsx' + }, + 'A7', + { + 'description' => 'sets Dolby EX + Audyssey DSX', + 'name' => 'dolby-ex-audyssey-dsx' + }, + 'UP', + { + 'description' => 'sets Listening Mode Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets Listening Mode Wrap-Around Down', + 'name' => 'down' + }, + 'MOVIE', + { + 'description' => 'sets Listening Mode Wrap-Around Up', + 'name' => 'movie' + }, + 'MUSIC', + { + 'description' => 'sets Listening Mode Wrap-Around Up', + 'name' => 'music' + }, + 'GAME', + { + 'description' => 'sets Listening Mode Wrap-Around Up', + 'name' => 'game' + }, + 'QSTN', + { + 'description' => 'gets The Listening Mode', + 'name' => 'query' + } + } + }, + 'LTN', + { + 'description' => 'Late Night Command', + 'name' => 'late-night', + 'values' => { + '00', + { + 'description' => 'sets Late Night Off', + 'name' => 'off' + }, + '01', + { + 'description' => + 'sets Late Night Low@DolbyDigital,On@Dolby TrueHD', + 'name' => [ 'low-dolbydigital', 'on-dolby-truehd' ] + }, + '02', + { + 'description' => + 'sets Late Night High@DolbyDigital,{On@Dolby TrueHD}', + 'name' => ['high-dolbydigital'] + }, + '03', + { + 'description' => 'sets Late Night Auto@Dolby TrueHD', + 'name' => 'auto-dolby-truehd' + }, + 'UP', + { + 'description' => 'sets Late Night State Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets The Late Night Level', + 'name' => 'query' + } + } + }, + 'RAS', + { + 'description' => 'Cinema Filter Command', + 'name' => 'cinema-filter', + 'values' => { + '00', + { + 'description' => 'sets Cinema Filter Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Cinema Filter On', + 'name' => 'on' + }, + 'UP', + { + 'description' => + 'sets Cinema Filter State Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets The Cinema Filter State', + 'name' => 'query' + } + } + }, + 'ADY', + { + 'description' => 'Audyssey 2EQ/MultEQ/MultEQ XT', + 'name' => 'audyssey-2eq-multeq-multeq-xt', + 'values' => { + '00', + { + 'description' => + 'sets Audyssey 2EQ/MultEQ/MultEQ XT Off', + 'name' => ['off'] + }, + '01', + { + 'description' => + 'sets Audyssey 2EQ/MultEQ/MultEQ XT On/Movie', + 'name' => [ 'on', 'movie' ] + }, + '02', + { + 'description' => + 'sets Audyssey 2EQ/MultEQ/MultEQ XT Music', + 'name' => ['music'] + }, + 'UP', + { + 'description' => +'sets Audyssey 2EQ/MultEQ/MultEQ XT State Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => + 'gets The Audyssey 2EQ/MultEQ/MultEQ XT State', + 'name' => 'query' + } + } + }, + 'ADQ', + { + 'description' => 'Audyssey Dynamic EQ', + 'name' => 'audyssey-dynamic-eq', + 'values' => { + '00', + { + 'description' => 'sets Audyssey Dynamic EQ Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Audyssey Dynamic EQ On', + 'name' => 'on' + }, + 'UP', + { + 'description' => + 'sets Audyssey Dynamic EQ State Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets The Audyssey Dynamic EQ State', + 'name' => 'query' + } + } + }, + 'ADV', + { + 'description' => 'Audyssey Dynamic Volume', + 'name' => 'audyssey-dynamic-volume', + 'values' => { + '00', + { + 'description' => 'sets Audyssey Dynamic Volume Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Audyssey Dynamic Volume Light', + 'name' => 'light' + }, + '02', + { + 'description' => 'sets Audyssey Dynamic Volume Medium', + 'name' => 'medium' + }, + '03', + { + 'description' => 'sets Audyssey Dynamic Volume Heavy', + 'name' => 'heavy' + }, + 'UP', + { + 'description' => + 'sets Audyssey Dynamic Volume State Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => + 'gets The Audyssey Dynamic Volume State', + 'name' => 'query' + } + } + }, + 'DVL', + { + 'description' => 'Dolby Volume', + 'name' => 'dolby-volume', + 'values' => { + '00', + { + 'description' => 'sets Dolby Volume Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Dolby Volume Low/On', + 'name' => [ 'low', 'on' ] + }, + '02', + { + 'description' => 'sets Dolby Volume Mid', + 'name' => 'mid' + }, + '03', + { + 'description' => 'sets Dolby Volume High', + 'name' => 'high' + }, + 'UP', + { + 'description' => + 'sets Dolby Volume State Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets The Dolby Volume State', + 'name' => 'query' + } + } + }, + 'MOT', + { + 'description' => 'Music Optimizer', + 'name' => 'music-optimizer', + 'values' => { + '00', + { + 'description' => 'sets Music Optimizer Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Music Optimizer On', + 'name' => 'on' + }, + 'UP', + { + 'description' => + 'sets Music Optimizer State Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets The Dolby Volume State', + 'name' => 'query' + } + } + }, + 'TUN', + { + 'description' => + 'Tuning Command {Include Tuner Pack Model Only}', + 'name' => 'tuning', + 'values' => { + 'nnnnn', + { + 'description' => +'sets Directly Tuning Frequency {FM nnn.nn MHz / AM nnnnn kHz / SR nnnnn ch}\nput 0 in the first two digits of nnnnn at SR', + 'name' => 'None' + }, + 'DIRECT', + { + 'description' => 'starts/restarts Direct Tuning Mode', + 'name' => 'direct' + }, + '0', + { + 'description' => 'sets 0 in Direct Tuning Mode', + 'name' => '0-in-direct-mode' + }, + '1', + { + 'description' => 'sets 1 in Direct Tuning Mode', + 'name' => '1-in-direct-mode' + }, + '2', + { + 'description' => 'sets 2 in Direct Tuning Mode', + 'name' => '2-in-direct-mode' + }, + '3', + { + 'description' => 'sets 3 in Direct Tuning Mode', + 'name' => '3-in-direct-mode' + }, + '4', + { + 'description' => 'sets 4 in Direct Tuning Mode', + 'name' => '4-in-direct-mode' + }, + '5', + { + 'description' => 'sets 5 in Direct Tuning Mode', + 'name' => '5-in-direct-mode' + }, + '6', + { + 'description' => 'sets 6 in Direct Tuning Mode', + 'name' => '6-in-direct-mode' + }, + '7', + { + 'description' => 'sets 7 in Direct Tuning Mode', + 'name' => '7-in-direct-mode' + }, + '8', + { + 'description' => 'sets 8 in Direct Tuning Mode', + 'name' => '8-in-direct-mode' + }, + '9', + { + 'description' => 'sets 9 in Direct Tuning Mode', + 'name' => '9-in-direct-mode' + }, + 'UP', + { + 'description' => 'sets Tuning Frequency Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets Tuning Frequency Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Tuning Frequency', + 'name' => 'query' + } + } + }, + 'PRS', + { + 'description' => + 'Preset Command {Include Tuner Pack Model Only}', + 'name' => 'preset', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + }, + '{1,30}', + { + 'description' => +'sets Preset No. 1 - 30 { In hexadecimal representation}', + 'name' => 'no-1-30' + }, + 'UP', + { + 'description' => 'sets Preset No. Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets Preset No. Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Preset No.', + 'name' => 'query' + } + } + }, + 'PRM', + { + 'description' => + 'Preset Memory Command {Include Tuner Pack Model Only}', + 'name' => 'preset-memory', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + }, + '{1,30}', + { + 'description' => +'sets Preset No. 1 - 30 { In hexadecimal representation}', + 'name' => 'no-1-30' + } + } + }, + 'RDS', + { + 'description' => 'RDS Information Command {RDS Model Only}', + 'name' => 'rds-information', + 'values' => { + '00', + { + 'description' => 'Display RT Information', + 'name' => '00' + }, + '01', + { + 'description' => 'Display PTY Information', + 'name' => '01' + }, + '02', + { + 'description' => 'Display TP Information', + 'name' => '02' + }, + 'UP', + { + 'description' => + 'Display RDS Information Wrap-Around Change', + 'name' => 'up' + } + } + }, + 'PTS', + { + 'description' => 'PTY Scan Command {RDS Model Only}', + 'name' => 'pty-scan', + 'values' => { + '{0,30}', + { + 'description' => +'sets PTY No \u201c0 - 30\u201d { In hexadecimal representation}', + 'name' => 'no-0-30' + }, + 'ENTER', + { + 'description' => 'Finish PTY Scan', + 'name' => 'enter' + } + } + }, + 'TPS', + { + 'description' => 'TP Scan Command {RDS Model Only}', + 'name' => 'tp-scan', + 'values' => { + '', + { + 'description' => + 'Start TP Scan {When Don\u2019t Have Parameter}', + 'name' => 'None' + }, + 'ENTER', + { + 'description' => 'Finish TP Scan', + 'name' => 'enter' + } + } + }, + 'XCN', + { + 'description' => 'XM Channel Name Info {XM Model Only}', + 'name' => 'xm-channel-name-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => 'XM Channel Name', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets XM Channel Name', + 'name' => 'query' + } + } + }, + 'XAT', + { + 'description' => 'XM Artist Name Info {XM Model Only}', + 'name' => 'xm-artist-name-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => 'XM Artist Name', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets XM Artist Name', + 'name' => 'query' + } + } + }, + 'XTI', + { + 'description' => 'XM Title Info {XM Model Only}', + 'name' => 'xm-title-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => 'XM Title', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets XM Title', + 'name' => 'query' + } + } + }, + 'XCH', + { + 'description' => 'XM Channel Number Command {XM Model Only}', + 'name' => 'xm-channel-number', + 'values' => { + '{0,597}', + { + 'description' => + 'XM Channel Number \u201c000 - 255\u201d', + 'name' => 'None' + }, + 'UP', + { + 'description' => 'sets XM Channel Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets XM Channel Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets XM Channel Number', + 'name' => 'query' + } + } + }, + 'XCT', + { + 'description' => 'XM Category Command {XM Model Only}', + 'name' => 'xm-category', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => 'XM Category Info', + 'name' => 'None' + }, + 'UP', + { + 'description' => 'sets XM Category Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets XM Category Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets XM Category', + 'name' => 'query' + } + } + }, + 'SCN', + { + 'description' => 'SIRIUS Channel Name Info {SIRIUS Model Only}', + 'name' => 'sirius-channel-name-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => 'SIRIUS Channel Name', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets SIRIUS Channel Name', + 'name' => 'query' + } + } + }, + 'SAT', + { + 'description' => 'SIRIUS Artist Name Info {SIRIUS Model Only}', + 'name' => 'sirius-artist-name-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => 'SIRIUS Artist Name', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets SIRIUS Artist Name', + 'name' => 'query' + } + } + }, + 'STI', + { + 'description' => 'SIRIUS Title Info {SIRIUS Model Only}', + 'name' => 'sirius-title-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => 'SIRIUS Title', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets SIRIUS Title', + 'name' => 'query' + } + } + }, + 'SCH', + { + 'description' => + 'SIRIUS Channel Number Command {SIRIUS Model Only}', + 'name' => 'sirius-channel-number', + 'values' => { + '{0,597}', + { + 'description' => + 'SIRIUS Channel Number \u201c000 - 255\u201d', + 'name' => 'None' + }, + 'UP', + { + 'description' => 'sets SIRIUS Channel Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets SIRIUS Channel Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets SIRIUS Channel Number', + 'name' => 'query' + } + } + }, + 'SCT', + { + 'description' => 'SIRIUS Category Command {SIRIUS Model Only}', + 'name' => 'sirius-category', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => 'SIRIUS Category Info', + 'name' => 'None' + }, + 'UP', + { + 'description' => 'sets SIRIUS Category Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets SIRIUS Category Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets SIRIUS Category', + 'name' => 'query' + } + } + }, + 'SLK', + { + 'description' => + 'SIRIUS Parental Lock Command {SIRIUS Model Only}', + 'name' => 'sirius-parental-lock', + 'values' => { + 'nnnn', + { + 'description' => 'Lock Password {4Digits}', + 'name' => 'None' + }, + 'INPUT', + { + 'description' => + 'displays "Please input the Lock password"', + 'name' => 'input' + }, + 'WRONG', + { + 'description' => + 'displays "The Lock password is wrong"', + 'name' => 'wrong' + } + } + }, + 'HAT', + { + 'description' => + 'HD Radio Artist Name Info {HD Radio Model Only}', + 'name' => 'hd-radio-artist-name-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => +'HD Radio Artist Name {variable-length, 64 digits max}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets HD Radio Artist Name', + 'name' => 'query' + } + } + }, + 'HCN', + { + 'description' => + 'HD Radio Channel Name Info {HD Radio Model Only}', + 'name' => 'hd-radio-channel-name-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => + 'HD Radio Channel Name {Station Name} {7 digits}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets HD Radio Channel Name', + 'name' => 'query' + } + } + }, + 'HTI', + { + 'description' => 'HD Radio Title Info {HD Radio Model Only}', + 'name' => 'hd-radio-title-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => + 'HD Radio Title {variable-length, 64 digits max}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets HD Radio Title', + 'name' => 'query' + } + } + }, + 'HDS', + { + 'description' => 'HD Radio Detail Info {HD Radio Model Only}', + 'name' => 'hd-radio-detail-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => 'HD Radio Title', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets HD Radio Title', + 'name' => 'query' + } + } + }, + 'HPR', + { + 'description' => + 'HD Radio Channel Program Command {HD Radio Model Only}', + 'name' => 'hd-radio-channel-program', + 'values' => { + '{1,8}', + { + 'description' => + 'sets directly HD Radio Channel Program', + 'name' => 'directly' + }, + 'QSTN', + { + 'description' => 'gets HD Radio Channel Program', + 'name' => 'query' + } + } + }, + 'HBL', + { + 'description' => + 'HD Radio Blend Mode Command {HD Radio Model Only}', + 'name' => 'hd-radio-blend-mode', + 'values' => { + '00', + { + 'description' => 'sets HD Radio Blend Mode "Auto"', + 'name' => 'auto' + }, + '01', + { + 'description' => 'sets HD Radio Blend Mode "Analog"', + 'name' => 'analog' + }, + 'QSTN', + { + 'description' => 'gets the HD Radio Blend Mode Status', + 'name' => 'query' + } + } + }, + 'HTS', + { + 'description' => 'HD Radio Tuner Status {HD Radio Model Only}', + 'name' => 'hd-radio-tuner-status', + 'values' => { + 'mmnnoo', + { + 'description' => +'HD Radio Tuner Status {3 bytes}\nmm -> "00" not HD, "01" HD\nnn -> current Program "01"-"08"\noo -> receivable Program {8 bits are represented in hexadecimal notation. Each bit shows receivable or not.}', + 'name' => 'mmnnoo' + }, + 'QSTN', + { + 'description' => 'gets the HD Radio Tuner Status', + 'name' => 'query' + } + } + }, + 'NTC', + { + 'description' => +'Network/USB Operation Command {Network Model Only after TX-NR905}', + 'name' => 'network-usb', + 'values' => { + 'PLAY', + { + 'description' => 'PLAY KEY', + 'name' => 'play' + }, + 'STOP', + { 'description' => 'STOP KEY', 'name' => 'stop' }, + 'PAUSE', + { 'description' => 'PAUSE KEY', 'name' => 'pause' }, + 'TRUP', + { + 'description' => 'TRACK UP KEY', + 'name' => 'trup' + }, + 'TRDN', + { + 'description' => 'TRACK DOWN KEY', + 'name' => 'trdn' + }, + 'FF', + { + 'description' => 'FF KEY {CONTINUOUS*}', + 'name' => 'ff' + }, + 'REW', + { + 'description' => 'REW KEY {CONTINUOUS*}', + 'name' => 'rew' + }, + 'REPEAT', + { + 'description' => 'REPEAT KEY', + 'name' => 'repeat' + }, + 'RANDOM', + { + 'description' => 'RANDOM KEY', + 'name' => 'random' + }, + 'DISPLAY', + { + 'description' => 'DISPLAY KEY', + 'name' => 'display' + }, + 'ALBUM', + { 'description' => 'ALBUM KEY', 'name' => 'album' }, + 'ARTIST', + { + 'description' => 'ARTIST KEY', + 'name' => 'artist' + }, + 'GENRE', + { 'description' => 'GENRE KEY', 'name' => 'genre' }, + 'PLAYLIST', + { + 'description' => 'PLAYLIST KEY', + 'name' => 'playlist' + }, + 'RIGHT', + { 'description' => 'RIGHT KEY', 'name' => 'right' }, + 'LEFT', + { 'description' => 'LEFT KEY', 'name' => 'left' }, + 'UP', + { 'description' => 'UP KEY', 'name' => 'up' }, + 'DOWN', + { 'description' => 'DOWN KEY', 'name' => 'down' }, + 'SELECT', + { + 'description' => 'SELECT KEY', + 'name' => 'select' + }, + '0', + { 'description' => '0 KEY', 'name' => '0' }, + '1', + { 'description' => '1 KEY', 'name' => '1' }, + '2', + { 'description' => '2 KEY', 'name' => '2' }, + '3', + { 'description' => '3 KEY', 'name' => '3' }, + '4', + { 'description' => '4 KEY', 'name' => '4' }, + '5', + { 'description' => '5 KEY', 'name' => '5' }, + '6', + { 'description' => '6 KEY', 'name' => '6' }, + '7', + { 'description' => '7 KEY', 'name' => '7' }, + '8', + { 'description' => '8 KEY', 'name' => '8' }, + '9', + { 'description' => '9 KEY', 'name' => '9' }, + 'DELETE', + { + 'description' => 'DELETE KEY', + 'name' => 'delete' + }, + 'CAPS', + { 'description' => 'CAPS KEY', 'name' => 'caps' }, + 'LOCATION', + { + 'description' => 'LOCATION KEY', + 'name' => 'location' + }, + 'LANGUAGE', + { + 'description' => 'LANGUAGE KEY', + 'name' => 'language' + }, + 'SETUP', + { 'description' => 'SETUP KEY', 'name' => 'setup' }, + 'RETURN', + { + 'description' => 'RETURN KEY', + 'name' => 'return' + }, + 'CHUP', + { + 'description' => 'CH UP{for iRadio}', + 'name' => 'chup' + }, + 'CHDN', + { + 'description' => 'CH DOWN{for iRadio}', + 'name' => 'chdn' + }, + 'MENU', + { 'description' => 'MENU', 'name' => 'menu' }, + 'TOP', + { 'description' => 'TOP MENU', 'name' => 'top' }, + 'MODE', + { + 'description' => 'MODE{for iPod} STD<->EXT', + 'name' => 'mode' + }, + 'LIST', + { + 'description' => 'LIST <-> PLAYBACK', + 'name' => 'list' + } + } + }, + 'NAT', + { + 'description' => 'NET/USB Artist Name Info', + 'name' => 'net-usb-artist-name-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => +'NET/USB Artist Name {variable-length, 64 Unicode letters [UTF-8 encoded] max , for Network Control only}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets iPod Artist Name', + 'name' => 'query' + } + } + }, + 'NAL', + { + 'description' => 'NET/USB Album Name Info', + 'name' => 'net-usb-album-name-info', + 'values' => { + 'nnnnnnn', + { + 'description' => +'NET/USB Album Name {variable-length, 64 Unicode letters [UTF-8 encoded] max , for Network Control only}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets iPod Album Name', + 'name' => 'query' + } + } + }, + 'NTI', + { + 'description' => 'NET/USB Title Name', + 'name' => 'net-usb-title-name', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => +'NET/USB Title Name {variable-length, 64 Unicode letters [UTF-8 encoded] max , for Network Control only}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets HD Radio Title', + 'name' => 'query' + } + } + }, + 'NTM', + { + 'description' => 'NET/USB Time Info', + 'name' => 'net-usb-time-info', + 'values' => { + 'mm:ss/mm:ss', + { + 'description' => +'NET/USB Time Info {Elapsed time/Track Time Max 99:59}', + 'name' => 'mm-ss-mm-ss' + }, + 'QSTN', + { + 'description' => 'gets iPod Time Info', + 'name' => 'query' + } + } + }, + 'NTR', + { + 'description' => 'NET/USB Track Info', + 'name' => 'net-usb-track-info', + 'values' => { + 'cccc/tttt', + { + 'description' => +'NET/USB Track Info {Current Track/Toral Track Max 9999}', + 'name' => 'cccc-tttt' + }, + 'QSTN', + { + 'description' => 'gets iPod Time Info', + 'name' => 'query' + } + } + }, + 'NST', + { + 'description' => 'NET/USB Play Status', + 'name' => 'net-usb-play-status', + 'values' => { + 'prs', + { + 'description' => +'NET/USB Play Status {3 letters}\np -> Play Status: "S": STOP, "P": Play, "p": Pause, "F": FF, "R": FR\nr -> Repeat Status: "-": Off, "R": All, "F": Folder, "1": Repeat 1,\ns -> Shuffle Status: "-": Off, "S": All , "A": Album, "F": Folder', + 'name' => 'prs' + }, + 'QSTN', + { + 'description' => 'gets the Net/USB Status', + 'name' => 'query' + } + } + }, + 'NPR', + { + 'description' => 'Internet Radio Preset Command', + 'name' => 'internet-radio-preset', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + }, + 'SET', + { + 'description' => 'preset memory current station', + 'name' => 'set' + } + } + }, + 'NLS', + { + 'description' => 'NET/USB List Info', + 'name' => 'net-usb-list-info', + 'values' => { + 'tlpnnnnnnnnnn', + { + 'description' => +'NET/USB List Info\nt ->Information Type {A : ASCII letter, C : Cursor Info, U : Unicode letter}\nwhen t = A,\n l ->Line Info {0-9 : 1st to 10th Line}\n nnnnnnnnn:Listed data {variable-length, 64 ASCII letters max}\n when AVR is not displayed NET/USB List{Ketboard,Menu,Popup\u2026}, "nnnnnnnnn" is "See TV".\n p ->Property {- : no}\nwhen t = C,\n l ->Cursor Position {0-9 : 1st to 10th Line, - : No Cursor}\n p ->Update Type {P : Page Infomation Update { Page Clear or Disable List Info} , C : Cursor Position Update}\nwhen t = U, {for Network Control Only}\n l ->Line Info {0-9 : 1st to 10th Line}\n nnnnnnnnn:Listed data {variable-length, 64 Unicode letters [UTF-8 encoded] max}\n when AVR is not displayed NET/USB List{Ketboard,Menu,Popup\u2026}, "nnnnnnnnn" is "See TV".\n p ->Property {- : no}', + 'name' => 'None' + }, + 'ti', + { + 'description' => +'select the listed item {from Network Control Only}\n t -> Index Type {L : Line, I : Index}\nwhen t = L,\n i -> Line number {0-9 : 1st to 10th Line [1 digit] }\nwhen t = I,\n iiiii -> Index number {00001-99999 : 1st to 99999th Item [5 digits] }', + 'name' => 'ti' + } + } + }, + 'NJA', + { + 'description' => +'NET/USB Jacket Art {When Jacket Art is available and Output for Network Control Only}', + 'name' => 'net-usb-jacket-art', + 'values' => { + 'tp{xx}{xx}{xx}{xx}{xx}{xx}', + { + 'description' => +'NET/USB Jacket Art/Album Art Data\nt-> Image type 0:BMP,1:JPEG\np-> Packet flag 0:Start, 1:Next, 2:End\nxxxxxxxxxxxxxx -> Jacket/Album Art Data {valiable length, 1024 ASCII HEX letters max}', + 'name' => 'tp-xx-xx-xx-xx-xx-xx' + } + } + }, + 'NSV', + { + 'description' => 'NET Service{for Network Control Only}', + 'name' => 'net-service', + 'values' => { + 'ssiaaaa\u2026aaaabbbb\u2026bbbb', + { + 'description' => +'select Network Service directly\nss -> Network Serveice\n 00:Media Server {DLNA}\n 01:Favorite\n 02:vTuner\n 03:SIRIUS\n 04:Pandora\n 05:Rhapsody\n 06:Last.fm\n 07:Napster\n 08:Slacker\n 09:Mediafly\n 0A:Spotify\n 0B:AUPEO!\n 0C:Radiko\n 0D:e-onkyo\n\ni-> Acount Info\n 0: No\n 1: Yes\n"aaaa...aaaa": User Name { 128 Unicode letters [UTF-8 encoded] max }\n"bbbb...bbbb": Password { 128 Unicode letters [UTF-8 encoded] max }', + 'name' => 'None' + } + } + }, + 'NKY', + { + 'description' => 'NET Keyboard{for Network Control Only}', + 'name' => 'net-keyboard', + 'values' => { + 'll', + { + 'description' => +'waiting Keyboard Input\nll -> category\n 00: Off { Exit Keyboard Input }\n 01: User Name\n 02: Password\n 03: Artist Name\n 04: Album Name\n 05: Song Name\n 06: Station Name\n 07: Tag Name\n 08: Artist or Song\n 09: Episode Name\n 0A: Pin Code {some digit Number [0-9}\n 0B: User Name {available ISO 8859-1 character set}\n 0C: Password {available ISO 8859-1 character set}', + 'name' => 'll' + }, + 'nnnnnnnnn', + { + 'description' => +'set Keyboard Input letter\n"nnnnnnnn" is variable-length, 128 Unicode letters [UTF-8 encoded] max', + 'name' => 'None' + } + } + }, + 'NPU', + { + 'description' => 'NET Popup Message{for Network Control Only}', + 'name' => 'net-popup-message', + 'values' => { + 'xaaa\u2026aaaybbb\u2026bbb', + { + 'description' => +"x -> Popup Display Type\n 'T' => Popup text is top\n 'B' => Popup text is bottom\n 'L' => Popup text is list format\n\naaa...aaa -> Popup Title, Massage\n when x = 'T' or 'B'\n Top Title [0x00] Popup Title [0x00] Popup Message [0x00]\n {valiable-length Unicode letter [UTF-8 encoded] }\n\n when x = 'L'\n Top Title [0x00] Item Title 1 [0x00] Item Parameter 1 [0x00] ... [0x00] Item Title 6 [0x00] Item Parameter 6 [0x00]\n {valiable-length Unicode letter [UTF-8 encoded] }\n\ny -> Cursor Position on button\n '0' : Button is not Displayed\n '1' : Cursor is on the button 1\n '2' : Cursor is on the button 2\n\nbbb...bbb -> Text of Button\n Text of Button 1 [0x00] Text of Button 2 [0x00]\n {valiable-length Unicode letter [UTF-8 encoded] }", + 'name' => 'None' + } + } + }, + 'NMD', + { + 'description' => 'iPod Mode Change {with USB Connection Only}', + 'name' => 'ipod-mode-change', + 'values' => { + 'STD', + { + 'description' => 'Standerd Mode', + 'name' => 'std' + }, + 'EXT', + { + 'description' => 'Extend Mode{If available}', + 'name' => 'ext' + }, + 'VDC', + { + 'description' => 'Video Contents in Extended Mode', + 'name' => 'vdc' + }, + 'QSTN', + { + 'description' => 'gets iPod Mode Status', + 'name' => 'query' + } + } + }, + 'CCD', + { + 'description' => 'CD Player Operation Command', + 'name' => 'cd-player', + 'values' => { + 'POWER', + { + 'description' => 'POWER ON/OFF', + 'name' => 'power' + }, + 'TRACK', + { 'description' => 'TRACK+', 'name' => 'track' }, + 'PLAY', + { 'description' => 'PLAY', 'name' => 'play' }, + 'STOP', + { 'description' => 'STOP', 'name' => 'stop' }, + 'PAUSE', + { 'description' => 'PAUSE', 'name' => 'pause' }, + 'SKIP.F', + { 'description' => '>>I', 'name' => 'skip-f' }, + 'SKIP.R', + { 'description' => 'I<<', 'name' => 'skip-r' }, + 'MEMORY', + { 'description' => 'MEMORY', 'name' => 'memory' }, + 'CLEAR', + { 'description' => 'CLEAR', 'name' => 'clear' }, + 'REPEAT', + { 'description' => 'REPEAT', 'name' => 'repeat' }, + 'RANDOM', + { 'description' => 'RANDOM', 'name' => 'random' }, + 'DISP', + { 'description' => 'DISPLAY', 'name' => 'disp' }, + 'D.MODE', + { 'description' => 'D.MODE', 'name' => 'd-mode' }, + 'FF', + { 'description' => 'FF >>', 'name' => 'ff' }, + 'REW', + { 'description' => 'REW <<', 'name' => 'rew' }, + 'OP/CL', + { + 'description' => 'OPEN/CLOSE', + 'name' => 'op-cl' + }, + '1', + { 'description' => '1.0', 'name' => '1' }, + '2', + { 'description' => '2.0', 'name' => '2' }, + '3', + { 'description' => '3.0', 'name' => '3' }, + '4', + { 'description' => '4.0', 'name' => '4' }, + '5', + { 'description' => '5.0', 'name' => '5' }, + '6', + { 'description' => '6.0', 'name' => '6' }, + '7', + { 'description' => '7.0', 'name' => '7' }, + '8', + { 'description' => '8.0', 'name' => '8' }, + '9', + { 'description' => '9.0', 'name' => '9' }, + '0', + { 'description' => '0.0', 'name' => '0' }, + '10', + { 'description' => '10.0', 'name' => '10' }, + '+10', + { 'description' => '+10', 'name' => '10' }, + 'D.SKIP', + { 'description' => 'DISC +', 'name' => 'd-skip' }, + 'DISC.F', + { 'description' => 'DISC +', 'name' => 'disc-f' }, + 'DISC.R', + { 'description' => 'DISC -', 'name' => 'disc-r' }, + 'DISC1', + { 'description' => 'DISC1', 'name' => 'disc1' }, + 'DISC2', + { 'description' => 'DISC2', 'name' => 'disc2' }, + 'DISC3', + { 'description' => 'DISC3', 'name' => 'disc3' }, + 'DISC4', + { 'description' => 'DISC4', 'name' => 'disc4' }, + 'DISC5', + { 'description' => 'DISC5', 'name' => 'disc5' }, + 'DISC6', + { 'description' => 'DISC6', 'name' => 'disc6' }, + 'STBY', + { 'description' => 'STANDBY', 'name' => 'stby' }, + 'PON', + { 'description' => 'POWER ON', 'name' => 'pon' } + } + }, + 'CT1', + { + 'description' => 'TAPE1{A} Operation Command', + 'name' => 'tape1-a', + 'values' => { + 'PLAY.F', + { + 'description' => 'PLAY >', + 'name' => 'play-f' + }, + 'PLAY.R', + { 'description' => 'PLAY <', 'name' => 'play-r' }, + 'STOP', + { 'description' => 'STOP', 'name' => 'stop' }, + 'RC/PAU', + { + 'description' => 'REC/PAUSE', + 'name' => 'rc-pau' + }, + 'FF', + { 'description' => 'FF >>', 'name' => 'ff' }, + 'REW', + { 'description' => 'REW <<', 'name' => 'rew' } + } + }, + 'CT2', + { + 'description' => 'TAPE2{B} Operation Command', + 'name' => 'tape2-b', + 'values' => { + 'PLAY.F', + { + 'description' => 'PLAY >', + 'name' => 'play-f' + }, + 'PLAY.R', + { 'description' => 'PLAY <', 'name' => 'play-r' }, + 'STOP', + { 'description' => 'STOP', 'name' => 'stop' }, + 'RC/PAU', + { + 'description' => 'REC/PAUSE', + 'name' => 'rc-pau' + }, + 'FF', + { 'description' => 'FF >>', 'name' => 'ff' }, + 'REW', + { 'description' => 'REW <<', 'name' => 'rew' }, + 'OP/CL', + { + 'description' => 'OPEN/CLOSE', + 'name' => 'op-cl' + }, + 'SKIP.F', + { 'description' => '>>I', 'name' => 'skip-f' }, + 'SKIP.R', + { 'description' => 'I<<', 'name' => 'skip-r' }, + 'REC', + { 'description' => 'REC', 'name' => 'rec' } + } + }, + 'CEQ', + { + 'description' => 'Graphics Equalizer Operation Command', + 'name' => 'graphics-equalizer', + 'values' => { + 'POWER', + { + 'description' => 'POWER ON/OFF', + 'name' => 'power' + }, + 'PRESET', + { 'description' => 'PRESET', 'name' => 'preset' } + } + }, + 'CDT', + { + 'description' => 'DAT Recorder Operation Command', + 'name' => 'dat-recorder', + 'values' => { + 'PLAY', + { 'description' => 'PLAY', 'name' => 'play' }, + 'RC/PAU', + { + 'description' => 'REC/PAUSE', + 'name' => 'rc-pau' + }, + 'STOP', + { 'description' => 'STOP', 'name' => 'stop' }, + 'SKIP.F', + { 'description' => '>>I', 'name' => 'skip-f' }, + 'SKIP.R', + { 'description' => 'I<<', 'name' => 'skip-r' }, + 'FF', + { 'description' => 'FF >>', 'name' => 'ff' }, + 'REW', + { 'description' => 'REW <<', 'name' => 'rew' } + } + }, + 'CDV', + { + 'description' => + 'DVD Player Operation Command {via RIHD only after TX-NR509}', + 'name' => 'dvd-player', + 'values' => { + 'POWER', + { + 'description' => 'POWER ON/OFF', + 'name' => 'power' + }, + 'PWRON', + { 'description' => 'POWER ON', 'name' => 'pwron' }, + 'PWROFF', + { + 'description' => 'POWER OFF', + 'name' => 'pwroff' + }, + 'PLAY', + { 'description' => 'PLAY', 'name' => 'play' }, + 'STOP', + { 'description' => 'STOP', 'name' => 'stop' }, + 'SKIP.F', + { 'description' => '>>I', 'name' => 'skip-f' }, + 'SKIP.R', + { 'description' => 'I<<', 'name' => 'skip-r' }, + 'FF', + { 'description' => 'FF >>', 'name' => 'ff' }, + 'REW', + { 'description' => 'REW <<', 'name' => 'rew' }, + 'PAUSE', + { 'description' => 'PAUSE', 'name' => 'pause' }, + 'LASTPLAY', + { + 'description' => 'LAST PLAY', + 'name' => 'lastplay' + }, + 'SUBTON/OFF', + { + 'description' => 'SUBTITLE ON/OFF', + 'name' => 'subton-off' + }, + 'SUBTITLE', + { + 'description' => 'SUBTITLE', + 'name' => 'subtitle' + }, + 'SETUP', + { 'description' => 'SETUP', 'name' => 'setup' }, + 'TOPMENU', + { 'description' => 'TOPMENU', 'name' => 'topmenu' }, + 'MENU', + { 'description' => 'MENU', 'name' => 'menu' }, + 'UP', + { 'description' => 'UP', 'name' => 'up' }, + 'DOWN', + { 'description' => 'DOWN', 'name' => 'down' }, + 'LEFT', + { 'description' => 'LEFT', 'name' => 'left' }, + 'RIGHT', + { 'description' => 'RIGHT', 'name' => 'right' }, + 'ENTER', + { 'description' => 'ENTER', 'name' => 'enter' }, + 'RETURN', + { 'description' => 'RETURN', 'name' => 'return' }, + 'DISC.F', + { 'description' => 'DISC +', 'name' => 'disc-f' }, + 'DISC.R', + { 'description' => 'DISC -', 'name' => 'disc-r' }, + 'AUDIO', + { 'description' => 'AUDIO', 'name' => 'audio' }, + 'RANDOM', + { 'description' => 'RANDOM', 'name' => 'random' }, + 'OP/CL', + { + 'description' => 'OPEN/CLOSE', + 'name' => 'op-cl' + }, + 'ANGLE', + { 'description' => 'ANGLE', 'name' => 'angle' }, + '1', + { 'description' => '1.0', 'name' => '1' }, + '2', + { 'description' => '2.0', 'name' => '2' }, + '3', + { 'description' => '3.0', 'name' => '3' }, + '4', + { 'description' => '4.0', 'name' => '4' }, + '5', + { 'description' => '5.0', 'name' => '5' }, + '6', + { 'description' => '6.0', 'name' => '6' }, + '7', + { 'description' => '7.0', 'name' => '7' }, + '8', + { 'description' => '8.0', 'name' => '8' }, + '9', + { 'description' => '9.0', 'name' => '9' }, + '10', + { 'description' => '10.0', 'name' => '10' }, + '0', + { 'description' => '0.0', 'name' => '0' }, + 'SEARCH', + { 'description' => 'SEARCH', 'name' => 'search' }, + 'DISP', + { 'description' => 'DISPLAY', 'name' => 'disp' }, + 'REPEAT', + { 'description' => 'REPEAT', 'name' => 'repeat' }, + 'MEMORY', + { 'description' => 'MEMORY', 'name' => 'memory' }, + 'CLEAR', + { 'description' => 'CLEAR', 'name' => 'clear' }, + 'ABR', + { 'description' => 'A-B REPEAT', 'name' => 'abr' }, + 'STEP.F', + { 'description' => 'STEP', 'name' => 'step-f' }, + 'STEP.R', + { + 'description' => 'STEP BACK', + 'name' => 'step-r' + }, + 'SLOW.F', + { 'description' => 'SLOW', 'name' => 'slow-f' }, + 'SLOW.R', + { + 'description' => 'SLOW BACK', + 'name' => 'slow-r' + }, + 'ZOOMTG', + { 'description' => 'ZOOM', 'name' => 'zoomtg' }, + 'ZOOMUP', + { 'description' => 'ZOOM UP', 'name' => 'zoomup' }, + 'ZOOMDN', + { + 'description' => 'ZOOM DOWN', + 'name' => 'zoomdn' + }, + 'PROGRE', + { + 'description' => 'PROGRESSIVE', + 'name' => 'progre' + }, + 'VDOFF', + { + 'description' => 'VIDEO ON/OFF', + 'name' => 'vdoff' + }, + 'CONMEM', + { + 'description' => 'CONDITION MEMORY', + 'name' => 'conmem' + }, + 'FUNMEM', + { + 'description' => 'FUNCTION MEMORY', + 'name' => 'funmem' + }, + 'DISC1', + { 'description' => 'DISC1', 'name' => 'disc1' }, + 'DISC2', + { 'description' => 'DISC2', 'name' => 'disc2' }, + 'DISC3', + { 'description' => 'DISC3', 'name' => 'disc3' }, + 'DISC4', + { 'description' => 'DISC4', 'name' => 'disc4' }, + 'DISC5', + { 'description' => 'DISC5', 'name' => 'disc5' }, + 'DISC6', + { 'description' => 'DISC6', 'name' => 'disc6' }, + 'FOLDUP', + { + 'description' => 'FOLDER UP', + 'name' => 'foldup' + }, + 'FOLDDN', + { + 'description' => 'FOLDER DOWN', + 'name' => 'folddn' + }, + 'P.MODE', + { + 'description' => 'PLAY MODE', + 'name' => 'p-mode' + }, + 'ASCTG', + { + 'description' => 'ASPECT{Toggle}', + 'name' => 'asctg' + }, + 'CDPCD', + { + 'description' => 'CD CHAIN REPEAT', + 'name' => 'cdpcd' + }, + 'MSPUP', + { + 'description' => 'MULTI SPEED UP', + 'name' => 'mspup' + }, + 'MSPDN', + { + 'description' => 'MULTI SPEED DOWN', + 'name' => 'mspdn' + }, + 'PCT', + { + 'description' => 'PICTURE CONTROL', + 'name' => 'pct' + }, + 'RSCTG', + { + 'description' => 'RESOLUTION{Toggle}', + 'name' => 'rsctg' + }, + 'INIT', + { + 'description' => 'Return to Factory Settings', + 'name' => 'init' + } + } + }, + 'CMD', + { + 'description' => 'MD Recorder Operation Command', + 'name' => 'md-recorder', + 'values' => { + 'POWER', + { + 'description' => 'POWER ON/OFF', + 'name' => 'power' + }, + 'PLAY', + { 'description' => 'PLAY', 'name' => 'play' }, + 'STOP', + { 'description' => 'STOP', 'name' => 'stop' }, + 'FF', + { 'description' => 'FF >>', 'name' => 'ff' }, + 'REW', + { 'description' => 'REW <<', 'name' => 'rew' }, + 'P.MODE', + { + 'description' => 'PLAY MODE', + 'name' => 'p-mode' + }, + 'SKIP.F', + { 'description' => '>>I', 'name' => 'skip-f' }, + 'SKIP.R', + { 'description' => 'I<<', 'name' => 'skip-r' }, + 'PAUSE', + { 'description' => 'PAUSE', 'name' => 'pause' }, + 'REC', + { 'description' => 'REC', 'name' => 'rec' }, + 'MEMORY', + { 'description' => 'MEMORY', 'name' => 'memory' }, + 'DISP', + { 'description' => 'DISPLAY', 'name' => 'disp' }, + 'SCROLL', + { 'description' => 'SCROLL', 'name' => 'scroll' }, + 'M.SCAN', + { + 'description' => 'MUSIC SCAN', + 'name' => 'm-scan' + }, + 'CLEAR', + { 'description' => 'CLEAR', 'name' => 'clear' }, + 'RANDOM', + { 'description' => 'RANDOM', 'name' => 'random' }, + 'REPEAT', + { 'description' => 'REPEAT', 'name' => 'repeat' }, + 'ENTER', + { 'description' => 'ENTER', 'name' => 'enter' }, + 'EJECT', + { 'description' => 'EJECT', 'name' => 'eject' }, + '1', + { 'description' => '1.0', 'name' => '1' }, + '2', + { 'description' => '2.0', 'name' => '2' }, + '3', + { 'description' => '3.0', 'name' => '3' }, + '4', + { 'description' => '4.0', 'name' => '4' }, + '5', + { 'description' => '5.0', 'name' => '5' }, + '6', + { 'description' => '6.0', 'name' => '6' }, + '7', + { 'description' => '7.0', 'name' => '7' }, + '8', + { 'description' => '8.0', 'name' => '8' }, + '9', + { 'description' => '9.0', 'name' => '9' }, + '10/0', + { 'description' => '10/0', 'name' => '10-0' }, + 'nn/nnn', + { 'description' => '--/---', 'name' => 'None' }, + 'NAME', + { 'description' => 'NAME', 'name' => 'name' }, + 'GROUP', + { 'description' => 'GROUP', 'name' => 'group' }, + 'STBY', + { 'description' => 'STANDBY', 'name' => 'stby' } + } + }, + 'CCR', + { + 'description' => 'CD Recorder Operation Command', + 'name' => 'cd-recorder', + 'values' => { + 'POWER', + { + 'description' => 'POWER ON/OFF', + 'name' => 'power' + }, + 'P.MODE', + { + 'description' => 'PLAY MODE', + 'name' => 'p-mode' + }, + 'PLAY', + { 'description' => 'PLAY', 'name' => 'play' }, + 'STOP', + { 'description' => 'STOP', 'name' => 'stop' }, + 'SKIP.F', + { 'description' => '>>I', 'name' => 'skip-f' }, + 'SKIP.R', + { 'description' => 'I<<', 'name' => 'skip-r' }, + 'PAUSE', + { 'description' => 'PAUSE', 'name' => 'pause' }, + 'REC', + { 'description' => 'REC', 'name' => 'rec' }, + 'CLEAR', + { 'description' => 'CLEAR', 'name' => 'clear' }, + 'REPEAT', + { 'description' => 'REPEAT', 'name' => 'repeat' }, + '1', + { 'description' => '1.0', 'name' => '1' }, + '2', + { 'description' => '2.0', 'name' => '2' }, + '3', + { 'description' => '3.0', 'name' => '3' }, + '4', + { 'description' => '4.0', 'name' => '4' }, + '5', + { 'description' => '5.0', 'name' => '5' }, + '6', + { 'description' => '6.0', 'name' => '6' }, + '7', + { 'description' => '7.0', 'name' => '7' }, + '8', + { 'description' => '8.0', 'name' => '8' }, + '9', + { 'description' => '9.0', 'name' => '9' }, + '10/0', + { 'description' => '10/0', 'name' => '10-0' }, + 'nn/nnn', + { 'description' => '--/---', 'name' => 'None' }, + 'SCROLL', + { 'description' => 'SCROLL', 'name' => 'scroll' }, + 'OP/CL', + { + 'description' => 'OPEN/CLOSE', + 'name' => 'op-cl' + }, + 'DISP', + { 'description' => 'DISPLAY', 'name' => 'disp' }, + 'RANDOM', + { 'description' => 'RANDOM', 'name' => 'random' }, + 'MEMORY', + { 'description' => 'MEMORY', 'name' => 'memory' }, + 'FF', + { 'description' => 'FF', 'name' => 'ff' }, + 'REW', + { 'description' => 'REW', 'name' => 'rew' }, + 'STBY', + { 'description' => 'STANDBY', 'name' => 'stby' } + } + }, + 'CPT', + { + 'description' => 'Universal PORT Operation Command', + 'name' => 'universal-port', + 'values' => { + 'SETUP', + { 'description' => 'SETUP', 'name' => 'setup' }, + 'UP', + { 'description' => 'UP/Tuning Up', 'name' => 'up' }, + 'DOWN', + { + 'description' => 'DOWN/Tuning Down', + 'name' => 'down' + }, + 'LEFT', + { + 'description' => 'LEFT/Multicast Down', + 'name' => 'left' + }, + 'RIGHT', + { + 'description' => 'RIGHT/Multicast Up', + 'name' => 'right' + }, + 'ENTER', + { 'description' => 'ENTER', 'name' => 'enter' }, + 'RETURN', + { 'description' => 'RETURN', 'name' => 'return' }, + 'DISP', + { 'description' => 'DISPLAY', 'name' => 'disp' }, + 'PLAY', + { 'description' => 'PLAY/BAND', 'name' => 'play' }, + 'STOP', + { 'description' => 'STOP', 'name' => 'stop' }, + 'PAUSE', + { 'description' => 'PAUSE', 'name' => 'pause' }, + 'SKIP.F', + { 'description' => '>>I', 'name' => 'skip-f' }, + 'SKIP.R', + { 'description' => 'I<<', 'name' => 'skip-r' }, + 'FF', + { 'description' => 'FF >>', 'name' => 'ff' }, + 'REW', + { 'description' => 'REW <<', 'name' => 'rew' }, + 'REPEAT', + { 'description' => 'REPEAT', 'name' => 'repeat' }, + 'SHUFFLE', + { 'description' => 'SHUFFLE', 'name' => 'shuffle' }, + 'PRSUP', + { 'description' => 'PRESET UP', 'name' => 'prsup' }, + 'PRSDN', + { + 'description' => 'PRESET DOWN', + 'name' => 'prsdn' + }, + '0', + { 'description' => '0.0', 'name' => '0' }, + '1', + { 'description' => '1.0', 'name' => '1' }, + '2', + { 'description' => '2.0', 'name' => '2' }, + '3', + { 'description' => '3.0', 'name' => '3' }, + '4', + { 'description' => '4.0', 'name' => '4' }, + '5', + { 'description' => '5.0', 'name' => '5' }, + '6', + { 'description' => '6.0', 'name' => '6' }, + '7', + { 'description' => '7.0', 'name' => '7' }, + '8', + { 'description' => '8.0', 'name' => '8' }, + '9', + { 'description' => '9.0', 'name' => '9' }, + '10', + { + 'description' => '10/+10/Direct Tuning', + 'name' => '10' + }, + 'MODE', + { 'description' => 'MODE', 'name' => 'mode' } + } + }, + 'IAT', + { + 'description' => + 'iPod Artist Name Info {Universal Port Dock Only}', + 'name' => 'ipod-artist-name-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => +'iPod Artist Name {variable-length, 64 letters max ASCII letter only}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets iPod Artist Name', + 'name' => 'query' + } + } + }, + 'IAL', + { + 'description' => + 'iPod Album Name Info {Universal Port Dock Only}', + 'name' => 'ipod-album-name-info', + 'values' => { + 'nnnnnnn', + { + 'description' => +'iPod Album Name {variable-length, 64 letters max ASCII letter only}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets iPod Album Name', + 'name' => 'query' + } + } + }, + 'ITI', + { + 'description' => 'iPod Title Name {Universal Port Dock Only}', + 'name' => 'ipod-title-name', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => +'iPod Title Name {variable-length, 64 letters max ASCII letter only}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets iPod Title Name', + 'name' => 'query' + } + } + }, + 'ITM', + { + 'description' => 'iPod Time Info {Universal Port Dock Only}', + 'name' => 'ipod-time-info', + 'values' => { + 'mm:ss/mm:ss', + { + 'description' => + 'iPod Time Info {Elapsed time/Track Time Max 99:59}', + 'name' => 'mm-ss-mm-ss' + }, + 'QSTN', + { + 'description' => 'gets iPod Time Info', + 'name' => 'query' + } + } + }, + 'ITR', + { + 'description' => 'iPod Track Info {Universal Port Dock Only}', + 'name' => 'ipod-track-info', + 'values' => { + 'cccc/tttt', + { + 'description' => +'iPod Track Info {Current Track/Toral Track Max 9999}', + 'name' => 'cccc-tttt' + }, + 'QSTN', + { + 'description' => 'gets iPod Time Info', + 'name' => 'query' + } + } + }, + 'IST', + { + 'description' => 'iPod Play Status {Universal Port Dock Only}', + 'name' => 'ipod-play-status', + 'values' => { + 'prs', + { + 'description' => +'iPod Play Status {3 letters}\np -> Play Status "S" STOP, "P" Play, "p" Pause, "F" FF, "R" FR\nr -> Repeat Status "-" no Repeat, "R" All Repeat, "1" Repeat 1,\ns -> Shuffle Status "-" no Shuffle, "S" Shuffle, "A" Album Shuffle', + 'name' => 'prs' + }, + 'QSTN', + { + 'description' => 'gets the iPod Play Status', + 'name' => 'query' + } + } + }, + 'ILS', + { + 'description' => + 'iPod List Info {Universal Port Dock Extend Mode Only}', + 'name' => 'ipod-list-info', + 'values' => { + 'tlpnnnnnnnnnn', + { + 'description' => +'iPod List Info\nt ->Information Type {A : ASCII letter, C : Cursor Info}\nwhen t = A,\n l ->Line Info {0-9 : 1st to 10th Line}\n nnnnnnnnn:Listed data {variable-length, 64 letters max ASCII letter only}\n p ->Property {- : no}\nwhen t = C,\n l ->Cursor Position {0-9 : 1st to 10th Line, - : No Cursor}\n p ->Update Type {P : Page Infomation Update { Page Clear or Disable List Info} , C : Cursor Position Update}', + 'name' => 'None' + } + } + }, + 'IMD', + { + 'description' => 'iPod Mode Change {Universal Port Dock Only}', + 'name' => 'ipod-mode-change', + 'values' => { + 'STD', + { + 'description' => 'Standerd Mode', + 'name' => 'std' + }, + 'EXT', + { + 'description' => 'Extend Mode{If available}', + 'name' => 'ext' + }, + 'VDC', + { + 'description' => 'Video Contents in Extended Mode', + 'name' => 'vdc' + }, + 'QSTN', + { + 'description' => 'gets iPod Mode Status', + 'name' => 'query' + } + } + }, + 'UTN', + { + 'description' => 'Tuning Command {Universal Port Dock Only}', + 'name' => 'tuning', + 'values' => { + 'nnnnn', + { + 'description' => +'sets Directly Tuning Frequency {FM nnn.nn MHz / AM nnnnn kHz}', + 'name' => 'None' + }, + 'UP', + { + 'description' => 'sets Tuning Frequency Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets Tuning Frequency Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Tuning Frequency', + 'name' => 'query' + } + } + }, + 'UPR', + { + 'description' => + 'DAB Preset Command {Universal Port Dock Only}', + 'name' => 'dab-preset', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + }, + 'UP', + { + 'description' => 'sets Preset No. Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets Preset No. Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Preset No.', + 'name' => 'query' + } + } + }, + 'UPM', + { + 'description' => + 'Preset Memory Command {Universal Port Dock Only}', + 'name' => 'preset-memory', + 'values' => { + '{1,40}', + { + 'description' => +'Memory Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'None' + } + } + }, + 'UHP', + { + 'description' => + 'HD Radio Channel Program Command {Universal Port Dock Only}', + 'name' => 'hd-radio-channel-program', + 'values' => { + '{1,8}', + { + 'description' => + 'sets directly HD Radio Channel Program', + 'name' => 'directly' + }, + 'QSTN', + { + 'description' => 'gets HD Radio Channel Program', + 'name' => 'query' + } + } + }, + 'UHB', + { + 'description' => + 'HD Radio Blend Mode Command {Universal Port Dock Only}', + 'name' => 'hd-radio-blend-mode', + 'values' => { + '00', + { + 'description' => 'sets HD Radio Blend Mode "Auto"', + 'name' => 'auto' + }, + '01', + { + 'description' => 'sets HD Radio Blend Mode "Analog"', + 'name' => 'analog' + }, + 'QSTN', + { + 'description' => 'gets the HD Radio Blend Mode Status', + 'name' => 'query' + } + } + }, + 'UHA', + { + 'description' => + 'HD Radio Artist Name Info {Universal Port Dock Only}', + 'name' => 'hd-radio-artist-name-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => +'HD Radio Artist Name {variable-length, 64 letters max}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets HD Radio Artist Name', + 'name' => 'query' + } + } + }, + 'UHC', + { + 'description' => + 'HD Radio Channel Name Info {Universal Port Dock Only}', + 'name' => 'hd-radio-channel-name-info', + 'values' => { + 'nnnnnnn', + { + 'description' => + 'HD Radio Channel Name {Station Name} {7lettters}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets HD Radio Channel Name', + 'name' => 'query' + } + } + }, + 'UHT', + { + 'description' => + 'HD Radio Title Info {Universal Port Dock Only}', + 'name' => 'hd-radio-title-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => + 'HD Radio Title {variable-length, 64 letters max}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets HD Radio Title', + 'name' => 'query' + } + } + }, + 'UHD', + { + 'description' => + 'HD Radio Detail Info {Universal Port Dock Only}', + 'name' => 'hd-radio-detail-info', + 'values' => { + 'nnnnnnnnnn', + { + 'description' => 'HD Radio Title', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets HD Radio Title', + 'name' => 'query' + } + } + }, + 'UHS', + { + 'description' => + 'HD Radio Tuner Status {Universal Port Dock Only}', + 'name' => 'hd-radio-tuner-status', + 'values' => { + 'mmnnoo', + { + 'description' => +'HD Radio Tuner Status {3 bytes}\nmm -> "00" not HD, "01" HD\nnn -> current Program "01"-"08"\noo -> receivable Program {8 bits are represented in hexadecimal notation. Each bit shows receivable or not.}', + 'name' => 'mmnnoo' + }, + 'QSTN', + { + 'description' => 'gets the HD Radio Tuner Status', + 'name' => 'query' + } + } + }, + 'UDS', + { + 'description' => 'DAB Station Name {Universal Port Dock Only}', + 'name' => 'dab-station-name', + 'values' => { + 'nnnnnnnnn', + { + 'description' => 'Sation Name {9 letters}', + 'name' => 'None' + }, + 'QSTN', + { + 'description' => 'gets The Tuning Frequency', + 'name' => 'query' + } + } + }, + 'UDD', + { + 'description' => 'DAB Display Info {Universal Port Dock Only}', + 'name' => 'dab-display-info', + 'values' => { + 'PT:nnnnnnnn', + { + 'description' => 'DAB Program Type {8 letters}', + 'name' => 'None' + }, + 'AT:mmmkbps/nnnnnn', + { + 'description' => +'DAB Bitrate & Audio Type {m:Bitrate xxxkbps,n:Audio Type Stereo/Mono}', + 'name' => 'None' + }, + 'MN:nnnnnnnnn', + { + 'description' => 'DAB Multiplex Name {9 letters}', + 'name' => 'None' + }, + 'MF:mmm/nnnn.nnMHz', + { + 'description' => + 'DAB Multiplex Band ID{mmm} & Freq{nnnn.nnMHz} Info', + 'name' => 'None' + }, + 'PT', + { + 'description' => 'gets & display DAB Program Info', + 'name' => 'pt' + }, + 'AT', + { + 'description' => + 'gets & display DAB Bitrate & Audio Type', + 'name' => 'at' + }, + 'MN', + { + 'description' => 'gets & display DAB Multicast Name', + 'name' => 'mn' + }, + 'MF', + { + 'description' => + 'gets & display DAB Multicast Band & Freq Info', + 'name' => 'mf' + }, + 'UP', + { + 'description' => + 'gets & dispaly DAB Infomation Wrap-Around Up', + 'name' => 'up' + } + } + } + }, + 'zone2' => { + 'ZPW', + { + 'description' => 'Zone2 Power Command', + 'name' => 'power', + 'values' => { + '00', + { + 'description' => 'sets Zone2 Standby', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Zone2 On', + 'name' => 'on' + }, + 'QSTN', + { + 'description' => 'gets the Zone2 Power Status', + 'name' => 'query' + } + } + }, + 'ZMT', + { + 'description' => 'Zone2 Muting Command', + 'name' => 'mute', + 'values' => { + '00', + { + 'description' => 'sets Zone2 Muting Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Zone2 Muting On', + 'name' => 'on' + }, + 'TG', + { + 'description' => 'sets Zone2 Muting Wrap-Around', + 'name' => 'toggle' + }, + 'QSTN', + { + 'description' => 'gets the Zone2 Muting Status', + 'name' => 'query' + } + } + }, + 'ZVL', + { + 'description' => 'Zone2 Volume Command', + 'name' => 'volume', + 'values' => { + '{0,100}', + { + 'description' => + 'Volume Level 0 100 { In hexadecimal representation}', + 'name' => 'None' + }, + '{0,80}', + { + 'description' => + 'Volume Level 0 80 { In hexadecimal representation}', + 'name' => 'None' + }, + 'UP', + { + 'description' => 'sets Volume Level Up', + 'name' => 'level-up' + }, + 'DOWN', + { + 'description' => 'sets Volume Level Down', + 'name' => 'level-down' + }, + 'QSTN', + { + 'description' => 'gets the Volume Level', + 'name' => 'query' + } + } + }, + 'ZTN', + { + 'description' => 'Zone2 Tone Command', + 'name' => 'tone', + 'values' => { + 'B{xx}', + { + 'description' => +'sets Zone2 Bass {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 'bass-xx-is-a-00-a-10-0-10-2-step' + }, + 'T{xx}', + { + 'description' => +'sets Zone2 Treble {xx is "-A"..."00"..."+A"[-10...0...+10 2 step]', + 'name' => 'treble-xx-is-a-00-a-10-0-10-2-step' + }, + 'BUP', + { + 'description' => 'sets Bass Up {2 Step}', + 'name' => 'bass-up' + }, + 'BDOWN', + { + 'description' => 'sets Bass Down {2 Step}', + 'name' => 'bass-down' + }, + 'TUP', + { + 'description' => 'sets Treble Up {2 Step}', + 'name' => 'treble-up' + }, + 'TDOWN', + { + 'description' => 'sets Treble Down {2 Step}', + 'name' => 'treble-down' + }, + 'QSTN', + { + 'description' => 'gets Zone2 Tone {"BxxTxx"}', + 'name' => 'query' + } + } + }, + 'ZBL', + { + 'description' => 'Zone2 Balance Command', + 'name' => 'balance', + 'values' => { + '{xx}', + { + 'description' => +'sets Zone2 Balance {xx is "-A"..."00"..."+A"[L+10...0...R+10 2 step]', + 'name' => 'xx-is-a-00-a-l-10-0-r-10-2-step' + }, + 'UP', + { + 'description' => 'sets Balance Up {to R 2 Step}', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets Balance Down {to L 2 Step}', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets Zone2 Balance', + 'name' => 'query' + } + } + }, + 'SLZ', + { + 'description' => 'ZONE2 Selector Command', + 'name' => 'input', + 'values' => { + '00', + { + 'description' => 'sets VIDEO1, VCR/DVR', + 'name' => [ 'video1', 'vcr', 'dvr' ] + }, + '01', + { + 'description' => 'sets VIDEO2, CBL/SAT', + 'name' => [ 'video2', 'cbl', 'sat' ] + }, + '02', + { + 'description' => 'sets VIDEO3, GAME/TV, GAME', + 'name' => [ 'video3', 'game' ] + }, + '03', + { + 'description' => 'sets VIDEO4, AUX1{AUX}', + 'name' => [ 'video4', 'aux1' ] + }, + '04', + { + 'description' => 'sets VIDEO5, AUX2', + 'name' => [ 'video5', 'aux2' ] + }, + '05', + { + 'description' => 'sets VIDEO6, PC', + 'name' => [ 'video6', 'pc' ] + }, + '06', + { + 'description' => 'sets VIDEO7', + 'name' => 'video7' + }, + '07', + { + 'description' => 'sets Hidden1', + 'name' => 'hidden1' + }, + '08', + { + 'description' => 'sets Hidden2', + 'name' => 'hidden2' + }, + '09', + { + 'description' => 'sets Hidden3', + 'name' => 'hidden3' + }, + '10', + { + 'description' => 'sets DVD, BD/DVD', + 'name' => [ 'dvd', 'bd', 'dvd' ] + }, + '20', + { + 'description' => 'sets TAPE{1}', + 'name' => 'tape' + }, + '21', + { + 'description' => 'sets TAPE2', + 'name' => 'tape2' + }, + '22', + { + 'description' => 'sets PHONO', + 'name' => 'phono' + }, + '23', + { + 'description' => 'sets CD, TV/CD', + 'name' => [ 'tv-cd', 'tv', 'cd' ] + }, + '24', + { 'description' => 'sets FM', 'name' => 'fm' }, + '25', + { 'description' => 'sets AM', 'name' => 'am' }, + '26', + { + 'description' => 'sets TUNER', + 'name' => 'tuner' + }, + '27', + { + 'description' => 'sets MUSIC SERVER, P4S, DLNA', + 'name' => [ 'music-server', 'p4s', 'dlna' ] + }, + '28', + { + 'description' => 'sets INTERNET RADIO, iRadio Favorite', + 'name' => [ 'internet-radio', 'iradio-favorite' ] + }, + '29', + { + 'description' => 'sets USB/USB{Front}', + 'name' => ['usb'] + }, + '2A', + { + 'description' => 'sets USB{Rear}', + 'name' => 'usb-rear' + }, + '2B', + { + 'description' => 'sets NETWORK, NET', + 'name' => [ 'network', 'net' ] + }, + '2C', + { + 'description' => 'sets USB{toggle}', + 'name' => 'usb-toggle' + }, + '40', + { + 'description' => 'sets Universal PORT', + 'name' => 'universal-port' + }, + '30', + { + 'description' => 'sets MULTI CH', + 'name' => 'multi-ch' + }, + '31', + { 'description' => 'sets XM', 'name' => 'xm' }, + '32', + { + 'description' => 'sets SIRIUS', + 'name' => 'sirius' + }, + '7F', + { 'description' => 'sets OFF', 'name' => 'off' }, + '80', + { + 'description' => 'sets SOURCE', + 'name' => 'source' + }, + 'UP', + { + 'description' => + 'sets Selector Position Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets Selector Position Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Selector Position', + 'name' => 'query' + } + } + }, + 'TUN', + { + 'description' => 'Tuning Command', + 'name' => 'tuning', + 'values' => { + 'nnnnn', + { + 'description' => +'sets Directly Tuning Frequency {FM nnn.nn MHz / AM nnnnn kHz / XM nnnnn ch}', + 'name' => 'None' + }, + 'UP', + { + 'description' => 'sets Tuning Frequency Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets Tuning Frequency Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Tuning Frequency', + 'name' => 'query' + } + } + }, + 'TUZ', + { + 'description' => 'Tuning Command', + 'name' => 'tuning', + 'values' => { + 'nnnnn', + { + 'description' => +'sets Directly Tuning Frequency {FM nnn.nn MHz / AM nnnnn kHz / SR nnnnn ch}', + 'name' => 'None' + }, + 'DIRECT', + { + 'description' => 'starts/restarts Direct Tuning Mode', + 'name' => 'direct' + }, + '0', + { + 'description' => 'sets 0 in Direct Tuning Mode', + 'name' => '0-in-direct-mode' + }, + '1', + { + 'description' => 'sets 1 in Direct Tuning Mode', + 'name' => '1-in-direct-mode' + }, + '2', + { + 'description' => 'sets 2 in Direct Tuning Mode', + 'name' => '2-in-direct-mode' + }, + '3', + { + 'description' => 'sets 3 in Direct Tuning Mode', + 'name' => '3-in-direct-mode' + }, + '4', + { + 'description' => 'sets 4 in Direct Tuning Mode', + 'name' => '4-in-direct-mode' + }, + '5', + { + 'description' => 'sets 5 in Direct Tuning Mode', + 'name' => '5-in-direct-mode' + }, + '6', + { + 'description' => 'sets 6 in Direct Tuning Mode', + 'name' => '6-in-direct-mode' + }, + '7', + { + 'description' => 'sets 7 in Direct Tuning Mode', + 'name' => '7-in-direct-mode' + }, + '8', + { + 'description' => 'sets 8 in Direct Tuning Mode', + 'name' => '8-in-direct-mode' + }, + '9', + { + 'description' => 'sets 9 in Direct Tuning Mode', + 'name' => '9-in-direct-mode' + }, + 'UP', + { + 'description' => 'sets Tuning Frequency Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets Tuning Frequency Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Tuning Frequency', + 'name' => 'query' + } + } + }, + 'PRS', + { + 'description' => 'Preset Command', + 'name' => 'preset', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + }, + '{1,30}', + { + 'description' => +'sets Preset No. 1 - 30 { In hexadecimal representation}', + 'name' => 'no-1-30' + }, + 'UP', + { + 'description' => 'sets Preset No. Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets Preset No. Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Preset No.', + 'name' => 'query' + } + } + }, + 'PRZ', + { + 'description' => 'Preset Command', + 'name' => 'preset', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + }, + '{1,30}', + { + 'description' => +'sets Preset No. 1 - 30 { In hexadecimal representation}', + 'name' => 'no-1-30' + }, + 'UP', + { + 'description' => 'sets Preset No. Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets Preset No. Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Preset No.', + 'name' => 'query' + } + } + }, + 'NTC', + { + 'description' => + 'Net-Tune/Network Operation Command{Net-Tune Model Only}', + 'name' => 'net-tune-network', + 'values' => { + 'PLAYz', + { + 'description' => 'PLAY KEY', + 'name' => 'playz' + }, + 'STOPz', + { 'description' => 'STOP KEY', 'name' => 'stopz' }, + 'PAUSEz', + { + 'description' => 'PAUSE KEY', + 'name' => 'pausez' + }, + 'TRUPz', + { + 'description' => 'TRACK UP KEY', + 'name' => 'trupz' + }, + 'TRDNz', + { + 'description' => 'TRACK DOWN KEY', + 'name' => 'trdnz' + } + } + }, + 'NTZ', + { + 'description' => + 'Net-Tune/Network Operation Command{Network Model Only}', + 'name' => 'net-tune-network', + 'values' => { + 'PLAY', + { + 'description' => 'PLAY KEY', + 'name' => 'play' + }, + 'STOP', + { 'description' => 'STOP KEY', 'name' => 'stop' }, + 'PAUSE', + { 'description' => 'PAUSE KEY', 'name' => 'pause' }, + 'TRUP', + { + 'description' => 'TRACK UP KEY', + 'name' => 'trup' + }, + 'TRDN', + { + 'description' => 'TRACK DOWN KEY', + 'name' => 'trdn' + }, + 'CHUP', + { + 'description' => 'CH UP{for iRadio}', + 'name' => 'chup' + }, + 'CHDN', + { + 'description' => 'CH DOWN{for iRadio}', + 'name' => 'chdn' + }, + 'FF', + { + 'description' => + 'FF KEY {CONTINUOUS*} {for iPod 1wire}', + 'name' => 'ff' + }, + 'REW', + { + 'description' => + 'REW KEY {CONTINUOUS*} {for iPod 1wire}', + 'name' => 'rew' + }, + 'REPEAT', + { + 'description' => 'REPEAT KEY{for iPod 1wire}', + 'name' => 'repeat' + }, + 'RANDOM', + { + 'description' => 'RANDOM KEY{for iPod 1wire}', + 'name' => 'random' + }, + 'DISPLAY', + { + 'description' => 'DISPLAY KEY{for iPod 1wire}', + 'name' => 'display' + }, + 'RIGHT', + { + 'description' => 'RIGHT KEY{for iPod 1wire}', + 'name' => 'right' + }, + 'LEFT', + { + 'description' => 'LEFT KEY{for iPod 1wire}', + 'name' => 'left' + }, + 'UP', + { + 'description' => 'UP KEY{for iPod 1wire}', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'DOWN KEY{for iPod 1wire}', + 'name' => 'down' + }, + 'SELECT', + { + 'description' => 'SELECT KEY{for iPod 1wire}', + 'name' => 'select' + }, + 'RETURN', + { + 'description' => 'RETURN KEY{for iPod 1wire}', + 'name' => 'return' + } + } + }, + 'NPZ', + { + 'description' => + 'Internet Radio Preset Command {Network Model Only}', + 'name' => 'internet-radio-preset', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + } + } + }, + 'LMZ', + { + 'description' => 'Listening Mode Command', + 'name' => 'listening-mode', + 'values' => { + '00', + { + 'description' => 'sets STEREO', + 'name' => 'stereo' + }, + '01', + { + 'description' => 'sets DIRECT', + 'name' => 'direct' + }, + '0F', + { 'description' => 'sets MONO', 'name' => 'mono' }, + '12', + { + 'description' => 'sets MULTIPLEX', + 'name' => 'multiplex' + }, + '87', + { + 'description' => 'sets DVS{Pl2}', + 'name' => 'dvs' + }, + '88', + { + 'description' => 'sets DVS{NEO6}', + 'name' => 'dvs' + } + } + }, + 'LTZ', + { + 'description' => 'Late Night Command', + 'name' => 'late-night', + 'values' => { + '00', + { + 'description' => 'sets Late Night Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Late Night Low', + 'name' => 'low' + }, + '02', + { + 'description' => 'sets Late Night High', + 'name' => 'high' + }, + 'UP', + { + 'description' => 'sets Late Night State Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets The Late Night Level', + 'name' => 'query' + } + } + }, + 'RAZ', + { + 'description' => 'Re-EQ/Academy Filter Command', + 'name' => 're-eq-academy-filter', + 'values' => { + '00', + { + 'description' => 'sets Both Off', + 'name' => 'both-off' + }, + '01', + { + 'description' => 'sets Re-EQ On', + 'name' => 'on' + }, + '02', + { + 'description' => 'sets Academy On', + 'name' => 'on' + }, + 'UP', + { + 'description' => + 'sets Re-EQ/Academy State Wrap-Around Up', + 'name' => 'up' + }, + 'QSTN', + { + 'description' => 'gets The Re-EQ/Academy State', + 'name' => 'query' + } + } + } + }, + 'zone3' => { + 'PW3', + { + 'description' => 'Zone3 Power Command', + 'name' => 'power', + 'values' => { + '00', + { + 'description' => 'sets Zone3 Standby', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Zone3 On', + 'name' => 'on' + }, + 'QSTN', + { + 'description' => 'gets the Zone3 Power Status', + 'name' => 'query' + } + } + }, + 'MT3', + { + 'description' => 'Zone3 Muting Command', + 'name' => 'mute', + 'values' => { + '00', + { + 'description' => 'sets Zone3 Muting Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Zone3 Muting On', + 'name' => 'on' + }, + 'TG', + { + 'description' => 'sets Zone3 Muting Wrap-Around', + 'name' => 'toggle' + }, + 'QSTN', + { + 'description' => 'gets the Zone3 Muting Status', + 'name' => 'query' + } + } + }, + 'VL3', + { + 'description' => 'Zone3 Volume Command', + 'name' => 'volume', + 'values' => { + '{0,100}', + { + 'description' => + 'Volume Level 0 100 { In hexadecimal representation}', + 'name' => 'None' + }, + '{0,80}', + { + 'description' => + 'Volume Level 0 80 { In hexadecimal representation}', + 'name' => 'None' + }, + 'UP', + { + 'description' => 'sets Volume Level Up', + 'name' => 'level-up' + }, + 'DOWN', + { + 'description' => 'sets Volume Level Down', + 'name' => 'level-down' + }, + 'QSTN', + { + 'description' => 'gets the Volume Level', + 'name' => 'query' + } + } + }, + 'TN3', + { + 'description' => 'Zone3 Tone Command', + 'name' => 'tone', + 'values' => { + 'B{xx}', + { + 'description' => +'Zone3 Bass {xx is "-A"..."00"..."+A"[-10...0...+10 2 step}', + 'name' => 'b-xx' + }, + 'T{xx}', + { + 'description' => +'Zone3 Treble {xx is "-A"..."00"..."+A"[-10...0...+10 2 step}', + 'name' => 't-xx' + }, + 'BUP', + { + 'description' => 'sets Bass Up {2 Step}', + 'name' => 'bass-up' + }, + 'BDOWN', + { + 'description' => 'sets Bass Down {2 Step}', + 'name' => 'bass-down' + }, + 'TUP', + { + 'description' => 'sets Treble Up {2 Step}', + 'name' => 'treble-up' + }, + 'TDOWN', + { + 'description' => 'sets Treble Down {2 Step}', + 'name' => 'treble-down' + }, + 'QSTN', + { + 'description' => 'gets Zone3 Tone {"BxxTxx"}', + 'name' => 'query' + } + } + }, + 'BL3', + { + 'description' => 'Zone3 Balance Command', + 'name' => 'balance', + 'values' => { + '{xx}', + { + 'description' => +'Zone3 Balance {xx is "-A"..."00"..."+A"[L+10...0...R+10 2 step}', + 'name' => 'xx' + }, + 'UP', + { + 'description' => 'sets Balance Up {to R 2 Step}', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets Balance Down {to L 2 Step}', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets Zone3 Balance', + 'name' => 'query' + } + } + }, + 'SL3', + { + 'description' => 'ZONE3 Selector Command', + 'name' => 'input', + 'values' => { + '00', + { + 'description' => 'sets VIDEO1, VCR/DVR', + 'name' => [ 'video1', 'vcr', 'dvr' ] + }, + '01', + { + 'description' => 'sets VIDEO2, CBL/SAT', + 'name' => [ 'video2', 'cbl', 'sat' ] + }, + '02', + { + 'description' => 'sets VIDEO3, GAME/TV, GAME', + 'name' => [ 'video3', 'game' ] + }, + '03', + { + 'description' => 'sets VIDEO4, AUX1{AUX}', + 'name' => [ 'video4', 'aux1' ] + }, + '04', + { + 'description' => 'sets VIDEO5, AUX2', + 'name' => [ 'video5', 'aux2' ] + }, + '05', + { + 'description' => 'sets VIDEO6, PC', + 'name' => [ 'video6', 'pc' ] + }, + '06', + { + 'description' => 'sets VIDEO7', + 'name' => 'video7' + }, + '07', + { + 'description' => 'sets Hidden1', + 'name' => 'hidden1' + }, + '08', + { + 'description' => 'sets Hidden2', + 'name' => 'hidden2' + }, + '09', + { + 'description' => 'sets Hidden3', + 'name' => 'hidden3' + }, + '10', + { 'description' => 'sets DVD', 'name' => 'dvd' }, + '20', + { + 'description' => 'sets TAPE{1}', + 'name' => 'tape' + }, + '21', + { + 'description' => 'sets TAPE2', + 'name' => 'tape2' + }, + '22', + { + 'description' => 'sets PHONO', + 'name' => 'phono' + }, + '23', + { + 'description' => 'sets CD, TV/CD', + 'name' => [ 'tv-cd', 'tv', 'cd' ] + }, + '24', + { 'description' => 'sets FM', 'name' => 'fm' }, + '25', + { 'description' => 'sets AM', 'name' => 'am' }, + '26', + { + 'description' => 'sets TUNER', + 'name' => 'tuner' + }, + '27', + { + 'description' => 'sets MUSIC SERVER, P4S, DLNA', + 'name' => [ 'music-server', 'p4s', 'dlna' ] + }, + '28', + { + 'description' => 'sets INTERNET RADIO, iRadio Favorite', + 'name' => [ 'internet-radio', 'iradio-favorite' ] + }, + '29', + { + 'description' => 'sets USB/USB{Front}', + 'name' => ['usb'] + }, + '2A', + { + 'description' => 'sets USB{Rear}', + 'name' => 'usb-rear' + }, + '2B', + { + 'description' => 'sets NETWORK, NET', + 'name' => [ 'network', 'net' ] + }, + '2C', + { + 'description' => 'sets USB{toggle}', + 'name' => 'usb-toggle' + }, + '40', + { + 'description' => 'sets Universal PORT', + 'name' => 'universal-port' + }, + '30', + { + 'description' => 'sets MULTI CH', + 'name' => 'multi-ch' + }, + '31', + { 'description' => 'sets XM', 'name' => 'xm' }, + '32', + { + 'description' => 'sets SIRIUS', + 'name' => 'sirius' + }, + '80', + { + 'description' => 'sets SOURCE', + 'name' => 'source' + }, + 'UP', + { + 'description' => + 'sets Selector Position Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets Selector Position Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Selector Position', + 'name' => 'query' + } + } + }, + 'TUN', + { + 'description' => 'Tuning Command', + 'name' => 'tuning', + 'values' => { + 'nnnnn', + { + 'description' => +'sets Directly Tuning Frequency {FM nnn.nn MHz / AM nnnnn kHz}', + 'name' => 'None' + }, + 'UP', + { + 'description' => 'sets Tuning Frequency Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets Tuning Frequency Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Tuning Frequency', + 'name' => 'query' + } + } + }, + 'TU3', + { + 'description' => 'Tuning Command', + 'name' => 'tuning', + 'values' => { + 'nnnnn', + { + 'description' => +'sets Directly Tuning Frequency {FM nnn.nn MHz / AM nnnnn kHz / SR nnnnn ch}', + 'name' => 'None' + }, + 'DIRECT', + { + 'description' => 'starts/restarts Direct Tuning Mode', + 'name' => 'direct' + }, + '0', + { + 'description' => 'sets 0 in Direct Tuning Mode', + 'name' => '0-in-direct-mode' + }, + '1', + { + 'description' => 'sets 1 in Direct Tuning Mode', + 'name' => '1-in-direct-mode' + }, + '2', + { + 'description' => 'sets 2 in Direct Tuning Mode', + 'name' => '2-in-direct-mode' + }, + '3', + { + 'description' => 'sets 3 in Direct Tuning Mode', + 'name' => '3-in-direct-mode' + }, + '4', + { + 'description' => 'sets 4 in Direct Tuning Mode', + 'name' => '4-in-direct-mode' + }, + '5', + { + 'description' => 'sets 5 in Direct Tuning Mode', + 'name' => '5-in-direct-mode' + }, + '6', + { + 'description' => 'sets 6 in Direct Tuning Mode', + 'name' => '6-in-direct-mode' + }, + '7', + { + 'description' => 'sets 7 in Direct Tuning Mode', + 'name' => '7-in-direct-mode' + }, + '8', + { + 'description' => 'sets 8 in Direct Tuning Mode', + 'name' => '8-in-direct-mode' + }, + '9', + { + 'description' => 'sets 9 in Direct Tuning Mode', + 'name' => '9-in-direct-mode' + }, + 'UP', + { + 'description' => 'sets Tuning Frequency Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets Tuning Frequency Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Tuning Frequency', + 'name' => 'query' + } + } + }, + 'PRS', + { + 'description' => 'Preset Command', + 'name' => 'preset', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + }, + '{1,30}', + { + 'description' => +'sets Preset No. 1 - 30 { In hexadecimal representation}', + 'name' => 'no-1-30' + }, + 'UP', + { + 'description' => 'sets Preset No. Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets Preset No. Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Preset No.', + 'name' => 'query' + } + } + }, + 'PR3', + { + 'description' => 'Preset Command', + 'name' => 'preset', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + }, + '{1,30}', + { + 'description' => +'sets Preset No. 1 - 30 { In hexadecimal representation}', + 'name' => 'no-1-30' + }, + 'UP', + { + 'description' => 'sets Preset No. Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets Preset No. Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Preset No.', + 'name' => 'query' + } + } + }, + 'NTC', + { + 'description' => + 'Net-Tune/Network Operation Command{Net-Tune Model Only}', + 'name' => 'net-tune-network', + 'values' => { + 'PLAYz', + { + 'description' => 'PLAY KEY', + 'name' => 'playz' + }, + 'STOPz', + { 'description' => 'STOP KEY', 'name' => 'stopz' }, + 'PAUSEz', + { + 'description' => 'PAUSE KEY', + 'name' => 'pausez' + }, + 'TRUPz', + { + 'description' => 'TRACK UP KEY', + 'name' => 'trupz' + }, + 'TRDNz', + { + 'description' => 'TRACK DOWN KEY', + 'name' => 'trdnz' + } + } + }, + 'NT3', + { + 'description' => + 'Net-Tune/Network Operation Command{Network Model Only}', + 'name' => 'net-tune-network', + 'values' => { + 'PLAY', + { + 'description' => 'PLAY KEY', + 'name' => 'play' + }, + 'STOP', + { 'description' => 'STOP KEY', 'name' => 'stop' }, + 'PAUSE', + { 'description' => 'PAUSE KEY', 'name' => 'pause' }, + 'TRUP', + { + 'description' => 'TRACK UP KEY', + 'name' => 'trup' + }, + 'TRDN', + { + 'description' => 'TRACK DOWN KEY', + 'name' => 'trdn' + }, + 'CHUP', + { + 'description' => 'CH UP{for iRadio}', + 'name' => 'chup' + }, + 'CHDN', + { + 'description' => 'CH DOWNP{for iRadio}', + 'name' => 'chdn' + }, + 'FF', + { + 'description' => + 'FF KEY {CONTINUOUS*} {for iPod 1wire}', + 'name' => 'ff' + }, + 'REW', + { + 'description' => + 'REW KEY {CONTINUOUS*} {for iPod 1wire}', + 'name' => 'rew' + }, + 'REPEAT', + { + 'description' => 'REPEAT KEY{for iPod 1wire}', + 'name' => 'repeat' + }, + 'RANDOM', + { + 'description' => 'RANDOM KEY{for iPod 1wire}', + 'name' => 'random' + }, + 'DISPLAY', + { + 'description' => 'DISPLAY KEY{for iPod 1wire}', + 'name' => 'display' + }, + 'RIGHT', + { + 'description' => 'RIGHT KEY{for iPod 1wire}', + 'name' => 'right' + }, + 'LEFT', + { + 'description' => 'LEFT KEY{for iPod 1wire}', + 'name' => 'left' + }, + 'UP', + { + 'description' => 'UP KEY{for iPod 1wire}', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'DOWN KEY{for iPod 1wire}', + 'name' => 'down' + }, + 'SELECT', + { + 'description' => 'SELECT KEY{for iPod 1wire}', + 'name' => 'select' + }, + 'RETURN', + { + 'description' => 'RETURN KEY{for iPod 1wire}', + 'name' => 'return' + } + } + }, + 'NP3', + { + 'description' => + 'Internet Radio Preset Command {Network Model Only}', + 'name' => 'internet-radio-preset', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + } + } + } + }, + 'zone4' => { + 'PW4', + { + 'description' => 'Zone4 Power Command', + 'name' => 'power', + 'values' => { + '00', + { + 'description' => 'sets Zone4 Standby', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Zone4 On', + 'name' => 'on' + }, + 'QSTN', + { + 'description' => 'gets the Zone4 Power Status', + 'name' => 'query' + } + } + }, + 'MT4', + { + 'description' => 'Zone4 Muting Command', + 'name' => 'mute', + 'values' => { + '00', + { + 'description' => 'sets Zone4 Muting Off', + 'name' => 'off' + }, + '01', + { + 'description' => 'sets Zone4 Muting On', + 'name' => 'on' + }, + 'TG', + { + 'description' => 'sets Zone4 Muting Wrap-Around', + 'name' => 'toggle' + }, + 'QSTN', + { + 'description' => 'gets the Zone4 Muting Status', + 'name' => 'query' + } + } + }, + 'VL4', + { + 'description' => 'Zone4 Volume Command', + 'name' => 'volume', + 'values' => { + '{0,100}', + { + 'description' => + 'Volume Level 0 100 { In hexadecimal representation}', + 'name' => 'None' + }, + '{0,80}', + { + 'description' => + 'Volume Level 0 80 { In hexadecimal representation}', + 'name' => 'None' + }, + 'UP', + { + 'description' => 'sets Volume Level Up', + 'name' => 'level-up' + }, + 'DOWN', + { + 'description' => 'sets Volume Level Down', + 'name' => 'level-down' + }, + 'QSTN', + { + 'description' => 'gets the Volume Level', + 'name' => 'query' + } + } + }, + 'SL4', + { + 'description' => 'ZONE4 Selector Command', + 'name' => 'input', + 'values' => { + '00', + { + 'description' => 'sets VIDEO1, VCR/DVR', + 'name' => [ 'video1', 'vcr', 'dvr' ] + }, + '01', + { + 'description' => 'sets VIDEO2, CBL/SAT', + 'name' => [ 'video2', 'cbl', 'sat' ] + }, + '02', + { + 'description' => 'sets VIDEO3, GAME/TV, GAME', + 'name' => [ 'video3', 'game' ] + }, + '03', + { + 'description' => 'sets VIDEO4, AUX1{AUX}', + 'name' => [ 'video4', 'aux1' ] + }, + '04', + { + 'description' => 'sets VIDEO5, AUX2', + 'name' => [ 'video5', 'aux2' ] + }, + '05', + { + 'description' => 'sets VIDEO6', + 'name' => 'video6' + }, + '06', + { + 'description' => 'sets VIDEO7', + 'name' => 'video7' + }, + '07', + { + 'description' => 'sets Hidden1', + 'name' => 'hidden1' + }, + '08', + { + 'description' => 'sets Hidden2', + 'name' => 'hidden2' + }, + '09', + { + 'description' => 'sets Hidden3', + 'name' => 'hidden3' + }, + '10', + { 'description' => 'sets DVD', 'name' => 'dvd' }, + '20', + { + 'description' => 'sets TAPE{1}, TV/TAPE', + 'name' => [ 'tape-1', 'tv', 'tape' ] + }, + '21', + { + 'description' => 'sets TAPE2', + 'name' => 'tape2' + }, + '22', + { + 'description' => 'sets PHONO', + 'name' => 'phono' + }, + '23', + { + 'description' => 'sets CD, TV/CD', + 'name' => [ 'tv-cd', 'tv', 'cd' ] + }, + '24', + { 'description' => 'sets FM', 'name' => 'fm' }, + '25', + { 'description' => 'sets AM', 'name' => 'am' }, + '26', + { + 'description' => 'sets TUNER', + 'name' => 'tuner' + }, + '27', + { + 'description' => 'sets MUSIC SERVER, P4S, DLNA', + 'name' => [ 'music-server', 'p4s', 'dlna' ] + }, + '28', + { + 'description' => 'sets INTERNET RADIO, iRadio Favorite', + 'name' => [ 'internet-radio', 'iradio-favorite' ] + }, + '29', + { + 'description' => 'sets USB/USB{Front}', + 'name' => ['usb'] + }, + '2A', + { + 'description' => 'sets USB{Rear}', + 'name' => 'usb-rear' + }, + '2B', + { + 'description' => 'sets NETWORK, NET', + 'name' => [ 'network', 'net' ] + }, + '2C', + { + 'description' => 'sets USB{toggle}', + 'name' => 'usb +-toggle' + }, + '40', + { + 'description' => 'sets Universal PORT', + 'name' => 'universal-port' + }, + '30', + { + 'description' => 'sets MULTI CH', + 'name' => 'multi-ch' + }, + '31', + { 'description' => 'sets XM', 'name' => 'xm' }, + '32', + { + 'description' => 'sets SIRIUS', + 'name' => 'sirius' + }, + '80', + { + 'description' => 'sets SOURCE', + 'name' => 'source' + }, + 'UP', + { + 'description' => + 'sets Selector Position Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets Selector Position Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Selector Position', + 'name' => 'query' + } + } + }, + 'TUN', + { + 'description' => 'Tuning Command', + 'name' => 'tuning', + 'values' => { + 'nnnnn', + { + 'description' => +'sets Directly Tuning Frequency {FM nnn.nn MHz / AM nnnnn kHz}', + 'name' => 'None' + }, + 'UP', + { + 'description' => 'sets Tuning Frequency Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets Tuning Frequency Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Tuning Frequency', + 'name' => 'query' + } + } + }, + 'TU4', + { + 'description' => 'Tuning Command', + 'name' => 'tuning', + 'values' => { + 'nnnnn', + { + 'description' => +'sets Directly Tuning Frequency {FM nnn.nn MHz / AM nnnnn kHz}', + 'name' => 'None' + }, + 'DIRECT', + { + 'description' => 'starts/restarts Direct Tuning Mode', + 'name' => 'direct' + }, + '0', + { + 'description' => 'sets 0 in Direct Tuning Mode', + 'name' => '0-in-direct-mode' + }, + '1', + { + 'description' => 'sets 1 in Direct Tuning Mode', + 'name' => '1-in-direct-mode' + }, + '2', + { + 'description' => 'sets 2 in Direct Tuning Mode', + 'name' => '2-in-direct-mode' + }, + '3', + { + 'description' => 'sets 3 in Direct Tuning Mode', + 'name' => '3-in-direct-mode' + }, + '4', + { + 'description' => 'sets 4 in Direct Tuning Mode', + 'name' => '4-in-direct-mode' + }, + '5', + { + 'description' => 'sets 5 in Direct Tuning Mode', + 'name' => '5-in-direct-mode' + }, + '6', + { + 'description' => 'sets 6 in Direct Tuning Mode', + 'name' => '6-in-direct-mode' + }, + '7', + { + 'description' => 'sets 7 in Direct Tuning Mode', + 'name' => '7-in-direct-mode' + }, + '8', + { + 'description' => 'sets 8 in Direct Tuning Mode', + 'name' => '8-in-direct-mode' + }, + '9', + { + 'description' => 'sets 9 in Direct Tuning Mode', + 'name' => '9-in-direct-mode' + }, + 'UP', + { + 'description' => 'sets Tuning Frequency Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => + 'sets Tuning Frequency Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Tuning Frequency', + 'name' => 'query' + } + } + }, + 'PRS', + { + 'description' => 'Preset Command', + 'name' => 'preset', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + }, + '{1,30}', + { + 'description' => +'sets Preset No. 1 - 30 { In hexadecimal representation}', + 'name' => 'no-1-30' + }, + 'UP', + { + 'description' => 'sets Preset No. Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets Preset No. Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Preset No.', + 'name' => 'query' + } + } + }, + 'PR4', + { + 'description' => 'Preset Command', + 'name' => 'preset', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + }, + '{1,30}', + { + 'description' => +'sets Preset No. 1 - 30 { In hexadecimal representation}', + 'name' => 'no-1-30' + }, + 'UP', + { + 'description' => 'sets Preset No. Wrap-Around Up', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'sets Preset No. Wrap-Around Down', + 'name' => 'down' + }, + 'QSTN', + { + 'description' => 'gets The Preset No.', + 'name' => 'query' + } + } + }, + 'NTC', + { + 'description' => + 'Net-Tune/Network Operation Command{Net-Tune Model Only}', + 'name' => 'net-tune-network', + 'values' => { + 'PLAYz', + { + 'description' => 'PLAY KEY', + 'name' => 'playz' + }, + 'STOPz', + { 'description' => 'STOP KEY', 'name' => 'stopz' }, + 'PAUSEz', + { + 'description' => 'PAUSE KEY', + 'name' => 'pausez' + }, + 'TRUPz', + { + 'description' => 'TRACK UP KEY', + 'name' => 'trupz' + }, + 'TRDNz', + { + 'description' => 'TRACK DOWN KEY', + 'name' => 'trdnz' + } + } + }, + 'NT4', + { + 'description' => + 'Net-Tune/Network Operation Command{Network Model Only}', + 'name' => 'net-tune-network', + 'values' => { + 'PLAY', + { + 'description' => 'PLAY KEY', + 'name' => 'play' + }, + 'STOP', + { 'description' => 'STOP KEY', 'name' => 'stop' }, + 'PAUSE', + { 'description' => 'PAUSE KEY', 'name' => 'pause' }, + 'TRUP', + { + 'description' => 'TRACK UP KEY', + 'name' => 'trup' + }, + 'TRDN', + { + 'description' => 'TRACK DOWN KEY', + 'name' => 'trdn' + }, + 'FF', + { + 'description' => + 'FF KEY {CONTINUOUS*} {for iPod 1wire}', + 'name' => 'ff' + }, + 'REW', + { + 'description' => + 'REW KEY {CONTINUOUS*} {for iPod 1wire}', + 'name' => 'rew' + }, + 'REPEAT', + { + 'description' => 'REPEAT KEY{for iPod 1wire}', + 'name' => 'repeat' + }, + 'RANDOM', + { + 'description' => 'RANDOM KEY{for iPod 1wire}', + 'name' => 'random' + }, + 'DISPLAY', + { + 'description' => 'DISPLAY KEY{for iPod 1wire}', + 'name' => 'display' + }, + 'RIGHT', + { + 'description' => 'RIGHT KEY{for iPod 1wire}', + 'name' => 'right' + }, + 'LEFT', + { + 'description' => 'LEFT KEY{for iPod 1wire}', + 'name' => 'left' + }, + 'UP', + { + 'description' => 'UP KEY{for iPod 1wire}', + 'name' => 'up' + }, + 'DOWN', + { + 'description' => 'DOWN KEY{for iPod 1wire}', + 'name' => 'down' + }, + 'SELECT', + { + 'description' => 'SELECT KEY{for iPod 1wire}', + 'name' => 'select' + }, + 'RETURN', + { + 'description' => 'RETURN KEY{for iPod 1wire}', + 'name' => 'return' + } + } + }, + 'NP4', + { + 'description' => + 'Internet Radio Preset Command {Network Model Only}', + 'name' => 'internet-radio-preset', + 'values' => { + '{1,40}', + { + 'description' => +'sets Preset No. 1 - 40 { In hexadecimal representation}', + 'name' => 'no-1-40' + } + } + } + }, + 'dock' => { + 'CDS', + { + 'description' => 'Command for Docking Station via RI', + 'name' => 'command-for-docking-station-via-ri', + 'values' => { + 'PWRON', + { + 'description' => 'sets Dock On', + 'name' => 'on' + }, + 'PWROFF', + { + 'description' => 'sets Dock Standby', + 'name' => 'off' + }, + 'PLY/RES', + { + 'description' => 'PLAY/RESUME Key', + 'name' => 'ply-res' + }, + 'STOP', + { 'description' => 'STOP Key', 'name' => 'stop' }, + 'SKIP.F', + { + 'description' => 'TRACK UP Key', + 'name' => 'skip-f' + }, + 'SKIP.R', + { + 'description' => 'TRACK DOWN Key', + 'name' => 'skip-r' + }, + 'PAUSE', + { 'description' => 'PAUSE Key', 'name' => 'pause' }, + 'PLY/PAU', + { + 'description' => 'PLAY/PAUSE Key', + 'name' => 'ply-pau' + }, + 'FF', + { 'description' => 'FF Key', 'name' => 'ff' }, + 'REW', + { 'description' => 'FR Key', 'name' => 'rew' }, + 'ALBUM+', + { + 'description' => 'ALBUM UP Key', + 'name' => 'album' + }, + 'ALBUM-', + { + 'description' => 'ALBUM DONW Key', + 'name' => 'album' + }, + 'PLIST+', + { + 'description' => 'PLAYLIST UP Key', + 'name' => 'plist' + }, + 'PLIST-', + { + 'description' => 'PLAYLIST DOWN Key', + 'name' => 'plist' + }, + 'CHAPT+', + { + 'description' => 'CHAPTER UP Key', + 'name' => 'chapt' + }, + 'CHAPT-', + { + 'description' => 'CHAPTER DOWN Key', + 'name' => 'chapt' + }, + 'RANDOM', + { + 'description' => 'SHUFFLE Key', + 'name' => 'random' + }, + 'REPEAT', + { + 'description' => 'REPEAT Key', + 'name' => 'repeat' + }, + 'MUTE', + { 'description' => 'MUTE Key', 'name' => 'mute' }, + 'BLIGHT', + { + 'description' => 'BACKLIGHT Key', + 'name' => 'blight' + }, + 'MENU', + { 'description' => 'MENU Key', 'name' => 'menu' }, + 'ENTER', + { + 'description' => 'SELECT Key', + 'name' => 'enter' + }, + 'UP', + { 'description' => 'CUSOR UP Key', 'name' => 'up' }, + 'DOWN', + { + 'description' => 'CURSOR DOWN Key', + 'name' => 'down' + } + } + } + } + }; + + if ( !defined($command) && defined( $commands->{$zone} ) ) { + return $commands->{$zone}; + } + elsif ( defined( $commands->{$zone}{$command} ) ) { + return $commands->{$zone}{$command}; + } + else { + return undef; + } +} + +1; + +=pod +=begin html + + +

ONKYO_AVR

+
    + + + Define +
      + define <name> ONKYO_AVR <ip-address-or-hostname> [<protocol-version>] [<zone>] [<poll-interval>] +

      + + This module controls ONKYO A/V receivers via network connection.

      + Defining an ONKYO device will schedule an internal task (interval can be set + with optional parameter <poll-interval> in seconds, if not set, the value is 75 + seconds), which periodically reads the status of the device and triggers notify/filelog commands.

      + + Example:
      +
        + define avr ONKYO_AVR 192.168.0.10 +

        + define avr ONKYO_AVR 192.168.0.10 2013     # With explicit protocol version 2013 and later +

        + define avr ONKYO_AVR 192.168.0.10 pre2013     # With protocol version prior 2013 +

        + define avr ONKYO_AVR 192.168.0.10 pre2013 zone2     # With zone2 +

        + define avr ONKYO_AVR 192.168.0.10 pre2013 main 60     # With custom interval of 60 seconds +

        + define avr ONKYO_AVR 192.168.0.10 pre2013 zone2 60     # With zone2 and custom interval of 60 seconds +
      + +
    + + + Set +
      + set <name> <command> [<parameter>] +

      + Currently, the following commands are defined (may vary depending on zone).
      +
        +
      • on   -   powers on the device
      • +
      • off   -   turns the device in standby mode
      • +
      • sleep 1..90,off   -   sets auto-turnoff after X minutes
      • +
      • toggle   -   switch between on and off
      • +
      • volume 0...100   -   set the volume level in percentage
      • +
      • volumeUp   -   increases the volume level
      • +
      • volumeDown   -   decreases the volume level
      • +
      • mute on,off   -   controls volume mute
      • +
      • input   -   switches between inputs
      • +
      • statusRequest   -   requests the current status of the device
      • +
      • remoteControl   -   sends remote control commands; see remoteControl help
      • +
      +


    + + + Get +
      + get <name> <what> +

      + Currently, the following commands are defined (may vary depending on zone):

      + +
        power
        + input
        + volume
        + mute
        + sleep
        +
      +
    + +
    + Generated Readings/Events (may vary depending on zone):
    +
      +
    • input - Shows currently used input; part of FHEM-4-AV-Devices compatibility
    • +
    • mute - Reports the mute status of the device (can be "on" or "off")
    • +
    • power - Reports the power status of the device (can be "on" or "off")
    • +
    • presence - Reports the presence status of the receiver (can be "absent" or "present"). In case of an absent device, control is not possible.
    • +
    • sleep - Reports current sleep state (can be "off" or shows timer in minutes)
    • +
    • state - Reports current power state and an absence of the device (can be "on", "off" or "absent")
    • +
    • volume - Reports current volume level of the receiver in percentage values (between 0 and 100 %)
    • +
    +
+ +=end html +=cut diff --git a/fhem/MAINTAINER.txt b/fhem/MAINTAINER.txt index 2a992b35e..f68cfa8f2 100644 --- a/fhem/MAINTAINER.txt +++ b/fhem/MAINTAINER.txt @@ -125,6 +125,7 @@ FHEM/66_ECMD.pm borisneubert http://forum.fhem.de Sonstiges FHEM/67_ECMDDevice.pm borisneubert http://forum.fhem.de Sonstiges FHEM/70_EGPM.pm alexus http://forum.fhem.de Sonstiges FHEM/70_ENIGMA2.pm loredo http://forum.fhem.de Multimedia +FHEM/70_ONKYO_AVR.pm loredo http://forum.fhem.de Multimedia FHEM/70_SCIVT.pm rudolfkoenig/orphan http://forum.fhem.de Sonstiges FHEM/70_SISPM.pm real-wusel http://forum.fhem.de Sonstiges FHEM/70_SML.pm bentele http://forum.fhem.de Sonstiges