* Secondary, upper rail of a dual action shade: => NOT INVERTED
*/
posKind1 = posKindCoords.ordinal();
- if (shadeCapabilities.supportsBlackoutShade()) {
+ if (shadeCapabilities.supportsSecondaryOverlapped()) {
position1 = MAX_SHADE - (int) Math.round((double) percent / 100 * MAX_SHADE);
} else {
position1 = (int) Math.round((double) percent / 100 * MAX_SHADE);
if (VANE_TILT_POSITION.equals(posKind1) && shadeCapabilities.supportsTiltOnClosed()) {
return PercentType.HUNDRED;
}
- if (SECONDARY_POSITION.equals(posKind1) && shadeCapabilities.supportsBlackoutShade()) {
+ if (SECONDARY_POSITION.equals(posKind1) && shadeCapabilities.supportsSecondaryOverlapped()) {
return PercentType.HUNDRED;
}
break;
* Secondary, upper rail of a dual action shade: => NOT INVERTED
*/
if (posKindCoords.equals(posKind1)) {
- if (shadeCapabilities.supportsBlackoutShade()) {
+ if (shadeCapabilities.supportsSecondaryOverlapped()) {
return new PercentType(100 - (int) Math.round((double) position1 / MAX_SHADE * 100));
}
return new PercentType((int) Math.round((double) position1 / MAX_SHADE * 100));
}
- if (PRIMARY_POSITION.equals(posKind1) && shadeCapabilities.supportsBlackoutShade()) {
+ if (PRIMARY_POSITION.equals(posKind1) && shadeCapabilities.supportsSecondaryOverlapped()) {
return PercentType.ZERO;
}
break;
} else {
setPosition1(shadeCapabilities, posKindCoords, percent);
}
- } else if (shadeCapabilities.supportsBlackoutShade()) {
+ } else if (shadeCapabilities.supportsSecondaryOverlapped()) {
setPosition1(shadeCapabilities, posKindCoords, percent);
}
break;
*/
private static final Map<Integer, Capabilities> CAPABILITIES_DATABASE = Arrays.asList(
// @formatter:off
- new Capabilities(0).primary().tiltOnClosed() .text("Bottom Up"),
- new Capabilities(1).primary().tiltOnClosed() .text("Bottom Up Tilt 90°"),
- new Capabilities(2).primary().tiltAnywhere().tilt180() .text("Bottom Up Tilt 180°"),
- new Capabilities(3).primary().tiltOnClosed() .text("Vertical"),
- new Capabilities(4).primary().tiltAnywhere().tilt180() .text("Vertical Tilt 180°"),
- new Capabilities(5) .tiltAnywhere().tilt180() .text("Tilt Only 180°"),
- new Capabilities(6).primary() .text("Top Down") .primaryStateInverted(),
- new Capabilities(7).primary() .secondary().text("Top Down Bottom Up"),
- new Capabilities(8).primary() .text("Duolite Lift") .withBlackoutShade(),
- new Capabilities(9).primary().tiltAnywhere() .text("Duolite Lift and Tilt 90°").withBlackoutShade(),
+ new Capabilities(0).primary() .tiltOnClosed() .text("Bottom Up"),
+ new Capabilities(1).primary() .tiltOnClosed() .text("Bottom Up Tilt 90°"),
+ new Capabilities(2).primary() .tiltAnywhere().tilt180() .text("Bottom Up Tilt 180°"),
+ new Capabilities(3).primary() .tiltOnClosed() .text("Vertical"),
+ new Capabilities(4).primary() .tiltAnywhere().tilt180() .text("Vertical Tilt 180°"),
+ new Capabilities(5) .tiltAnywhere().tilt180() .text("Tilt Only 180°"),
+ new Capabilities(6).primaryInverted() .text("Top Down"),
+ new Capabilities(7).primary() .secondary() .text("Top Down Bottom Up"),
+ new Capabilities(8).primary() .secondaryOverlapped().text("Duolite Lift"),
+ new Capabilities(9).primary() .tiltAnywhere() .secondaryOverlapped().text("Duolite Lift and Tilt 90°"),
// @formatter:on
new Capabilities()).stream().collect(Collectors.toMap(Capabilities::getValue, Function.identity()));
private boolean supportsSecondary;
private boolean supportsTiltOnClosed;
private boolean supportsTiltAnywhere;
- private boolean supportsBlackoutShade;
- private boolean primaryStateInverted;
+ private boolean supportsSecondaryOverlapped;
+ private boolean primaryInverted;
private boolean tilt180Degrees;
public Capabilities() {
}
- protected Capabilities withBlackoutShade() {
- supportsBlackoutShade = true;
+ protected Capabilities secondaryOverlapped() {
+ supportsSecondaryOverlapped = true;
return this;
}
return this;
}
- protected Capabilities primaryStateInverted() {
- primaryStateInverted = true;
+ protected Capabilities primaryInverted() {
+ supportsPrimary = true;
+ primaryInverted = true;
return this;
}
}
/**
- * Check if the Capabilities class instance supports a secondary shade.
+ * Check if the Capabilities class instance if the primary shade is inverted.
*
* @return true if the primary shade is inverted.
*/
- public boolean isPrimaryStateInverted() {
- return primaryStateInverted;
+ public boolean isPrimaryInverted() {
+ return primaryInverted;
}
/**
- * Check if the Capabilities class instance supports 'tilt when closed'.
+ * Check if the Capabilities class instance supports 'tilt on closed'.
*
* Note: Simple bottom up or vertical shades that do not have independent vane controls, can be tilted in a
* simple way, only when they are fully closed, by moving the shade motor a bit further.
*
- * @return true if the primary shade is inverted.
+ * @return true if the it supports tilt on closed.
*/
public boolean supportsTiltOnClosed() {
return supportsTiltOnClosed && !supportsTiltAnywhere;
/**
* Check if the Capabilities class instance supports 180 degrees tilt.
*
- * @return true if the primary shade supports 180 degrees.
+ * @return true if the tilt range is 180 degrees.
*/
public boolean supportsTilt180() {
return tilt180Degrees;
}
/**
- * Check if the Capabilities class instance supports a secondary 'DuoLite' blackout shade.
+ * Check if the Capabilities class instance supports an overlapped secondary shade.
+ * e.g. a 'DuoLite' or blackout shade.
*
- * @return true if the primary shade supports a secondary blackout shade.
+ * @return true if the shade supports a secondary overlapped shade.
*/
- public boolean supportsBlackoutShade() {
- return supportsBlackoutShade;
+ public boolean supportsSecondaryOverlapped() {
+ return supportsSecondaryOverlapped;
}
}
assertTrue(db.getCapabilities(4).supportsTilt180());
assertTrue(db.getCapabilities(5).supportsTilt180());
assertFalse(db.getCapabilities(5).supportsPrimary());
- assertTrue(db.getCapabilities(6).isPrimaryStateInverted());
+ assertTrue(db.getCapabilities(6).isPrimaryInverted());
assertTrue(db.getCapabilities(7).supportsSecondary());
- assertTrue(db.getCapabilities(8).supportsBlackoutShade());
- assertTrue(db.getCapabilities(9).supportsBlackoutShade());
+ assertTrue(db.getCapabilities(8).supportsSecondaryOverlapped());
+ assertTrue(db.getCapabilities(9).supportsSecondaryOverlapped());
assertEquals(db.getType(4).getCapabilities(), 0);
assertEquals(db.getType(-1).getCapabilities(), -1);
assertFalse(db.isTypeInDatabase(99));
assertFalse(db.isCapabilitiesInDatabase(99));
- assertFalse(db.getCapabilities(0).isPrimaryStateInverted());
- assertFalse(db.getCapabilities(-1).isPrimaryStateInverted());
- assertFalse(db.getCapabilities(99).isPrimaryStateInverted());
+ assertFalse(db.getCapabilities(0).isPrimaryInverted());
+ assertFalse(db.getCapabilities(-1).isPrimaryInverted());
+ assertFalse(db.getCapabilities(99).isPrimaryInverted());
assertFalse(db.getCapabilities(0).supportsSecondary());
assertFalse(db.getCapabilities(-1).supportsSecondary());