pymammotion 0.4.43__tar.gz → 0.4.45__tar.gz
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.
- {pymammotion-0.4.43 → pymammotion-0.4.45}/PKG-INFO +1 -1
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/__init__.py +2 -1
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/aliyun/cloud_gateway.py +6 -3
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/commands/messages/media.py +12 -3
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/commands/messages/video.py +2 -2
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/devices/base.py +4 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/devices/mammotion.py +13 -7
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/devices/mammotion_bluetooth.py +2 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/devices/mammotion_cloud.py +2 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mqtt/mammotion_mqtt.py +0 -2
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/luba_msg.proto +2 -1
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/luba_msg_pb2.py +6 -6
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/luba_msg_pb2.pyi +1 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/luba_mul.proto +5 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/luba_mul_pb2.py +19 -17
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/luba_mul_pb2.pyi +10 -2
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/mctrl_driver.proto +21 -0
- pymammotion-0.4.45/pymammotion/proto/mctrl_driver_pb2.py +51 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/mctrl_driver_pb2.pyi +31 -4
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/mctrl_nav.proto +74 -50
- pymammotion-0.4.45/pymammotion/proto/mctrl_nav_pb2.py +134 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/mctrl_nav_pb2.pyi +104 -58
- pymammotion-0.4.45/pymammotion/proto/mctrl_ota.proto +80 -0
- pymammotion-0.4.45/pymammotion/proto/mctrl_ota_pb2.py +45 -0
- pymammotion-0.4.45/pymammotion/proto/mctrl_ota_pb2.pyi +128 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/mctrl_pept.proto +2 -2
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/mctrl_pept_pb2.py +1 -1
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/mctrl_sys.proto +223 -85
- pymammotion-0.4.45/pymammotion/proto/mctrl_sys_pb2.py +190 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/mctrl_sys_pb2.pyi +247 -9
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/utility/constant/device_constant.py +1 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pyproject.toml +2 -2
- pymammotion-0.4.43/pymammotion/proto/mctrl_driver_pb2.py +0 -45
- pymammotion-0.4.43/pymammotion/proto/mctrl_nav_pb2.py +0 -130
- pymammotion-0.4.43/pymammotion/proto/mctrl_ota.proto +0 -42
- pymammotion-0.4.43/pymammotion/proto/mctrl_ota_pb2.py +0 -35
- pymammotion-0.4.43/pymammotion/proto/mctrl_ota_pb2.pyi +0 -65
- pymammotion-0.4.43/pymammotion/proto/mctrl_sys_pb2.py +0 -154
- {pymammotion-0.4.43 → pymammotion-0.4.45}/LICENSE +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/README.md +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/aliyun/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/aliyun/client.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/aliyun/model/aep_response.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/aliyun/model/connect_response.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/aliyun/model/dev_by_account_response.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/aliyun/model/login_by_oauth_response.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/aliyun/model/regions_response.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/aliyun/model/session_by_authcode_response.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/aliyun/regions.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/aliyun/tea/core.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/aliyun/tmp_constant.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/bluetooth/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/bluetooth/ble.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/bluetooth/ble_message.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/bluetooth/const.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/bluetooth/data/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/bluetooth/data/convert.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/bluetooth/data/framectrldata.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/bluetooth/data/notifydata.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/bluetooth/model/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/bluetooth/model/atomic_integer.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/const.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/account.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/device.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/device_config.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/device_info.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/device_limits.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/enums.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/excute_boarder_params.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/execute_boarder.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/generate_route_information.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/hash_list.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/location.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/mowing_modes.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/rapid_state.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/raw_data.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/region_data.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/report_info.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/model/work.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/mqtt/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/mqtt/event.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/mqtt/properties.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/mqtt/status.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/data/state_manager.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/event/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/event/event.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/http/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/http/_init_.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/http/encryption.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/http/http.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/http/model/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/http/model/camera_stream.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/http/model/http.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/commands/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/commands/abstract_message.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/commands/mammotion_command.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/commands/messages/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/commands/messages/driver.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/commands/messages/navigation.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/commands/messages/network.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/commands/messages/ota.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/commands/messages/system.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/control/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/control/joystick.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/devices/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mqtt/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mqtt/linkkit/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mqtt/linkkit/h2client.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mqtt/linkkit/linkkit.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mqtt/mammotion_future.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/basestation.proto +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/basestation_pb2.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/basestation_pb2.pyi +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/common.proto +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/common_pb2.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/common_pb2.pyi +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/dev_net.proto +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/dev_net_pb2.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/dev_net_pb2.pyi +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/proto/mctrl_pept_pb2.pyi +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/py.typed +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/utility/constant/__init__.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/utility/conversions.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/utility/datatype_converter.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/utility/device_config.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/utility/device_type.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/utility/map.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/utility/movement.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/utility/mur_mur_hash.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/utility/periodic.py +0 -0
- {pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/utility/rocker_util.py +0 -0
@@ -35,7 +35,8 @@ if __name__ == "__main__":
|
|
35
35
|
CLIENT_ID = os.environ.get("CLIENT_ID")
|
36
36
|
IOT_TOKEN = os.environ.get("IOT_TOKEN")
|
37
37
|
REGION = os.environ.get("REGION")
|
38
|
-
|
38
|
+
mammotion_http = MammotionHTTP()
|
39
|
+
cloud_client = CloudIOTGateway(mammotion_http)
|
39
40
|
luba = MammotionMQTT(
|
40
41
|
iot_token=IOT_TOKEN or "",
|
41
42
|
region_id=REGION or "",
|
@@ -95,6 +95,7 @@ class CloudIOTGateway:
|
|
95
95
|
|
96
96
|
def __init__(
|
97
97
|
self,
|
98
|
+
mammotion_http: MammotionHTTP,
|
98
99
|
connect_response: ConnectResponse | None = None,
|
99
100
|
login_by_oauth_response: LoginByOAuthResponse | None = None,
|
100
101
|
aep_response: AepResponse | None = None,
|
@@ -103,7 +104,7 @@ class CloudIOTGateway:
|
|
103
104
|
dev_by_account: ListingDevByAccountResponse | None = None,
|
104
105
|
) -> None:
|
105
106
|
"""Initialize the CloudIOTGateway."""
|
106
|
-
self.mammotion_http: MammotionHTTP
|
107
|
+
self.mammotion_http: MammotionHTTP = mammotion_http
|
107
108
|
self._app_key = APP_KEY
|
108
109
|
self._app_secret = APP_SECRET
|
109
110
|
self.domain = ALIYUN_DOMAIN
|
@@ -152,8 +153,9 @@ class CloudIOTGateway:
|
|
152
153
|
hashlib.sha1,
|
153
154
|
).hexdigest()
|
154
155
|
|
155
|
-
async def get_region(self, country_code: str
|
156
|
+
async def get_region(self, country_code: str):
|
156
157
|
"""Get the region based on country code and auth code."""
|
158
|
+
auth_code = self.mammotion_http.login_info.authorization_code
|
157
159
|
|
158
160
|
if self._region_response is not None:
|
159
161
|
return self._region_response
|
@@ -347,8 +349,9 @@ class CloudIOTGateway:
|
|
347
349
|
return self._connect_response
|
348
350
|
raise LoginException(data)
|
349
351
|
|
350
|
-
async def login_by_oauth(self, country_code: str
|
352
|
+
async def login_by_oauth(self, country_code: str):
|
351
353
|
"""Login by OAuth."""
|
354
|
+
auth_code = self.mammotion_http.login_info.authorization_code
|
352
355
|
region_url = self._region_response.data.oaApiGatewayEndpoint
|
353
356
|
|
354
357
|
async with ClientSession() as session:
|
@@ -2,8 +2,17 @@
|
|
2
2
|
from abc import ABC
|
3
3
|
|
4
4
|
from pymammotion.mammotion.commands.abstract_message import AbstractMessage
|
5
|
-
from pymammotion.proto import (
|
6
|
-
|
5
|
+
from pymammotion.proto import (
|
6
|
+
MUL_LANGUAGE,
|
7
|
+
MUL_SEX,
|
8
|
+
LubaMsg,
|
9
|
+
MsgAttr,
|
10
|
+
MsgCmdType,
|
11
|
+
MsgDevice,
|
12
|
+
MulSetAudio,
|
13
|
+
MulSetWiper,
|
14
|
+
SocMul,
|
15
|
+
)
|
7
16
|
|
8
17
|
|
9
18
|
class MessageMedia(AbstractMessage, ABC):
|
@@ -36,4 +45,4 @@ class MessageMedia(AbstractMessage, ABC):
|
|
36
45
|
# 2
|
37
46
|
return self.send_order_msg_media(SocMul(set_wiper=MulSetWiper(round=round_num)))
|
38
47
|
|
39
|
-
# TODO add lamp methods
|
48
|
+
# TODO add lamp methods
|
@@ -3,7 +3,7 @@ from abc import ABC
|
|
3
3
|
import time
|
4
4
|
|
5
5
|
from pymammotion.mammotion.commands.abstract_message import AbstractMessage
|
6
|
-
from pymammotion.proto import LubaMsg, MsgAttr, MsgCmdType, MsgDevice,
|
6
|
+
from pymammotion.proto import LubaMsg, MsgAttr, MsgCmdType, MsgDevice, MUL_CAMERA_POSITION, MulSetVideo, SocMul
|
7
7
|
from pymammotion.utility.device_type import DeviceType
|
8
8
|
|
9
9
|
|
@@ -24,6 +24,6 @@ class MessageVideo(AbstractMessage, ABC):
|
|
24
24
|
return luba_msg.SerializeToString()
|
25
25
|
|
26
26
|
def device_agora_join_channel_with_position(self, enter_state: int):
|
27
|
-
position =
|
27
|
+
position = MUL_CAMERA_POSITION.ALL if DeviceType.value_of_str(self.get_device_name()).get_value() == DeviceType.LUBA_YUKA.get_value() else MUL_CAMERA_POSITION.LEFT
|
28
28
|
mctl_sys = SocMul(set_video=MulSetVideo(position=position, vi_switch=enter_state))
|
29
29
|
return self.send_order_msg_video(mctl_sys)
|
@@ -1,6 +1,8 @@
|
|
1
1
|
from abc import abstractmethod
|
2
2
|
import asyncio
|
3
|
+
import datetime
|
3
4
|
import logging
|
5
|
+
import time
|
4
6
|
from typing import Any
|
5
7
|
|
6
8
|
import betterproto
|
@@ -34,6 +36,8 @@ def find_next_integer(lst: list[int], current_hash: int) -> int | None:
|
|
34
36
|
class MammotionBaseDevice:
|
35
37
|
"""Base class for Mammotion devices."""
|
36
38
|
|
39
|
+
command_sent_time: datetime = time.time()
|
40
|
+
|
37
41
|
def __init__(self, state_manager: StateManager, cloud_device: Device) -> None:
|
38
42
|
"""Initialize MammotionBaseDevice."""
|
39
43
|
self.loop = asyncio.get_event_loop()
|
@@ -30,6 +30,8 @@ class MammotionMixedDeviceManager:
|
|
30
30
|
def __init__(
|
31
31
|
self,
|
32
32
|
name: str,
|
33
|
+
iot_id: str,
|
34
|
+
cloud_client: CloudIOTGateway,
|
33
35
|
mammotion_http: MammotionHTTP,
|
34
36
|
cloud_device: Device | None = None,
|
35
37
|
ble_device: BLEDevice | None = None,
|
@@ -39,6 +41,8 @@ class MammotionMixedDeviceManager:
|
|
39
41
|
self._ble_device: MammotionBaseBLEDevice | None = None
|
40
42
|
self._cloud_device: MammotionBaseCloudDevice | None = None
|
41
43
|
self.name = name
|
44
|
+
self.iot_id = iot_id
|
45
|
+
self.cloud_client = cloud_client
|
42
46
|
self._state_manager = StateManager(MowingDevice())
|
43
47
|
self._state_manager.get_device().name = name
|
44
48
|
self.add_ble(cloud_device, ble_device)
|
@@ -177,7 +181,7 @@ class Mammotion:
|
|
177
181
|
return
|
178
182
|
mammotion_http = exists.cloud_client.mammotion_http
|
179
183
|
await mammotion_http.refresh_login(account, password)
|
180
|
-
await self.connect_iot(
|
184
|
+
await self.connect_iot(exists.cloud_client)
|
181
185
|
|
182
186
|
if not exists.is_connected():
|
183
187
|
loop = asyncio.get_running_loop()
|
@@ -212,6 +216,8 @@ class Mammotion:
|
|
212
216
|
if device.deviceName.startswith(("Luba-", "Yuka-")) and mower_device is None:
|
213
217
|
mixed_device = MammotionMixedDeviceManager(
|
214
218
|
name=device.deviceName,
|
219
|
+
iot_id=device.iotId,
|
220
|
+
cloud_client=mqtt_client.cloud_client,
|
215
221
|
mammotion_http=mqtt_client.cloud_client.mammotion_http,
|
216
222
|
cloud_device=device,
|
217
223
|
mqtt=mqtt_client,
|
@@ -236,19 +242,19 @@ class Mammotion:
|
|
236
242
|
|
237
243
|
async def login(self, account: str, password: str) -> CloudIOTGateway:
|
238
244
|
"""Login to mammotion cloud."""
|
239
|
-
cloud_client = CloudIOTGateway()
|
240
245
|
mammotion_http = MammotionHTTP()
|
246
|
+
cloud_client = CloudIOTGateway(mammotion_http)
|
241
247
|
await mammotion_http.login(account, password)
|
242
|
-
await self.connect_iot(
|
248
|
+
await self.connect_iot(cloud_client)
|
243
249
|
return cloud_client
|
244
250
|
|
245
251
|
@staticmethod
|
246
|
-
async def connect_iot(
|
252
|
+
async def connect_iot(cloud_client: CloudIOTGateway) -> None:
|
253
|
+
mammotion_http = cloud_client.mammotion_http
|
247
254
|
country_code = mammotion_http.login_info.userInformation.domainAbbreviation
|
248
|
-
cloud_client.
|
249
|
-
await cloud_client.get_region(country_code, mammotion_http.login_info.authorization_code)
|
255
|
+
await cloud_client.get_region(country_code)
|
250
256
|
await cloud_client.connect()
|
251
|
-
await cloud_client.login_by_oauth(country_code
|
257
|
+
await cloud_client.login_by_oauth(country_code)
|
252
258
|
await cloud_client.aep_handle()
|
253
259
|
await cloud_client.session_by_auth_code()
|
254
260
|
await cloud_client.list_binding_by_account()
|
{pymammotion-0.4.43 → pymammotion-0.4.45}/pymammotion/mammotion/devices/mammotion_bluetooth.py
RENAMED
@@ -1,6 +1,7 @@
|
|
1
1
|
import asyncio
|
2
2
|
from collections.abc import Awaitable, Callable
|
3
3
|
import logging
|
4
|
+
import time
|
4
5
|
from typing import Any, cast
|
5
6
|
from uuid import UUID
|
6
7
|
|
@@ -366,6 +367,7 @@ class MammotionBaseBLEDevice(MammotionBaseDevice):
|
|
366
367
|
assert self._client is not None
|
367
368
|
_LOGGER.debug("%s: Sending command: %s", self.name, key)
|
368
369
|
await self._message.post_custom_data_bytes(command)
|
370
|
+
self.command_sent_time = time.time()
|
369
371
|
|
370
372
|
def get_address(self) -> str:
|
371
373
|
"""Return address of device."""
|
@@ -5,6 +5,7 @@ from collections import deque
|
|
5
5
|
from collections.abc import Awaitable, Callable
|
6
6
|
import json
|
7
7
|
import logging
|
8
|
+
import time
|
8
9
|
from typing import Any
|
9
10
|
|
10
11
|
import betterproto
|
@@ -102,6 +103,7 @@ class MammotionCloud:
|
|
102
103
|
self._key = key
|
103
104
|
_LOGGER.debug("Sending command: %s", key)
|
104
105
|
await self._mqtt_client.get_cloud_client().send_cloud_command(iot_id, command)
|
106
|
+
self.command_sent_time = time.time()
|
105
107
|
|
106
108
|
async def _on_mqtt_message(self, topic: str, payload: str, iot_id: str) -> None:
|
107
109
|
"""Handle incoming MQTT messages."""
|
@@ -139,8 +139,6 @@ class MammotionMQTT:
|
|
139
139
|
future = asyncio.run_coroutine_threadsafe(self.on_ready(), self.loop)
|
140
140
|
asyncio.wrap_future(future, loop=self.loop)
|
141
141
|
# self._linkkit_client.query_ota_firmware()
|
142
|
-
# command = MammotionCommand(device_name="Luba")
|
143
|
-
# self._cloud_client.send_cloud_command(command.get_report_cfg())
|
144
142
|
|
145
143
|
def unsubscribe(self) -> None:
|
146
144
|
self._linkkit_client.unsubscribe_topic(
|
@@ -47,6 +47,7 @@ enum MsgCmdType {
|
|
47
47
|
MSG_CMD_TYPE_ESP = 248;
|
48
48
|
MSG_CMD_TYPE_MUL = 249;
|
49
49
|
MSG_CMD_TYPE_PEPT = 250;
|
50
|
+
MSG_CMD_TYPE_BASESTATION = 251;
|
50
51
|
}
|
51
52
|
|
52
53
|
enum MsgAttr {
|
@@ -71,5 +72,5 @@ enum MsgDevice {
|
|
71
72
|
DEV_LOCALIZATION = 18;
|
72
73
|
DEV_PERCEPTION = 19;
|
73
74
|
SOC_MODULE_MULTIMEDIA = 21;
|
74
|
-
DEV_IOTCTRL =
|
75
|
+
DEV_IOTCTRL = 29;
|
75
76
|
}
|
@@ -21,7 +21,7 @@ from pymammotion.proto import luba_mul_pb2 as pymammotion_dot_proto_dot_luba__mu
|
|
21
21
|
from pymammotion.proto import mctrl_pept_pb2 as pymammotion_dot_proto_dot_mctrl__pept__pb2
|
22
22
|
|
23
23
|
|
24
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n pymammotion/proto/luba_msg.proto\x1a#pymammotion/proto/basestation.proto\x1a$pymammotion/proto/mctrl_driver.proto\x1a!pymammotion/proto/mctrl_nav.proto\x1a!pymammotion/proto/mctrl_sys.proto\x1a\x1fpymammotion/proto/dev_net.proto\x1a!pymammotion/proto/mctrl_ota.proto\x1a pymammotion/proto/luba_mul.proto\x1a\"pymammotion/proto/mctrl_pept.proto\"\t\n\x07MsgNull\"\xb7\x03\n\x07LubaMsg\x12\x1c\n\x07msgtype\x18\x01 \x01(\x0e\x32\x0b.MsgCmdType\x12\x1a\n\x06sender\x18\x02 \x01(\x0e\x32\n.MsgDevice\x12\x19\n\x05rcver\x18\x03 \x01(\x0e\x32\n.MsgDevice\x12\x19\n\x07msgattr\x18\x04 \x01(\x0e\x32\x08.MsgAttr\x12\x0c\n\x04seqs\x18\x05 \x01(\x05\x12\x0f\n\x07version\x18\x06 \x01(\x05\x12\x0f\n\x07subtype\x18\x07 \x01(\x05\x12\x16\n\x03net\x18\x08 \x01(\x0b\x32\x07.DevNetH\x00\x12\x17\n\x03sys\x18\n \x01(\x0b\x32\x08.MctlSysH\x00\x12\x17\n\x03nav\x18\x0b \x01(\x0b\x32\x08.MctlNavH\x00\x12\x1d\n\x06\x64river\x18\x0c \x01(\x0b\x32\x0b.MctlDriverH\x00\x12\x17\n\x03ota\x18\r \x01(\x0b\x32\x08.MctlOtaH\x00\x12\x16\n\x03mul\x18\x0e \x01(\x0b\x32\x07.SocMulH\x00\x12\x18\n\x04null\x18\x10 \x01(\x0b\x32\x08.MsgNullH\x00\x12\x19\n\x04pept\x18\x11 \x01(\x0b\x32\t.MctlPeptH\x00\x12\x1c\n\x04\x62\x61se\x18\x12 \x01(\x0b\x32\x0c.BaseStationH\x00\x12\x11\n\ttimestamp\x18\x0f \x01(\x04\x42\x0c\n\nLubaSubMsg*\
|
24
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n pymammotion/proto/luba_msg.proto\x1a#pymammotion/proto/basestation.proto\x1a$pymammotion/proto/mctrl_driver.proto\x1a!pymammotion/proto/mctrl_nav.proto\x1a!pymammotion/proto/mctrl_sys.proto\x1a\x1fpymammotion/proto/dev_net.proto\x1a!pymammotion/proto/mctrl_ota.proto\x1a pymammotion/proto/luba_mul.proto\x1a\"pymammotion/proto/mctrl_pept.proto\"\t\n\x07MsgNull\"\xb7\x03\n\x07LubaMsg\x12\x1c\n\x07msgtype\x18\x01 \x01(\x0e\x32\x0b.MsgCmdType\x12\x1a\n\x06sender\x18\x02 \x01(\x0e\x32\n.MsgDevice\x12\x19\n\x05rcver\x18\x03 \x01(\x0e\x32\n.MsgDevice\x12\x19\n\x07msgattr\x18\x04 \x01(\x0e\x32\x08.MsgAttr\x12\x0c\n\x04seqs\x18\x05 \x01(\x05\x12\x0f\n\x07version\x18\x06 \x01(\x05\x12\x0f\n\x07subtype\x18\x07 \x01(\x05\x12\x16\n\x03net\x18\x08 \x01(\x0b\x32\x07.DevNetH\x00\x12\x17\n\x03sys\x18\n \x01(\x0b\x32\x08.MctlSysH\x00\x12\x17\n\x03nav\x18\x0b \x01(\x0b\x32\x08.MctlNavH\x00\x12\x1d\n\x06\x64river\x18\x0c \x01(\x0b\x32\x0b.MctlDriverH\x00\x12\x17\n\x03ota\x18\r \x01(\x0b\x32\x08.MctlOtaH\x00\x12\x16\n\x03mul\x18\x0e \x01(\x0b\x32\x07.SocMulH\x00\x12\x18\n\x04null\x18\x10 \x01(\x0b\x32\x08.MsgNullH\x00\x12\x19\n\x04pept\x18\x11 \x01(\x0b\x32\t.MctlPeptH\x00\x12\x1c\n\x04\x62\x61se\x18\x12 \x01(\x0b\x32\x0c.BaseStationH\x00\x12\x11\n\ttimestamp\x18\x0f \x01(\x04\x42\x0c\n\nLubaSubMsg*\xf6\x02\n\nMsgCmdType\x12\x16\n\x12MSG_CMD_TYPE_START\x10\x00\x12\x15\n\x10MSG_CMD_TYPE_NAV\x10\xf0\x01\x12\x1e\n\x19MSG_CMD_TYPE_LOCALIZATION\x10\xf1\x01\x12\x1a\n\x15MSG_CMD_TYPE_PLANNING\x10\xf2\x01\x12\x1e\n\x19MSG_CMD_TYPE_EMBED_DRIVER\x10\xf3\x01\x12\x1b\n\x16MSG_CMD_TYPE_EMBED_SYS\x10\xf4\x01\x12\x1f\n\x1aMSG_CMD_TYPE_EMBED_MIDWARE\x10\xf5\x01\x12\x1b\n\x16MSG_CMD_TYPE_EMBED_OTA\x10\xf6\x01\x12\x1d\n\x18MSG_CMD_TYPE_APPLICATION\x10\xf7\x01\x12\x15\n\x10MSG_CMD_TYPE_ESP\x10\xf8\x01\x12\x15\n\x10MSG_CMD_TYPE_MUL\x10\xf9\x01\x12\x16\n\x11MSG_CMD_TYPE_PEPT\x10\xfa\x01\x12\x1d\n\x18MSG_CMD_TYPE_BASESTATION\x10\xfb\x01*V\n\x07MsgAttr\x12\x11\n\rMSG_ATTR_NONE\x10\x00\x12\x10\n\x0cMSG_ATTR_REQ\x10\x01\x12\x11\n\rMSG_ATTR_RESP\x10\x02\x12\x13\n\x0fMSG_ATTR_REPORT\x10\x03*\xa8\x02\n\tMsgDevice\x12\x10\n\x0c\x44\x45V_COMM_ESP\x10\x00\x12\x0f\n\x0b\x44\x45V_MAINCTL\x10\x01\x12\x11\n\rDEV_LEFTMOTOR\x10\x02\x12\x12\n\x0e\x44\x45V_RIGHTMOTOR\x10\x03\x12\x13\n\x0f\x44\x45V_BASESTATION\x10\x04\x12\x0e\n\nDEV_RTKCLI\x10\x05\x12\x0f\n\x0b\x44\x45V_USBHOST\x10\x06\x12\x11\n\rDEV_MOBILEAPP\x10\x07\x12\x11\n\rDEV_IOTSERVER\x10\x08\x12\x0b\n\x07\x44\x45V_BMS\x10\t\x12\x12\n\x0e\x44\x45V_NAVIGATION\x10\x11\x12\x14\n\x10\x44\x45V_LOCALIZATION\x10\x12\x12\x12\n\x0e\x44\x45V_PERCEPTION\x10\x13\x12\x19\n\x15SOC_MODULE_MULTIMEDIA\x10\x15\x12\x0f\n\x0b\x44\x45V_IOTCTRL\x10\x1d\x62\x06proto3')
|
25
25
|
|
26
26
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
|
27
27
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'pymammotion.proto.luba_msg_pb2', globals())
|
@@ -29,11 +29,11 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
29
29
|
|
30
30
|
DESCRIPTOR._options = None
|
31
31
|
_MSGCMDTYPE._serialized_start=773
|
32
|
-
_MSGCMDTYPE._serialized_end=
|
33
|
-
_MSGATTR._serialized_start=
|
34
|
-
_MSGATTR._serialized_end=
|
35
|
-
_MSGDEVICE._serialized_start=
|
36
|
-
_MSGDEVICE._serialized_end=
|
32
|
+
_MSGCMDTYPE._serialized_end=1147
|
33
|
+
_MSGATTR._serialized_start=1149
|
34
|
+
_MSGATTR._serialized_end=1235
|
35
|
+
_MSGDEVICE._serialized_start=1238
|
36
|
+
_MSGDEVICE._serialized_end=1534
|
37
37
|
_MSGNULL._serialized_start=319
|
38
38
|
_MSGNULL._serialized_end=328
|
39
39
|
_LUBAMSG._serialized_start=331
|
@@ -31,6 +31,7 @@ MSG_ATTR_REPORT: MsgAttr
|
|
31
31
|
MSG_ATTR_REQ: MsgAttr
|
32
32
|
MSG_ATTR_RESP: MsgAttr
|
33
33
|
MSG_CMD_TYPE_APPLICATION: MsgCmdType
|
34
|
+
MSG_CMD_TYPE_BASESTATION: MsgCmdType
|
34
35
|
MSG_CMD_TYPE_EMBED_DRIVER: MsgCmdType
|
35
36
|
MSG_CMD_TYPE_EMBED_MIDWARE: MsgCmdType
|
36
37
|
MSG_CMD_TYPE_EMBED_OTA: MsgCmdType
|
@@ -108,6 +108,10 @@ message MulSetWiperAck {
|
|
108
108
|
MUL_WIPER_ERROR_CODE error_code = 1;
|
109
109
|
}
|
110
110
|
|
111
|
+
message MulSetEncode {
|
112
|
+
bool encode = 1;
|
113
|
+
}
|
114
|
+
|
111
115
|
message SocMul {
|
112
116
|
oneof SubMul {
|
113
117
|
MulSetAudio set_audio = 1;
|
@@ -120,5 +124,6 @@ message SocMul {
|
|
120
124
|
SetHeadlamp set_lamp = 8;
|
121
125
|
Setlamprsp set_lamp_rsp = 9;
|
122
126
|
Getlamprsp get_lamp_rsp = 10;
|
127
|
+
MulSetEncode req_encode = 11;
|
123
128
|
}
|
124
129
|
}
|
@@ -13,27 +13,27 @@ _sym_db = _symbol_database.Default()
|
|
13
13
|
|
14
14
|
|
15
15
|
|
16
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n pymammotion/proto/luba_mul.proto\"o\n\x0bMulSetAudio\x12\x13\n\tat_switch\x18\x01 \x01(\x05H\x00\x12$\n\x0b\x61u_language\x18\x02 \x01(\x0e\x32\r.MUL_LANGUAGEH\x00\x12\x17\n\x03sex\x18\x03 \x01(\x0e\x32\x08.MUL_SEXH\x00\x42\x0c\n\nAudioCfg_u\"H\n\x0bMulSetVideo\x12&\n\x08position\x18\x01 \x01(\x0e\x32\x14.MUL_CAMERA_POSITION\x12\x11\n\tvi_switch\x18\x02 \x01(\x05\";\n\x0eMulSetVideoAck\x12)\n\nerror_code\x18\x01 \x01(\x0e\x32\x15.MUL_VIDEO_ERROR_CODE\"[\n\x0bMulAudioCfg\x12\x11\n\tau_switch\x18\x01 \x01(\x05\x12\"\n\x0b\x61u_language\x18\x02 \x01(\x0e\x32\r.MUL_LANGUAGE\x12\x15\n\x03sex\x18\x03 \x01(\x0e\x32\x08.MUL_SEX\"\x1c\n\x0bMulSetWiper\x12\r\n\x05round\x18\x01 \x01(\x05\"\x1e\n\x0bGetHeadlamp\x12\x0f\n\x07get_ids\x18\x01 \x01(\x05\"\xba\x01\n\x0bSetHeadlamp\x12\x0f\n\x07set_ids\x18\x01 \x01(\x05\x12\x17\n\x0flamp_power_ctrl\x18\x02 \x01(\x05\x12!\n\tlamp_ctrl\x18\x03 \x01(\x0e\x32\x0e.lamp_ctrl_sta\x12\x18\n\x10\x63trl_lamp_bright\x18\x04 \x01(\x08\x12\x13\n\x0blamp_bright\x18\x05 \x01(\x05\x12/\n\x10lamp_manual_ctrl\x18\x06 \x01(\x0e\x32\x15.lamp_manual_ctrl_sta\"-\n\nSetlamprsp\x12\x0f\n\x07set_ids\x18\x01 \x01(\x05\x12\x0e\n\x06result\x18\x02 \x01(\x05\"\x96\x01\n\nGetlamprsp\x12\x0f\n\x07get_ids\x18\x01 \x01(\x05\x12\x0e\n\x06result\x18\x02 \x01(\x05\x12!\n\tlamp_ctrl\x18\x03 \x01(\x0e\x32\x0e.lamp_ctrl_sta\x12\x13\n\x0blamp_bright\x18\x04 \x01(\x05\x12/\n\x10lamp_manual_ctrl\x18\x05 \x01(\x0e\x32\x15.lamp_manual_ctrl_sta\";\n\x0eMulSetWiperAck\x12)\n\nerror_code\x18\x01 \x01(\x0e\x32\x15.MUL_WIPER_ERROR_CODE\"\
|
16
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n pymammotion/proto/luba_mul.proto\"o\n\x0bMulSetAudio\x12\x13\n\tat_switch\x18\x01 \x01(\x05H\x00\x12$\n\x0b\x61u_language\x18\x02 \x01(\x0e\x32\r.MUL_LANGUAGEH\x00\x12\x17\n\x03sex\x18\x03 \x01(\x0e\x32\x08.MUL_SEXH\x00\x42\x0c\n\nAudioCfg_u\"H\n\x0bMulSetVideo\x12&\n\x08position\x18\x01 \x01(\x0e\x32\x14.MUL_CAMERA_POSITION\x12\x11\n\tvi_switch\x18\x02 \x01(\x05\";\n\x0eMulSetVideoAck\x12)\n\nerror_code\x18\x01 \x01(\x0e\x32\x15.MUL_VIDEO_ERROR_CODE\"[\n\x0bMulAudioCfg\x12\x11\n\tau_switch\x18\x01 \x01(\x05\x12\"\n\x0b\x61u_language\x18\x02 \x01(\x0e\x32\r.MUL_LANGUAGE\x12\x15\n\x03sex\x18\x03 \x01(\x0e\x32\x08.MUL_SEX\"\x1c\n\x0bMulSetWiper\x12\r\n\x05round\x18\x01 \x01(\x05\"\x1e\n\x0bGetHeadlamp\x12\x0f\n\x07get_ids\x18\x01 \x01(\x05\"\xba\x01\n\x0bSetHeadlamp\x12\x0f\n\x07set_ids\x18\x01 \x01(\x05\x12\x17\n\x0flamp_power_ctrl\x18\x02 \x01(\x05\x12!\n\tlamp_ctrl\x18\x03 \x01(\x0e\x32\x0e.lamp_ctrl_sta\x12\x18\n\x10\x63trl_lamp_bright\x18\x04 \x01(\x08\x12\x13\n\x0blamp_bright\x18\x05 \x01(\x05\x12/\n\x10lamp_manual_ctrl\x18\x06 \x01(\x0e\x32\x15.lamp_manual_ctrl_sta\"-\n\nSetlamprsp\x12\x0f\n\x07set_ids\x18\x01 \x01(\x05\x12\x0e\n\x06result\x18\x02 \x01(\x05\"\x96\x01\n\nGetlamprsp\x12\x0f\n\x07get_ids\x18\x01 \x01(\x05\x12\x0e\n\x06result\x18\x02 \x01(\x05\x12!\n\tlamp_ctrl\x18\x03 \x01(\x0e\x32\x0e.lamp_ctrl_sta\x12\x13\n\x0blamp_bright\x18\x04 \x01(\x05\x12/\n\x10lamp_manual_ctrl\x18\x05 \x01(\x0e\x32\x15.lamp_manual_ctrl_sta\";\n\x0eMulSetWiperAck\x12)\n\nerror_code\x18\x01 \x01(\x0e\x32\x15.MUL_WIPER_ERROR_CODE\"\x1e\n\x0cMulSetEncode\x12\x0e\n\x06\x65ncode\x18\x01 \x01(\x08\"\xa5\x03\n\x06SocMul\x12!\n\tset_audio\x18\x01 \x01(\x0b\x32\x0c.MulSetAudioH\x00\x12!\n\taudio_cfg\x18\x02 \x01(\x0b\x32\x0c.MulAudioCfgH\x00\x12!\n\tset_video\x18\x03 \x01(\x0b\x32\x0c.MulSetVideoH\x00\x12(\n\rset_video_ack\x18\x04 \x01(\x0b\x32\x0f.MulSetVideoAckH\x00\x12!\n\tset_wiper\x18\x05 \x01(\x0b\x32\x0c.MulSetWiperH\x00\x12(\n\rset_wiper_ack\x18\x06 \x01(\x0b\x32\x0f.MulSetWiperAckH\x00\x12 \n\x08get_lamp\x18\x07 \x01(\x0b\x32\x0c.GetHeadlampH\x00\x12 \n\x08set_lamp\x18\x08 \x01(\x0b\x32\x0c.SetHeadlampH\x00\x12#\n\x0cset_lamp_rsp\x18\t \x01(\x0b\x32\x0b.SetlamprspH\x00\x12#\n\x0cget_lamp_rsp\x18\n \x01(\x0b\x32\x0b.GetlamprspH\x00\x12#\n\nreq_encode\x18\x0b \x01(\x0b\x32\r.MulSetEncodeH\x00\x42\x08\n\x06SubMul*v\n\x0cMUL_LANGUAGE\x12\x0b\n\x07\x45NGLISH\x10\x00\x12\n\n\x06GERMAN\x10\x01\x12\n\n\x06\x46RENCH\x10\x02\x12\x0b\n\x07ITALIAN\x10\x03\x12\x0b\n\x07SPANISH\x10\x04\x12\x0e\n\nPORTUGUESE\x10\x05\x12\t\n\x05\x44UTCH\x10\x06\x12\x0c\n\x08NONE_LAN\x10\x07*+\n\x07MUL_SEX\x12\x07\n\x03MAN\x10\x00\x12\t\n\x05WOMAN\x10\x01\x12\x0c\n\x08NONE_SEX\x10\x02*=\n\x13MUL_CAMERA_POSITION\x12\x08\n\x04LEFT\x10\x00\x12\t\n\x05RIGHT\x10\x01\x12\x08\n\x04REAR\x10\x02\x12\x07\n\x03\x41LL\x10\x03*\x9d\x01\n\x14MUL_VIDEO_ERROR_CODE\x12\x0b\n\x07SUCCESS\x10\x00\x12\x15\n\x11\x41\x43TIVATION_FAILED\x10\x01\x12\x19\n\x15NETWORK_NOT_AVAILABLE\x10\x02\x12\x19\n\x15\x43REATE_CHANNEL_FAILED\x10\x03\x12\x11\n\rPARAM_INVAILD\x10\x04\x12\x18\n\x14\x43\x45LLULAR_RESTRICTION\x10\x05*Q\n\x14MUL_WIPER_ERROR_CODE\x12\x0f\n\x0bSET_SUCCESS\x10\x00\x12\x0c\n\x08HW_ERROR\x10\x01\x12\x1a\n\x16NAVIGATION_WORK_FORBID\x10\x02*?\n\rlamp_ctrl_sta\x12\r\n\tpower_off\x10\x00\x12\x0c\n\x08power_on\x10\x01\x12\x11\n\rpower_ctrl_on\x10\x02*A\n\x14lamp_manual_ctrl_sta\x12\x14\n\x10manual_power_off\x10\x00\x12\x13\n\x0fmanual_power_on\x10\x01\x62\x06proto3')
|
17
17
|
|
18
18
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
|
19
19
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'pymammotion.proto.luba_mul_pb2', globals())
|
20
20
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
21
21
|
|
22
22
|
DESCRIPTOR._options = None
|
23
|
-
_MUL_LANGUAGE._serialized_start=
|
24
|
-
_MUL_LANGUAGE._serialized_end=
|
25
|
-
_MUL_SEX._serialized_start=
|
26
|
-
_MUL_SEX._serialized_end=
|
27
|
-
_MUL_CAMERA_POSITION._serialized_start=
|
28
|
-
_MUL_CAMERA_POSITION._serialized_end=
|
29
|
-
_MUL_VIDEO_ERROR_CODE._serialized_start=
|
30
|
-
_MUL_VIDEO_ERROR_CODE._serialized_end=
|
31
|
-
_MUL_WIPER_ERROR_CODE._serialized_start=
|
32
|
-
_MUL_WIPER_ERROR_CODE._serialized_end=
|
33
|
-
_LAMP_CTRL_STA._serialized_start=
|
34
|
-
_LAMP_CTRL_STA._serialized_end=
|
35
|
-
_LAMP_MANUAL_CTRL_STA._serialized_start=
|
36
|
-
_LAMP_MANUAL_CTRL_STA._serialized_end=
|
23
|
+
_MUL_LANGUAGE._serialized_start=1345
|
24
|
+
_MUL_LANGUAGE._serialized_end=1463
|
25
|
+
_MUL_SEX._serialized_start=1465
|
26
|
+
_MUL_SEX._serialized_end=1508
|
27
|
+
_MUL_CAMERA_POSITION._serialized_start=1510
|
28
|
+
_MUL_CAMERA_POSITION._serialized_end=1571
|
29
|
+
_MUL_VIDEO_ERROR_CODE._serialized_start=1574
|
30
|
+
_MUL_VIDEO_ERROR_CODE._serialized_end=1731
|
31
|
+
_MUL_WIPER_ERROR_CODE._serialized_start=1733
|
32
|
+
_MUL_WIPER_ERROR_CODE._serialized_end=1814
|
33
|
+
_LAMP_CTRL_STA._serialized_start=1816
|
34
|
+
_LAMP_CTRL_STA._serialized_end=1879
|
35
|
+
_LAMP_MANUAL_CTRL_STA._serialized_start=1881
|
36
|
+
_LAMP_MANUAL_CTRL_STA._serialized_end=1946
|
37
37
|
_MULSETAUDIO._serialized_start=36
|
38
38
|
_MULSETAUDIO._serialized_end=147
|
39
39
|
_MULSETVIDEO._serialized_start=149
|
@@ -54,6 +54,8 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
54
54
|
_GETLAMPRSP._serialized_end=826
|
55
55
|
_MULSETWIPERACK._serialized_start=828
|
56
56
|
_MULSETWIPERACK._serialized_end=887
|
57
|
-
|
58
|
-
|
57
|
+
_MULSETENCODE._serialized_start=889
|
58
|
+
_MULSETENCODE._serialized_end=919
|
59
|
+
_SOCMUL._serialized_start=922
|
60
|
+
_SOCMUL._serialized_end=1343
|
59
61
|
# @@protoc_insertion_point(module_scope)
|
@@ -74,6 +74,12 @@ class MulSetAudio(_message.Message):
|
|
74
74
|
sex: MUL_SEX
|
75
75
|
def __init__(self, at_switch: _Optional[int] = ..., au_language: _Optional[_Union[MUL_LANGUAGE, str]] = ..., sex: _Optional[_Union[MUL_SEX, str]] = ...) -> None: ...
|
76
76
|
|
77
|
+
class MulSetEncode(_message.Message):
|
78
|
+
__slots__ = ["encode"]
|
79
|
+
ENCODE_FIELD_NUMBER: _ClassVar[int]
|
80
|
+
encode: bool
|
81
|
+
def __init__(self, encode: bool = ...) -> None: ...
|
82
|
+
|
77
83
|
class MulSetVideo(_message.Message):
|
78
84
|
__slots__ = ["position", "vi_switch"]
|
79
85
|
POSITION_FIELD_NUMBER: _ClassVar[int]
|
@@ -125,10 +131,11 @@ class Setlamprsp(_message.Message):
|
|
125
131
|
def __init__(self, set_ids: _Optional[int] = ..., result: _Optional[int] = ...) -> None: ...
|
126
132
|
|
127
133
|
class SocMul(_message.Message):
|
128
|
-
__slots__ = ["audio_cfg", "get_lamp", "get_lamp_rsp", "set_audio", "set_lamp", "set_lamp_rsp", "set_video", "set_video_ack", "set_wiper", "set_wiper_ack"]
|
134
|
+
__slots__ = ["audio_cfg", "get_lamp", "get_lamp_rsp", "req_encode", "set_audio", "set_lamp", "set_lamp_rsp", "set_video", "set_video_ack", "set_wiper", "set_wiper_ack"]
|
129
135
|
AUDIO_CFG_FIELD_NUMBER: _ClassVar[int]
|
130
136
|
GET_LAMP_FIELD_NUMBER: _ClassVar[int]
|
131
137
|
GET_LAMP_RSP_FIELD_NUMBER: _ClassVar[int]
|
138
|
+
REQ_ENCODE_FIELD_NUMBER: _ClassVar[int]
|
132
139
|
SET_AUDIO_FIELD_NUMBER: _ClassVar[int]
|
133
140
|
SET_LAMP_FIELD_NUMBER: _ClassVar[int]
|
134
141
|
SET_LAMP_RSP_FIELD_NUMBER: _ClassVar[int]
|
@@ -139,6 +146,7 @@ class SocMul(_message.Message):
|
|
139
146
|
audio_cfg: MulAudioCfg
|
140
147
|
get_lamp: GetHeadlamp
|
141
148
|
get_lamp_rsp: Getlamprsp
|
149
|
+
req_encode: MulSetEncode
|
142
150
|
set_audio: MulSetAudio
|
143
151
|
set_lamp: SetHeadlamp
|
144
152
|
set_lamp_rsp: Setlamprsp
|
@@ -146,7 +154,7 @@ class SocMul(_message.Message):
|
|
146
154
|
set_video_ack: MulSetVideoAck
|
147
155
|
set_wiper: MulSetWiper
|
148
156
|
set_wiper_ack: MulSetWiperAck
|
149
|
-
def __init__(self, set_audio: _Optional[_Union[MulSetAudio, _Mapping]] = ..., audio_cfg: _Optional[_Union[MulAudioCfg, _Mapping]] = ..., set_video: _Optional[_Union[MulSetVideo, _Mapping]] = ..., set_video_ack: _Optional[_Union[MulSetVideoAck, _Mapping]] = ..., set_wiper: _Optional[_Union[MulSetWiper, _Mapping]] = ..., set_wiper_ack: _Optional[_Union[MulSetWiperAck, _Mapping]] = ..., get_lamp: _Optional[_Union[GetHeadlamp, _Mapping]] = ..., set_lamp: _Optional[_Union[SetHeadlamp, _Mapping]] = ..., set_lamp_rsp: _Optional[_Union[Setlamprsp, _Mapping]] = ..., get_lamp_rsp: _Optional[_Union[Getlamprsp, _Mapping]] = ...) -> None: ...
|
157
|
+
def __init__(self, set_audio: _Optional[_Union[MulSetAudio, _Mapping]] = ..., audio_cfg: _Optional[_Union[MulAudioCfg, _Mapping]] = ..., set_video: _Optional[_Union[MulSetVideo, _Mapping]] = ..., set_video_ack: _Optional[_Union[MulSetVideoAck, _Mapping]] = ..., set_wiper: _Optional[_Union[MulSetWiper, _Mapping]] = ..., set_wiper_ack: _Optional[_Union[MulSetWiperAck, _Mapping]] = ..., get_lamp: _Optional[_Union[GetHeadlamp, _Mapping]] = ..., set_lamp: _Optional[_Union[SetHeadlamp, _Mapping]] = ..., set_lamp_rsp: _Optional[_Union[Setlamprsp, _Mapping]] = ..., get_lamp_rsp: _Optional[_Union[Getlamprsp, _Mapping]] = ..., req_encode: _Optional[_Union[MulSetEncode, _Mapping]] = ...) -> None: ...
|
150
158
|
|
151
159
|
class MUL_LANGUAGE(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
152
160
|
__slots__ = []
|
@@ -1,5 +1,19 @@
|
|
1
1
|
syntax = "proto3";
|
2
2
|
|
3
|
+
enum CollectMotorState {
|
4
|
+
COLLECT_CLOSE = 0;
|
5
|
+
COLLECT_OPEN = 1;
|
6
|
+
COLLECT_STUCK = 2;
|
7
|
+
COLLECT_ABNORMAL = 3;
|
8
|
+
}
|
9
|
+
|
10
|
+
enum UnloadMotorState {
|
11
|
+
UNLOAD_CLOSE = 0;
|
12
|
+
UNLOAD_OPEN = 1;
|
13
|
+
UNLOAD_STOP = 2;
|
14
|
+
UNLOAD_RUNNING = 3;
|
15
|
+
}
|
16
|
+
|
3
17
|
message DrvMotionCtrl {
|
4
18
|
int32 setLinearSpeed = 1;
|
5
19
|
int32 setAngularSpeed = 2;
|
@@ -22,6 +36,12 @@ message DrvKnifeChangeReport {
|
|
22
36
|
int32 is_start = 1;
|
23
37
|
int32 start_high = 2;
|
24
38
|
int32 end_high = 3;
|
39
|
+
int32 cur_high = 4;
|
40
|
+
}
|
41
|
+
|
42
|
+
message DrvCollectCtrlByHand {
|
43
|
+
int32 collect_ctrl = 1;
|
44
|
+
int32 unload_ctrl = 2;
|
25
45
|
}
|
26
46
|
|
27
47
|
message DrvMowCtrlByHand {
|
@@ -63,5 +83,6 @@ message MctlDriver {
|
|
63
83
|
rtk_sys_mask_query_t rtk_sys_mask_query = 9;
|
64
84
|
rtk_sys_mask_query_ack_t rtk_sys_mask_query_ack = 10;
|
65
85
|
DrvKnifeChangeReport toapp_knife_status_change = 11;
|
86
|
+
DrvCollectCtrlByHand collect_ctrl_by_hand = 12;
|
66
87
|
}
|
67
88
|
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# source: pymammotion/proto/mctrl_driver.proto
|
4
|
+
"""Generated protocol buffer code."""
|
5
|
+
from google.protobuf.internal import builder as _builder
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
9
|
+
# @@protoc_insertion_point(imports)
|
10
|
+
|
11
|
+
_sym_db = _symbol_database.Default()
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$pymammotion/proto/mctrl_driver.proto\"@\n\rDrvMotionCtrl\x12\x16\n\x0esetLinearSpeed\x18\x01 \x01(\x05\x12\x17\n\x0fsetAngularSpeed\x18\x02 \x01(\x05\"%\n\x0e\x44rvKnifeHeight\x12\x13\n\x0bknifeHeight\x18\x01 \x01(\x05\"\'\n\nDrvSrSpeed\x12\n\n\x02rw\x18\x01 \x01(\x05\x12\r\n\x05speed\x18\x02 \x01(\x02\"&\n\x0e\x44rvKnifeStatus\x12\x14\n\x0cknife_status\x18\x01 \x01(\x05\"`\n\x14\x44rvKnifeChangeReport\x12\x10\n\x08is_start\x18\x01 \x01(\x05\x12\x12\n\nstart_high\x18\x02 \x01(\x05\x12\x10\n\x08\x65nd_high\x18\x03 \x01(\x05\x12\x10\n\x08\x63ur_high\x18\x04 \x01(\x05\"A\n\x14\x44rvCollectCtrlByHand\x12\x14\n\x0c\x63ollect_ctrl\x18\x01 \x01(\x05\x12\x13\n\x0bunload_ctrl\x18\x02 \x01(\x05\"n\n\x10\x44rvMowCtrlByHand\x12\x11\n\tmain_ctrl\x18\x01 \x01(\x05\x12\x16\n\x0e\x63ut_knife_ctrl\x18\x02 \x01(\x05\x12\x18\n\x10\x63ut_knife_height\x18\x03 \x01(\x05\x12\x15\n\rmax_run_Speed\x18\x04 \x01(\x02\"4\n\rrtk_cfg_req_t\x12\x12\n\ncmd_length\x18\x01 \x01(\x05\x12\x0f\n\x07\x63md_req\x18\x02 \x01(\t\"=\n\x11rtk_cfg_req_ack_t\x12\x12\n\ncmd_length\x18\x01 \x01(\x05\x12\x14\n\x0c\x63md_response\x18\x02 \x01(\t\"*\n\x14rtk_sys_mask_query_t\x12\x12\n\nsat_system\x18\x01 \x01(\r\"H\n\x18rtk_sys_mask_query_ack_t\x12\x12\n\nsat_system\x18\x01 \x01(\r\x12\x18\n\x10system_mask_bits\x18\x02 \x03(\r\"\xfa\x04\n\nMctlDriver\x12.\n\x14todev_devmotion_ctrl\x18\x01 \x01(\x0b\x32\x0e.DrvMotionCtrlH\x00\x12\x31\n\x16todev_knife_height_set\x18\x02 \x01(\x0b\x32\x0f.DrvKnifeHeightH\x00\x12,\n\x15\x62idire_speed_read_set\x18\x03 \x01(\x0b\x32\x0b.DrvSrSpeedH\x00\x12\x35\n\x1a\x62idire_knife_height_report\x18\x04 \x01(\x0b\x32\x0f.DrvKnifeHeightH\x00\x12-\n\x12toapp_knife_status\x18\x05 \x01(\x0b\x32\x0f.DrvKnifeStatusH\x00\x12-\n\x10mow_ctrl_by_hand\x18\x06 \x01(\x0b\x32\x11.DrvMowCtrlByHandH\x00\x12%\n\x0brtk_cfg_req\x18\x07 \x01(\x0b\x32\x0e.rtk_cfg_req_tH\x00\x12-\n\x0frtk_cfg_req_ack\x18\x08 \x01(\x0b\x32\x12.rtk_cfg_req_ack_tH\x00\x12\x33\n\x12rtk_sys_mask_query\x18\t \x01(\x0b\x32\x15.rtk_sys_mask_query_tH\x00\x12;\n\x16rtk_sys_mask_query_ack\x18\n \x01(\x0b\x32\x19.rtk_sys_mask_query_ack_tH\x00\x12:\n\x19toapp_knife_status_change\x18\x0b \x01(\x0b\x32\x15.DrvKnifeChangeReportH\x00\x12\x35\n\x14\x63ollect_ctrl_by_hand\x18\x0c \x01(\x0b\x32\x15.DrvCollectCtrlByHandH\x00\x42\x0b\n\tSubDrvMsg*a\n\x11\x43ollectMotorState\x12\x11\n\rCOLLECT_CLOSE\x10\x00\x12\x10\n\x0c\x43OLLECT_OPEN\x10\x01\x12\x11\n\rCOLLECT_STUCK\x10\x02\x12\x14\n\x10\x43OLLECT_ABNORMAL\x10\x03*Z\n\x10UnloadMotorState\x12\x10\n\x0cUNLOAD_CLOSE\x10\x00\x12\x0f\n\x0bUNLOAD_OPEN\x10\x01\x12\x0f\n\x0bUNLOAD_STOP\x10\x02\x12\x12\n\x0eUNLOAD_RUNNING\x10\x03\x62\x06proto3')
|
17
|
+
|
18
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
|
19
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'pymammotion.proto.mctrl_driver_pb2', globals())
|
20
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
21
|
+
|
22
|
+
DESCRIPTOR._options = None
|
23
|
+
_COLLECTMOTORSTATE._serialized_start=1375
|
24
|
+
_COLLECTMOTORSTATE._serialized_end=1472
|
25
|
+
_UNLOADMOTORSTATE._serialized_start=1474
|
26
|
+
_UNLOADMOTORSTATE._serialized_end=1564
|
27
|
+
_DRVMOTIONCTRL._serialized_start=40
|
28
|
+
_DRVMOTIONCTRL._serialized_end=104
|
29
|
+
_DRVKNIFEHEIGHT._serialized_start=106
|
30
|
+
_DRVKNIFEHEIGHT._serialized_end=143
|
31
|
+
_DRVSRSPEED._serialized_start=145
|
32
|
+
_DRVSRSPEED._serialized_end=184
|
33
|
+
_DRVKNIFESTATUS._serialized_start=186
|
34
|
+
_DRVKNIFESTATUS._serialized_end=224
|
35
|
+
_DRVKNIFECHANGEREPORT._serialized_start=226
|
36
|
+
_DRVKNIFECHANGEREPORT._serialized_end=322
|
37
|
+
_DRVCOLLECTCTRLBYHAND._serialized_start=324
|
38
|
+
_DRVCOLLECTCTRLBYHAND._serialized_end=389
|
39
|
+
_DRVMOWCTRLBYHAND._serialized_start=391
|
40
|
+
_DRVMOWCTRLBYHAND._serialized_end=501
|
41
|
+
_RTK_CFG_REQ_T._serialized_start=503
|
42
|
+
_RTK_CFG_REQ_T._serialized_end=555
|
43
|
+
_RTK_CFG_REQ_ACK_T._serialized_start=557
|
44
|
+
_RTK_CFG_REQ_ACK_T._serialized_end=618
|
45
|
+
_RTK_SYS_MASK_QUERY_T._serialized_start=620
|
46
|
+
_RTK_SYS_MASK_QUERY_T._serialized_end=662
|
47
|
+
_RTK_SYS_MASK_QUERY_ACK_T._serialized_start=664
|
48
|
+
_RTK_SYS_MASK_QUERY_ACK_T._serialized_end=736
|
49
|
+
_MCTLDRIVER._serialized_start=739
|
50
|
+
_MCTLDRIVER._serialized_end=1373
|
51
|
+
# @@protoc_insertion_point(module_scope)
|
@@ -1,19 +1,38 @@
|
|
1
1
|
from google.protobuf.internal import containers as _containers
|
2
|
+
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
2
3
|
from google.protobuf import descriptor as _descriptor
|
3
4
|
from google.protobuf import message as _message
|
4
5
|
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
|
5
6
|
|
7
|
+
COLLECT_ABNORMAL: CollectMotorState
|
8
|
+
COLLECT_CLOSE: CollectMotorState
|
9
|
+
COLLECT_OPEN: CollectMotorState
|
10
|
+
COLLECT_STUCK: CollectMotorState
|
6
11
|
DESCRIPTOR: _descriptor.FileDescriptor
|
12
|
+
UNLOAD_CLOSE: UnloadMotorState
|
13
|
+
UNLOAD_OPEN: UnloadMotorState
|
14
|
+
UNLOAD_RUNNING: UnloadMotorState
|
15
|
+
UNLOAD_STOP: UnloadMotorState
|
16
|
+
|
17
|
+
class DrvCollectCtrlByHand(_message.Message):
|
18
|
+
__slots__ = ["collect_ctrl", "unload_ctrl"]
|
19
|
+
COLLECT_CTRL_FIELD_NUMBER: _ClassVar[int]
|
20
|
+
UNLOAD_CTRL_FIELD_NUMBER: _ClassVar[int]
|
21
|
+
collect_ctrl: int
|
22
|
+
unload_ctrl: int
|
23
|
+
def __init__(self, collect_ctrl: _Optional[int] = ..., unload_ctrl: _Optional[int] = ...) -> None: ...
|
7
24
|
|
8
25
|
class DrvKnifeChangeReport(_message.Message):
|
9
|
-
__slots__ = ["end_high", "is_start", "start_high"]
|
26
|
+
__slots__ = ["cur_high", "end_high", "is_start", "start_high"]
|
27
|
+
CUR_HIGH_FIELD_NUMBER: _ClassVar[int]
|
10
28
|
END_HIGH_FIELD_NUMBER: _ClassVar[int]
|
11
29
|
IS_START_FIELD_NUMBER: _ClassVar[int]
|
12
30
|
START_HIGH_FIELD_NUMBER: _ClassVar[int]
|
31
|
+
cur_high: int
|
13
32
|
end_high: int
|
14
33
|
is_start: int
|
15
34
|
start_high: int
|
16
|
-
def __init__(self, is_start: _Optional[int] = ..., start_high: _Optional[int] = ..., end_high: _Optional[int] = ...) -> None: ...
|
35
|
+
def __init__(self, is_start: _Optional[int] = ..., start_high: _Optional[int] = ..., end_high: _Optional[int] = ..., cur_high: _Optional[int] = ...) -> None: ...
|
17
36
|
|
18
37
|
class DrvKnifeHeight(_message.Message):
|
19
38
|
__slots__ = ["knifeHeight"]
|
@@ -56,9 +75,10 @@ class DrvSrSpeed(_message.Message):
|
|
56
75
|
def __init__(self, rw: _Optional[int] = ..., speed: _Optional[float] = ...) -> None: ...
|
57
76
|
|
58
77
|
class MctlDriver(_message.Message):
|
59
|
-
__slots__ = ["bidire_knife_height_report", "bidire_speed_read_set", "mow_ctrl_by_hand", "rtk_cfg_req", "rtk_cfg_req_ack", "rtk_sys_mask_query", "rtk_sys_mask_query_ack", "toapp_knife_status", "toapp_knife_status_change", "todev_devmotion_ctrl", "todev_knife_height_set"]
|
78
|
+
__slots__ = ["bidire_knife_height_report", "bidire_speed_read_set", "collect_ctrl_by_hand", "mow_ctrl_by_hand", "rtk_cfg_req", "rtk_cfg_req_ack", "rtk_sys_mask_query", "rtk_sys_mask_query_ack", "toapp_knife_status", "toapp_knife_status_change", "todev_devmotion_ctrl", "todev_knife_height_set"]
|
60
79
|
BIDIRE_KNIFE_HEIGHT_REPORT_FIELD_NUMBER: _ClassVar[int]
|
61
80
|
BIDIRE_SPEED_READ_SET_FIELD_NUMBER: _ClassVar[int]
|
81
|
+
COLLECT_CTRL_BY_HAND_FIELD_NUMBER: _ClassVar[int]
|
62
82
|
MOW_CTRL_BY_HAND_FIELD_NUMBER: _ClassVar[int]
|
63
83
|
RTK_CFG_REQ_ACK_FIELD_NUMBER: _ClassVar[int]
|
64
84
|
RTK_CFG_REQ_FIELD_NUMBER: _ClassVar[int]
|
@@ -70,6 +90,7 @@ class MctlDriver(_message.Message):
|
|
70
90
|
TODEV_KNIFE_HEIGHT_SET_FIELD_NUMBER: _ClassVar[int]
|
71
91
|
bidire_knife_height_report: DrvKnifeHeight
|
72
92
|
bidire_speed_read_set: DrvSrSpeed
|
93
|
+
collect_ctrl_by_hand: DrvCollectCtrlByHand
|
73
94
|
mow_ctrl_by_hand: DrvMowCtrlByHand
|
74
95
|
rtk_cfg_req: rtk_cfg_req_t
|
75
96
|
rtk_cfg_req_ack: rtk_cfg_req_ack_t
|
@@ -79,7 +100,7 @@ class MctlDriver(_message.Message):
|
|
79
100
|
toapp_knife_status_change: DrvKnifeChangeReport
|
80
101
|
todev_devmotion_ctrl: DrvMotionCtrl
|
81
102
|
todev_knife_height_set: DrvKnifeHeight
|
82
|
-
def __init__(self, todev_devmotion_ctrl: _Optional[_Union[DrvMotionCtrl, _Mapping]] = ..., todev_knife_height_set: _Optional[_Union[DrvKnifeHeight, _Mapping]] = ..., bidire_speed_read_set: _Optional[_Union[DrvSrSpeed, _Mapping]] = ..., bidire_knife_height_report: _Optional[_Union[DrvKnifeHeight, _Mapping]] = ..., toapp_knife_status: _Optional[_Union[DrvKnifeStatus, _Mapping]] = ..., mow_ctrl_by_hand: _Optional[_Union[DrvMowCtrlByHand, _Mapping]] = ..., rtk_cfg_req: _Optional[_Union[rtk_cfg_req_t, _Mapping]] = ..., rtk_cfg_req_ack: _Optional[_Union[rtk_cfg_req_ack_t, _Mapping]] = ..., rtk_sys_mask_query: _Optional[_Union[rtk_sys_mask_query_t, _Mapping]] = ..., rtk_sys_mask_query_ack: _Optional[_Union[rtk_sys_mask_query_ack_t, _Mapping]] = ..., toapp_knife_status_change: _Optional[_Union[DrvKnifeChangeReport, _Mapping]] = ...) -> None: ...
|
103
|
+
def __init__(self, todev_devmotion_ctrl: _Optional[_Union[DrvMotionCtrl, _Mapping]] = ..., todev_knife_height_set: _Optional[_Union[DrvKnifeHeight, _Mapping]] = ..., bidire_speed_read_set: _Optional[_Union[DrvSrSpeed, _Mapping]] = ..., bidire_knife_height_report: _Optional[_Union[DrvKnifeHeight, _Mapping]] = ..., toapp_knife_status: _Optional[_Union[DrvKnifeStatus, _Mapping]] = ..., mow_ctrl_by_hand: _Optional[_Union[DrvMowCtrlByHand, _Mapping]] = ..., rtk_cfg_req: _Optional[_Union[rtk_cfg_req_t, _Mapping]] = ..., rtk_cfg_req_ack: _Optional[_Union[rtk_cfg_req_ack_t, _Mapping]] = ..., rtk_sys_mask_query: _Optional[_Union[rtk_sys_mask_query_t, _Mapping]] = ..., rtk_sys_mask_query_ack: _Optional[_Union[rtk_sys_mask_query_ack_t, _Mapping]] = ..., toapp_knife_status_change: _Optional[_Union[DrvKnifeChangeReport, _Mapping]] = ..., collect_ctrl_by_hand: _Optional[_Union[DrvCollectCtrlByHand, _Mapping]] = ...) -> None: ...
|
83
104
|
|
84
105
|
class rtk_cfg_req_ack_t(_message.Message):
|
85
106
|
__slots__ = ["cmd_length", "cmd_response"]
|
@@ -110,3 +131,9 @@ class rtk_sys_mask_query_t(_message.Message):
|
|
110
131
|
SAT_SYSTEM_FIELD_NUMBER: _ClassVar[int]
|
111
132
|
sat_system: int
|
112
133
|
def __init__(self, sat_system: _Optional[int] = ...) -> None: ...
|
134
|
+
|
135
|
+
class CollectMotorState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
136
|
+
__slots__ = []
|
137
|
+
|
138
|
+
class UnloadMotorState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
139
|
+
__slots__ = []
|