pymammotion 0.0.50__py3-none-any.whl → 0.0.52__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pymammotion might be problematic. Click here for more details.
- pymammotion/data/model/device.py +94 -29
- pymammotion/mammotion/devices/mammotion.py +2 -1
- {pymammotion-0.0.50.dist-info → pymammotion-0.0.52.dist-info}/METADATA +1 -1
- {pymammotion-0.0.50.dist-info → pymammotion-0.0.52.dist-info}/RECORD +6 -6
- {pymammotion-0.0.50.dist-info → pymammotion-0.0.52.dist-info}/LICENSE +0 -0
- {pymammotion-0.0.50.dist-info → pymammotion-0.0.52.dist-info}/WHEEL +0 -0
pymammotion/data/model/device.py
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
4
|
|
|
5
|
+
import betterproto
|
|
6
|
+
|
|
5
7
|
from pymammotion.data.model import HashList
|
|
6
8
|
from pymammotion.data.model.location import Location
|
|
7
9
|
from pymammotion.proto.dev_net import DevNet
|
|
@@ -122,95 +124,158 @@ class MowingDevice:
|
|
|
122
124
|
class DevNetData:
|
|
123
125
|
"""Wrapping class around LubaMsg to return a dataclass from the raw dict."""
|
|
124
126
|
|
|
125
|
-
net:
|
|
127
|
+
net: dict
|
|
128
|
+
|
|
129
|
+
def __init__(self, net: DevNet):
|
|
130
|
+
if isinstance(net, dict):
|
|
131
|
+
self.net = net
|
|
132
|
+
else:
|
|
133
|
+
self.net = net.to_dict()
|
|
126
134
|
|
|
127
135
|
def __getattr__(self, item):
|
|
128
136
|
"""Intercept call to get net in dict and return a betterproto dataclass."""
|
|
129
|
-
if
|
|
130
|
-
return
|
|
137
|
+
if self.net.get(item) is None:
|
|
138
|
+
return DevNet().__getattribute__(item)
|
|
131
139
|
|
|
132
|
-
|
|
140
|
+
if not isinstance(self.net.get(item), dict):
|
|
141
|
+
return self.net.get(item)
|
|
142
|
+
|
|
143
|
+
return DevNet().__getattribute__(item).from_dict(value=self.net.get(item))
|
|
133
144
|
|
|
134
145
|
|
|
135
146
|
@dataclass
|
|
136
147
|
class SysData:
|
|
137
148
|
"""Wrapping class around LubaMsg to return a dataclass from the raw dict."""
|
|
138
149
|
|
|
139
|
-
sys:
|
|
150
|
+
sys: dict
|
|
151
|
+
|
|
152
|
+
def __init__(self, sys: MctlSys):
|
|
153
|
+
if isinstance(sys, dict):
|
|
154
|
+
self.sys = sys
|
|
155
|
+
else:
|
|
156
|
+
self.sys = sys.to_dict()
|
|
140
157
|
|
|
141
158
|
def __getattr__(self, item):
|
|
142
|
-
"""Intercept call to get
|
|
143
|
-
if
|
|
144
|
-
return
|
|
159
|
+
"""Intercept call to get sys in dict and return a betterproto dataclass."""
|
|
160
|
+
if self.sys.get(item) is None:
|
|
161
|
+
return MctlSys().__getattribute__(item)
|
|
162
|
+
|
|
163
|
+
if not isinstance(self.sys.get(item), dict):
|
|
164
|
+
return self.sys.get(item)
|
|
145
165
|
|
|
146
|
-
return MctlSys().__getattribute__(item).from_dict(value=self.sys
|
|
166
|
+
return MctlSys().__getattribute__(item).from_dict(value=self.sys.get(item))
|
|
147
167
|
|
|
148
168
|
|
|
149
169
|
@dataclass
|
|
150
170
|
class NavData:
|
|
151
171
|
"""Wrapping class around LubaMsg to return a dataclass from the raw dict."""
|
|
152
172
|
|
|
153
|
-
nav:
|
|
173
|
+
nav: dict
|
|
174
|
+
|
|
175
|
+
def __init__(self, nav: MctlNav):
|
|
176
|
+
if isinstance(nav, dict):
|
|
177
|
+
self.nav = nav
|
|
178
|
+
else:
|
|
179
|
+
self.nav = nav.to_dict()
|
|
154
180
|
|
|
155
181
|
def __getattr__(self, item):
|
|
156
182
|
"""Intercept call to get nav in dict and return a betterproto dataclass."""
|
|
157
|
-
if
|
|
158
|
-
return
|
|
183
|
+
if self.nav.get(item) is None:
|
|
184
|
+
return MctlNav().__getattribute__(item)
|
|
185
|
+
|
|
186
|
+
if not isinstance(self.nav.get(item), dict):
|
|
187
|
+
return self.nav.get(item)
|
|
159
188
|
|
|
160
|
-
return MctlNav().__getattribute__(item).from_dict(value=self.nav
|
|
189
|
+
return MctlNav().__getattribute__(item).from_dict(value=self.nav.get(item))
|
|
161
190
|
|
|
162
191
|
|
|
163
192
|
@dataclass
|
|
164
193
|
class DriverData:
|
|
165
194
|
"""Wrapping class around LubaMsg to return a dataclass from the raw dict."""
|
|
166
195
|
|
|
167
|
-
driver:
|
|
196
|
+
driver: dict
|
|
197
|
+
|
|
198
|
+
def __init__(self, driver: MctlDriver):
|
|
199
|
+
if isinstance(driver, dict):
|
|
200
|
+
self.driver = driver
|
|
201
|
+
else:
|
|
202
|
+
self.driver = driver.to_dict()
|
|
168
203
|
|
|
169
204
|
def __getattr__(self, item):
|
|
170
205
|
"""Intercept call to get driver in dict and return a betterproto dataclass."""
|
|
171
|
-
if
|
|
172
|
-
return
|
|
206
|
+
if self.driver.get(item) is None:
|
|
207
|
+
return MctlDriver().__getattribute__(item)
|
|
208
|
+
|
|
209
|
+
if not isinstance(self.driver.get(item), dict):
|
|
210
|
+
return self.driver.get(item)
|
|
173
211
|
|
|
174
|
-
return MctlDriver().__getattribute__(item).from_dict(value=self.driver
|
|
212
|
+
return MctlDriver().__getattribute__(item).from_dict(value=self.driver.get(item))
|
|
175
213
|
|
|
176
214
|
|
|
177
215
|
@dataclass
|
|
178
216
|
class MulData:
|
|
179
217
|
"""Wrapping class around LubaMsg to return a dataclass from the raw dict."""
|
|
180
218
|
|
|
181
|
-
mul:
|
|
219
|
+
mul: dict
|
|
220
|
+
|
|
221
|
+
def __init__(self, mul: SocMul):
|
|
222
|
+
if isinstance(mul, dict):
|
|
223
|
+
self.mul = mul
|
|
224
|
+
else:
|
|
225
|
+
self.mul = mul.to_dict()
|
|
182
226
|
|
|
183
227
|
def __getattr__(self, item):
|
|
184
228
|
"""Intercept call to get mul in dict and return a betterproto dataclass."""
|
|
185
|
-
if
|
|
186
|
-
return
|
|
229
|
+
if self.mul.get(item) is None:
|
|
230
|
+
return SocMul().__getattribute__(item)
|
|
231
|
+
|
|
232
|
+
if not isinstance(self.mul.get(item), dict):
|
|
233
|
+
return self.mul.get(item)
|
|
187
234
|
|
|
188
|
-
return SocMul().__getattribute__(item).from_dict(value=self.mul
|
|
235
|
+
return SocMul().__getattribute__(item).from_dict(value=self.mul.get(item))
|
|
189
236
|
|
|
190
237
|
|
|
191
238
|
@dataclass
|
|
192
239
|
class OtaData:
|
|
193
240
|
"""Wrapping class around LubaMsg to return a dataclass from the raw dict."""
|
|
194
241
|
|
|
195
|
-
ota:
|
|
242
|
+
ota: dict
|
|
243
|
+
|
|
244
|
+
def __init__(self, ota: MctlOta):
|
|
245
|
+
if isinstance(ota, dict):
|
|
246
|
+
self.ota = ota
|
|
247
|
+
else:
|
|
248
|
+
self.ota = ota.to_dict()
|
|
196
249
|
|
|
197
250
|
def __getattr__(self, item):
|
|
198
251
|
"""Intercept call to get ota in dict and return a betterproto dataclass."""
|
|
199
|
-
if
|
|
200
|
-
return
|
|
252
|
+
if self.ota.get(item) is None:
|
|
253
|
+
return MctlOta().__getattribute__(item)
|
|
254
|
+
|
|
255
|
+
if not isinstance(self.ota.get(item), dict):
|
|
256
|
+
return self.ota.get(item)
|
|
201
257
|
|
|
202
|
-
return MctlOta().__getattribute__(item).from_dict(value=self.ota
|
|
258
|
+
return MctlOta().__getattribute__(item).from_dict(value=self.ota.get(item))
|
|
203
259
|
|
|
204
260
|
|
|
205
261
|
@dataclass
|
|
206
262
|
class PeptData:
|
|
207
263
|
"""Wrapping class around LubaMsg to return a dataclass from the raw dict."""
|
|
208
264
|
|
|
209
|
-
pept:
|
|
265
|
+
pept: dict
|
|
266
|
+
|
|
267
|
+
def __init__(self, pept: MctlPept):
|
|
268
|
+
if isinstance(pept, dict):
|
|
269
|
+
self.pept = pept
|
|
270
|
+
else:
|
|
271
|
+
self.pept = pept.to_dict()
|
|
210
272
|
|
|
211
273
|
def __getattr__(self, item):
|
|
212
274
|
"""Intercept call to get pept in dict and return a betterproto dataclass."""
|
|
213
|
-
if
|
|
214
|
-
return
|
|
275
|
+
if self.pept.get(item) is None:
|
|
276
|
+
return MctlPept().__getattribute__(item)
|
|
277
|
+
|
|
278
|
+
if not isinstance(self.pept.get(item), dict):
|
|
279
|
+
return self.pept.get(item)
|
|
215
280
|
|
|
216
|
-
return MctlPept().__getattribute__(item).from_dict(value=self.pept
|
|
281
|
+
return MctlPept().__getattribute__(item).from_dict(value=self.pept.get(item))
|
|
@@ -531,6 +531,7 @@ class MammotionBaseBLEDevice(MammotionBaseDevice):
|
|
|
531
531
|
if self._notify_future and not self._notify_future.done():
|
|
532
532
|
self._notify_future.set_result(data)
|
|
533
533
|
|
|
534
|
+
self._reset_disconnect_timer()
|
|
534
535
|
await self._state_manager.notification(new_msg)
|
|
535
536
|
|
|
536
537
|
async def _start_notify(self) -> None:
|
|
@@ -663,7 +664,7 @@ class MammotionBaseBLEDevice(MammotionBaseDevice):
|
|
|
663
664
|
_LOGGER.debug("%s: Disconnecting", self.name)
|
|
664
665
|
try:
|
|
665
666
|
"""We reset what command the robot last heard before disconnecting."""
|
|
666
|
-
if client.is_connected:
|
|
667
|
+
if client is not None and client.is_connected:
|
|
667
668
|
command_bytes = self._commands.send_todev_ble_sync(2)
|
|
668
669
|
await self._message.post_custom_data_bytes(command_bytes)
|
|
669
670
|
await client.stop_notify(self._read_char)
|
|
@@ -20,7 +20,7 @@ pymammotion/bluetooth/data/notifydata.py,sha256=N1bphpueWUWbsWUcpZmMGt2CyCgLcKAF
|
|
|
20
20
|
pymammotion/const.py,sha256=3plR6t5sFVhx3LoUbW5PE2gqIANoD-fSm-T0q8uIwIU,336
|
|
21
21
|
pymammotion/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
pymammotion/data/model/__init__.py,sha256=d8FlIgCcWqoH3jJSpnm-IY-25RM-l2nbRwLtWjSHo74,222
|
|
23
|
-
pymammotion/data/model/device.py,sha256
|
|
23
|
+
pymammotion/data/model/device.py,sha256=-Hb66EQbz2RXMx8dQ0kwqCmpn2fRtutoSwU4Xf0Y4hg,9139
|
|
24
24
|
pymammotion/data/model/enums.py,sha256=tD_vYsxstOV_lUkYF9uWkrjVOgAJPNnGevy_xmiu3WE,1558
|
|
25
25
|
pymammotion/data/model/excute_boarder_params.py,sha256=kadSth4y-VXlXIZ6R-Ng-kDvBbM-3YRr8bmR86qR0U0,1355
|
|
26
26
|
pymammotion/data/model/execute_boarder.py,sha256=oDb2h5tFtOQIa8OCNYaDugqCgCZBLjQRzQTNVcJVAGQ,1072
|
|
@@ -55,7 +55,7 @@ pymammotion/mammotion/commands/messages/video.py,sha256=_8lJsU4sLm2CGnc7RDkueA0A
|
|
|
55
55
|
pymammotion/mammotion/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
56
|
pymammotion/mammotion/control/joystick.py,sha256=EWV20MMzQuhbLlNlXbsyZKSEpeM7x1CQL7saU4Pn0-g,6165
|
|
57
57
|
pymammotion/mammotion/devices/__init__.py,sha256=T72jt0ejtMjo1rPmn_FeMF3pmp0LLeRRpc9WcDKEYYY,126
|
|
58
|
-
pymammotion/mammotion/devices/mammotion.py,sha256=
|
|
58
|
+
pymammotion/mammotion/devices/mammotion.py,sha256=YlRPiVZfiXEB0U9H9f-Cgn4aXjoiyjyite4spUVf69E,29802
|
|
59
59
|
pymammotion/mqtt/__init__.py,sha256=Ocs5e-HLJvTuDpVXyECEsWIvwsUaxzj7lZ9mSYutNDY,105
|
|
60
60
|
pymammotion/mqtt/mammotion_mqtt.py,sha256=EBnUwqah-mZNcAn5Hq2sV3NKXueIYWNhYPiaXwaXdHg,9084
|
|
61
61
|
pymammotion/proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -102,7 +102,7 @@ pymammotion/utility/datatype_converter.py,sha256=v6zym2Zu0upxQjR-xDqXwi3516zpntS
|
|
|
102
102
|
pymammotion/utility/device_type.py,sha256=B_Y1WCRPlFMDOqC13H0ltInyPkbPMIxCoZccCC13fmc,8154
|
|
103
103
|
pymammotion/utility/periodic.py,sha256=9wJMfwXPlx6Mbp3Fws7LLTI34ZDKphH1bva_Ggyk32g,3281
|
|
104
104
|
pymammotion/utility/rocker_util.py,sha256=syPL0QN4zMzHiTIkUKS7RXBBptjdbkfNlPddwUD5V3A,7171
|
|
105
|
-
pymammotion-0.0.
|
|
106
|
-
pymammotion-0.0.
|
|
107
|
-
pymammotion-0.0.
|
|
108
|
-
pymammotion-0.0.
|
|
105
|
+
pymammotion-0.0.52.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
106
|
+
pymammotion-0.0.52.dist-info/METADATA,sha256=T_ZjjSw8nsBl5MU0MzTr-U6fVrfImiOP-VF21_adq6c,3884
|
|
107
|
+
pymammotion-0.0.52.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
108
|
+
pymammotion-0.0.52.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|