Skip to content

Commit

Permalink
[rotel] Support added for model RX-1052
Browse files Browse the repository at this point in the history
Signed-off-by: Laurent Garnier <lg.hc@free.fr>
  • Loading branch information
lolodomo committed Mar 9, 2024
1 parent c4f166d commit 2bb8c81
Show file tree
Hide file tree
Showing 14 changed files with 553 additions and 133 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public class RotelBindingConstants {
public static final String THING_TYPE_ID_RSX1550 = "rsx1550";
public static final String THING_TYPE_ID_RSX1560 = "rsx1560";
public static final String THING_TYPE_ID_RSX1562 = "rsx1562";
public static final String THING_TYPE_ID_RX1052 = "rx1052";
public static final String THING_TYPE_ID_A11 = "a11";
public static final String THING_TYPE_ID_A12 = "a12";
public static final String THING_TYPE_ID_A14 = "a14";
Expand Down Expand Up @@ -91,6 +92,7 @@ public class RotelBindingConstants {
public static final ThingTypeUID THING_TYPE_RSX1550 = new ThingTypeUID(BINDING_ID, THING_TYPE_ID_RSX1550);
public static final ThingTypeUID THING_TYPE_RSX1560 = new ThingTypeUID(BINDING_ID, THING_TYPE_ID_RSX1560);
public static final ThingTypeUID THING_TYPE_RSX1562 = new ThingTypeUID(BINDING_ID, THING_TYPE_ID_RSX1562);
public static final ThingTypeUID THING_TYPE_RX1052 = new ThingTypeUID(BINDING_ID, THING_TYPE_ID_RX1052);
public static final ThingTypeUID THING_TYPE_A11 = new ThingTypeUID(BINDING_ID, THING_TYPE_ID_A11);
public static final ThingTypeUID THING_TYPE_A12 = new ThingTypeUID(BINDING_ID, THING_TYPE_ID_A12);
public static final ThingTypeUID THING_TYPE_A14 = new ThingTypeUID(BINDING_ID, THING_TYPE_ID_A14);
Expand Down Expand Up @@ -332,6 +334,7 @@ public class RotelBindingConstants {
public static final String KEY_POWER_ZONE2 = "power_zone2";
public static final String KEY_POWER_ZONE3 = "power_zone3";
public static final String KEY_POWER_ZONE4 = "power_zone4";
public static final String KEY_POWER_ZONES = "power_zones";
public static final String KEY_SOURCE_ZONE2 = "source_zone2";
public static final String KEY_SOURCE_ZONE3 = "source_zone3";
public static final String KEY_SOURCE_ZONE4 = "source_zone4";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,17 @@
@Component(configurationPid = "binding.rotel", service = ThingHandlerFactory.class)
public class RotelHandlerFactory extends BaseThingHandlerFactory {

private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.unmodifiableSet(Stream
.of(THING_TYPE_RSP1066, THING_TYPE_RSP1068, THING_TYPE_RSP1069, THING_TYPE_RSP1098, THING_TYPE_RSP1570,
THING_TYPE_RSP1572, THING_TYPE_RSX1055, THING_TYPE_RSX1056, THING_TYPE_RSX1057, THING_TYPE_RSX1058,
THING_TYPE_RSX1065, THING_TYPE_RSX1067, THING_TYPE_RSX1550, THING_TYPE_RSX1560, THING_TYPE_RSX1562,
THING_TYPE_A11, THING_TYPE_A12, THING_TYPE_A14, THING_TYPE_CD11, THING_TYPE_CD14, THING_TYPE_RA11,
THING_TYPE_RA12, THING_TYPE_RA1570, THING_TYPE_RA1572, THING_TYPE_RA1592, THING_TYPE_RAP1580,
THING_TYPE_RC1570, THING_TYPE_RC1572, THING_TYPE_RC1590, THING_TYPE_RCD1570, THING_TYPE_RCD1572,
THING_TYPE_RCX1500, THING_TYPE_RDD1580, THING_TYPE_RDG1520, THING_TYPE_RSP1576, THING_TYPE_RSP1582,
THING_TYPE_RT09, THING_TYPE_RT11, THING_TYPE_RT1570, THING_TYPE_T11, THING_TYPE_T14, THING_TYPE_C8,
THING_TYPE_M8, THING_TYPE_P5, THING_TYPE_S5, THING_TYPE_X3, THING_TYPE_X5)
.collect(Collectors.toSet()));
private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections
.unmodifiableSet(Stream.of(THING_TYPE_RSP1066, THING_TYPE_RSP1068, THING_TYPE_RSP1069, THING_TYPE_RSP1098,
THING_TYPE_RSP1570, THING_TYPE_RSP1572, THING_TYPE_RSX1055, THING_TYPE_RSX1056, THING_TYPE_RSX1057,
THING_TYPE_RSX1058, THING_TYPE_RSX1065, THING_TYPE_RSX1067, THING_TYPE_RSX1550, THING_TYPE_RSX1560,
THING_TYPE_RSX1562, THING_TYPE_RX1052, THING_TYPE_A11, THING_TYPE_A12, THING_TYPE_A14,
THING_TYPE_CD11, THING_TYPE_CD14, THING_TYPE_RA11, THING_TYPE_RA12, THING_TYPE_RA1570,
THING_TYPE_RA1572, THING_TYPE_RA1592, THING_TYPE_RAP1580, THING_TYPE_RC1570, THING_TYPE_RC1572,
THING_TYPE_RC1590, THING_TYPE_RCD1570, THING_TYPE_RCD1572, THING_TYPE_RCX1500, THING_TYPE_RDD1580,
THING_TYPE_RDG1520, THING_TYPE_RSP1576, THING_TYPE_RSP1582, THING_TYPE_RT09, THING_TYPE_RT11,
THING_TYPE_RT1570, THING_TYPE_T11, THING_TYPE_T14, THING_TYPE_C8, THING_TYPE_M8, THING_TYPE_P5,
THING_TYPE_S5, THING_TYPE_X3, THING_TYPE_X5).collect(Collectors.toSet()));

private final SerialPortManager serialPortManager;
private final RotelStateDescriptionOptionProvider stateDescriptionProvider;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,18 @@ public enum RotelModel {
concatenate(DSP_CMDS_SET1, MENU2_CTRL_CMDS, OTHER_CMDS_SET1), (byte) 0xA1, 42, 5, true,
RotelFlagsMapping.MAPPING2),
RSP1069("RSP-1069", 38400, 1, 3, true, 96, true, 6, false, RECORD_FONCTION_SELECT, 2,
concatenate(DSP_CMDS_SET1, MENU2_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET2), (byte) 0xA2, 42, 5, true,
RotelFlagsMapping.MAPPING5),
concatenate(DSP_CMDS_SET1, MENU2_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET2, OTHER_CMDS_SET4), (byte) 0xA2,
42, 5, true, RotelFlagsMapping.MAPPING5),
RSP1098("RSP-1098", 19200, 1, 1, true, 96, true, 6, false, ZONE_SELECT, 2,
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, DSP_CMDS_SET1, MENU2_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET2,
List.of(RESET_FACTORY)),
OTHER_CMDS_SET4, 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, DSP_CMDS_SET1, NUMERIC_KEY_CMDS, MENU3_CTRL_CMDS, OTHER_CMDS_SET1,
OTHER_CMDS_SET4),
OTHER_CMDS_SET2, OTHER_CMDS_SET4, OTHER_CMDS_SET8),
(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),
Expand All @@ -65,12 +65,12 @@ public enum RotelModel {
MENU2_CTRL_CMDS, OTHER_CMDS_SET1),
(byte) 0xC5, 13, 8, true, RotelFlagsMapping.MAPPING1),
RSX1057("RSX-1057", 19200, 1, 1, true, 96, true, 6, false, RECORD_FONCTION_SELECT, 2,
concatenate(DSP_CMDS_SET1, TUNER_CMDS_SET2, ZONE2_TUNER_CMDS_SET2, NUMERIC_KEY_CMDS, ZONE2_NUMERIC_KEY_CMDS,
MENU2_CTRL_CMDS, OTHER_CMDS_SET1),
concatenate(DSP_CMDS_SET1, TUNER_CMDS_SET2, TUNER_CMDS_SET3, ZONE2_TUNER_CMDS_SET2, NUMERIC_KEY_CMDS,
ZONE2_NUMERIC_KEY_CMDS, MENU2_CTRL_CMDS, OTHER_CMDS_SET1),
(byte) 0xC7, 13, 8, true, RotelFlagsMapping.MAPPING1),
RSX1058("RSX-1058", 38400, 1, 3, true, 96, true, 6, false, RECORD_FONCTION_SELECT, 2,
concatenate(DSP_CMDS_SET1, TUNER_CMDS_SET2, ZONE234_TUNER_CMDS_SET1, NUMERIC_KEY_CMDS,
ZONE234_NUMERIC_KEY_CMDS, MENU2_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET2),
concatenate(DSP_CMDS_SET1, TUNER_CMDS_SET2, TUNER_CMDS_SET3, ZONE234_TUNER_CMDS_SET1, NUMERIC_KEY_CMDS,
ZONE234_NUMERIC_KEY_CMDS, MENU2_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET2, OTHER_CMDS_SET4),
(byte) 0xC8, 13, 8, true, RotelFlagsMapping.MAPPING4),
RSX1065("RSX-1065", 19200, 3, 1, false, 96, false, 12, false, ZONE_SELECT, 1,
concatenate(DSP_CMDS_SET1, TUNER_CMDS_SET1, NUMERIC_KEY_CMDS, MENU2_CTRL_CMDS, OTHER_CMDS_SET3),
Expand All @@ -80,19 +80,28 @@ public enum RotelModel {
MENU2_CTRL_CMDS, OTHER_CMDS_SET1),
(byte) 0xC4, 42, 5, true, RotelFlagsMapping.MAPPING2),
RSX1550("RSX-1550", 115200, 1, 3, true, 96, true, 6, false, RECORD_FONCTION_SELECT, 3,
concatenate(DSP_CMDS_SET1, TUNER_CMDS_SET2, ZONE234_TUNER_CMDS_SET1, NUMERIC_KEY_CMDS,
ZONE234_NUMERIC_KEY_CMDS, MENU2_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET2,
concatenate(DSP_CMDS_SET1, TUNER_CMDS_SET2, TUNER_CMDS_SET3, ZONE234_TUNER_CMDS_SET1, NUMERIC_KEY_CMDS,
ZONE234_NUMERIC_KEY_CMDS, MENU2_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET2, OTHER_CMDS_SET4,
List.of(RESET_FACTORY)),
(byte) 0xC9, 13, 8, true, RotelFlagsMapping.MAPPING3),
RSX1560("RSX-1560", 115200, 1, 3, true, 96, true, 6, false, RECORD_FONCTION_SELECT, 3,
concatenate(DSP_CMDS_SET1, TUNER_CMDS_SET2, ZONE234_TUNER_CMDS_SET1, NUMERIC_KEY_CMDS,
ZONE234_NUMERIC_KEY_CMDS, MENU2_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET2,
concatenate(DSP_CMDS_SET1, TUNER_CMDS_SET2, TUNER_CMDS_SET3, ZONE234_TUNER_CMDS_SET1, NUMERIC_KEY_CMDS,
ZONE234_NUMERIC_KEY_CMDS, MENU2_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET2, OTHER_CMDS_SET4,
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, 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),
concatenate(DSP_CMDS_SET2, DSP_CMDS_SET1, TUNER_CMDS_SET2, TUNER_CMDS_SET3, ZONE234_TUNER_CMDS_SET1,
NUMERIC_KEY_CMDS, ZONE234_NUMERIC_KEY_CMDS, MENU3_CTRL_CMDS, OTHER_CMDS_SET1, OTHER_CMDS_SET2,
OTHER_CMDS_SET4, OTHER_CMDS_SET8),
(byte) 0xCC, 42, 5, true, RotelFlagsMapping.MAPPING5),
RX1052_19200("RX-1052 (baud rate 19200)", 19200, 22, 3, true, 90, true, 10, false, RECORD_FONCTION_SELECT, -1,
concatenate(TUNER_CMDS_SET2, ZONE234_TUNER_CMDS_SET1, NUMERIC_KEY_CMDS, ZONE234_NUMERIC_KEY_CMDS,
OTHER_CMDS_SET2, OTHER_CMDS_SET9),
(byte) 0x61, 11, 5, false, RotelFlagsMapping.MAPPING6),
RX1052_38400("RX-1052 (baud rate 38400)", 38400, 22, 3, true, 90, true, 10, false, RECORD_FONCTION_SELECT, -1,
concatenate(TUNER_CMDS_SET2, ZONE234_TUNER_CMDS_SET1, NUMERIC_KEY_CMDS, ZONE234_NUMERIC_KEY_CMDS,
OTHER_CMDS_SET2, OTHER_CMDS_SET9),
(byte) 0x61, 11, 5, false, RotelFlagsMapping.MAPPING6),
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,
Expand Down Expand Up @@ -760,6 +769,15 @@ public void setMultiInput(byte[] flags, boolean on) throws RotelException {
flagsMapping.setMultiInput(flags, on);
}

/**
* Inform whether the zone 2 is present in flags
*
* @return true if the zone 2 is available
*/
public boolean isZone2PresentInFlags() {
return flagsMapping.isZone2Available();
}

/**
* Inform whether the zone 2 is set to ON in the flags
*
Expand All @@ -785,6 +803,15 @@ public void setZone2(byte[] flags, boolean on) throws RotelException {
flagsMapping.setZone2(flags, on);
}

/**
* Inform whether the zone 3 is present in flags
*
* @return true if the zone 3 is available
*/
public boolean isZone3PresentInFlags() {
return flagsMapping.isZone3Available();
}

/**
* Inform whether the zone 3 is set to ON in the flags
*
Expand All @@ -810,6 +837,15 @@ public void setZone3(byte[] flags, boolean on) throws RotelException {
flagsMapping.setZone3(flags, on);
}

/**
* Inform whether the zone 4 is present in flags
*
* @return true if the zone 4 is available
*/
public boolean isZone4PresentInFlags() {
return flagsMapping.isZone4Available();
}

/**
* Inform whether the zone 4 is set to ON in the flags
*
Expand All @@ -835,6 +871,40 @@ public void setZone4(byte[] flags, boolean on) throws RotelException {
flagsMapping.setZone4(flags, on);
}

/**
* Inform whether the zone is present in flags
*
* @return true if the zone is available
*/
public boolean isZonePresentInFlags() {
return flagsMapping.isZoneAvailable();
}

/**
* Inform whether the zone is set to ON in the flags
*
* @param flags the flag from the standard response message
*
* @return true if the zone is ON
*
* @throws RotelException - If this information is not present in the flags for this model
*/
public boolean isZoneOn(byte[] flags) throws RotelException {
return flagsMapping.isZoneOn(flags);
}

/**
* Set the zone to ON or OFF in the flags
*
* @param flags the flag from the standard response message
* @param on true for ON and false for OFF
*
* @throws RotelException - If this information is not present in the flags for this model
*/
public void setZone(byte[] flags, boolean on) throws RotelException {
flagsMapping.setZone(flags, on);
}

/**
* Inform whether more than front left and front right channels are set as active in the flags
*
Expand Down

0 comments on commit 2bb8c81

Please sign in to comment.