diff --git a/bundles/org.openhab.binding.rotel/README.md b/bundles/org.openhab.binding.rotel/README.md index cf002594e1c..6fb0a92a769 100644 --- a/bundles/org.openhab.binding.rotel/README.md +++ b/bundles/org.openhab.binding.rotel/README.md @@ -166,6 +166,7 @@ The following channels are available: | track | Current Track | Number | The current CD track number | | | random | Random Mode | Switch | The current random mode | | | repeat | Repeat Mode | String | The current repeat mode | TRACK, DISC, OFF | +| radioPreset | Radio Preset | Number | Select a radio preset | INCREASE, DECREASE, value between 1 and 30 | | mainZone#line1 | Front Panel Line 1 | String | The first line displayed on the device front panel | | | mainZone#line2 | Front Panel Line 2 | String | The second line displayed on the device front panel | | | frequency, zone1#frequency, zone2#frequency, zone3#frequency, zone4#frequency | Current Frequency | Number | The current frequency (in kHz) for digital source input | | @@ -198,9 +199,9 @@ Here are the list of channels available for each thing type: | 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 | +| rcx1500 | power, source, volume, mute, playControl, radioPreset | | rdd1580 | power, source, playControl, frequency, otherCommand | -| rdg1520 | power, source, playControl | +| rdg1520 | power, source, playControl, radioPreset | | 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 | | rsp1069 | 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 | @@ -219,11 +220,11 @@ Here are the list of channels available for each thing type: | rsx1560 | 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 | | rsx1562 | 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 | | rt09 | power, source, playControl, brightness | -| rt11 | power, source, brightness | -| rt1570 | power, source, brightness | +| rt11 | power, source, radioPreset, brightness | +| rt1570 | power, source, radioPreset, brightness | | s5 | power, brightness | -| t11 | power, source, brightness | -| t14 | power, source, brightness | +| t11 | power, source, radioPreset, brightness | +| t14 | power, source, radioPreset, brightness | | x3 | power, source, volume, mute, bass, treble, frequency, brightness, tcbypass, balance, otherCommand | | x5 | power, source, volume, mute, bass, treble, frequency, brightness, tcbypass, balance, otherCommand | diff --git a/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/RotelBindingConstants.java b/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/RotelBindingConstants.java index 5f4a7e3f840..6ef0390c1b4 100644 --- a/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/RotelBindingConstants.java +++ b/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/RotelBindingConstants.java @@ -139,6 +139,7 @@ public class RotelBindingConstants { public static final String CHANNEL_RANDOM = "random"; public static final String CHANNEL_REPEAT = "repeat"; public static final String CHANNEL_FREQUENCY = "frequency"; + public static final String CHANNEL_RADIO_PRESET = "radioPreset"; public static final String CHANNEL_LINE1 = "mainZone#line1"; public static final String CHANNEL_LINE2 = "mainZone#line2"; public static final String CHANNEL_BRIGHTNESS = "brightness"; diff --git a/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/communication/RotelCommand.java b/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/communication/RotelCommand.java index d3bb3dc679c..8d441e30d78 100644 --- a/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/communication/RotelCommand.java +++ b/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/communication/RotelCommand.java @@ -355,7 +355,13 @@ public enum RotelCommand { RDS_PTY("RDS PTY", PRIMARY_CMD, (byte) 0x45), RDS_TP("RDS TP", PRIMARY_CMD, (byte) 0x46), RDS_TA("RDS TA", PRIMARY_CMD, (byte) 0x47), - FM_MONO_TOGGLE("FM Mono", PRIMARY_CMD, (byte) 0x26), + FM_MONO_TOGGLE("FM Mono", PRIMARY_CMD, (byte) 0x26, "fm_mono", null), + CALL_FM_PRESET("Recall FM Preset", "call_fm_preset_", "fm_"), + CALL_DAB_PRESET("Recall DAB Preset", "call_dab_preset_", "dab_"), + CALL_IRADIO_PRESET("Recall iRadio Preset", "call_iradio_preset_", null), + PRESET("Request current preset", "get_current_preset", null), + FM_PRESET("Request current FM preset number", null, "fm?"), + DAB_PRESET("Request current DAB preset number", null, "dab?"), ZONE2_TUNE_UP("Zone 2 Tune Up", ZONE2_CMD, (byte) 0x28), ZONE2_TUNE_DOWN("Zone 2 Tune Down", ZONE2_CMD, (byte) 0x29), ZONE2_PRESET_UP("Zone 2 Preset Up", ZONE2_CMD, (byte) 0x6F), diff --git a/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/communication/RotelSimuConnector.java b/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/communication/RotelSimuConnector.java index b57e8da340a..30b6316250c 100644 --- a/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/communication/RotelSimuConnector.java +++ b/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/communication/RotelSimuConnector.java @@ -78,6 +78,9 @@ public class RotelSimuConnector extends RotelConnector { private int track = 1; private boolean randomMode; private RotelRepeatMode repeatMode = RotelRepeatMode.OFF; + private int fmPreset = 5; + private int dabPreset = 15; + private int iradioPreset = 25; private boolean selectingRecord; private int showZone; private int dimmer; @@ -834,6 +837,69 @@ public class RotelSimuConnector extends RotelConnector { case REPEAT_MODE: textAscii = buildRepeatModeAsciiResponse(); break; + case CALL_FM_PRESET: + if (value != null) { + fmPreset = value.intValue(); + if (protocol == RotelProtocol.ASCII_V1) { + variableLength = true; + textAscii = buildAsciiResponse(String.format("%s%d", KEY_FM_PRESET, fmPreset), + "8,Radio FM"); + } else { + accepted = false; + } + } else { + accepted = false; + } + break; + case CALL_DAB_PRESET: + if (value != null) { + dabPreset = value.intValue(); + if (protocol == RotelProtocol.ASCII_V1) { + variableLength = true; + textAscii = buildAsciiResponse(String.format("%s%d", KEY_DAB_PRESET, dabPreset), + "9,Radio DAB"); + } else { + accepted = false; + } + } else { + accepted = false; + } + break; + case CALL_IRADIO_PRESET: + if (value != null) { + iradioPreset = value.intValue(); + variableLength = true; + textAscii = buildAsciiResponse(String.format("%s%d", KEY_IRADIO_PRESET, iradioPreset), + "12,Radio iRadio"); + } else { + accepted = false; + } + break; + case PRESET: + if ("FM".equals(sources[0].getName())) { + textAscii = buildAsciiResponse(KEY_PRESET_FM, fmPreset); + } else if ("DAB".equals(sources[0].getName())) { + textAscii = buildAsciiResponse(KEY_PRESET_DAB, dabPreset); + } else if ("IRADIO".equals(sources[0].getName())) { + textAscii = buildAsciiResponse(KEY_PRESET_IRADIO, iradioPreset); + } else { + textAscii = buildAsciiResponse(KEY_PRESET_FM, 0); + } + break; + case FM_PRESET: + if ("FM".equals(sources[0].getName())) { + textAscii = buildAsciiResponse(KEY_FM, String.format("%02d", fmPreset)); + } else { + textAscii = buildAsciiResponse(KEY_FM, "00"); + } + break; + case DAB_PRESET: + if ("DAB".equals(sources[0].getName())) { + textAscii = buildAsciiResponse(KEY_DAB, String.format("%02d", dabPreset)); + } else { + textAscii = buildAsciiResponse(KEY_DAB, "00"); + } + break; case SOURCE_MULTI_INPUT: multiinput = !multiinput; text = "MULTI IN " + (multiinput ? "ON" : "OFF"); diff --git a/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/handler/RotelHandler.java b/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/handler/RotelHandler.java index f0bd7b02d1e..dd5ef9f1efa 100644 --- a/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/handler/RotelHandler.java +++ b/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/handler/RotelHandler.java @@ -118,6 +118,7 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL private int track; private boolean randomMode; private RotelRepeatMode repeatMode = RotelRepeatMode.OFF; + private int radioPreset; private double[] frequencies = { 0.0, 0.0, 0.0, 0.0, 0.0 }; private String frontPanelLine1 = ""; private String frontPanelLine2 = ""; @@ -855,6 +856,45 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL } } break; + case CHANNEL_RADIO_PRESET: + if (!isPowerOn()) { + success = false; + logger.debug("Command {} from channel {} ignored: device in standby", command, channel); + } else { + int value = 0; + if (radioPreset > 0 && command instanceof IncreaseDecreaseType + && command == IncreaseDecreaseType.INCREASE) { + value = radioPreset + 1; + } else if (radioPreset > 0 && command instanceof IncreaseDecreaseType + && command == IncreaseDecreaseType.DECREASE) { + value = radioPreset - 1; + } else if (command instanceof DecimalType) { + value = ((DecimalType) command).intValue(); + } + if (value >= 1 && value <= 30) { + RotelSource source = sources[0]; + RotelCommand presetCallCmd = source == null ? null : getRadioPresetCallCommand(source); + if (presetCallCmd != null) { + sendCommand(presetCallCmd, value); + // In ASCII V2, the previous command will return nothing + RotelCommand presetGetCmd = source == null ? null + : getRadioPresetGetCommand(source); + if (protocol == RotelProtocol.ASCII_V2 && presetGetCmd != null) { + Thread.sleep(SLEEP_INTV); + sendCommand(presetGetCmd); + } + } else { + success = false; + logger.debug("Command {} from channel {} ignored: current source is not radio", + command, channel); + } + } else { + success = false; + logger.debug("Command {} from channel {} ignored: value out of bounds", command, + channel); + } + } + break; case CHANNEL_BRIGHTNESS: case CHANNEL_ALL_BRIGHTNESS: if (!isPowerOn()) { @@ -1327,6 +1367,33 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL default: break; } + int preset = 0; + if (key.startsWith(KEY_FM_PRESET)) { + try { + preset = Integer.parseInt(key.substring(KEY_FM_PRESET.length())); + } catch (NumberFormatException e) { + // Considering the Rotel protocol, the parsing could not fail in practice. + // In case it would fail, 0 will be considered as preset, meaning undefined. + } + key = KEY_FM_PRESET; + } else if (key.startsWith(KEY_DAB_PRESET)) { + try { + preset = Integer.parseInt(key.substring(KEY_DAB_PRESET.length())); + } catch (NumberFormatException e) { + // Considering the Rotel protocol, the parsing could not fail in practice. + // In case it would fail, 0 will be considered as preset, meaning undefined. + } + key = KEY_DAB_PRESET; + } else if (key.startsWith(KEY_IRADIO_PRESET)) { + try { + preset = Integer.parseInt(key.substring(KEY_IRADIO_PRESET.length())); + } catch (NumberFormatException e) { + // Considering the Rotel protocol, the parsing could not fail in practice. + // In case it would fail, 0 will be considered as preset, meaning undefined. + } + key = KEY_IRADIO_PRESET; + } + RotelSource source; try { switch (key) { case KEY_ERROR: @@ -1488,9 +1555,24 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL } break; case KEY_SOURCE: - sources[0] = model.getSourceFromCommand(RotelCommand.getFromAsciiCommand(value)); + source = model.getSourceFromCommand(RotelCommand.getFromAsciiCommand(value)); + sources[0] = source; updateChannelState(CHANNEL_SOURCE); updateChannelState(CHANNEL_MAIN_SOURCE); + RotelCommand presetGetCmd = getRadioPresetGetCommand(source); + if (presetGetCmd != null) { + // Request current preset (with a delay) + scheduler.schedule(() -> { + try { + sendCommand(presetGetCmd); + } catch (RotelException e) { + logger.debug("Getting the radio preset failed: {}", e.getMessage()); + } + }, 250, TimeUnit.MILLISECONDS); + } else { + radioPreset = 0; + updateChannelState(CHANNEL_RADIO_PRESET); + } break; case KEY_RECORD: recordSource = model.getRecordSourceFromCommand(RotelCommand.getFromAsciiCommand(value)); @@ -1535,7 +1617,7 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL } break; case KEY_TRACK: - RotelSource source = sources[0]; + source = sources[0]; if (source != null && source.getName().equals("CD") && !model.hasSourceControl()) { track = Integer.parseInt(value); updateChannelState(CHANNEL_TRACK); @@ -1566,6 +1648,28 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL throw new RotelException("Invalid value"); } break; + case KEY_PRESET_FM: + case KEY_PRESET_DAB: + case KEY_PRESET_IRADIO: + preset = Integer.parseInt(value); + case KEY_FM_PRESET: + case KEY_DAB_PRESET: + case KEY_IRADIO_PRESET: + if (preset >= 1 && preset <= 30) { + radioPreset = preset; + } else { + radioPreset = 0; + } + updateChannelState(CHANNEL_RADIO_PRESET); + break; + case KEY_FM: + case KEY_DAB: + preset = Integer.parseInt(value); + if (preset >= 1 && preset <= 30) { + radioPreset = preset; + updateChannelState(CHANNEL_RADIO_PRESET); + } + break; case KEY_FREQ: case KEY_FREQ_ZONE1: case KEY_FREQ_ZONE2: @@ -1744,6 +1848,7 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL updateChannelState(CHANNEL_TRACK); updateChannelState(CHANNEL_RANDOM); updateChannelState(CHANNEL_REPEAT); + updateChannelState(CHANNEL_RADIO_PRESET); updateChannelState(CHANNEL_FREQUENCY); updateChannelState(CHANNEL_BRIGHTNESS); updateChannelState(CHANNEL_TCBYPASS); @@ -2296,6 +2401,11 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL } } break; + case CHANNEL_RADIO_PRESET: + if (isPowerOn()) { + state = radioPreset == 0 ? UnDefType.UNDEF : new DecimalType(radioPreset); + } + break; case CHANNEL_FREQUENCY: case CHANNEL_ZONE1_FREQUENCY: case CHANNEL_ZONE2_FREQUENCY: @@ -2779,6 +2889,43 @@ public class RotelHandler extends BaseThingHandler implements RotelMessageEventL } } + private @Nullable RotelCommand getRadioPresetGetCommand(RotelSource source) { + if (protocol == RotelProtocol.ASCII_V1) { + switch (source.getName()) { + case "FM": + case "DAB": + case "IRADIO": + return RotelCommand.PRESET; + default: + break; + } + } else if (protocol == RotelProtocol.ASCII_V2) { + switch (source.getName()) { + case "FM": + return RotelCommand.FM_PRESET; + case "DAB": + return RotelCommand.DAB_PRESET; + default: + break; + } + } + return null; + } + + private @Nullable RotelCommand getRadioPresetCallCommand(RotelSource source) { + switch (source.getName()) { + case "FM": + return RotelCommand.CALL_FM_PRESET; + case "DAB": + return RotelCommand.CALL_DAB_PRESET; + case "IRADIO": + return RotelCommand.CALL_IRADIO_PRESET; + default: + break; + } + return null; + } + private void sendCommand(RotelCommand cmd) throws RotelException { sendCommand(cmd, null); } diff --git a/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/protocol/ascii/RotelAsciiV1ProtocolHandler.java b/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/protocol/ascii/RotelAsciiV1ProtocolHandler.java index 565e4f82780..e39c70aac4d 100644 --- a/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/protocol/ascii/RotelAsciiV1ProtocolHandler.java +++ b/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/protocol/ascii/RotelAsciiV1ProtocolHandler.java @@ -101,6 +101,11 @@ public class RotelAsciiV1ProtocolHandler extends RotelAbstractAsciiProtocolHandl messageStr += String.format("%d", value); } break; + case CALL_FM_PRESET: + case CALL_DAB_PRESET: + case CALL_IRADIO_PRESET: + messageStr += String.format("%02d", value); + break; default: break; } diff --git a/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/protocol/ascii/RotelAsciiV2ProtocolHandler.java b/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/protocol/ascii/RotelAsciiV2ProtocolHandler.java index 8b9ca22a5c5..cf69ab4cbec 100644 --- a/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/protocol/ascii/RotelAsciiV2ProtocolHandler.java +++ b/bundles/org.openhab.binding.rotel/src/main/java/org/openhab/binding/rotel/internal/protocol/ascii/RotelAsciiV2ProtocolHandler.java @@ -112,6 +112,10 @@ public class RotelAsciiV2ProtocolHandler extends RotelAbstractAsciiProtocolHandl messageStr += String.format("%d", value); } break; + case CALL_FM_PRESET: + case CALL_DAB_PRESET: + messageStr += String.format("%02d", value); + break; default: break; } diff --git a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/i18n/rotel.properties b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/i18n/rotel.properties index 2fa4976732f..7bc44e09afd 100644 --- a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/i18n/rotel.properties +++ b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/i18n/rotel.properties @@ -116,6 +116,120 @@ 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.radioPreset.label = Radio Preset +channel-type.rotel.radioPreset.description = Select a radio preset +channel-type.rotel.random.label = Random Mode +channel-type.rotel.random.description = The current random mode +channel-type.rotel.recordSource.label = Record Source +channel-type.rotel.recordSource.description = Select the source to be recorded +channel-type.rotel.repeat.label = Repeat Mode +channel-type.rotel.repeat.description = The current repeat mode +channel-type.rotel.repeat.state.option.TRACK = Track +channel-type.rotel.repeat.state.option.DISC = Disc +channel-type.rotel.repeat.state.option.OFF = Off +channel-type.rotel.source.label = Source Input +channel-type.rotel.source.description = Select the source input +channel-type.rotel.speakera.label = Speaker-A Adjustment +channel-type.rotel.speakera.description = Turn on/off the speaker group A +channel-type.rotel.speakerb.label = Speaker-B Adjustment +channel-type.rotel.speakerb.description = Turn on/off the speaker group B +channel-type.rotel.tcbypass.label = Tone Control Bypass +channel-type.rotel.tcbypass.description = The user's bass-/treble-settings are bypassed +channel-type.rotel.track.label = Current Track +channel-type.rotel.track.description = The current CD track number +channel-type.rotel.treble.label = Treble Adjustment +channel-type.rotel.treble.description = Adjust the treble +channel-type.rotel.volumeUpDown.label = Volume +channel-type.rotel.volumeUpDown.description = Increase or decrease the volume + +# thing type configuration + +config.host.label = Address +config.host.description = Host name or IP address of the Rotel device (IP connection) or the machine connected to the Rotel device (serial over IP) +config.hostOverIp.label = Address +config.hostOverIp.description = Host name or IP address of the machine connected to the Rotel device (serial over IP) +config.inputLabelCd.label = Input Label CD +config.inputLabelCd.description = Label setup for the source CD +config.inputLabelMulti.label = Input Label Multi Input +config.inputLabelMulti.description = Label setup for the source Multi Input +config.inputLabelTape.label = Input Label Tape +config.inputLabelTape.description = Label setup for the source Tape +config.inputLabelTuner.label = Input Label Tuner +config.inputLabelTuner.description = Label setup for the source Tuner +config.inputLabelUsb.label = Input Label USB +config.inputLabelUsb.description = Label setup for the source USB +config.inputLabelVideo1.label = Input Label Video 1 +config.inputLabelVideo1.description = Label setup for the source Video 1 +config.inputLabelVideo2.label = Input Label Video 2 +config.inputLabelVideo2.description = Label setup for the source Video 2 +config.inputLabelVideo3.label = Input Label Video 3 +config.inputLabelVideo3.description = Label setup for the source Video 3 +config.inputLabelVideo4.label = Input Label Video 4 +config.inputLabelVideo4.description = Label setup for the source Video 4 +config.inputLabelVideo5.label = Input Label Video 5 +config.inputLabelVideo5.description = Label setup for the source Video 5 +config.inputLabelVideo6.label = Input Label Video 6 +config.inputLabelVideo6.description = Label setup for the source Video 6 +config.port.label = Port +config.port.description = Communication port (IP or serial over IP). For IP connection to the Rotel device, keep the default port 9590 +config.portOverIp.label = Port +config.portOverIp.description = Communication port (serial over IP) +config.protocol.label = Protocol Version +config.protocol.description = Choose one of the two protocol versions (depends on your device firmware) +config.protocol.option.ASCII_V1 = ASCII V1 +config.protocol.option.ASCII_V2 = ASCII V2 +config.serialPort.label = Serial Port +config.serialPort.description = Serial port to use for connecting to the Rotel device + +# channel group types + +channel-group.allZones.label = All Zones +channel-group.allZones.description = The controls applied to all zones +channel-group.mainZone.label = Main Zone +channel-group.mainZone.description = The controls of the main zone +channel-group.zone.label = Zone +channel-group.zone.description = The controls of the zone +channel-group.zone1.label = Zone 1 +channel-group.zone1.description = The controls of the zone 1 +channel-group.zone2.label = Zone 2 +channel-group.zone2.description = The controls of the zone 2 +channel-group.zone3.label = Zone 3 +channel-group.zone3.description = The controls of the zone 3 +channel-group.zone4.label = Zone 4 +channel-group.zone4.description = The controls of the zone 4 + +# channel dynamic state options + +channel-type.rotel.dsp.state.option.NONE = No DSP +channel-type.rotel.dsp.state.option.STEREO3 = Dolby 3 Stereo +channel-type.rotel.dsp.state.option.STEREO5 = 5 Channel Stereo +channel-type.rotel.dsp.state.option.STEREO7 = 7 Channel Stereo +channel-type.rotel.dsp.state.option.STEREO9 = 9 Channel Stereo +channel-type.rotel.dsp.state.option.STEREO11 = 11 Channel Stereo +channel-type.rotel.dsp.state.option.MUSIC1 = Music 1 +channel-type.rotel.dsp.state.option.MUSIC2 = Music 2 +channel-type.rotel.dsp.state.option.MUSIC3 = Music 3 +channel-type.rotel.dsp.state.option.MUSIC4 = Music 4 +channel-type.rotel.dsp.state.option.DSP1 = DSP 1 +channel-type.rotel.dsp.state.option.DSP2 = DSP 2 +channel-type.rotel.dsp.state.option.DSP3 = DSP 3 +channel-type.rotel.dsp.state.option.DSP4 = DSP 4 +channel-type.rotel.dsp.state.option.PROLOGIC = Dolby Pro Logic +channel-type.rotel.dsp.state.option.PLIICINEMA = Dolby PLII Cinema +channel-type.rotel.dsp.state.option.PLIIMUSIC = Dolby PLII Music +channel-type.rotel.dsp.state.option.PLIIGAME = Dolby PLII Game +channel-type.rotel.dsp.state.option.PLIIXCINEMA = Dolby PLII/PLIIx Cinema +channel-type.rotel.dsp.state.option.PLIIXMUSIC = Dolby PLII/PLIIx Music +channel-type.rotel.dsp.state.option.PLIIXGAME = Dolby PLII/PLIIx Game +channel-type.rotel.dsp.state.option.PLIIZ = Dolby PLIIz +channel-type.rotel.dsp.state.option.NEO6CINEMA = dts Neo:6 Cinema +channel-type.rotel.dsp.state.option.NEO6MUSIC = dts Neo:6 Music +channel-type.rotel.dsp.state.option.BYPASS = Analog Bypass +channel-type.rotel.dsp.state.option.ATMOS = Dolby Atmos +channel-type.rotel.dsp.state.option.NEURALX = dts Neural:X + +# channel dynamic command options + 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 @@ -305,115 +419,6 @@ channel-type.rotel.otherCommand.command.option.HDMI_AMP_MODE = HDMI Amp Mode channel-type.rotel.otherCommand.command.option.HDMI_TV_MODE = HDMI TV Mode channel-type.rotel.otherCommand.command.option.ROOM_EQ_TOGGLE = Temporary Room EQ Toggle channel-type.rotel.otherCommand.command.option.SPEAKER_SETTING_TOGGLE = Speaker Level Setting Toggle -channel-type.rotel.random.label = Random Mode -channel-type.rotel.random.description = The current random mode -channel-type.rotel.recordSource.label = Record Source -channel-type.rotel.recordSource.description = Select the source to be recorded -channel-type.rotel.repeat.label = Repeat Mode -channel-type.rotel.repeat.description = The current repeat mode -channel-type.rotel.repeat.state.option.TRACK = Track -channel-type.rotel.repeat.state.option.DISC = Disc -channel-type.rotel.repeat.state.option.OFF = Off -channel-type.rotel.source.label = Source Input -channel-type.rotel.source.description = Select the source input -channel-type.rotel.speakera.label = Speaker-A Adjustment -channel-type.rotel.speakera.description = Turn on/off the speaker group A -channel-type.rotel.speakerb.label = Speaker-B Adjustment -channel-type.rotel.speakerb.description = Turn on/off the speaker group B -channel-type.rotel.tcbypass.label = Tone Control Bypass -channel-type.rotel.tcbypass.description = The user's bass-/treble-settings are bypassed -channel-type.rotel.track.label = Current Track -channel-type.rotel.track.description = The current CD track number -channel-type.rotel.treble.label = Treble Adjustment -channel-type.rotel.treble.description = Adjust the treble -channel-type.rotel.volumeUpDown.label = Volume -channel-type.rotel.volumeUpDown.description = Increase or decrease the volume - -# thing type configuration - -config.host.label = Address -config.host.description = Host name or IP address of the Rotel device (IP connection) or the machine connected to the Rotel device (serial over IP) -config.hostOverIp.label = Address -config.hostOverIp.description = Host name or IP address of the machine connected to the Rotel device (serial over IP) -config.inputLabelCd.label = Input Label CD -config.inputLabelCd.description = Label setup for the source CD -config.inputLabelMulti.label = Input Label Multi Input -config.inputLabelMulti.description = Label setup for the source Multi Input -config.inputLabelTape.label = Input Label Tape -config.inputLabelTape.description = Label setup for the source Tape -config.inputLabelTuner.label = Input Label Tuner -config.inputLabelTuner.description = Label setup for the source Tuner -config.inputLabelUsb.label = Input Label USB -config.inputLabelUsb.description = Label setup for the source USB -config.inputLabelVideo1.label = Input Label Video 1 -config.inputLabelVideo1.description = Label setup for the source Video 1 -config.inputLabelVideo2.label = Input Label Video 2 -config.inputLabelVideo2.description = Label setup for the source Video 2 -config.inputLabelVideo3.label = Input Label Video 3 -config.inputLabelVideo3.description = Label setup for the source Video 3 -config.inputLabelVideo4.label = Input Label Video 4 -config.inputLabelVideo4.description = Label setup for the source Video 4 -config.inputLabelVideo5.label = Input Label Video 5 -config.inputLabelVideo5.description = Label setup for the source Video 5 -config.inputLabelVideo6.label = Input Label Video 6 -config.inputLabelVideo6.description = Label setup for the source Video 6 -config.port.label = Port -config.port.description = Communication port (IP or serial over IP). For IP connection to the Rotel device, keep the default port 9590 -config.portOverIp.label = Port -config.portOverIp.description = Communication port (serial over IP) -config.protocol.label = Protocol Version -config.protocol.description = Choose one of the two protocol versions (depends on your device firmware) -config.protocol.option.ASCII_V1 = ASCII V1 -config.protocol.option.ASCII_V2 = ASCII V2 -config.serialPort.label = Serial Port -config.serialPort.description = Serial port to use for connecting to the Rotel device - -# channel group types - -channel-group.allZones.label = All Zones -channel-group.allZones.description = The controls applied to all zones -channel-group.mainZone.label = Main Zone -channel-group.mainZone.description = The controls of the main zone -channel-group.zone.label = Zone -channel-group.zone.description = The controls of the zone -channel-group.zone1.label = Zone 1 -channel-group.zone1.description = The controls of the zone 1 -channel-group.zone2.label = Zone 2 -channel-group.zone2.description = The controls of the zone 2 -channel-group.zone3.label = Zone 3 -channel-group.zone3.description = The controls of the zone 3 -channel-group.zone4.label = Zone 4 -channel-group.zone4.description = The controls of the zone 4 - -# channel types - -channel-type.rotel.dsp.state.option.NONE = No DSP -channel-type.rotel.dsp.state.option.STEREO3 = Dolby 3 Stereo -channel-type.rotel.dsp.state.option.STEREO5 = 5 Channel Stereo -channel-type.rotel.dsp.state.option.STEREO7 = 7 Channel Stereo -channel-type.rotel.dsp.state.option.STEREO9 = 9 Channel Stereo -channel-type.rotel.dsp.state.option.STEREO11 = 11 Channel Stereo -channel-type.rotel.dsp.state.option.MUSIC1 = Music 1 -channel-type.rotel.dsp.state.option.MUSIC2 = Music 2 -channel-type.rotel.dsp.state.option.MUSIC3 = Music 3 -channel-type.rotel.dsp.state.option.MUSIC4 = Music 4 -channel-type.rotel.dsp.state.option.DSP1 = DSP 1 -channel-type.rotel.dsp.state.option.DSP2 = DSP 2 -channel-type.rotel.dsp.state.option.DSP3 = DSP 3 -channel-type.rotel.dsp.state.option.DSP4 = DSP 4 -channel-type.rotel.dsp.state.option.PROLOGIC = Dolby Pro Logic -channel-type.rotel.dsp.state.option.PLIICINEMA = Dolby PLII Cinema -channel-type.rotel.dsp.state.option.PLIIMUSIC = Dolby PLII Music -channel-type.rotel.dsp.state.option.PLIIGAME = Dolby PLII Game -channel-type.rotel.dsp.state.option.PLIIXCINEMA = Dolby PLII/PLIIx Cinema -channel-type.rotel.dsp.state.option.PLIIXMUSIC = Dolby PLII/PLIIx Music -channel-type.rotel.dsp.state.option.PLIIXGAME = Dolby PLII/PLIIx Game -channel-type.rotel.dsp.state.option.PLIIZ = Dolby PLIIz -channel-type.rotel.dsp.state.option.NEO6CINEMA = dts Neo:6 Cinema -channel-type.rotel.dsp.state.option.NEO6MUSIC = dts Neo:6 Music -channel-type.rotel.dsp.state.option.BYPASS = Analog Bypass -channel-type.rotel.dsp.state.option.ATMOS = Dolby Atmos -channel-type.rotel.dsp.state.option.NEURALX = dts Neural:X # thing status descriptions diff --git a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/channels.xml b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/channels.xml index a87f436d014..e44c50f9ca0 100644 --- a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/channels.xml +++ b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/channels.xml @@ -278,4 +278,12 @@ Choose the command to send to the device + + + Number + + Select a radio preset + + veto + diff --git a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rcx1500.xml b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rcx1500.xml index 3656bedaf34..5ebf612d996 100644 --- a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rcx1500.xml +++ b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rcx1500.xml @@ -15,6 +15,7 @@ + diff --git a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rdg1520.xml b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rdg1520.xml index 32fc5b2faf3..3f3e1c6c96c 100644 --- a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rdg1520.xml +++ b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rdg1520.xml @@ -13,6 +13,7 @@ + diff --git a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rt11.xml b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rt11.xml index f902738f65c..45c18ffa903 100644 --- a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rt11.xml +++ b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rt11.xml @@ -12,6 +12,7 @@ + diff --git a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rt1570.xml b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rt1570.xml index e35b06345d4..474aa009069 100644 --- a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rt1570.xml +++ b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/rt1570.xml @@ -12,6 +12,7 @@ + diff --git a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/t11.xml b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/t11.xml index ed0f8e71d90..ed6c2787b62 100644 --- a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/t11.xml +++ b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/t11.xml @@ -12,6 +12,7 @@ + diff --git a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/t14.xml b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/t14.xml index 3af348acb6b..f457dc557cf 100644 --- a/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/t14.xml +++ b/bundles/org.openhab.binding.rotel/src/main/resources/OH-INF/thing/t14.xml @@ -12,6 +12,7 @@ +