Documentation ¶
Overview ¶
This package defines interfaces and structs used to build an EdgeX Foundry Device Service. The interfaces provide an asbstraction layer for the device or protocol specific logic of a Device Service, and the structs represents request and response data format used by the protocol driver.
Index ¶
- Constants
- type AsyncValues
- type CommandRequest
- type CommandValue
- func NewBinaryValue(DeviceResourceName string, origin int64, value []byte) (cv *CommandValue, err error)
- func NewBoolValue(DeviceResourceName string, origin int64, value bool) (cv *CommandValue, err error)
- func NewCommandValue(DeviceResourceName string, origin int64, value interface{}, t ValueType) (cv *CommandValue, err error)
- func NewFloat32Value(DeviceResourceName string, origin int64, value float32) (cv *CommandValue, err error)
- func NewFloat64Value(DeviceResourceName string, origin int64, value float64) (cv *CommandValue, err error)
- func NewInt16Value(DeviceResourceName string, origin int64, value int16) (cv *CommandValue, err error)
- func NewInt32Value(DeviceResourceName string, origin int64, value int32) (cv *CommandValue, err error)
- func NewInt64Value(DeviceResourceName string, origin int64, value int64) (cv *CommandValue, err error)
- func NewInt8Value(DeviceResourceName string, origin int64, value int8) (cv *CommandValue, err error)
- func NewStringValue(DeviceResourceName string, origin int64, value string) (cv *CommandValue)
- func NewUint16Value(DeviceResourceName string, origin int64, value uint16) (cv *CommandValue, err error)
- func NewUint32Value(DeviceResourceName string, origin int64, value uint32) (cv *CommandValue, err error)
- func NewUint64Value(DeviceResourceName string, origin int64, value uint64) (cv *CommandValue, err error)
- func NewUint8Value(DeviceResourceName string, origin int64, value uint8) (cv *CommandValue, err error)
- func (cv *CommandValue) BinaryValue() ([]byte, error)
- func (cv *CommandValue) BoolValue() (bool, error)
- func (cv *CommandValue) Float32Value() (float32, error)
- func (cv *CommandValue) Float64Value() (float64, error)
- func (cv *CommandValue) Int16Value() (int16, error)
- func (cv *CommandValue) Int32Value() (int32, error)
- func (cv *CommandValue) Int64Value() (int64, error)
- func (cv *CommandValue) Int8Value() (int8, error)
- func (cv *CommandValue) String() (str string)
- func (cv *CommandValue) StringValue() (string, error)
- func (cv *CommandValue) Uint16Value() (uint16, error)
- func (cv *CommandValue) Uint32Value() (uint32, error)
- func (cv *CommandValue) Uint64Value() (uint64, error)
- func (cv *CommandValue) Uint8Value() (uint8, error)
- func (cv *CommandValue) ValueToString(encoding ...string) (str string)
- type Event
- type ProtocolDiscovery
- type ProtocolDriver
- type ValueType
Constants ¶
const ( // Policy limits should be located in global config namespace // Currently assigning 16MB (binary), 16 * 2^20 bytes MaxBinaryBytes = 16777216 // DefaultFoloatEncoding indicates the representation of floating value of reading. // It would be configurable in system level in the future DefaultFloatEncoding = contract.Base64Encoding )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AsyncValues ¶
type AsyncValues struct { DeviceName string CommandValues []*CommandValue }
AsyncValues is the struct for sending Device readings asynchronously via ProtocolDrivers
type CommandRequest ¶
type CommandRequest struct { // DeviceResourceName is the name of Device Resource for this command DeviceResourceName string // Attributes is a key/value map to represent the attributes of the Device Resource Attributes map[string]string // Type is the data type of the Device Resource Type ValueType }
CommandRequest is the struct for requesting a command to ProtocolDrivers
type CommandValue ¶
type CommandValue struct { // DeviceResourceName is the name of Device Resource for this command DeviceResourceName string // Origin is an int64 value which indicates the time the reading // contained in the CommandValue was read by the ProtocolDriver // instance. Origin int64 // Type is a ValueType value which indicates what type of // value was returned from the ProtocolDriver instance in // response to HandleCommand being called to handle a single // ResourceOperation. Type ValueType // NumericValue is a byte slice with a maximum capacity of // 64 bytes, used to hold a numeric value returned by a // ProtocolDriver instance. The value can be converted to // its native type by referring to the the value of ResType. NumericValue []byte // BinValue is a binary value with a maximum capacity of 16 MB, // used to hold binary values returned by a ProtocolDriver instance. BinValue []byte // contains filtered or unexported fields }
CommandValue is the struct to represent the reading value of a Get command coming from ProtocolDrivers or the parameter of a Put command sending to ProtocolDrivers.
func NewBinaryValue ¶
func NewBinaryValue(DeviceResourceName string, origin int64, value []byte) (cv *CommandValue, err error)
NewBinaryValue creates a CommandValue with binary payload and enforces the memory limit for event readings.
func NewBoolValue ¶
func NewBoolValue(DeviceResourceName string, origin int64, value bool) (cv *CommandValue, err error)
NewBoolValue creates a CommandValue of Type Bool with the given value.
func NewCommandValue ¶
func NewCommandValue(DeviceResourceName string, origin int64, value interface{}, t ValueType) (cv *CommandValue, err error)
NewCommandValue create a CommandValue according to the Type supplied.
func NewFloat32Value ¶
func NewFloat32Value(DeviceResourceName string, origin int64, value float32) (cv *CommandValue, err error)
NewFloat32Value creates a CommandValue of Type Float32 with the given value.
func NewFloat64Value ¶
func NewFloat64Value(DeviceResourceName string, origin int64, value float64) (cv *CommandValue, err error)
NewFloat64Value creates a CommandValue of Type Float64 with the given value.
func NewInt16Value ¶
func NewInt16Value(DeviceResourceName string, origin int64, value int16) (cv *CommandValue, err error)
NewInt16Value creates a CommandValue of Type Int16 with the given value.
func NewInt32Value ¶
func NewInt32Value(DeviceResourceName string, origin int64, value int32) (cv *CommandValue, err error)
NewInt32Value creates a CommandValue of Type Int32 with the given value.
func NewInt64Value ¶
func NewInt64Value(DeviceResourceName string, origin int64, value int64) (cv *CommandValue, err error)
NewInt64Value creates a CommandValue of Type Int64 with the given value.
func NewInt8Value ¶
func NewInt8Value(DeviceResourceName string, origin int64, value int8) (cv *CommandValue, err error)
NewInt8Value creates a CommandValue of Type Int8 with the given value.
func NewStringValue ¶
func NewStringValue(DeviceResourceName string, origin int64, value string) (cv *CommandValue)
NewStringValue creates a CommandValue of Type string with the given value.
func NewUint16Value ¶
func NewUint16Value(DeviceResourceName string, origin int64, value uint16) (cv *CommandValue, err error)
NewUint16Value creates a CommandValue of Type Uint16 with the given value.
func NewUint32Value ¶
func NewUint32Value(DeviceResourceName string, origin int64, value uint32) (cv *CommandValue, err error)
NewUint32Value creates a CommandValue of Type Uint32 with the given value.
func NewUint64Value ¶
func NewUint64Value(DeviceResourceName string, origin int64, value uint64) (cv *CommandValue, err error)
NewUint64Value creates a CommandValue of Type Uint64 with the given value.
func NewUint8Value ¶
func NewUint8Value(DeviceResourceName string, origin int64, value uint8) (cv *CommandValue, err error)
NewUint8Value creates a CommandValue of Type Uint8 with the given value.
func (*CommandValue) BinaryValue ¶
func (cv *CommandValue) BinaryValue() ([]byte, error)
BinaryValue returns the value in []byte data type, and returns error if the Type is not Binary.
func (*CommandValue) BoolValue ¶
func (cv *CommandValue) BoolValue() (bool, error)
BoolValue returns the value in bool data type, and returns error if the Type is not Bool.
func (*CommandValue) Float32Value ¶
func (cv *CommandValue) Float32Value() (float32, error)
Float32Value returns the value in float32 data type, and returns error if the Type is not Float32.
func (*CommandValue) Float64Value ¶
func (cv *CommandValue) Float64Value() (float64, error)
Float64Value returns the value in float64 data type, and returns error if the Type is not Float64.
func (*CommandValue) Int16Value ¶
func (cv *CommandValue) Int16Value() (int16, error)
Int16Value returns the value in int16 data type, and returns error if the Type is not Int16.
func (*CommandValue) Int32Value ¶
func (cv *CommandValue) Int32Value() (int32, error)
Int32Value returns the value in int32 data type, and returns error if the Type is not Int32.
func (*CommandValue) Int64Value ¶
func (cv *CommandValue) Int64Value() (int64, error)
Int64Value returns the value in int64 data type, and returns error if the Type is not Int64.
func (*CommandValue) Int8Value ¶
func (cv *CommandValue) Int8Value() (int8, error)
Int8Value returns the value in int8 data type, and returns error if the Type is not Int8.
func (*CommandValue) String ¶
func (cv *CommandValue) String() (str string)
String returns a string representation of a CommandValue instance.
func (*CommandValue) StringValue ¶
func (cv *CommandValue) StringValue() (string, error)
StringValue returns the value in string data type, and returns error if the Type is not String.
func (*CommandValue) Uint16Value ¶
func (cv *CommandValue) Uint16Value() (uint16, error)
Uint16Value returns the value in uint16 data type, and returns error if the Type is not Uint16.
func (*CommandValue) Uint32Value ¶
func (cv *CommandValue) Uint32Value() (uint32, error)
Uint32Value returns the value in uint21 data type, and returns error if the Type is not Uint32.
func (*CommandValue) Uint64Value ¶
func (cv *CommandValue) Uint64Value() (uint64, error)
Uint64Value returns the value in uint64 data type, and returns error if the Type is not Uint64.
func (*CommandValue) Uint8Value ¶
func (cv *CommandValue) Uint8Value() (uint8, error)
Uint8Value returns the value in uint8 data type, and returns error if the Type is not Uint8.
func (*CommandValue) ValueToString ¶
func (cv *CommandValue) ValueToString(encoding ...string) (str string)
ValueToString returns the string format of the value.
type Event ¶
Event is a wrapper of contract.Event to provide more Binary related operation in Device Service.
func (Event) HasBinaryValue ¶
HasBinaryValue confirms whether an event contains one or more readings populated with a BinaryValue payload.
type ProtocolDiscovery ¶
type ProtocolDiscovery interface { // Discover triggers protocol specific device discovery, which is // a synchronous operation which returns a list of new devices // which may be added to the device service based on service // config. This function may also optionally trigger sensor // discovery, which could result in dynamic device profile creation. // // TODO: add models.ScanList (or define locally) for devices Discover() (devices *interface{}, err error) }
ProtocolDiscovery is a low-level device-specific interface implemented by device services that support dynamic device discovery.
type ProtocolDriver ¶
type ProtocolDriver interface { // Initialize performs protocol-specific initialization for the device // service. The given *AsyncValues channel can be used to push asynchronous // events and readings to Core Data. Initialize(lc logger.LoggingClient, asyncCh chan<- *AsyncValues) error // HandleReadCommands passes a slice of CommandRequest struct each representing // a ResourceOperation for a specific device resource. HandleReadCommands(deviceName string, protocols map[string]contract.ProtocolProperties, reqs []CommandRequest) ([]*CommandValue, error) // HandleWriteCommands passes a slice of CommandRequest struct each representing // a ResourceOperation for a specific device resource. // Since the commands are actuation commands, params provide parameters for the individual // command. HandleWriteCommands(deviceName string, protocols map[string]contract.ProtocolProperties, reqs []CommandRequest, params []*CommandValue) error // Stop instructs the protocol-specific DS code to shutdown gracefully, or // if the force parameter is 'true', immediately. The driver is responsible // for closing any in-use channels, including the channel used to send async // readings (if supported). Stop(force bool) error // AddDevice is a callback function that is invoked // when a new Device associated with this Device Service is added AddDevice(deviceName string, protocols map[string]contract.ProtocolProperties, adminState contract.AdminState) error // UpdateDevice is a callback function that is invoked // when a Device associated with this Device Service is updated UpdateDevice(deviceName string, protocols map[string]contract.ProtocolProperties, adminState contract.AdminState) error // RemoveDevice is a callback function that is invoked // when a Device associated with this Device Service is removed RemoveDevice(deviceName string, protocols map[string]contract.ProtocolProperties) error }
ProtocolDriver is a low-level device-specific interface used by by other components of an EdgeX Device Service to interact with a specific class of devices.
type ValueType ¶
type ValueType int
ValueType indicates the type of value being passed back from a ProtocolDriver instance.
const ( // Bool indicates that the value is a bool, // stored in CommandValue's boolRes member. Bool ValueType = iota // String indicates that the value is a string, // stored in CommandValue's stringRes member. String // Uint8 indicates that the value is a uint8 that // is stored in CommandValue's NumericRes member. Uint8 // Uint16 indicates that the value is a uint16 that // is stored in CommandValue's NumericRes member. Uint16 // Uint32 indicates that the value is a uint32 that // is stored in CommandValue's NumericRes member. Uint32 // Uint64 indicates that the value is a uint64 that // is stored in CommandValue's NumericRes member. Uint64 // Int8 indicates that the value is a int8 that // is stored in CommandValue's NumericRes member. Int8 // Int16 indicates that the value is a int16 that // is stored in CommandValue's NumericRes member. Int16 // Int32 indicates that the value is a int32 that // is stored in CommandValue's NumericRes member. Int32 // Int64 indicates that the value is a int64 that // is stored in CommandValue's NumericRes member. Int64 // Float32 indicates that the value is a float32 that // is stored in CommandValue's NumericRes member. Float32 // Float64 indicates that the value is a float64 that // is stored in CommandValue's NumericRes member. Float64 // Binary indicates that the value is a binary payload that // is stored in CommandValue's ByteArrRes member. Binary )
func ParseValueType ¶
ParseValueType could get ValueType from type name in string format if the type name cannot be parsed correctly, return String ValueType