@@ -66,6 +66,33 @@ class DiscoveryQuery {
66
66
Struct get extraStruct => extra.toStruct ();
67
67
}
68
68
69
+ /// {@category Viam SDK}
70
+ /// Represents the result of a discovery query.
71
+ class Discovery {
72
+ final String subtype;
73
+ final String model;
74
+ final Map <String , dynamic > results;
75
+
76
+ Discovery ({
77
+ required this .subtype,
78
+ required this .model,
79
+ required this .results,
80
+ });
81
+
82
+ factory Discovery .fromProto (rpb.Discovery proto) {
83
+ return Discovery (
84
+ subtype: proto.query.subtype,
85
+ model: proto.query.model,
86
+ results: proto.results.toMap (),
87
+ );
88
+ }
89
+
90
+ @override
91
+ String toString () {
92
+ return 'Discovery(subtype: $subtype , model: $model , results: $results )' ;
93
+ }
94
+ }
95
+
69
96
/// {@category Viam SDK}
70
97
/// gRPC client for a Robot. This class should be used for all interactions with a robot.
71
98
///
@@ -287,13 +314,14 @@ class RobotClient {
287
314
/// var queries = [DiscoveryQuery(subtype: 'camera', model: 'webcam', extra: {'username': 'admin', 'password': 'admin'})];
288
315
/// var discoveredComponents = await machine.discoverComponents(queries);
289
316
/// ```
290
- Future <rpb. DiscoverComponentsResponse > discoverComponents ([List <DiscoveryQuery > queries = const []]) async {
317
+ Future <List < Discovery > > discoverComponents ([List <DiscoveryQuery > queries = const []]) async {
291
318
final request = rpb.DiscoverComponentsRequest ()
292
319
..queries.addAll (queries.map ((sdkQuery) => rpb.DiscoveryQuery ()
293
320
..subtype = sdkQuery.subtype
294
321
..model = sdkQuery.model
295
322
..extra = sdkQuery.extraStruct));
296
323
297
- return await _client.discoverComponents (request);
324
+ final response = await _client.discoverComponents (request);
325
+ return response.discovery.map ((d) => Discovery .fromProto (d)).toList ();
298
326
}
299
327
}
0 commit comments