forked from viamrobotics/viam-flutter-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathservice.dart
More file actions
56 lines (47 loc) · 1.92 KB
/
Copy pathservice.dart
File metadata and controls
56 lines (47 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import 'package:grpc/grpc.dart';
import '../../gen/common/v1/common.pb.dart';
import '../../gen/component/powersensor/v1/powersensor.pbgrpc.dart';
import '../../resource/manager.dart';
import '../../utils.dart';
import 'power_sensor.dart';
/// {@category Components}
/// gRPC Service for a [PowerSensor]
class PowerSensorService extends PowerSensorServiceBase {
final ResourceManager _manager;
PowerSensorService(this._manager);
PowerSensor _fromManager(String name) {
try {
return _manager.getResource(PowerSensor.getResourceName(name));
} catch (e) {
throw (GrpcError.notFound(e.toString()));
}
}
@override
Future<GetReadingsResponse> getReadings(ServiceCall call, GetReadingsRequest request) async {
final sensor = _fromManager(request.name);
final result = await sensor.readings(extra: request.extra.toMap());
return GetReadingsResponse()..readings.addAll(result.toStruct().fields);
}
@override
Future<DoCommandResponse> doCommand(ServiceCall call, DoCommandRequest request) async {
final powerSensor = _fromManager(request.name);
final result = await powerSensor.doCommand(request.command.toMap());
return DoCommandResponse()..result = result.toStruct();
}
@override
Future<GetVoltageResponse> getVoltage(ServiceCall call, GetVoltageRequest request) async {
final powerSensor = _fromManager(request.name);
return powerSensor.voltage(extra: request.extra.toMap());
}
@override
Future<GetCurrentResponse> getCurrent(ServiceCall call, GetCurrentRequest request) async {
final powerSensor = _fromManager(request.name);
return powerSensor.current(extra: request.extra.toMap());
}
@override
Future<GetPowerResponse> getPower(ServiceCall call, GetPowerRequest request) async {
final powerSensor = _fromManager(request.name);
final power = await powerSensor.power(extra: request.extra.toMap());
return GetPowerResponse()..watts = power;
}
}