Skip to content

Commit aed8470

Browse files
nanomadedenhaus
andauthored
Add minor map to map capabilities (#898)
Co-authored-by: Robert Resch <robert@resch.dev>
1 parent 1465b5c commit aed8470

27 files changed

Lines changed: 179 additions & 31 deletions

deebot_client/capabilities.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ class CapabilityMap:
174174
changed: CapabilityEvent[MapChangedEvent]
175175
clear: CapabilityExecute[[]] | None = None
176176
major: CapabilityEvent[MajorMapEvent]
177+
minor: CapabilityExecute[[str, int]]
177178
multi_state: CapabilitySetEnable[MultimapStateEvent]
178179
position: CapabilityEvent[PositionsEvent]
179180
relocation: CapabilityExecute[[]]

deebot_client/commands/json/map.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ class GetMinorMap(JsonCommandWithMessageHandling, MessageBodyDataDict):
389389

390390
NAME = "getMinorMap"
391391

392-
def __init__(self, *, map_id: str, piece_index: int) -> None:
392+
def __init__(self, map_id: str, piece_index: int) -> None:
393393
super().__init__({"mid": map_id, "type": "ol", "pieceIndex": piece_index})
394394

395395
@classmethod

deebot_client/device.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
_LOGGER = get_logger(__name__)
3939
_AVAILABLE_CHECK_INTERVAL = 60
4040

41-
4241
DeviceCommandExecute = Callable[[Command], Coroutine[Any, Any, dict[str, Any]]]
4342

4443

@@ -67,7 +66,11 @@ def __init__(
6766
self.execute_command, self.capabilities.get_refresh_commands
6867
)
6968

70-
self.map: Final[Map] = Map(self.execute_command, self.events)
69+
self.map: Final[Map | None] = (
70+
Map(self.execute_command, self.events, self.capabilities.map)
71+
if self.capabilities.map
72+
else None
73+
)
7174

7275
async def on_pos(event: PositionsEvent) -> None:
7376
if self._state == StateEvent(State.DOCKED):
@@ -141,7 +144,8 @@ async def teardown(self) -> None:
141144
await self._available_task
142145

143146
await self.events.teardown()
144-
await self.map.teardown()
147+
if self.map:
148+
await self.map.teardown()
145149

146150
async def _available_task_worker(self) -> None:
147151
while True:

deebot_client/hardware/deebot/2o4lnm.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@
4242
from deebot_client.commands.json.error import GetError
4343
from deebot_client.commands.json.fan_speed import GetFanSpeed, SetFanSpeed
4444
from deebot_client.commands.json.life_span import GetLifeSpan, ResetLifeSpan
45-
from deebot_client.commands.json.map import GetCachedMapInfo, GetMajorMap, GetMapTrace
45+
from deebot_client.commands.json.map import (
46+
GetCachedMapInfo,
47+
GetMajorMap,
48+
GetMapTrace,
49+
GetMinorMap,
50+
)
4651
from deebot_client.commands.json.multimap_state import (
4752
GetMultimapState,
4853
SetMultimapState,
@@ -162,6 +167,7 @@
162167
cached_info=CapabilityEvent(CachedMapInfoEvent, [GetCachedMapInfo()]),
163168
changed=CapabilityEvent(MapChangedEvent, []),
164169
major=CapabilityEvent(MajorMapEvent, [GetMajorMap()]),
170+
minor=CapabilityExecute(GetMinorMap),
165171
multi_state=CapabilitySetEnable(
166172
MultimapStateEvent, [GetMultimapState()], SetMultimapState
167173
),

deebot_client/hardware/deebot/4bdkrs.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,12 @@
4949
from deebot_client.commands.json.error import GetError
5050
from deebot_client.commands.json.fan_speed import GetFanSpeed, SetFanSpeed
5151
from deebot_client.commands.json.life_span import GetLifeSpan, ResetLifeSpan
52-
from deebot_client.commands.json.map import GetCachedMapInfo, GetMajorMap, GetMapTrace
52+
from deebot_client.commands.json.map import (
53+
GetCachedMapInfo,
54+
GetMajorMap,
55+
GetMapTrace,
56+
GetMinorMap,
57+
)
5358
from deebot_client.commands.json.multimap_state import (
5459
GetMultimapState,
5560
SetMultimapState,
@@ -192,6 +197,7 @@
192197
cached_info=CapabilityEvent(CachedMapInfoEvent, [GetCachedMapInfo()]),
193198
changed=CapabilityEvent(MapChangedEvent, []),
194199
major=CapabilityEvent(MajorMapEvent, [GetMajorMap()]),
200+
minor=CapabilityExecute(GetMinorMap),
195201
multi_state=CapabilitySetEnable(
196202
MultimapStateEvent, [GetMultimapState()], SetMultimapState
197203
),

deebot_client/hardware/deebot/7bryc5.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@
4242
from deebot_client.commands.json.error import GetError
4343
from deebot_client.commands.json.fan_speed import GetFanSpeed, SetFanSpeed
4444
from deebot_client.commands.json.life_span import GetLifeSpan, ResetLifeSpan
45-
from deebot_client.commands.json.map import GetCachedMapInfo, GetMajorMap, GetMapTrace
45+
from deebot_client.commands.json.map import (
46+
GetCachedMapInfo,
47+
GetMajorMap,
48+
GetMapTrace,
49+
GetMinorMap,
50+
)
4651
from deebot_client.commands.json.multimap_state import (
4752
GetMultimapState,
4853
SetMultimapState,
@@ -153,6 +158,7 @@
153158
cached_info=CapabilityEvent(CachedMapInfoEvent, [GetCachedMapInfo()]),
154159
changed=CapabilityEvent(MapChangedEvent, []),
155160
major=CapabilityEvent(MajorMapEvent, [GetMajorMap()]),
161+
minor=CapabilityExecute(GetMinorMap),
156162
multi_state=CapabilitySetEnable(
157163
MultimapStateEvent, [GetMultimapState()], SetMultimapState
158164
),

deebot_client/hardware/deebot/8kwdb4.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@
4242
from deebot_client.commands.json.error import GetError
4343
from deebot_client.commands.json.fan_speed import GetFanSpeed, SetFanSpeed
4444
from deebot_client.commands.json.life_span import GetLifeSpan, ResetLifeSpan
45-
from deebot_client.commands.json.map import GetCachedMapInfo, GetMajorMap, GetMapTrace
45+
from deebot_client.commands.json.map import (
46+
GetCachedMapInfo,
47+
GetMajorMap,
48+
GetMapTrace,
49+
GetMinorMap,
50+
)
4651
from deebot_client.commands.json.multimap_state import (
4752
GetMultimapState,
4853
SetMultimapState,
@@ -153,6 +158,7 @@
153158
cached_info=CapabilityEvent(CachedMapInfoEvent, [GetCachedMapInfo()]),
154159
changed=CapabilityEvent(MapChangedEvent, []),
155160
major=CapabilityEvent(MajorMapEvent, [GetMajorMap()]),
161+
minor=CapabilityExecute(GetMinorMap),
156162
multi_state=CapabilitySetEnable(
157163
MultimapStateEvent, [GetMultimapState()], SetMultimapState
158164
),

deebot_client/hardware/deebot/9s1s80.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
GetCachedMapInfo,
4747
GetMajorMap,
4848
GetMapTrace,
49+
GetMinorMap,
4950
)
5051
from deebot_client.commands.json.multimap_state import (
5152
GetMultimapState,
@@ -168,6 +169,7 @@
168169
),
169170
changed=CapabilityEvent(MapChangedEvent, []),
170171
major=CapabilityEvent(MajorMapEvent, [GetMajorMap()]),
172+
minor=CapabilityExecute(GetMinorMap),
171173
multi_state=CapabilitySetEnable(
172174
MultimapStateEvent, [GetMultimapState()], SetMultimapState
173175
),

deebot_client/hardware/deebot/b2jqs4.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@
4242
from deebot_client.commands.json.error import GetError
4343
from deebot_client.commands.json.fan_speed import GetFanSpeed, SetFanSpeed
4444
from deebot_client.commands.json.life_span import GetLifeSpan, ResetLifeSpan
45-
from deebot_client.commands.json.map import GetCachedMapInfo, GetMajorMap, GetMapTrace
45+
from deebot_client.commands.json.map import (
46+
GetCachedMapInfo,
47+
GetMajorMap,
48+
GetMapTrace,
49+
GetMinorMap,
50+
)
4651
from deebot_client.commands.json.multimap_state import (
4752
GetMultimapState,
4853
SetMultimapState,
@@ -153,6 +158,7 @@
153158
cached_info=CapabilityEvent(CachedMapInfoEvent, [GetCachedMapInfo()]),
154159
changed=CapabilityEvent(MapChangedEvent, []),
155160
major=CapabilityEvent(MajorMapEvent, [GetMajorMap()]),
161+
minor=CapabilityExecute(GetMinorMap),
156162
multi_state=CapabilitySetEnable(
157163
MultimapStateEvent, [GetMultimapState()], SetMultimapState
158164
),

deebot_client/hardware/deebot/buom7k.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,12 @@
4343
from deebot_client.commands.json.error import GetError
4444
from deebot_client.commands.json.fan_speed import GetFanSpeed, SetFanSpeed
4545
from deebot_client.commands.json.life_span import GetLifeSpan, ResetLifeSpan
46-
from deebot_client.commands.json.map import GetCachedMapInfo, GetMajorMap, GetMapTrace
46+
from deebot_client.commands.json.map import (
47+
GetCachedMapInfo,
48+
GetMajorMap,
49+
GetMapTrace,
50+
GetMinorMap,
51+
)
4752
from deebot_client.commands.json.multimap_state import (
4853
GetMultimapState,
4954
SetMultimapState,
@@ -156,6 +161,7 @@
156161
),
157162
changed=CapabilityEvent(MapChangedEvent, []),
158163
major=CapabilityEvent(MajorMapEvent, [GetMajorMap()]),
164+
minor=CapabilityExecute(GetMinorMap),
159165
multi_state=CapabilitySetEnable(
160166
MultimapStateEvent, [GetMultimapState()], SetMultimapState
161167
),

0 commit comments

Comments
 (0)