lbslns

package
v3.33.0 Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2024 License: Apache-2.0 Imports: 22 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) semtechws.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 AbsoluteTimeDownlinkMessage

type AbsoluteTimeDownlinkMessage struct {
	DR      int   `json:"DR"`
	Freq    int   `json:"Freq"`
	GPSTime int64 `json:"gpstime"`
}

AbsoluteTimeDownlinkMessage encapsulates the information used for downlinks which are meant to be sent at fixed absolute GPS times.

type DiscoverQuery

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

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

type DiscoverResponse

type DiscoverResponse struct {
	EUI   id6.EUI `json:"router"`
	Muxs  id6.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"`
	Priority    int     `json:"priority"`
	RCtx        int64   `json:"rctx"`
	MuxTime     float64 `json:"MuxTime"`

	*TimestampDownlinkMessage    `json:",omitempty"`
	*AbsoluteTimeDownlinkMessage `json:",omitempty"`
}

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

func (*DownlinkMessage) ToDownlinkMessage

func (dnmsg *DownlinkMessage) ToDownlinkMessage(bandID string) (*ttnpb.DownlinkMessage, error)

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

type JoinRequest

type JoinRequest struct {
	MHdr     uint    `json:"MHdr"`
	JoinEUI  id6.EUI `json:"JoinEui"`
	DevEUI   id6.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 TimeSyncRequest

type TimeSyncRequest struct {
	TxTime float64 `json:"txtime"`
}

TimeSyncRequest is the time synchronization request from the BasicStation.

func (TimeSyncRequest) MarshalJSON

func (tsr TimeSyncRequest) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (TimeSyncRequest) Response

func (tsr TimeSyncRequest) Response(t time.Time) TimeSyncResponse

Response generates a TimeSyncResponse for this request.

type TimeSyncResponse

type TimeSyncResponse struct {
	TxTime  float64 `json:"txtime,omitempty"`
	XTime   int64   `json:"xtime,omitempty"`
	GPSTime int64   `json:"gpstime"`
	MuxTime float64 `json:"MuxTime,omitempty"`
}

TimeSyncResponse is the time synchronization response to the BasicStation.

func (TimeSyncResponse) MarshalJSON

func (tsr TimeSyncResponse) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

type TimestampDownlinkMessage

type TimestampDownlinkMessage struct {
	RxDelay int   `json:"RxDelay"`
	Rx1DR   int   `json:"RX1DR"`
	Rx1Freq int   `json:"RX1Freq"`
	XTime   int64 `json:"xtime"`
}

TimestampDownlinkMessage encapsulates the information used for downlinks which are meant to be sent at fixed concentrator timestamps.

type TxConfirmation

type TxConfirmation struct {
	Diid    int64   `json:"diid"`
	DevEUI  id6.EUI `json:"DevEui"`
	RCtx    int64   `json:"rctx"`
	XTime   int64   `json:"xtime"`
	TxTime  float64 `json:"txtime"`
	GPSTime int64   `json:"gpstime"`
}

TxConfirmation is a Transmit Confirmation 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