pymammotion 0.5.29__tar.gz → 0.5.31__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.

Potentially problematic release.


This version of pymammotion might be problematic. Click here for more details.

Files changed (136) hide show
  1. {pymammotion-0.5.29 → pymammotion-0.5.31}/PKG-INFO +1 -1
  2. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/client.py +3 -0
  3. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/http/http.py +48 -9
  4. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/commands/mammotion_command.py +14 -0
  5. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/commands/messages/system.py +0 -14
  6. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/devices/base.py +10 -10
  7. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/devices/mammotion.py +3 -2
  8. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/__init__.py +1 -1
  9. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_nav.proto +1 -1
  10. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_nav_pb2.py +1 -1
  11. {pymammotion-0.5.29 → pymammotion-0.5.31}/pyproject.toml +2 -2
  12. {pymammotion-0.5.29 → pymammotion-0.5.31}/LICENSE +0 -0
  13. {pymammotion-0.5.29 → pymammotion-0.5.31}/README.md +0 -0
  14. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/__init__.py +0 -0
  15. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/__init__.py +0 -0
  16. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/cloud_gateway.py +0 -0
  17. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/model/aep_response.py +0 -0
  18. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/model/connect_response.py +0 -0
  19. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/model/dev_by_account_response.py +0 -0
  20. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/model/login_by_oauth_response.py +0 -0
  21. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/model/regions_response.py +0 -0
  22. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/model/session_by_authcode_response.py +0 -0
  23. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/model/thing_response.py +0 -0
  24. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/regions.py +0 -0
  25. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/tea/core.py +0 -0
  26. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/aliyun/tmp_constant.py +0 -0
  27. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/bluetooth/__init__.py +0 -0
  28. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/bluetooth/ble.py +0 -0
  29. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/bluetooth/ble_message.py +0 -0
  30. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/bluetooth/const.py +0 -0
  31. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/bluetooth/data/__init__.py +0 -0
  32. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/bluetooth/data/convert.py +0 -0
  33. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/bluetooth/data/framectrldata.py +0 -0
  34. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/bluetooth/data/notifydata.py +0 -0
  35. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/bluetooth/model/__init__.py +0 -0
  36. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/bluetooth/model/atomic_integer.py +0 -0
  37. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/const.py +0 -0
  38. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/__init__.py +0 -0
  39. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/__init__.py +0 -0
  40. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/account.py +0 -0
  41. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/device.py +0 -0
  42. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/device_config.py +0 -0
  43. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/device_info.py +0 -0
  44. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/device_limits.py +0 -0
  45. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/enums.py +0 -0
  46. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/errors.py +0 -0
  47. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/excute_boarder_params.py +0 -0
  48. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/execute_boarder.py +0 -0
  49. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/generate_route_information.py +0 -0
  50. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/hash_list.py +0 -0
  51. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/location.py +0 -0
  52. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/mowing_modes.py +0 -0
  53. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/rapid_state.py +0 -0
  54. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/raw_data.py +0 -0
  55. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/region_data.py +0 -0
  56. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/report_info.py +0 -0
  57. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/model/work.py +0 -0
  58. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/mqtt/__init__.py +0 -0
  59. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/mqtt/event.py +0 -0
  60. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/mqtt/properties.py +0 -0
  61. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/mqtt/status.py +0 -0
  62. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/data/state_manager.py +0 -0
  63. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/event/__init__.py +0 -0
  64. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/event/event.py +0 -0
  65. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/http/__init__.py +0 -0
  66. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/http/_init_.py +0 -0
  67. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/http/encryption.py +0 -0
  68. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/http/model/__init__.py +0 -0
  69. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/http/model/camera_stream.py +0 -0
  70. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/http/model/http.py +0 -0
  71. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/http/model/response_factory.py +0 -0
  72. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/http/model/rtk.py +0 -0
  73. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/__init__.py +0 -0
  74. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/commands/__init__.py +0 -0
  75. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/commands/abstract_message.py +0 -0
  76. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/commands/messages/__init__.py +0 -0
  77. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/commands/messages/basestation.py +0 -0
  78. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/commands/messages/driver.py +0 -0
  79. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/commands/messages/media.py +0 -0
  80. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/commands/messages/navigation.py +0 -0
  81. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/commands/messages/network.py +0 -0
  82. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/commands/messages/ota.py +0 -0
  83. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/commands/messages/video.py +0 -0
  84. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/control/__init__.py +0 -0
  85. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/control/joystick.py +0 -0
  86. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/devices/__init__.py +0 -0
  87. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/devices/mammotion_bluetooth.py +0 -0
  88. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mammotion/devices/mammotion_cloud.py +1 -1
  89. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mqtt/__init__.py +0 -0
  90. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mqtt/linkkit/__init__.py +0 -0
  91. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mqtt/linkkit/h2client.py +0 -0
  92. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mqtt/linkkit/linkkit.py +0 -0
  93. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mqtt/mammotion_future.py +0 -0
  94. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/mqtt/mammotion_mqtt.py +0 -0
  95. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/basestation.proto +0 -0
  96. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/basestation_pb2.py +0 -0
  97. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/basestation_pb2.pyi +0 -0
  98. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/common.proto +0 -0
  99. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/common_pb2.py +0 -0
  100. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/common_pb2.pyi +0 -0
  101. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/dev_net.proto +0 -0
  102. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/dev_net_pb2.py +0 -0
  103. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/dev_net_pb2.pyi +0 -0
  104. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/luba_msg.proto +0 -0
  105. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/luba_msg_pb2.py +0 -0
  106. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/luba_msg_pb2.pyi +0 -0
  107. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/luba_mul.proto +0 -0
  108. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/luba_mul_pb2.py +0 -0
  109. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/luba_mul_pb2.pyi +0 -0
  110. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_driver.proto +0 -0
  111. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_driver_pb2.py +0 -0
  112. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_driver_pb2.pyi +0 -0
  113. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_nav_pb2.pyi +0 -0
  114. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_ota.proto +0 -0
  115. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_ota_pb2.py +0 -0
  116. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_ota_pb2.pyi +0 -0
  117. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_pept.proto +0 -0
  118. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_pept_pb2.py +0 -0
  119. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_pept_pb2.pyi +0 -0
  120. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_sys.proto +0 -0
  121. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_sys_pb2.py +0 -0
  122. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/mctrl_sys_pb2.pyi +0 -0
  123. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/message_pool.py +0 -0
  124. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/proto/py.typed +0 -0
  125. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/py.typed +0 -0
  126. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/utility/constant/__init__.py +0 -0
  127. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/utility/constant/device_constant.py +0 -0
  128. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/utility/conversions.py +0 -0
  129. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/utility/datatype_converter.py +0 -0
  130. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/utility/device_config.py +0 -0
  131. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/utility/device_type.py +0 -0
  132. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/utility/map.py +0 -0
  133. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/utility/movement.py +0 -0
  134. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/utility/mur_mur_hash.py +0 -0
  135. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/utility/periodic.py +0 -0
  136. {pymammotion-0.5.29 → pymammotion-0.5.31}/pymammotion/utility/rocker_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pymammotion
3
- Version: 0.5.29
3
+ Version: 0.5.31
4
4
  Summary:
5
5
  License: GPL-3.0
6
6
  Author: Michael Arthur
@@ -124,6 +124,9 @@ class Client:
124
124
  _request.headers["x-ca-signature"] = APIGatewayUtilClient.get_signature(_request, self._app_secret)
125
125
  _last_request = _request
126
126
  _response = TeaCore.do_action(_request, _runtime)
127
+ if _response.body.get("code") == 20056:
128
+ raise Exception("Gateway timeout.")
129
+
127
130
  return _response
128
131
  except Exception as e:
129
132
  if TeaCore.is_retryable(e):
@@ -1,4 +1,5 @@
1
1
  import csv
2
+ import time
2
3
  from typing import cast
3
4
 
4
5
  from aiohttp import ClientSession
@@ -13,7 +14,8 @@ from pymammotion.http.model.rtk import RTK
13
14
 
14
15
  class MammotionHTTP:
15
16
  def __init__(self) -> None:
16
- self.code = None
17
+ self.expires_in = 0
18
+ self.code = 0
17
19
  self.msg = None
18
20
  self.account = None
19
21
  self._password = None
@@ -26,6 +28,11 @@ class MammotionHTTP:
26
28
  def generate_headers(token: str) -> dict:
27
29
  return {"Authorization": f"Bearer {token}"}
28
30
 
31
+ async def handle_expiry(self, resp: Response) -> Response:
32
+ if resp.code == 401:
33
+ return await self.login(self.account, self._password)
34
+ return resp
35
+
29
36
  async def login_by_email(self, email: str, password: str) -> Response[LoginResponseData]:
30
37
  return await self.login(email, password)
31
38
 
@@ -54,11 +61,37 @@ class MammotionHTTP:
54
61
 
55
62
  Returns 401 if token is invalid. We then need to re-authenticate, can try to refresh token first
56
63
  """
57
- async with ClientSession(MAMMOTION_API_DOMAIN) as session:
58
- async with session.post("/user-server/v1/user/oauth/check", headers=self._headers) as resp:
64
+ async with ClientSession(MAMMOTION_DOMAIN) as session:
65
+ async with session.post(
66
+ "/user-server/v1/user/oauth/check",
67
+ headers={
68
+ **self._headers,
69
+ "Authorization": f"Bearer {self.login_info.access_token}",
70
+ "Content-Type": "application/json",
71
+ "User-Agent": "okhttp/4.9.3",
72
+ },
73
+ ) as resp:
59
74
  data = await resp.json()
60
75
  return Response.from_dict(data)
61
76
 
77
+ async def refresh_token(self) -> Response:
78
+ """Refresh token."""
79
+ async with ClientSession(MAMMOTION_DOMAIN) as session:
80
+ async with session.post(
81
+ "/authorization/code",
82
+ headers={
83
+ **self._headers,
84
+ "Authorization": f"Bearer {self.login_info.access_token}",
85
+ "Content-Type": "application/json",
86
+ "User-Agent": "okhttp/4.9.3",
87
+ },
88
+ json={"clientId": MAMMOTION_CLIENT_ID},
89
+ ) as resp:
90
+ data = await resp.json()
91
+
92
+ self.login_info.authorization_code = data["data"].get("code", self.login_info.authorization_code)
93
+ return Response.from_dict(data)
94
+
62
95
  async def pair_devices_mqtt(self, mower_name: str, rtk_name: str) -> Response:
63
96
  async with ClientSession(MAMMOTION_API_DOMAIN) as session:
64
97
  async with session.post(
@@ -72,6 +105,7 @@ class MammotionHTTP:
72
105
  return Response.from_dict(data)
73
106
  else:
74
107
  print(data)
108
+ return Response.from_dict(data)
75
109
 
76
110
  async def unpair_devices_mqtt(self, mower_name: str, rtk_name: str) -> Response:
77
111
  async with ClientSession(MAMMOTION_API_DOMAIN) as session:
@@ -86,6 +120,7 @@ class MammotionHTTP:
86
120
  return Response.from_dict(data)
87
121
  else:
88
122
  print(data)
123
+ return Response.from_dict(data)
89
124
 
90
125
  async def net_rtk_enable(self, device_id: str) -> Response:
91
126
  async with ClientSession(MAMMOTION_API_DOMAIN) as session:
@@ -98,6 +133,7 @@ class MammotionHTTP:
98
133
  return Response.from_dict(data)
99
134
  else:
100
135
  print(data)
136
+ return Response.from_dict(data)
101
137
 
102
138
  async def get_stream_subscription(self, iot_id: str) -> Response[StreamSubscriptionResponse]:
103
139
  """Fetches stream subscription data from agora.io for a given IoT device."""
@@ -116,6 +152,7 @@ class MammotionHTTP:
116
152
  # TODO catch errors from mismatch like token expire etc
117
153
  # Assuming the data format matches the expected structure
118
154
  response = Response[StreamSubscriptionResponse].from_dict(data)
155
+ await self.handle_expiry(response)
119
156
  if response.code != 0:
120
157
  return response
121
158
  response.data = StreamSubscriptionResponse.from_dict(data.get("data", {}))
@@ -149,6 +186,7 @@ class MammotionHTTP:
149
186
  # TODO catch errors from mismatch like token expire etc
150
187
  # Assuming the data format matches the expected structure
151
188
  response = Response[StreamSubscriptionResponse].from_dict(data)
189
+ await self.handle_expiry(response)
152
190
  if response.code != 0:
153
191
  return response
154
192
  response.data = StreamSubscriptionResponse.from_dict(data.get("data", {}))
@@ -226,12 +264,12 @@ class MammotionHTTP:
226
264
 
227
265
  return response_factory(Response[list[RTK]], data)
228
266
 
229
- async def refresh_login(self, account: str, password: str | None = None) -> Response[LoginResponseData]:
230
- if self._password is None and password is not None:
231
- self._password = password
232
- if self._password is None:
233
- raise ValueError("Password is required for refresh login")
234
- return await self.login(account, self._password)
267
+ async def refresh_login(self) -> Response[LoginResponseData]:
268
+ if self.expires_in > time.time():
269
+ res = await self.refresh_token()
270
+ if res.code == 0:
271
+ return res
272
+ return await self.login(self.account, self._password)
235
273
 
236
274
  async def login(self, account: str, password: str) -> Response[LoginResponseData]:
237
275
  """Logs in to the service using provided account and password."""
@@ -263,6 +301,7 @@ class MammotionHTTP:
263
301
  print(login_response)
264
302
  return Response.from_dict({"code": resp.status, "msg": "Login failed"})
265
303
  self.login_info = login_response.data
304
+ self.expires_in = login_response.data.expires_in + time.time()
266
305
  self._headers["Authorization"] = (
267
306
  f"Bearer {self.login_info.access_token}" if login_response.data else None
268
307
  )
@@ -30,6 +30,20 @@ class MammotionCommand(
30
30
  return self.allpowerfull_rw_adapter_x3(rw_id, context, rw)
31
31
  return self.allpowerfull_rw(rw_id, context, rw)
32
32
 
33
+ def traverse_mode(self, context: int) -> bytes:
34
+ """Sets the traversal mode back to charger."""
35
+ # setReChargeMode
36
+ # 0 direct
37
+ # 1 follow the perimeter
38
+ return self.read_write_device(7, context, 1)
39
+
40
+ def turning_mode(self, context: int) -> bytes:
41
+ """Sets the traversal mode back to charger."""
42
+ # setTurnAroundMode
43
+ # 0 zero turn
44
+ # 1 multipoint turn
45
+ return self.read_write_device(6, context, 1)
46
+
33
47
  def get_device_product_key(self) -> str:
34
48
  return self._product_key
35
49
 
@@ -119,20 +119,6 @@ class MessageSystem(AbstractMessage, ABC):
119
119
  logger.debug(f"Send command - 9 general read and write command id={rw_id}, context={context}, rw={rw}")
120
120
  return self.send_order_msg_sys(build)
121
121
 
122
- def traverse_mode(self, context: int) -> bytes:
123
- """Sets the traversal mode back to charger."""
124
- # setReChargeMode
125
- # 0 direct
126
- # 1 follow the perimeter
127
- return self.allpowerfull_rw(7, context, 1)
128
-
129
- def turning_mode(self, context: int) -> bytes:
130
- """Sets the traversal mode back to charger."""
131
- # setTurnAroundMode
132
- # 0 zero turn
133
- # 1 multipoint turn
134
- return self.allpowerfull_rw(6, context, 1)
135
-
136
122
  # Commented out as not needed and too many refs to try fix up
137
123
  # def factory_test_order(self, test_id: int, test_duration: int, expect: str):
138
124
  # new_builder = mow_to_app_qctools_info_t.Builder()
@@ -51,8 +51,8 @@ class MammotionBaseDevice:
51
51
 
52
52
  missing_frames = self.mower.map.missing_root_hash_frame(hash_ack)
53
53
  if len(missing_frames) == 0:
54
- if len(self.mower.map.missing_hashlist(0)) > 0:
55
- data_hash = self.mower.map.missing_hashlist(hash_ack.sub_cmd).pop()
54
+ if len(self.mower.map.missing_hashlist(hash_ack.sub_cmd)) > 0:
55
+ data_hash = self.mower.map.missing_hashlist(hash_ack.sub_cmd).pop(0)
56
56
  await self.queue_command("synchronize_hash_data", hash_num=data_hash)
57
57
  return
58
58
 
@@ -70,7 +70,7 @@ class MammotionBaseDevice:
70
70
  # get next in hash ack list
71
71
 
72
72
  data_hash = (
73
- self.mower.map.missing_hashlist(common_data.sub_cmd).pop()
73
+ self.mower.map.missing_hashlist(common_data.sub_cmd).pop(0)
74
74
  if len(self.mower.map.missing_hashlist(common_data.sub_cmd)) > 0
75
75
  else None
76
76
  )
@@ -210,7 +210,7 @@ class MammotionBaseDevice:
210
210
  await self.queue_command("get_device_product_model")
211
211
  await self.queue_command("get_report_cfg")
212
212
  """RTK and dock location."""
213
- await self.queue_command("allpowerfull_rw", rw_id=5, context=1, rw=1)
213
+ await self.queue_command("read_write_device", rw_id=5, context=1, rw=1)
214
214
  await self.async_read_settings()
215
215
 
216
216
  async def start_map_sync(self) -> None:
@@ -261,13 +261,13 @@ class MammotionBaseDevice:
261
261
  async def async_read_settings(self) -> None:
262
262
  """Read settings from device."""
263
263
  # no cutting in rain nav_sys_param_cmd (id 3 context 1/0)
264
- await self.queue_command("allpowerfull_rw", rw_id=3, context=1, rw=0)
264
+ await self.queue_command("read_write_device", rw_id=3, context=1, rw=0)
265
265
  # ??
266
- await self.queue_command("allpowerfull_rw", rw_id=4, context=1, rw=0)
266
+ await self.queue_command("read_write_device", rw_id=4, context=1, rw=0)
267
267
  # turning mode nav_sys_param_cmd (id 6, context 1/0)
268
- await self.queue_command("allpowerfull_rw", rw_id=6, context=1, rw=0)
268
+ await self.queue_command("read_write_device", rw_id=6, context=1, rw=0)
269
269
  # traversal mode
270
- await self.queue_command("allpowerfull_rw", rw_id=7, context=1, rw=0)
270
+ await self.queue_command("read_write_device", rw_id=7, context=1, rw=0)
271
271
 
272
272
  await self.queue_command("read_and_set_sidelight", is_sidelight=True, operate=1)
273
273
 
@@ -275,8 +275,8 @@ class MammotionBaseDevice:
275
275
 
276
276
  async def async_get_errors(self) -> None:
277
277
  """Error codes."""
278
- await self.queue_command("allpowerfull_rw", rw_id=5, rw=1, context=2)
279
- await self.queue_command("allpowerfull_rw", rw_id=5, rw=1, context=3)
278
+ await self.queue_command("read_write_device", rw_id=5, rw=1, context=2)
279
+ await self.queue_command("read_write_device", rw_id=5, rw=1, context=3)
280
280
 
281
281
  async def command(self, key: str, **kwargs):
282
282
  """Send a command to the device."""
@@ -199,7 +199,7 @@ class Mammotion:
199
199
  if not exists:
200
200
  return
201
201
  mammotion_http = exists.cloud_client.mammotion_http
202
- await mammotion_http.refresh_login(account, password)
202
+ await mammotion_http.refresh_login()
203
203
  await self.connect_iot(exists.cloud_client)
204
204
 
205
205
  if not exists.is_connected():
@@ -273,7 +273,8 @@ class Mammotion:
273
273
  async def connect_iot(cloud_client: CloudIOTGateway) -> None:
274
274
  mammotion_http = cloud_client.mammotion_http
275
275
  country_code = mammotion_http.login_info.userInformation.domainAbbreviation
276
- await cloud_client.get_region(country_code)
276
+ if cloud_client.region_response is None:
277
+ await cloud_client.get_region(country_code)
277
278
  await cloud_client.connect()
278
279
  await cloud_client.login_by_oauth(country_code)
279
280
  await cloud_client.aep_handle()
@@ -3020,7 +3020,7 @@ class NavGetCommData(betterproto2.Message):
3020
3020
 
3021
3021
  type: "int" = betterproto2.field(4, betterproto2.TYPE_INT32)
3022
3022
 
3023
- hash: "int" = betterproto2.field(5, betterproto2.TYPE_FIXED64)
3023
+ hash: "int" = betterproto2.field(5, betterproto2.TYPE_INT64)
3024
3024
 
3025
3025
  paternal_hash_a: "int" = betterproto2.field(6, betterproto2.TYPE_INT64)
3026
3026
 
@@ -141,7 +141,7 @@ message NavGetCommData {
141
141
  int32 subCmd = 2;
142
142
  int32 action = 3;
143
143
  int32 type = 4;
144
- fixed64 hash = 5;
144
+ int64 hash = 5;
145
145
  int64 paternalHashA = 6;
146
146
  int64 paternalHashB = 7;
147
147
  int32 totalFrame = 8;
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
14
14
  from pymammotion.proto import common_pb2 as pymammotion_dot_proto_dot_common__pb2
15
15
 
16
16
 
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!pymammotion/proto/mctrl_nav.proto\x1a\x1epymammotion/proto/common.proto\"\'\n\x0bNavLatLonUp\x12\x0b\n\x03lat\x18\x01 \x01(\x01\x12\x0b\n\x03lon\x18\x02 \x01(\x01\"!\n\x0eNavBorderState\x12\x0f\n\x07\x62\x64state\x18\x01 \x01(\x05\"\xc9\x01\n\x08NavPosUp\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\x0e\n\x06status\x18\x03 \x01(\x05\x12\x0e\n\x06toward\x18\x04 \x01(\x05\x12\r\n\x05stars\x18\x05 \x01(\x05\x12\x0b\n\x03\x61ge\x18\x06 \x01(\x02\x12\x11\n\tlatStddev\x18\x07 \x01(\x02\x12\x11\n\tlonStddev\x18\x08 \x01(\x02\x12\x11\n\tl2dfStars\x18\t \x01(\x05\x12\x0f\n\x07posType\x18\n \x01(\x05\x12\x0f\n\x07\x63HashId\x18\x0b \x01(\x03\x12\x10\n\x08posLevel\x18\x0c \x01(\x05\":\n\x13NavBorderDataGetAck\x12\r\n\x05jobId\x18\x01 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x02 \x01(\x05\"Z\n\x15NavObstiBorderDataGet\x12\x15\n\robstacleIndex\x18\x01 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x02 \x01(\x05\x12\x14\n\x0cobstaclesLen\x18\x03 \x01(\x05\"G\n\x18NavObstiBorderDataGetAck\x12\x15\n\robstacleIndex\x18\x01 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x02 \x01(\x05\"d\n\x0eNavCHlLineData\x12\x12\n\nstartJobRI\x18\x01 \x01(\x05\x12\x10\n\x08\x65ndJobRI\x18\x02 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x03 \x01(\x05\x12\x16\n\x0e\x63hannelLineLen\x18\x04 \x01(\x05\"O\n\x11NavCHlLineDataAck\x12\x12\n\nstartJobRI\x18\x01 \x01(\x05\x12\x10\n\x08\x65ndJobRI\x18\x02 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x03 \x01(\x05\"\x7f\n\x0bNavTaskInfo\x12\x0c\n\x04\x61rea\x18\x01 \x01(\x05\x12\x0c\n\x04time\x18\x02 \x01(\x05\x12\x10\n\x08\x61llFrame\x18\x03 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x04 \x01(\x05\x12\x0f\n\x07pathlen\x18\x05 \x01(\x05\x12\x1b\n\x02\x64\x63\x18\x06 \x03(\x0b\x32\x0f.CommDataCouple\"J\n\x10NavBorderDataGet\x12\r\n\x05jobId\x18\x01 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x02 \x01(\x05\x12\x11\n\tborderLen\x18\x03 \x01(\x05\"\x91\x01\n\x0cNavOptLineUp\x12\x12\n\nstartJobRI\x18\x01 \x01(\x05\x12\x10\n\x08\x65ndJobRI\x18\x02 \x01(\x05\x12\x10\n\x08\x61llFrame\x18\x03 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x04 \x01(\x05\x12\x16\n\x0e\x63hannelDataLen\x18\x05 \x01(\x05\x12\x1b\n\x02\x64\x63\x18\x06 \x03(\x0b\x32\x0f.CommDataCouple\"~\n\x11NavOptiBorderInfo\x12\r\n\x05jobId\x18\x01 \x01(\x05\x12\x10\n\x08\x61llFrame\x18\x02 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x03 \x01(\x05\x12\x15\n\rborderDataLen\x18\x04 \x01(\x05\x12\x1b\n\x02\x64\x63\x18\x05 \x03(\x0b\x32\x0f.CommDataCouple\"\x81\x01\n\rNavOptObsInfo\x12\x12\n\nobstacleId\x18\x01 \x01(\x05\x12\x10\n\x08\x61llFrame\x18\x02 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x03 \x01(\x05\x12\x17\n\x0fobstacleDataLen\x18\x04 \x01(\x05\x12\x1b\n\x02\x64\x63\x18\x05 \x03(\x0b\x32\x0f.CommDataCouple\"\xb4\x01\n\x0bNavStartJob\x12\r\n\x05jobId\x18\x01 \x01(\x03\x12\x0e\n\x06jobVer\x18\x02 \x01(\x05\x12\x0f\n\x07jobMode\x18\x03 \x01(\x05\x12\x13\n\x0brainTactics\x18\x04 \x01(\x05\x12\x13\n\x0bknifeHeight\x18\x05 \x01(\x05\x12\r\n\x05speed\x18\x06 \x01(\x02\x12\x14\n\x0c\x63hannelWidth\x18\x07 \x01(\x05\x12\x11\n\tUltraWave\x18\x08 \x01(\x05\x12\x13\n\x0b\x63hannelMode\x18\t \x01(\x05\"\'\n\x0fNavTaskProgress\x12\x14\n\x0ctaskProgress\x18\x01 \x01(\x05\"\x1e\n\x0bNavResFrame\x12\x0f\n\x07\x66rameid\x18\x01 \x01(\x05\"|\n\x0eNavGetHashList\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x12\n\ntotalFrame\x18\x03 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x04 \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x05 \x01(\x06\x12\x10\n\x08reserved\x18\x06 \x01(\t\"\xb4\x01\n\x11NavGetHashListAck\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x12\n\ntotalFrame\x18\x03 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x04 \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x05 \x01(\x06\x12\x0f\n\x07hashLen\x18\x06 \x01(\x05\x12\x10\n\x08reserved\x18\x07 \x01(\t\x12\x0e\n\x06result\x18\x08 \x01(\x05\x12\x12\n\ndataCouple\x18\r \x03(\x03\"\xd6\x01\n\x0eNavGetCommData\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x03 \x01(\x05\x12\x0c\n\x04type\x18\x04 \x01(\x05\x12\x0c\n\x04hash\x18\x05 \x01(\x06\x12\x15\n\rpaternalHashA\x18\x06 \x01(\x03\x12\x15\n\rpaternalHashB\x18\x07 \x01(\x03\x12\x12\n\ntotalFrame\x18\x08 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\t \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\n \x01(\x06\x12\x10\n\x08reserved\x18\x0b \x01(\t\"H\n\x0eNavGetNameTime\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x63reate_time\x18\x02 \x01(\x06\x12\x13\n\x0bmodify_time\x18\x03 \x01(\x06\"\xc2\x02\n\x11NavGetCommDataAck\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x0e\n\x06result\x18\x03 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x04 \x01(\x05\x12\x0c\n\x04type\x18\x05 \x01(\x05\x12\x0c\n\x04Hash\x18\x06 \x01(\x06\x12\x15\n\rpaternalHashA\x18\x07 \x01(\x06\x12\x15\n\rpaternalHashB\x18\x08 \x01(\x06\x12\x12\n\ntotalFrame\x18\t \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\n \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x0b \x01(\x06\x12\x0f\n\x07\x64\x61taLen\x18\x0c \x01(\x05\x12#\n\ndataCouple\x18\r \x03(\x0b\x32\x0f.CommDataCouple\x12\x10\n\x08reserved\x18\x0e \x01(\t\x12!\n\x08nameTime\x18\x0f \x01(\x0b\x32\x0f.NavGetNameTime\"\xde\x02\n\x0fNavReqCoverPath\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\r\n\x05jobId\x18\x02 \x01(\x06\x12\x0e\n\x06jobVer\x18\x03 \x01(\x05\x12\x0f\n\x07jobMode\x18\x04 \x01(\x05\x12\x0e\n\x06subCmd\x18\x05 \x01(\x05\x12\x10\n\x08\x65\x64geMode\x18\x06 \x01(\x05\x12\x13\n\x0bknifeHeight\x18\x07 \x01(\x05\x12\x14\n\x0c\x63hannelWidth\x18\x08 \x01(\x05\x12\x11\n\tUltraWave\x18\t \x01(\x05\x12\x13\n\x0b\x63hannelMode\x18\n \x01(\x05\x12\x0e\n\x06toward\x18\x0b \x01(\x05\x12\r\n\x05speed\x18\x0c \x01(\x02\x12\x11\n\tzoneHashs\x18\r \x03(\x06\x12\x10\n\x08pathHash\x18\x0e \x01(\x06\x12\x10\n\x08reserved\x18\x0f \x01(\t\x12\x0e\n\x06result\x18\x10 \x01(\x05\x12\x13\n\x0btoward_mode\x18\x11 \x01(\x05\x12\x1d\n\x15toward_included_angle\x18\x12 \x01(\x05\"\xa7\x03\n\x15NavUploadZigZagResult\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\r\n\x05jobId\x18\x02 \x01(\x06\x12\x0e\n\x06jobVer\x18\x03 \x01(\x05\x12\x0e\n\x06result\x18\x04 \x01(\x05\x12\x0c\n\x04\x61rea\x18\x05 \x01(\x05\x12\x0c\n\x04time\x18\x06 \x01(\x05\x12\x14\n\x0ctotalZoneNum\x18\x07 \x01(\x05\x12\x1a\n\x12\x63urrentZonePathNum\x18\x08 \x01(\x05\x12\x19\n\x11\x63urrentZonePathId\x18\t \x01(\x05\x12\x13\n\x0b\x63urrentZone\x18\n \x01(\x05\x12\x13\n\x0b\x63urrentHash\x18\x0b \x01(\x06\x12\x12\n\ntotalFrame\x18\x0c \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\r \x01(\x05\x12\x13\n\x0b\x63hannelMode\x18\x0e \x01(\x05\x12\x15\n\rchannelModeId\x18\x0f \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x10 \x01(\x06\x12\x0f\n\x07\x64\x61taLen\x18\x11 \x01(\x05\x12\x10\n\x08reserved\x18\x12 \x01(\t\x12#\n\ndataCouple\x18\x13 \x03(\x0b\x32\x0f.CommDataCouple\x12\x0e\n\x06subCmd\x18\x14 \x01(\x05\"\xb0\x01\n\x18NavUploadZigZagResultAck\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x13\n\x0b\x63urrentZone\x18\x02 \x01(\x05\x12\x13\n\x0b\x63urrentHash\x18\x03 \x01(\x06\x12\x12\n\ntotalFrame\x18\x04 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x05 \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x06 \x01(\x06\x12\x10\n\x08reserved\x18\x07 \x01(\t\x12\x0e\n\x06subCmd\x18\x08 \x01(\x05\"M\n\x0bNavTaskCtrl\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\x05\x12\x0e\n\x06result\x18\x03 \x01(\x05\x12\x10\n\x08reserved\x18\x04 \x01(\t\"o\n\x0bNavTaskIdRw\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x10\n\x08taskName\x18\x03 \x01(\t\x12\x0e\n\x06taskId\x18\x04 \x01(\t\x12\x0e\n\x06result\x18\x05 \x01(\x05\x12\x10\n\x08reserved\x18\x06 \x01(\t\"J\n\x12NavSysHashOverview\x12\x1a\n\x12\x63ommonhashOverview\x18\x01 \x01(\x06\x12\x18\n\x10pathHashOverview\x18\x02 \x01(\x06\"i\n\x11NavTaskBreakPoint\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\x0e\n\x06toward\x18\x03 \x01(\x05\x12\x0c\n\x04\x66lag\x18\x04 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x05 \x01(\x05\x12\x10\n\x08zoneHash\x18\x06 \x01(\x06\"\xc2\x05\n\rNavPlanJobSet\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x0c\n\x04\x61rea\x18\x03 \x01(\x05\x12\x10\n\x08workTime\x18\x04 \x01(\x05\x12\x0f\n\x07version\x18\x05 \x01(\t\x12\n\n\x02id\x18\x06 \x01(\t\x12\x0e\n\x06userId\x18\x07 \x01(\t\x12\x10\n\x08\x64\x65viceId\x18\x08 \x01(\t\x12\x0e\n\x06planId\x18\t \x01(\t\x12\x0e\n\x06taskId\x18\n \x01(\t\x12\r\n\x05jobId\x18\x0b \x01(\t\x12\x11\n\tstartTime\x18\x0c \x01(\t\x12\x0f\n\x07\x65ndTime\x18\r \x01(\t\x12\x0c\n\x04week\x18\x0e \x01(\x05\x12\x13\n\x0bknifeHeight\x18\x0f \x01(\x05\x12\r\n\x05model\x18\x10 \x01(\x05\x12\x10\n\x08\x65\x64geMode\x18\x11 \x01(\x05\x12\x14\n\x0crequiredTime\x18\x12 \x01(\x05\x12\x12\n\nrouteAngle\x18\x13 \x01(\x05\x12\x12\n\nrouteModel\x18\x14 \x01(\x05\x12\x14\n\x0crouteSpacing\x18\x15 \x01(\x05\x12\x19\n\x11ultrasonicBarrier\x18\x16 \x01(\x05\x12\x14\n\x0ctotalPlanNum\x18\x17 \x01(\x05\x12\x11\n\tPlanIndex\x18\x18 \x01(\x05\x12\x0e\n\x06result\x18\x19 \x01(\x05\x12\r\n\x05speed\x18\x1a \x01(\x02\x12\x10\n\x08taskName\x18\x1b \x01(\t\x12\x0f\n\x07jobName\x18\x1c \x01(\t\x12\x11\n\tzoneHashs\x18\x1d \x03(\x06\x12\x10\n\x08reserved\x18\x1e \x01(\t\x12\x11\n\tstartDate\x18\x1f \x01(\t\x12\x0f\n\x07\x65ndDate\x18 \x01(\t\x12\x13\n\x0btriggerType\x18! \x01(\x05\x12\x0b\n\x03\x64\x61y\x18\" \x01(\x05\x12\r\n\x05weeks\x18# \x03(\x07\x12\x18\n\x10remained_seconds\x18$ \x01(\x03\x12\x12\n\ntowardMode\x18% \x01(\x05\x12\x1b\n\x13towardIncludedAngle\x18& \x01(\x05\"\x97\x01\n\x10NavUnableTimeSet\x12\x0e\n\x06subCmd\x18\x01 \x01(\x05\x12\x10\n\x08\x64\x65viceId\x18\x02 \x01(\t\x12\x17\n\x0funableStartTime\x18\x03 \x01(\t\x12\x15\n\runableEndTime\x18\x04 \x01(\t\x12\x0e\n\x06result\x18\x05 \x01(\x05\x12\x10\n\x08reserved\x18\x06 \x01(\t\x12\x0f\n\x07trigger\x18\x07 \x01(\x05\"6\n\x0e\x63hargePileType\x12\x0e\n\x06toward\x18\x01 \x01(\x05\x12\t\n\x01x\x18\x02 \x01(\x02\x12\t\n\x01y\x18\x03 \x01(\x02\"J\n\x11SimulationCmdData\x12\x0e\n\x06subCmd\x18\x01 \x01(\x05\x12\x10\n\x08param_id\x18\x02 \x01(\x05\x12\x13\n\x0bparam_value\x18\x03 \x03(\x05\"%\n\x13WorkReportUpdateCmd\x12\x0e\n\x06subCmd\x18\x01 \x01(\x05\"<\n\x13WorkReportUpdateAck\x12\x13\n\x0bupdate_flag\x18\x01 \x01(\x08\x12\x10\n\x08info_num\x18\x02 \x01(\x05\"7\n\x11WorkReportCmdData\x12\x0e\n\x06subCmd\x18\x01 \x01(\x05\x12\x12\n\ngetInfoNum\x18\x02 \x01(\x05\"\xa3\x02\n\x11WorkReportInfoAck\x12\x16\n\x0einterrupt_flag\x18\x01 \x01(\x08\x12\x17\n\x0fstart_work_time\x18\x02 \x01(\x03\x12\x15\n\rend_work_time\x18\x03 \x01(\x03\x12\x16\n\x0ework_time_used\x18\x04 \x01(\x05\x12\x11\n\twork_ares\x18\x05 \x01(\x01\x12\x15\n\rwork_progress\x18\x06 \x01(\x05\x12\x17\n\x0fheight_of_knife\x18\x07 \x01(\x05\x12\x11\n\twork_type\x18\x08 \x01(\x05\x12\x13\n\x0bwork_result\x18\t \x01(\x05\x12\x15\n\rtotal_ack_num\x18\n \x01(\x05\x12\x17\n\x0f\x63urrent_ack_num\x18\x0b \x01(\x05\x12\x13\n\x0bjob_content\x18\x0c \x01(\x05\"\xb2\x01\n\x19\x61pp_request_cover_paths_t\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x12\n\ntotalFrame\x18\x03 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x04 \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x05 \x01(\x06\x12\x16\n\x0etransaction_id\x18\x06 \x01(\x03\x12\x10\n\x08reserved\x18\x07 \x03(\x03\x12\x11\n\thash_list\x18\x08 \x03(\x06\"\x99\x01\n\x13\x63over_path_packet_t\x12\x11\n\tpath_hash\x18\x01 \x01(\x06\x12\x11\n\tpath_type\x18\x02 \x01(\x05\x12\x12\n\npath_total\x18\x03 \x01(\x05\x12\x10\n\x08path_cur\x18\x04 \x01(\x05\x12\x11\n\tzone_hash\x18\x05 \x01(\x06\x12#\n\ndataCouple\x18\x06 \x03(\x0b\x32\x0f.CommDataCouple\"\xb2\x02\n\x13\x63over_path_upload_t\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06result\x18\x02 \x01(\x05\x12\x0e\n\x06subCmd\x18\x03 \x01(\x05\x12\x0c\n\x04\x61rea\x18\x04 \x01(\x05\x12\x0c\n\x04time\x18\x05 \x01(\x05\x12\x12\n\ntotalFrame\x18\x06 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x07 \x01(\x05\x12\x16\n\x0etotal_path_num\x18\x08 \x01(\x05\x12\x16\n\x0evaild_path_num\x18\t \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\n \x01(\x06\x12\x16\n\x0etransaction_id\x18\x0b \x01(\x03\x12\x10\n\x08reserved\x18\x0c \x03(\x03\x12\x0f\n\x07\x64\x61taLen\x18\r \x01(\x05\x12*\n\x0cpath_packets\x18\x0e \x03(\x0b\x32\x14.cover_path_packet_t\"M\n\x14zone_start_precent_t\x12\x10\n\x08\x64\x61taHash\x18\x01 \x01(\x06\x12\t\n\x01x\x18\x02 \x01(\x02\x12\t\n\x01y\x18\x03 \x01(\x02\x12\r\n\x05index\x18\x04 \x01(\x05\",\n\x0fvision_ctrl_msg\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x0b\n\x03\x63md\x18\x02 \x01(\x05\"<\n\x11nav_sys_param_msg\x12\n\n\x02rw\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x0f\n\x07\x63ontext\x18\x03 \x01(\x05\"Q\n\x15nav_plan_task_execute\x12\x0e\n\x06subCmd\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0e\n\x06result\x18\x04 \x01(\x05\"y\n\tcostmap_t\x12\r\n\x05width\x18\x01 \x01(\x05\x12\x0e\n\x06height\x18\x02 \x01(\x05\x12\x10\n\x08\x63\x65nter_x\x18\x03 \x01(\x02\x12\x10\n\x08\x63\x65nter_y\x18\x04 \x01(\x02\x12\x0b\n\x03yaw\x18\x05 \x01(\x02\x12\x0b\n\x03res\x18\x06 \x01(\x02\x12\x0f\n\x07\x63ostmap\x18\x07 \x03(\x05\"\x94\x02\n\rsvg_message_t\x12\x0e\n\x06x_move\x18\x01 \x01(\x01\x12\x0e\n\x06y_move\x18\x02 \x01(\x01\x12\r\n\x05scale\x18\x03 \x01(\x01\x12\x0e\n\x06rotate\x18\x04 \x01(\x01\x12\x14\n\x0c\x62\x61se_width_m\x18\x05 \x01(\x01\x12\x15\n\rbase_height_m\x18\x06 \x01(\x01\x12\x16\n\x0e\x62\x61se_width_pix\x18\x07 \x01(\x05\x12\x17\n\x0f\x62\x61se_height_pix\x18\x08 \x01(\x05\x12\x15\n\rsvg_file_name\x18\t \x01(\t\x12\x15\n\rsvg_file_data\x18\n \x01(\t\x12\x12\n\nname_count\x18\x0b \x01(\x05\x12\x12\n\ndata_count\x18\x0c \x01(\x05\x12\x10\n\x08hide_svg\x18\r \x01(\x08\"\xc7\x01\n\x11svg_message_ack_t\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x12\n\ntotalFrame\x18\x03 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x04 \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x05 \x01(\x06\x12\x15\n\rpaternalHashA\x18\x06 \x01(\x06\x12\x0c\n\x04type\x18\x07 \x01(\x05\x12\x0e\n\x06result\x18\x08 \x01(\x05\x12#\n\x0bsvg_message\x18\t \x01(\x0b\x32\x0e.svg_message_t\"/\n\x13plan_task_name_id_t\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"<\n\x15nav_get_all_plan_task\x12#\n\x05tasks\x18\x01 \x03(\x0b\x32\x14.plan_task_name_id_t\",\n\x0e\x61rea_hash_name\x12\x0c\n\x04hash\x18\x01 \x01(\x06\x12\x0c\n\x04name\x18\x02 \x01(\t\"M\n\x15\x41ppGetAllAreaHashName\x12\x10\n\x08\x64\x65viceId\x18\x01 \x01(\t\x12\"\n\thashnames\x18\x02 \x03(\x0b\x32\x0f.area_hash_name\"c\n\x0eNavTaskCtrlAck\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\x05\x12\x0e\n\x06result\x18\x03 \x01(\x05\x12\x11\n\tnav_state\x18\x04 \x01(\x05\x12\x10\n\x08reserved\x18\x05 \x01(\t\"Y\n\rNavMapNameMsg\x12\n\n\x02rw\x18\x01 \x01(\x05\x12\x0c\n\x04hash\x18\x02 \x01(\x06\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0e\n\x06result\x18\x04 \x01(\x05\x12\x10\n\x08\x64\x65viceId\x18\x05 \x01(\t\"\x9a\x01\n\rNavEdgePoints\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\x05\x12\x0c\n\x04type\x18\x03 \x01(\x05\x12\x0c\n\x04Hash\x18\x04 \x01(\x06\x12\x12\n\ntotalFrame\x18\x05 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x06 \x01(\x05\x12#\n\ndataCouple\x18\x07 \x03(\x0b\x32\x0f.CommDataCouple\"x\n\x10NavEdgePointsAck\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\x05\x12\x0c\n\x04type\x18\x03 \x01(\x05\x12\x0c\n\x04Hash\x18\x04 \x01(\x06\x12\x12\n\ntotalFrame\x18\x05 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x06 \x01(\x05\"\x8f\x02\n\x14ManualElementMessage\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0c\n\x04type\x18\x02 \x01(\x05\x12\r\n\x05shape\x18\x03 \x01(\x05\x12\x0e\n\x06result\x18\x04 \x01(\x05\x12\x0e\n\x06subCmd\x18\x05 \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x06 \x01(\x06\x12\x0e\n\x06ifHide\x18\x07 \x01(\x08\x12\x10\n\x08reserved\x18\x08 \x01(\t\x12\x17\n\x0fpoint1_center_x\x18\t \x01(\x01\x12\x17\n\x0fpoint1_center_y\x18\n \x01(\x01\x12\x16\n\x0epoint2_width_x\x18\x0b \x01(\x01\x12\x17\n\x0fpoint2_height_y\x18\x0c \x01(\x01\x12\x15\n\rrotate_radius\x18\r \x01(\x01\"\x81\x16\n\x07MctlNav\x12$\n\x0ctoapp_lat_up\x18\x01 \x01(\x0b\x32\x0c.NavLatLonUpH\x00\x12!\n\x0ctoapp_pos_up\x18\x02 \x01(\x0b\x32\t.NavPosUpH\x00\x12.\n\x13todev_chl_line_data\x18\x03 \x01(\x0b\x32\x0f.NavCHlLineDataH\x00\x12\'\n\x0ftoapp_task_info\x18\x04 \x01(\x0b\x32\x0c.NavTaskInfoH\x00\x12*\n\x11toapp_opt_line_up\x18\x05 \x01(\x0b\x32\r.NavOptLineUpH\x00\x12\x33\n\x15toapp_opt_border_info\x18\x06 \x01(\x0b\x32\x12.NavOptiBorderInfoH\x00\x12,\n\x12toapp_opt_obs_info\x18\x07 \x01(\x0b\x32\x0e.NavOptObsInfoH\x00\x12+\n\x13todev_task_info_ack\x18\x08 \x01(\x0b\x32\x0c.NavResFrameH\x00\x12\x31\n\x19todev_opt_border_info_ack\x18\t \x01(\x0b\x32\x0c.NavResFrameH\x00\x12.\n\x16todev_opt_obs_info_ack\x18\n \x01(\x0b\x32\x0c.NavResFrameH\x00\x12-\n\x15todev_opt_line_up_ack\x18\x0b \x01(\x0b\x32\x0c.NavResFrameH\x00\x12*\n\x0ftoapp_chgpileto\x18\x0c \x01(\x0b\x32\x0f.chargePileTypeH\x00\x12\x17\n\rtodev_sustask\x18\r \x01(\x05H\x00\x12\x18\n\x0etodev_rechgcmd\x18\x0e \x01(\x05H\x00\x12\x17\n\rtodev_edgecmd\x18\x0f \x01(\x05H\x00\x12\x1b\n\x11todev_draw_border\x18\x10 \x01(\x05H\x00\x12\x1f\n\x15todev_draw_border_end\x18\x11 \x01(\x05H\x00\x12\x18\n\x0etodev_draw_obs\x18\x12 \x01(\x05H\x00\x12\x1c\n\x12todev_draw_obs_end\x18\x13 \x01(\x05H\x00\x12\x18\n\x0etodev_chl_line\x18\x14 \x01(\x05H\x00\x12\x1c\n\x12todev_chl_line_end\x18\x15 \x01(\x05H\x00\x12\x19\n\x0ftodev_save_task\x18\x16 \x01(\x05H\x00\x12\x1d\n\x13todev_cancel_suscmd\x18\x17 \x01(\x05H\x00\x12\x1e\n\x14todev_reset_chg_pile\x18\x18 \x01(\x05H\x00\x12\x1f\n\x15todev_cancel_draw_cmd\x18\x19 \x01(\x05H\x00\x12$\n\x1atodev_one_touch_leave_pile\x18\x1a \x01(\x05H\x00\x12&\n\x0etodev_mow_task\x18\x1b \x01(\x0b\x32\x0c.NavStartJobH\x00\x12\'\n\x0ctoapp_bstate\x18\x1c \x01(\x0b\x32\x0f.NavBorderStateH\x00\x12\x1a\n\x10todev_lat_up_ack\x18\x1d \x01(\x05H\x00\x12(\n\rtodev_gethash\x18\x1e \x01(\x0b\x32\x0f.NavGetHashListH\x00\x12/\n\x11toapp_gethash_ack\x18\x1f \x01(\x0b\x32\x12.NavGetHashListAckH\x00\x12/\n\x14todev_get_commondata\x18 \x01(\x0b\x32\x0f.NavGetCommDataH\x00\x12\x36\n\x18toapp_get_commondata_ack\x18! \x01(\x0b\x32\x12.NavGetCommDataAckH\x00\x12\x31\n\x15\x62idire_reqconver_path\x18\" \x01(\x0b\x32\x10.NavReqCoverPathH\x00\x12.\n\x0ctoapp_zigzag\x18# \x01(\x0b\x32\x16.NavUploadZigZagResultH\x00\x12\x35\n\x10todev_zigzag_ack\x18$ \x01(\x0b\x32\x19.NavUploadZigZagResultAckH\x00\x12&\n\x0etodev_taskctrl\x18% \x01(\x0b\x32\x0c.NavTaskCtrlH\x00\x12%\n\rbidire_taskid\x18& \x01(\x0b\x32\x0c.NavTaskIdRwH\x00\x12&\n\x08toapp_bp\x18\' \x01(\x0b\x32\x12.NavTaskBreakPointH\x00\x12+\n\x11todev_planjob_set\x18( \x01(\x0b\x32\x0e.NavPlanJobSetH\x00\x12\x32\n\x15todev_unable_time_set\x18) \x01(\x0b\x32\x11.NavUnableTimeSetH\x00\x12,\n\x0esimulation_cmd\x18* \x01(\x0b\x32\x12.SimulationCmdDataH\x00\x12<\n\x1ctodev_work_report_update_cmd\x18+ \x01(\x0b\x32\x14.WorkReportUpdateCmdH\x00\x12<\n\x1ctoapp_work_report_update_ack\x18, \x01(\x0b\x32\x14.WorkReportUpdateAckH\x00\x12\x33\n\x15todev_work_report_cmd\x18- \x01(\x0b\x32\x12.WorkReportCmdDataH\x00\x12\x33\n\x15toapp_work_report_ack\x18. \x01(\x0b\x32\x12.WorkReportInfoAckH\x00\x12\x36\n\x18toapp_work_report_upload\x18/ \x01(\x0b\x32\x12.WorkReportInfoAckH\x00\x12=\n\x17\x61pp_request_cover_paths\x18\x30 \x01(\x0b\x32\x1a.app_request_cover_paths_tH\x00\x12\x31\n\x11\x63over_path_upload\x18\x31 \x01(\x0b\x32\x14.cover_path_upload_tH\x00\x12\x33\n\x12zone_start_precent\x18\x32 \x01(\x0b\x32\x15.zone_start_precent_tH\x00\x12\'\n\x0bvision_ctrl\x18\x33 \x01(\x0b\x32\x10.vision_ctrl_msgH\x00\x12/\n\x11nav_sys_param_cmd\x18\x34 \x01(\x0b\x32\x12.nav_sys_param_msgH\x00\x12\x33\n\x11plan_task_execute\x18\x35 \x01(\x0b\x32\x16.nav_plan_task_executeH\x00\x12#\n\rtoapp_costmap\x18\x36 \x01(\x0b\x32\n.costmap_tH\x00\x12\x31\n\x11plan_task_name_id\x18\x37 \x01(\x0b\x32\x14.plan_task_name_id_tH\x00\x12/\n\rall_plan_task\x18\x38 \x01(\x0b\x32\x16.nav_get_all_plan_taskH\x00\x12-\n\x12todev_taskctrl_ack\x18\x39 \x01(\x0b\x32\x0f.NavTaskCtrlAckH\x00\x12,\n\x12toapp_map_name_msg\x18: \x01(\x0b\x32\x0e.NavMapNameMsgH\x00\x12+\n\rtodev_svg_msg\x18; \x01(\x0b\x32\x12.svg_message_ack_tH\x00\x12+\n\rtoapp_svg_msg\x18< \x01(\x0b\x32\x12.svg_message_ack_tH\x00\x12\x35\n\x13toapp_all_hash_name\x18= \x01(\x0b\x32\x16.AppGetAllAreaHashNameH\x00\x12+\n\x11toapp_edge_points\x18> \x01(\x0b\x32\x0e.NavEdgePointsH\x00\x12\x32\n\x15toapp_edge_points_ack\x18? \x01(\x0b\x32\x11.NavEdgePointsAckH\x00\x12\x35\n\x14toapp_manual_element\x18@ \x01(\x0b\x32\x15.ManualElementMessageH\x00\x42\x0b\n\tSubNavMsgb\x06proto3')
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!pymammotion/proto/mctrl_nav.proto\x1a\x1epymammotion/proto/common.proto\"\'\n\x0bNavLatLonUp\x12\x0b\n\x03lat\x18\x01 \x01(\x01\x12\x0b\n\x03lon\x18\x02 \x01(\x01\"!\n\x0eNavBorderState\x12\x0f\n\x07\x62\x64state\x18\x01 \x01(\x05\"\xc9\x01\n\x08NavPosUp\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\x0e\n\x06status\x18\x03 \x01(\x05\x12\x0e\n\x06toward\x18\x04 \x01(\x05\x12\r\n\x05stars\x18\x05 \x01(\x05\x12\x0b\n\x03\x61ge\x18\x06 \x01(\x02\x12\x11\n\tlatStddev\x18\x07 \x01(\x02\x12\x11\n\tlonStddev\x18\x08 \x01(\x02\x12\x11\n\tl2dfStars\x18\t \x01(\x05\x12\x0f\n\x07posType\x18\n \x01(\x05\x12\x0f\n\x07\x63HashId\x18\x0b \x01(\x03\x12\x10\n\x08posLevel\x18\x0c \x01(\x05\":\n\x13NavBorderDataGetAck\x12\r\n\x05jobId\x18\x01 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x02 \x01(\x05\"Z\n\x15NavObstiBorderDataGet\x12\x15\n\robstacleIndex\x18\x01 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x02 \x01(\x05\x12\x14\n\x0cobstaclesLen\x18\x03 \x01(\x05\"G\n\x18NavObstiBorderDataGetAck\x12\x15\n\robstacleIndex\x18\x01 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x02 \x01(\x05\"d\n\x0eNavCHlLineData\x12\x12\n\nstartJobRI\x18\x01 \x01(\x05\x12\x10\n\x08\x65ndJobRI\x18\x02 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x03 \x01(\x05\x12\x16\n\x0e\x63hannelLineLen\x18\x04 \x01(\x05\"O\n\x11NavCHlLineDataAck\x12\x12\n\nstartJobRI\x18\x01 \x01(\x05\x12\x10\n\x08\x65ndJobRI\x18\x02 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x03 \x01(\x05\"\x7f\n\x0bNavTaskInfo\x12\x0c\n\x04\x61rea\x18\x01 \x01(\x05\x12\x0c\n\x04time\x18\x02 \x01(\x05\x12\x10\n\x08\x61llFrame\x18\x03 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x04 \x01(\x05\x12\x0f\n\x07pathlen\x18\x05 \x01(\x05\x12\x1b\n\x02\x64\x63\x18\x06 \x03(\x0b\x32\x0f.CommDataCouple\"J\n\x10NavBorderDataGet\x12\r\n\x05jobId\x18\x01 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x02 \x01(\x05\x12\x11\n\tborderLen\x18\x03 \x01(\x05\"\x91\x01\n\x0cNavOptLineUp\x12\x12\n\nstartJobRI\x18\x01 \x01(\x05\x12\x10\n\x08\x65ndJobRI\x18\x02 \x01(\x05\x12\x10\n\x08\x61llFrame\x18\x03 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x04 \x01(\x05\x12\x16\n\x0e\x63hannelDataLen\x18\x05 \x01(\x05\x12\x1b\n\x02\x64\x63\x18\x06 \x03(\x0b\x32\x0f.CommDataCouple\"~\n\x11NavOptiBorderInfo\x12\r\n\x05jobId\x18\x01 \x01(\x05\x12\x10\n\x08\x61llFrame\x18\x02 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x03 \x01(\x05\x12\x15\n\rborderDataLen\x18\x04 \x01(\x05\x12\x1b\n\x02\x64\x63\x18\x05 \x03(\x0b\x32\x0f.CommDataCouple\"\x81\x01\n\rNavOptObsInfo\x12\x12\n\nobstacleId\x18\x01 \x01(\x05\x12\x10\n\x08\x61llFrame\x18\x02 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x03 \x01(\x05\x12\x17\n\x0fobstacleDataLen\x18\x04 \x01(\x05\x12\x1b\n\x02\x64\x63\x18\x05 \x03(\x0b\x32\x0f.CommDataCouple\"\xb4\x01\n\x0bNavStartJob\x12\r\n\x05jobId\x18\x01 \x01(\x03\x12\x0e\n\x06jobVer\x18\x02 \x01(\x05\x12\x0f\n\x07jobMode\x18\x03 \x01(\x05\x12\x13\n\x0brainTactics\x18\x04 \x01(\x05\x12\x13\n\x0bknifeHeight\x18\x05 \x01(\x05\x12\r\n\x05speed\x18\x06 \x01(\x02\x12\x14\n\x0c\x63hannelWidth\x18\x07 \x01(\x05\x12\x11\n\tUltraWave\x18\x08 \x01(\x05\x12\x13\n\x0b\x63hannelMode\x18\t \x01(\x05\"\'\n\x0fNavTaskProgress\x12\x14\n\x0ctaskProgress\x18\x01 \x01(\x05\"\x1e\n\x0bNavResFrame\x12\x0f\n\x07\x66rameid\x18\x01 \x01(\x05\"|\n\x0eNavGetHashList\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x12\n\ntotalFrame\x18\x03 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x04 \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x05 \x01(\x06\x12\x10\n\x08reserved\x18\x06 \x01(\t\"\xb4\x01\n\x11NavGetHashListAck\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x12\n\ntotalFrame\x18\x03 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x04 \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x05 \x01(\x06\x12\x0f\n\x07hashLen\x18\x06 \x01(\x05\x12\x10\n\x08reserved\x18\x07 \x01(\t\x12\x0e\n\x06result\x18\x08 \x01(\x05\x12\x12\n\ndataCouple\x18\r \x03(\x03\"\xd6\x01\n\x0eNavGetCommData\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x03 \x01(\x05\x12\x0c\n\x04type\x18\x04 \x01(\x05\x12\x0c\n\x04hash\x18\x05 \x01(\x03\x12\x15\n\rpaternalHashA\x18\x06 \x01(\x03\x12\x15\n\rpaternalHashB\x18\x07 \x01(\x03\x12\x12\n\ntotalFrame\x18\x08 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\t \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\n \x01(\x06\x12\x10\n\x08reserved\x18\x0b \x01(\t\"H\n\x0eNavGetNameTime\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x63reate_time\x18\x02 \x01(\x06\x12\x13\n\x0bmodify_time\x18\x03 \x01(\x06\"\xc2\x02\n\x11NavGetCommDataAck\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x0e\n\x06result\x18\x03 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x04 \x01(\x05\x12\x0c\n\x04type\x18\x05 \x01(\x05\x12\x0c\n\x04Hash\x18\x06 \x01(\x06\x12\x15\n\rpaternalHashA\x18\x07 \x01(\x06\x12\x15\n\rpaternalHashB\x18\x08 \x01(\x06\x12\x12\n\ntotalFrame\x18\t \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\n \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x0b \x01(\x06\x12\x0f\n\x07\x64\x61taLen\x18\x0c \x01(\x05\x12#\n\ndataCouple\x18\r \x03(\x0b\x32\x0f.CommDataCouple\x12\x10\n\x08reserved\x18\x0e \x01(\t\x12!\n\x08nameTime\x18\x0f \x01(\x0b\x32\x0f.NavGetNameTime\"\xde\x02\n\x0fNavReqCoverPath\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\r\n\x05jobId\x18\x02 \x01(\x06\x12\x0e\n\x06jobVer\x18\x03 \x01(\x05\x12\x0f\n\x07jobMode\x18\x04 \x01(\x05\x12\x0e\n\x06subCmd\x18\x05 \x01(\x05\x12\x10\n\x08\x65\x64geMode\x18\x06 \x01(\x05\x12\x13\n\x0bknifeHeight\x18\x07 \x01(\x05\x12\x14\n\x0c\x63hannelWidth\x18\x08 \x01(\x05\x12\x11\n\tUltraWave\x18\t \x01(\x05\x12\x13\n\x0b\x63hannelMode\x18\n \x01(\x05\x12\x0e\n\x06toward\x18\x0b \x01(\x05\x12\r\n\x05speed\x18\x0c \x01(\x02\x12\x11\n\tzoneHashs\x18\r \x03(\x06\x12\x10\n\x08pathHash\x18\x0e \x01(\x06\x12\x10\n\x08reserved\x18\x0f \x01(\t\x12\x0e\n\x06result\x18\x10 \x01(\x05\x12\x13\n\x0btoward_mode\x18\x11 \x01(\x05\x12\x1d\n\x15toward_included_angle\x18\x12 \x01(\x05\"\xa7\x03\n\x15NavUploadZigZagResult\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\r\n\x05jobId\x18\x02 \x01(\x06\x12\x0e\n\x06jobVer\x18\x03 \x01(\x05\x12\x0e\n\x06result\x18\x04 \x01(\x05\x12\x0c\n\x04\x61rea\x18\x05 \x01(\x05\x12\x0c\n\x04time\x18\x06 \x01(\x05\x12\x14\n\x0ctotalZoneNum\x18\x07 \x01(\x05\x12\x1a\n\x12\x63urrentZonePathNum\x18\x08 \x01(\x05\x12\x19\n\x11\x63urrentZonePathId\x18\t \x01(\x05\x12\x13\n\x0b\x63urrentZone\x18\n \x01(\x05\x12\x13\n\x0b\x63urrentHash\x18\x0b \x01(\x06\x12\x12\n\ntotalFrame\x18\x0c \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\r \x01(\x05\x12\x13\n\x0b\x63hannelMode\x18\x0e \x01(\x05\x12\x15\n\rchannelModeId\x18\x0f \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x10 \x01(\x06\x12\x0f\n\x07\x64\x61taLen\x18\x11 \x01(\x05\x12\x10\n\x08reserved\x18\x12 \x01(\t\x12#\n\ndataCouple\x18\x13 \x03(\x0b\x32\x0f.CommDataCouple\x12\x0e\n\x06subCmd\x18\x14 \x01(\x05\"\xb0\x01\n\x18NavUploadZigZagResultAck\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x13\n\x0b\x63urrentZone\x18\x02 \x01(\x05\x12\x13\n\x0b\x63urrentHash\x18\x03 \x01(\x06\x12\x12\n\ntotalFrame\x18\x04 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x05 \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x06 \x01(\x06\x12\x10\n\x08reserved\x18\x07 \x01(\t\x12\x0e\n\x06subCmd\x18\x08 \x01(\x05\"M\n\x0bNavTaskCtrl\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\x05\x12\x0e\n\x06result\x18\x03 \x01(\x05\x12\x10\n\x08reserved\x18\x04 \x01(\t\"o\n\x0bNavTaskIdRw\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x10\n\x08taskName\x18\x03 \x01(\t\x12\x0e\n\x06taskId\x18\x04 \x01(\t\x12\x0e\n\x06result\x18\x05 \x01(\x05\x12\x10\n\x08reserved\x18\x06 \x01(\t\"J\n\x12NavSysHashOverview\x12\x1a\n\x12\x63ommonhashOverview\x18\x01 \x01(\x06\x12\x18\n\x10pathHashOverview\x18\x02 \x01(\x06\"i\n\x11NavTaskBreakPoint\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\x0e\n\x06toward\x18\x03 \x01(\x05\x12\x0c\n\x04\x66lag\x18\x04 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x05 \x01(\x05\x12\x10\n\x08zoneHash\x18\x06 \x01(\x06\"\xc2\x05\n\rNavPlanJobSet\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x0c\n\x04\x61rea\x18\x03 \x01(\x05\x12\x10\n\x08workTime\x18\x04 \x01(\x05\x12\x0f\n\x07version\x18\x05 \x01(\t\x12\n\n\x02id\x18\x06 \x01(\t\x12\x0e\n\x06userId\x18\x07 \x01(\t\x12\x10\n\x08\x64\x65viceId\x18\x08 \x01(\t\x12\x0e\n\x06planId\x18\t \x01(\t\x12\x0e\n\x06taskId\x18\n \x01(\t\x12\r\n\x05jobId\x18\x0b \x01(\t\x12\x11\n\tstartTime\x18\x0c \x01(\t\x12\x0f\n\x07\x65ndTime\x18\r \x01(\t\x12\x0c\n\x04week\x18\x0e \x01(\x05\x12\x13\n\x0bknifeHeight\x18\x0f \x01(\x05\x12\r\n\x05model\x18\x10 \x01(\x05\x12\x10\n\x08\x65\x64geMode\x18\x11 \x01(\x05\x12\x14\n\x0crequiredTime\x18\x12 \x01(\x05\x12\x12\n\nrouteAngle\x18\x13 \x01(\x05\x12\x12\n\nrouteModel\x18\x14 \x01(\x05\x12\x14\n\x0crouteSpacing\x18\x15 \x01(\x05\x12\x19\n\x11ultrasonicBarrier\x18\x16 \x01(\x05\x12\x14\n\x0ctotalPlanNum\x18\x17 \x01(\x05\x12\x11\n\tPlanIndex\x18\x18 \x01(\x05\x12\x0e\n\x06result\x18\x19 \x01(\x05\x12\r\n\x05speed\x18\x1a \x01(\x02\x12\x10\n\x08taskName\x18\x1b \x01(\t\x12\x0f\n\x07jobName\x18\x1c \x01(\t\x12\x11\n\tzoneHashs\x18\x1d \x03(\x06\x12\x10\n\x08reserved\x18\x1e \x01(\t\x12\x11\n\tstartDate\x18\x1f \x01(\t\x12\x0f\n\x07\x65ndDate\x18 \x01(\t\x12\x13\n\x0btriggerType\x18! \x01(\x05\x12\x0b\n\x03\x64\x61y\x18\" \x01(\x05\x12\r\n\x05weeks\x18# \x03(\x07\x12\x18\n\x10remained_seconds\x18$ \x01(\x03\x12\x12\n\ntowardMode\x18% \x01(\x05\x12\x1b\n\x13towardIncludedAngle\x18& \x01(\x05\"\x97\x01\n\x10NavUnableTimeSet\x12\x0e\n\x06subCmd\x18\x01 \x01(\x05\x12\x10\n\x08\x64\x65viceId\x18\x02 \x01(\t\x12\x17\n\x0funableStartTime\x18\x03 \x01(\t\x12\x15\n\runableEndTime\x18\x04 \x01(\t\x12\x0e\n\x06result\x18\x05 \x01(\x05\x12\x10\n\x08reserved\x18\x06 \x01(\t\x12\x0f\n\x07trigger\x18\x07 \x01(\x05\"6\n\x0e\x63hargePileType\x12\x0e\n\x06toward\x18\x01 \x01(\x05\x12\t\n\x01x\x18\x02 \x01(\x02\x12\t\n\x01y\x18\x03 \x01(\x02\"J\n\x11SimulationCmdData\x12\x0e\n\x06subCmd\x18\x01 \x01(\x05\x12\x10\n\x08param_id\x18\x02 \x01(\x05\x12\x13\n\x0bparam_value\x18\x03 \x03(\x05\"%\n\x13WorkReportUpdateCmd\x12\x0e\n\x06subCmd\x18\x01 \x01(\x05\"<\n\x13WorkReportUpdateAck\x12\x13\n\x0bupdate_flag\x18\x01 \x01(\x08\x12\x10\n\x08info_num\x18\x02 \x01(\x05\"7\n\x11WorkReportCmdData\x12\x0e\n\x06subCmd\x18\x01 \x01(\x05\x12\x12\n\ngetInfoNum\x18\x02 \x01(\x05\"\xa3\x02\n\x11WorkReportInfoAck\x12\x16\n\x0einterrupt_flag\x18\x01 \x01(\x08\x12\x17\n\x0fstart_work_time\x18\x02 \x01(\x03\x12\x15\n\rend_work_time\x18\x03 \x01(\x03\x12\x16\n\x0ework_time_used\x18\x04 \x01(\x05\x12\x11\n\twork_ares\x18\x05 \x01(\x01\x12\x15\n\rwork_progress\x18\x06 \x01(\x05\x12\x17\n\x0fheight_of_knife\x18\x07 \x01(\x05\x12\x11\n\twork_type\x18\x08 \x01(\x05\x12\x13\n\x0bwork_result\x18\t \x01(\x05\x12\x15\n\rtotal_ack_num\x18\n \x01(\x05\x12\x17\n\x0f\x63urrent_ack_num\x18\x0b \x01(\x05\x12\x13\n\x0bjob_content\x18\x0c \x01(\x05\"\xb2\x01\n\x19\x61pp_request_cover_paths_t\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x12\n\ntotalFrame\x18\x03 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x04 \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x05 \x01(\x06\x12\x16\n\x0etransaction_id\x18\x06 \x01(\x03\x12\x10\n\x08reserved\x18\x07 \x03(\x03\x12\x11\n\thash_list\x18\x08 \x03(\x06\"\x99\x01\n\x13\x63over_path_packet_t\x12\x11\n\tpath_hash\x18\x01 \x01(\x06\x12\x11\n\tpath_type\x18\x02 \x01(\x05\x12\x12\n\npath_total\x18\x03 \x01(\x05\x12\x10\n\x08path_cur\x18\x04 \x01(\x05\x12\x11\n\tzone_hash\x18\x05 \x01(\x06\x12#\n\ndataCouple\x18\x06 \x03(\x0b\x32\x0f.CommDataCouple\"\xb2\x02\n\x13\x63over_path_upload_t\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06result\x18\x02 \x01(\x05\x12\x0e\n\x06subCmd\x18\x03 \x01(\x05\x12\x0c\n\x04\x61rea\x18\x04 \x01(\x05\x12\x0c\n\x04time\x18\x05 \x01(\x05\x12\x12\n\ntotalFrame\x18\x06 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x07 \x01(\x05\x12\x16\n\x0etotal_path_num\x18\x08 \x01(\x05\x12\x16\n\x0evaild_path_num\x18\t \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\n \x01(\x06\x12\x16\n\x0etransaction_id\x18\x0b \x01(\x03\x12\x10\n\x08reserved\x18\x0c \x03(\x03\x12\x0f\n\x07\x64\x61taLen\x18\r \x01(\x05\x12*\n\x0cpath_packets\x18\x0e \x03(\x0b\x32\x14.cover_path_packet_t\"M\n\x14zone_start_precent_t\x12\x10\n\x08\x64\x61taHash\x18\x01 \x01(\x06\x12\t\n\x01x\x18\x02 \x01(\x02\x12\t\n\x01y\x18\x03 \x01(\x02\x12\r\n\x05index\x18\x04 \x01(\x05\",\n\x0fvision_ctrl_msg\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x0b\n\x03\x63md\x18\x02 \x01(\x05\"<\n\x11nav_sys_param_msg\x12\n\n\x02rw\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x0f\n\x07\x63ontext\x18\x03 \x01(\x05\"Q\n\x15nav_plan_task_execute\x12\x0e\n\x06subCmd\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0e\n\x06result\x18\x04 \x01(\x05\"y\n\tcostmap_t\x12\r\n\x05width\x18\x01 \x01(\x05\x12\x0e\n\x06height\x18\x02 \x01(\x05\x12\x10\n\x08\x63\x65nter_x\x18\x03 \x01(\x02\x12\x10\n\x08\x63\x65nter_y\x18\x04 \x01(\x02\x12\x0b\n\x03yaw\x18\x05 \x01(\x02\x12\x0b\n\x03res\x18\x06 \x01(\x02\x12\x0f\n\x07\x63ostmap\x18\x07 \x03(\x05\"\x94\x02\n\rsvg_message_t\x12\x0e\n\x06x_move\x18\x01 \x01(\x01\x12\x0e\n\x06y_move\x18\x02 \x01(\x01\x12\r\n\x05scale\x18\x03 \x01(\x01\x12\x0e\n\x06rotate\x18\x04 \x01(\x01\x12\x14\n\x0c\x62\x61se_width_m\x18\x05 \x01(\x01\x12\x15\n\rbase_height_m\x18\x06 \x01(\x01\x12\x16\n\x0e\x62\x61se_width_pix\x18\x07 \x01(\x05\x12\x17\n\x0f\x62\x61se_height_pix\x18\x08 \x01(\x05\x12\x15\n\rsvg_file_name\x18\t \x01(\t\x12\x15\n\rsvg_file_data\x18\n \x01(\t\x12\x12\n\nname_count\x18\x0b \x01(\x05\x12\x12\n\ndata_count\x18\x0c \x01(\x05\x12\x10\n\x08hide_svg\x18\r \x01(\x08\"\xc7\x01\n\x11svg_message_ack_t\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0e\n\x06subCmd\x18\x02 \x01(\x05\x12\x12\n\ntotalFrame\x18\x03 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x04 \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x05 \x01(\x06\x12\x15\n\rpaternalHashA\x18\x06 \x01(\x06\x12\x0c\n\x04type\x18\x07 \x01(\x05\x12\x0e\n\x06result\x18\x08 \x01(\x05\x12#\n\x0bsvg_message\x18\t \x01(\x0b\x32\x0e.svg_message_t\"/\n\x13plan_task_name_id_t\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"<\n\x15nav_get_all_plan_task\x12#\n\x05tasks\x18\x01 \x03(\x0b\x32\x14.plan_task_name_id_t\",\n\x0e\x61rea_hash_name\x12\x0c\n\x04hash\x18\x01 \x01(\x06\x12\x0c\n\x04name\x18\x02 \x01(\t\"M\n\x15\x41ppGetAllAreaHashName\x12\x10\n\x08\x64\x65viceId\x18\x01 \x01(\t\x12\"\n\thashnames\x18\x02 \x03(\x0b\x32\x0f.area_hash_name\"c\n\x0eNavTaskCtrlAck\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\x05\x12\x0e\n\x06result\x18\x03 \x01(\x05\x12\x11\n\tnav_state\x18\x04 \x01(\x05\x12\x10\n\x08reserved\x18\x05 \x01(\t\"Y\n\rNavMapNameMsg\x12\n\n\x02rw\x18\x01 \x01(\x05\x12\x0c\n\x04hash\x18\x02 \x01(\x06\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0e\n\x06result\x18\x04 \x01(\x05\x12\x10\n\x08\x64\x65viceId\x18\x05 \x01(\t\"\x9a\x01\n\rNavEdgePoints\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\x05\x12\x0c\n\x04type\x18\x03 \x01(\x05\x12\x0c\n\x04Hash\x18\x04 \x01(\x06\x12\x12\n\ntotalFrame\x18\x05 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x06 \x01(\x05\x12#\n\ndataCouple\x18\x07 \x03(\x0b\x32\x0f.CommDataCouple\"x\n\x10NavEdgePointsAck\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x02 \x01(\x05\x12\x0c\n\x04type\x18\x03 \x01(\x05\x12\x0c\n\x04Hash\x18\x04 \x01(\x06\x12\x12\n\ntotalFrame\x18\x05 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x06 \x01(\x05\"\x8f\x02\n\x14ManualElementMessage\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0c\n\x04type\x18\x02 \x01(\x05\x12\r\n\x05shape\x18\x03 \x01(\x05\x12\x0e\n\x06result\x18\x04 \x01(\x05\x12\x0e\n\x06subCmd\x18\x05 \x01(\x05\x12\x10\n\x08\x64\x61taHash\x18\x06 \x01(\x06\x12\x0e\n\x06ifHide\x18\x07 \x01(\x08\x12\x10\n\x08reserved\x18\x08 \x01(\t\x12\x17\n\x0fpoint1_center_x\x18\t \x01(\x01\x12\x17\n\x0fpoint1_center_y\x18\n \x01(\x01\x12\x16\n\x0epoint2_width_x\x18\x0b \x01(\x01\x12\x17\n\x0fpoint2_height_y\x18\x0c \x01(\x01\x12\x15\n\rrotate_radius\x18\r \x01(\x01\"\x81\x16\n\x07MctlNav\x12$\n\x0ctoapp_lat_up\x18\x01 \x01(\x0b\x32\x0c.NavLatLonUpH\x00\x12!\n\x0ctoapp_pos_up\x18\x02 \x01(\x0b\x32\t.NavPosUpH\x00\x12.\n\x13todev_chl_line_data\x18\x03 \x01(\x0b\x32\x0f.NavCHlLineDataH\x00\x12\'\n\x0ftoapp_task_info\x18\x04 \x01(\x0b\x32\x0c.NavTaskInfoH\x00\x12*\n\x11toapp_opt_line_up\x18\x05 \x01(\x0b\x32\r.NavOptLineUpH\x00\x12\x33\n\x15toapp_opt_border_info\x18\x06 \x01(\x0b\x32\x12.NavOptiBorderInfoH\x00\x12,\n\x12toapp_opt_obs_info\x18\x07 \x01(\x0b\x32\x0e.NavOptObsInfoH\x00\x12+\n\x13todev_task_info_ack\x18\x08 \x01(\x0b\x32\x0c.NavResFrameH\x00\x12\x31\n\x19todev_opt_border_info_ack\x18\t \x01(\x0b\x32\x0c.NavResFrameH\x00\x12.\n\x16todev_opt_obs_info_ack\x18\n \x01(\x0b\x32\x0c.NavResFrameH\x00\x12-\n\x15todev_opt_line_up_ack\x18\x0b \x01(\x0b\x32\x0c.NavResFrameH\x00\x12*\n\x0ftoapp_chgpileto\x18\x0c \x01(\x0b\x32\x0f.chargePileTypeH\x00\x12\x17\n\rtodev_sustask\x18\r \x01(\x05H\x00\x12\x18\n\x0etodev_rechgcmd\x18\x0e \x01(\x05H\x00\x12\x17\n\rtodev_edgecmd\x18\x0f \x01(\x05H\x00\x12\x1b\n\x11todev_draw_border\x18\x10 \x01(\x05H\x00\x12\x1f\n\x15todev_draw_border_end\x18\x11 \x01(\x05H\x00\x12\x18\n\x0etodev_draw_obs\x18\x12 \x01(\x05H\x00\x12\x1c\n\x12todev_draw_obs_end\x18\x13 \x01(\x05H\x00\x12\x18\n\x0etodev_chl_line\x18\x14 \x01(\x05H\x00\x12\x1c\n\x12todev_chl_line_end\x18\x15 \x01(\x05H\x00\x12\x19\n\x0ftodev_save_task\x18\x16 \x01(\x05H\x00\x12\x1d\n\x13todev_cancel_suscmd\x18\x17 \x01(\x05H\x00\x12\x1e\n\x14todev_reset_chg_pile\x18\x18 \x01(\x05H\x00\x12\x1f\n\x15todev_cancel_draw_cmd\x18\x19 \x01(\x05H\x00\x12$\n\x1atodev_one_touch_leave_pile\x18\x1a \x01(\x05H\x00\x12&\n\x0etodev_mow_task\x18\x1b \x01(\x0b\x32\x0c.NavStartJobH\x00\x12\'\n\x0ctoapp_bstate\x18\x1c \x01(\x0b\x32\x0f.NavBorderStateH\x00\x12\x1a\n\x10todev_lat_up_ack\x18\x1d \x01(\x05H\x00\x12(\n\rtodev_gethash\x18\x1e \x01(\x0b\x32\x0f.NavGetHashListH\x00\x12/\n\x11toapp_gethash_ack\x18\x1f \x01(\x0b\x32\x12.NavGetHashListAckH\x00\x12/\n\x14todev_get_commondata\x18 \x01(\x0b\x32\x0f.NavGetCommDataH\x00\x12\x36\n\x18toapp_get_commondata_ack\x18! \x01(\x0b\x32\x12.NavGetCommDataAckH\x00\x12\x31\n\x15\x62idire_reqconver_path\x18\" \x01(\x0b\x32\x10.NavReqCoverPathH\x00\x12.\n\x0ctoapp_zigzag\x18# \x01(\x0b\x32\x16.NavUploadZigZagResultH\x00\x12\x35\n\x10todev_zigzag_ack\x18$ \x01(\x0b\x32\x19.NavUploadZigZagResultAckH\x00\x12&\n\x0etodev_taskctrl\x18% \x01(\x0b\x32\x0c.NavTaskCtrlH\x00\x12%\n\rbidire_taskid\x18& \x01(\x0b\x32\x0c.NavTaskIdRwH\x00\x12&\n\x08toapp_bp\x18\' \x01(\x0b\x32\x12.NavTaskBreakPointH\x00\x12+\n\x11todev_planjob_set\x18( \x01(\x0b\x32\x0e.NavPlanJobSetH\x00\x12\x32\n\x15todev_unable_time_set\x18) \x01(\x0b\x32\x11.NavUnableTimeSetH\x00\x12,\n\x0esimulation_cmd\x18* \x01(\x0b\x32\x12.SimulationCmdDataH\x00\x12<\n\x1ctodev_work_report_update_cmd\x18+ \x01(\x0b\x32\x14.WorkReportUpdateCmdH\x00\x12<\n\x1ctoapp_work_report_update_ack\x18, \x01(\x0b\x32\x14.WorkReportUpdateAckH\x00\x12\x33\n\x15todev_work_report_cmd\x18- \x01(\x0b\x32\x12.WorkReportCmdDataH\x00\x12\x33\n\x15toapp_work_report_ack\x18. \x01(\x0b\x32\x12.WorkReportInfoAckH\x00\x12\x36\n\x18toapp_work_report_upload\x18/ \x01(\x0b\x32\x12.WorkReportInfoAckH\x00\x12=\n\x17\x61pp_request_cover_paths\x18\x30 \x01(\x0b\x32\x1a.app_request_cover_paths_tH\x00\x12\x31\n\x11\x63over_path_upload\x18\x31 \x01(\x0b\x32\x14.cover_path_upload_tH\x00\x12\x33\n\x12zone_start_precent\x18\x32 \x01(\x0b\x32\x15.zone_start_precent_tH\x00\x12\'\n\x0bvision_ctrl\x18\x33 \x01(\x0b\x32\x10.vision_ctrl_msgH\x00\x12/\n\x11nav_sys_param_cmd\x18\x34 \x01(\x0b\x32\x12.nav_sys_param_msgH\x00\x12\x33\n\x11plan_task_execute\x18\x35 \x01(\x0b\x32\x16.nav_plan_task_executeH\x00\x12#\n\rtoapp_costmap\x18\x36 \x01(\x0b\x32\n.costmap_tH\x00\x12\x31\n\x11plan_task_name_id\x18\x37 \x01(\x0b\x32\x14.plan_task_name_id_tH\x00\x12/\n\rall_plan_task\x18\x38 \x01(\x0b\x32\x16.nav_get_all_plan_taskH\x00\x12-\n\x12todev_taskctrl_ack\x18\x39 \x01(\x0b\x32\x0f.NavTaskCtrlAckH\x00\x12,\n\x12toapp_map_name_msg\x18: \x01(\x0b\x32\x0e.NavMapNameMsgH\x00\x12+\n\rtodev_svg_msg\x18; \x01(\x0b\x32\x12.svg_message_ack_tH\x00\x12+\n\rtoapp_svg_msg\x18< \x01(\x0b\x32\x12.svg_message_ack_tH\x00\x12\x35\n\x13toapp_all_hash_name\x18= \x01(\x0b\x32\x16.AppGetAllAreaHashNameH\x00\x12+\n\x11toapp_edge_points\x18> \x01(\x0b\x32\x0e.NavEdgePointsH\x00\x12\x32\n\x15toapp_edge_points_ack\x18? \x01(\x0b\x32\x11.NavEdgePointsAckH\x00\x12\x35\n\x14toapp_manual_element\x18@ \x01(\x0b\x32\x15.ManualElementMessageH\x00\x42\x0b\n\tSubNavMsgb\x06proto3')
18
18
 
19
19
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
20
20
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'pymammotion.proto.mctrl_nav_pb2', globals())
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [project]
6
6
  name = "pymammotion"
7
- version = "0.5.29"
7
+ version = "0.5.31"
8
8
  license = "GPL-3.0"
9
9
  description = ""
10
10
  readme = "README.md"
@@ -67,7 +67,7 @@ autotyping = "^24.3.0"
67
67
  ipython = "^9.0.2"
68
68
 
69
69
  [tool.bumpver]
70
- current_version = "0.5.29"
70
+ current_version = "0.5.31"
71
71
  version_pattern = "MAJOR.MINOR.PATCH"
72
72
  commit_message = "Bump version {old_version} -> {new_version}"
73
73
  commit = true
File without changes
File without changes
@@ -104,8 +104,8 @@ class MammotionCloud:
104
104
  assert self._mqtt_client is not None
105
105
  self._key = key
106
106
  _LOGGER.debug("Sending command: %s", key)
107
- await self._mqtt_client.get_cloud_client().send_cloud_command(iot_id, command)
108
107
  self.command_sent_time = time.time()
108
+ await self._mqtt_client.get_cloud_client().send_cloud_command(iot_id, command)
109
109
 
110
110
  async def _on_mqtt_message(self, topic: str, payload: str, iot_id: str) -> None:
111
111
  """Handle incoming MQTT messages."""