36 lines
711 B
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
|
|
}
|