-
Notifications
You must be signed in to change notification settings - Fork 110
/
sensor.go
57 lines (47 loc) · 1.83 KB
/
sensor.go
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
57
// Package sensor defines an abstract sensing device that can provide measurement readings.
package sensor
import (
pb "go.viam.com/api/component/sensor/v1"
"go.viam.com/rdk/data"
"go.viam.com/rdk/resource"
"go.viam.com/rdk/robot"
)
func init() {
resource.RegisterAPI(API, resource.APIRegistration[Sensor]{
RPCServiceServerConstructor: NewRPCServiceServer,
RPCServiceHandler: pb.RegisterSensorServiceHandlerFromEndpoint,
RPCServiceDesc: &pb.SensorService_ServiceDesc,
RPCClient: NewClientFromConn,
})
data.RegisterCollector(data.MethodMetadata{
API: API,
MethodName: readings.String(),
}, newReadingsCollector)
}
// SubtypeName is a constant that identifies the component resource API string "Sensor".
const SubtypeName = "sensor"
// API is a variable that identifies the component resource API.
var API = resource.APINamespaceRDK.WithComponentType(SubtypeName)
// Named is a helper for getting the named Sensor's typed resource name.
func Named(name string) resource.Name {
return resource.NewName(API, name)
}
// A Sensor represents a general purpose sensors that can give arbitrary readings
// of some thing that it is sensing.
type Sensor interface {
resource.Resource
resource.Sensor
}
// FromDependencies is a helper for getting the named sensor from a collection of
// dependencies.
func FromDependencies(deps resource.Dependencies, name string) (Sensor, error) {
return resource.FromDependencies[Sensor](deps, Named(name))
}
// FromRobot is a helper for getting the named Sensor from the given Robot.
func FromRobot(r robot.Robot, name string) (Sensor, error) {
return robot.ResourceFromRobot[Sensor](r, Named(name))
}
// NamesFromRobot is a helper for getting all sensor names from the given Robot.
func NamesFromRobot(r robot.Robot) []string {
return robot.NamesByAPI(r, API)
}