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.
- pymammotion/aliyun/model/dev_by_account_response.py +32 -62
- pymammotion/data/model/device.py +21 -9
- pymammotion/data/model/device_info.py +1 -0
- pymammotion/data/model/events.py +14 -0
- pymammotion/data/model/generate_geojson.py +551 -0
- pymammotion/data/model/hash_list.py +17 -1
- pymammotion/data/model/location.py +4 -4
- pymammotion/data/model/report_info.py +7 -0
- pymammotion/data/mower_state_manager.py +58 -4
- pymammotion/event/event.py +5 -2
- pymammotion/homeassistant/mower_api.py +44 -6
- pymammotion/homeassistant/rtk_api.py +16 -16
- pymammotion/http/http.py +8 -2
- pymammotion/mammotion/commands/messages/navigation.py +29 -0
- pymammotion/mammotion/devices/mammotion.py +16 -7
- pymammotion/mammotion/devices/mower_device.py +8 -5
- pymammotion/proto/__init__.py +2 -2
- pymammotion/proto/mctrl_sys_pb2.py +1 -1
- pymammotion/utility/constant/device_constant.py +1 -1
- pymammotion/utility/map.py +238 -51
- pymammotion/utility/mur_mur_hash.py +1 -1
- {pymammotion-0.5.44.dist-info → pymammotion-0.5.53.dist-info}/METADATA +3 -2
- {pymammotion-0.5.44.dist-info → pymammotion-0.5.53.dist-info}/RECORD +25 -23
- {pymammotion-0.5.44.dist-info → pymammotion-0.5.53.dist-info}/WHEEL +0 -0
- {pymammotion-0.5.44.dist-info → pymammotion-0.5.53.dist-info}/licenses/LICENSE +0 -0
|
@@ -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
|
-
|
|
225
|
-
|
|
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
|
pymammotion/event/event.py
CHANGED
|
@@ -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=
|
|
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
|
|
199
|
-
|
|
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
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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.
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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:
|
pymammotion/proto/__init__.py
CHANGED
|
@@ -267,7 +267,7 @@ import betterproto2
|
|
|
267
267
|
|
|
268
268
|
from .message_pool import default_message_pool
|
|
269
269
|
|
|
270
|
-
_COMPILER_VERSION = "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: "
|
|
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())
|