Documentation
¶
Index ¶
Constants ¶
const ( ErrTooLate = "TOO_LATE" ErrTooEarly = "TOO_EARLY" ErrCollisionPacket = "COLLISION_PACKET" ErrCollisionBeackon = "COLLISION_BEACON" ErrTXFrequency = "TX_FREQ" ErrTXPower = "TX_POWER" ErrGPSUnlocked = "GPS_UNLOCKED" )
Possible TX errors.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Channel ¶
type Channel struct {
Modulation band.Modulation `json:"modulation"`
Frequency int `json:"frequency"`
Bandwidth int `json:"bandwidth"`
Bitrate int `json:"bitrate,omitempty"` // FSK modulation only
SpreadingFactors []int `json:"spreadingFactors,omitempty"` // LoRa modulation only
}
Channel defines a gateay channel.
type Duration ¶
Duration implements time.Duration, but encoded to json, uses the String formatting.
func (Duration) MarshalJSON ¶
MarshalJSON implements the json.Marshaler interface.
func (*Duration) UnmarshalJSON ¶
UnmarshalJSON implements the json.Unmarshaler interface.
type GatewayConfigPacket ¶
type GatewayConfigPacket struct {
MAC lorawan.EUI64 `json:"mac"`
Version string `json:"version"`
Channels []Channel `json:"channels"`
}
GatewayConfigPacket contains the configuration to be pushed to the gateway.
type GatewayStatsPacket ¶
type GatewayStatsPacket struct {
MAC lorawan.EUI64 `json:"mac"`
Time time.Time `json:"time,omitempty"`
Latitude *float64 `json:"latitude,omitempty"`
Longitude *float64 `json:"longitude,omitempty"`
Altitude *float64 `json:"altitude,omitempty"`
RXPacketsReceived int `json:"rxPacketsReceived"`
RXPacketsReceivedOK int `json:"rxPacketsReceivedOK"`
TXPacketsReceived int `json:"txPacketsReceived"`
TXPacketsEmitted int `json:"txPacketsEmitted"`
ConfigVersion string `json:"configVersion,omitempty"`
CustomData map[string]interface{} `json:"customData,omitempty"` // custom fields defined by alternative packet_forwarder versions (e.g. TTN sends platform, contactEmail, and description)
}
GatewayStatsPacket contains the information of a gateway.
type RXInfo ¶
type RXInfo struct {
MAC lorawan.EUI64 `json:"mac"` // MAC address of the gateway
Time *time.Time `json:"time,omitempty"` // Receive timestamp (only set when the gateway has a GPS time-source)
TimeSinceGPSEpoch *Duration `json:"timeSinceGPSEpoch,omitempty"` // Time since GPS epoch (1980-01-06, only set when the gateway has a GPS time source)
Timestamp uint32 `json:"timestamp"` // gateway internal receive timestamp with microsecond precision, will rollover every ~ 72 minutes
Frequency int `json:"frequency"` // frequency in Hz
Channel int `json:"channel"` // concentrator IF channel used for RX
RFChain int `json:"rfChain"` // RF chain used for RX
CRCStatus int `json:"crcStatus"` // 1 = OK, -1 = fail, 0 = no CRC
CodeRate string `json:"codeRate"` // ECC code rate
RSSI int `json:"rssi"` // RSSI in dBm
LoRaSNR float64 `json:"loRaSNR"` // LoRa signal-to-noise ratio in dB
Size int `json:"size"` // packet payload size
DataRate band.DataRate `json:"dataRate"` // RX datarate (either LoRa or FSK)
Board int `json:"board"` // Concentrator board used for RX
Antenna int `json:"antenna"` // Antenna number on which signal has been received
}
RXInfo contains the RX information.
type RXPacket ¶
type RXPacket struct {
RXInfo RXInfo `json:"rxInfo"`
PHYPayload lorawan.PHYPayload `json:"phyPayload"`
}
RXPacket contains the PHYPayload received from the gateway.
type RXPacketBytes ¶
RXPacketBytes contains the PHYPayload as []byte received from the gateway.
type TXAck ¶
type TXAck struct {
MAC lorawan.EUI64 `json:"mac"`
Token uint16 `json:"token"`
Error string `json:"error,omitempty"`
}
TXAck contains the acknowledgement of the requested frame transmission or an error.
type TXInfo ¶
type TXInfo struct {
MAC lorawan.EUI64 `json:"mac"` // MAC address of the gateway
Immediately bool `json:"immediately"` // send the packet immediately (ignore Time)
TimeSinceGPSEpoch *Duration `json:"timeSinceGPSEpoch,omitempty"` // Transmit at time since GPS epoch (since 1980-01-06, only possible when the gateway has a GPS time source)
Timestamp *uint32 `json:"timestamp,omitempty"` // transmit at gateway internal timestamp (microsecond precision, will rollover every ~ 72 minutes)
Frequency int `json:"frequency"` // frequency in Hz
Power int `json:"power"` // TX power to use in dBm
DataRate band.DataRate `json:"dataRate"` // TX datarate (either LoRa or FSK)
CodeRate string `json:"codeRate"` // ECC code rate
IPol *bool `json:"iPol"` // when left nil, the gateway-bridge will use the default (true for LoRa modulation)
Board int `json:"board"` // Concentrator board used for RX
Antenna int `json:"antenna"` // Antenna number on which signal has been received
}
TXInfo contains the information used for TX.
type TXPacket ¶
type TXPacket struct {
Token uint16 `json:"token"`
TXInfo TXInfo `json:"txInfo"`
PHYPayload lorawan.PHYPayload `json:"phyPayload"`
}
TXPacket contains the PHYPayload which should be send to the gateway.
type TXPacketBytes ¶
type TXPacketBytes struct {
Token uint16 `json:"token"`
TXInfo TXInfo `json:"txInfo"`
PHYPayload []byte `json:"phyPayload"`
}
TXPacketBytes contains the PHYPayload as []byte which should be send to the gateway.