Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions roborock/data/v1/v1_code_mappings.py
Original file line number Diff line number Diff line change
Expand Up @@ -675,6 +675,7 @@ class RoborockDockTypeCode(RoborockEnum):
type_27_dock = 27
k1c_lite_dock = 28
shell_2e_lite_dock = 30
shell_2e_heat_dock = 40


class RoborockDockDustCollectionModeCode(RoborockEnum):
Expand Down
4 changes: 3 additions & 1 deletion roborock/device_features.py
Original file line number Diff line number Diff line change
Expand Up @@ -674,14 +674,14 @@ def get_supported_features(self) -> list[str]:

_CLEAN_FLUID_AUTO_DELIVERY_DOCK_TYPES = {
RoborockDockTypeCode.o4_dock,
RoborockDockTypeCode.o5_dock,
RoborockDockTypeCode.pearl_plus_dock,
RoborockDockTypeCode.shell_3s_dock,
RoborockDockTypeCode.o6_dock,
RoborockDockTypeCode.couple_dock,
}

_CLEAN_FLUID_AUTO_DELIVERY_AM_DOCK_TYPES = {
RoborockDockTypeCode.o5_dock,
RoborockDockTypeCode.shell_2s_dock,
RoborockDockTypeCode.shell_3_dock,
RoborockDockTypeCode.shell_2c_dock,
Expand Down Expand Up @@ -734,9 +734,11 @@ def get_supported_features(self) -> list[str]:
RoborockDockTypeCode.shell_2c_dock,
RoborockDockTypeCode.shell_3s_dock,
RoborockDockTypeCode.k1_dock,
RoborockDockTypeCode.k1s_dock,
RoborockDockTypeCode.o6_dock,
RoborockDockTypeCode.shell_e_dock,
RoborockDockTypeCode.shell_2e_dock,
RoborockDockTypeCode.shell_3c_dock,
}

_HATCH_DOOR_DOCK_COOL_FAN_DOCK_TYPES = {
Expand Down
17 changes: 17 additions & 0 deletions tests/test_supported_features.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ def test_new_feature_str_missing():
(RoborockDockTypeCode.type_27_dock, True, True),
(RoborockDockTypeCode.k1c_lite_dock, True, True),
(RoborockDockTypeCode.shell_2e_lite_dock, True, True),
(RoborockDockTypeCode.shell_2e_heat_dock, True, True),
],
)
def test_dock_features(dock_type: RoborockDockTypeCode, is_collectable: bool, is_washable: bool) -> None:
Expand All @@ -128,6 +129,12 @@ def test_dock_feature_flags_from_rr_api() -> None:
assert RoborockDockFeatures.from_dock_type(RoborockDockTypeCode.o4_dock).is_clean_fluid_auto_delivery_supported
assert RoborockDockFeatures.from_dock_type(RoborockDockTypeCode.couple_dock).is_hatch_door_dock_cool_fan_supported
assert RoborockDockFeatures.from_dock_type(RoborockDockTypeCode.shell_2e_lite_dock).is_special_support_wash_temp
assert not RoborockDockFeatures.from_dock_type(
RoborockDockTypeCode.shell_2e_heat_dock
).is_clean_fluid_auto_delivery_supported
assert not RoborockDockFeatures.from_dock_type(
RoborockDockTypeCode.shell_2e_heat_dock
).is_water_updown_drain_supported


def test_dock_feature_flags_with_am_variants_from_rr_api() -> None:
Expand All @@ -138,6 +145,10 @@ def test_dock_feature_flags_with_am_variants_from_rr_api() -> None:
assert RoborockDockFeatures.from_dock_type(
RoborockDockTypeCode.shell_3_dock, has_am=True
).is_clean_fluid_auto_delivery_supported
assert RoborockDockFeatures.from_dock_type(RoborockDockTypeCode.o5_dock).is_clean_fluid_auto_delivery_supported
assert RoborockDockFeatures.from_dock_type(
RoborockDockTypeCode.o5_dock, has_am=True
).is_clean_fluid_auto_delivery_supported

assert RoborockDockFeatures.from_dock_type(RoborockDockTypeCode.shell_3_dock).is_clean_carousel_self_clean_supported
assert not RoborockDockFeatures.from_dock_type(
Expand All @@ -148,6 +159,12 @@ def test_dock_feature_flags_with_am_variants_from_rr_api() -> None:
assert RoborockDockFeatures.from_dock_type(
RoborockDockTypeCode.o5_dock, has_am=True
).is_water_updown_drain_supported
assert RoborockDockFeatures.from_dock_type(
RoborockDockTypeCode.k1s_dock, has_am=True
).is_water_updown_drain_supported
assert RoborockDockFeatures.from_dock_type(
RoborockDockTypeCode.shell_3c_dock, has_am=True
).is_water_updown_drain_supported


@pytest.mark.parametrize(
Expand Down
Loading