src.dualinventive.com/go/influxdb-logger/internal/device/device.go

36 lines
711 B
Go

package device
import (
"src.dualinventive.com/go/dinet/rpc"
)
// Device contains the different class fields and device type
type Device struct {
Type string
SensorFields map[uint16]*FieldInfo
NotifyFields map[uint16]*FieldInfo
// action
// config
}
// FieldInfo returns the information about a specific device class field
func (d *Device) FieldInfo(class rpc.Class, uid uint16) (*FieldInfo, error) {
if d == nil {
return nil, ErrNoDevice
}
var m map[uint16]*FieldInfo
switch class {
case rpc.ClassSensor:
m = d.SensorFields
case rpc.ClassNotify:
m = d.NotifyFields
default:
return nil, ErrInvalidClass
}
if c, ok := m[uid]; ok {
return c, nil
}
return nil, ErrNotFound
}