Added support for remote0
This commit is contained in:
149
pkg/service/interface.go
Normal file
149
pkg/service/interface.go
Normal file
@@ -0,0 +1,149 @@
|
||||
package hwsensorsservice
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"google.golang.org/grpc"
|
||||
|
||||
"github.com/hashicorp/go-plugin"
|
||||
"github.com/shayne/hwinfo-streamdeck/pkg/service/proto"
|
||||
)
|
||||
|
||||
// Handshake is a common handshake that is shared by plugin and host.
|
||||
var Handshake = plugin.HandshakeConfig{
|
||||
// This isn't required when using VersionedPlugins
|
||||
ProtocolVersion: 1,
|
||||
MagicCookieKey: "BASIC_PLUGIN",
|
||||
MagicCookieValue: "hello",
|
||||
}
|
||||
|
||||
// PluginMap is the map of plugins we can dispense.
|
||||
var PluginMap = map[string]plugin.Plugin{
|
||||
"hwinfoplugin": &HardwareServicePlugin{},
|
||||
}
|
||||
|
||||
// HardwareService is the interface that we're exposing as a plugin.
|
||||
type HardwareService interface {
|
||||
PollTime() (uint64, error)
|
||||
Sensors() ([]Sensor, error)
|
||||
ReadingsForSensorID(id string) ([]Reading, error)
|
||||
}
|
||||
|
||||
// HardwareServicePlugin is the implementation of plugin.GRPCPlugin so we can serve/consume this.
|
||||
type HardwareServicePlugin struct {
|
||||
// GRPCPlugin must still implement the Plugin interface
|
||||
plugin.Plugin
|
||||
// Concrete implementation, written in Go. This is only used for plugins
|
||||
// that are written in Go.
|
||||
Impl HardwareService
|
||||
}
|
||||
|
||||
// GRPCServer constructor
|
||||
func (p *HardwareServicePlugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error {
|
||||
proto.RegisterHWServiceServer(s, &GRPCServer{Impl: p.Impl})
|
||||
return nil
|
||||
}
|
||||
|
||||
// GRPCClient constructor
|
||||
func (p *HardwareServicePlugin) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error) {
|
||||
return &GRPCClient{Client: proto.NewHWServiceClient(c)}, nil
|
||||
}
|
||||
|
||||
// Sensor is the common hardware interface for a sensor
|
||||
type Sensor interface {
|
||||
ID() string
|
||||
Name() string
|
||||
}
|
||||
|
||||
// ReadingType enum of value/unit type for reading
|
||||
type ReadingType int
|
||||
|
||||
const (
|
||||
// ReadingTypeNone no type
|
||||
ReadingTypeNone ReadingType = iota
|
||||
// ReadingTypeTemp temperature in celsius
|
||||
ReadingTypeTemp
|
||||
// ReadingTypeVolt voltage
|
||||
ReadingTypeVolt
|
||||
// ReadingTypeFan RPM
|
||||
ReadingTypeFan
|
||||
// ReadingTypeCurrent amps
|
||||
ReadingTypeCurrent
|
||||
// ReadingTypePower watts
|
||||
ReadingTypePower
|
||||
// ReadingTypeClock Mhz
|
||||
ReadingTypeClock
|
||||
// ReadingTypeUsage e.g. MBs
|
||||
ReadingTypeUsage
|
||||
// ReadingTypeOther other
|
||||
ReadingTypeOther
|
||||
)
|
||||
|
||||
func (t ReadingType) String() string {
|
||||
return [...]string{"None", "Temp", "Volt", "Fan", "Current", "Power", "Clock", "Usage", "Other"}[t]
|
||||
}
|
||||
|
||||
// Reading is the common hardware interface for a sensor's reading
|
||||
type Reading interface {
|
||||
ID() int32
|
||||
TypeI() int32
|
||||
Type() string
|
||||
Label() string
|
||||
Unit() string
|
||||
Value() float64
|
||||
ValueMin() float64
|
||||
ValueMax() float64
|
||||
ValueAvg() float64
|
||||
}
|
||||
|
||||
type sensor struct {
|
||||
*proto.Sensor
|
||||
}
|
||||
|
||||
func (s sensor) ID() string {
|
||||
return s.Sensor.GetID()
|
||||
}
|
||||
|
||||
func (s sensor) Name() string {
|
||||
return s.Sensor.GetName()
|
||||
}
|
||||
|
||||
type reading struct {
|
||||
*proto.Reading
|
||||
}
|
||||
|
||||
func (r reading) ID() int32 {
|
||||
return r.Reading.GetID()
|
||||
}
|
||||
|
||||
func (r reading) Label() string {
|
||||
return r.Reading.GetLabel()
|
||||
}
|
||||
|
||||
func (r reading) Type() string {
|
||||
return r.Reading.GetType()
|
||||
}
|
||||
|
||||
func (r reading) TypeI() int32 {
|
||||
return r.Reading.GetTypeI()
|
||||
}
|
||||
|
||||
func (r reading) Unit() string {
|
||||
return r.Reading.GetUnit()
|
||||
}
|
||||
|
||||
func (r reading) Value() float64 {
|
||||
return r.Reading.GetValue()
|
||||
}
|
||||
|
||||
func (r reading) ValueMin() float64 {
|
||||
return r.Reading.GetValueMin()
|
||||
}
|
||||
|
||||
func (r reading) ValueMax() float64 {
|
||||
return r.Reading.GetValueMax()
|
||||
}
|
||||
|
||||
func (r reading) ValueAvg() float64 {
|
||||
return r.Reading.GetValueAvg()
|
||||
}
|
||||
Reference in New Issue
Block a user