Skip to content

Commit c81e79d

Browse files
Merge pull request mavlink#310 from mavlink/update-proto
Update proto submodule and generate code
2 parents 11ca43f + 441a707 commit c81e79d

File tree

10 files changed

+2391
-86
lines changed

10 files changed

+2391
-86
lines changed

mavsdk/camera.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,42 @@ def __str__(self):
5050
return self.name
5151

5252

53+
class PhotosRange(Enum):
54+
"""
55+
Photos range type.
56+
57+
Values
58+
------
59+
ALL
60+
All the photos present on the camera
61+
62+
SINCE_CONNECTION
63+
Photos taken since MAVSDK got connected
64+
65+
"""
66+
67+
68+
ALL = 0
69+
SINCE_CONNECTION = 1
70+
71+
def translate_to_rpc(self):
72+
if self == PhotosRange.ALL:
73+
return camera_pb2.PHOTOS_RANGE_ALL
74+
if self == PhotosRange.SINCE_CONNECTION:
75+
return camera_pb2.PHOTOS_RANGE_SINCE_CONNECTION
76+
77+
@staticmethod
78+
def translate_from_rpc(rpc_enum_value):
79+
""" Parses a gRPC response """
80+
if rpc_enum_value == camera_pb2.PHOTOS_RANGE_ALL:
81+
return PhotosRange.ALL
82+
if rpc_enum_value == camera_pb2.PHOTOS_RANGE_SINCE_CONNECTION:
83+
return PhotosRange.SINCE_CONNECTION
84+
85+
def __str__(self):
86+
return self.name
87+
88+
5389
class CameraResult:
5490
"""
5591
Result type.
@@ -1717,6 +1753,49 @@ async def set_mode(self, mode):
17171753
raise CameraError(result, "set_mode()", mode)
17181754

17191755

1756+
async def list_photos(self, photos_range):
1757+
"""
1758+
List photos available on the camera.
1759+
1760+
Parameters
1761+
----------
1762+
photos_range : PhotosRange
1763+
Which photos should be listed (all or since connection)
1764+
1765+
Returns
1766+
-------
1767+
capture_infos : [CaptureInfo]
1768+
List of capture infos (representing the photos)
1769+
1770+
Raises
1771+
------
1772+
CameraError
1773+
If the request fails. The error contains the reason for the failure.
1774+
"""
1775+
1776+
request = camera_pb2.ListPhotosRequest()
1777+
1778+
1779+
1780+
request.photos_range = photos_range.translate_to_rpc()
1781+
1782+
1783+
response = await self._stub.ListPhotos(request)
1784+
1785+
1786+
result = self._extract_result(response)
1787+
1788+
if result.result is not CameraResult.Result.SUCCESS:
1789+
raise CameraError(result, "list_photos()", photos_range)
1790+
1791+
1792+
capture_infos = []
1793+
for capture_infos_rpc in response.capture_infos:
1794+
capture_infos.append(CaptureInfo.translate_from_rpc(capture_infos_rpc))
1795+
1796+
return capture_infos
1797+
1798+
17201799
async def mode(self):
17211800
"""
17221801
Subscribe to camera mode updates.

mavsdk/camera_pb2.py

Lines changed: 214 additions & 85 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mavsdk/camera_pb2_grpc.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ def __init__(self, channel):
6262
request_serializer=camera_dot_camera__pb2.SetModeRequest.SerializeToString,
6363
response_deserializer=camera_dot_camera__pb2.SetModeResponse.FromString,
6464
)
65+
self.ListPhotos = channel.unary_unary(
66+
'/mavsdk.rpc.camera.CameraService/ListPhotos',
67+
request_serializer=camera_dot_camera__pb2.ListPhotosRequest.SerializeToString,
68+
response_deserializer=camera_dot_camera__pb2.ListPhotosResponse.FromString,
69+
)
6570
self.SubscribeMode = channel.unary_stream(
6671
'/mavsdk.rpc.camera.CameraService/SubscribeMode',
6772
request_serializer=camera_dot_camera__pb2.SubscribeModeRequest.SerializeToString,
@@ -189,6 +194,14 @@ def SetMode(self, request, context):
189194
context.set_details('Method not implemented!')
190195
raise NotImplementedError('Method not implemented!')
191196

197+
def ListPhotos(self, request, context):
198+
"""
199+
List photos available on the camera.
200+
"""
201+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
202+
context.set_details('Method not implemented!')
203+
raise NotImplementedError('Method not implemented!')
204+
192205
def SubscribeMode(self, request, context):
193206
"""
194207
Subscribe to camera mode updates.
@@ -318,6 +331,11 @@ def add_CameraServiceServicer_to_server(servicer, server):
318331
request_deserializer=camera_dot_camera__pb2.SetModeRequest.FromString,
319332
response_serializer=camera_dot_camera__pb2.SetModeResponse.SerializeToString,
320333
),
334+
'ListPhotos': grpc.unary_unary_rpc_method_handler(
335+
servicer.ListPhotos,
336+
request_deserializer=camera_dot_camera__pb2.ListPhotosRequest.FromString,
337+
response_serializer=camera_dot_camera__pb2.ListPhotosResponse.SerializeToString,
338+
),
321339
'SubscribeMode': grpc.unary_stream_rpc_method_handler(
322340
servicer.SubscribeMode,
323341
request_deserializer=camera_dot_camera__pb2.SubscribeModeRequest.FromString,
@@ -522,6 +540,23 @@ def SetMode(request,
522540
options, channel_credentials,
523541
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
524542

543+
@staticmethod
544+
def ListPhotos(request,
545+
target,
546+
options=(),
547+
channel_credentials=None,
548+
call_credentials=None,
549+
insecure=False,
550+
compression=None,
551+
wait_for_ready=None,
552+
timeout=None,
553+
metadata=None):
554+
return grpc.experimental.unary_unary(request, target, '/mavsdk.rpc.camera.CameraService/ListPhotos',
555+
camera_dot_camera__pb2.ListPhotosRequest.SerializeToString,
556+
camera_dot_camera__pb2.ListPhotosResponse.FromString,
557+
options, channel_credentials,
558+
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
559+
525560
@staticmethod
526561
def SubscribeMode(request,
527562
target,

mavsdk/source/plugins/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,4 @@ Plugins
2424
telemetry
2525
tune
2626
failure
27+
tracking_server
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
TrackingServer
2+
====
3+
4+
.. automodule:: mavsdk.tracking_server
5+
:members:
6+
:undoc-members:
7+
:show-inheritance:
8+
:exclude-members: translate_from_rpc, translate_to_rpc

mavsdk/system.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from . import param
2222
from . import shell
2323
from . import telemetry
24+
from . import tracking_server
2425
from . import tune
2526

2627
from . import bin
@@ -115,6 +116,7 @@ async def _init_plugins(self, host, port):
115116
self._plugins["param"] = param.Param(plugin_manager)
116117
self._plugins["shell"] = shell.Shell(plugin_manager)
117118
self._plugins["telemetry"] = telemetry.Telemetry(plugin_manager)
119+
self._plugins["tracking_server"] = tracking_server.TrackingServer(plugin_manager)
118120
self._plugins["tune"] = tune.Tune(plugin_manager)
119121

120122
@staticmethod
@@ -236,6 +238,12 @@ def telemetry(self) -> telemetry.Telemetry:
236238
raise RuntimeError(self.error_uninitialized("Telemetry"))
237239
return self._plugins["telemetry"]
238240

241+
@property
242+
def tracking_server(self) -> tracking_server.TrackingServer:
243+
if "tracking_server" not in self._plugins:
244+
raise RuntimeError(self.error_uninitialized("TrackingServer"))
245+
return self._plugins["tracking_server"]
246+
239247
@property
240248
def tune(self) -> tune.Tune:
241249
if "tune" not in self._plugins:

0 commit comments

Comments
 (0)