pymammotion 0.3.7__py3-none-any.whl → 0.4.0__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.
Files changed (69) hide show
  1. pymammotion/__init__.py +2 -2
  2. pymammotion/aliyun/cloud_gateway.py +12 -9
  3. pymammotion/aliyun/model/aep_response.py +1 -2
  4. pymammotion/aliyun/model/dev_by_account_response.py +7 -8
  5. pymammotion/aliyun/model/login_by_oauth_response.py +2 -3
  6. pymammotion/aliyun/model/regions_response.py +3 -3
  7. pymammotion/aliyun/model/session_by_authcode_response.py +1 -2
  8. pymammotion/aliyun/model/stream_subscription_response.py +1 -2
  9. pymammotion/bluetooth/ble.py +5 -5
  10. pymammotion/bluetooth/ble_message.py +9 -13
  11. pymammotion/data/model/device.py +31 -228
  12. pymammotion/data/model/device_config.py +0 -10
  13. pymammotion/data/model/device_info.py +13 -0
  14. pymammotion/data/model/device_limits.py +49 -0
  15. pymammotion/data/model/generate_route_information.py +1 -1
  16. pymammotion/data/model/hash_list.py +6 -2
  17. pymammotion/data/model/plan.py +0 -3
  18. pymammotion/data/model/raw_data.py +215 -0
  19. pymammotion/data/model/region_data.py +10 -11
  20. pymammotion/data/model/report_info.py +1 -1
  21. pymammotion/data/mqtt/event.py +18 -14
  22. pymammotion/data/mqtt/properties.py +1 -1
  23. pymammotion/data/mqtt/status.py +1 -1
  24. pymammotion/data/state_manager.py +83 -23
  25. pymammotion/http/encryption.py +220 -0
  26. pymammotion/http/http.py +92 -39
  27. pymammotion/http/model/http.py +4 -2
  28. pymammotion/mammotion/commands/abstract_message.py +2 -2
  29. pymammotion/mammotion/commands/messages/driver.py +28 -21
  30. pymammotion/mammotion/commands/messages/media.py +10 -14
  31. pymammotion/mammotion/commands/messages/navigation.py +14 -11
  32. pymammotion/mammotion/commands/messages/network.py +17 -14
  33. pymammotion/mammotion/commands/messages/ota.py +9 -14
  34. pymammotion/mammotion/commands/messages/system.py +32 -29
  35. pymammotion/mammotion/commands/messages/video.py +9 -14
  36. pymammotion/mammotion/devices/base.py +7 -14
  37. pymammotion/mammotion/devices/mammotion.py +22 -13
  38. pymammotion/mammotion/devices/mammotion_bluetooth.py +15 -4
  39. pymammotion/mammotion/devices/mammotion_cloud.py +30 -12
  40. pymammotion/mqtt/linkkit/__init__.py +5 -0
  41. pymammotion/mqtt/linkkit/h2client.py +585 -0
  42. pymammotion/mqtt/linkkit/linkkit.py +3020 -0
  43. pymammotion/mqtt/mammotion_mqtt.py +13 -9
  44. pymammotion/proto/__init__.py +2176 -1
  45. pymammotion/proto/luba_mul.proto +1 -0
  46. pymammotion/proto/luba_mul_pb2.py +8 -8
  47. pymammotion/proto/luba_mul_pb2.pyi +1 -0
  48. pymammotion/proto/mctrl_nav_pb2.py +69 -67
  49. pymammotion/proto/mctrl_nav_pb2.pyi +13 -5
  50. pymammotion/proto/mctrl_sys_pb2.py +41 -37
  51. pymammotion/proto/mctrl_sys_pb2.pyi +34 -11
  52. pymammotion/utility/constant/device_constant.py +14 -5
  53. pymammotion/utility/device_config.py +754 -0
  54. pymammotion/utility/device_type.py +64 -16
  55. {pymammotion-0.3.7.dist-info → pymammotion-0.4.0.dist-info}/METADATA +9 -9
  56. {pymammotion-0.3.7.dist-info → pymammotion-0.4.0.dist-info}/RECORD +58 -62
  57. {pymammotion-0.3.7.dist-info → pymammotion-0.4.0.dist-info}/WHEEL +1 -1
  58. pymammotion/aliyun/cloud_service.py +0 -65
  59. pymammotion/proto/basestation.py +0 -59
  60. pymammotion/proto/common.py +0 -12
  61. pymammotion/proto/dev_net.py +0 -381
  62. pymammotion/proto/luba_msg.py +0 -81
  63. pymammotion/proto/luba_mul.py +0 -76
  64. pymammotion/proto/mctrl_driver.py +0 -100
  65. pymammotion/proto/mctrl_nav.py +0 -664
  66. pymammotion/proto/mctrl_ota.py +0 -48
  67. pymammotion/proto/mctrl_pept.py +0 -41
  68. pymammotion/proto/mctrl_sys.py +0 -574
  69. {pymammotion-0.3.7.dist-info → pymammotion-0.4.0.dist-info}/LICENSE +0 -0
@@ -52,6 +52,7 @@ QC_APP_TEST_ULTRA_UNCOVER: QCAppTestId
52
52
  QC_APP_TEST_UNLOCK: QCAppTestId
53
53
  QC_APP_TEST_X3_SPEAKER: QCAppTestId
54
54
  READ: Operation
55
+ RIT_BASESTATION_INFO: rpt_info_type
55
56
  RIT_CONNECT: rpt_info_type
56
57
  RIT_DEV_LOCAL: rpt_info_type
57
58
  RIT_DEV_STA: rpt_info_type
@@ -85,7 +86,7 @@ class LoraCfgRsp(_message.Message):
85
86
  fac_cfg: bytes
86
87
  op: int
87
88
  result: int
88
- def __init__(self, result: _Optional[int] = ..., op: _Optional[int] = ..., cfg: _Optional[str] = ..., fac_cfg: _Optional[str] = ...) -> None: ...
89
+ def __init__(self, result: _Optional[int] = ..., op: _Optional[int] = ..., cfg: _Optional[str] = ..., fac_cfg: _Optional[bytes] = ...) -> None: ...
89
90
 
90
91
  class MctlSys(_message.Message):
91
92
  __slots__ = ["bidire_comm_cmd", "border", "device_product_type_info", "job_plan", "mow_to_app_info", "mow_to_app_qctools_info", "plan_job_del", "simulation_cmd", "systemRapidStateTunnel", "systemTardStateTunnel", "systemTmpCycleTx", "systemUpdateBuf", "toapp_batinfo", "toapp_dev_fw_info", "toapp_err_code", "toapp_lora_cfg_rsp", "toapp_mow_info", "toapp_plan_status", "toapp_report_data", "toapp_ul_fprogress", "toapp_work_state", "todev_data_time", "todev_deljobplan", "todev_get_dev_fw_info", "todev_job_plan_time", "todev_knife_ctrl", "todev_lora_cfg_req", "todev_mow_info_up", "todev_off_chip_flash", "todev_report_cfg", "todev_reset_system", "todev_reset_system_status", "todev_time_ctrl_light", "todev_time_zone"]
@@ -480,6 +481,22 @@ class mow_to_app_qctools_info_t(_message.Message):
480
481
  type: QCAppTestId
481
482
  def __init__(self, type: _Optional[_Union[QCAppTestId, str]] = ..., timeOfDuration: _Optional[int] = ..., result: _Optional[int] = ..., result_details: _Optional[str] = ..., **kwargs) -> None: ...
482
483
 
484
+ class mqtt_rtk_connect(_message.Message):
485
+ __slots__ = ["rtk_base_num", "rtk_channel", "rtk_switch"]
486
+ RTK_BASE_NUM_FIELD_NUMBER: _ClassVar[int]
487
+ RTK_CHANNEL_FIELD_NUMBER: _ClassVar[int]
488
+ RTK_SWITCH_FIELD_NUMBER: _ClassVar[int]
489
+ rtk_base_num: str
490
+ rtk_channel: int
491
+ rtk_switch: int
492
+ def __init__(self, rtk_switch: _Optional[int] = ..., rtk_channel: _Optional[int] = ..., rtk_base_num: _Optional[str] = ...) -> None: ...
493
+
494
+ class nav_heading_state_t(_message.Message):
495
+ __slots__ = ["heading_state"]
496
+ HEADING_STATE_FIELD_NUMBER: _ClassVar[int]
497
+ heading_state: int
498
+ def __init__(self, heading_state: _Optional[int] = ...) -> None: ...
499
+
483
500
  class report_info_cfg(_message.Message):
484
501
  __slots__ = ["act", "count", "no_change_period", "period", "sub", "timeout"]
485
502
  ACT_FIELD_NUMBER: _ClassVar[int]
@@ -521,10 +538,11 @@ class report_info_data(_message.Message):
521
538
  def __init__(self, connect: _Optional[_Union[rpt_connect_status, _Mapping]] = ..., dev: _Optional[_Union[rpt_dev_status, _Mapping]] = ..., rtk: _Optional[_Union[rpt_rtk, _Mapping]] = ..., locations: _Optional[_Iterable[_Union[rpt_dev_location, _Mapping]]] = ..., work: _Optional[_Union[rpt_work, _Mapping]] = ..., fw_info: _Optional[_Union[device_fw_info, _Mapping]] = ..., maintain: _Optional[_Union[rpt_maintain, _Mapping]] = ..., vision_point_info: _Optional[_Iterable[_Union[vision_point_info_msg, _Mapping]]] = ..., vio_to_app_info: _Optional[_Union[vio_to_app_info_msg, _Mapping]] = ..., vision_statistic_info: _Optional[_Union[vision_statistic_info_msg, _Mapping]] = ...) -> None: ...
522
539
 
523
540
  class rpt_connect_status(_message.Message):
524
- __slots__ = ["ble_rssi", "connect_type", "link_type", "mnet_inet", "mnet_rssi", "used_net", "wifi_rssi"]
541
+ __slots__ = ["ble_rssi", "connect_type", "link_type", "mnet_cfg", "mnet_inet", "mnet_rssi", "used_net", "wifi_rssi"]
525
542
  BLE_RSSI_FIELD_NUMBER: _ClassVar[int]
526
543
  CONNECT_TYPE_FIELD_NUMBER: _ClassVar[int]
527
544
  LINK_TYPE_FIELD_NUMBER: _ClassVar[int]
545
+ MNET_CFG_FIELD_NUMBER: _ClassVar[int]
528
546
  MNET_INET_FIELD_NUMBER: _ClassVar[int]
529
547
  MNET_RSSI_FIELD_NUMBER: _ClassVar[int]
530
548
  USED_NET_FIELD_NUMBER: _ClassVar[int]
@@ -532,11 +550,12 @@ class rpt_connect_status(_message.Message):
532
550
  ble_rssi: int
533
551
  connect_type: int
534
552
  link_type: int
553
+ mnet_cfg: _dev_net_pb2.MnetCfg
535
554
  mnet_inet: int
536
555
  mnet_rssi: int
537
556
  used_net: net_used_type
538
557
  wifi_rssi: int
539
- def __init__(self, connect_type: _Optional[int] = ..., ble_rssi: _Optional[int] = ..., wifi_rssi: _Optional[int] = ..., link_type: _Optional[int] = ..., mnet_rssi: _Optional[int] = ..., mnet_inet: _Optional[int] = ..., used_net: _Optional[_Union[net_used_type, str]] = ...) -> None: ...
558
+ def __init__(self, connect_type: _Optional[int] = ..., ble_rssi: _Optional[int] = ..., wifi_rssi: _Optional[int] = ..., link_type: _Optional[int] = ..., mnet_rssi: _Optional[int] = ..., mnet_inet: _Optional[int] = ..., used_net: _Optional[_Union[net_used_type, str]] = ..., mnet_cfg: _Optional[_Union[_dev_net_pb2.MnetCfg, _Mapping]] = ...) -> None: ...
540
559
 
541
560
  class rpt_dev_location(_message.Message):
542
561
  __slots__ = ["bol_hash", "pos_type", "real_pos_x", "real_pos_y", "real_toward", "zone_hash"]
@@ -605,7 +624,7 @@ class rpt_maintain(_message.Message):
605
624
  def __init__(self, mileage: _Optional[int] = ..., work_time: _Optional[int] = ..., bat_cycles: _Optional[int] = ...) -> None: ...
606
625
 
607
626
  class rpt_rtk(_message.Message):
608
- __slots__ = ["age", "co_view_stars", "dis_status", "gps_stars", "l2_stars", "lat_std", "lon_std", "lora_info", "pos_level", "reset", "status", "top4_total_mean"]
627
+ __slots__ = ["age", "co_view_stars", "dis_status", "gps_stars", "l2_stars", "lat_std", "lon_std", "lora_info", "mqtt_rtk_info", "pos_level", "reset", "status", "top4_total_mean"]
609
628
  AGE_FIELD_NUMBER: _ClassVar[int]
610
629
  CO_VIEW_STARS_FIELD_NUMBER: _ClassVar[int]
611
630
  DIS_STATUS_FIELD_NUMBER: _ClassVar[int]
@@ -614,6 +633,7 @@ class rpt_rtk(_message.Message):
614
633
  LAT_STD_FIELD_NUMBER: _ClassVar[int]
615
634
  LON_STD_FIELD_NUMBER: _ClassVar[int]
616
635
  LORA_INFO_FIELD_NUMBER: _ClassVar[int]
636
+ MQTT_RTK_INFO_FIELD_NUMBER: _ClassVar[int]
617
637
  POS_LEVEL_FIELD_NUMBER: _ClassVar[int]
618
638
  RESET_FIELD_NUMBER: _ClassVar[int]
619
639
  STATUS_FIELD_NUMBER: _ClassVar[int]
@@ -626,14 +646,15 @@ class rpt_rtk(_message.Message):
626
646
  lat_std: int
627
647
  lon_std: int
628
648
  lora_info: rpt_lora
649
+ mqtt_rtk_info: mqtt_rtk_connect
629
650
  pos_level: int
630
651
  reset: int
631
652
  status: int
632
653
  top4_total_mean: int
633
- def __init__(self, status: _Optional[int] = ..., pos_level: _Optional[int] = ..., gps_stars: _Optional[int] = ..., age: _Optional[int] = ..., lat_std: _Optional[int] = ..., lon_std: _Optional[int] = ..., l2_stars: _Optional[int] = ..., dis_status: _Optional[int] = ..., top4_total_mean: _Optional[int] = ..., co_view_stars: _Optional[int] = ..., reset: _Optional[int] = ..., lora_info: _Optional[_Union[rpt_lora, _Mapping]] = ...) -> None: ...
654
+ def __init__(self, status: _Optional[int] = ..., pos_level: _Optional[int] = ..., gps_stars: _Optional[int] = ..., age: _Optional[int] = ..., lat_std: _Optional[int] = ..., lon_std: _Optional[int] = ..., l2_stars: _Optional[int] = ..., dis_status: _Optional[int] = ..., top4_total_mean: _Optional[int] = ..., co_view_stars: _Optional[int] = ..., reset: _Optional[int] = ..., lora_info: _Optional[_Union[rpt_lora, _Mapping]] = ..., mqtt_rtk_info: _Optional[_Union[mqtt_rtk_connect, _Mapping]] = ...) -> None: ...
634
655
 
635
656
  class rpt_work(_message.Message):
636
- __slots__ = ["area", "bp_hash", "bp_info", "bp_pos_x", "bp_pos_y", "init_cfg_hash", "knife_height", "man_run_speed", "nav_edit_status", "nav_run_mode", "path_hash", "path_pos_x", "path_pos_y", "plan", "progress", "real_path_num", "test_mode_status", "ub_ecode_hash", "ub_path_hash", "ub_zone_hash"]
657
+ __slots__ = ["area", "bp_hash", "bp_info", "bp_pos_x", "bp_pos_y", "init_cfg_hash", "knife_height", "man_run_speed", "nav_edit_status", "nav_heading_state", "nav_run_mode", "path_hash", "path_pos_x", "path_pos_y", "plan", "progress", "real_path_num", "test_mode_status", "ub_ecode_hash", "ub_path_hash", "ub_zone_hash"]
637
658
  AREA_FIELD_NUMBER: _ClassVar[int]
638
659
  BP_HASH_FIELD_NUMBER: _ClassVar[int]
639
660
  BP_INFO_FIELD_NUMBER: _ClassVar[int]
@@ -643,6 +664,7 @@ class rpt_work(_message.Message):
643
664
  KNIFE_HEIGHT_FIELD_NUMBER: _ClassVar[int]
644
665
  MAN_RUN_SPEED_FIELD_NUMBER: _ClassVar[int]
645
666
  NAV_EDIT_STATUS_FIELD_NUMBER: _ClassVar[int]
667
+ NAV_HEADING_STATE_FIELD_NUMBER: _ClassVar[int]
646
668
  NAV_RUN_MODE_FIELD_NUMBER: _ClassVar[int]
647
669
  PATH_HASH_FIELD_NUMBER: _ClassVar[int]
648
670
  PATH_POS_X_FIELD_NUMBER: _ClassVar[int]
@@ -663,6 +685,7 @@ class rpt_work(_message.Message):
663
685
  knife_height: int
664
686
  man_run_speed: int
665
687
  nav_edit_status: int
688
+ nav_heading_state: nav_heading_state_t
666
689
  nav_run_mode: int
667
690
  path_hash: int
668
691
  path_pos_x: int
@@ -674,7 +697,7 @@ class rpt_work(_message.Message):
674
697
  ub_ecode_hash: int
675
698
  ub_path_hash: int
676
699
  ub_zone_hash: int
677
- def __init__(self, plan: _Optional[int] = ..., path_hash: _Optional[int] = ..., progress: _Optional[int] = ..., area: _Optional[int] = ..., bp_info: _Optional[int] = ..., bp_hash: _Optional[int] = ..., bp_pos_x: _Optional[int] = ..., bp_pos_y: _Optional[int] = ..., real_path_num: _Optional[int] = ..., path_pos_x: _Optional[int] = ..., path_pos_y: _Optional[int] = ..., ub_zone_hash: _Optional[int] = ..., ub_path_hash: _Optional[int] = ..., init_cfg_hash: _Optional[int] = ..., ub_ecode_hash: _Optional[int] = ..., nav_run_mode: _Optional[int] = ..., test_mode_status: _Optional[int] = ..., man_run_speed: _Optional[int] = ..., nav_edit_status: _Optional[int] = ..., knife_height: _Optional[int] = ...) -> None: ...
700
+ def __init__(self, plan: _Optional[int] = ..., path_hash: _Optional[int] = ..., progress: _Optional[int] = ..., area: _Optional[int] = ..., bp_info: _Optional[int] = ..., bp_hash: _Optional[int] = ..., bp_pos_x: _Optional[int] = ..., bp_pos_y: _Optional[int] = ..., real_path_num: _Optional[int] = ..., path_pos_x: _Optional[int] = ..., path_pos_y: _Optional[int] = ..., ub_zone_hash: _Optional[int] = ..., ub_path_hash: _Optional[int] = ..., init_cfg_hash: _Optional[int] = ..., ub_ecode_hash: _Optional[int] = ..., nav_run_mode: _Optional[int] = ..., test_mode_status: _Optional[int] = ..., man_run_speed: _Optional[int] = ..., nav_edit_status: _Optional[int] = ..., knife_height: _Optional[int] = ..., nav_heading_state: _Optional[_Union[nav_heading_state_t, _Mapping]] = ...) -> None: ...
678
701
 
679
702
  class systemRapidStateTunnel_msg(_message.Message):
680
703
  __slots__ = ["rapid_state_data", "vio_to_app_info", "vision_point_info", "vision_statistic_info"]
@@ -731,14 +754,14 @@ class vio_to_app_info_msg(_message.Message):
731
754
  def __init__(self, x: _Optional[float] = ..., y: _Optional[float] = ..., heading: _Optional[float] = ..., vio_state: _Optional[int] = ..., brightness: _Optional[int] = ..., detect_feature_num: _Optional[int] = ..., track_feature_num: _Optional[int] = ...) -> None: ...
732
755
 
733
756
  class vision_point_info_msg(_message.Message):
734
- __slots__ = ["lable", "num", "vision_point"]
735
- LABLE_FIELD_NUMBER: _ClassVar[int]
757
+ __slots__ = ["label", "num", "vision_point"]
758
+ LABEL_FIELD_NUMBER: _ClassVar[int]
736
759
  NUM_FIELD_NUMBER: _ClassVar[int]
737
760
  VISION_POINT_FIELD_NUMBER: _ClassVar[int]
738
- lable: int
761
+ label: int
739
762
  num: int
740
763
  vision_point: _containers.RepeatedCompositeFieldContainer[vision_point_msg]
741
- def __init__(self, lable: _Optional[int] = ..., num: _Optional[int] = ..., vision_point: _Optional[_Iterable[_Union[vision_point_msg, _Mapping]]] = ...) -> None: ...
764
+ def __init__(self, label: _Optional[int] = ..., num: _Optional[int] = ..., vision_point: _Optional[_Iterable[_Union[vision_point_msg, _Mapping]]] = ...) -> None: ...
742
765
 
743
766
  class vision_point_msg(_message.Message):
744
767
  __slots__ = ["x", "y", "z"]
@@ -1,5 +1,7 @@
1
1
  from enum import IntEnum
2
2
 
3
+ from pymammotion.data.model.report_info import ConnectData
4
+
3
5
 
4
6
  class bleOrderCmd:
5
7
  allpowerfullRW = 67
@@ -211,15 +213,22 @@ class WorkMode:
211
213
  MODE_CHARGING_PAUSE = 39
212
214
 
213
215
 
214
- def device_connection(value: int, mnet_type: str) -> str:
216
+ def device_connection(connect: ConnectData) -> str:
215
217
  """Return string representation of device connection."""
216
- if value == 1:
217
- return "BLE"
218
218
 
219
- if mnet_type == "NET_USED_TYPE_WIFI":
219
+ if connect.wifi_rssi != 0 and connect.ble_rssi != 0:
220
+ return "WIFI/BLE"
221
+
222
+ if connect.connect_type == 2 or connect.used_net == "NET_USED_TYPE_WIFI" or connect.wifi_rssi != 0:
220
223
  return "WIFI"
221
224
 
222
- return "3G/4G"
225
+ if connect.connect_type == 1 or connect.used_net == "NET_USED_TYPE_MNET":
226
+ return "3G/4G"
227
+
228
+ if connect.ble_rssi != 0:
229
+ return "BLE"
230
+
231
+ return "None"
223
232
 
224
233
 
225
234
  def device_mode(value: int) -> str: