pymammotion 0.4.0a4__tar.gz → 0.4.0a5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/PKG-INFO +1 -1
  2. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/device.py +28 -4
  3. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/device_info.py +12 -0
  4. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/state_manager.py +7 -1
  5. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pyproject.toml +2 -2
  6. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/LICENSE +0 -0
  7. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/README.md +0 -0
  8. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/__init__.py +0 -0
  9. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/aliyun/__init__.py +0 -0
  10. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/aliyun/cloud_gateway.py +0 -0
  11. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/aliyun/cloud_service.py +0 -0
  12. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/aliyun/model/aep_response.py +0 -0
  13. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/aliyun/model/connect_response.py +0 -0
  14. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/aliyun/model/dev_by_account_response.py +0 -0
  15. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/aliyun/model/login_by_oauth_response.py +0 -0
  16. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/aliyun/model/regions_response.py +0 -0
  17. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/aliyun/model/session_by_authcode_response.py +0 -0
  18. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/aliyun/model/stream_subscription_response.py +0 -0
  19. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/aliyun/tmp_constant.py +0 -0
  20. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/bluetooth/__init__.py +0 -0
  21. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/bluetooth/ble.py +0 -0
  22. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/bluetooth/ble_message.py +0 -0
  23. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/bluetooth/const.py +0 -0
  24. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/bluetooth/data/__init__.py +0 -0
  25. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/bluetooth/data/convert.py +0 -0
  26. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/bluetooth/data/framectrldata.py +0 -0
  27. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/bluetooth/data/notifydata.py +0 -0
  28. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/bluetooth/model/__init__.py +0 -0
  29. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/bluetooth/model/atomic_integer.py +0 -0
  30. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/const.py +0 -0
  31. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/__init__.py +0 -0
  32. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/__init__.py +0 -0
  33. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/account.py +0 -0
  34. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/device_config.py +0 -0
  35. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/device_limits.py +0 -0
  36. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/enums.py +0 -0
  37. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/excute_boarder_params.py +0 -0
  38. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/execute_boarder.py +0 -0
  39. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/generate_route_information.py +0 -0
  40. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/hash_list.py +0 -0
  41. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/location.py +0 -0
  42. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/mowing_modes.py +0 -0
  43. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/plan.py +0 -0
  44. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/rapid_state.py +0 -0
  45. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/raw_data.py +0 -0
  46. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/region_data.py +0 -0
  47. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/model/report_info.py +0 -0
  48. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/mqtt/__init__.py +0 -0
  49. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/mqtt/event.py +0 -0
  50. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/mqtt/properties.py +0 -0
  51. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/data/mqtt/status.py +0 -0
  52. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/event/__init__.py +0 -0
  53. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/event/event.py +0 -0
  54. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/http/_init_.py +0 -0
  55. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/http/encryption.py +0 -0
  56. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/http/http.py +0 -0
  57. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/http/model/http.py +0 -0
  58. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/__init__.py +0 -0
  59. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/commands/__init__.py +0 -0
  60. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/commands/abstract_message.py +0 -0
  61. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/commands/mammotion_command.py +0 -0
  62. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/commands/messages/__init__.py +0 -0
  63. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/commands/messages/driver.py +0 -0
  64. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/commands/messages/media.py +0 -0
  65. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/commands/messages/navigation.py +0 -0
  66. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/commands/messages/network.py +0 -0
  67. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/commands/messages/ota.py +0 -0
  68. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/commands/messages/system.py +0 -0
  69. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/commands/messages/video.py +0 -0
  70. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/control/__init__.py +0 -0
  71. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/control/joystick.py +0 -0
  72. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/devices/__init__.py +0 -0
  73. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/devices/base.py +0 -0
  74. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/devices/mammotion.py +0 -0
  75. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/devices/mammotion_bluetooth.py +0 -0
  76. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mammotion/devices/mammotion_cloud.py +0 -0
  77. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mqtt/__init__.py +0 -0
  78. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mqtt/linkkit/__init__.py +0 -0
  79. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mqtt/linkkit/h2client.py +0 -0
  80. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mqtt/linkkit/linkkit.py +0 -0
  81. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mqtt/mammotion_future.py +0 -0
  82. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/mqtt/mammotion_mqtt.py +0 -0
  83. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/__init__.py +0 -0
  84. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/basestation.proto +0 -0
  85. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/basestation.py +0 -0
  86. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/basestation_pb2.py +0 -0
  87. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/basestation_pb2.pyi +0 -0
  88. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/common.proto +0 -0
  89. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/common.py +0 -0
  90. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/common_pb2.py +0 -0
  91. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/common_pb2.pyi +0 -0
  92. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/dev_net.proto +0 -0
  93. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/dev_net.py +0 -0
  94. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/dev_net_pb2.py +0 -0
  95. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/dev_net_pb2.pyi +0 -0
  96. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/luba_msg.proto +0 -0
  97. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/luba_msg.py +0 -0
  98. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/luba_msg_pb2.py +0 -0
  99. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/luba_msg_pb2.pyi +0 -0
  100. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/luba_mul.proto +0 -0
  101. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/luba_mul.py +0 -0
  102. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/luba_mul_pb2.py +0 -0
  103. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/luba_mul_pb2.pyi +0 -0
  104. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_driver.proto +0 -0
  105. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_driver.py +0 -0
  106. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_driver_pb2.py +0 -0
  107. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_driver_pb2.pyi +0 -0
  108. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_nav.proto +0 -0
  109. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_nav.py +0 -0
  110. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_nav_pb2.py +0 -0
  111. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_nav_pb2.pyi +0 -0
  112. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_ota.proto +0 -0
  113. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_ota.py +0 -0
  114. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_ota_pb2.py +0 -0
  115. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_ota_pb2.pyi +0 -0
  116. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_pept.proto +0 -0
  117. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_pept.py +0 -0
  118. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_pept_pb2.py +0 -0
  119. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_pept_pb2.pyi +0 -0
  120. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_sys.proto +0 -0
  121. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_sys.py +0 -0
  122. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_sys_pb2.py +0 -0
  123. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/proto/mctrl_sys_pb2.pyi +0 -0
  124. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/py.typed +0 -0
  125. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/utility/constant/__init__.py +0 -0
  126. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/utility/constant/device_constant.py +0 -0
  127. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/utility/conversions.py +0 -0
  128. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/utility/datatype_converter.py +0 -0
  129. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/utility/device_config.py +0 -0
  130. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/utility/device_type.py +0 -0
  131. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/utility/map.py +0 -0
  132. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/utility/movement.py +0 -0
  133. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/utility/periodic.py +0 -0
  134. {pymammotion-0.4.0a4 → pymammotion-0.4.0a5}/pymammotion/utility/rocker_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pymammotion
3
- Version: 0.4.0a4
3
+ Version: 0.4.0a5
4
4
  Summary:
5
5
  License: GPL-3.0
6
6
  Author: Michael Arthur
@@ -7,7 +7,7 @@ import betterproto
7
7
  from mashumaro.mixins.orjson import DataClassORJSONMixin
8
8
 
9
9
  from pymammotion.data.model import HashList, RapidState
10
- from pymammotion.data.model.device_info import MowerInfo
10
+ from pymammotion.data.model.device_info import MowerInfo, DeviceFirmwares
11
11
  from pymammotion.data.model.location import Location
12
12
  from pymammotion.data.model.report_info import ReportData
13
13
  from pymammotion.data.mqtt.properties import ThingPropertiesMessage
@@ -16,7 +16,7 @@ from pymammotion.proto.mctrl_sys import (
16
16
  MowToAppInfoT,
17
17
  ReportInfoData,
18
18
  SystemRapidStateTunnelMsg,
19
- SystemUpdateBufMsg,
19
+ SystemUpdateBufMsg, DeviceFwInfo,
20
20
  )
21
21
  from pymammotion.utility.constant import WorkMode
22
22
  from pymammotion.utility.conversions import parse_double
@@ -33,6 +33,7 @@ class MowingDevice(DataClassORJSONMixin):
33
33
  location: Location = field(default_factory=Location)
34
34
  mowing_state: RapidState = field(default_factory=RapidState)
35
35
  report_data: ReportData = field(default_factory=ReportData)
36
+ device_firmwares: DeviceFirmwares = field(default_factory=DeviceFirmwares)
36
37
  err_code_list: list = field(default_factory=list)
37
38
  err_code_list_time: Optional[list] = field(default_factory=list)
38
39
  error_codes: dict[str, ErrorInfo] = field(default_factory=dict)
@@ -84,7 +85,7 @@ class MowingDevice(DataClassORJSONMixin):
84
85
  for index, location in enumerate(toapp_report_data.locations):
85
86
  if index == 0 and location.real_pos_y != 0:
86
87
  self.location.position_type = location.pos_type
87
- self.location.orientation = location.real_toward / 10000
88
+ self.location.orientation = int(location.real_toward / 10000)
88
89
  self.location.device = coordinate_converter.enu_to_lla(
89
90
  parse_double(location.real_pos_y, 4.0), parse_double(location.real_pos_x, 4.0)
90
91
  )
@@ -93,13 +94,16 @@ class MowingDevice(DataClassORJSONMixin):
93
94
  location.zone_hash if self.report_data.dev.sys_status == WorkMode.MODE_WORKING else 0
94
95
  )
95
96
 
97
+ if toapp_report_data.fw_info:
98
+ self.update_device_firmwares(toapp_report_data.fw_info)
99
+
96
100
  self.report_data.update(toapp_report_data.to_dict(casing=betterproto.Casing.SNAKE))
97
101
 
98
102
  def run_state_update(self, rapid_state: SystemRapidStateTunnelMsg) -> None:
99
103
  coordinate_converter = CoordinateConverter(self.location.RTK.latitude, self.location.RTK.longitude)
100
104
  self.mowing_state = RapidState().from_raw(rapid_state.rapid_state_data)
101
105
  self.location.position_type = self.mowing_state.pos_type
102
- self.location.orientation = self.mowing_state.toward / 10000
106
+ self.location.orientation = int(self.mowing_state.toward / 10000)
103
107
  self.location.device = coordinate_converter.enu_to_lla(
104
108
  parse_double(self.mowing_state.pos_y, 4.0), parse_double(self.mowing_state.pos_x, 4.0)
105
109
  )
@@ -113,3 +117,23 @@ class MowingDevice(DataClassORJSONMixin):
113
117
 
114
118
  def report_missing_data(self) -> None:
115
119
  """Report missing data so we can refetch it."""
120
+
121
+ def update_device_firmwares(self, fw_info: DeviceFwInfo) -> None:
122
+ """Sets firmware versions on all parts of the robot or RTK."""
123
+ for mod in fw_info.mod:
124
+ match mod.type:
125
+ case 1:
126
+ self.device_firmwares.main_controller = mod.version
127
+ case 3:
128
+ self.device_firmwares.left_motor_driver = mod.version
129
+ case 4:
130
+ self.device_firmwares.right_motor_driver = mod.version
131
+ case 5:
132
+ self.device_firmwares.rtk_rover_station = mod.version
133
+ case 101:
134
+ # RTK main board
135
+ self.device_firmwares.main_controller = mod.version
136
+ case 102:
137
+ self.device_firmwares.rtk_version = mod.version
138
+ case 103:
139
+ self.device_firmwares.lora_version = mod.version
@@ -23,3 +23,15 @@ class MowerInfo(DataClassORJSONMixin):
23
23
  swversion: str = ""
24
24
  product_key: str = ""
25
25
  model_id: str = ""
26
+
27
+ @dataclass
28
+ class DeviceFirmwares(DataClassORJSONMixin):
29
+ device_version: str = ""
30
+ left_motor_driver: str = ""
31
+ lora_version: str = ""
32
+ main_controller: str = ""
33
+ model_name: str = ""
34
+ right_motor_driver: str = ""
35
+ rtk_rover_station: str = ""
36
+ rtk_version: str = ""
37
+ version: str = ""
@@ -10,7 +10,7 @@ from pymammotion.data.model.device import MowingDevice
10
10
  from pymammotion.data.model.device_info import SideLight
11
11
  from pymammotion.data.model.hash_list import AreaHashNameList
12
12
  from pymammotion.data.mqtt.properties import ThingPropertiesMessage
13
- from pymammotion.proto.dev_net import WifiIotStatusReport
13
+ from pymammotion.proto.dev_net import WifiIotStatusReport, DrvDevInfoResp
14
14
  from pymammotion.proto.luba_msg import LubaMsg
15
15
  from pymammotion.proto.mctrl_nav import AppGetAllAreaHashName, NavGetCommDataAck, NavGetHashListAck, SvgMessageAckT
16
16
  from pymammotion.proto.mctrl_sys import DeviceProductTypeInfoT, TimeCtrlLight
@@ -121,6 +121,12 @@ class StateManager:
121
121
  case "toapp_wifi_iot_status":
122
122
  wifi_iot_status: WifiIotStatusReport = net_msg[1]
123
123
  self._device.mower_state.product_key = wifi_iot_status.productkey
124
+ case "toapp_devinfo_resp":
125
+ toapp_devinfo_resp: DrvDevInfoResp = net_msg[1]
126
+ for resp in toapp_devinfo_resp.resp_ids:
127
+ if resp.res is "DRV_RESULT_SUC":
128
+ self._device.mower_state.swversion = resp.info
129
+ self._device.device_firmwares.device_version = resp.info
124
130
 
125
131
  def _update_mul_data(self, message) -> None:
126
132
  pass
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [project]
6
6
  name = "pymammotion"
7
- version = "0.4.0-alpha4"
7
+ version = "0.4.0-alpha5"
8
8
  license = "GPL-3.0"
9
9
  description = ""
10
10
  readme = "README.md"
@@ -65,7 +65,7 @@ mypy = "^1.11.2"
65
65
  autotyping = "^24.3.0"
66
66
 
67
67
  [tool.bumpver]
68
- current_version = "0.4.0-alpha4"
68
+ current_version = "0.4.0-alpha5"
69
69
  version_pattern = "MAJOR.MINOR.PATCH"
70
70
  commit_message = "Bump version {old_version} -> {new_version}"
71
71
  commit = true
File without changes
File without changes