pymammotion 0.5.44__py3-none-any.whl → 0.5.53__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

@@ -6,9 +6,11 @@ import logging
6
6
  from typing import Any
7
7
 
8
8
  import betterproto2
9
+ from shapely import Point
9
10
 
10
11
  from pymammotion.data.model.device import MowingDevice
11
12
  from pymammotion.data.model.device_info import SideLight
13
+ from pymammotion.data.model.generate_geojson import GeojsonGenerator
12
14
  from pymammotion.data.model.hash_list import (
13
15
  AreaHashNameList,
14
16
  MowPath,
@@ -17,6 +19,7 @@ from pymammotion.data.model.hash_list import (
17
19
  Plan,
18
20
  SvgMessage,
19
21
  )
22
+ from pymammotion.data.model.location import Dock, LocationPoint
20
23
  from pymammotion.data.model.work import CurrentTaskSettings
21
24
  from pymammotion.data.mqtt.event import ThingEventMessage
22
25
  from pymammotion.data.mqtt.properties import ThingPropertiesMessage
@@ -44,6 +47,7 @@ from pymammotion.proto import (
44
47
  TimeCtrlLight,
45
48
  WifiIotStatusReport,
46
49
  )
50
+ from pymammotion.utility.map import CoordinateConverter
47
51
 
48
52
  logger = logging.getLogger(__name__)
49
53
 
@@ -156,6 +160,13 @@ class MowerStateManager:
156
160
  elif self.ble_get_plan_callback:
157
161
  await self.ble_get_plan_callback(planjob)
158
162
 
163
+ async def queue_command_callback(self, **kwargs: Any) -> None:
164
+ """Queue command to available callback."""
165
+ if self.ble_queue_command_callback:
166
+ await self.ble_queue_command_callback.data_event(**kwargs)
167
+ elif self.cloud_queue_command_callback:
168
+ await self.cloud_queue_command_callback.data_event(**kwargs)
169
+
159
170
  async def notification(self, message: LubaMsg) -> None:
160
171
  """Handle protobuf notifications."""
161
172
  res = betterproto2.which_one_of(message, "LubaSubMsg")
@@ -180,7 +191,7 @@ class MowerStateManager:
180
191
 
181
192
  await self.on_notification_callback(res)
182
193
 
183
- async def _update_nav_data(self, message) -> None:
194
+ async def _update_nav_data(self, message: LubaMsg) -> None:
184
195
  """Update nav data."""
185
196
  nav_msg = betterproto2.which_one_of(message.nav, "SubNavMsg")
186
197
  match nav_msg[0]:
@@ -196,10 +207,15 @@ class MowerStateManager:
196
207
  NavGetCommData.from_dict(common_data.to_dict(casing=betterproto2.Casing.SNAKE))
197
208
  )
198
209
  if updated:
210
+ if len(self._device.map.missing_hashlist(0)) == 0:
211
+ self.generate_geojson(self._device.location.RTK, self._device.location.dock)
212
+
199
213
  await self.get_commondata_ack_callback(common_data)
200
214
  case "cover_path_upload":
201
215
  mow_path: CoverPathUploadT = nav_msg[1]
202
216
  self._device.map.update_mow_path(MowPath.from_dict(mow_path.to_dict(casing=betterproto2.Casing.SNAKE)))
217
+ if len(self._device.map.find_missing_mow_path_frames()) == 0:
218
+ self.generate_mowing_geojson(self._device.location.RTK)
203
219
 
204
220
  case "todev_planjob_set":
205
221
  planjob: NavPlanJobSet = nav_msg[1]
@@ -221,9 +237,17 @@ class MowerStateManager:
221
237
 
222
238
  case "bidire_reqconver_path":
223
239
  work_settings: NavReqCoverPath = nav_msg[1]
224
- self._device.work = CurrentTaskSettings.from_dict(
225
- work_settings.to_dict(casing=betterproto2.Casing.SNAKE)
226
- )
240
+
241
+ current_task = CurrentTaskSettings.from_dict(work_settings.to_dict(casing=betterproto2.Casing.SNAKE))
242
+
243
+ if current_task.path_hash == 0:
244
+ self._device.map.current_mow_path = {}
245
+
246
+ if current_task.path_hash != self._device.work.path_hash:
247
+ await self.queue_command_callback(command="get_all_boundary_hash_list", sub_cmd=3)
248
+
249
+ self._device.work = current_task
250
+
227
251
  case "nav_sys_param_cmd":
228
252
  settings: NavSysParamMsg = nav_msg[1]
229
253
  match settings.id:
@@ -235,6 +259,7 @@ class MowerStateManager:
235
259
  self._device.mower_state.traversal_mode = settings.context
236
260
  case "todev_unable_time_set":
237
261
  nav_non_work_time: NavUnableTimeSet = nav_msg[1]
262
+ self._device.non_work_hours.non_work_sub_cmd = nav_non_work_time.sub_cmd
238
263
  self._device.non_work_hours.start_time = nav_non_work_time.unable_start_time
239
264
  self._device.non_work_hours.end_time = nav_non_work_time.unable_end_time
240
265
 
@@ -313,3 +338,32 @@ class MowerStateManager:
313
338
 
314
339
  def _update_ota_data(self, message) -> None:
315
340
  """Update OTA data."""
341
+
342
+ def generate_geojson(self, rtk: LocationPoint, dock: Dock) -> Any:
343
+ """Generate geojson from frames."""
344
+ coordinator_converter = CoordinateConverter(rtk.latitude, rtk.longitude)
345
+ RTK_real_loc = coordinator_converter.enu_to_lla(0, 0)
346
+
347
+ dock_location = coordinator_converter.enu_to_lla(dock.latitude, dock.longitude)
348
+ dock_rotation = coordinator_converter.get_transform_yaw_with_yaw(dock.rotation) + 180
349
+
350
+ self._device.map.generated_geojson = GeojsonGenerator.generate_geojson(
351
+ self._device.map,
352
+ Point(RTK_real_loc.latitude, RTK_real_loc.longitude),
353
+ Point(dock_location.latitude, dock_location.longitude),
354
+ int(dock_rotation),
355
+ )
356
+
357
+ return self._device.map.generated_geojson
358
+
359
+ def generate_mowing_geojson(self, rtk: LocationPoint) -> Any:
360
+ """Generate geojson from frames."""
361
+ coordinator_converter = CoordinateConverter(rtk.latitude, rtk.longitude)
362
+ RTK_real_loc = coordinator_converter.enu_to_lla(0, 0)
363
+
364
+ self._device.map.generated_mow_path_geojson = GeojsonGenerator.generate_mow_path_geojson(
365
+ self._device.map,
366
+ Point(RTK_real_loc.latitude, RTK_real_loc.longitude),
367
+ )
368
+
369
+ return self._device.map.generated_mow_path_geojson
@@ -77,16 +77,19 @@ class DataEvent:
77
77
  self.on_data_event = Event()
78
78
 
79
79
  async def data_event(self, data: Any) -> None:
80
+ """Execute the data event callback."""
80
81
  # This function will be executed when data is received.
81
82
  if data:
82
83
  await self.on_data_event(data)
83
84
  else:
84
85
  await self.on_data_event()
85
86
 
86
- def add_subscribers(self, obj_method) -> None:
87
+ def add_subscribers(self, obj_method: Callable) -> None:
88
+ """Add subscribers."""
87
89
  self.on_data_event += obj_method
88
90
 
89
- def remove_subscribers(self, obj_method) -> None:
91
+ def remove_subscribers(self, obj_method: Callable) -> None:
92
+ """Remove subscribers."""
90
93
  try:
91
94
  self.on_data_event -= obj_method
92
95
  except ValueError:
@@ -27,12 +27,14 @@ class HomeAssistantMowerApi:
27
27
  """API for interacting with Mammotion Mowers for Home Assistant."""
28
28
 
29
29
  def __init__(self) -> None:
30
+ self._plan_lock = asyncio.Lock()
30
31
  self.update_failures = 0
31
32
  self._mammotion = Mammotion()
32
33
  self._map_lock = asyncio.Lock()
33
34
  self._last_call_times: dict[str, datetime] = {}
34
35
  self._call_intervals = {
35
- "check_maps": timedelta(minutes=1),
36
+ "check_maps": timedelta(minutes=5),
37
+ "read_plan": timedelta(minutes=30),
36
38
  "read_settings": timedelta(minutes=5),
37
39
  "get_errors": timedelta(minutes=1),
38
40
  "get_report_cfg": timedelta(seconds=5),
@@ -81,10 +83,19 @@ class HomeAssistantMowerApi:
81
83
  self._map_lock.release()
82
84
 
83
85
  # Check maps periodically
84
- if self._should_call_api("check_maps"):
86
+ if self._should_call_api("check_maps") and not self._map_lock.locked():
85
87
  await self._map_lock.acquire()
86
88
  await self.mammotion.start_map_sync(device_name)
87
89
  self._mark_api_called("check_maps")
90
+ return device.state
91
+
92
+ if self._should_call_api("read_plan"):
93
+ if len(device.state.map.plan) == 0 or list(device.state.map.plan.values())[0].total_plan_num != len(
94
+ device.state.map.plan
95
+ ):
96
+ await self.async_send_command(device_name, "read_plan", sub_cmd=2, plan_index=0)
97
+ self._mark_api_called("read_plan")
98
+ return device.state
88
99
 
89
100
  # Read settings less frequently
90
101
  if self._should_call_api("read_settings"):
@@ -195,8 +206,8 @@ class HomeAssistantMowerApi:
195
206
 
196
207
  def is_online(self, device_name: str) -> bool:
197
208
  if device := self.mammotion.get_device_by_name(device_name):
198
- ble = device.ble
199
- return device.state.online or ble is not None and ble.client.is_connected
209
+ if ble := device.ble:
210
+ return device.state.online or ble is not None and ble.client.is_connected
200
211
  return False
201
212
 
202
213
  async def update_firmware(self, device_name: str, version: str) -> None:
@@ -242,7 +253,7 @@ class HomeAssistantMowerApi:
242
253
  async def async_set_sidelight(self, device_name: str, on_off: int) -> None:
243
254
  """Set Sidelight."""
244
255
  await self.async_send_command(device_name, "read_and_set_sidelight", is_sidelight=bool(on_off), operate=0)
245
- await self.async_read_sidelight()
256
+ await self.async_read_sidelight(device_name)
246
257
 
247
258
  async def async_read_sidelight(self, device_name: str) -> None:
248
259
  """Set Sidelight."""
@@ -332,6 +343,33 @@ class HomeAssistantMowerApi:
332
343
  }
333
344
  """
334
345
 
346
+ async def async_set_non_work_hours(self, device_name: str, start_time: str, end_time: str) -> None:
347
+ """Set non work hours l1?."""
348
+ device = self._mammotion.get_device_by_name(device_name)
349
+ await self.async_send_command(
350
+ device_name,
351
+ "set_plan_unable_time",
352
+ sub_cmd=device.state.non_work_hours.sub_cmd,
353
+ device_id=device.iot_id,
354
+ unable_end_time=end_time,
355
+ unable_start_time=start_time,
356
+ )
357
+
358
+ async def async_set_job_dnd(self, device_name: str, start_time: str, end_time: str) -> None:
359
+ """Set non work hours."""
360
+ await self.async_send_command(
361
+ device_name,
362
+ "job_do_not_disturb",
363
+ sub_cmd=1,
364
+ trigger=1,
365
+ unable_end_time=end_time,
366
+ unable_start_time=start_time,
367
+ )
368
+
369
+ async def async_del_job_dnd(self, device_name: str) -> None:
370
+ """Del non work hours."""
371
+ await self.async_send_command(device_name, "job_do_not_disturb", sub_cmd=1, trigger=0)
372
+
335
373
  async def send_command_and_update(self, device_name: str, command_str: str, **kwargs: Any) -> None:
336
374
  """Send command and update."""
337
375
  await self.async_send_command(device_name, command_str, **kwargs)
@@ -414,7 +452,7 @@ class HomeAssistantMowerApi:
414
452
  device = self.mammotion.get_device_by_name(device_name)
415
453
 
416
454
  if work := device.state.work:
417
- operation_settings.areas = work.zone_hashs
455
+ operation_settings.areas = set(work.zone_hashs)
418
456
  operation_settings.toward = work.toward
419
457
  operation_settings.toward_mode = work.toward_mode
420
458
  operation_settings.toward_included_angle = work.toward_included_angle
@@ -20,22 +20,22 @@ class HomeAssistantRTKApi:
20
20
  try:
21
21
  response = await device.cloud_client.get_device_properties(device.iot_id)
22
22
  if response.code == 200:
23
- data = response.data
24
- if ota_progress := data.otaProgress:
25
- device.update_check = CheckDeviceVersion.from_dict(ota_progress.value)
26
- if network_info := data.networkInfo:
27
- network = json.loads(network_info.value)
28
- device.state.wifi_rssi = network["wifi_rssi"]
29
- device.state.wifi_sta_mac = network["wifi_sta_mac"]
30
- device.state.bt_mac = network["bt_mac"]
31
- if coordinate := data.coordinate:
32
- coord_val = json.loads(coordinate.value)
33
- if device.state.lat == 0:
34
- device.state.lat = coord_val["lat"]
35
- if device.state.lon == 0:
36
- device.state.lon = coord_val["lon"]
37
- if device_version := data.deviceVersion:
38
- device.state.device_version = device_version.value
23
+ if data := response.data:
24
+ if ota_progress := data.otaProgress:
25
+ device.state.update_check = CheckDeviceVersion.from_dict(ota_progress.value)
26
+ if network_info := data.networkInfo:
27
+ network = json.loads(network_info.value)
28
+ device.state.wifi_rssi = network["wifi_rssi"]
29
+ device.state.wifi_sta_mac = network["wifi_sta_mac"]
30
+ device.state.bt_mac = network["bt_mac"]
31
+ if coordinate := data.coordinate:
32
+ coord_val = json.loads(coordinate.value)
33
+ if device.state.lat == 0:
34
+ device.state.lat = coord_val["lat"]
35
+ if device.state.lon == 0:
36
+ device.state.lon = coord_val["lon"]
37
+ if device_version := data.deviceVersion:
38
+ device.state.device_version = device_version.value
39
39
  device.state.online = True
40
40
 
41
41
  ota_info = await device.cloud_client.mammotion_http.get_device_ota_firmware([device.state.iot_id])
pymammotion/http/http.py CHANGED
@@ -129,7 +129,7 @@ class MammotionHTTP:
129
129
  self._response: Response | None = None
130
130
  self.login_info: LoginResponseData | None = None
131
131
  self.jwt_info: JWTTokenInfo = JWTTokenInfo("", "")
132
- self._headers = {"User-Agent": "okhttp/4.9.3", "App-Version": "Home Assistant,1.14.2.29"}
132
+ self._headers = {"User-Agent": "okhttp/4.9.3", "App-Version": "Home Assistant,1.15.6.14"}
133
133
  self.encryption_utils = EncryptionUtils()
134
134
 
135
135
  # Add this method to generate a 10-digit random number
@@ -383,6 +383,8 @@ class MammotionHTTP:
383
383
  "Authorization": f"Bearer {self.login_info.access_token}",
384
384
  "Content-Type": "application/json",
385
385
  "User-Agent": "okhttp/4.9.3",
386
+ "Client-Id": self.client_id,
387
+ "Client-Type": "1",
386
388
  },
387
389
  ) as resp:
388
390
  data = await resp.json()
@@ -402,6 +404,8 @@ class MammotionHTTP:
402
404
  "Authorization": f"Bearer {self.login_info.access_token}",
403
405
  "Content-Type": "application/json",
404
406
  "User-Agent": "okhttp/4.9.3",
407
+ "Client-Id": self.client_id,
408
+ "Client-Type": "1",
405
409
  },
406
410
  ) as resp:
407
411
  data = await resp.json()
@@ -428,7 +432,7 @@ class MammotionHTTP:
428
432
 
429
433
  @refresh_token_decorator
430
434
  async def get_user_device_list(self) -> Response[list[DeviceInfo]]:
431
- """Fetches device list for a user (owned)."""
435
+ """Fetches device list for a user (owned not shared, shared returns nothing)."""
432
436
  async with ClientSession(MAMMOTION_API_DOMAIN) as session:
433
437
  async with session.get(
434
438
  "/device-server/v1/device/list",
@@ -437,6 +441,8 @@ class MammotionHTTP:
437
441
  "Authorization": f"Bearer {self.login_info.access_token}",
438
442
  "Content-Type": "application/json",
439
443
  "User-Agent": "okhttp/4.9.3",
444
+ "Client-Id": self.client_id,
445
+ "Client-Type": "1",
440
446
  },
441
447
  ) as resp:
442
448
  resp_dict = await resp.json()
@@ -245,6 +245,35 @@ class MessageNavigation(AbstractMessage, ABC):
245
245
  logger.debug(f"Send command--Read plan time {sub_cmd}")
246
246
  return self.send_order_msg_nav(build2)
247
247
 
248
+ def read_job_not_not_disturb(self) -> bytes:
249
+ build = NavUnableTimeSet(sub_cmd=2)
250
+ build2 = MctlNav(todev_unable_time_set=build)
251
+ logger.debug(f"Send command--Read job dnd {2}")
252
+ return self.send_order_msg_nav(build2)
253
+
254
+ def job_animal_protect_read(self) -> bytes:
255
+ """Read animal protection settings."""
256
+ build = NavUnableTimeSet(sub_cmd=2, trigger=99)
257
+ build2 = MctlNav(todev_unable_time_set=build)
258
+ logger.debug(f"Send command - Read job do not disturb time subCmd2 {build}")
259
+ return self.send_order_msg_nav(build2)
260
+
261
+ def job_do_not_disturb(self, unable_start_time: str, unable_end_time: str) -> bytes:
262
+ """Set do not disturb time period."""
263
+ build = MctlNav(
264
+ todev_unable_time_set=NavUnableTimeSet(
265
+ sub_cmd=1, trigger=1, unable_start_time=unable_start_time, unable_end_time=unable_end_time
266
+ )
267
+ )
268
+ logger.debug(f"Send command - Set job do not disturb time: {unable_start_time} - {unable_end_time}")
269
+ return self.send_order_msg_nav(build)
270
+
271
+ def job_do_not_disturb_del(self) -> bytes:
272
+ """Delete do not disturb settings."""
273
+ build = MctlNav(todev_unable_time_set=NavUnableTimeSet(sub_cmd=1, trigger=0))
274
+ logger.debug("Send command - Turn off do not disturb time")
275
+ return self.send_order_msg_nav(build)
276
+
248
277
  def query_job_history(self) -> bytes:
249
278
  return self.send_order_msg_nav(MctlNav(todev_work_report_update_cmd=WorkReportUpdateCmd(sub_cmd=1)))
250
279
 
@@ -186,8 +186,7 @@ class Mammotion:
186
186
 
187
187
  await mammotion_http.refresh_login()
188
188
 
189
- if len(mammotion_http.device_info) != 0:
190
- await self.connect_iot(exists_aliyun.cloud_client)
189
+ await self.connect_iot(exists_aliyun.cloud_client)
191
190
  if len(mammotion_http.device_records.records) != 0:
192
191
  await mammotion_http.get_mqtt_credentials()
193
192
 
@@ -272,7 +271,7 @@ class Mammotion:
272
271
  if mqtt.is_connected():
273
272
  await loop.run_in_executor(None, mqtt.disconnect)
274
273
 
275
- if len(mammotion_http.device_info) != 0:
274
+ if len(cloud_client.devices_by_account_response.data.data) != 0:
276
275
  mammotion_cloud = MammotionCloud(
277
276
  AliyunMQTT(
278
277
  region_id=cloud_client.region_response.data.regionId,
@@ -416,8 +415,7 @@ class Mammotion:
416
415
  _LOGGER.debug("device_list: %s", device_list)
417
416
  await mammotion_http.get_mqtt_credentials()
418
417
  cloud_client = CloudIOTGateway(mammotion_http)
419
- if len(device_list.data or []) != 0:
420
- await self.connect_iot(cloud_client)
418
+ await self.connect_iot(cloud_client)
421
419
  return cloud_client
422
420
 
423
421
  @staticmethod
@@ -484,12 +482,12 @@ class Mammotion:
484
482
  if device:
485
483
  if device.preference is ConnectionPreference.BLUETOOTH and device.ble:
486
484
  return await device.ble.command(key, **kwargs)
487
- if device.preference is ConnectionPreference.WIFI:
485
+ if device.preference is ConnectionPreference.WIFI and device.cloud:
488
486
  return await device.cloud.command(key, **kwargs)
489
487
  # TODO work with both with EITHER
490
488
  return None
491
489
 
492
- async def start_map_sync(self, name: str):
490
+ async def start_map_sync(self, name: str) -> None:
493
491
  """Start map sync."""
494
492
  device = self.get_device_by_name(name)
495
493
  if device:
@@ -500,6 +498,17 @@ class Mammotion:
500
498
  # TODO work with both with EITHER
501
499
  return None
502
500
 
501
+ async def start_schedule_sync(self, name: str) -> None:
502
+ """Start map sync."""
503
+ device = self.get_device_by_name(name)
504
+ if device:
505
+ if device.preference is ConnectionPreference.BLUETOOTH and device.ble:
506
+ return await device.ble.start_schedule_sync()
507
+ if device.preference is ConnectionPreference.WIFI and device.cloud:
508
+ return await device.cloud.start_schedule_sync()
509
+ # TODO work with both with EITHER
510
+ return None
511
+
503
512
  async def get_stream_subscription(self, name: str, iot_id: str) -> Response[StreamSubscriptionResponse] | Any:
504
513
  """Get stream subscription."""
505
514
  device = self.get_device_by_name(name)
@@ -87,6 +87,13 @@ class MammotionMowerDevice(MammotionBaseDevice, ABC):
87
87
  index = plan.plan_index + 1
88
88
  await self.queue_command("read_plan", sub_cmd=2, plan_index=index)
89
89
 
90
+ async def start_schedule_sync(self) -> None:
91
+ """Start sync of schedule data."""
92
+ if len(self.mower.map.plan) == 0 or list(self.mower.map.plan.values())[0].total_plan_num != len(
93
+ self.mower.map.plan
94
+ ):
95
+ await self.queue_command("read_plan", sub_cmd=2, plan_index=0)
96
+
90
97
  async def start_map_sync(self) -> None:
91
98
  """Start sync of map data."""
92
99
  if location := next((loc for loc in self.mower.report_data.locations if loc.pos_type == 5), None):
@@ -94,17 +101,13 @@ class MammotionMowerDevice(MammotionBaseDevice, ABC):
94
101
 
95
102
  await self.queue_command("send_todev_ble_sync", sync_type=3)
96
103
 
104
+ # TODO correctly check if area names exist for a zone.
97
105
  if self._cloud_device and len(self.mower.map.area_name) == 0 and not DeviceType.is_luba1(self.mower.name):
98
106
  await self.queue_command("get_area_name_list", device_id=self._cloud_device.iot_id)
99
107
 
100
108
  if len(self.mower.map.root_hash_lists) == 0 or len(self.mower.map.missing_hashlist()) > 0:
101
109
  await self.queue_command("get_all_boundary_hash_list", sub_cmd=0)
102
110
 
103
- if len(self.mower.map.plan) == 0 or list(self.mower.map.plan.values())[0].total_plan_num != len(
104
- self.mower.map.plan
105
- ):
106
- await self.queue_command("read_plan", sub_cmd=2, plan_index=0)
107
-
108
111
  for hash_id, frame in list(self.mower.map.area.items()):
109
112
  missing_frames = self.mower.map.find_missing_frames(frame)
110
113
  if len(missing_frames) > 0:
@@ -267,7 +267,7 @@ import betterproto2
267
267
 
268
268
  from .message_pool import default_message_pool
269
269
 
270
- _COMPILER_VERSION = "0.8.0"
270
+ _COMPILER_VERSION = "0.9.0"
271
271
  betterproto2.check_compiler_version(_COMPILER_VERSION)
272
272
 
273
273
 
@@ -1899,7 +1899,7 @@ class LoraCfgRsp(betterproto2.Message):
1899
1899
 
1900
1900
  cfg: "str" = betterproto2.field(3, betterproto2.TYPE_STRING)
1901
1901
 
1902
- fac_cfg: "str" = betterproto2.field(4, betterproto2.TYPE_STRING)
1902
+ fac_cfg: "bytes" = betterproto2.field(4, betterproto2.TYPE_BYTES)
1903
1903
 
1904
1904
 
1905
1905
  default_message_pool.register_message("", "LoraCfgRsp", LoraCfgRsp)
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
14
14
  from pymammotion.proto import dev_net_pb2 as pymammotion_dot_proto_dot_dev__net__pb2
15
15
 
16
16
 
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!pymammotion/proto/mctrl_sys.proto\x1a\x1fpymammotion/proto/dev_net.proto\"\x1a\n\x08SysBatUp\x12\x0e\n\x06\x62\x61tVal\x18\x01 \x01(\x05\"Z\n\x0cSysWorkState\x12\x13\n\x0b\x64\x65viceState\x18\x01 \x01(\x05\x12\x13\n\x0b\x63hargeState\x18\x02 \x01(\x05\x12\x0e\n\x06\x63mHash\x18\x03 \x01(\x03\x12\x10\n\x08pathHash\x18\x04 \x01(\x03\"5\n\x0eSysSetTimeZone\x12\x11\n\ttimeStamp\x18\x01 \x01(\x05\x12\x10\n\x08timeArea\x18\x02 \x01(\x05\"\x9e\x01\n\x0eSysSetDateTime\x12\x0c\n\x04Year\x18\x01 \x01(\x05\x12\r\n\x05Month\x18\x02 \x01(\x05\x12\x0c\n\x04\x44\x61te\x18\x03 \x01(\x05\x12\x0c\n\x04Week\x18\x04 \x01(\x05\x12\r\n\x05Hours\x18\x05 \x01(\x05\x12\x0f\n\x07Minutes\x18\x06 \x01(\x05\x12\x0f\n\x07Seconds\x18\x07 \x01(\x05\x12\x10\n\x08timeZone\x18\x08 \x01(\x05\x12\x10\n\x08\x64\x61ylight\x18\t \x01(\x05\"V\n\nSysJobPlan\x12\r\n\x05jobId\x18\x01 \x01(\x03\x12\x0f\n\x07jobMode\x18\x02 \x01(\x05\x12\x13\n\x0brainTactics\x18\x03 \x01(\x05\x12\x13\n\x0bknifeHeight\x18\x04 \x01(\x05\"\"\n\rSysDevErrCode\x12\x11\n\terrorCode\x18\x01 \x01(\x05\"!\n\x0cSysBoardType\x12\x11\n\tboardType\x18\x01 \x01(\x05\"5\n\x0cSysSwVersion\x12\x11\n\tboardType\x18\x01 \x01(\x05\x12\x12\n\nversionLen\x18\x02 \x01(\x05\"1\n\rSysDelJobPlan\x12\x10\n\x08\x64\x65viceId\x18\x01 \x01(\t\x12\x0e\n\x06planId\x18\x02 \x01(\t\"\xec\x01\n\x0eSysJobPlanTime\x12\x0e\n\x06planId\x18\x01 \x01(\x03\x12\x16\n\x0estart_job_time\x18\x02 \x01(\x05\x12\x14\n\x0c\x65nd_job_time\x18\x03 \x01(\x05\x12\x13\n\x0btime_in_day\x18\x04 \x01(\x05\x12\x15\n\rjob_plan_mode\x18\x05 \x01(\x05\x12\x17\n\x0fjob_plan_enable\x18\x06 \x01(\x05\x12\x0f\n\x07weekDay\x18\x07 \x03(\x05\x12\x15\n\rtimeInWeekDay\x18\x08 \x03(\x05\x12\x10\n\x08\x65veryDay\x18\t \x01(\x05\x12\x1d\n\x08job_plan\x18\n \x01(\x0b\x32\x0b.SysJobPlan\"k\n\nSysMowInfo\x12\x13\n\x0b\x64\x65viceState\x18\x01 \x01(\x05\x12\x0e\n\x06\x62\x61tVal\x18\x02 \x01(\x05\x12\x13\n\x0bknifeHeight\x18\x03 \x01(\x05\x12\x11\n\tRTKstatus\x18\x04 \x01(\x05\x12\x10\n\x08RTKstars\x18\x05 \x01(\x05\";\n\x0eSysOptiLineAck\x12\x13\n\x0bresponesCmd\x18\x01 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x02 \x01(\x05\"5\n\nSysCommCmd\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\"H\n\x15SysUploadFileProgress\x12\r\n\x05\x62izId\x18\x01 \x01(\t\x12\x0e\n\x06result\x18\x02 \x01(\x05\x12\x10\n\x08progress\x18\x03 \x01(\x05\"\x1f\n\x0cSysErrorCode\x12\x0f\n\x07\x63ode_no\x18\x01 \x01(\x05\"\x1e\n\tSysBorder\x12\x11\n\tborderval\x18\x01 \x01(\x05\"*\n\x10SysPlanJobStatus\x12\x16\n\x0eplanjob_status\x18\x01 \x01(\x05\"=\n\x0fSysKnifeControl\x12\x14\n\x0cknife_status\x18\x01 \x01(\x05\x12\x14\n\x0cknife_height\x18\x02 \x01(\x05\"+\n\x14SysResetSystemStatus\x12\x13\n\x0breset_staus\x18\x01 \x01(\x05\"C\n\x1bSysResetBladeUsedTimeStatus\x12$\n\x1creset_blade_used_time_status\x18\x01 \x01(\x05\"\x8a\x01\n\rTimeCtrlLight\x12\x0f\n\x07operate\x18\x01 \x01(\x05\x12\x0e\n\x06\x65nable\x18\x02 \x01(\x05\x12\x12\n\nstart_hour\x18\x03 \x01(\x05\x12\x11\n\tstart_min\x18\x04 \x01(\x05\x12\x10\n\x08\x65nd_hour\x18\x05 \x01(\x05\x12\x0f\n\x07\x65nd_min\x18\x06 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x07 \x01(\x05\"3\n\x10vision_point_msg\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"\\\n\x15vision_point_info_msg\x12\r\n\x05label\x18\x01 \x01(\x05\x12\x0b\n\x03num\x18\x02 \x01(\x05\x12\'\n\x0cvision_point\x18\x03 \x03(\x0b\x32\x11.vision_point_msg\"\x9a\x01\n\x13vio_to_app_info_msg\x12\t\n\x01x\x18\x01 \x01(\x01\x12\t\n\x01y\x18\x02 \x01(\x01\x12\x0f\n\x07heading\x18\x03 \x01(\x01\x12\x11\n\tvio_state\x18\x04 \x01(\x05\x12\x12\n\nbrightness\x18\x05 \x01(\x05\x12\x1a\n\x12\x64\x65tect_feature_num\x18\x06 \x01(\x05\x12\x19\n\x11track_feature_num\x18\x07 \x01(\x05\"1\n\x14vision_statistic_msg\x12\x0c\n\x04mean\x18\x01 \x01(\x02\x12\x0b\n\x03var\x18\x02 \x01(\x02\"m\n\x19vision_statistic_info_msg\x12\x11\n\ttimestamp\x18\x01 \x01(\x01\x12\x0b\n\x03num\x18\x02 \x01(\x05\x12\x30\n\x11vision_statistics\x18\x03 \x03(\x0b\x32\x15.vision_statistic_msg\"\xd3\x01\n\x1asystemRapidStateTunnel_msg\x12\x18\n\x10rapid_state_data\x18\x01 \x03(\x03\x12\x31\n\x11vision_point_info\x18\x02 \x03(\x0b\x32\x16.vision_point_info_msg\x12-\n\x0fvio_to_app_info\x18\x03 \x01(\x0b\x32\x14.vio_to_app_info_msg\x12\x39\n\x15vision_statistic_info\x18\x04 \x01(\x0b\x32\x1a.vision_statistic_info_msg\"4\n\x19systemTardStateTunnel_msg\x12\x17\n\x0ftard_state_data\x18\x01 \x03(\x03\".\n\x13systemUpdateBuf_msg\x12\x17\n\x0fupdate_buf_data\x18\x01 \x03(\x03\"\x9e\x01\n\x0fSysOffChipFlash\x12\x16\n\x02op\x18\x01 \x01(\x0e\x32\n.Operation\x12\x16\n\x02id\x18\x02 \x01(\x0e\x32\n.OffPartId\x12\x12\n\nstart_addr\x18\x03 \x01(\r\x12\x0e\n\x06offset\x18\x04 \x01(\r\x12\x0e\n\x06length\x18\x05 \x01(\x05\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\x0c\x12\x0c\n\x04\x63ode\x18\x07 \x01(\x05\x12\x0b\n\x03msg\x18\x08 \x01(\t\"-\n\x14systemTmpCycleTx_msg\x12\x15\n\rcycle_tx_data\x18\x01 \x03(\x03\"%\n\nLoraCfgReq\x12\n\n\x02op\x18\x01 \x01(\x05\x12\x0b\n\x03\x63\x66g\x18\x02 \x01(\t\"F\n\nLoraCfgRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\n\n\x02op\x18\x02 \x01(\x05\x12\x0b\n\x03\x63\x66g\x18\x03 \x01(\t\x12\x0f\n\x07\x66\x61\x63_cfg\x18\x04 \x01(\t\">\n\x0bmod_fw_info\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x10\n\x08identify\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\"L\n\x0e\x64\x65vice_fw_info\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x19\n\x03mod\x18\x03 \x03(\x0b\x32\x0c.mod_fw_info\"@\n\x11mow_to_app_info_t\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x0b\n\x03\x63md\x18\x02 \x01(\x05\x12\x10\n\x08mow_data\x18\x03 \x03(\x05\"a\n\x1a\x64\x65vice_product_type_info_t\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x19\n\x11main_product_type\x18\x02 \x01(\t\x12\x18\n\x10sub_product_type\x18\x03 \x01(\t\"P\n\x0fQCAppTestExcept\x12\x13\n\x0b\x65xcept_type\x18\x01 \x01(\t\x12(\n\nconditions\x18\x02 \x03(\x0b\x32\x14.QCAppTestConditions\"t\n\x13QCAppTestConditions\x12\x11\n\tcond_type\x18\x01 \x01(\t\x12\x0f\n\x07int_val\x18\x02 \x01(\x05\x12\x11\n\tfloat_val\x18\x03 \x01(\x02\x12\x12\n\ndouble_val\x18\x04 \x01(\x01\x12\x12\n\nstring_val\x18\x05 \x01(\t\"\x99\x01\n\x19mow_to_app_qctools_info_t\x12\x1a\n\x04type\x18\x01 \x01(\x0e\x32\x0c.QCAppTestId\x12\x16\n\x0etimeOfDuration\x18\x02 \x01(\x05\x12\x0e\n\x06result\x18\x03 \x01(\x05\x12\x16\n\x0eresult_details\x18\x04 \x01(\t\x12 \n\x06\x65xcept\x18\x05 \x03(\x0b\x32\x10.QCAppTestExcept\"O\n\x16mCtrlSimulationCmdData\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\"7\n\x1c\x61pp_to_dev_get_mqtt_config_t\x12\x17\n\x0fget_mqtt_config\x18\x01 \x01(\x05\"H\n\x1c\x64\x65v_to_app_get_mqtt_config_t\x12\x12\n\nrtk_status\x18\x01 \x01(\x05\x12\x14\n\x0crtk_base_num\x18\x02 \x01(\t\"t\n\x19\x61pp_to_dev_set_mqtt_rtk_t\x12$\n\x0cset_rtk_mode\x18\x01 \x01(\x0e\x32\x0e.rtk_used_type\x12\x16\n\x0estop_nrtk_flag\x18\x02 \x01(\x05\x12\x19\n\x11set_nrtk_net_mode\x18\x03 \x01(\x05\"7\n\x19\x64\x65v_to_app_set_mqtt_rtk_t\x12\x1a\n\x12set_rtk_mode_error\x18\x01 \x01(\x05\"\x8f\x01\n\x08rpt_lora\x12\x16\n\x0epair_code_scan\x18\x01 \x01(\x05\x12\x19\n\x11pair_code_channel\x18\x02 \x01(\x05\x12\x17\n\x0fpair_code_locid\x18\x03 \x01(\x05\x12\x17\n\x0fpair_code_netid\x18\x04 \x01(\x05\x12\x1e\n\x16lora_connection_status\x18\x05 \x01(\x05\"\xd4\x01\n\x10mqtt_rtk_connect\x12\"\n\nrtk_switch\x18\x01 \x01(\x0e\x32\x0e.rtk_used_type\x12\x13\n\x0brtk_channel\x18\x02 \x01(\x05\x12\x14\n\x0crtk_base_num\x18\x03 \x01(\t\x12\x10\n\x08latitude\x18\x04 \x01(\x01\x12\x11\n\tlongitude\x18\x05 \x01(\x01\x12\x1f\n\x17nrtk_map_convert_status\x18\x06 \x01(\x05\x12\x15\n\rnrtk_net_mode\x18\x07 \x01(\x05\x12\x14\n\x0cnew_rtk_mode\x18\x08 \x01(\x05\"\x86\x01\n\tpos_score\x12\x13\n\x0brover_score\x18\x01 \x01(\r\x12\x13\n\x0brover_level\x18\x02 \x01(\r\x12\x12\n\nbase_score\x18\x03 \x01(\r\x12\x12\n\nbase_level\x18\x04 \x01(\r\x12\x12\n\nbase_moved\x18\x05 \x01(\r\x12\x13\n\x0b\x62\x61se_moving\x18\x06 \x01(\r\"\xbb\x02\n\x07rpt_rtk\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x11\n\tpos_level\x18\x02 \x01(\x05\x12\x11\n\tgps_stars\x18\x03 \x01(\x05\x12\x0b\n\x03\x61ge\x18\x04 \x01(\x05\x12\x0f\n\x07lat_std\x18\x05 \x01(\x05\x12\x0f\n\x07lon_std\x18\x06 \x01(\x05\x12\x10\n\x08l2_stars\x18\x07 \x01(\x05\x12\x12\n\ndis_status\x18\x08 \x01(\x03\x12\x17\n\x0ftop4_total_mean\x18\t \x01(\x03\x12\x15\n\rco_view_stars\x18\n \x01(\x05\x12\r\n\x05reset\x18\x0b \x01(\x05\x12\x1c\n\tlora_info\x18\x0c \x01(\x0b\x32\t.rpt_lora\x12(\n\rmqtt_rtk_info\x18\r \x01(\x0b\x32\x11.mqtt_rtk_connect\x12\x1e\n\nscore_info\x18\x0e \x01(\x0b\x32\n.pos_score\"\x86\x01\n\x10rpt_dev_location\x12\x12\n\nreal_pos_x\x18\x01 \x01(\x05\x12\x12\n\nreal_pos_y\x18\x02 \x01(\x05\x12\x13\n\x0breal_toward\x18\x03 \x01(\x05\x12\x10\n\x08pos_type\x18\x04 \x01(\x05\x12\x11\n\tzone_hash\x18\x05 \x01(\x03\x12\x10\n\x08\x62ol_hash\x18\x06 \x01(\x03\"4\n\x13vio_survival_info_t\x12\x1d\n\x15vio_survival_distance\x18\x01 \x01(\x02\";\n\x12\x63ollector_status_t\x12%\n\x1d\x63ollector_installation_status\x18\x01 \x01(\x05\"\"\n\x0clock_state_t\x12\x12\n\nlock_state\x18\x01 \x01(\r\"\x8b\x03\n\x0erpt_dev_status\x12\x12\n\nsys_status\x18\x01 \x01(\x05\x12\x14\n\x0c\x63harge_state\x18\x02 \x01(\x05\x12\x13\n\x0b\x62\x61ttery_val\x18\x03 \x01(\x05\x12\x15\n\rsensor_status\x18\x04 \x01(\x05\x12\x13\n\x0blast_status\x18\x05 \x01(\x05\x12\x16\n\x0esys_time_stamp\x18\x06 \x01(\x03\x12\x14\n\x0cvslam_status\x18\x07 \x01(\x05\x12\x1c\n\tmnet_info\x18\x08 \x01(\x0b\x32\t.MnetInfo\x12/\n\x11vio_survival_info\x18\t \x01(\x0b\x32\x14.vio_survival_info_t\x12-\n\x10\x63ollector_status\x18\n \x01(\x0b\x32\x13.collector_status_t\x12!\n\nlock_state\x18\x0b \x01(\x0b\x32\r.lock_state_t\x12\x19\n\x11self_check_status\x18\x0c \x01(\r\x12$\n\x08\x66pv_info\x18\r \x01(\x0b\x32\x12.fpv_to_app_info_t\"-\n\tnet_speed\x12\x10\n\x08\x64ownload\x18\x01 \x01(\r\x12\x0e\n\x06upload\x18\x02 \x01(\r\"\xce\x02\n\x12rpt_connect_status\x12\x14\n\x0c\x63onnect_type\x18\x01 \x01(\x05\x12\x10\n\x08\x62le_rssi\x18\x02 \x01(\x05\x12\x11\n\twifi_rssi\x18\x03 \x01(\x05\x12\x11\n\tlink_type\x18\x04 \x01(\x05\x12\x11\n\tmnet_rssi\x18\x05 \x01(\x05\x12\x11\n\tmnet_inet\x18\x06 \x01(\x05\x12 \n\x08used_net\x18\x07 \x01(\x0e\x32\x0e.net_used_type\x12\x1a\n\x08mnet_cfg\x18\x08 \x01(\x0b\x32\x08.MnetCfg\x12!\n\rdev_net_speed\x18\t \x01(\x0b\x32\n.net_speed\x12\x17\n\x0fiot_wifi_report\x18\n \x01(\x08\x12\x16\n\x0eiot_con_status\x18\x0b \x01(\x05\x12\x17\n\x0fwifi_con_status\x18\x0c \x01(\x05\x12\x19\n\x11wifi_is_available\x18\r \x01(\x05\",\n\x13nav_heading_state_t\x12\x15\n\rheading_state\x18\x01 \x01(\r\"\xfe\x03\n\x08rpt_work\x12\x0c\n\x04plan\x18\x01 \x01(\x05\x12\x11\n\tpath_hash\x18\x02 \x01(\x03\x12\x10\n\x08progress\x18\x03 \x01(\x05\x12\x0c\n\x04\x61rea\x18\x04 \x01(\x05\x12\x0f\n\x07\x62p_info\x18\x05 \x01(\x05\x12\x0f\n\x07\x62p_hash\x18\x06 \x01(\x03\x12\x10\n\x08\x62p_pos_x\x18\x07 \x01(\x05\x12\x10\n\x08\x62p_pos_y\x18\x08 \x01(\x05\x12\x15\n\rreal_path_num\x18\t \x01(\x03\x12\x12\n\npath_pos_x\x18\n \x01(\x05\x12\x12\n\npath_pos_y\x18\x0b \x01(\x05\x12\x14\n\x0cub_zone_hash\x18\x0c \x01(\x03\x12\x14\n\x0cub_path_hash\x18\r \x01(\x03\x12\x15\n\rinit_cfg_hash\x18\x0e \x01(\x03\x12\x15\n\rub_ecode_hash\x18\x0f \x01(\x03\x12\x14\n\x0cnav_run_mode\x18\x10 \x01(\x05\x12\x18\n\x10test_mode_status\x18\x11 \x01(\x03\x12\x15\n\rman_run_speed\x18\x12 \x01(\x05\x12\x17\n\x0fnav_edit_status\x18\x13 \x01(\x05\x12\x14\n\x0cknife_height\x18\x14 \x01(\x05\x12/\n\x11nav_heading_state\x18\x15 \x01(\x0b\x32\x14.nav_heading_state_t\x12\x15\n\rcutter_offset\x18\x16 \x01(\x02\x12\x14\n\x0c\x63utter_width\x18\x17 \x01(\x02\"C\n\nblade_used\x12\x17\n\x0f\x62lade_used_time\x18\x01 \x01(\x05\x12\x1c\n\x14\x62lade_used_warn_time\x18\x02 \x01(\x05\"=\n\x1duser_set_blade_used_warn_time\x12\x1c\n\x14\x62lade_used_warn_time\x18\x01 \x01(\x05\"l\n\x0crpt_maintain\x12\x0f\n\x07mileage\x18\x01 \x01(\x03\x12\x11\n\twork_time\x18\x02 \x01(\x05\x12\x12\n\nbat_cycles\x18\x03 \x01(\x05\x12$\n\x0f\x62lade_used_time\x18\x04 \x01(\x0b\x32\x0b.blade_used\"[\n\x11\x66pv_to_app_info_t\x12\x10\n\x08\x66pv_flag\x18\x01 \x01(\x05\x12\x16\n\x0ewifi_available\x18\x02 \x01(\x05\x12\x1c\n\x14mobile_net_available\x18\x03 \x01(\x05\"\xa4\x01\n\x14rpt_basestation_info\x12\x11\n\tver_major\x18\x01 \x01(\r\x12\x11\n\tver_minor\x18\x02 \x01(\r\x12\x11\n\tver_patch\x18\x03 \x01(\r\x12\x11\n\tver_build\x18\x04 \x01(\r\x12\x1a\n\x12\x62\x61sestation_status\x18\x05 \x01(\r\x12$\n\x1c\x63onnect_status_since_poweron\x18\x06 \x01(\r\"\x8f\x01\n\x0freport_info_cfg\x12\x15\n\x03\x61\x63t\x18\x01 \x01(\x0e\x32\x08.rpt_act\x12\x0f\n\x07timeout\x18\x02 \x01(\x05\x12\x0e\n\x06period\x18\x03 \x01(\x05\x12\x18\n\x10no_change_period\x18\x04 \x01(\x05\x12\r\n\x05\x63ount\x18\x05 \x01(\x05\x12\x1b\n\x03sub\x18\x06 \x03(\x0e\x32\x0e.rpt_info_type\"\xed\x03\n\x10report_info_data\x12$\n\x07\x63onnect\x18\x01 \x01(\x0b\x32\x13.rpt_connect_status\x12\x1c\n\x03\x64\x65v\x18\x02 \x01(\x0b\x32\x0f.rpt_dev_status\x12\x15\n\x03rtk\x18\x03 \x01(\x0b\x32\x08.rpt_rtk\x12$\n\tlocations\x18\x04 \x03(\x0b\x32\x11.rpt_dev_location\x12\x17\n\x04work\x18\x05 \x01(\x0b\x32\t.rpt_work\x12 \n\x07\x66w_info\x18\x06 \x01(\x0b\x32\x0f.device_fw_info\x12\x1f\n\x08maintain\x18\x07 \x01(\x0b\x32\r.rpt_maintain\x12\x31\n\x11vision_point_info\x18\x08 \x03(\x0b\x32\x16.vision_point_info_msg\x12-\n\x0fvio_to_app_info\x18\t \x01(\x0b\x32\x14.vio_to_app_info_msg\x12\x39\n\x15vision_statistic_info\x18\n \x01(\x0b\x32\x1a.vision_statistic_info_msg\x12/\n\x10\x62\x61sestation_info\x18\x0b \x01(\x0b\x32\x15.rpt_basestation_info\x12.\n\x15\x63utter_work_mode_info\x18\x0c \x01(\x0b\x32\x0f.rpt_cutter_rpm\"U\n\x15\x64\x65\x62ug_common_report_t\x12\x0e\n\x06m_name\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x12\x10\n\x08gen_time\x18\x04 \x01(\x03\"W\n\x17\x64\x65\x62ug_errocode_report_t\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\r\n\x05mname\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x12\x10\n\x08gen_time\x18\x04 \x01(\x03\" \n\x0e\x64\x65\x62ug_enable_t\x12\x0e\n\x06\x65nbale\x18\x01 \x01(\x05\"^\n\x17\x64\x65\x62ug_res_cfg_ability_t\x12\x12\n\ntotal_keys\x18\x01 \x01(\x05\x12\x12\n\ncur_key_id\x18\x02 \x01(\x05\x12\x0c\n\x04keys\x18\x03 \x01(\t\x12\r\n\x05value\x18\x04 \x01(\t\".\n\x10\x64\x65\x62ug_cfg_read_t\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x11\x64\x65\x62ug_cfg_write_t\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xa7\x01\n\nmsgbus_pkt\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x13\n\x0btypeCommand\x18\x02 \x01(\x05\x12\x14\n\x0crecvDeviceId\x18\x03 \x01(\x05\x12\x14\n\x0csendDeviceId\x18\x04 \x01(\x05\x12\x12\n\ndataLength\x18\x05 \x01(\x05\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\t\x12\x0c\n\x04\x63trl\x18\x07 \x01(\x05\x12\x0c\n\x04\x66lag\x18\x08 \x01(\x05\x12\x0c\n\x04seqs\x18\t \x01(\x05\"\xb1\x01\n\x13response_set_mode_t\x12\x0e\n\x06statue\x18\x01 \x01(\x05\x12\x15\n\rset_work_mode\x18\x02 \x01(\x05\x12\x15\n\rcur_work_mode\x18\x03 \x01(\x05\x12\x17\n\x0fstart_work_time\x18\x04 \x01(\x03\x12\x15\n\rend_work_time\x18\x05 \x01(\x03\x12\x15\n\rinterruptflag\x18\x06 \x01(\x05\x12\x15\n\rcur_work_time\x18\x07 \x01(\x05\"I\n\x0erpt_cutter_rpm\x12\x1b\n\x13\x63urrent_cutter_mode\x18\x01 \x01(\x05\x12\x1a\n\x12\x63urrent_cutter_rpm\x18\x02 \x01(\x05\"\x8d\x02\n\x0c\x64\x65v_statue_t\x12\x12\n\nsys_status\x18\x01 \x01(\x05\x12\x15\n\rcharge_status\x18\x02 \x01(\x05\x12\x0f\n\x07\x62\x61t_val\x18\x03 \x01(\x05\x12\x14\n\x0cwheel_status\x18\x04 \x01(\x05\x12\x13\n\x0bpump_status\x18\x05 \x01(\x05\x12\x11\n\twork_mode\x18\x06 \x01(\x05\x12\r\n\x05model\x18\x07 \x01(\x05\x12\x10\n\x08\x62le_rssi\x18\x08 \x01(\x05\x12\x11\n\twifi_rssi\x18\t \x01(\x05\x12\x1b\n\x13wifi_connect_status\x18\n \x01(\x05\x12\x1a\n\x12iot_connect_status\x18\x0b \x01(\x05\x12\x16\n\x0ewifi_available\x18\x0c \x01(\x05\"2\n\rreport_info_t\x12!\n\ndev_status\x18\x01 \x01(\x0b\x32\r.dev_statue_t\" \n\x0bwork_mode_t\x12\x11\n\twork_mode\x18\x01 \x01(\x05\"Q\n\x0especial_mode_t\x12\x12\n\nstair_mode\x18\x01 \x01(\x05\x12\x14\n\x0cviolent_mode\x18\x02 \x01(\x05\x12\x15\n\rberthing_mode\x18\x03 \x01(\x05\"(\n\x11set_peripherals_t\x12\x13\n\x0b\x62uzz_enable\x18\x01 \x01(\x05\"K\n\x10\x64\x65\x62ug_sun_time_t\x12\x0e\n\x06subCmd\x18\x01 \x01(\x05\x12\x13\n\x0bsunRiseTime\x18\x02 \x01(\x05\x12\x12\n\nsunSetTime\x18\x03 \x01(\x05\"l\n\x12remote_reset_req_t\x12\r\n\x05magic\x18\x01 \x01(\x05\x12\r\n\x05\x62izid\x18\x02 \x01(\x03\x12\x12\n\nreset_mode\x18\x03 \x01(\x05\x12\x13\n\x0b\x66orce_reset\x18\x04 \x01(\x05\x12\x0f\n\x07\x61\x63\x63ount\x18\x05 \x01(\x03\"S\n\x12remote_reset_rsp_t\x12\r\n\x05magic\x18\x01 \x01(\x05\x12\r\n\x05\x62izid\x18\x02 \x01(\x03\x12\x1f\n\x06result\x18\x03 \x01(\x0e\x32\x0f.Command_Result\"\xb1\x16\n\x07MctlSys\x12\"\n\rtoapp_batinfo\x18\x01 \x01(\x0b\x32\t.SysBatUpH\x00\x12)\n\x10toapp_work_state\x18\x02 \x01(\x0b\x32\r.SysWorkStateH\x00\x12*\n\x0ftodev_time_zone\x18\x03 \x01(\x0b\x32\x0f.SysSetTimeZoneH\x00\x12*\n\x0ftodev_data_time\x18\x04 \x01(\x0b\x32\x0f.SysSetDateTimeH\x00\x12\x1f\n\x08job_plan\x18\x06 \x01(\x0b\x32\x0b.SysJobPlanH\x00\x12(\n\x0etoapp_err_code\x18\x07 \x01(\x0b\x32\x0e.SysDevErrCodeH\x00\x12.\n\x13todev_job_plan_time\x18\n \x01(\x0b\x32\x0f.SysJobPlanTimeH\x00\x12%\n\x0etoapp_mow_info\x18\x0b \x01(\x0b\x32\x0b.SysMowInfoH\x00\x12&\n\x0f\x62idire_comm_cmd\x18\x0c \x01(\x0b\x32\x0b.SysCommCmdH\x00\x12\x16\n\x0cplan_job_del\x18\x0e \x01(\x03H\x00\x12\x1c\n\x06\x62order\x18\x0f \x01(\x0b\x32\n.SysBorderH\x00\x12.\n\x11toapp_plan_status\x18\x12 \x01(\x0b\x32\x11.SysPlanJobStatusH\x00\x12\x34\n\x12toapp_ul_fprogress\x18\x13 \x01(\x0b\x32\x16.SysUploadFileProgressH\x00\x12*\n\x10todev_deljobplan\x18\x14 \x01(\x0b\x32\x0e.SysDelJobPlanH\x00\x12\x1b\n\x11todev_mow_info_up\x18\x15 \x01(\x05H\x00\x12,\n\x10todev_knife_ctrl\x18\x16 \x01(\x0b\x32\x10.SysKnifeControlH\x00\x12\x1c\n\x12todev_reset_system\x18\x17 \x01(\x05H\x00\x12:\n\x19todev_reset_system_status\x18\x18 \x01(\x0b\x32\x15.SysResetSystemStatusH\x00\x12=\n\x16systemRapidStateTunnel\x18\x19 \x01(\x0b\x32\x1b.systemRapidStateTunnel_msgH\x00\x12;\n\x15systemTardStateTunnel\x18\x1a \x01(\x0b\x32\x1a.systemTardStateTunnel_msgH\x00\x12/\n\x0fsystemUpdateBuf\x18\x1b \x01(\x0b\x32\x14.systemUpdateBuf_msgH\x00\x12/\n\x15todev_time_ctrl_light\x18\x1c \x01(\x0b\x32\x0e.TimeCtrlLightH\x00\x12\x31\n\x10systemTmpCycleTx\x18\x1d \x01(\x0b\x32\x15.systemTmpCycleTx_msgH\x00\x12\x30\n\x14todev_off_chip_flash\x18\x1e \x01(\x0b\x32\x10.SysOffChipFlashH\x00\x12\x1f\n\x15todev_get_dev_fw_info\x18\x1f \x01(\x05H\x00\x12,\n\x11toapp_dev_fw_info\x18 \x01(\x0b\x32\x0f.device_fw_infoH\x00\x12)\n\x12todev_lora_cfg_req\x18! \x01(\x0b\x32\x0b.LoraCfgReqH\x00\x12)\n\x12toapp_lora_cfg_rsp\x18\" \x01(\x0b\x32\x0b.LoraCfgRspH\x00\x12-\n\x0fmow_to_app_info\x18# \x01(\x0b\x32\x12.mow_to_app_info_tH\x00\x12?\n\x18\x64\x65vice_product_type_info\x18$ \x01(\x0b\x32\x1b.device_product_type_info_tH\x00\x12=\n\x17mow_to_app_qctools_info\x18% \x01(\x0b\x32\x1a.mow_to_app_qctools_info_tH\x00\x12,\n\x10todev_report_cfg\x18& \x01(\x0b\x32\x10.report_info_cfgH\x00\x12.\n\x11toapp_report_data\x18\' \x01(\x0b\x32\x11.report_info_dataH\x00\x12\x31\n\x0esimulation_cmd\x18* \x01(\x0b\x32\x17.mCtrlSimulationCmdDataH\x00\x12G\n\x1e\x61pp_to_dev_get_mqtt_config_msg\x18+ \x01(\x0b\x32\x1d.app_to_dev_get_mqtt_config_tH\x00\x12G\n\x1e\x64\x65v_to_app_get_mqtt_config_msg\x18, \x01(\x0b\x32\x1d.dev_to_app_get_mqtt_config_tH\x00\x12\x41\n\x1b\x61pp_to_dev_set_mqtt_rtk_msg\x18- \x01(\x0b\x32\x1a.app_to_dev_set_mqtt_rtk_tH\x00\x12\x41\n\x1b\x64\x65v_to_app_set_mqtt_rtk_msg\x18. \x01(\x0b\x32\x1a.dev_to_app_set_mqtt_rtk_tH\x00\x12%\n\x1btodev_reset_blade_used_time\x18/ \x01(\x05H\x00\x12J\n\"todev_reset_blade_used_time_status\x18\x30 \x01(\x0b\x32\x1c.SysResetBladeUsedTimeStatusH\x00\x12#\n\x19todev_factor_reset_system\x18\x31 \x01(\x05H\x00\x12>\n\x14\x62lade_used_warn_time\x18\x32 \x01(\x0b\x32\x1e.user_set_blade_used_warn_timeH\x00\x12\x35\n\x13\x64\x65\x62ug_common_report\x18\x33 \x01(\x0b\x32\x16.debug_common_report_tH\x00\x12\x39\n\x15\x64\x65\x62ug_errocode_report\x18\x34 \x01(\x0b\x32\x18.debug_errocode_report_tH\x00\x12\'\n\x0c\x64\x65\x62ug_enable\x18\x35 \x01(\x0b\x32\x0f.debug_enable_tH\x00\x12+\n\x0e\x64\x65\x62ug_cfg_read\x18\x36 \x01(\x0b\x32\x11.debug_cfg_read_tH\x00\x12-\n\x0f\x64\x65\x62ug_cfg_write\x18\x37 \x01(\x0b\x32\x12.debug_cfg_write_tH\x00\x12\x39\n\x15\x64\x65\x62ug_res_cfg_ability\x18\x38 \x01(\x0b\x32\x18.debug_res_cfg_ability_tH\x00\x12$\n\rto_dev_msgbus\x18\x39 \x01(\x0b\x32\x0b.msgbus_pktH\x00\x12$\n\rto_app_msgbus\x18: \x01(\x0b\x32\x0b.msgbus_pktH\x00\x12\x31\n\x11response_set_mode\x18; \x01(\x0b\x32\x14.response_set_mode_tH\x00\x12%\n\x0breport_info\x18< \x01(\x0b\x32\x0e.report_info_tH\x00\x12%\n\rset_work_mode\x18= \x01(\x0b\x32\x0c.work_mode_tH\x00\x12+\n\x10set_special_mode\x18> \x01(\x0b\x32\x0f.special_mode_tH\x00\x12-\n\x0fset_peripherals\x18? \x01(\x0b\x32\x12.set_peripherals_tH\x00\x12\x30\n\x13to_dev_set_sun_time\x18@ \x01(\x0b\x32\x11.debug_sun_time_tH\x00\x12\x32\n\x13to_dev_remote_reset\x18\x41 \x01(\x0b\x32\x13.remote_reset_req_tH\x00\x12\x32\n\x13to_app_remote_reset\x18\x42 \x01(\x0b\x32\x13.remote_reset_rsp_tH\x00\x12.\n\x13\x63urrent_cutter_mode\x18\x43 \x01(\x0b\x32\x0f.rpt_cutter_rpmH\x00\x42\x0b\n\tSubSysMsg*+\n\tOperation\x12\t\n\x05WRITE\x10\x00\x12\x08\n\x04READ\x10\x01\x12\t\n\x05\x45RASE\x10\x02*\x8d\x02\n\tOffPartId\x12\x13\n\x0fOFF_PART_DL_IMG\x10\x00\x12\x19\n\x15OFF_PART_UPDINFO_BACK\x10\x01\x12\x14\n\x10OFF_PART_UPDINFO\x10\x02\x12\x13\n\x0fOFF_PART_NAKEDB\x10\x03\x12\x14\n\x10OFF_PART_FLASHDB\x10\x04\x12\x18\n\x14OFF_PART_UPD_APP_IMG\x10\x05\x12\x18\n\x14OFF_PART_UPD_BMS_IMG\x10\x06\x12\x18\n\x14OFF_PART_UPD_TMP_IMG\x10\x07\x12\x15\n\x11OFF_PART_DEV_INFO\x10\x08\x12\x18\n\x14OFF_PART_NAKEDB_BACK\x10\t\x12\x10\n\x0cOFF_PART_MAX\x10\n*\xe5\x08\n\x0bQCAppTestId\x12!\n\x1dQC_APP_ITEM_ON_CHARGESATSTION\x10\x00\x12\x1a\n\x16QC_APP_TEST_X3_SPEAKER\x10\x01\x12)\n%QC_APP_TEST_STATIC_OBSTACLE_DETECTION\x10\x02\x12\"\n\x1eQC_APP_TEST_CHARGESTATION_TEMP\x10\x03\x12\x13\n\x0fQC_APP_ITEM_KEY\x10\x04\x12 \n\x1cQC_APP_TEST_BUMPER_FRONTLEFT\x10\x05\x12!\n\x1dQC_APP_TEST_BUMPER_FRONTRIGHT\x10\x06\x12\x14\n\x10QC_APP_TEST_STOP\x10\x07\x12\x16\n\x12QC_APP_TEST_UNLOCK\x10\x08\x12\x14\n\x10QC_APP_TEST_BUZZ\x10\t\x12\x14\n\x10QC_APP_TEST_LIFT\x10\n\x12\x16\n\x12QC_APP_ITEM_SENEOR\x10\x0b\x12\x19\n\x15QC_APP_TEST_ROLL_LEFT\x10\x0c\x12\x1a\n\x16QC_APP_TEST_ROLL_RIGHT\x10\r\x12\x1d\n\x19QC_APP_TEST_ULTRA_UNCOVER\x10\x0e\x12\x1c\n\x18QC_APP_TEST_ULTRA0_COVER\x10\x0f\x12\x1c\n\x18QC_APP_TEST_ULTRA1_COVER\x10\x10\x12\x1c\n\x18QC_APP_TEST_ULTRA2_COVER\x10\x11\x12\x14\n\x10QC_APP_TEST_RAIN\x10\x12\x12\x12\n\x0eQC_APP_ITEM_SQ\x10\x13\x12\x18\n\x14QC_APP_TEST_BLE_RSSI\x10\x14\x12 \n\x1cQC_APP_TEST_SATELLITES_ROVER\x10\x15\x12)\n%QC_APP_TEST_SATELLITES_REF_STATION_L1\x10\x16\x12)\n%QC_APP_TEST_SATELLITES_REF_STATION_L2\x10\x17\x12&\n\"QC_APP_TEST_SATELLITES_COMMON_VIEW\x10\x18\x12\x19\n\x15QC_APP_TEST_CNO_ROVER\x10\x19\x12\x1f\n\x1bQC_APP_TEST_CNO_REF_STATION\x10\x1a\x12\'\n#QC_APP_TEST_REF_STATION_LINK_STATUS\x10\x1b\x12\x1e\n\x1aQC_APP_TEST_LOCATION_STATE\x10\x1c\x12\x1d\n\x19QC_APP_TEST_CHARGE_STATUS\x10\x1d\x12\x1e\n\x1aQC_APP_TEST_PPS_EXTI_COUNT\x10\x1e\x12\x18\n\x14QC_APP_TEST_SAFE_KEY\x10\x32\x12\x19\n\x15QC_APP_TEST_LORA_RSSI\x10<\x12\x1a\n\x16QC_APP_TEST_WIPER_TEST\x10P\x12\x1d\n\x19QC_APP_TEST_HEADLAMP_TEST\x10Q\x12\x1f\n\x1bQC_APP_TEST_COMPLETE_SIGNAL\x10\x63\x12\x13\n\x0fQC_APP_TEST_MAX\x10\x64*L\n\rrtk_used_type\x12\x11\n\rRTK_USED_LORA\x10\x00\x12\x15\n\x11RTK_USED_INTERNET\x10\x01\x12\x11\n\rRTK_USED_NRTK\x10\x02*W\n\rnet_used_type\x12\x16\n\x12NET_USED_TYPE_NONE\x10\x00\x12\x16\n\x12NET_USED_TYPE_WIFI\x10\x01\x12\x16\n\x12NET_USED_TYPE_MNET\x10\x02*\xee\x01\n\rrpt_info_type\x12\x0f\n\x0bRIT_CONNECT\x10\x00\x12\x0f\n\x0bRIT_DEV_STA\x10\x01\x12\x0b\n\x07RIT_RTK\x10\x02\x12\x11\n\rRIT_DEV_LOCAL\x10\x03\x12\x0c\n\x08RIT_WORK\x10\x04\x12\x0f\n\x0bRIT_FW_INFO\x10\x05\x12\x10\n\x0cRIT_MAINTAIN\x10\x06\x12\x14\n\x10RIT_VISION_POINT\x10\x07\x12\x0b\n\x07RIT_VIO\x10\x08\x12\x18\n\x14RIT_VISION_STATISTIC\x10\t\x12\x18\n\x14RIT_BASESTATION_INFO\x10\n\x12\x13\n\x0fRIT_CUTTER_INFO\x10\x0b*4\n\x07rpt_act\x12\r\n\tRPT_START\x10\x00\x12\x0c\n\x08RPT_STOP\x10\x01\x12\x0c\n\x08RPT_KEEP\x10\x02*R\n\x0e\x43ommand_Result\x12\t\n\x05RS_OK\x10\x00\x12\x11\n\rRS_FAIL_MAGIC\x10\x01\x12\x0f\n\x0bRS_FAIL_OTA\x10\x02\x12\x11\n\rRS_FAIL_SLOPE\x10\x03\x62\x06proto3')
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!pymammotion/proto/mctrl_sys.proto\x1a\x1fpymammotion/proto/dev_net.proto\"\x1a\n\x08SysBatUp\x12\x0e\n\x06\x62\x61tVal\x18\x01 \x01(\x05\"Z\n\x0cSysWorkState\x12\x13\n\x0b\x64\x65viceState\x18\x01 \x01(\x05\x12\x13\n\x0b\x63hargeState\x18\x02 \x01(\x05\x12\x0e\n\x06\x63mHash\x18\x03 \x01(\x03\x12\x10\n\x08pathHash\x18\x04 \x01(\x03\"5\n\x0eSysSetTimeZone\x12\x11\n\ttimeStamp\x18\x01 \x01(\x05\x12\x10\n\x08timeArea\x18\x02 \x01(\x05\"\x9e\x01\n\x0eSysSetDateTime\x12\x0c\n\x04Year\x18\x01 \x01(\x05\x12\r\n\x05Month\x18\x02 \x01(\x05\x12\x0c\n\x04\x44\x61te\x18\x03 \x01(\x05\x12\x0c\n\x04Week\x18\x04 \x01(\x05\x12\r\n\x05Hours\x18\x05 \x01(\x05\x12\x0f\n\x07Minutes\x18\x06 \x01(\x05\x12\x0f\n\x07Seconds\x18\x07 \x01(\x05\x12\x10\n\x08timeZone\x18\x08 \x01(\x05\x12\x10\n\x08\x64\x61ylight\x18\t \x01(\x05\"V\n\nSysJobPlan\x12\r\n\x05jobId\x18\x01 \x01(\x03\x12\x0f\n\x07jobMode\x18\x02 \x01(\x05\x12\x13\n\x0brainTactics\x18\x03 \x01(\x05\x12\x13\n\x0bknifeHeight\x18\x04 \x01(\x05\"\"\n\rSysDevErrCode\x12\x11\n\terrorCode\x18\x01 \x01(\x05\"!\n\x0cSysBoardType\x12\x11\n\tboardType\x18\x01 \x01(\x05\"5\n\x0cSysSwVersion\x12\x11\n\tboardType\x18\x01 \x01(\x05\x12\x12\n\nversionLen\x18\x02 \x01(\x05\"1\n\rSysDelJobPlan\x12\x10\n\x08\x64\x65viceId\x18\x01 \x01(\t\x12\x0e\n\x06planId\x18\x02 \x01(\t\"\xec\x01\n\x0eSysJobPlanTime\x12\x0e\n\x06planId\x18\x01 \x01(\x03\x12\x16\n\x0estart_job_time\x18\x02 \x01(\x05\x12\x14\n\x0c\x65nd_job_time\x18\x03 \x01(\x05\x12\x13\n\x0btime_in_day\x18\x04 \x01(\x05\x12\x15\n\rjob_plan_mode\x18\x05 \x01(\x05\x12\x17\n\x0fjob_plan_enable\x18\x06 \x01(\x05\x12\x0f\n\x07weekDay\x18\x07 \x03(\x05\x12\x15\n\rtimeInWeekDay\x18\x08 \x03(\x05\x12\x10\n\x08\x65veryDay\x18\t \x01(\x05\x12\x1d\n\x08job_plan\x18\n \x01(\x0b\x32\x0b.SysJobPlan\"k\n\nSysMowInfo\x12\x13\n\x0b\x64\x65viceState\x18\x01 \x01(\x05\x12\x0e\n\x06\x62\x61tVal\x18\x02 \x01(\x05\x12\x13\n\x0bknifeHeight\x18\x03 \x01(\x05\x12\x11\n\tRTKstatus\x18\x04 \x01(\x05\x12\x10\n\x08RTKstars\x18\x05 \x01(\x05\";\n\x0eSysOptiLineAck\x12\x13\n\x0bresponesCmd\x18\x01 \x01(\x05\x12\x14\n\x0c\x63urrentFrame\x18\x02 \x01(\x05\"5\n\nSysCommCmd\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\"H\n\x15SysUploadFileProgress\x12\r\n\x05\x62izId\x18\x01 \x01(\t\x12\x0e\n\x06result\x18\x02 \x01(\x05\x12\x10\n\x08progress\x18\x03 \x01(\x05\"\x1f\n\x0cSysErrorCode\x12\x0f\n\x07\x63ode_no\x18\x01 \x01(\x05\"\x1e\n\tSysBorder\x12\x11\n\tborderval\x18\x01 \x01(\x05\"*\n\x10SysPlanJobStatus\x12\x16\n\x0eplanjob_status\x18\x01 \x01(\x05\"=\n\x0fSysKnifeControl\x12\x14\n\x0cknife_status\x18\x01 \x01(\x05\x12\x14\n\x0cknife_height\x18\x02 \x01(\x05\"+\n\x14SysResetSystemStatus\x12\x13\n\x0breset_staus\x18\x01 \x01(\x05\"C\n\x1bSysResetBladeUsedTimeStatus\x12$\n\x1creset_blade_used_time_status\x18\x01 \x01(\x05\"\x8a\x01\n\rTimeCtrlLight\x12\x0f\n\x07operate\x18\x01 \x01(\x05\x12\x0e\n\x06\x65nable\x18\x02 \x01(\x05\x12\x12\n\nstart_hour\x18\x03 \x01(\x05\x12\x11\n\tstart_min\x18\x04 \x01(\x05\x12\x10\n\x08\x65nd_hour\x18\x05 \x01(\x05\x12\x0f\n\x07\x65nd_min\x18\x06 \x01(\x05\x12\x0e\n\x06\x61\x63tion\x18\x07 \x01(\x05\"3\n\x10vision_point_msg\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"\\\n\x15vision_point_info_msg\x12\r\n\x05label\x18\x01 \x01(\x05\x12\x0b\n\x03num\x18\x02 \x01(\x05\x12\'\n\x0cvision_point\x18\x03 \x03(\x0b\x32\x11.vision_point_msg\"\x9a\x01\n\x13vio_to_app_info_msg\x12\t\n\x01x\x18\x01 \x01(\x01\x12\t\n\x01y\x18\x02 \x01(\x01\x12\x0f\n\x07heading\x18\x03 \x01(\x01\x12\x11\n\tvio_state\x18\x04 \x01(\x05\x12\x12\n\nbrightness\x18\x05 \x01(\x05\x12\x1a\n\x12\x64\x65tect_feature_num\x18\x06 \x01(\x05\x12\x19\n\x11track_feature_num\x18\x07 \x01(\x05\"1\n\x14vision_statistic_msg\x12\x0c\n\x04mean\x18\x01 \x01(\x02\x12\x0b\n\x03var\x18\x02 \x01(\x02\"m\n\x19vision_statistic_info_msg\x12\x11\n\ttimestamp\x18\x01 \x01(\x01\x12\x0b\n\x03num\x18\x02 \x01(\x05\x12\x30\n\x11vision_statistics\x18\x03 \x03(\x0b\x32\x15.vision_statistic_msg\"\xd3\x01\n\x1asystemRapidStateTunnel_msg\x12\x18\n\x10rapid_state_data\x18\x01 \x03(\x03\x12\x31\n\x11vision_point_info\x18\x02 \x03(\x0b\x32\x16.vision_point_info_msg\x12-\n\x0fvio_to_app_info\x18\x03 \x01(\x0b\x32\x14.vio_to_app_info_msg\x12\x39\n\x15vision_statistic_info\x18\x04 \x01(\x0b\x32\x1a.vision_statistic_info_msg\"4\n\x19systemTardStateTunnel_msg\x12\x17\n\x0ftard_state_data\x18\x01 \x03(\x03\".\n\x13systemUpdateBuf_msg\x12\x17\n\x0fupdate_buf_data\x18\x01 \x03(\x03\"\x9e\x01\n\x0fSysOffChipFlash\x12\x16\n\x02op\x18\x01 \x01(\x0e\x32\n.Operation\x12\x16\n\x02id\x18\x02 \x01(\x0e\x32\n.OffPartId\x12\x12\n\nstart_addr\x18\x03 \x01(\r\x12\x0e\n\x06offset\x18\x04 \x01(\r\x12\x0e\n\x06length\x18\x05 \x01(\x05\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\x0c\x12\x0c\n\x04\x63ode\x18\x07 \x01(\x05\x12\x0b\n\x03msg\x18\x08 \x01(\t\"-\n\x14systemTmpCycleTx_msg\x12\x15\n\rcycle_tx_data\x18\x01 \x03(\x03\"%\n\nLoraCfgReq\x12\n\n\x02op\x18\x01 \x01(\x05\x12\x0b\n\x03\x63\x66g\x18\x02 \x01(\t\"F\n\nLoraCfgRsp\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\n\n\x02op\x18\x02 \x01(\x05\x12\x0b\n\x03\x63\x66g\x18\x03 \x01(\t\x12\x0f\n\x07\x66\x61\x63_cfg\x18\x04 \x01(\x0c\">\n\x0bmod_fw_info\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x10\n\x08identify\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\"L\n\x0e\x64\x65vice_fw_info\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x19\n\x03mod\x18\x03 \x03(\x0b\x32\x0c.mod_fw_info\"@\n\x11mow_to_app_info_t\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x0b\n\x03\x63md\x18\x02 \x01(\x05\x12\x10\n\x08mow_data\x18\x03 \x03(\x05\"a\n\x1a\x64\x65vice_product_type_info_t\x12\x0e\n\x06result\x18\x01 \x01(\x05\x12\x19\n\x11main_product_type\x18\x02 \x01(\t\x12\x18\n\x10sub_product_type\x18\x03 \x01(\t\"P\n\x0fQCAppTestExcept\x12\x13\n\x0b\x65xcept_type\x18\x01 \x01(\t\x12(\n\nconditions\x18\x02 \x03(\x0b\x32\x14.QCAppTestConditions\"t\n\x13QCAppTestConditions\x12\x11\n\tcond_type\x18\x01 \x01(\t\x12\x0f\n\x07int_val\x18\x02 \x01(\x05\x12\x11\n\tfloat_val\x18\x03 \x01(\x02\x12\x12\n\ndouble_val\x18\x04 \x01(\x01\x12\x12\n\nstring_val\x18\x05 \x01(\t\"\x99\x01\n\x19mow_to_app_qctools_info_t\x12\x1a\n\x04type\x18\x01 \x01(\x0e\x32\x0c.QCAppTestId\x12\x16\n\x0etimeOfDuration\x18\x02 \x01(\x05\x12\x0e\n\x06result\x18\x03 \x01(\x05\x12\x16\n\x0eresult_details\x18\x04 \x01(\t\x12 \n\x06\x65xcept\x18\x05 \x03(\x0b\x32\x10.QCAppTestExcept\"O\n\x16mCtrlSimulationCmdData\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\"7\n\x1c\x61pp_to_dev_get_mqtt_config_t\x12\x17\n\x0fget_mqtt_config\x18\x01 \x01(\x05\"H\n\x1c\x64\x65v_to_app_get_mqtt_config_t\x12\x12\n\nrtk_status\x18\x01 \x01(\x05\x12\x14\n\x0crtk_base_num\x18\x02 \x01(\t\"t\n\x19\x61pp_to_dev_set_mqtt_rtk_t\x12$\n\x0cset_rtk_mode\x18\x01 \x01(\x0e\x32\x0e.rtk_used_type\x12\x16\n\x0estop_nrtk_flag\x18\x02 \x01(\x05\x12\x19\n\x11set_nrtk_net_mode\x18\x03 \x01(\x05\"7\n\x19\x64\x65v_to_app_set_mqtt_rtk_t\x12\x1a\n\x12set_rtk_mode_error\x18\x01 \x01(\x05\"\x8f\x01\n\x08rpt_lora\x12\x16\n\x0epair_code_scan\x18\x01 \x01(\x05\x12\x19\n\x11pair_code_channel\x18\x02 \x01(\x05\x12\x17\n\x0fpair_code_locid\x18\x03 \x01(\x05\x12\x17\n\x0fpair_code_netid\x18\x04 \x01(\x05\x12\x1e\n\x16lora_connection_status\x18\x05 \x01(\x05\"\xd4\x01\n\x10mqtt_rtk_connect\x12\"\n\nrtk_switch\x18\x01 \x01(\x0e\x32\x0e.rtk_used_type\x12\x13\n\x0brtk_channel\x18\x02 \x01(\x05\x12\x14\n\x0crtk_base_num\x18\x03 \x01(\t\x12\x10\n\x08latitude\x18\x04 \x01(\x01\x12\x11\n\tlongitude\x18\x05 \x01(\x01\x12\x1f\n\x17nrtk_map_convert_status\x18\x06 \x01(\x05\x12\x15\n\rnrtk_net_mode\x18\x07 \x01(\x05\x12\x14\n\x0cnew_rtk_mode\x18\x08 \x01(\x05\"\x86\x01\n\tpos_score\x12\x13\n\x0brover_score\x18\x01 \x01(\r\x12\x13\n\x0brover_level\x18\x02 \x01(\r\x12\x12\n\nbase_score\x18\x03 \x01(\r\x12\x12\n\nbase_level\x18\x04 \x01(\r\x12\x12\n\nbase_moved\x18\x05 \x01(\r\x12\x13\n\x0b\x62\x61se_moving\x18\x06 \x01(\r\"\xbb\x02\n\x07rpt_rtk\x12\x0e\n\x06status\x18\x01 \x01(\x05\x12\x11\n\tpos_level\x18\x02 \x01(\x05\x12\x11\n\tgps_stars\x18\x03 \x01(\x05\x12\x0b\n\x03\x61ge\x18\x04 \x01(\x05\x12\x0f\n\x07lat_std\x18\x05 \x01(\x05\x12\x0f\n\x07lon_std\x18\x06 \x01(\x05\x12\x10\n\x08l2_stars\x18\x07 \x01(\x05\x12\x12\n\ndis_status\x18\x08 \x01(\x03\x12\x17\n\x0ftop4_total_mean\x18\t \x01(\x03\x12\x15\n\rco_view_stars\x18\n \x01(\x05\x12\r\n\x05reset\x18\x0b \x01(\x05\x12\x1c\n\tlora_info\x18\x0c \x01(\x0b\x32\t.rpt_lora\x12(\n\rmqtt_rtk_info\x18\r \x01(\x0b\x32\x11.mqtt_rtk_connect\x12\x1e\n\nscore_info\x18\x0e \x01(\x0b\x32\n.pos_score\"\x86\x01\n\x10rpt_dev_location\x12\x12\n\nreal_pos_x\x18\x01 \x01(\x05\x12\x12\n\nreal_pos_y\x18\x02 \x01(\x05\x12\x13\n\x0breal_toward\x18\x03 \x01(\x05\x12\x10\n\x08pos_type\x18\x04 \x01(\x05\x12\x11\n\tzone_hash\x18\x05 \x01(\x03\x12\x10\n\x08\x62ol_hash\x18\x06 \x01(\x03\"4\n\x13vio_survival_info_t\x12\x1d\n\x15vio_survival_distance\x18\x01 \x01(\x02\";\n\x12\x63ollector_status_t\x12%\n\x1d\x63ollector_installation_status\x18\x01 \x01(\x05\"\"\n\x0clock_state_t\x12\x12\n\nlock_state\x18\x01 \x01(\r\"\x8b\x03\n\x0erpt_dev_status\x12\x12\n\nsys_status\x18\x01 \x01(\x05\x12\x14\n\x0c\x63harge_state\x18\x02 \x01(\x05\x12\x13\n\x0b\x62\x61ttery_val\x18\x03 \x01(\x05\x12\x15\n\rsensor_status\x18\x04 \x01(\x05\x12\x13\n\x0blast_status\x18\x05 \x01(\x05\x12\x16\n\x0esys_time_stamp\x18\x06 \x01(\x03\x12\x14\n\x0cvslam_status\x18\x07 \x01(\x05\x12\x1c\n\tmnet_info\x18\x08 \x01(\x0b\x32\t.MnetInfo\x12/\n\x11vio_survival_info\x18\t \x01(\x0b\x32\x14.vio_survival_info_t\x12-\n\x10\x63ollector_status\x18\n \x01(\x0b\x32\x13.collector_status_t\x12!\n\nlock_state\x18\x0b \x01(\x0b\x32\r.lock_state_t\x12\x19\n\x11self_check_status\x18\x0c \x01(\r\x12$\n\x08\x66pv_info\x18\r \x01(\x0b\x32\x12.fpv_to_app_info_t\"-\n\tnet_speed\x12\x10\n\x08\x64ownload\x18\x01 \x01(\r\x12\x0e\n\x06upload\x18\x02 \x01(\r\"\xce\x02\n\x12rpt_connect_status\x12\x14\n\x0c\x63onnect_type\x18\x01 \x01(\x05\x12\x10\n\x08\x62le_rssi\x18\x02 \x01(\x05\x12\x11\n\twifi_rssi\x18\x03 \x01(\x05\x12\x11\n\tlink_type\x18\x04 \x01(\x05\x12\x11\n\tmnet_rssi\x18\x05 \x01(\x05\x12\x11\n\tmnet_inet\x18\x06 \x01(\x05\x12 \n\x08used_net\x18\x07 \x01(\x0e\x32\x0e.net_used_type\x12\x1a\n\x08mnet_cfg\x18\x08 \x01(\x0b\x32\x08.MnetCfg\x12!\n\rdev_net_speed\x18\t \x01(\x0b\x32\n.net_speed\x12\x17\n\x0fiot_wifi_report\x18\n \x01(\x08\x12\x16\n\x0eiot_con_status\x18\x0b \x01(\x05\x12\x17\n\x0fwifi_con_status\x18\x0c \x01(\x05\x12\x19\n\x11wifi_is_available\x18\r \x01(\x05\",\n\x13nav_heading_state_t\x12\x15\n\rheading_state\x18\x01 \x01(\r\"\xfe\x03\n\x08rpt_work\x12\x0c\n\x04plan\x18\x01 \x01(\x05\x12\x11\n\tpath_hash\x18\x02 \x01(\x03\x12\x10\n\x08progress\x18\x03 \x01(\x05\x12\x0c\n\x04\x61rea\x18\x04 \x01(\x05\x12\x0f\n\x07\x62p_info\x18\x05 \x01(\x05\x12\x0f\n\x07\x62p_hash\x18\x06 \x01(\x03\x12\x10\n\x08\x62p_pos_x\x18\x07 \x01(\x05\x12\x10\n\x08\x62p_pos_y\x18\x08 \x01(\x05\x12\x15\n\rreal_path_num\x18\t \x01(\x03\x12\x12\n\npath_pos_x\x18\n \x01(\x05\x12\x12\n\npath_pos_y\x18\x0b \x01(\x05\x12\x14\n\x0cub_zone_hash\x18\x0c \x01(\x03\x12\x14\n\x0cub_path_hash\x18\r \x01(\x03\x12\x15\n\rinit_cfg_hash\x18\x0e \x01(\x03\x12\x15\n\rub_ecode_hash\x18\x0f \x01(\x03\x12\x14\n\x0cnav_run_mode\x18\x10 \x01(\x05\x12\x18\n\x10test_mode_status\x18\x11 \x01(\x03\x12\x15\n\rman_run_speed\x18\x12 \x01(\x05\x12\x17\n\x0fnav_edit_status\x18\x13 \x01(\x05\x12\x14\n\x0cknife_height\x18\x14 \x01(\x05\x12/\n\x11nav_heading_state\x18\x15 \x01(\x0b\x32\x14.nav_heading_state_t\x12\x15\n\rcutter_offset\x18\x16 \x01(\x02\x12\x14\n\x0c\x63utter_width\x18\x17 \x01(\x02\"C\n\nblade_used\x12\x17\n\x0f\x62lade_used_time\x18\x01 \x01(\x05\x12\x1c\n\x14\x62lade_used_warn_time\x18\x02 \x01(\x05\"=\n\x1duser_set_blade_used_warn_time\x12\x1c\n\x14\x62lade_used_warn_time\x18\x01 \x01(\x05\"l\n\x0crpt_maintain\x12\x0f\n\x07mileage\x18\x01 \x01(\x03\x12\x11\n\twork_time\x18\x02 \x01(\x05\x12\x12\n\nbat_cycles\x18\x03 \x01(\x05\x12$\n\x0f\x62lade_used_time\x18\x04 \x01(\x0b\x32\x0b.blade_used\"[\n\x11\x66pv_to_app_info_t\x12\x10\n\x08\x66pv_flag\x18\x01 \x01(\x05\x12\x16\n\x0ewifi_available\x18\x02 \x01(\x05\x12\x1c\n\x14mobile_net_available\x18\x03 \x01(\x05\"\xa4\x01\n\x14rpt_basestation_info\x12\x11\n\tver_major\x18\x01 \x01(\r\x12\x11\n\tver_minor\x18\x02 \x01(\r\x12\x11\n\tver_patch\x18\x03 \x01(\r\x12\x11\n\tver_build\x18\x04 \x01(\r\x12\x1a\n\x12\x62\x61sestation_status\x18\x05 \x01(\r\x12$\n\x1c\x63onnect_status_since_poweron\x18\x06 \x01(\r\"\x8f\x01\n\x0freport_info_cfg\x12\x15\n\x03\x61\x63t\x18\x01 \x01(\x0e\x32\x08.rpt_act\x12\x0f\n\x07timeout\x18\x02 \x01(\x05\x12\x0e\n\x06period\x18\x03 \x01(\x05\x12\x18\n\x10no_change_period\x18\x04 \x01(\x05\x12\r\n\x05\x63ount\x18\x05 \x01(\x05\x12\x1b\n\x03sub\x18\x06 \x03(\x0e\x32\x0e.rpt_info_type\"\xed\x03\n\x10report_info_data\x12$\n\x07\x63onnect\x18\x01 \x01(\x0b\x32\x13.rpt_connect_status\x12\x1c\n\x03\x64\x65v\x18\x02 \x01(\x0b\x32\x0f.rpt_dev_status\x12\x15\n\x03rtk\x18\x03 \x01(\x0b\x32\x08.rpt_rtk\x12$\n\tlocations\x18\x04 \x03(\x0b\x32\x11.rpt_dev_location\x12\x17\n\x04work\x18\x05 \x01(\x0b\x32\t.rpt_work\x12 \n\x07\x66w_info\x18\x06 \x01(\x0b\x32\x0f.device_fw_info\x12\x1f\n\x08maintain\x18\x07 \x01(\x0b\x32\r.rpt_maintain\x12\x31\n\x11vision_point_info\x18\x08 \x03(\x0b\x32\x16.vision_point_info_msg\x12-\n\x0fvio_to_app_info\x18\t \x01(\x0b\x32\x14.vio_to_app_info_msg\x12\x39\n\x15vision_statistic_info\x18\n \x01(\x0b\x32\x1a.vision_statistic_info_msg\x12/\n\x10\x62\x61sestation_info\x18\x0b \x01(\x0b\x32\x15.rpt_basestation_info\x12.\n\x15\x63utter_work_mode_info\x18\x0c \x01(\x0b\x32\x0f.rpt_cutter_rpm\"U\n\x15\x64\x65\x62ug_common_report_t\x12\x0e\n\x06m_name\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x12\x10\n\x08gen_time\x18\x04 \x01(\x03\"W\n\x17\x64\x65\x62ug_errocode_report_t\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\r\n\x05mname\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x12\x10\n\x08gen_time\x18\x04 \x01(\x03\" \n\x0e\x64\x65\x62ug_enable_t\x12\x0e\n\x06\x65nbale\x18\x01 \x01(\x05\"^\n\x17\x64\x65\x62ug_res_cfg_ability_t\x12\x12\n\ntotal_keys\x18\x01 \x01(\x05\x12\x12\n\ncur_key_id\x18\x02 \x01(\x05\x12\x0c\n\x04keys\x18\x03 \x01(\t\x12\r\n\x05value\x18\x04 \x01(\t\".\n\x10\x64\x65\x62ug_cfg_read_t\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"/\n\x11\x64\x65\x62ug_cfg_write_t\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xa7\x01\n\nmsgbus_pkt\x12\x0c\n\x04type\x18\x01 \x01(\x05\x12\x13\n\x0btypeCommand\x18\x02 \x01(\x05\x12\x14\n\x0crecvDeviceId\x18\x03 \x01(\x05\x12\x14\n\x0csendDeviceId\x18\x04 \x01(\x05\x12\x12\n\ndataLength\x18\x05 \x01(\x05\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\t\x12\x0c\n\x04\x63trl\x18\x07 \x01(\x05\x12\x0c\n\x04\x66lag\x18\x08 \x01(\x05\x12\x0c\n\x04seqs\x18\t \x01(\x05\"\xb1\x01\n\x13response_set_mode_t\x12\x0e\n\x06statue\x18\x01 \x01(\x05\x12\x15\n\rset_work_mode\x18\x02 \x01(\x05\x12\x15\n\rcur_work_mode\x18\x03 \x01(\x05\x12\x17\n\x0fstart_work_time\x18\x04 \x01(\x03\x12\x15\n\rend_work_time\x18\x05 \x01(\x03\x12\x15\n\rinterruptflag\x18\x06 \x01(\x05\x12\x15\n\rcur_work_time\x18\x07 \x01(\x05\"I\n\x0erpt_cutter_rpm\x12\x1b\n\x13\x63urrent_cutter_mode\x18\x01 \x01(\x05\x12\x1a\n\x12\x63urrent_cutter_rpm\x18\x02 \x01(\x05\"\x8d\x02\n\x0c\x64\x65v_statue_t\x12\x12\n\nsys_status\x18\x01 \x01(\x05\x12\x15\n\rcharge_status\x18\x02 \x01(\x05\x12\x0f\n\x07\x62\x61t_val\x18\x03 \x01(\x05\x12\x14\n\x0cwheel_status\x18\x04 \x01(\x05\x12\x13\n\x0bpump_status\x18\x05 \x01(\x05\x12\x11\n\twork_mode\x18\x06 \x01(\x05\x12\r\n\x05model\x18\x07 \x01(\x05\x12\x10\n\x08\x62le_rssi\x18\x08 \x01(\x05\x12\x11\n\twifi_rssi\x18\t \x01(\x05\x12\x1b\n\x13wifi_connect_status\x18\n \x01(\x05\x12\x1a\n\x12iot_connect_status\x18\x0b \x01(\x05\x12\x16\n\x0ewifi_available\x18\x0c \x01(\x05\"2\n\rreport_info_t\x12!\n\ndev_status\x18\x01 \x01(\x0b\x32\r.dev_statue_t\" \n\x0bwork_mode_t\x12\x11\n\twork_mode\x18\x01 \x01(\x05\"Q\n\x0especial_mode_t\x12\x12\n\nstair_mode\x18\x01 \x01(\x05\x12\x14\n\x0cviolent_mode\x18\x02 \x01(\x05\x12\x15\n\rberthing_mode\x18\x03 \x01(\x05\"(\n\x11set_peripherals_t\x12\x13\n\x0b\x62uzz_enable\x18\x01 \x01(\x05\"K\n\x10\x64\x65\x62ug_sun_time_t\x12\x0e\n\x06subCmd\x18\x01 \x01(\x05\x12\x13\n\x0bsunRiseTime\x18\x02 \x01(\x05\x12\x12\n\nsunSetTime\x18\x03 \x01(\x05\"l\n\x12remote_reset_req_t\x12\r\n\x05magic\x18\x01 \x01(\x05\x12\r\n\x05\x62izid\x18\x02 \x01(\x03\x12\x12\n\nreset_mode\x18\x03 \x01(\x05\x12\x13\n\x0b\x66orce_reset\x18\x04 \x01(\x05\x12\x0f\n\x07\x61\x63\x63ount\x18\x05 \x01(\x03\"S\n\x12remote_reset_rsp_t\x12\r\n\x05magic\x18\x01 \x01(\x05\x12\r\n\x05\x62izid\x18\x02 \x01(\x03\x12\x1f\n\x06result\x18\x03 \x01(\x0e\x32\x0f.Command_Result\"\xb1\x16\n\x07MctlSys\x12\"\n\rtoapp_batinfo\x18\x01 \x01(\x0b\x32\t.SysBatUpH\x00\x12)\n\x10toapp_work_state\x18\x02 \x01(\x0b\x32\r.SysWorkStateH\x00\x12*\n\x0ftodev_time_zone\x18\x03 \x01(\x0b\x32\x0f.SysSetTimeZoneH\x00\x12*\n\x0ftodev_data_time\x18\x04 \x01(\x0b\x32\x0f.SysSetDateTimeH\x00\x12\x1f\n\x08job_plan\x18\x06 \x01(\x0b\x32\x0b.SysJobPlanH\x00\x12(\n\x0etoapp_err_code\x18\x07 \x01(\x0b\x32\x0e.SysDevErrCodeH\x00\x12.\n\x13todev_job_plan_time\x18\n \x01(\x0b\x32\x0f.SysJobPlanTimeH\x00\x12%\n\x0etoapp_mow_info\x18\x0b \x01(\x0b\x32\x0b.SysMowInfoH\x00\x12&\n\x0f\x62idire_comm_cmd\x18\x0c \x01(\x0b\x32\x0b.SysCommCmdH\x00\x12\x16\n\x0cplan_job_del\x18\x0e \x01(\x03H\x00\x12\x1c\n\x06\x62order\x18\x0f \x01(\x0b\x32\n.SysBorderH\x00\x12.\n\x11toapp_plan_status\x18\x12 \x01(\x0b\x32\x11.SysPlanJobStatusH\x00\x12\x34\n\x12toapp_ul_fprogress\x18\x13 \x01(\x0b\x32\x16.SysUploadFileProgressH\x00\x12*\n\x10todev_deljobplan\x18\x14 \x01(\x0b\x32\x0e.SysDelJobPlanH\x00\x12\x1b\n\x11todev_mow_info_up\x18\x15 \x01(\x05H\x00\x12,\n\x10todev_knife_ctrl\x18\x16 \x01(\x0b\x32\x10.SysKnifeControlH\x00\x12\x1c\n\x12todev_reset_system\x18\x17 \x01(\x05H\x00\x12:\n\x19todev_reset_system_status\x18\x18 \x01(\x0b\x32\x15.SysResetSystemStatusH\x00\x12=\n\x16systemRapidStateTunnel\x18\x19 \x01(\x0b\x32\x1b.systemRapidStateTunnel_msgH\x00\x12;\n\x15systemTardStateTunnel\x18\x1a \x01(\x0b\x32\x1a.systemTardStateTunnel_msgH\x00\x12/\n\x0fsystemUpdateBuf\x18\x1b \x01(\x0b\x32\x14.systemUpdateBuf_msgH\x00\x12/\n\x15todev_time_ctrl_light\x18\x1c \x01(\x0b\x32\x0e.TimeCtrlLightH\x00\x12\x31\n\x10systemTmpCycleTx\x18\x1d \x01(\x0b\x32\x15.systemTmpCycleTx_msgH\x00\x12\x30\n\x14todev_off_chip_flash\x18\x1e \x01(\x0b\x32\x10.SysOffChipFlashH\x00\x12\x1f\n\x15todev_get_dev_fw_info\x18\x1f \x01(\x05H\x00\x12,\n\x11toapp_dev_fw_info\x18 \x01(\x0b\x32\x0f.device_fw_infoH\x00\x12)\n\x12todev_lora_cfg_req\x18! \x01(\x0b\x32\x0b.LoraCfgReqH\x00\x12)\n\x12toapp_lora_cfg_rsp\x18\" \x01(\x0b\x32\x0b.LoraCfgRspH\x00\x12-\n\x0fmow_to_app_info\x18# \x01(\x0b\x32\x12.mow_to_app_info_tH\x00\x12?\n\x18\x64\x65vice_product_type_info\x18$ \x01(\x0b\x32\x1b.device_product_type_info_tH\x00\x12=\n\x17mow_to_app_qctools_info\x18% \x01(\x0b\x32\x1a.mow_to_app_qctools_info_tH\x00\x12,\n\x10todev_report_cfg\x18& \x01(\x0b\x32\x10.report_info_cfgH\x00\x12.\n\x11toapp_report_data\x18\' \x01(\x0b\x32\x11.report_info_dataH\x00\x12\x31\n\x0esimulation_cmd\x18* \x01(\x0b\x32\x17.mCtrlSimulationCmdDataH\x00\x12G\n\x1e\x61pp_to_dev_get_mqtt_config_msg\x18+ \x01(\x0b\x32\x1d.app_to_dev_get_mqtt_config_tH\x00\x12G\n\x1e\x64\x65v_to_app_get_mqtt_config_msg\x18, \x01(\x0b\x32\x1d.dev_to_app_get_mqtt_config_tH\x00\x12\x41\n\x1b\x61pp_to_dev_set_mqtt_rtk_msg\x18- \x01(\x0b\x32\x1a.app_to_dev_set_mqtt_rtk_tH\x00\x12\x41\n\x1b\x64\x65v_to_app_set_mqtt_rtk_msg\x18. \x01(\x0b\x32\x1a.dev_to_app_set_mqtt_rtk_tH\x00\x12%\n\x1btodev_reset_blade_used_time\x18/ \x01(\x05H\x00\x12J\n\"todev_reset_blade_used_time_status\x18\x30 \x01(\x0b\x32\x1c.SysResetBladeUsedTimeStatusH\x00\x12#\n\x19todev_factor_reset_system\x18\x31 \x01(\x05H\x00\x12>\n\x14\x62lade_used_warn_time\x18\x32 \x01(\x0b\x32\x1e.user_set_blade_used_warn_timeH\x00\x12\x35\n\x13\x64\x65\x62ug_common_report\x18\x33 \x01(\x0b\x32\x16.debug_common_report_tH\x00\x12\x39\n\x15\x64\x65\x62ug_errocode_report\x18\x34 \x01(\x0b\x32\x18.debug_errocode_report_tH\x00\x12\'\n\x0c\x64\x65\x62ug_enable\x18\x35 \x01(\x0b\x32\x0f.debug_enable_tH\x00\x12+\n\x0e\x64\x65\x62ug_cfg_read\x18\x36 \x01(\x0b\x32\x11.debug_cfg_read_tH\x00\x12-\n\x0f\x64\x65\x62ug_cfg_write\x18\x37 \x01(\x0b\x32\x12.debug_cfg_write_tH\x00\x12\x39\n\x15\x64\x65\x62ug_res_cfg_ability\x18\x38 \x01(\x0b\x32\x18.debug_res_cfg_ability_tH\x00\x12$\n\rto_dev_msgbus\x18\x39 \x01(\x0b\x32\x0b.msgbus_pktH\x00\x12$\n\rto_app_msgbus\x18: \x01(\x0b\x32\x0b.msgbus_pktH\x00\x12\x31\n\x11response_set_mode\x18; \x01(\x0b\x32\x14.response_set_mode_tH\x00\x12%\n\x0breport_info\x18< \x01(\x0b\x32\x0e.report_info_tH\x00\x12%\n\rset_work_mode\x18= \x01(\x0b\x32\x0c.work_mode_tH\x00\x12+\n\x10set_special_mode\x18> \x01(\x0b\x32\x0f.special_mode_tH\x00\x12-\n\x0fset_peripherals\x18? \x01(\x0b\x32\x12.set_peripherals_tH\x00\x12\x30\n\x13to_dev_set_sun_time\x18@ \x01(\x0b\x32\x11.debug_sun_time_tH\x00\x12\x32\n\x13to_dev_remote_reset\x18\x41 \x01(\x0b\x32\x13.remote_reset_req_tH\x00\x12\x32\n\x13to_app_remote_reset\x18\x42 \x01(\x0b\x32\x13.remote_reset_rsp_tH\x00\x12.\n\x13\x63urrent_cutter_mode\x18\x43 \x01(\x0b\x32\x0f.rpt_cutter_rpmH\x00\x42\x0b\n\tSubSysMsg*+\n\tOperation\x12\t\n\x05WRITE\x10\x00\x12\x08\n\x04READ\x10\x01\x12\t\n\x05\x45RASE\x10\x02*\x8d\x02\n\tOffPartId\x12\x13\n\x0fOFF_PART_DL_IMG\x10\x00\x12\x19\n\x15OFF_PART_UPDINFO_BACK\x10\x01\x12\x14\n\x10OFF_PART_UPDINFO\x10\x02\x12\x13\n\x0fOFF_PART_NAKEDB\x10\x03\x12\x14\n\x10OFF_PART_FLASHDB\x10\x04\x12\x18\n\x14OFF_PART_UPD_APP_IMG\x10\x05\x12\x18\n\x14OFF_PART_UPD_BMS_IMG\x10\x06\x12\x18\n\x14OFF_PART_UPD_TMP_IMG\x10\x07\x12\x15\n\x11OFF_PART_DEV_INFO\x10\x08\x12\x18\n\x14OFF_PART_NAKEDB_BACK\x10\t\x12\x10\n\x0cOFF_PART_MAX\x10\n*\xe5\x08\n\x0bQCAppTestId\x12!\n\x1dQC_APP_ITEM_ON_CHARGESATSTION\x10\x00\x12\x1a\n\x16QC_APP_TEST_X3_SPEAKER\x10\x01\x12)\n%QC_APP_TEST_STATIC_OBSTACLE_DETECTION\x10\x02\x12\"\n\x1eQC_APP_TEST_CHARGESTATION_TEMP\x10\x03\x12\x13\n\x0fQC_APP_ITEM_KEY\x10\x04\x12 \n\x1cQC_APP_TEST_BUMPER_FRONTLEFT\x10\x05\x12!\n\x1dQC_APP_TEST_BUMPER_FRONTRIGHT\x10\x06\x12\x14\n\x10QC_APP_TEST_STOP\x10\x07\x12\x16\n\x12QC_APP_TEST_UNLOCK\x10\x08\x12\x14\n\x10QC_APP_TEST_BUZZ\x10\t\x12\x14\n\x10QC_APP_TEST_LIFT\x10\n\x12\x16\n\x12QC_APP_ITEM_SENEOR\x10\x0b\x12\x19\n\x15QC_APP_TEST_ROLL_LEFT\x10\x0c\x12\x1a\n\x16QC_APP_TEST_ROLL_RIGHT\x10\r\x12\x1d\n\x19QC_APP_TEST_ULTRA_UNCOVER\x10\x0e\x12\x1c\n\x18QC_APP_TEST_ULTRA0_COVER\x10\x0f\x12\x1c\n\x18QC_APP_TEST_ULTRA1_COVER\x10\x10\x12\x1c\n\x18QC_APP_TEST_ULTRA2_COVER\x10\x11\x12\x14\n\x10QC_APP_TEST_RAIN\x10\x12\x12\x12\n\x0eQC_APP_ITEM_SQ\x10\x13\x12\x18\n\x14QC_APP_TEST_BLE_RSSI\x10\x14\x12 \n\x1cQC_APP_TEST_SATELLITES_ROVER\x10\x15\x12)\n%QC_APP_TEST_SATELLITES_REF_STATION_L1\x10\x16\x12)\n%QC_APP_TEST_SATELLITES_REF_STATION_L2\x10\x17\x12&\n\"QC_APP_TEST_SATELLITES_COMMON_VIEW\x10\x18\x12\x19\n\x15QC_APP_TEST_CNO_ROVER\x10\x19\x12\x1f\n\x1bQC_APP_TEST_CNO_REF_STATION\x10\x1a\x12\'\n#QC_APP_TEST_REF_STATION_LINK_STATUS\x10\x1b\x12\x1e\n\x1aQC_APP_TEST_LOCATION_STATE\x10\x1c\x12\x1d\n\x19QC_APP_TEST_CHARGE_STATUS\x10\x1d\x12\x1e\n\x1aQC_APP_TEST_PPS_EXTI_COUNT\x10\x1e\x12\x18\n\x14QC_APP_TEST_SAFE_KEY\x10\x32\x12\x19\n\x15QC_APP_TEST_LORA_RSSI\x10<\x12\x1a\n\x16QC_APP_TEST_WIPER_TEST\x10P\x12\x1d\n\x19QC_APP_TEST_HEADLAMP_TEST\x10Q\x12\x1f\n\x1bQC_APP_TEST_COMPLETE_SIGNAL\x10\x63\x12\x13\n\x0fQC_APP_TEST_MAX\x10\x64*L\n\rrtk_used_type\x12\x11\n\rRTK_USED_LORA\x10\x00\x12\x15\n\x11RTK_USED_INTERNET\x10\x01\x12\x11\n\rRTK_USED_NRTK\x10\x02*W\n\rnet_used_type\x12\x16\n\x12NET_USED_TYPE_NONE\x10\x00\x12\x16\n\x12NET_USED_TYPE_WIFI\x10\x01\x12\x16\n\x12NET_USED_TYPE_MNET\x10\x02*\xee\x01\n\rrpt_info_type\x12\x0f\n\x0bRIT_CONNECT\x10\x00\x12\x0f\n\x0bRIT_DEV_STA\x10\x01\x12\x0b\n\x07RIT_RTK\x10\x02\x12\x11\n\rRIT_DEV_LOCAL\x10\x03\x12\x0c\n\x08RIT_WORK\x10\x04\x12\x0f\n\x0bRIT_FW_INFO\x10\x05\x12\x10\n\x0cRIT_MAINTAIN\x10\x06\x12\x14\n\x10RIT_VISION_POINT\x10\x07\x12\x0b\n\x07RIT_VIO\x10\x08\x12\x18\n\x14RIT_VISION_STATISTIC\x10\t\x12\x18\n\x14RIT_BASESTATION_INFO\x10\n\x12\x13\n\x0fRIT_CUTTER_INFO\x10\x0b*4\n\x07rpt_act\x12\r\n\tRPT_START\x10\x00\x12\x0c\n\x08RPT_STOP\x10\x01\x12\x0c\n\x08RPT_KEEP\x10\x02*R\n\x0e\x43ommand_Result\x12\t\n\x05RS_OK\x10\x00\x12\x11\n\rRS_FAIL_MAGIC\x10\x01\x12\x0f\n\x0bRS_FAIL_OTA\x10\x02\x12\x11\n\rRS_FAIL_SLOPE\x10\x03\x62\x06proto3')
18
18
 
19
19
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
20
20
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'pymammotion.proto.mctrl_sys_pb2', globals())
@@ -299,7 +299,7 @@ class PosType(IntEnum):
299
299
  CHARGE_ON = 5
300
300
  DUMPING_AREA_INSIDE = 8
301
301
  DUMPING_OUTSIDE = 10
302
- UNKNOWN = 11
302
+ ABNORMAL_POSITIONING = 11
303
303
  NO_AREAS = 100
304
304
  OBS_ON = 2
305
305
  TURN_AREA_INSIDE = 4