]> git.basschouten.com Git - openhab-addons.git/commitdiff
[rotel] Other commands added for RSP-1576, RSP-1582, RAP-1580, RDD-1580, RA-1592...
authorlolodomo <lg.hc@free.fr>
Sun, 7 Aug 2022 20:50:19 +0000 (22:50 +0200)
committerGitHub <noreply@github.com>
Sun, 7 Aug 2022 20:50:19 +0000 (22:50 +0200)
Signed-off-by: Laurent Garnier <lg.hc@free.fr>
13 files changed:
bundles/org.openhab.binding.rotel/README.md
bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/RotelBindingConstants.java
bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/RotelModel.java
bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/communication/RotelCommand.java
bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/communication/RotelSimuConnector.java
bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/handler/RotelHandler.java
bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/i18n/rotel.properties
bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/ra1592.xml
bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rap1580.xml
bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rc1590.xml
bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rdd1580.xml
bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rsp1576.xml
bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rsp1582.xml

index 1a586359e083e06c07f256cae3c551698d8b53ec..cf002594e1c9f566b17fabe03b0ffb6ee44398d3 100644 (file)
@@ -191,15 +191,15 @@ Here are the list of channels available for each thing type:
 | ra12       | power, source, volume, mute, bass, treble, playControl, frequency, brightness, tcbypass, balance, otherCommand |
 | ra1570     | power, source, volume, mute, bass, treble, playControl, frequency, brightness, tcbypass, balance, speakera, speakerb, otherCommand |
 | ra1572     | power, source, volume, mute, bass, treble, frequency, brightness, tcbypass, balance, speakera, speakerb, otherCommand |
-| ra1592     | power, source, volume, mute, bass, treble, frequency, brightness, tcbypass, balance, speakera, speakerb |
-| rap1580    | power, source, dsp, volume, mute, brightness                                                            |
+| ra1592     | power, source, volume, mute, bass, treble, frequency, brightness, tcbypass, balance, speakera, speakerb, otherCommand |
+| rap1580    | power, source, dsp, volume, mute, brightness, otherCommand                                              |
 | rc1570     | power, source, volume, mute, bass, treble, playControl, frequency, brightness, tcbypass, balance, otherCommand |
 | rc1572     | power, source, volume, mute, bass, treble, frequency, brightness, tcbypass, balance, otherCommand       |
-| rc1590     | power, source, volume, mute, bass, treble, frequency, brightness, tcbypass, balance                     |
+| rc1590     | power, source, volume, mute, bass, treble, frequency, brightness, tcbypass, balance, otherCommand       |
 | rcd1570    | power, playControl, brightness                                                                          |
 | rcd1572    | power, playControl, track, random, repeat, brightness, otherCommand                                     |
 | rcx1500    | power, source, volume, mute, playControl                                                                |
-| rdd1580    | power, source, playControl, frequency                                                                   |
+| rdd1580    | power, source, playControl, frequency, otherCommand                                                     |
 | rdg1520    | power, source, playControl                                                                              |
 | rsp1066    | mainZone#power, mainZone#source, mainZone#recordSource, mainZone#dsp, mainZone#volumeUpDown, mainZone#mute, mainZone#bass, mainZone#treble, mainZone#line1, mainZone#otherCommand, zone2#power, zone2#source, zone2#volumeUpDown |
 | rsp1068    | mainZone#power, mainZone#source, mainZone#recordSource, mainZone#dsp, mainZone#volume, mainZone#mute, mainZone#bass, mainZone#treble, mainZone#line1, mainZone#line2, mainZone#otherCommand, zone2#power, zone2#source, zone2#volume, zone2#mute, zone3#power, zone3#source, zone3#volume, zone3#mute, zone4#power, zone4#source, zone4#volume, zone4#mute |
@@ -207,8 +207,8 @@ Here are the list of channels available for each thing type:
 | rsp1098    | mainZone#power, mainZone#source, mainZone#recordSource, mainZone#dsp, mainZone#volume, mainZone#mute, mainZone#bass, mainZone#treble, mainZone#line1, mainZone#otherCommand, zone2#power, zone2#source, zone2#volume, zone2#mute |
 | rsp1570    | mainZone#power, mainZone#source, mainZone#recordSource, mainZone#dsp, mainZone#volume, mainZone#mute, mainZone#bass, mainZone#treble, mainZone#line1, mainZone#line2, mainZone#otherCommand, zone2#power, zone2#source, zone2#volume, zone2#mute, zone3#power, zone3#source, zone3#volume, zone3#mute, zone4#power, zone4#source, zone4#volume, zone4#mute |
 | rsp1572    | mainZone#power, mainZone#source, mainZone#recordSource, mainZone#dsp, mainZone#volume, mainZone#mute, mainZone#line1, mainZone#line2, mainZone#otherCommand, zone2#power, zone2#source, zone2#volume, zone2#mute, zone3#power, zone3#source, zone3#volume, zone3#mute, zone4#power, zone4#source, zone4#volume, zone4#mute |
-| rsp1576    | power, source, dsp, volume, mute, brightness                                                            |
-| rsp1582    | power, source, dsp, volume, mute, brightness                                                            |
+| rsp1576    | power, source, dsp, volume, mute, brightness, otherCommand                                              |
+| rsp1582    | power, source, dsp, volume, mute, brightness, otherCommand                                              |
 | rsx1055    | mainZone#power, mainZone#source, mainZone#recordSource, mainZone#dsp, mainZone#volumeUpDown, mainZone#mute, mainZone#bass, mainZone#treble, mainZone#line1, mainZone#otherCommand, zone2#power, zone2#source, zone2#volumeUpDown |
 | rsx1056    | mainZone#power, mainZone#source, mainZone#recordSource, mainZone#dsp, mainZone#volume, mainZone#mute, mainZone#bass, mainZone#treble, mainZone#line1, mainZone#otherCommand, zone2#power, zone2#source, zone2#volume, zone2#mute |
 | rsx1057    | mainZone#power, mainZone#source, mainZone#recordSource, mainZone#dsp, mainZone#volume, mainZone#mute, mainZone#bass, mainZone#treble, mainZone#line1, mainZone#otherCommand, zone2#power, zone2#source, zone2#volume, zone2#mute |
@@ -232,27 +232,35 @@ Here are the available commands for the otherCommand channel depending on the th
 | Thing Type         | Available commands for the otherCommand channel                               |
 |--------------------|-------------------------------------------------------------------------------|
 | a11                | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK                                      |
-| a12                | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK                                      |
-| a14                | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK                                      |
+| a12                | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, PCUSB_CLASS                         |
+| a14                | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, PCUSB_CLASS                         |
 | cd11               | FAST_FWD, FAST_BACK, EJECT, TIME_TOGGLE, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0 |
 | cd14               | FAST_FWD, FAST_BACK, EJECT, TIME_TOGGLE, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0 |
 | p5                 | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK                                      |
 | ra11               | FAST_FWD, FAST_BACK, RANDOM_TOGGLE, REPEAT_TOGGLE, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0 |
 | ra12               | FAST_FWD, FAST_BACK, RANDOM_TOGGLE, REPEAT_TOGGLE, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0 |
-| ra1570             | FAST_FWD, FAST_BACK, RANDOM_TOGGLE, REPEAT_TOGGLE, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0, PCUSB_CLASS_1, PCUSB_CLASS_2 |
-| ra1572 (ASCII V1)  | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, PCUSB_CLASS_1, PCUSB_CLASS_2, RESET_FACTORY |
-| ra1572 (ASCII V2)  | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, PCUSB_CLASS_1, PCUSB_CLASS_2, RESET_FACTORY |
-| rc1570             | FAST_FWD, FAST_BACK, RANDOM_TOGGLE, REPEAT_TOGGLE, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0, PCUSB_CLASS_1, PCUSB_CLASS_2 |
-| rc1572 (ASCII V1)  | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, PCUSB_CLASS_1, PCUSB_CLASS_2, RESET_FACTORY |
-| rc1572 (ASCII V2)  | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, PCUSB_CLASS_1, PCUSB_CLASS_2, RESET_FACTORY |
+| ra1570             | FAST_FWD, FAST_BACK, RANDOM_TOGGLE, REPEAT_TOGGLE, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0, PCUSB_CLASS, PCUSB_CLASS_1, PCUSB_CLASS_2 |
+| ra1572 (ASCII V1)  | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, PCUSB_CLASS, PCUSB_CLASS_1, PCUSB_CLASS_2, POWER_MODE, RESET_FACTORY |
+| ra1572 (ASCII V2)  | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, PCUSB_CLASS, PCUSB_CLASS_1, PCUSB_CLASS_2, RESET_FACTORY |
+| ra1592 (ASCII V1)  | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, FAST_FWD, FAST_BACK, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0, PCUSB_CLASS, PCUSB_CLASS_1, PCUSB_CLASS_2, POWER_MODE, POWER_MODE_QUICK, POWER_MODE_NORMAL, RESET_FACTORY |
+| ra1592 (ASCII V2)  | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, PCUSB_CLASS, PCUSB_CLASS_1, PCUSB_CLASS_2 |
+| rap1580            | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, SUB_LEVEL_UP, SUB_LEVEL_DOWN, C_LEVEL_UP, C_LEVEL_DOWN, SR_LEVEL_UP, SR_LEVEL_DOWN, SL_LEVEL_UP, SL_LEVEL_DOWN, CBR_LEVEL_UP, CBR_LEVEL_DOWN, CBL_LEVEL_UP, CBL_LEVEL_DOWN, CFR_LEVEL_UP, CFR_LEVEL_DOWN, CFL_LEVEL_UP, CFL_LEVEL_DOWN, CRR_LEVEL_UP, CRR_LEVEL_DOWN, CRL_LEVEL_UP, CRL_LEVEL_DOWN, NEXT_MODE, RESET_FACTORY |
+| rc1570             | FAST_FWD, FAST_BACK, RANDOM_TOGGLE, REPEAT_TOGGLE, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0, PCUSB_CLASS, PCUSB_CLASS_1, PCUSB_CLASS_2 |
+| rc1572 (ASCII V1)  | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, PCUSB_CLASS, PCUSB_CLASS_1, PCUSB_CLASS_2, POWER_MODE, RESET_FACTORY |
+| rc1572 (ASCII V2)  | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, PCUSB_CLASS, PCUSB_CLASS_1, PCUSB_CLASS_2, RESET_FACTORY |
+| rc1590 (ASCII V1)  | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, FAST_FWD, FAST_BACK, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0, PCUSB_CLASS, PCUSB_CLASS_1, PCUSB_CLASS_2, POWER_MODE, POWER_MODE_QUICK, POWER_MODE_NORMAL, RESET_FACTORY |
+| rc1590 (ASCII V2)  | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, PCUSB_CLASS, PCUSB_CLASS_1, PCUSB_CLASS_2 |
 | rcd1572 (ASCII V1) | FAST_FWD, FAST_BACK, EJECT, TIME_TOGGLE, PROGRAM, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0 |
 | rcd1572 (ASCII V2) | FAST_FWD, FAST_BACK, EJECT, TIME_TOGGLE, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0 |
+| rdd1580            | RANDOM_TOGGLE, REPEAT_TOGGLE, PCUSB_CLASS, PCUSB_CLASS_1, PCUSB_CLASS_2       |
 | rsp1066            | DSP_TOGGLE, PROLOGIC_TOGGLE, DOLBY_TOGGLE, PLII_PANORAMA_TOGGLE, PLII_DIMENSION_UP, PLII_DIMENSION_DOWN, PLII_CENTER_WIDTH_UP, PLII_CENTER_WIDTH_DOWN, DDEX_TOGGLE, NEO6_TOGGLE, NEXT_MODE, MENU, UP, DOWN, LEFT, RIGHT, ENTER, RECORD_FONCTION_SELECT, TONE_CONTROL_SELECT, DYNAMIC_RANGE, DIGITAL_INPUT_SELECT, ZONE_TOGGLE, CENTER_TRIM, SUB_TRIM, SURROUND_TRIM, CINEMA_EQ_TOGGLE |
 | rsp1068            | DSP_TOGGLE, PROLOGIC_TOGGLE, DOLBY_TOGGLE, PLII_PANORAMA_TOGGLE, PLII_DIMENSION_UP, PLII_DIMENSION_DOWN, PLII_CENTER_WIDTH_UP, PLII_CENTER_WIDTH_DOWN, DDEX_TOGGLE, NEO6_TOGGLE, NEXT_MODE, MENU, UP, DOWN, LEFT, RIGHT, ENTER, RECORD_FONCTION_SELECT, TONE_CONTROL_SELECT, DYNAMIC_RANGE, DIGITAL_INPUT_SELECT, ZONE_TOGGLE, CENTER_TRIM, SUB_TRIM, SURROUND_TRIM, CINEMA_EQ_TOGGLE |
 | rsp1069            | DSP_TOGGLE, PROLOGIC_TOGGLE, DOLBY_TOGGLE, PLII_PANORAMA_TOGGLE, PLII_DIMENSION_UP, PLII_DIMENSION_DOWN, PLII_CENTER_WIDTH_UP, PLII_CENTER_WIDTH_DOWN, DDEX_TOGGLE, NEO6_TOGGLE, NEXT_MODE, MENU, UP, DOWN, LEFT, RIGHT, ENTER, RECORD_FONCTION_SELECT, TONE_CONTROL_SELECT, DYNAMIC_RANGE, DIGITAL_INPUT_SELECT, ZONE_TOGGLE, CENTER_TRIM, SUB_TRIM, SURROUND_TRIM, CINEMA_EQ_TOGGLE, POWER_OFF_ALL_ZONES, PARTY_MODE_TOGGLE, ZONE2_PARTY_MODE_TOGGLE, ZONE3_PARTY_MODE_TOGGLE, ZONE4_PARTY_MODE_TOGGLE, OUTPUT_RESOLUTION, HDMI_AMP_MODE, HDMI_TV_MODE |
 | rsp1098            | DSP_TOGGLE, PROLOGIC_TOGGLE, DOLBY_TOGGLE, PLII_PANORAMA_TOGGLE, PLII_DIMENSION_UP, PLII_DIMENSION_DOWN, PLII_CENTER_WIDTH_UP, PLII_CENTER_WIDTH_DOWN, DDEX_TOGGLE, NEO6_TOGGLE, NEXT_MODE, MENU, UP, DOWN, LEFT, RIGHT, ENTER, RECORD_FONCTION_SELECT, TONE_CONTROL_SELECT, DYNAMIC_RANGE, DIGITAL_INPUT_SELECT, ZONE_TOGGLE, CENTER_TRIM, SUB_TRIM, SURROUND_TRIM, CINEMA_EQ_TOGGLE, REMOTE_VOLUME_UP, REMOTE_VOLUME_DOWN |
 | rsp1570            | STEREO_BYPASS_TOGGLE, DSP_TOGGLE, PROLOGIC_TOGGLE, DOLBY_TOGGLE, PLII_PANORAMA_TOGGLE, PLII_DIMENSION_UP, PLII_DIMENSION_DOWN, PLII_CENTER_WIDTH_UP, PLII_CENTER_WIDTH_DOWN, DDEX_TOGGLE, NEO6_TOGGLE, NEXT_MODE, MENU, UP, DOWN, LEFT, RIGHT, ENTER, RECORD_FONCTION_SELECT, TONE_CONTROL_SELECT, DYNAMIC_RANGE, DIGITAL_INPUT_SELECT, ZONE_TOGGLE, CENTER_TRIM, SUB_TRIM, SURROUND_TRIM, CINEMA_EQ_TOGGLE, POWER_OFF_ALL_ZONES, PARTY_MODE_TOGGLE, ZONE2_PARTY_MODE_TOGGLE, ZONE3_PARTY_MODE_TOGGLE, ZONE4_PARTY_MODE_TOGGLE, OUTPUT_RESOLUTION, HDMI_AMP_MODE, HDMI_TV_MODE, RESET_FACTORY |
 | rsp1572            | STEREO_BYPASS_TOGGLE, DSP_TOGGLE, PROLOGIC_TOGGLE, DOLBY_TOGGLE, PLII_PANORAMA_TOGGLE, PLII_DIMENSION_UP, PLII_DIMENSION_DOWN, PLII_CENTER_WIDTH_UP, PLII_CENTER_WIDTH_DOWN, DDEX_TOGGLE, NEO6_TOGGLE, NEXT_MODE, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0, MENU, EXIT, UP_PRESSED, UP_RELEASED, DOWN_PRESSED, DOWN_RELEASED, LEFT_PRESSED, LEFT_RELEASED, RIGHT_PRESSED, RIGHT_RELEASED, ENTER, RECORD_FONCTION_SELECT, TONE_CONTROL_SELECT, DYNAMIC_RANGE, DIGITAL_INPUT_SELECT, ZONE_TOGGLE, CENTER_TRIM, SUB_TRIM, SURROUND_TRIM, CINEMA_EQ_TOGGLE, POWER_OFF_ALL_ZONES, PARTY_MODE_TOGGLE, ZONE2_PARTY_MODE_TOGGLE, ZONE3_PARTY_MODE_TOGGLE, ZONE4_PARTY_MODE_TOGGLE, OUTPUT_RESOLUTION, HDMI_AMP_MODE, HDMI_TV_MODE, ROOM_EQ_TOGGLE, SPEAKER_SETTING_TOGGLE, RESET_FACTORY |
+| rsp1576            | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, SUB_LEVEL_UP, SUB_LEVEL_DOWN, C_LEVEL_UP, C_LEVEL_DOWN, SR_LEVEL_UP, SR_LEVEL_DOWN, SL_LEVEL_UP, SL_LEVEL_DOWN, CBR_LEVEL_UP, CBR_LEVEL_DOWN, CBL_LEVEL_UP, CBL_LEVEL_DOWN, CFR_LEVEL_UP, CFR_LEVEL_DOWN, CFL_LEVEL_UP, CFL_LEVEL_DOWN, CRR_LEVEL_UP, CRR_LEVEL_DOWN, CRL_LEVEL_UP, CRL_LEVEL_DOWN, NEXT_MODE, RESET_FACTORY |
+| rsp1582            | PLAY, PAUSE, STOP, TRACK_FWD, TRACK_BACK, MENU, EXIT, UP, DOWN, LEFT, RIGHT, ENTER, SUB_LEVEL_UP, SUB_LEVEL_DOWN, C_LEVEL_UP, C_LEVEL_DOWN, SR_LEVEL_UP, SR_LEVEL_DOWN, SL_LEVEL_UP, SL_LEVEL_DOWN, CBR_LEVEL_UP, CBR_LEVEL_DOWN, CBL_LEVEL_UP, CBL_LEVEL_DOWN, NEXT_MODE, RESET_FACTORY |
 | rsx1055            | DSP_TOGGLE, PROLOGIC_TOGGLE, DOLBY_TOGGLE, PLII_PANORAMA_TOGGLE, PLII_DIMENSION_UP, PLII_DIMENSION_DOWN, PLII_CENTER_WIDTH_UP, PLII_CENTER_WIDTH_DOWN, DDEX_TOGGLE, NEO6_TOGGLE, NEXT_MODE, TUNE_UP, TUNE_DOWN, MEMORY, BAND_TOGGLE, AM, FM, TUNE_PRESET_TOGGLE, TUNING_MODE_SELECT, PRESET_MODE_SELECT, FREQUENCY_DIRECT, PRESET_SCAN, TUNER_DISPLAY, RDS_PTY, RDS_TP, RDS_TA, FM_MONO_TOGGLE, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0, MENU, UP, DOWN, LEFT, RIGHT, ENTER, RECORD_FONCTION_SELECT, TONE_CONTROL_SELECT, DYNAMIC_RANGE, DIGITAL_INPUT_SELECT, ZONE_TOGGLE, CENTER_TRIM, SUB_TRIM, SURROUND_TRIM, CINEMA_EQ_TOGGLE |
 | rsx1056            | DSP_TOGGLE, PROLOGIC_TOGGLE, DOLBY_TOGGLE, PLII_PANORAMA_TOGGLE, PLII_DIMENSION_UP, PLII_DIMENSION_DOWN, PLII_CENTER_WIDTH_UP, PLII_CENTER_WIDTH_DOWN, DDEX_TOGGLE, NEO6_TOGGLE, NEXT_MODE, TUNE_UP, TUNE_DOWN, MEMORY, BAND_TOGGLE, AM, FM, TUNE_PRESET_TOGGLE, TUNING_MODE_SELECT, PRESET_MODE_SELECT, FREQUENCY_DIRECT, PRESET_SCAN, TUNER_DISPLAY, RDS_PTY, RDS_TP, RDS_TA, FM_MONO_TOGGLE, ZONE2_TUNE_UP, ZONE2_TUNE_DOWN, ZONE2_BAND_TOGGLE, ZONE2_AM, ZONE2_FM, ZONE2_TUNE_PRESET_TOGGLE, ZONE2_TUNING_MODE_SELECT, ZONE2_PRESET_MODE_SELECT, ZONE2_PRESET_SCAN, ZONE2_FM_MONO_TOGGLE, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0, ZONE2_KEY1, ZONE2_KEY2, ZONE2_KEY3, ZONE2_KEY4, ZONE2_KEY5, ZONE2_KEY6, ZONE2_KEY7, ZONE2_KEY8, ZONE2_KEY9, ZONE2_KEY0, MENU, UP, DOWN, LEFT, RIGHT, ENTER, RECORD_FONCTION_SELECT, TONE_CONTROL_SELECT, DYNAMIC_RANGE, DIGITAL_INPUT_SELECT, ZONE_TOGGLE, CENTER_TRIM, SUB_TRIM, SURROUND_TRIM, CINEMA_EQ_TOGGLE |
 | rsx1057            | DSP_TOGGLE, PROLOGIC_TOGGLE, DOLBY_TOGGLE, PLII_PANORAMA_TOGGLE, PLII_DIMENSION_UP, PLII_DIMENSION_DOWN, PLII_CENTER_WIDTH_UP, PLII_CENTER_WIDTH_DOWN, DDEX_TOGGLE, NEO6_TOGGLE, NEXT_MODE, TUNE_UP, TUNE_DOWN, PRESET_UP, PRESET_DOWN, FREQUENCY_UP, FREQUENCY_DOWN, MEMORY, BAND_TOGGLE, AM, FM, TUNE_PRESET_TOGGLE, TUNING_MODE_SELECT, PRESET_MODE_SELECT, FREQUENCY_DIRECT, PRESET_SCAN, TUNER_DISPLAY, RDS_PTY, RDS_TP, RDS_TA, FM_MONO_TOGGLE, ZONE2_TUNE_UP, ZONE2_TUNE_DOWN, ZONE2_PRESET_UP, ZONE2_PRESET_DOWN, ZONE2_FREQUENCY_UP, ZONE2_FREQUENCY_DOWN, ZONE2_BAND_TOGGLE, ZONE2_AM, ZONE2_FM, ZONE2_TUNE_PRESET_TOGGLE, ZONE2_TUNING_MODE_SELECT, ZONE2_PRESET_MODE_SELECT, ZONE2_PRESET_SCAN, ZONE2_FM_MONO_TOGGLE, KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, KEY7, KEY8, KEY9, KEY0, ZONE2_KEY1, ZONE2_KEY2, ZONE2_KEY3, ZONE2_KEY4, ZONE2_KEY5, ZONE2_KEY6, ZONE2_KEY7, ZONE2_KEY8, ZONE2_KEY9, ZONE2_KEY0, MENU, UP, DOWN, LEFT, RIGHT, ENTER, RECORD_FONCTION_SELECT, TONE_CONTROL_SELECT, DYNAMIC_RANGE, DIGITAL_INPUT_SELECT, ZONE_TOGGLE, CENTER_TRIM, SUB_TRIM, SURROUND_TRIM, CINEMA_EQ_TOGGLE |
index 962b4e04ef20a0af2f758f3c70edf24abaccee00..80b180a22540fcade127710ad36c16b6b556c053 100644 (file)
@@ -240,6 +240,7 @@ public class RotelBindingConstants {
     public static final String KEY_DSP_MODE = "dsp_mode";
     public static final String KEY_ERROR = "error";
     // Keys only used by the ASCII protocol
+    public static final String KEY_POWER_MODE = "power_mode";
     public static final String KEY_INPUT = "input";
     public static final String KEY_INPUT_ZONE1 = "input_zone1";
     public static final String KEY_INPUT_ZONE2 = "input_zone2";
@@ -279,6 +280,17 @@ public class RotelBindingConstants {
     public static final String KEY_BALANCE_ZONE3 = "balance_zone3";
     public static final String KEY_BALANCE_ZONE4 = "balance_zone4";
     public static final String KEY_SPEAKER = "speaker";
+    public static final String KEY_SUB_LEVEL = "subwoofer_level";
+    public static final String KEY_CENTER_LEVEL = "center_level";
+    public static final String KEY_SURROUND_RIGHT_LEVEL = "surround_right";
+    public static final String KEY_SURROUND_LEFT_LEVEL = "surround_left";
+    public static final String KEY_CENTER_BACK_RIGHT_LEVEL = "center_back_right";
+    public static final String KEY_CENTER_BACK_LEFT_LEVEL = "center_back_left";
+    public static final String KEY_CEILING_FRONT_RIGHT_LEVEL = "ceiling_front_right";
+    public static final String KEY_CEILING_FRONT_LEFT_LEVEL = "ceiling_front_left";
+    public static final String KEY_CEILING_REAR_RIGHT_LEVEL = "ceiling_rear_right";
+    public static final String KEY_CEILING_REAR_LEFT_LEVEL = "ceiling_rear_left";
+    public static final String KEY_PCUSB_CLASS = "pcusb_class";
     public static final String KEY_MODEL = "model";
     public static final String KEY_VERSION = "version";
     // Output keys only used by the HEX protocol
@@ -299,6 +311,8 @@ public class RotelBindingConstants {
     public static final String MSG_VALUE_ON = "on";
     public static final String MSG_VALUE_NONE = "none";
     public static final String POWER_ON = "on";
+    public static final String POWER_QUICK = "quick";
+    public static final String POWER_NORMAL = "normal";
     public static final String STANDBY = "standby";
     public static final String POWER_OFF_DELAYED = "off_delayed";
     public static final String MSG_VALUE_SPEAKER_A = "a";
index 9c860b12b44147cc3843991287fe025b4a7aef50..816e86e9c82f9e9a1aabafab9503101c605ad2a7 100644 (file)
@@ -50,10 +50,12 @@ public enum RotelModel {
             concatenate(DSP_CMDS_SET1, MENU2_CTRL_CMDS, OTHER_CMDS_SET1, List.of(REMOTE_VOLUME_UP, REMOTE_VOLUME_DOWN)),
             (byte) 0xA0, 13, 8, true, RotelFlagsMapping.MAPPING1),
     RSP1570("RSP-1570", 115200, 1, 3, true, 96, true, 6, false, RECORD_FONCTION_SELECT, 3,
-            concatenate(DSP_CMDS_SET2, MENU2_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET2, List.of(RESET_FACTORY)),
+            concatenate(DSP_CMDS_SET2, DSP_CMDS_SET1, MENU2_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET2,
+                    List.of(RESET_FACTORY)),
             (byte) 0xA3, 42, 5, true, RotelFlagsMapping.MAPPING5),
     RSP1572("RSP-1572", 115200, 2, 3, true, 96, true, null, false, RECORD_FONCTION_SELECT, 4,
-            concatenate(DSP_CMDS_SET2, NUMERIC_KEY_CMDS, MENU3_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET4),
+            concatenate(DSP_CMDS_SET2, DSP_CMDS_SET1, NUMERIC_KEY_CMDS, MENU3_CTRL_CMDS, OTHER_CMDS_SET1,
+                    OTHER_CMDS_SET4),
             (byte) 0xA5, 42, 5, true, RotelFlagsMapping.MAPPING5),
     RSX1055("RSX-1055", 19200, 3, 1, false, 90, false, 12, false, ZONE_SELECT, 1,
             concatenate(DSP_CMDS_SET1, TUNER_CMDS_SET1, NUMERIC_KEY_CMDS, MENU2_CTRL_CMDS, OTHER_CMDS_SET1),
@@ -88,47 +90,65 @@ public enum RotelModel {
                     List.of(RESET_FACTORY)),
             (byte) 0xCA, 42, 5, true, RotelFlagsMapping.MAPPING5),
     RSX1562("RSX-1562", 115200, 2, 3, true, 96, true, null, false, RECORD_FONCTION_SELECT, 4,
-            concatenate(DSP_CMDS_SET2, TUNER_CMDS_SET2, ZONE234_TUNER_CMDS_SET1, NUMERIC_KEY_CMDS,
+            concatenate(DSP_CMDS_SET2, DSP_CMDS_SET1, TUNER_CMDS_SET2, ZONE234_TUNER_CMDS_SET1, NUMERIC_KEY_CMDS,
                     ZONE234_NUMERIC_KEY_CMDS, MENU3_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET4),
             (byte) 0xCC, 42, 5, true, RotelFlagsMapping.MAPPING5),
     A11("A11", 115200, 4, 96, true, 10, 15, false, -1, false, true, true, 6, 0, SRC_CTRL_CMDS_SET1,
             NO_SPECIAL_CHARACTERS),
-    A12("A12", 115200, 5, 96, true, 10, 15, false, -1, true, true, true, 6, 0, SRC_CTRL_CMDS_SET1,
-            NO_SPECIAL_CHARACTERS),
-    A14("A14", 115200, 5, 96, true, 10, 15, false, -1, true, true, true, 6, 0, SRC_CTRL_CMDS_SET1,
-            NO_SPECIAL_CHARACTERS),
+    A12("A12", 115200, 5, 96, true, 10, 15, false, -1, true, true, true, 6, 0,
+            concatenate(SRC_CTRL_CMDS_SET1, List.of(PCUSB_CLASS)), NO_SPECIAL_CHARACTERS),
+    A14("A14", 115200, 5, 96, true, 10, 15, false, -1, true, true, true, 6, 0,
+            concatenate(SRC_CTRL_CMDS_SET1, List.of(PCUSB_CLASS)), NO_SPECIAL_CHARACTERS),
     CD11("CD11", 57600, 0, null, false, null, true, -1, false, true, 6, 0,
-            concatenate(SRC_CTRL_CMDS_SET3, NUMERIC_KEY_CMDS), NO_SPECIAL_CHARACTERS),
+            concatenate(SRC_CTRL_CMDS_SET2, SRC_CTRL_CMDS_SET4, NUMERIC_KEY_CMDS), NO_SPECIAL_CHARACTERS),
     CD14("CD14", 57600, 0, null, false, null, true, -1, false, true, 6, 0,
-            concatenate(SRC_CTRL_CMDS_SET3, NUMERIC_KEY_CMDS), NO_SPECIAL_CHARACTERS),
+            concatenate(SRC_CTRL_CMDS_SET2, SRC_CTRL_CMDS_SET4, NUMERIC_KEY_CMDS), NO_SPECIAL_CHARACTERS),
     RA11("RA-11", 115200, 6, 96, true, 10, 15, true, -1, true, false, false, 6, 0,
-            concatenate(SRC_CTRL_CMDS_SET2, MENU_CTRL_CMDS, NUMERIC_KEY_CMDS), SPECIAL_CHARACTERS),
+            concatenate(SRC_CTRL_CMDS_SET2, SRC_CTRL_CMDS_SET3, MENU_CTRL_CMDS, NUMERIC_KEY_CMDS), SPECIAL_CHARACTERS),
     RA12("RA-12", 115200, 6, 96, true, 10, 15, true, -1, true, false, false, 6, 0,
-            concatenate(SRC_CTRL_CMDS_SET2, MENU_CTRL_CMDS, NUMERIC_KEY_CMDS), SPECIAL_CHARACTERS),
+            concatenate(SRC_CTRL_CMDS_SET2, SRC_CTRL_CMDS_SET3, MENU_CTRL_CMDS, NUMERIC_KEY_CMDS), SPECIAL_CHARACTERS),
     RA1570("RA-1570", 115200, 7, 96, true, 10, 15, true, -1, true, true, false, 6, 0,
-            concatenate(SRC_CTRL_CMDS_SET2, MENU_CTRL_CMDS, NUMERIC_KEY_CMDS, PCUSB_CLASS_CMDS), SPECIAL_CHARACTERS),
+            concatenate(SRC_CTRL_CMDS_SET2, SRC_CTRL_CMDS_SET3, MENU_CTRL_CMDS, NUMERIC_KEY_CMDS, PCUSB_CLASS_CMDS),
+            SPECIAL_CHARACTERS),
     RA1572("RA-1572", 115200, 8, 96, true, 10, 15, false, -1, true, true, true, 6, 0,
-            concatenate(SRC_CTRL_CMDS_SET1, MENU_CTRL_CMDS, PCUSB_CLASS_CMDS, List.of(RESET_FACTORY)),
+            concatenate(SRC_CTRL_CMDS_SET1, MENU_CTRL_CMDS, PCUSB_CLASS_CMDS, OTHER_CMDS_SET6), SPECIAL_CHARACTERS),
+    RA1592_V1("RA-1592", 115200, 9, 96, true, 10, 15, false, -1, true, true, true, 6, 0,
+            concatenate(SRC_CTRL_CMDS_SET1, SRC_CTRL_CMDS_SET2, MENU_CTRL_CMDS, NUMERIC_KEY_CMDS, PCUSB_CLASS_CMDS,
+                    OTHER_CMDS_SET5),
             SPECIAL_CHARACTERS),
-    RA1592("RA-1592", 115200, 9, 96, true, 10, 15, false, -1, true, true, true, 6, 0, List.of(), SPECIAL_CHARACTERS),
-    RAP1580("RAP-1580", 115200, 11, 96, true, null, false, 5, false, false, -10, 10, List.of(), NO_SPECIAL_CHARACTERS),
+    RA1592_V2("RA-1592", 115200, 9, 96, true, 10, 15, false, -1, true, true, true, 6, 0,
+            concatenate(SRC_CTRL_CMDS_SET1, PCUSB_CLASS_CMDS), SPECIAL_CHARACTERS),
+    RAP1580("RAP-1580", 115200, 11, 96, true, null, false, 5, false, false, -10, 10,
+            concatenate(SRC_CTRL_CMDS_SET1, MENU_CTRL_CMDS, LEVEL_TRIM_CMDS_SET1, LEVEL_TRIM_CMDS_SET2,
+                    OTHER_CMDS_SET7),
+            NO_SPECIAL_CHARACTERS),
     RC1570("RC-1570", 115200, 7, 96, true, 10, 15, true, -1, true, false, false, 6, 0,
-            concatenate(SRC_CTRL_CMDS_SET2, MENU_CTRL_CMDS, NUMERIC_KEY_CMDS, PCUSB_CLASS_CMDS), SPECIAL_CHARACTERS),
+            concatenate(SRC_CTRL_CMDS_SET2, SRC_CTRL_CMDS_SET3, MENU_CTRL_CMDS, NUMERIC_KEY_CMDS, PCUSB_CLASS_CMDS),
+            SPECIAL_CHARACTERS),
     RC1572("RC-1572", 115200, 8, 96, true, 10, 15, false, -1, true, false, true, 6, 0,
-            concatenate(SRC_CTRL_CMDS_SET1, MENU_CTRL_CMDS, PCUSB_CLASS_CMDS, List.of(RESET_FACTORY)),
+            concatenate(SRC_CTRL_CMDS_SET1, MENU_CTRL_CMDS, PCUSB_CLASS_CMDS, OTHER_CMDS_SET6), SPECIAL_CHARACTERS),
+    RC1590_V1("RC-1590", 115200, 9, 96, true, 10, 15, false, -1, true, false, true, 6, 0,
+            concatenate(SRC_CTRL_CMDS_SET1, SRC_CTRL_CMDS_SET2, MENU_CTRL_CMDS, NUMERIC_KEY_CMDS, PCUSB_CLASS_CMDS,
+                    OTHER_CMDS_SET5),
             SPECIAL_CHARACTERS),
-    RC1590("RC-1590", 115200, 9, 96, true, 10, 15, false, -1, true, false, true, 6, 0, List.of(), SPECIAL_CHARACTERS),
+    RC1590_V2("RC-1590", 115200, 9, 96, true, 10, 15, false, -1, true, false, true, 6, 0,
+            concatenate(SRC_CTRL_CMDS_SET1, PCUSB_CLASS_CMDS), SPECIAL_CHARACTERS),
     RCD1570("RCD-1570", 115200, 0, null, false, null, true, -1, false, true, 6, 0, List.of(), SPECIAL_CHARACTERS),
     RCD1572("RCD-1572", 57600, 0, null, false, null, true, -1, false, true, 6, 0,
-            concatenate(SRC_CTRL_CMDS_SET3, List.of(PROGRAM), MENU_CTRL_CMDS, NUMERIC_KEY_CMDS),
+            concatenate(SRC_CTRL_CMDS_SET2, SRC_CTRL_CMDS_SET4, List.of(PROGRAM), MENU_CTRL_CMDS, NUMERIC_KEY_CMDS),
             SPECIAL_CHARACTERS_RCD1572),
     RCX1500("RCX-1500", 115200, 17, 86, true, null, true, -1, false, false, null, null, List.of(), SPECIAL_CHARACTERS),
-    RDD1580("RDD-1580", 115200, 15, null, false, null, true, -1, true, false, null, null, List.of(),
-            NO_SPECIAL_CHARACTERS),
+    RDD1580("RDD-1580", 115200, 15, null, false, null, true, -1, true, false, null, null,
+            concatenate(SRC_CTRL_CMDS_SET3, PCUSB_CLASS_CMDS), NO_SPECIAL_CHARACTERS),
     RDG1520("RDG-1520", 115200, 16, null, false, null, true, -1, false, false, null, null, List.of(),
             SPECIAL_CHARACTERS),
-    RSP1576("RSP-1576", 115200, 10, 96, true, null, false, 5, false, false, -10, 10, List.of(), NO_SPECIAL_CHARACTERS),
-    RSP1582("RSP-1582", 115200, 11, 96, true, null, false, 6, false, false, -10, 10, List.of(), NO_SPECIAL_CHARACTERS),
+    RSP1576("RSP-1576", 115200, 10, 96, true, null, false, 5, false, false, -10, 10,
+            concatenate(SRC_CTRL_CMDS_SET1, MENU_CTRL_CMDS, LEVEL_TRIM_CMDS_SET1, LEVEL_TRIM_CMDS_SET2,
+                    OTHER_CMDS_SET7),
+            NO_SPECIAL_CHARACTERS),
+    RSP1582("RSP-1582", 115200, 11, 96, true, null, false, 6, false, false, -10, 10,
+            concatenate(SRC_CTRL_CMDS_SET1, MENU_CTRL_CMDS, LEVEL_TRIM_CMDS_SET1, OTHER_CMDS_SET7),
+            NO_SPECIAL_CHARACTERS),
     RT11("RT-11", 115200, 12, null, false, null, false, -1, false, true, 6, 0, List.of(), NO_SPECIAL_CHARACTERS),
     RT1570("RT-1570", 115200, 14, null, false, null, false, -1, false, true, 6, 0, List.of(), NO_SPECIAL_CHARACTERS),
     T11("T11", 115200, 12, null, false, null, false, -1, false, true, 6, 0, List.of(), NO_SPECIAL_CHARACTERS),
index ba7f514fa7f667bdc3db2dd2c1e4e60aeda31d51..7907eb1f34a9379a14e5dccfc27f2510c143eb4a 100644 (file)
@@ -36,6 +36,9 @@ public enum RotelCommand {
     POWER_ON("Power On", PRIMARY_CMD, (byte) 0x4B, "power_on", "power_on"),
     POWER_OFF_ALL_ZONES("Power Off All Zones", PRIMARY_CMD, (byte) 0x71),
     POWER("Request current power status", "get_current_power", "power?"),
+    POWER_MODE_QUICK("Set power mode to quick", "power_mode_quick", null),
+    POWER_MODE_NORMAL("Set power mode to normal", "power_mode_normal", null),
+    POWER_MODE("Request current power mode", "get_power_mode", null),
     ZONE_SELECT("Zone Select", PRIMARY_CMD, (byte) 0x23),
     MAIN_ZONE_POWER_TOGGLE("Main Zone Power Toggle", MAIN_ZONE_CMD, (byte) 0x0A),
     MAIN_ZONE_POWER_OFF("Main Zone Power Off", MAIN_ZONE_CMD, (byte) 0x4A),
@@ -245,7 +248,7 @@ public enum RotelCommand {
     ATMOS("Dolby Atmos", "dolby_atmos", "dolby_atmos"),
     NEURAL_X("dts Neural:X", "dts_neural", "dts_neural"),
     BYPASS("Analog Bypass", "bypass", "bypass"),
-    NEXT_MODE("Next Surround Mode", PRIMARY_CMD, (byte) 0x22),
+    NEXT_MODE("Next Surround Mode", PRIMARY_CMD, (byte) 0x22, "surround_next", null),
     DSP_MODE("Request current DSP mode", "get_dsp_mode", null),
     TONE_MAX("Request Max tone level", "get_tone_max", null),
     TONE_CONTROL_SELECT("Tone Control Select", PRIMARY_CMD, (byte) 0x67),
@@ -453,7 +456,7 @@ public enum RotelCommand {
     PROGRAM("Program Key", "program", null),
     PCUSB_CLASS_1("Set PC-USB Audio Class to 1.0", "pcusb_class_1", "pcusb_class_1"),
     PCUSB_CLASS_2("Set PC-USB Audio Class to 2.0", "pcusb_class_2", "pcusb_class_2"),
-    PCUSB_CLASS_GET("Request current PC-USB class", "get_pcusb_class", "pcusb?"),
+    PCUSB_CLASS("Request current PC-USB class", "get_pcusb_class", "pcusb?"),
     RESET_FACTORY("Reset unit to factory defaults", PRIMARY_CMD, (byte) 0x93, "factory_default_on",
             "factory_default_on"),
     DYNAMIC_RANGE("Dynamic Range", PRIMARY_CMD, (byte) 0x16),
@@ -462,6 +465,26 @@ public enum RotelCommand {
     CENTER_TRIM("Temporary Center Trim", PRIMARY_CMD, (byte) 0x4C),
     SUB_TRIM("Temporary Subwoofer  Trim", PRIMARY_CMD, (byte) 0x4D),
     SURROUND_TRIM("Temporary Surround  Trim", PRIMARY_CMD, (byte) 0x4E),
+    SUB_LEVEL_UP("Temporary increase sub level", "subwoofer_up", null),
+    SUB_LEVEL_DOWN("Temporary decrease sub level", "subwoofer_down", null),
+    C_LEVEL_UP("Temporary increase center level", "center_up", null),
+    C_LEVEL_DOWN("Temporary decrease center level", "center_down", null),
+    SR_LEVEL_UP("Temporary increase surround right level", "surround_right_up", null),
+    SR_LEVEL_DOWN("Temporary decrease surround right level", "surround_right_down", null),
+    SL_LEVEL_UP("Temporary increase surround left level", "surround_left_up", null),
+    SL_LEVEL_DOWN("Temporary decrease surround left level", "surround_left_down", null),
+    CBR_LEVEL_UP("Temporary increase center back right level", "center_back_right_up", null),
+    CBR_LEVEL_DOWN("Temporary decrease center back right level", "center_back_right_down", null),
+    CBL_LEVEL_UP("Temporary increase center back left level", "center_back_left_up", null),
+    CBL_LEVEL_DOWN("Temporary decrease center back left level", "center_back_left_down", null),
+    CFR_LEVEL_UP("Temporary increase ceiling front right level", "ceiling_front_right_up", null),
+    CFR_LEVEL_DOWN("Temporary decrease ceiling front right level", "ceiling_front_right_down", null),
+    CFL_LEVEL_UP("Temporary increase ceiling front left level", "ceiling_front_left_up", null),
+    CFL_LEVEL_DOWN("Temporary decrease ceiling front left level", "ceiling_front_left_down", null),
+    CRR_LEVEL_UP("Temporary increase ceiling rear right level", "ceiling_rear_right_up", null),
+    CRR_LEVEL_DOWN("Temporary decrease ceiling rear right level", "ceiling_rear_right_down", null),
+    CRL_LEVEL_UP("Temporary increase ceiling rear left level", "ceiling_rear_left_up", null),
+    CRL_LEVEL_DOWN("Temporary decrease ceiling rear left level", "ceiling_rear_left_down", null),
     CINEMA_EQ_TOGGLE("Cinema EQ Toggle", PRIMARY_CMD, (byte) 0x4F),
     DISPLAY_TOGGLE("Front Display On/Off", PRIMARY_CMD, (byte) 0x52),
     PARTY_MODE_TOGGLE("Party Mode Toggle", PRIMARY_CMD, (byte) 0x6E),
@@ -479,14 +502,12 @@ public enum RotelCommand {
     public static final List<RotelCommand> DSP_CMDS_SET1 = List.of(DSP_TOGGLE, PROLOGIC_TOGGLE, DOLBY_TOGGLE,
             PLII_PANORAMA_TOGGLE, PLII_DIMENSION_UP, PLII_DIMENSION_DOWN, PLII_CENTER_WIDTH_UP, PLII_CENTER_WIDTH_DOWN,
             DDEX_TOGGLE, NEO6_TOGGLE, NEXT_MODE);
-    public static final List<RotelCommand> DSP_CMDS_SET2 = List.of(STEREO_BYPASS_TOGGLE, DSP_TOGGLE, PROLOGIC_TOGGLE,
-            DOLBY_TOGGLE, PLII_PANORAMA_TOGGLE, PLII_DIMENSION_UP, PLII_DIMENSION_DOWN, PLII_CENTER_WIDTH_UP,
-            PLII_CENTER_WIDTH_DOWN, DDEX_TOGGLE, NEO6_TOGGLE, NEXT_MODE);
+    public static final List<RotelCommand> DSP_CMDS_SET2 = List.of(STEREO_BYPASS_TOGGLE);
 
     public static final List<RotelCommand> SRC_CTRL_CMDS_SET1 = List.of(PLAY, STOP, PAUSE, TRACK_FWD, TRACK_BACK);
-    public static final List<RotelCommand> SRC_CTRL_CMDS_SET2 = List.of(FAST_FWD, FAST_BACK, RANDOM_TOGGLE,
-            REPEAT_TOGGLE);
-    public static final List<RotelCommand> SRC_CTRL_CMDS_SET3 = List.of(FAST_FWD, FAST_BACK, EJECT, TIME_TOGGLE);
+    public static final List<RotelCommand> SRC_CTRL_CMDS_SET2 = List.of(FAST_FWD, FAST_BACK);
+    public static final List<RotelCommand> SRC_CTRL_CMDS_SET3 = List.of(RANDOM_TOGGLE, REPEAT_TOGGLE);
+    public static final List<RotelCommand> SRC_CTRL_CMDS_SET4 = List.of(EJECT, TIME_TOGGLE);
 
     public static final List<RotelCommand> TUNER_CMDS_SET1 = List.of(TUNE_UP, TUNE_DOWN, MEMORY, BAND_TOGGLE, AM, FM,
             TUNE_PRESET_TOGGLE, TUNING_MODE_SELECT, PRESET_MODE_SELECT, FREQUENCY_DIRECT, PRESET_SCAN, TUNER_DISPLAY,
@@ -525,7 +546,13 @@ public enum RotelCommand {
             ZONE3_KEY3, ZONE3_KEY4, ZONE3_KEY5, ZONE3_KEY6, ZONE3_KEY7, ZONE3_KEY8, ZONE3_KEY9, ZONE3_KEY0, ZONE4_KEY1,
             ZONE4_KEY2, ZONE4_KEY3, ZONE4_KEY4, ZONE4_KEY5, ZONE4_KEY6, ZONE4_KEY7, ZONE4_KEY8, ZONE4_KEY9, ZONE4_KEY0);
 
-    public static final List<RotelCommand> PCUSB_CLASS_CMDS = List.of(PCUSB_CLASS_1, PCUSB_CLASS_2);
+    public static final List<RotelCommand> PCUSB_CLASS_CMDS = List.of(PCUSB_CLASS, PCUSB_CLASS_1, PCUSB_CLASS_2);
+
+    public static final List<RotelCommand> LEVEL_TRIM_CMDS_SET1 = List.of(SUB_LEVEL_UP, SUB_LEVEL_DOWN, C_LEVEL_UP,
+            C_LEVEL_DOWN, SR_LEVEL_UP, SR_LEVEL_DOWN, SL_LEVEL_UP, SL_LEVEL_DOWN, CBR_LEVEL_UP, CBR_LEVEL_DOWN,
+            CBL_LEVEL_UP, CBL_LEVEL_DOWN);
+    public static final List<RotelCommand> LEVEL_TRIM_CMDS_SET2 = List.of(CFR_LEVEL_UP, CFR_LEVEL_DOWN, CFL_LEVEL_UP,
+            CFL_LEVEL_DOWN, CRR_LEVEL_UP, CRR_LEVEL_DOWN, CRL_LEVEL_UP, CRL_LEVEL_DOWN);
 
     public static final List<RotelCommand> OTHER_CMDS_SET1 = List.of(RECORD_FONCTION_SELECT, TONE_CONTROL_SELECT,
             DYNAMIC_RANGE, DIGITAL_INPUT_SELECT, ZONE_TOGGLE, CENTER_TRIM, SUB_TRIM, SURROUND_TRIM, CINEMA_EQ_TOGGLE);
@@ -537,6 +564,10 @@ public enum RotelCommand {
     public static final List<RotelCommand> OTHER_CMDS_SET4 = List.of(POWER_OFF_ALL_ZONES, PARTY_MODE_TOGGLE,
             ZONE2_PARTY_MODE_TOGGLE, ZONE3_PARTY_MODE_TOGGLE, ZONE4_PARTY_MODE_TOGGLE, OUTPUT_RESOLUTION, HDMI_AMP_MODE,
             HDMI_TV_MODE, ROOM_EQ_TOGGLE, SPEAKER_SETTING_TOGGLE, RESET_FACTORY);
+    public static final List<RotelCommand> OTHER_CMDS_SET5 = List.of(POWER_MODE, POWER_MODE_QUICK, POWER_MODE_NORMAL,
+            RESET_FACTORY);
+    public static final List<RotelCommand> OTHER_CMDS_SET6 = List.of(POWER_MODE, RESET_FACTORY);
+    public static final List<RotelCommand> OTHER_CMDS_SET7 = List.of(NEXT_MODE, RESET_FACTORY);
 
     public static final byte PRIMARY_COMMAND = (byte) 0x10;
 
index 2fee5cf2d496e2c010641d7fa6a445ead6e95059..80172e4c87a8eff29ea0b38d5b2f500a42d7690b 100644 (file)
@@ -44,6 +44,7 @@ import org.slf4j.LoggerFactory;
 public class RotelSimuConnector extends RotelConnector {
 
     private static final int STEP_TONE_LEVEL = 1;
+    private static final double STEP_DECIBEL = 0.5;
 
     private final Logger logger = LoggerFactory.getLogger(RotelSimuConnector.class);
 
@@ -57,6 +58,7 @@ public class RotelSimuConnector extends RotelConnector {
     private int idxInFeedbackMsg = feedbackMsg.length;
 
     private boolean[] powers = { false, false, false, false, false };
+    private String powerMode = POWER_NORMAL;
     private RotelSource[] sources;
     private RotelSource recordSource;
     private boolean multiinput;
@@ -78,6 +80,17 @@ public class RotelSimuConnector extends RotelConnector {
     private boolean selectingRecord;
     private int showZone;
     private int dimmer;
+    private int pcUsbClass = 1;
+    private double subLevel;
+    private double centerLevel;
+    private double surroundRightLevel;
+    private double surroundLefLevel;
+    private double centerBackRightLevel;
+    private double centerBackLefLevel;
+    private double ceilingFrontRightLevel;
+    private double ceilingFrontLefLevel;
+    private double ceilingRearRightLevel;
+    private double ceilingRearLefLevel;
 
     private int minVolume;
     private int maxVolume;
@@ -551,6 +564,17 @@ public class RotelSimuConnector extends RotelConnector {
                     textAscii = buildAsciiResponse(
                             protocol == RotelProtocol.ASCII_V1 ? KEY_DISPLAY_UPDATE : KEY_UPDATE_MODE, MANUAL);
                     break;
+                case POWER_MODE_QUICK:
+                    powerMode = POWER_QUICK;
+                    textAscii = buildAsciiResponse(KEY_POWER_MODE, powerMode);
+                    break;
+                case POWER_MODE_NORMAL:
+                    powerMode = POWER_NORMAL;
+                    textAscii = buildAsciiResponse(KEY_POWER_MODE, powerMode);
+                    break;
+                case POWER_MODE:
+                    textAscii = buildAsciiResponse(KEY_POWER_MODE, powerMode);
+                    break;
                 case VOLUME_GET_MIN:
                     textAscii = buildAsciiResponse(KEY_VOLUME_MIN, minVolume);
                     break;
@@ -929,6 +953,94 @@ public class RotelSimuConnector extends RotelConnector {
                     textAscii = model.getNumberOfZones() > 1 ? buildAsciiResponse(KEY_FREQ, "44.1,48,none,176.4")
                             : buildAsciiResponse(KEY_FREQ, "44.1");
                     break;
+                case SUB_LEVEL_UP:
+                    subLevel += STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_SUB_LEVEL, buildDecibelValue(subLevel));
+                    break;
+                case SUB_LEVEL_DOWN:
+                    subLevel -= STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_SUB_LEVEL, buildDecibelValue(subLevel));
+                    break;
+                case C_LEVEL_UP:
+                    centerLevel += STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CENTER_LEVEL, buildDecibelValue(centerLevel));
+                    break;
+                case C_LEVEL_DOWN:
+                    centerLevel -= STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CENTER_LEVEL, buildDecibelValue(centerLevel));
+                    break;
+                case SR_LEVEL_UP:
+                    surroundRightLevel += STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_SURROUND_RIGHT_LEVEL, buildDecibelValue(surroundRightLevel));
+                    break;
+                case SR_LEVEL_DOWN:
+                    surroundRightLevel -= STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_SURROUND_RIGHT_LEVEL, buildDecibelValue(surroundRightLevel));
+                    break;
+                case SL_LEVEL_UP:
+                    surroundLefLevel += STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_SURROUND_LEFT_LEVEL, buildDecibelValue(surroundLefLevel));
+                    break;
+                case SL_LEVEL_DOWN:
+                    surroundLefLevel -= STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_SURROUND_LEFT_LEVEL, buildDecibelValue(surroundLefLevel));
+                    break;
+                case CBR_LEVEL_UP:
+                    centerBackRightLevel += STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CENTER_BACK_RIGHT_LEVEL,
+                            buildDecibelValue(centerBackRightLevel));
+                    break;
+                case CBR_LEVEL_DOWN:
+                    centerBackRightLevel -= STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CENTER_BACK_RIGHT_LEVEL,
+                            buildDecibelValue(centerBackRightLevel));
+                    break;
+                case CBL_LEVEL_UP:
+                    centerBackLefLevel += STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CENTER_BACK_LEFT_LEVEL, buildDecibelValue(centerBackLefLevel));
+                    break;
+                case CBL_LEVEL_DOWN:
+                    centerBackLefLevel -= STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CENTER_BACK_LEFT_LEVEL, buildDecibelValue(centerBackLefLevel));
+                    break;
+                case CFR_LEVEL_UP:
+                    ceilingFrontRightLevel += STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CEILING_FRONT_RIGHT_LEVEL,
+                            buildDecibelValue(ceilingFrontRightLevel));
+                    break;
+                case CFR_LEVEL_DOWN:
+                    ceilingFrontRightLevel -= STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CEILING_FRONT_RIGHT_LEVEL,
+                            buildDecibelValue(ceilingFrontRightLevel));
+                    break;
+                case CFL_LEVEL_UP:
+                    ceilingFrontLefLevel += STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CEILING_FRONT_LEFT_LEVEL,
+                            buildDecibelValue(ceilingFrontLefLevel));
+                    break;
+                case CFL_LEVEL_DOWN:
+                    ceilingFrontLefLevel -= STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CEILING_FRONT_LEFT_LEVEL,
+                            buildDecibelValue(ceilingFrontLefLevel));
+                    break;
+                case CRR_LEVEL_UP:
+                    ceilingRearRightLevel += STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CEILING_REAR_RIGHT_LEVEL,
+                            buildDecibelValue(ceilingRearRightLevel));
+                    break;
+                case CRR_LEVEL_DOWN:
+                    ceilingRearRightLevel -= STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CEILING_REAR_RIGHT_LEVEL,
+                            buildDecibelValue(ceilingRearRightLevel));
+                    break;
+                case CRL_LEVEL_UP:
+                    ceilingRearLefLevel += STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CEILING_REAR_LEFT_LEVEL, buildDecibelValue(ceilingRearLefLevel));
+                    break;
+                case CRL_LEVEL_DOWN:
+                    ceilingRearLefLevel -= STEP_DECIBEL;
+                    textAscii = buildAsciiResponse(KEY_CEILING_REAR_LEFT_LEVEL, buildDecibelValue(ceilingRearLefLevel));
+                    break;
                 case DIMMER_LEVEL_SET:
                     if (value != null) {
                         dimmer = value;
@@ -938,6 +1050,17 @@ public class RotelSimuConnector extends RotelConnector {
                 case DIMMER_LEVEL_GET:
                     textAscii = buildAsciiResponse(KEY_DIMMER, dimmer);
                     break;
+                case PCUSB_CLASS_1:
+                    pcUsbClass = 1;
+                    textAscii = buildAsciiResponse(KEY_PCUSB_CLASS, pcUsbClass);
+                    break;
+                case PCUSB_CLASS_2:
+                    pcUsbClass = 2;
+                    textAscii = buildAsciiResponse(KEY_PCUSB_CLASS, pcUsbClass);
+                    break;
+                case PCUSB_CLASS:
+                    textAscii = buildAsciiResponse(KEY_PCUSB_CLASS, pcUsbClass);
+                    break;
                 case MODEL:
                     textAscii = buildAsciiResponse(KEY_MODEL, model.getName());
                     break;
@@ -1256,6 +1379,14 @@ public class RotelSimuConnector extends RotelConnector {
         return buildAsciiResponse(KEY_DSP_MODE, dsp.getFeedback());
     }
 
+    private String buildDecibelValue(double value) {
+        if (value == 0.0) {
+            return "000.0db";
+        } else {
+            return String.format("%+05.1fdb", value).replace(",", ".");
+        }
+    }
+
     private String buildSourceLine1Response() {
         String text;
         if (!powers[0]) {
index 8aa4785ff60ee369062d8fd0793ad0bfeb90decf..d71a6c0830688975575a5e90f108190957328c9e 100644 (file)
@@ -150,6 +150,28 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL
     public void initialize() {
         logger.debug("Start initializing handler for thing {}", getThing().getUID());
 
+        RotelThingConfiguration config = getConfigAs(RotelThingConfiguration.class);
+
+        protocol = RotelProtocol.HEX;
+        if (config.protocol != null && !config.protocol.isEmpty()) {
+            try {
+                protocol = RotelProtocol.getFromName(config.protocol);
+            } catch (RotelException e) {
+                // Invalid protocol name in configuration, HEX will be considered by default
+            }
+        } else {
+            Map<String, String> properties = editProperties();
+            String property = properties.get(RotelBindingConstants.PROPERTY_PROTOCOL);
+            if (property != null && !property.isEmpty()) {
+                try {
+                    protocol = RotelProtocol.getFromName(property);
+                } catch (RotelException e) {
+                    // Invalid protocol name in thing property, HEX will be considered by default
+                }
+            }
+        }
+        logger.debug("rotelProtocol {}", protocol.getName());
+
         switch (getThing().getThingTypeUID().getId()) {
             case THING_TYPE_ID_RSP1066:
                 model = RotelModel.RSP1066;
@@ -224,7 +246,11 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL
                 model = RotelModel.RA1572;
                 break;
             case THING_TYPE_ID_RA1592:
-                model = RotelModel.RA1592;
+                if (protocol == RotelProtocol.ASCII_V1) {
+                    model = RotelModel.RA1592_V1;
+                } else {
+                    model = RotelModel.RA1592_V2;
+                }
                 break;
             case THING_TYPE_ID_RAP1580:
                 model = RotelModel.RAP1580;
@@ -236,7 +262,11 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL
                 model = RotelModel.RC1572;
                 break;
             case THING_TYPE_ID_RC1590:
-                model = RotelModel.RC1590;
+                if (protocol == RotelProtocol.ASCII_V1) {
+                    model = RotelModel.RC1590_V1;
+                } else {
+                    model = RotelModel.RC1590_V2;
+                }
                 break;
             case THING_TYPE_ID_RCD1570:
                 model = RotelModel.RCD1570;
@@ -295,28 +325,6 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL
                 break;
         }
 
-        RotelThingConfiguration config = getConfigAs(RotelThingConfiguration.class);
-
-        protocol = RotelProtocol.HEX;
-        if (config.protocol != null && !config.protocol.isEmpty()) {
-            try {
-                protocol = RotelProtocol.getFromName(config.protocol);
-            } catch (RotelException e) {
-                // Invalid protocol name in configuration, HEX will be considered by default
-            }
-        } else {
-            Map<String, String> properties = editProperties();
-            String property = properties.get(RotelBindingConstants.PROPERTY_PROTOCOL);
-            if (property != null && !property.isEmpty()) {
-                try {
-                    protocol = RotelProtocol.getFromName(property);
-                } catch (RotelException e) {
-                    // Invalid protocol name in thing property, HEX will be considered by default
-                }
-            }
-        }
-        logger.debug("rotelProtocol {}", protocol.getName());
-
         Map<RotelSource, String> sourcesCustomLabels = new HashMap<>();
         Map<RotelSource, String> sourcesLabels = new HashMap<>();
 
@@ -1368,6 +1376,9 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL
                         throw new RotelException("Invalid value");
                     }
                     break;
+                case KEY_POWER_MODE:
+                    logger.debug("Power mode is set to {}", value);
+                    break;
                 case KEY_VOLUME_MIN:
                     minVolume = Integer.parseInt(value);
                     if (!model.hasDirectVolumeControl()) {
@@ -1652,6 +1663,39 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL
                         throw new RotelException("Invalid value");
                     }
                     break;
+                case KEY_SUB_LEVEL:
+                    logger.debug("Sub level is set to {}", value);
+                    break;
+                case KEY_CENTER_LEVEL:
+                    logger.debug("Center level is set to {}", value);
+                    break;
+                case KEY_SURROUND_RIGHT_LEVEL:
+                    logger.debug("Surround right level is set to {}", value);
+                    break;
+                case KEY_SURROUND_LEFT_LEVEL:
+                    logger.debug("Surround left level is set to {}", value);
+                    break;
+                case KEY_CENTER_BACK_RIGHT_LEVEL:
+                    logger.debug("Center back right level is set to {}", value);
+                    break;
+                case KEY_CENTER_BACK_LEFT_LEVEL:
+                    logger.debug("Center back left level is set to {}", value);
+                    break;
+                case KEY_CEILING_FRONT_RIGHT_LEVEL:
+                    logger.debug("Ceiling front right level is set to {}", value);
+                    break;
+                case KEY_CEILING_FRONT_LEFT_LEVEL:
+                    logger.debug("Ceiling front left level is set to {}", value);
+                    break;
+                case KEY_CEILING_REAR_RIGHT_LEVEL:
+                    logger.debug("Ceiling rear right level is set to {}", value);
+                    break;
+                case KEY_CEILING_REAR_LEFT_LEVEL:
+                    logger.debug("Ceiling rear left level is set to {}", value);
+                    break;
+                case KEY_PCUSB_CLASS:
+                    logger.debug("PC-USB Audio Class is set to {}", value);
+                    break;
                 case KEY_MODEL:
                     getThing().setProperty(Thing.PROPERTY_MODEL_ID, value);
                     break;
index 9e1e557fe0f2a211667e6ada5a0fdbd9830fc646..2fa4976732fcac66a3bc9603692d5188c9f014ff 100644 (file)
@@ -116,6 +116,9 @@ channel-type.rotel.frontPanelLine.label = Front Panel Line
 channel-type.rotel.frontPanelLine.description = The line content displayed on the device front panel
 channel-type.rotel.otherCommand.label = Other Command
 channel-type.rotel.otherCommand.description = Choose the command to send to the device
+channel-type.rotel.otherCommand.command.option.POWER_MODE = Request current power mode
+channel-type.rotel.otherCommand.command.option.POWER_MODE_QUICK = Set power mode to quick
+channel-type.rotel.otherCommand.command.option.POWER_MODE_NORMAL = Set power mode to normal
 channel-type.rotel.otherCommand.command.option.POWER_OFF_ALL_ZONES = Power Off All Zones
 channel-type.rotel.otherCommand.command.option.REMOTE_VOLUME_UP = Remote Volume Up
 channel-type.rotel.otherCommand.command.option.REMOTE_VOLUME_DOWN = Remote Volume Down
@@ -260,6 +263,7 @@ channel-type.rotel.otherCommand.command.option.ZONE4_KEY8 = Zone 4 Number Key 8
 channel-type.rotel.otherCommand.command.option.ZONE4_KEY9 = Zone 4 Number Key 9
 channel-type.rotel.otherCommand.command.option.ZONE4_KEY0 = Zone 4 Number Key 0
 channel-type.rotel.otherCommand.command.option.PROGRAM = Program Key
+channel-type.rotel.otherCommand.command.option.PCUSB_CLASS = Request current PC-USB class
 channel-type.rotel.otherCommand.command.option.PCUSB_CLASS_1 = Set PC-USB Audio Class to 1.0
 channel-type.rotel.otherCommand.command.option.PCUSB_CLASS_2 = Set PC-USB Audio Class to 2.0
 channel-type.rotel.otherCommand.command.option.RESET_FACTORY = Reset unit to factory defaults
@@ -271,6 +275,26 @@ channel-type.rotel.otherCommand.command.option.ZONE_TOGGLE = Zone Toggle
 channel-type.rotel.otherCommand.command.option.CENTER_TRIM = Temporary Center Trim
 channel-type.rotel.otherCommand.command.option.SUB_TRIM = Temporary Subwoofer Trim
 channel-type.rotel.otherCommand.command.option.SURROUND_TRIM = Temporary Surround Trim
+channel-type.rotel.otherCommand.command.option.SUB_LEVEL_UP = Temporary increase sub level
+channel-type.rotel.otherCommand.command.option.SUB_LEVEL_DOWN = Temporary decrease sub level
+channel-type.rotel.otherCommand.command.option.C_LEVEL_UP = Temporary increase center level
+channel-type.rotel.otherCommand.command.option.C_LEVEL_DOWN = Temporary decrease center level
+channel-type.rotel.otherCommand.command.option.SR_LEVEL_UP = Temporary increase surround right level
+channel-type.rotel.otherCommand.command.option.SR_LEVEL_DOWN = Temporary decrease surround right level
+channel-type.rotel.otherCommand.command.option.SL_LEVEL_UP = Temporary increase surround left level
+channel-type.rotel.otherCommand.command.option.SL_LEVEL_DOWN = Temporary decrease surround left level
+channel-type.rotel.otherCommand.command.option.CBR_LEVEL_UP = Temporary increase center back right level
+channel-type.rotel.otherCommand.command.option.CBR_LEVEL_DOWN = Temporary decrease center back right level
+channel-type.rotel.otherCommand.command.option.CBL_LEVEL_UP = Temporary increase center back left level
+channel-type.rotel.otherCommand.command.option.CBL_LEVEL_DOWN = Temporary decrease center back left level
+channel-type.rotel.otherCommand.command.option.CFR_LEVEL_UP = Temporary increase ceiling front right level
+channel-type.rotel.otherCommand.command.option.CFR_LEVEL_DOWN = Temporary decrease ceiling front right level
+channel-type.rotel.otherCommand.command.option.CFL_LEVEL_UP = Temporary increase ceiling front left level
+channel-type.rotel.otherCommand.command.option.CFL_LEVEL_DOWN = Temporary decrease ceiling front left level
+channel-type.rotel.otherCommand.command.option.CRR_LEVEL_UP = Temporary increase ceiling rear right level
+channel-type.rotel.otherCommand.command.option.CRR_LEVEL_DOWN = Temporary decrease ceiling rear right level
+channel-type.rotel.otherCommand.command.option.CRL_LEVEL_UP = Temporary increase ceiling rear left level
+channel-type.rotel.otherCommand.command.option.CRL_LEVEL_DOWN = Temporary decrease ceiling rear left level
 channel-type.rotel.otherCommand.command.option.CINEMA_EQ_TOGGLE = Cinema EQ Toggle
 channel-type.rotel.otherCommand.command.option.PARTY_MODE_TOGGLE = Party Mode Toggle
 channel-type.rotel.otherCommand.command.option.ZONE2_PARTY_MODE_TOGGLE = Zone 2 Party Mode Toggle
index ce0f67139a1548cc693eb1817fcebec731c4c476..acbdcab082badefffb861e4afe333067efe57516 100644 (file)
@@ -22,6 +22,7 @@
                        <channel id="balance" typeId="balance"/>
                        <channel id="speakera" typeId="speakera"/>
                        <channel id="speakerb" typeId="speakerb"/>
+                       <channel id="otherCommand" typeId="otherCommand"/>
                </channels>
 
                <config-description-ref uri="thing-type:rotel:serialandipandprotocol"/>
index bbcb59c3eceab2bd08622db2e2678757eb52f5c4..9816c786f37106f3ede6136b917eb6713700982d 100644 (file)
@@ -16,6 +16,7 @@
                        <channel id="volume" typeId="system.volume"/>
                        <channel id="mute" typeId="system.mute"/>
                        <channel id="brightness" typeId="brightness"/>
+                       <channel id="otherCommand" typeId="otherCommand"/>
                </channels>
 
                <properties>
index b14453c2ca8c7c287ccd40d406c8967834bec15e..cca4f36c909af93ebd868628c2fc2f17dfb863eb 100644 (file)
@@ -20,6 +20,7 @@
                        <channel id="brightness" typeId="brightness"/>
                        <channel id="tcbypass" typeId="tcbypass"/>
                        <channel id="balance" typeId="balance"/>
+                       <channel id="otherCommand" typeId="otherCommand"/>
                </channels>
 
                <config-description-ref uri="thing-type:rotel:serialandipandprotocol"/>
index 359a7fded3c883548d14d98b59aaa879fd8eb2d2..7932244d224a1164028044c003831dbbb15c3484 100644 (file)
@@ -14,6 +14,7 @@
                        <channel id="source" typeId="source"/>
                        <channel id="playControl" typeId="system.media-control"/>
                        <channel id="frequency" typeId="frequency"/>
+                       <channel id="otherCommand" typeId="otherCommand"/>
                </channels>
 
                <properties>
index fcee522fd6e58f66349b6952930f281f181902c7..386a2fbccbf1e8a8d5fc2aa67c31d7b622b8e416 100644 (file)
@@ -16,6 +16,7 @@
                        <channel id="volume" typeId="system.volume"/>
                        <channel id="mute" typeId="system.mute"/>
                        <channel id="brightness" typeId="brightness"/>
+                       <channel id="otherCommand" typeId="otherCommand"/>
                </channels>
 
                <properties>
index 3c78565a204b56b0506184d3ad87c91d0893ff9d..68ab9731b8f783b3d1749cd6a983c6a3d9578f49 100644 (file)
@@ -16,6 +16,7 @@
                        <channel id="volume" typeId="system.volume"/>
                        <channel id="mute" typeId="system.mute"/>
                        <channel id="brightness" typeId="brightness"/>
+                       <channel id="otherCommand" typeId="otherCommand"/>
                </channels>
 
                <properties>