lbslns

package
v0.0.0-...-60b8695 Latest Latest
Warning

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

Go to latest
Published: Apr 1, 2021 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Upstream types for messages from the Gateway.
	TypeUpstreamVersion              = "version"
	TypeUpstreamJoinRequest          = "jreq"
	TypeUpstreamUplinkDataFrame      = "updf"
	TypeUpstreamProprietaryDataFrame = "propdf"
	TypeUpstreamTxConfirmation       = "dntxed"
	TypeUpstreamTimeSync             = "timesync"
	TypeUpstreamRemoteShell          = "rmtsh"

	// Downstream types for messages from the Network
	TypeDownstreamDownlinkMessage           = "dnmsg"
	TypeDownstreamDownlinkMulticastSchedule = "dnsched"
	TypeDownstreamTimeSync                  = "timesync"
	TypeDownstreamRemoteCommand             = "runcmd"
	TypeDownstreamRemoteShell               = "rmtsh"
)

Definition of LoRa Basic Station message types.

Variables

This section is empty.

Functions

func NewFormatter

func NewFormatter(maxRoundTripDelay time.Duration) ws.Formatter

NewFormatter returns a new LoRa Basic Station LNS formatter.

func Type

func Type(data []byte) (string, error)

Type returns the message type of the given data.

Types

type DiscoverQuery

type DiscoverQuery struct {
	EUI basicstation.EUI `json:"router"`
}

DiscoverQuery contains the unique identifier of the gateway. This message is sent by the gateway.

type DiscoverResponse

type DiscoverResponse struct {
	EUI   basicstation.EUI `json:"router"`
	Muxs  basicstation.EUI `json:"muxs,omitempty"`
	URI   string           `json:"uri,omitempty"`
	Error string           `json:"error,omitempty"`
}

DiscoverResponse contains the response to the discover query. This message is sent by the Gateway Server.

type DownlinkMessage

type DownlinkMessage struct {
	DevEUI      string  `json:"DevEui"`
	DeviceClass uint    `json:"dC"`
	Diid        int64   `json:"diid"`
	Pdu         string  `json:"pdu"`
	RxDelay     int     `json:"RxDelay"`
	Rx1DR       int     `json:"RX1DR"`
	Rx1Freq     int     `json:"RX1Freq"`
	Priority    int     `json:"priority"`
	XTime       int64   `json:"xtime"`
	RCtx        int64   `json:"rctx"`
	MuxTime     float64 `json:"MuxTime"`
}

DownlinkMessage is the LoRaWAN downlink message sent to the LoRa Basics Station.

func (*DownlinkMessage) ToDownlinkMessage

func (dnmsg *DownlinkMessage) ToDownlinkMessage() ttnpb.DownlinkMessage

ToDownlinkMessage translates the LNS DownlinkMessage "dnmsg" to ttnpb.DownlinkMessage.

type JoinRequest

type JoinRequest struct {
	MHdr     uint             `json:"MHdr"`
	JoinEUI  basicstation.EUI `json:"JoinEui"`
	DevEUI   basicstation.EUI `json:"DevEui"`
	DevNonce uint             `json:"DevNonce"`
	MIC      int32            `json:"MIC"`
	RefTime  float64          `json:"RefTime"`
	RadioMetaData
}

JoinRequest is the LoRaWAN Join Request message from LoRa Basics Station protocol.

func (*JoinRequest) FromUplinkMessage

func (req *JoinRequest) FromUplinkMessage(up *ttnpb.UplinkMessage, bandID string) error

FromUplinkMessage extracts fields from ttnpb.UplinkMessage and creates the LoRa Basics Station Join Request Frame.

func (JoinRequest) MarshalJSON

func (req JoinRequest) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

type MessageType

type MessageType string

MessageType is the type of the message.

type RadioMetaData

type RadioMetaData struct {
	DataRate  int    `json:"DR"`
	Frequency uint64 `json:"Freq"`
	UpInfo    UpInfo `json:"upinfo"`
}

RadioMetaData is a the metadata that is received as part of all upstream messages (except Tx Confirmation).

type State

type State struct {
	ID int32
}

State represents the LBS Session state.

type TxConfirmation

type TxConfirmation struct {
	Diid    int64            `json:"diid"`
	DevEUI  basicstation.EUI `json:"DevEui"`
	RCtx    int64            `json:"rctx"`
	XTime   int64            `json:"xtime"`
	TxTime  float64          `json:"txtime"`
	GpsTime int64            `json:"gpstime"`
	RefTime float64          `json:"RefTime,omitempty"`
}

TxConfirmation is the LoRaWAN Join Request message from the BasicStation.

func (TxConfirmation) MarshalJSON

func (conf TxConfirmation) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (TxConfirmation) ToTxAck

func (conf TxConfirmation) ToTxAck(ctx context.Context, tokens io.DownlinkTokens, receivedAt time.Time) *ttnpb.TxAcknowledgment

ToTxAck converts the LoRa Basics Station TxConfirmation message to ttnpb.TxAcknowledgment

type UpInfo

type UpInfo struct {
	RxTime  float64 `json:"rxtime"`
	RCtx    int64   `json:"rtcx"`
	XTime   int64   `json:"xtime"`
	GPSTime int64   `json:"gpstime"`
	RSSI    float32 `json:"rssi"`
	SNR     float32 `json:"snr"`
}

UpInfo provides additional metadata on each upstream message.

type UplinkDataFrame

type UplinkDataFrame struct {
	MHdr       uint    `json:"MHdr"`
	DevAddr    int32   `json:"DevAddr"`
	FCtrl      uint    `json:"FCtrl"`
	FCnt       uint    `json:"Fcnt"`
	FOpts      string  `json:"FOpts"`
	FPort      int     `json:"FPort"`
	FRMPayload string  `json:"FRMPayload"`
	MIC        int32   `json:"MIC"`
	RefTime    float64 `json:"RefTime"`
	RadioMetaData
}

UplinkDataFrame is the LoRaWAN Uplink message of the LoRa Basics Station protocol.

func (*UplinkDataFrame) FromUplinkMessage

func (updf *UplinkDataFrame) FromUplinkMessage(up *ttnpb.UplinkMessage, bandID string) error

FromUplinkMessage extracts fields from ttnpb.UplinkMessage and creates the LoRa Basics Station UplinkDataFrame.

func (UplinkDataFrame) MarshalJSON

func (updf UplinkDataFrame) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

type Version

type Version struct {
	Station  string `json:"station"`
	Firmware string `json:"firmware"`
	Package  string `json:"package"`
	Model    string `json:"model"`
	Protocol int    `json:"protocol"`
	Features string `json:"features,omitempty"`
}

Version contains version information. This message is sent by the gateway.

func (Version) IsProduction

func (v Version) IsProduction() bool

IsProduction checks the features field for "prod" and returns true if found. This is then used to set debug options in the router config.

func (Version) MarshalJSON

func (v Version) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

Jump to

Keyboard shortcuts

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