device

package
v2.9.3+incompatible Latest Latest
Warning

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

Go to latest
Published: May 23, 2018 License: MIT Imports: 14 Imported by: 15

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AppNonce

type AppNonce [3]byte

type DevNonce

type DevNonce [2]byte

type Device

type Device struct {
	DevEUI types.DevEUI `redis:"dev_eui"`
	AppEUI types.AppEUI `redis:"app_eui"`
	AppID  string       `redis:"app_id"`
	DevID  string       `redis:"dev_id"`

	Description string `redis:"description"`

	Latitude  float32 `redis:"latitude"`
	Longitude float32 `redis:"longitude"`
	Altitude  int32   `redis:"altitude"`

	Options Options `redis:"options"`

	AppKey        types.AppKey `redis:"app_key"`
	UsedDevNonces []DevNonce   `redis:"used_dev_nonces"`
	UsedAppNonces []AppNonce   `redis:"used_app_nonces"`

	DevAddr types.DevAddr `redis:"dev_addr"`
	NwkSKey types.NwkSKey `redis:"nwk_s_key"`
	AppSKey types.AppSKey `redis:"app_s_key"`
	FCntUp  uint32        `redis:"f_cnt_up"` // Only used to detect retries

	CurrentDownlink *types.DownlinkMessage `redis:"current_downlink"`

	CreatedAt time.Time `redis:"created_at"`
	UpdatedAt time.Time `redis:"updated_at"`

	Attributes map[string]string `redis:"attributes"`
	// contains filtered or unexported fields
}

Device contains the state of a device

func FromPb

func FromPb(in *pb_handler.Device) *Device

FromPb returns a new device from the given proto

func (Device) ChangedFields

func (d Device) ChangedFields() (changed []string)

ChangedFields returns the names of the changed fields since the last call to StartUpdate

func (*Device) Clone

func (d *Device) Clone() *Device

Clone the device

func (*Device) DBVersion

func (d *Device) DBVersion() string

DBVersion of the model

func (*Device) FromLoRaWANPb

func (d *Device) FromLoRaWANPb(lorawan *pb_lorawan.Device)

FromLoRaWANPb fills Device fields from a lorawan device proto

func (*Device) FromPb

func (d *Device) FromPb(in *pb_handler.Device)

FromPb fills Device fields from a device proto

func (*Device) StartUpdate

func (d *Device) StartUpdate()

StartUpdate stores the state of the device

func (Device) ToLoRaWANPb

func (d Device) ToLoRaWANPb() *pb_lorawan.Device

ToLoRaWANPb converts a device struct to a LoRaWAN protocol buffer

func (Device) ToPb

func (d Device) ToPb() *pb_handler.Device

ToPb converts a device struct to its protocol buffer

type DownlinkQueue

type DownlinkQueue interface {
	Length() (int, error)
	Next() (*types.DownlinkMessage, error)
	Replace(msg *types.DownlinkMessage) error
	PushFirst(msg *types.DownlinkMessage) error
	PushLast(msg *types.DownlinkMessage) error
}

DownlinkQueue stores the Downlink queue

type Options

type Options struct {
	ActivationConstraints string `json:"activation_constraints,omitempty"` // Activation Constraints (public/local/private)
	DisableFCntCheck      bool   `json:"disable_fcnt_check,omitemtpy"`     // Disable Frame counter check (insecure)
	Uses32BitFCnt         bool   `json:"uses_32_bit_fcnt,omitemtpy"`       // Use 32-bit Frame counters
}

Options for the device

type RedisDeviceStore

type RedisDeviceStore struct {
	// contains filtered or unexported fields
}

RedisDeviceStore stores Devices in Redis. - Devices are stored as a Hash

func NewRedisDeviceStore

func NewRedisDeviceStore(client *redis.Client, prefix string) *RedisDeviceStore

NewRedisDeviceStore creates a new Redis-based Device store

func (*RedisDeviceStore) AddBuiltinAttribute

func (s *RedisDeviceStore) AddBuiltinAttribute(attr ...string)

AddBuiltinAttribute adds builtin device attributes to the list.

func (*RedisDeviceStore) Count

func (s *RedisDeviceStore) Count() (int, error)

Count all devices in the store

func (*RedisDeviceStore) CountForApp

func (s *RedisDeviceStore) CountForApp(appID string) (int, error)

CountForApp counts all devices for an Application

func (*RedisDeviceStore) Delete

func (s *RedisDeviceStore) Delete(appID, devID string) error

Delete a Device

func (*RedisDeviceStore) DownlinkQueue

func (s *RedisDeviceStore) DownlinkQueue(appID, devID string) (DownlinkQueue, error)

DownlinkQueue for a specific Device

func (*RedisDeviceStore) Get

func (s *RedisDeviceStore) Get(appID, devID string) (*Device, error)

Get a specific Device

func (*RedisDeviceStore) List

func (s *RedisDeviceStore) List(opts *storage.ListOptions) ([]*Device, error)

List all Devices

func (*RedisDeviceStore) ListForApp

func (s *RedisDeviceStore) ListForApp(appID string, opts *storage.ListOptions) ([]*Device, error)

ListForApp lists all devices for a specific Application

func (*RedisDeviceStore) Set

func (s *RedisDeviceStore) Set(new *Device, properties ...string) (err error)

Set a new Device or update an existing one

type RedisDownlinkQueue

type RedisDownlinkQueue struct {
	// contains filtered or unexported fields
}

RedisDownlinkQueue implements the downlink queue in Redis

func (*RedisDownlinkQueue) Length

func (s *RedisDownlinkQueue) Length() (int, error)

Length of the downlink queue

func (*RedisDownlinkQueue) Next

Next item in the downlink queue

func (*RedisDownlinkQueue) PushFirst

func (s *RedisDownlinkQueue) PushFirst(msg *types.DownlinkMessage) error

PushFirst message to the downlink queue

func (*RedisDownlinkQueue) PushLast

func (s *RedisDownlinkQueue) PushLast(msg *types.DownlinkMessage) error

PushLast message to the downlink queue

func (*RedisDownlinkQueue) Replace

func (s *RedisDownlinkQueue) Replace(msg *types.DownlinkMessage) error

Replace the downlink queue with msg

type Store

type Store interface {
	Count() (int, error)
	CountForApp(appID string) (int, error)
	List(opts *storage.ListOptions) ([]*Device, error)
	ListForApp(appID string, opts *storage.ListOptions) ([]*Device, error)
	Get(appID, devID string) (*Device, error)
	DownlinkQueue(appID, devID string) (DownlinkQueue, error)
	Set(new *Device, properties ...string) (err error)
	Delete(appID, devID string) error
	AddBuiltinAttribute(attr ...string)
}

Store interface for Devices

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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