pymammotion 0.0.53__tar.gz → 0.0.55__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 (109) hide show
  1. {pymammotion-0.0.53 → pymammotion-0.0.55}/PKG-INFO +1 -1
  2. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/model/device.py +6 -1
  3. pymammotion-0.0.55/pymammotion/data/model/device_config.py +9 -0
  4. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/model/mowing_modes.py +8 -0
  5. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/state_manager.py +3 -1
  6. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/commands/messages/navigation.py +44 -6
  7. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/devices/mammotion.py +30 -10
  8. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_nav.proto +62 -0
  9. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_nav.py +74 -2
  10. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_nav_pb2.py +15 -3
  11. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_nav_pb2.pyi +108 -2
  12. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/utility/constant/device_constant.py +19 -0
  13. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/utility/device_type.py +3 -0
  14. {pymammotion-0.0.53 → pymammotion-0.0.55}/pyproject.toml +2 -2
  15. {pymammotion-0.0.53 → pymammotion-0.0.55}/LICENSE +0 -0
  16. {pymammotion-0.0.53 → pymammotion-0.0.55}/README.md +0 -0
  17. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/__init__.py +0 -0
  18. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/aliyun/__init__.py +0 -0
  19. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/aliyun/cloud_gateway.py +0 -0
  20. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/aliyun/cloud_service.py +0 -0
  21. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/aliyun/dataclass/aep_response.py +0 -0
  22. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/aliyun/dataclass/connect_response.py +0 -0
  23. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/aliyun/dataclass/dev_by_account_response.py +0 -0
  24. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/aliyun/dataclass/login_by_oauth_response.py +0 -0
  25. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/aliyun/dataclass/regions_response.py +0 -0
  26. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/aliyun/dataclass/session_by_authcode_response.py +0 -0
  27. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/aliyun/tmp_constant.py +0 -0
  28. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/bluetooth/__init__.py +0 -0
  29. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/bluetooth/ble.py +0 -0
  30. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/bluetooth/ble_message.py +0 -0
  31. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/bluetooth/const.py +0 -0
  32. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/bluetooth/data/__init__.py +0 -0
  33. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/bluetooth/data/convert.py +0 -0
  34. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/bluetooth/data/framectrldata.py +0 -0
  35. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/bluetooth/data/notifydata.py +0 -0
  36. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/const.py +0 -0
  37. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/__init__.py +0 -0
  38. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/model/__init__.py +0 -0
  39. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/model/enums.py +0 -0
  40. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/model/excute_boarder_params.py +0 -0
  41. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/model/execute_boarder.py +0 -0
  42. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/model/generate_route_information.py +0 -0
  43. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/model/hash_list.py +0 -0
  44. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/model/location.py +0 -0
  45. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/model/plan.py +0 -0
  46. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/model/rapid_state.py +0 -0
  47. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/model/region_data.py +0 -0
  48. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/mqtt/__init__.py +0 -0
  49. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/mqtt/event.py +0 -0
  50. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/mqtt/properties.py +0 -0
  51. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/data/mqtt/status.py +0 -0
  52. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/event/__init__.py +0 -0
  53. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/event/event.py +0 -0
  54. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/http/_init_.py +0 -0
  55. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/http/http.py +0 -0
  56. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/__init__.py +0 -0
  57. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/commands/__init__.py +0 -0
  58. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/commands/abstract_message.py +0 -0
  59. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/commands/mammotion_command.py +0 -0
  60. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/commands/messages/__init__.py +0 -0
  61. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/commands/messages/driver.py +0 -0
  62. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/commands/messages/media.py +0 -0
  63. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/commands/messages/network.py +0 -0
  64. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/commands/messages/ota.py +0 -0
  65. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/commands/messages/system.py +0 -0
  66. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/commands/messages/video.py +0 -0
  67. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/control/__init__.py +0 -0
  68. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/control/joystick.py +0 -0
  69. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mammotion/devices/__init__.py +0 -0
  70. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mqtt/__init__.py +0 -0
  71. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/mqtt/mammotion_mqtt.py +0 -0
  72. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/__init__.py +0 -0
  73. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/common.proto +0 -0
  74. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/common.py +0 -0
  75. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/common_pb2.py +0 -0
  76. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/common_pb2.pyi +0 -0
  77. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/dev_net.proto +0 -0
  78. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/dev_net.py +0 -0
  79. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/dev_net_pb2.py +0 -0
  80. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/dev_net_pb2.pyi +0 -0
  81. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/luba_msg.proto +0 -0
  82. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/luba_msg.py +0 -0
  83. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/luba_msg_pb2.py +0 -0
  84. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/luba_msg_pb2.pyi +0 -0
  85. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/luba_mul.proto +0 -0
  86. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/luba_mul.py +0 -0
  87. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/luba_mul_pb2.py +0 -0
  88. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/luba_mul_pb2.pyi +0 -0
  89. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_driver.proto +0 -0
  90. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_driver.py +0 -0
  91. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_driver_pb2.py +0 -0
  92. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_driver_pb2.pyi +0 -0
  93. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_ota.proto +0 -0
  94. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_ota.py +0 -0
  95. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_ota_pb2.py +0 -0
  96. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_ota_pb2.pyi +0 -0
  97. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_pept.proto +0 -0
  98. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_pept.py +0 -0
  99. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_pept_pb2.py +0 -0
  100. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_pept_pb2.pyi +0 -0
  101. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_sys.proto +0 -0
  102. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_sys.py +0 -0
  103. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_sys_pb2.py +0 -0
  104. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/proto/mctrl_sys_pb2.pyi +0 -0
  105. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/py.typed +0 -0
  106. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/utility/constant/__init__.py +0 -0
  107. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/utility/datatype_converter.py +0 -0
  108. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/utility/periodic.py +0 -0
  109. {pymammotion-0.0.53 → pymammotion-0.0.55}/pymammotion/utility/rocker_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pymammotion
3
- Version: 0.0.53
3
+ Version: 0.0.55
4
4
  Summary:
5
5
  License: GNU-3.0
6
6
  Author: Michael Arthur
@@ -3,6 +3,7 @@
3
3
  from dataclasses import dataclass
4
4
 
5
5
  from pymammotion.data.model import HashList
6
+ from pymammotion.data.model.device_config import DeviceLimits
6
7
  from pymammotion.data.model.location import Location
7
8
  from pymammotion.proto.dev_net import DevNet
8
9
  from pymammotion.proto.luba_msg import LubaMsg
@@ -11,7 +12,7 @@ from pymammotion.proto.mctrl_driver import MctlDriver
11
12
  from pymammotion.proto.mctrl_nav import MctlNav
12
13
  from pymammotion.proto.mctrl_ota import MctlOta
13
14
  from pymammotion.proto.mctrl_pept import MctlPept
14
- from pymammotion.proto.mctrl_sys import MctlSys, SystemUpdateBufMsg
15
+ from pymammotion.proto.mctrl_sys import MctlSys, MowToAppInfoT, SystemUpdateBufMsg
15
16
 
16
17
 
17
18
  @dataclass
@@ -28,6 +29,7 @@ class MowingDevice:
28
29
  self.location = Location()
29
30
  self.err_code_list = []
30
31
  self.err_code_list_time = []
32
+ self.limits = DeviceLimits(30, 70, 0.2, 0.6)
31
33
 
32
34
  @classmethod
33
35
  def from_raw(cls, raw: dict) -> "MowingDevice":
@@ -82,6 +84,9 @@ class MowingDevice:
82
84
  ]
83
85
  )
84
86
 
87
+ def mow_info(self, toapp_mow_info: MowToAppInfoT):
88
+ pass
89
+
85
90
  @property
86
91
  def net(self):
87
92
  """Will return a wrapped betterproto of net."""
@@ -0,0 +1,9 @@
1
+ from dataclasses import dataclass
2
+
3
+
4
+ @dataclass
5
+ class DeviceLimits:
6
+ cutter_height_min: int
7
+ cutter_height_max: int
8
+ working_speed_min: float
9
+ working_speed_max: float
@@ -35,3 +35,11 @@ class MowOrder(IntEnum):
35
35
 
36
36
  border_first = 0
37
37
  grid_first = 1
38
+
39
+
40
+ class BypassStrategy(IntEnum):
41
+ """Matches up with ultra_wave."""
42
+ direct_touch = 0
43
+ slow_touch = 1
44
+ less_touch = 2
45
+ no_touch = 3 # luba 2 yuka only or possibly value of 10
@@ -69,6 +69,8 @@ class StateManager:
69
69
  self._device.buffer(sys_msg[1])
70
70
  case "toapp_report_data":
71
71
  pass
72
+ case "mow_to_app_info":
73
+ self._device.mow_info(sys_msg[1])
72
74
 
73
75
  def _update_driver_data(self, message):
74
76
  pass
@@ -80,4 +82,4 @@ class StateManager:
80
82
  pass
81
83
 
82
84
  def _update_ota_data(self, message):
83
- pass
85
+ pass
@@ -23,19 +23,26 @@ from pymammotion.proto.mctrl_nav import (
23
23
  NavUploadZigZagResultAck,
24
24
  SimulationCmdData,
25
25
  WorkReportCmdData,
26
- WorkReportUpdateCmd,
26
+ WorkReportUpdateCmd, NavMapNameMsg,
27
27
  )
28
+ from pymammotion.utility.device_type import DeviceType
28
29
 
29
30
  logger = logging.getLogger(__name__)
30
31
 
31
32
 
32
33
  class MessageNavigation(AbstractMessage, ABC):
33
- @staticmethod
34
- def send_order_msg_nav(build) -> bytes:
34
+
35
+ def get_msg_device(self, msg_type: MsgCmdType, msg_device: MsgDevice) -> MsgDevice:
36
+ """Changes the rcver name if it's not a luba1."""
37
+ if DeviceType.is_luba1(self.get_device_name()) and msg_type == MsgCmdType.MSG_CMD_TYPE_NAV:
38
+ return MsgDevice.DEV_NAVIGATION
39
+ return msg_device
40
+
41
+ def send_order_msg_nav(self, build) -> bytes:
35
42
  luba_msg = LubaMsg(
36
43
  msgtype=MsgCmdType.MSG_CMD_TYPE_NAV,
37
44
  sender=MsgDevice.DEV_MOBILEAPP,
38
- rcver=MsgDevice.DEV_MAINCTL,
45
+ rcver=self.get_msg_device(MsgCmdType.MSG_CMD_TYPE_NAV, MsgDevice.DEV_MAINCTL),
39
46
  msgattr=MsgAttr.MSG_ATTR_REQ,
40
47
  seqs=1,
41
48
  version=1,
@@ -254,6 +261,37 @@ class MessageNavigation(AbstractMessage, ABC):
254
261
  logger.debug("Send command--One-click automatic undocking")
255
262
  return self.send_order_msg_nav(build)
256
263
 
264
+ def get_area_name_list(self, device_id: str) -> bytes:
265
+ # Build the NavMapNameMsg with the specified parameters
266
+ mctl_nav = MctlNav(
267
+ toapp_map_name_msg=NavMapNameMsg(
268
+ hash=0,
269
+ result=0,
270
+ device_id=device_id, # iotId or ???
271
+ rw=0
272
+ )
273
+ )
274
+
275
+ # Send the message with the specified ID and acknowledge flag
276
+ logger.debug("Send command--Get area name list")
277
+ return self.send_order_msg_nav(mctl_nav)
278
+
279
+ def set_area_name(self, device_id, hash_id: int, name: str) -> bytes:
280
+ # Build the NavMapNameMsg with the specified parameters
281
+ mctl_nav = MctlNav(
282
+ toapp_map_name_msg=NavMapNameMsg(
283
+ hash=hash_id,
284
+ name=name,
285
+ result=0,
286
+ device_id=device_id,
287
+ rw=1
288
+ )
289
+ )
290
+
291
+ # Send the message with the specified ID and acknowledge flag
292
+ logger.debug("Send command--Get area name list")
293
+ return self.send_order_msg_nav(mctl_nav)
294
+
257
295
  def get_all_boundary_hash_list(self, sub_cmd: int):
258
296
  build = MctlNav(todev_gethash=NavGetHashList(pver=1, sub_cmd=sub_cmd))
259
297
  logger.debug(f"Area loading=====================:Get area hash list++Bluetooth:{sub_cmd}")
@@ -353,8 +391,8 @@ class MessageNavigation(AbstractMessage, ABC):
353
391
  channel_width=generate_route_information.channel_width,
354
392
  channel_mode=generate_route_information.channel_mode,
355
393
  toward=generate_route_information.toward,
356
- toward_included_angle=generate_route_information.toward_included_angle,
357
- toward_mode=generate_route_information.toward_mode,
394
+ toward_included_angle=generate_route_information.toward_included_angle, # luba 2 yuka only
395
+ toward_mode=generate_route_information.toward_mode, # luba 2 yuka only
358
396
  reserved=generate_route_information.path_order,
359
397
  )
360
398
  logger.debug(f"{self.get_device_name()}Generate route====={build}")
@@ -71,7 +71,7 @@ _LOGGER = logging.getLogger(__name__)
71
71
  def slashescape(err):
72
72
  """Escape a slash character."""
73
73
  # print err, dir(err), err.start, err.end, err.object[:err.start]
74
- thebyte = err.object[err.start : err.end]
74
+ thebyte = err.object[err.start: err.end]
75
75
  repl = "\\x" + hex(ord(thebyte))[2:]
76
76
  return (repl, err.end)
77
77
 
@@ -120,9 +120,9 @@ class MammotionDevice:
120
120
  _ble_device: MammotionBaseBLEDevice | None = None
121
121
 
122
122
  def __init__(
123
- self,
124
- ble_device: BLEDevice,
125
- preference: ConnectionPreference = ConnectionPreference.EITHER,
123
+ self,
124
+ ble_device: BLEDevice,
125
+ preference: ConnectionPreference = ConnectionPreference.EITHER,
126
126
  ) -> None:
127
127
  """Initialize MammotionDevice."""
128
128
  if ble_device:
@@ -215,6 +215,9 @@ class MammotionBaseDevice:
215
215
  def _update_nav_data(self, tmp_msg):
216
216
  """Update navigation data."""
217
217
  nav_sub_msg = betterproto.which_one_of(tmp_msg.nav, "SubNavMsg")
218
+ if nav_sub_msg[1] is None:
219
+ _LOGGER.debug("Sub message was NoneType %s", nav_sub_msg[0])
220
+ return
218
221
  nav = self._raw_data.get("nav", {})
219
222
  if isinstance(nav_sub_msg[1], int):
220
223
  nav[nav_sub_msg[0]] = nav_sub_msg[1]
@@ -225,6 +228,9 @@ class MammotionBaseDevice:
225
228
  def _update_sys_data(self, tmp_msg):
226
229
  """Update system data."""
227
230
  sys_sub_msg = betterproto.which_one_of(tmp_msg.sys, "SubSysMsg")
231
+ if sys_sub_msg[1] is None:
232
+ _LOGGER.debug("Sub message was NoneType %s", sys_sub_msg[0])
233
+ return
228
234
  sys = self._raw_data.get("sys", {})
229
235
  sys[sys_sub_msg[0]] = sys_sub_msg[1].to_dict(casing=betterproto.Casing.SNAKE)
230
236
  self._raw_data["sys"] = sys
@@ -232,6 +238,9 @@ class MammotionBaseDevice:
232
238
  def _update_driver_data(self, tmp_msg):
233
239
  """Update driver data."""
234
240
  drv_sub_msg = betterproto.which_one_of(tmp_msg.driver, "SubDrvMsg")
241
+ if drv_sub_msg[1] is None:
242
+ _LOGGER.debug("Sub message was NoneType %s", drv_sub_msg[0])
243
+ return
235
244
  drv = self._raw_data.get("driver", {})
236
245
  drv[drv_sub_msg[0]] = drv_sub_msg[1].to_dict(casing=betterproto.Casing.SNAKE)
237
246
  self._raw_data["driver"] = drv
@@ -239,6 +248,9 @@ class MammotionBaseDevice:
239
248
  def _update_net_data(self, tmp_msg):
240
249
  """Update network data."""
241
250
  net_sub_msg = betterproto.which_one_of(tmp_msg.net, "NetSubType")
251
+ if net_sub_msg[1] is None:
252
+ _LOGGER.debug("Sub message was NoneType %s", net_sub_msg[0])
253
+ return
242
254
  net = self._raw_data.get("net", {})
243
255
  if isinstance(net_sub_msg[1], int):
244
256
  net[net_sub_msg[0]] = net_sub_msg[1]
@@ -249,6 +261,9 @@ class MammotionBaseDevice:
249
261
  def _update_mul_data(self, tmp_msg):
250
262
  """Update mul data."""
251
263
  mul_sub_msg = betterproto.which_one_of(tmp_msg.mul, "SubMul")
264
+ if mul_sub_msg[1] is None:
265
+ _LOGGER.debug("Sub message was NoneType %s", mul_sub_msg[0])
266
+ return
252
267
  mul = self._raw_data.get("mul", {})
253
268
  mul[mul_sub_msg[0]] = mul_sub_msg[1].to_dict(casing=betterproto.Casing.SNAKE)
254
269
  self._raw_data["mul"] = mul
@@ -256,6 +271,9 @@ class MammotionBaseDevice:
256
271
  def _update_ota_data(self, tmp_msg):
257
272
  """Update OTA data."""
258
273
  ota_sub_msg = betterproto.which_one_of(tmp_msg.ota, "SubOtaMsg")
274
+ if ota_sub_msg[1] is None:
275
+ _LOGGER.debug("Sub message was NoneType %s", ota_sub_msg[0])
276
+ return
259
277
  ota = self._raw_data.get("ota", {})
260
278
  ota[ota_sub_msg[0]] = ota_sub_msg[1].to_dict(casing=betterproto.Casing.SNAKE)
261
279
  self._raw_data["ota"] = ota
@@ -300,6 +318,8 @@ class MammotionBaseDevice:
300
318
 
301
319
  await self._send_command_with_args("get_hash_response", total_frame=1, current_frame=1)
302
320
 
321
+ await self._send_command_with_args("get_area_name_list",
322
+ device_id=self.luba_msg.device.net.toapp_wifi_iot_status.devicename)
303
323
  # sub_cmd 3 is job hashes??
304
324
  # sub_cmd 4 is dump location (yuka)
305
325
  # jobs list
@@ -689,12 +709,12 @@ class MammotionBaseCloudDevice(MammotionBaseDevice):
689
709
  """Base class for Mammotion Cloud devices."""
690
710
 
691
711
  def __init__(
692
- self,
693
- mqtt_client: MammotionMQTT,
694
- iot_id: str,
695
- device_name: str,
696
- nick_name: str,
697
- **kwargs: Any,
712
+ self,
713
+ mqtt_client: MammotionMQTT,
714
+ iot_id: str,
715
+ device_name: str,
716
+ nick_name: str,
717
+ **kwargs: Any,
698
718
  ) -> None:
699
719
  """Initialize MammotionBaseCloudDevice."""
700
720
  super().__init__()
@@ -423,6 +423,63 @@ message nav_get_all_plan_task {
423
423
  repeated plan_task_name_id_t tasks = 1;
424
424
  }
425
425
 
426
+ // Define the NavTaskCtrlAck message
427
+ message NavTaskCtrlAck {
428
+ int32 type = 1;
429
+ int32 action = 2;
430
+ int32 result = 3;
431
+ int32 nav_state = 4;
432
+ string reserved = 5;
433
+ }
434
+
435
+ message NavMapNameMsg {
436
+ int32 rw = 1; // Represents RW field
437
+ int64 hash = 2; // Represents HASH field
438
+ string name = 3; // Represents NAME field
439
+ int32 result = 4; // Represents RESULT field
440
+ string device_id = 5; // Represents DEVICEID field
441
+ }
442
+
443
+ message svg_message_t {
444
+ double x_move = 1;
445
+ double y_move = 2;
446
+ double scale = 3;
447
+ double rotate = 4;
448
+ double base_width_m = 5;
449
+ int32 base_width_pix = 7;
450
+ double base_height_m = 6;
451
+ int32 base_height_pix = 8;
452
+ int32 data_count = 12;
453
+ bool hide_svg = 13;
454
+ int32 name_count = 11;
455
+ string svg_file_name = 9;
456
+ string svg_file_data = 10;
457
+ }
458
+
459
+ message SvgMessageAckT {
460
+ int32 pver = 1; // Represents PVER field
461
+ int32 sub_cmd = 2; // Represents SUBCMD field
462
+ int32 total_frame = 3; // Represents TOTALFRAME field
463
+ int32 current_frame = 4; // Represents CURRENTFRAME field
464
+ int64 data_hash = 5; // Represents DATAHASH field
465
+ int64 paternal_hash_a = 6; // Represents PATERNALHASHA field
466
+ int32 type = 7; // Represents TYPE field
467
+ int32 result = 8; // Represents RESULT field
468
+ svg_message_t svg_message = 9; // Represents SVG_MESSAGE field
469
+ }
470
+
471
+ message AreaHashName {
472
+ // Define fields for AreaHashName message here
473
+ // For example:
474
+ string name = 1; // Replace with actual field definitions
475
+ int64 hash = 2; // Replace with actual field definitions
476
+ }
477
+
478
+ message AppGetAllAreaHashName {
479
+ string device_id = 1; // Represents DEVICEID field
480
+ repeated AreaHashName hashnames = 2; // Represents HASHNAMES field
481
+ }
482
+
426
483
  message MctlNav {
427
484
  oneof SubNavMsg {
428
485
  NavLatLonUp toapp_lat_up = 1;
@@ -481,5 +538,10 @@ message MctlNav {
481
538
  costmap_t toapp_costmap = 54;
482
539
  plan_task_name_id_t plan_task_name_id = 55;
483
540
  nav_get_all_plan_task all_plan_task = 56;
541
+ NavTaskCtrlAck todev_taskctrl_ack = 57;
542
+ NavMapNameMsg toapp_map_name_msg = 58;
543
+ SvgMessageAckT todev_svg_msg = 59;
544
+ SvgMessageAckT toapp_svg_msg = 60;
545
+ AppGetAllAreaHashName toapp_all_hash_name = 61;
484
546
  }
485
547
  }
@@ -2,8 +2,6 @@
2
2
  # sources: pymammotion/proto/mctrl_nav.proto
3
3
  # plugin: python-betterproto
4
4
  from dataclasses import dataclass
5
-
6
-
7
5
  import betterproto
8
6
 
9
7
  from .common import *
@@ -475,6 +473,69 @@ class NavGetAllPlanTask(betterproto.Message):
475
473
  tasks: list["PlanTaskNameIdT"] = betterproto.message_field(1)
476
474
 
477
475
 
476
+ @dataclass
477
+ class NavTaskCtrlAck(betterproto.Message):
478
+ """Define the NavTaskCtrlAck message"""
479
+
480
+ type: int = betterproto.int32_field(1)
481
+ action: int = betterproto.int32_field(2)
482
+ result: int = betterproto.int32_field(3)
483
+ nav_state: int = betterproto.int32_field(4)
484
+ reserved: str = betterproto.string_field(5)
485
+
486
+
487
+ @dataclass
488
+ class NavMapNameMsg(betterproto.Message):
489
+ rw: int = betterproto.int32_field(1)
490
+ hash: int = betterproto.int64_field(2)
491
+ name: str = betterproto.string_field(3)
492
+ result: int = betterproto.int32_field(4)
493
+ device_id: str = betterproto.string_field(5)
494
+
495
+
496
+ @dataclass
497
+ class SvgMessageT(betterproto.Message):
498
+ x_move: float = betterproto.double_field(1)
499
+ y_move: float = betterproto.double_field(2)
500
+ scale: float = betterproto.double_field(3)
501
+ rotate: float = betterproto.double_field(4)
502
+ base_width_m: float = betterproto.double_field(5)
503
+ base_width_pix: int = betterproto.int32_field(7)
504
+ base_height_m: float = betterproto.double_field(6)
505
+ base_height_pix: int = betterproto.int32_field(8)
506
+ data_count: int = betterproto.int32_field(12)
507
+ hide_svg: bool = betterproto.bool_field(13)
508
+ name_count: int = betterproto.int32_field(11)
509
+ svg_file_name: str = betterproto.string_field(9)
510
+ svg_file_data: str = betterproto.string_field(10)
511
+
512
+
513
+ @dataclass
514
+ class SvgMessageAckT(betterproto.Message):
515
+ pver: int = betterproto.int32_field(1)
516
+ sub_cmd: int = betterproto.int32_field(2)
517
+ total_frame: int = betterproto.int32_field(3)
518
+ current_frame: int = betterproto.int32_field(4)
519
+ data_hash: int = betterproto.int64_field(5)
520
+ paternal_hash_a: int = betterproto.int64_field(6)
521
+ type: int = betterproto.int32_field(7)
522
+ result: int = betterproto.int32_field(8)
523
+ svg_message: "SvgMessageT" = betterproto.message_field(9)
524
+
525
+
526
+ @dataclass
527
+ class AreaHashName(betterproto.Message):
528
+ # Define fields for AreaHashName message here For example:
529
+ name: str = betterproto.string_field(1)
530
+ hash: int = betterproto.int64_field(2)
531
+
532
+
533
+ @dataclass
534
+ class AppGetAllAreaHashName(betterproto.Message):
535
+ device_id: str = betterproto.string_field(1)
536
+ hashnames: list["AreaHashName"] = betterproto.message_field(2)
537
+
538
+
478
539
  @dataclass
479
540
  class MctlNav(betterproto.Message):
480
541
  toapp_lat_up: "NavLatLonUp" = betterproto.message_field(1, group="SubNavMsg")
@@ -587,3 +648,14 @@ class MctlNav(betterproto.Message):
587
648
  all_plan_task: "NavGetAllPlanTask" = betterproto.message_field(
588
649
  56, group="SubNavMsg"
589
650
  )
651
+ todev_taskctrl_ack: "NavTaskCtrlAck" = betterproto.message_field(
652
+ 57, group="SubNavMsg"
653
+ )
654
+ toapp_map_name_msg: "NavMapNameMsg" = betterproto.message_field(
655
+ 58, group="SubNavMsg"
656
+ )
657
+ todev_svg_msg: "SvgMessageAckT" = betterproto.message_field(59, group="SubNavMsg")
658
+ toapp_svg_msg: "SvgMessageAckT" = betterproto.message_field(60, group="SubNavMsg")
659
+ toapp_all_hash_name: "AppGetAllAreaHashName" = betterproto.message_field(
660
+ 61, group="SubNavMsg"
661
+ )
@@ -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(\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\"\x9f\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\"\xde\x02\n\x0fNavReqCoverPath\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\r\n\x05jobId\x18\x02 \x01(\x03\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(\x03\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\"\x86\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\"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\"\x8e\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\"\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\"/\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\"\xfb\x12\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\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\"\x9f\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\"\xde\x02\n\x0fNavReqCoverPath\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\r\n\x05jobId\x18\x02 \x01(\x03\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(\x03\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\"\x86\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\"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\"\x8e\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\"\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\"/\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\"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\"Z\n\rNavMapNameMsg\x12\n\n\x02rw\x18\x01 \x01(\x05\x12\x0c\n\x04hash\x18\x02 \x01(\x03\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0e\n\x06result\x18\x04 \x01(\x05\x12\x11\n\tdevice_id\x18\x05 \x01(\t\"\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\x16\n\x0e\x62\x61se_width_pix\x18\x07 \x01(\x05\x12\x15\n\rbase_height_m\x18\x06 \x01(\x01\x12\x17\n\x0f\x62\x61se_height_pix\x18\x08 \x01(\x05\x12\x12\n\ndata_count\x18\x0c \x01(\x05\x12\x10\n\x08hide_svg\x18\r \x01(\x08\x12\x12\n\nname_count\x18\x0b \x01(\x05\x12\x15\n\rsvg_file_name\x18\t \x01(\t\x12\x15\n\rsvg_file_data\x18\n \x01(\t\"\xca\x01\n\x0eSvgMessageAckT\x12\x0c\n\x04pver\x18\x01 \x01(\x05\x12\x0f\n\x07sub_cmd\x18\x02 \x01(\x05\x12\x13\n\x0btotal_frame\x18\x03 \x01(\x05\x12\x15\n\rcurrent_frame\x18\x04 \x01(\x05\x12\x11\n\tdata_hash\x18\x05 \x01(\x03\x12\x17\n\x0fpaternal_hash_a\x18\x06 \x01(\x03\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\x0c\x41reaHashName\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04hash\x18\x02 \x01(\x03\"L\n\x15\x41ppGetAllAreaHashName\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12 \n\thashnames\x18\x02 \x03(\x0b\x32\r.AreaHashName\"\xe3\x14\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\x0f.SvgMessageAckTH\x00\x12(\n\rtoapp_svg_msg\x18< \x01(\x0b\x32\x0f.SvgMessageAckTH\x00\x12\x35\n\x13toapp_all_hash_name\x18= \x01(\x0b\x32\x16.AppGetAllAreaHashNameH\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())
@@ -111,6 +111,18 @@ if _descriptor._USE_C_DESCRIPTORS == False:
111
111
  _PLAN_TASK_NAME_ID_T._serialized_end=6270
112
112
  _NAV_GET_ALL_PLAN_TASK._serialized_start=6272
113
113
  _NAV_GET_ALL_PLAN_TASK._serialized_end=6332
114
- _MCTLNAV._serialized_start=6335
115
- _MCTLNAV._serialized_end=8762
114
+ _NAVTASKCTRLACK._serialized_start=6334
115
+ _NAVTASKCTRLACK._serialized_end=6433
116
+ _NAVMAPNAMEMSG._serialized_start=6435
117
+ _NAVMAPNAMEMSG._serialized_end=6525
118
+ _SVG_MESSAGE_T._serialized_start=6528
119
+ _SVG_MESSAGE_T._serialized_end=6804
120
+ _SVGMESSAGEACKT._serialized_start=6807
121
+ _SVGMESSAGEACKT._serialized_end=7009
122
+ _AREAHASHNAME._serialized_start=7011
123
+ _AREAHASHNAME._serialized_end=7053
124
+ _APPGETALLAREAHASHNAME._serialized_start=7055
125
+ _APPGETALLAREAHASHNAME._serialized_end=7131
126
+ _MCTLNAV._serialized_start=7134
127
+ _MCTLNAV._serialized_end=9793
116
128
  # @@protoc_insertion_point(module_scope)
@@ -6,8 +6,24 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map
6
6
 
7
7
  DESCRIPTOR: _descriptor.FileDescriptor
8
8
 
9
+ class AppGetAllAreaHashName(_message.Message):
10
+ __slots__ = ["device_id", "hashnames"]
11
+ DEVICE_ID_FIELD_NUMBER: _ClassVar[int]
12
+ HASHNAMES_FIELD_NUMBER: _ClassVar[int]
13
+ device_id: str
14
+ hashnames: _containers.RepeatedCompositeFieldContainer[AreaHashName]
15
+ def __init__(self, device_id: _Optional[str] = ..., hashnames: _Optional[_Iterable[_Union[AreaHashName, _Mapping]]] = ...) -> None: ...
16
+
17
+ class AreaHashName(_message.Message):
18
+ __slots__ = ["hash", "name"]
19
+ HASH_FIELD_NUMBER: _ClassVar[int]
20
+ NAME_FIELD_NUMBER: _ClassVar[int]
21
+ hash: int
22
+ name: str
23
+ def __init__(self, name: _Optional[str] = ..., hash: _Optional[int] = ...) -> None: ...
24
+
9
25
  class MctlNav(_message.Message):
10
- __slots__ = ["all_plan_task", "app_request_cover_paths", "bidire_reqconver_path", "bidire_taskid", "cover_path_upload", "nav_sys_param_cmd", "plan_task_execute", "plan_task_name_id", "simulation_cmd", "toapp_bp", "toapp_bstate", "toapp_chgpileto", "toapp_costmap", "toapp_get_commondata_ack", "toapp_gethash_ack", "toapp_lat_up", "toapp_opt_border_info", "toapp_opt_line_up", "toapp_opt_obs_info", "toapp_pos_up", "toapp_task_info", "toapp_work_report_ack", "toapp_work_report_update_ack", "toapp_work_report_upload", "toapp_zigzag", "todev_cancel_draw_cmd", "todev_cancel_suscmd", "todev_chl_line", "todev_chl_line_data", "todev_chl_line_end", "todev_draw_border", "todev_draw_border_end", "todev_draw_obs", "todev_draw_obs_end", "todev_edgecmd", "todev_get_commondata", "todev_gethash", "todev_lat_up_ack", "todev_mow_task", "todev_one_touch_leave_pile", "todev_opt_border_info_ack", "todev_opt_line_up_ack", "todev_opt_obs_info_ack", "todev_planjob_set", "todev_rechgcmd", "todev_reset_chg_pile", "todev_save_task", "todev_sustask", "todev_task_info_ack", "todev_taskctrl", "todev_unable_time_set", "todev_work_report_cmd", "todev_work_report_update_cmd", "todev_zigzag_ack", "vision_ctrl", "zone_start_precent"]
26
+ __slots__ = ["all_plan_task", "app_request_cover_paths", "bidire_reqconver_path", "bidire_taskid", "cover_path_upload", "nav_sys_param_cmd", "plan_task_execute", "plan_task_name_id", "simulation_cmd", "toapp_all_hash_name", "toapp_bp", "toapp_bstate", "toapp_chgpileto", "toapp_costmap", "toapp_get_commondata_ack", "toapp_gethash_ack", "toapp_lat_up", "toapp_map_name_msg", "toapp_opt_border_info", "toapp_opt_line_up", "toapp_opt_obs_info", "toapp_pos_up", "toapp_svg_msg", "toapp_task_info", "toapp_work_report_ack", "toapp_work_report_update_ack", "toapp_work_report_upload", "toapp_zigzag", "todev_cancel_draw_cmd", "todev_cancel_suscmd", "todev_chl_line", "todev_chl_line_data", "todev_chl_line_end", "todev_draw_border", "todev_draw_border_end", "todev_draw_obs", "todev_draw_obs_end", "todev_edgecmd", "todev_get_commondata", "todev_gethash", "todev_lat_up_ack", "todev_mow_task", "todev_one_touch_leave_pile", "todev_opt_border_info_ack", "todev_opt_line_up_ack", "todev_opt_obs_info_ack", "todev_planjob_set", "todev_rechgcmd", "todev_reset_chg_pile", "todev_save_task", "todev_sustask", "todev_svg_msg", "todev_task_info_ack", "todev_taskctrl", "todev_taskctrl_ack", "todev_unable_time_set", "todev_work_report_cmd", "todev_work_report_update_cmd", "todev_zigzag_ack", "vision_ctrl", "zone_start_precent"]
11
27
  ALL_PLAN_TASK_FIELD_NUMBER: _ClassVar[int]
12
28
  APP_REQUEST_COVER_PATHS_FIELD_NUMBER: _ClassVar[int]
13
29
  BIDIRE_REQCONVER_PATH_FIELD_NUMBER: _ClassVar[int]
@@ -17,6 +33,7 @@ class MctlNav(_message.Message):
17
33
  PLAN_TASK_EXECUTE_FIELD_NUMBER: _ClassVar[int]
18
34
  PLAN_TASK_NAME_ID_FIELD_NUMBER: _ClassVar[int]
19
35
  SIMULATION_CMD_FIELD_NUMBER: _ClassVar[int]
36
+ TOAPP_ALL_HASH_NAME_FIELD_NUMBER: _ClassVar[int]
20
37
  TOAPP_BP_FIELD_NUMBER: _ClassVar[int]
21
38
  TOAPP_BSTATE_FIELD_NUMBER: _ClassVar[int]
22
39
  TOAPP_CHGPILETO_FIELD_NUMBER: _ClassVar[int]
@@ -24,10 +41,12 @@ class MctlNav(_message.Message):
24
41
  TOAPP_GETHASH_ACK_FIELD_NUMBER: _ClassVar[int]
25
42
  TOAPP_GET_COMMONDATA_ACK_FIELD_NUMBER: _ClassVar[int]
26
43
  TOAPP_LAT_UP_FIELD_NUMBER: _ClassVar[int]
44
+ TOAPP_MAP_NAME_MSG_FIELD_NUMBER: _ClassVar[int]
27
45
  TOAPP_OPT_BORDER_INFO_FIELD_NUMBER: _ClassVar[int]
28
46
  TOAPP_OPT_LINE_UP_FIELD_NUMBER: _ClassVar[int]
29
47
  TOAPP_OPT_OBS_INFO_FIELD_NUMBER: _ClassVar[int]
30
48
  TOAPP_POS_UP_FIELD_NUMBER: _ClassVar[int]
49
+ TOAPP_SVG_MSG_FIELD_NUMBER: _ClassVar[int]
31
50
  TOAPP_TASK_INFO_FIELD_NUMBER: _ClassVar[int]
32
51
  TOAPP_WORK_REPORT_ACK_FIELD_NUMBER: _ClassVar[int]
33
52
  TOAPP_WORK_REPORT_UPDATE_ACK_FIELD_NUMBER: _ClassVar[int]
@@ -56,6 +75,8 @@ class MctlNav(_message.Message):
56
75
  TODEV_RESET_CHG_PILE_FIELD_NUMBER: _ClassVar[int]
57
76
  TODEV_SAVE_TASK_FIELD_NUMBER: _ClassVar[int]
58
77
  TODEV_SUSTASK_FIELD_NUMBER: _ClassVar[int]
78
+ TODEV_SVG_MSG_FIELD_NUMBER: _ClassVar[int]
79
+ TODEV_TASKCTRL_ACK_FIELD_NUMBER: _ClassVar[int]
59
80
  TODEV_TASKCTRL_FIELD_NUMBER: _ClassVar[int]
60
81
  TODEV_TASK_INFO_ACK_FIELD_NUMBER: _ClassVar[int]
61
82
  TODEV_UNABLE_TIME_SET_FIELD_NUMBER: _ClassVar[int]
@@ -73,6 +94,7 @@ class MctlNav(_message.Message):
73
94
  plan_task_execute: nav_plan_task_execute
74
95
  plan_task_name_id: plan_task_name_id_t
75
96
  simulation_cmd: SimulationCmdData
97
+ toapp_all_hash_name: AppGetAllAreaHashName
76
98
  toapp_bp: NavTaskBreakPoint
77
99
  toapp_bstate: NavBorderState
78
100
  toapp_chgpileto: chargePileType
@@ -80,10 +102,12 @@ class MctlNav(_message.Message):
80
102
  toapp_get_commondata_ack: NavGetCommDataAck
81
103
  toapp_gethash_ack: NavGetHashListAck
82
104
  toapp_lat_up: NavLatLonUp
105
+ toapp_map_name_msg: NavMapNameMsg
83
106
  toapp_opt_border_info: NavOptiBorderInfo
84
107
  toapp_opt_line_up: NavOptLineUp
85
108
  toapp_opt_obs_info: NavOptObsInfo
86
109
  toapp_pos_up: NavPosUp
110
+ toapp_svg_msg: SvgMessageAckT
87
111
  toapp_task_info: NavTaskInfo
88
112
  toapp_work_report_ack: WorkReportInfoAck
89
113
  toapp_work_report_update_ack: WorkReportUpdateAck
@@ -112,15 +136,17 @@ class MctlNav(_message.Message):
112
136
  todev_reset_chg_pile: int
113
137
  todev_save_task: int
114
138
  todev_sustask: int
139
+ todev_svg_msg: SvgMessageAckT
115
140
  todev_task_info_ack: NavResFrame
116
141
  todev_taskctrl: NavTaskCtrl
142
+ todev_taskctrl_ack: NavTaskCtrlAck
117
143
  todev_unable_time_set: NavUnableTimeSet
118
144
  todev_work_report_cmd: WorkReportCmdData
119
145
  todev_work_report_update_cmd: WorkReportUpdateCmd
120
146
  todev_zigzag_ack: NavUploadZigZagResultAck
121
147
  vision_ctrl: vision_ctrl_msg
122
148
  zone_start_precent: zone_start_precent_t
123
- def __init__(self, toapp_lat_up: _Optional[_Union[NavLatLonUp, _Mapping]] = ..., toapp_pos_up: _Optional[_Union[NavPosUp, _Mapping]] = ..., todev_chl_line_data: _Optional[_Union[NavCHlLineData, _Mapping]] = ..., toapp_task_info: _Optional[_Union[NavTaskInfo, _Mapping]] = ..., toapp_opt_line_up: _Optional[_Union[NavOptLineUp, _Mapping]] = ..., toapp_opt_border_info: _Optional[_Union[NavOptiBorderInfo, _Mapping]] = ..., toapp_opt_obs_info: _Optional[_Union[NavOptObsInfo, _Mapping]] = ..., todev_task_info_ack: _Optional[_Union[NavResFrame, _Mapping]] = ..., todev_opt_border_info_ack: _Optional[_Union[NavResFrame, _Mapping]] = ..., todev_opt_obs_info_ack: _Optional[_Union[NavResFrame, _Mapping]] = ..., todev_opt_line_up_ack: _Optional[_Union[NavResFrame, _Mapping]] = ..., toapp_chgpileto: _Optional[_Union[chargePileType, _Mapping]] = ..., todev_sustask: _Optional[int] = ..., todev_rechgcmd: _Optional[int] = ..., todev_edgecmd: _Optional[int] = ..., todev_draw_border: _Optional[int] = ..., todev_draw_border_end: _Optional[int] = ..., todev_draw_obs: _Optional[int] = ..., todev_draw_obs_end: _Optional[int] = ..., todev_chl_line: _Optional[int] = ..., todev_chl_line_end: _Optional[int] = ..., todev_save_task: _Optional[int] = ..., todev_cancel_suscmd: _Optional[int] = ..., todev_reset_chg_pile: _Optional[int] = ..., todev_cancel_draw_cmd: _Optional[int] = ..., todev_one_touch_leave_pile: _Optional[int] = ..., todev_mow_task: _Optional[_Union[NavStartJob, _Mapping]] = ..., toapp_bstate: _Optional[_Union[NavBorderState, _Mapping]] = ..., todev_lat_up_ack: _Optional[int] = ..., todev_gethash: _Optional[_Union[NavGetHashList, _Mapping]] = ..., toapp_gethash_ack: _Optional[_Union[NavGetHashListAck, _Mapping]] = ..., todev_get_commondata: _Optional[_Union[NavGetCommData, _Mapping]] = ..., toapp_get_commondata_ack: _Optional[_Union[NavGetCommDataAck, _Mapping]] = ..., bidire_reqconver_path: _Optional[_Union[NavReqCoverPath, _Mapping]] = ..., toapp_zigzag: _Optional[_Union[NavUploadZigZagResult, _Mapping]] = ..., todev_zigzag_ack: _Optional[_Union[NavUploadZigZagResultAck, _Mapping]] = ..., todev_taskctrl: _Optional[_Union[NavTaskCtrl, _Mapping]] = ..., bidire_taskid: _Optional[_Union[NavTaskIdRw, _Mapping]] = ..., toapp_bp: _Optional[_Union[NavTaskBreakPoint, _Mapping]] = ..., todev_planjob_set: _Optional[_Union[NavPlanJobSet, _Mapping]] = ..., todev_unable_time_set: _Optional[_Union[NavUnableTimeSet, _Mapping]] = ..., simulation_cmd: _Optional[_Union[SimulationCmdData, _Mapping]] = ..., todev_work_report_update_cmd: _Optional[_Union[WorkReportUpdateCmd, _Mapping]] = ..., toapp_work_report_update_ack: _Optional[_Union[WorkReportUpdateAck, _Mapping]] = ..., todev_work_report_cmd: _Optional[_Union[WorkReportCmdData, _Mapping]] = ..., toapp_work_report_ack: _Optional[_Union[WorkReportInfoAck, _Mapping]] = ..., toapp_work_report_upload: _Optional[_Union[WorkReportInfoAck, _Mapping]] = ..., app_request_cover_paths: _Optional[_Union[app_request_cover_paths_t, _Mapping]] = ..., cover_path_upload: _Optional[_Union[cover_path_upload_t, _Mapping]] = ..., zone_start_precent: _Optional[_Union[zone_start_precent_t, _Mapping]] = ..., vision_ctrl: _Optional[_Union[vision_ctrl_msg, _Mapping]] = ..., nav_sys_param_cmd: _Optional[_Union[nav_sys_param_msg, _Mapping]] = ..., plan_task_execute: _Optional[_Union[nav_plan_task_execute, _Mapping]] = ..., toapp_costmap: _Optional[_Union[costmap_t, _Mapping]] = ..., plan_task_name_id: _Optional[_Union[plan_task_name_id_t, _Mapping]] = ..., all_plan_task: _Optional[_Union[nav_get_all_plan_task, _Mapping]] = ...) -> None: ...
149
+ def __init__(self, toapp_lat_up: _Optional[_Union[NavLatLonUp, _Mapping]] = ..., toapp_pos_up: _Optional[_Union[NavPosUp, _Mapping]] = ..., todev_chl_line_data: _Optional[_Union[NavCHlLineData, _Mapping]] = ..., toapp_task_info: _Optional[_Union[NavTaskInfo, _Mapping]] = ..., toapp_opt_line_up: _Optional[_Union[NavOptLineUp, _Mapping]] = ..., toapp_opt_border_info: _Optional[_Union[NavOptiBorderInfo, _Mapping]] = ..., toapp_opt_obs_info: _Optional[_Union[NavOptObsInfo, _Mapping]] = ..., todev_task_info_ack: _Optional[_Union[NavResFrame, _Mapping]] = ..., todev_opt_border_info_ack: _Optional[_Union[NavResFrame, _Mapping]] = ..., todev_opt_obs_info_ack: _Optional[_Union[NavResFrame, _Mapping]] = ..., todev_opt_line_up_ack: _Optional[_Union[NavResFrame, _Mapping]] = ..., toapp_chgpileto: _Optional[_Union[chargePileType, _Mapping]] = ..., todev_sustask: _Optional[int] = ..., todev_rechgcmd: _Optional[int] = ..., todev_edgecmd: _Optional[int] = ..., todev_draw_border: _Optional[int] = ..., todev_draw_border_end: _Optional[int] = ..., todev_draw_obs: _Optional[int] = ..., todev_draw_obs_end: _Optional[int] = ..., todev_chl_line: _Optional[int] = ..., todev_chl_line_end: _Optional[int] = ..., todev_save_task: _Optional[int] = ..., todev_cancel_suscmd: _Optional[int] = ..., todev_reset_chg_pile: _Optional[int] = ..., todev_cancel_draw_cmd: _Optional[int] = ..., todev_one_touch_leave_pile: _Optional[int] = ..., todev_mow_task: _Optional[_Union[NavStartJob, _Mapping]] = ..., toapp_bstate: _Optional[_Union[NavBorderState, _Mapping]] = ..., todev_lat_up_ack: _Optional[int] = ..., todev_gethash: _Optional[_Union[NavGetHashList, _Mapping]] = ..., toapp_gethash_ack: _Optional[_Union[NavGetHashListAck, _Mapping]] = ..., todev_get_commondata: _Optional[_Union[NavGetCommData, _Mapping]] = ..., toapp_get_commondata_ack: _Optional[_Union[NavGetCommDataAck, _Mapping]] = ..., bidire_reqconver_path: _Optional[_Union[NavReqCoverPath, _Mapping]] = ..., toapp_zigzag: _Optional[_Union[NavUploadZigZagResult, _Mapping]] = ..., todev_zigzag_ack: _Optional[_Union[NavUploadZigZagResultAck, _Mapping]] = ..., todev_taskctrl: _Optional[_Union[NavTaskCtrl, _Mapping]] = ..., bidire_taskid: _Optional[_Union[NavTaskIdRw, _Mapping]] = ..., toapp_bp: _Optional[_Union[NavTaskBreakPoint, _Mapping]] = ..., todev_planjob_set: _Optional[_Union[NavPlanJobSet, _Mapping]] = ..., todev_unable_time_set: _Optional[_Union[NavUnableTimeSet, _Mapping]] = ..., simulation_cmd: _Optional[_Union[SimulationCmdData, _Mapping]] = ..., todev_work_report_update_cmd: _Optional[_Union[WorkReportUpdateCmd, _Mapping]] = ..., toapp_work_report_update_ack: _Optional[_Union[WorkReportUpdateAck, _Mapping]] = ..., todev_work_report_cmd: _Optional[_Union[WorkReportCmdData, _Mapping]] = ..., toapp_work_report_ack: _Optional[_Union[WorkReportInfoAck, _Mapping]] = ..., toapp_work_report_upload: _Optional[_Union[WorkReportInfoAck, _Mapping]] = ..., app_request_cover_paths: _Optional[_Union[app_request_cover_paths_t, _Mapping]] = ..., cover_path_upload: _Optional[_Union[cover_path_upload_t, _Mapping]] = ..., zone_start_precent: _Optional[_Union[zone_start_precent_t, _Mapping]] = ..., vision_ctrl: _Optional[_Union[vision_ctrl_msg, _Mapping]] = ..., nav_sys_param_cmd: _Optional[_Union[nav_sys_param_msg, _Mapping]] = ..., plan_task_execute: _Optional[_Union[nav_plan_task_execute, _Mapping]] = ..., toapp_costmap: _Optional[_Union[costmap_t, _Mapping]] = ..., plan_task_name_id: _Optional[_Union[plan_task_name_id_t, _Mapping]] = ..., all_plan_task: _Optional[_Union[nav_get_all_plan_task, _Mapping]] = ..., todev_taskctrl_ack: _Optional[_Union[NavTaskCtrlAck, _Mapping]] = ..., toapp_map_name_msg: _Optional[_Union[NavMapNameMsg, _Mapping]] = ..., todev_svg_msg: _Optional[_Union[SvgMessageAckT, _Mapping]] = ..., toapp_svg_msg: _Optional[_Union[SvgMessageAckT, _Mapping]] = ..., toapp_all_hash_name: _Optional[_Union[AppGetAllAreaHashName, _Mapping]] = ...) -> None: ...
124
150
 
125
151
  class NavBorderDataGet(_message.Message):
126
152
  __slots__ = ["borderLen", "currentFrame", "jobId"]
@@ -272,6 +298,20 @@ class NavLatLonUp(_message.Message):
272
298
  lon: float
273
299
  def __init__(self, lat: _Optional[float] = ..., lon: _Optional[float] = ...) -> None: ...
274
300
 
301
+ class NavMapNameMsg(_message.Message):
302
+ __slots__ = ["device_id", "hash", "name", "result", "rw"]
303
+ DEVICE_ID_FIELD_NUMBER: _ClassVar[int]
304
+ HASH_FIELD_NUMBER: _ClassVar[int]
305
+ NAME_FIELD_NUMBER: _ClassVar[int]
306
+ RESULT_FIELD_NUMBER: _ClassVar[int]
307
+ RW_FIELD_NUMBER: _ClassVar[int]
308
+ device_id: str
309
+ hash: int
310
+ name: str
311
+ result: int
312
+ rw: int
313
+ def __init__(self, rw: _Optional[int] = ..., hash: _Optional[int] = ..., name: _Optional[str] = ..., result: _Optional[int] = ..., device_id: _Optional[str] = ...) -> None: ...
314
+
275
315
  class NavObstiBorderDataGet(_message.Message):
276
316
  __slots__ = ["currentFrame", "obstacleIndex", "obstaclesLen"]
277
317
  CURRENTFRAME_FIELD_NUMBER: _ClassVar[int]
@@ -546,6 +586,20 @@ class NavTaskCtrl(_message.Message):
546
586
  type: int
547
587
  def __init__(self, type: _Optional[int] = ..., action: _Optional[int] = ..., result: _Optional[int] = ..., reserved: _Optional[str] = ...) -> None: ...
548
588
 
589
+ class NavTaskCtrlAck(_message.Message):
590
+ __slots__ = ["action", "nav_state", "reserved", "result", "type"]
591
+ ACTION_FIELD_NUMBER: _ClassVar[int]
592
+ NAV_STATE_FIELD_NUMBER: _ClassVar[int]
593
+ RESERVED_FIELD_NUMBER: _ClassVar[int]
594
+ RESULT_FIELD_NUMBER: _ClassVar[int]
595
+ TYPE_FIELD_NUMBER: _ClassVar[int]
596
+ action: int
597
+ nav_state: int
598
+ reserved: str
599
+ result: int
600
+ type: int
601
+ def __init__(self, type: _Optional[int] = ..., action: _Optional[int] = ..., result: _Optional[int] = ..., nav_state: _Optional[int] = ..., reserved: _Optional[str] = ...) -> None: ...
602
+
549
603
  class NavTaskIdRw(_message.Message):
550
604
  __slots__ = ["pver", "reserved", "result", "subCmd", "taskId", "taskName"]
551
605
  PVER_FIELD_NUMBER: _ClassVar[int]
@@ -674,6 +728,28 @@ class SimulationCmdData(_message.Message):
674
728
  subCmd: int
675
729
  def __init__(self, subCmd: _Optional[int] = ..., param_id: _Optional[int] = ..., param_value: _Optional[_Iterable[int]] = ...) -> None: ...
676
730
 
731
+ class SvgMessageAckT(_message.Message):
732
+ __slots__ = ["current_frame", "data_hash", "paternal_hash_a", "pver", "result", "sub_cmd", "svg_message", "total_frame", "type"]
733
+ CURRENT_FRAME_FIELD_NUMBER: _ClassVar[int]
734
+ DATA_HASH_FIELD_NUMBER: _ClassVar[int]
735
+ PATERNAL_HASH_A_FIELD_NUMBER: _ClassVar[int]
736
+ PVER_FIELD_NUMBER: _ClassVar[int]
737
+ RESULT_FIELD_NUMBER: _ClassVar[int]
738
+ SUB_CMD_FIELD_NUMBER: _ClassVar[int]
739
+ SVG_MESSAGE_FIELD_NUMBER: _ClassVar[int]
740
+ TOTAL_FRAME_FIELD_NUMBER: _ClassVar[int]
741
+ TYPE_FIELD_NUMBER: _ClassVar[int]
742
+ current_frame: int
743
+ data_hash: int
744
+ paternal_hash_a: int
745
+ pver: int
746
+ result: int
747
+ sub_cmd: int
748
+ svg_message: svg_message_t
749
+ total_frame: int
750
+ type: int
751
+ def __init__(self, pver: _Optional[int] = ..., sub_cmd: _Optional[int] = ..., total_frame: _Optional[int] = ..., current_frame: _Optional[int] = ..., data_hash: _Optional[int] = ..., paternal_hash_a: _Optional[int] = ..., type: _Optional[int] = ..., result: _Optional[int] = ..., svg_message: _Optional[_Union[svg_message_t, _Mapping]] = ...) -> None: ...
752
+
677
753
  class WorkReportCmdData(_message.Message):
678
754
  __slots__ = ["getInfoNum", "subCmd"]
679
755
  GETINFONUM_FIELD_NUMBER: _ClassVar[int]
@@ -854,6 +930,36 @@ class plan_task_name_id_t(_message.Message):
854
930
  name: str
855
931
  def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ...
856
932
 
933
+ class svg_message_t(_message.Message):
934
+ __slots__ = ["base_height_m", "base_height_pix", "base_width_m", "base_width_pix", "data_count", "hide_svg", "name_count", "rotate", "scale", "svg_file_data", "svg_file_name", "x_move", "y_move"]
935
+ BASE_HEIGHT_M_FIELD_NUMBER: _ClassVar[int]
936
+ BASE_HEIGHT_PIX_FIELD_NUMBER: _ClassVar[int]
937
+ BASE_WIDTH_M_FIELD_NUMBER: _ClassVar[int]
938
+ BASE_WIDTH_PIX_FIELD_NUMBER: _ClassVar[int]
939
+ DATA_COUNT_FIELD_NUMBER: _ClassVar[int]
940
+ HIDE_SVG_FIELD_NUMBER: _ClassVar[int]
941
+ NAME_COUNT_FIELD_NUMBER: _ClassVar[int]
942
+ ROTATE_FIELD_NUMBER: _ClassVar[int]
943
+ SCALE_FIELD_NUMBER: _ClassVar[int]
944
+ SVG_FILE_DATA_FIELD_NUMBER: _ClassVar[int]
945
+ SVG_FILE_NAME_FIELD_NUMBER: _ClassVar[int]
946
+ X_MOVE_FIELD_NUMBER: _ClassVar[int]
947
+ Y_MOVE_FIELD_NUMBER: _ClassVar[int]
948
+ base_height_m: float
949
+ base_height_pix: int
950
+ base_width_m: float
951
+ base_width_pix: int
952
+ data_count: int
953
+ hide_svg: bool
954
+ name_count: int
955
+ rotate: float
956
+ scale: float
957
+ svg_file_data: str
958
+ svg_file_name: str
959
+ x_move: float
960
+ y_move: float
961
+ def __init__(self, x_move: _Optional[float] = ..., y_move: _Optional[float] = ..., scale: _Optional[float] = ..., rotate: _Optional[float] = ..., base_width_m: _Optional[float] = ..., base_width_pix: _Optional[int] = ..., base_height_m: _Optional[float] = ..., base_height_pix: _Optional[int] = ..., data_count: _Optional[int] = ..., hide_svg: bool = ..., name_count: _Optional[int] = ..., svg_file_name: _Optional[str] = ..., svg_file_data: _Optional[str] = ...) -> None: ...
962
+
857
963
  class vision_ctrl_msg(_message.Message):
858
964
  __slots__ = ["cmd", "type"]
859
965
  CMD_FIELD_NUMBER: _ClassVar[int]
@@ -1,3 +1,6 @@
1
+ from enum import IntEnum
2
+
3
+
1
4
  class bleOrderCmd:
2
5
  allpowerfullRW = 67
3
6
  alongBorder = 9
@@ -250,3 +253,19 @@ def device_mode(value) -> str:
250
253
  38: "MODE_BOUNDARY_JUMP",
251
254
  }
252
255
  return modes.get(value, "Invalid mode")
256
+
257
+
258
+ class PosType(IntEnum):
259
+ """Position of the robot."""
260
+ AREA_BORDER_ON = 7
261
+ AREA_INSIDE = 1
262
+ AREA_OUT = 0
263
+ CHANNAL_AREA_OVERLAP = 9
264
+ CHANNEL_ON = 3
265
+ CHARGE_ON = 5
266
+ DUMPING_AREA_INSIDE = 8
267
+ DUMPING_OUTSIDE = 10
268
+ OBS_ON = 2
269
+ TURN_AREA_INSIDE = 4
270
+ VIRTUAL_INSIDE = 6
271
+
@@ -7,6 +7,9 @@ class DeviceType(Enum):
7
7
  LUBA = (1, "Luba", "Luba 1")
8
8
  LUBA_2 = (2, "Luba-VS", "Luba 2")
9
9
  LUBA_YUKA = (3, "Yuka-", "Yuka")
10
+ YUKA_MINI = (4, "Yuka-MN", "Yuka Mini")
11
+ YUKA_MINI2 = (5, "Yuka-YM", "Yuka Mini 2")
12
+ LUBA_VP = (6, "Luba-VP", "Luba VP")
10
13
 
11
14
  def __init__(self, value: int, name: str, model: str):
12
15
  self._value = value
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pymammotion"
3
- version = "0.0.53"
3
+ version = "0.0.55"
4
4
  license = "GNU-3.0"
5
5
  description = ""
6
6
  readme = "README.md"
@@ -47,7 +47,7 @@ mypy = "^1.10.0"
47
47
  pre-commit = "^3.7.1"
48
48
 
49
49
  [tool.bumpver]
50
- current_version = "0.0.53"
50
+ current_version = "0.0.55"
51
51
  version_pattern = "MAJOR.MINOR.PATCH"
52
52
  commit_message = "Bump version {old_version} -> {new_version}"
53
53
  commit = true
File without changes
File without changes