device

package
v2.10.1+incompatible Latest Latest
Warning

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

Go to latest
Published: Mar 18, 2019 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const FramesHistorySize = 20

FramesHistorySize for ADR

Variables

This section is empty.

Functions

This section is empty.

Types

type ADRSettings

type ADRSettings struct {
	Band   string `redis:"band"`
	Margin int    `redis:"margin"`

	// Indicates whether the NetworkServer should send a LinkADRReq when possible
	SentInitial bool `redis:"sent_initial"`
	SendReq     bool `redis:"send_req"`
	ExpectRes   bool `redis:"expect_res"`
	Failed      int  `redis:"failed"` // number of failed ADR attempts

	// Desired Settings:
	DataRate string `redis:"data_rate"`
	TxPower  int    `redis:"tx_power"`
	NbTrans  int    `redis:"nb_trans"`
}

ADRSettings contains the (desired) settings for a device that uses ADR

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"`
	DevAddr  types.DevAddr `redis:"dev_addr"`
	NwkSKey  types.NwkSKey `redis:"nwk_s_key"`
	FCntUp   uint32        `redis:"f_cnt_up"`
	FCntDown uint32        `redis:"f_cnt_down"`
	LastSeen time.Time     `redis:"last_seen"`
	Options  Options       `redis:"options"`
	ADR      ADRSettings   `redis:"adr,include"`

	CreatedAt time.Time `redis:"created_at"`
	UpdatedAt time.Time `redis:"updated_at"`
	// contains filtered or unexported fields
}

Device contains the state of a device

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) DBVersion

func (d *Device) DBVersion() string

DBVersion of the model

func (*Device) StartUpdate

func (d *Device) StartUpdate()

StartUpdate stores the state of the device

type Frame

type Frame struct {
	FCnt         uint32  `json:"f_cnt"`
	SNR          float32 `json:"snr"`
	GatewayCount uint32  `json:"gw_cnt"`
}

Frame collected for ADR

type FrameHistory

type FrameHistory interface {
	Push(frame *Frame) error
	Get() ([]*Frame, error)
	Clear() error
}

FrameHistory for a device

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 specified device

type RedisDeviceStore

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

RedisDeviceStore stores Devices in Redis. - Devices are stored as a Hash - DevAddr mappings are indexed in a Set

func (*RedisDeviceStore) Count

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

Count all Devices

func (*RedisDeviceStore) CountForAddress

func (s *RedisDeviceStore) CountForAddress(devAddr types.DevAddr) (int, error)

CountForAddress counts all devices for a specific DevAddr

func (*RedisDeviceStore) Delete

func (s *RedisDeviceStore) Delete(appEUI types.AppEUI, devEUI types.DevEUI) error

Delete a Device

func (*RedisDeviceStore) Frames

func (s *RedisDeviceStore) Frames(appEUI types.AppEUI, devEUI types.DevEUI) (FrameHistory, error)

Frames history for a specific Device

func (*RedisDeviceStore) Get

func (s *RedisDeviceStore) Get(appEUI types.AppEUI, devEUI types.DevEUI) (*Device, error)

Get a specific Device

func (*RedisDeviceStore) List

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

List all Devices

func (*RedisDeviceStore) ListForAddress

func (s *RedisDeviceStore) ListForAddress(devAddr types.DevAddr) ([]*Device, error)

ListForAddress lists all devices for a specific DevAddr

func (*RedisDeviceStore) Set

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

Set a new Device or update an existing one

type RedisFrameHistory

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

RedisFrameHistory implements the frame history in Redis

func (*RedisFrameHistory) Clear

func (s *RedisFrameHistory) Clear() error

Clear frames in the device's history

func (*RedisFrameHistory) Get

func (s *RedisFrameHistory) Get() (out []*Frame, err error)

Get the last frames from the device's history

func (*RedisFrameHistory) Push

func (s *RedisFrameHistory) Push(frame *Frame) error

Push a Frame to the device's history

func (*RedisFrameHistory) Trim

func (s *RedisFrameHistory) Trim() error

Trim frames in the device's history

type Store

type Store interface {
	Count() (int, error)
	List(opts *storage.ListOptions) ([]*Device, error)
	CountForAddress(devAddr types.DevAddr) (int, error)
	ListForAddress(devAddr types.DevAddr) ([]*Device, error)
	Get(appEUI types.AppEUI, devEUI types.DevEUI) (*Device, error)
	Set(new *Device, properties ...string) (err error)
	Delete(appEUI types.AppEUI, devEUI types.DevEUI) error
	Frames(appEUI types.AppEUI, devEUI types.DevEUI) (FrameHistory, error)
}

Store interface for Devices

func NewRedisDeviceStore

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

NewRedisDeviceStore creates a new Redis-based status store

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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