Skip to content

Commit 5ca369c

Browse files
authored
RSDK-3303 - first cut camera server side (#30)
1 parent abdb46f commit 5ca369c

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import 'package:grpc/grpc.dart';
2+
import 'package:viam_sdk/src/gen/google/api/httpbody.pb.dart';
3+
4+
import '../../gen/common/v1/common.pb.dart';
5+
import '../../gen/component/camera/v1/camera.pbgrpc.dart';
6+
import '../../media/image.dart';
7+
import '../../resource/manager.dart';
8+
import '../../utils.dart';
9+
import 'camera.dart';
10+
11+
class CameraService extends CameraServiceBase {
12+
final ResourceManager _manager;
13+
14+
CameraService(this._manager);
15+
16+
Camera _fromManager(String name) {
17+
try {
18+
return _manager.getResource(Camera.getResourceName(name));
19+
} catch (e) {
20+
throw (GrpcError.notFound(e.toString()));
21+
}
22+
}
23+
24+
@override
25+
Future<DoCommandResponse> doCommand(ServiceCall call, DoCommandRequest request) async {
26+
final camera = _fromManager(request.name);
27+
final result = await camera.doCommand(request.command.toMap());
28+
return DoCommandResponse(result: result.toStruct());
29+
}
30+
31+
@override
32+
Future<GetImageResponse> getImage(ServiceCall call, GetImageRequest request) async {
33+
final camera = _fromManager(request.name);
34+
final image = await camera.image(mimeType: MimeType.fromString(request.mimeType));
35+
return GetImageResponse(mimeType: image.mimeType.toString(), image: image.raw);
36+
}
37+
38+
@override
39+
Future<GetPointCloudResponse> getPointCloud(ServiceCall call, GetPointCloudRequest request) async {
40+
final camera = _fromManager(request.name);
41+
final image = await camera.pointCloud();
42+
return GetPointCloudResponse(mimeType: image.mimeType.toString(), pointCloud: image.raw);
43+
}
44+
45+
@override
46+
Future<GetPropertiesResponse> getProperties(ServiceCall call, GetPropertiesRequest request) async {
47+
final camera = _fromManager(request.name);
48+
final properties = await camera.properties();
49+
return GetPropertiesResponse(
50+
supportsPcd: properties.supportsPcd,
51+
intrinsicParameters: properties.intrinsicParameters,
52+
distortionParameters: properties.distortionParameters);
53+
}
54+
55+
@override
56+
Future<HttpBody> renderFrame(ServiceCall call, RenderFrameRequest request) async {
57+
final camera = _fromManager(request.name);
58+
final image = await camera.image(mimeType: MimeType.fromString(request.mimeType));
59+
return HttpBody(data: image.raw, contentType: image.mimeType.toString());
60+
}
61+
}

0 commit comments

Comments
 (0)