-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #12 from tank104/AddCameraServer
Added camera_server to package.
- Loading branch information
Showing
9 changed files
with
260 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Reactive; | ||
using System.Reactive.Disposables; | ||
using System.Reactive.Linq; | ||
using System.Threading; | ||
using System.Threading.Tasks; | ||
using Grpc.Net.Client; | ||
using Mavsdk.Rpc.CameraServer; | ||
|
||
using Version = Mavsdk.Rpc.Info.Version; | ||
|
||
namespace Mavsdk.Plugins | ||
{ | ||
public class CameraServer : ICameraServer | ||
{ | ||
private readonly CameraServerService.CameraServerServiceClient _cameraServerServiceClient; | ||
|
||
internal CameraServer(GrpcChannel channel) | ||
{ | ||
_cameraServerServiceClient = new CameraServerService.CameraServerServiceClient(channel); | ||
} | ||
|
||
public IObservable<Unit> SetInformation(Information information) | ||
{ | ||
return Observable.Create<Unit>(observer => | ||
{ | ||
var request = new SetInformationRequest(); | ||
request.Information = information; | ||
var setInformationResponse = _cameraServerServiceClient.SetInformation(request); | ||
var cameraServerResult = setInformationResponse.CameraServerResult; | ||
if (cameraServerResult.Result == CameraServerResult.Types.Result.Success) | ||
{ | ||
observer.OnCompleted(); | ||
} | ||
else | ||
{ | ||
observer.OnError(new CameraServerException(cameraServerResult.Result, cameraServerResult.ResultStr)); | ||
} | ||
return Task.FromResult(Disposable.Empty); | ||
}); | ||
} | ||
|
||
public IObservable<Unit> SetInProgress(bool inProgress) | ||
{ | ||
return Observable.Create<Unit>(observer => | ||
{ | ||
var request = new SetInProgressRequest(); | ||
request.InProgress = inProgress; | ||
var setInProgressResponse = _cameraServerServiceClient.SetInProgress(request); | ||
var cameraServerResult = setInProgressResponse.CameraServerResult; | ||
if (cameraServerResult.Result == CameraServerResult.Types.Result.Success) | ||
{ | ||
observer.OnCompleted(); | ||
} | ||
else | ||
{ | ||
observer.OnError(new CameraServerException(cameraServerResult.Result, cameraServerResult.ResultStr)); | ||
} | ||
return Task.FromResult(Disposable.Empty); | ||
}); | ||
} | ||
|
||
public IObservable<int> TakePhoto() | ||
{ | ||
return Observable.Using(() => _cameraServerServiceClient.SubscribeTakePhoto(new SubscribeTakePhotoRequest()), | ||
reader => Observable.Create( | ||
async (IObserver<int> observer) => | ||
{ | ||
try | ||
{ | ||
while (await reader.ResponseStream.MoveNext(CancellationToken.None)) | ||
{ | ||
observer.OnNext(reader.ResponseStream.Current.Index); | ||
} | ||
observer.OnCompleted(); | ||
} | ||
catch (Exception ex) | ||
{ | ||
observer.OnError(ex); | ||
} | ||
} | ||
)); | ||
} | ||
|
||
public IObservable<Unit> RespondTakePhoto(TakePhotoFeedback takePhotoFeedback, CaptureInfo captureInfo) | ||
{ | ||
return Observable.Create<Unit>(observer => | ||
{ | ||
var request = new RespondTakePhotoRequest(); | ||
request.TakePhotoFeedback = takePhotoFeedback; | ||
request.CaptureInfo = captureInfo; | ||
var respondTakePhotoResponse = _cameraServerServiceClient.RespondTakePhoto(request); | ||
var cameraServerResult = respondTakePhotoResponse.CameraServerResult; | ||
if (cameraServerResult.Result == CameraServerResult.Types.Result.Success) | ||
{ | ||
observer.OnCompleted(); | ||
} | ||
else | ||
{ | ||
observer.OnError(new CameraServerException(cameraServerResult.Result, cameraServerResult.ResultStr)); | ||
} | ||
return Task.FromResult(Disposable.Empty); | ||
}); | ||
} | ||
} | ||
|
||
public class CameraServerException : Exception | ||
{ | ||
public CameraServerResult.Types.Result Result { get; } | ||
public string ResultStr { get; } | ||
|
||
public CameraServerException(CameraServerResult.Types.Result result, string resultStr) | ||
{ | ||
Result = result; | ||
ResultStr = resultStr; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Reactive; | ||
using Mavsdk.Rpc.CameraServer; | ||
|
||
using Version = Mavsdk.Rpc.Info.Version; | ||
|
||
namespace Mavsdk.Plugins | ||
{ | ||
public interface ICameraServer | ||
{ | ||
IObservable<Unit> SetInformation(Information information); | ||
IObservable<Unit> SetInProgress(bool inProgress); | ||
IObservable<int> TakePhoto(); | ||
IObservable<Unit> RespondTakePhoto(TakePhotoFeedback takePhotoFeedback, CaptureInfo captureInfo); | ||
} | ||
} |
Submodule proto
updated
20 files