models

package
v1.2.0-dev.26 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 20, 2020 License: Apache-2.0 Imports: 9 Imported by: 4

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

View Source
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. In EdgeX, float value has two kinds of representation, Base64, and eNotation. Users can specify the floatEncoding in the properties value of the device profile, like floatEncoding: "Base64" or floatEncoding: "eNotation".

func (*CommandValue) ValueTypeToString added in v1.2.0

func (cv *CommandValue) ValueTypeToString() string

ValueTypeToString returns corresponding string representation of the ValueType.

type DiscoveredDevice added in v1.2.0

type DiscoveredDevice struct {
	Name        string
	Protocols   map[string]contract.ProtocolProperties
	Description string
	Labels      []string
}

DiscoveredDevice defines the required information for a found device.

type Event

type Event struct {
	contract.Event
	EncodedEvent []byte
}

Event is a wrapper of contract.Event to provide more Binary related operation in Device Service.

func (Event) HasBinaryValue

func (e Event) HasBinaryValue() bool

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, asynchronously
	// writes the results to the channel which is passed to the implementation
	// via ProtocolDriver.Initialize(). The results may be added to the device service
	// based on a set of acceptance criteria (i.e. Provision Watchers).
	Discover()
}

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. The given []DiscoveredDevice channel is used to send
	// discovered devices that will be filtered and added to Core Metadata asynchronously.
	Initialize(lc logger.LoggingClient, asyncCh chan<- *AsyncValues, deviceCh chan<- []DiscoveredDevice) 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

func ParseValueType(typeName string) ValueType

ParseValueType could get ValueType from type name in string format if the type name cannot be parsed correctly, return String ValueType

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL