代码拉取完成,页面将自动刷新
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: gw/gw.proto
package gw
import (
fmt "fmt"
common "gitee.com/dfrobotcd/chirpstack-api/go/common"
proto "github.com/golang/protobuf/proto"
durationpb "google.golang.org/protobuf/types/known/durationpb"
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type DownlinkTiming int32
const (
// Send the downlink immediately.
DownlinkTiming_IMMEDIATELY DownlinkTiming = 0
// Send downlink at the given delay (based on provided context).
DownlinkTiming_DELAY DownlinkTiming = 1
// Send at given GPS epoch value.
DownlinkTiming_GPS_EPOCH DownlinkTiming = 2
)
var DownlinkTiming_name = map[int32]string{
0: "IMMEDIATELY",
1: "DELAY",
2: "GPS_EPOCH",
}
var DownlinkTiming_value = map[string]int32{
"IMMEDIATELY": 0,
"DELAY": 1,
"GPS_EPOCH": 2,
}
func (x DownlinkTiming) String() string {
return proto.EnumName(DownlinkTiming_name, int32(x))
}
func (DownlinkTiming) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{0}
}
type FineTimestampType int32
const (
// No fine-timestamp available.
FineTimestampType_NONE FineTimestampType = 0
// Encrypted fine-timestamp.
FineTimestampType_ENCRYPTED FineTimestampType = 1
// Plain fine-timestamp.
FineTimestampType_PLAIN FineTimestampType = 2
)
var FineTimestampType_name = map[int32]string{
0: "NONE",
1: "ENCRYPTED",
2: "PLAIN",
}
var FineTimestampType_value = map[string]int32{
"NONE": 0,
"ENCRYPTED": 1,
"PLAIN": 2,
}
func (x FineTimestampType) String() string {
return proto.EnumName(FineTimestampType_name, int32(x))
}
func (FineTimestampType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{1}
}
type CRCStatus int32
const (
// No CRC.
CRCStatus_NO_CRC CRCStatus = 0
// Bad CRC.
CRCStatus_BAD_CRC CRCStatus = 1
// CRC OK.
CRCStatus_CRC_OK CRCStatus = 2
)
var CRCStatus_name = map[int32]string{
0: "NO_CRC",
1: "BAD_CRC",
2: "CRC_OK",
}
var CRCStatus_value = map[string]int32{
"NO_CRC": 0,
"BAD_CRC": 1,
"CRC_OK": 2,
}
func (x CRCStatus) String() string {
return proto.EnumName(CRCStatus_name, int32(x))
}
func (CRCStatus) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{2}
}
type TxAckStatus int32
const (
// Ignored (when a previous item was already emitted).
TxAckStatus_IGNORED TxAckStatus = 0
// Packet has been programmed for downlink.
TxAckStatus_OK TxAckStatus = 1
// Rejected because it was already too late to program this packet for downlink.
TxAckStatus_TOO_LATE TxAckStatus = 2
// Rejected because downlink packet timestamp is too much in advance.
TxAckStatus_TOO_EARLY TxAckStatus = 3
// Rejected because there was already a packet programmed in requested timeframe.
TxAckStatus_COLLISION_PACKET TxAckStatus = 4
// Rejected because there was already a beacon planned in requested timeframe.
TxAckStatus_COLLISION_BEACON TxAckStatus = 5
// Rejected because requested frequency is not supported by TX RF chain.
TxAckStatus_TX_FREQ TxAckStatus = 6
// Rejected because requested power is not supported by gateway.
TxAckStatus_TX_POWER TxAckStatus = 7
// Rejected because GPS is unlocked, so GPS timestamp cannot be used.
TxAckStatus_GPS_UNLOCKED TxAckStatus = 8
// Downlink queue is full.
TxAckStatus_QUEUE_FULL TxAckStatus = 9
// Internal error.
TxAckStatus_INTERNAL_ERROR TxAckStatus = 10
)
var TxAckStatus_name = map[int32]string{
0: "IGNORED",
1: "OK",
2: "TOO_LATE",
3: "TOO_EARLY",
4: "COLLISION_PACKET",
5: "COLLISION_BEACON",
6: "TX_FREQ",
7: "TX_POWER",
8: "GPS_UNLOCKED",
9: "QUEUE_FULL",
10: "INTERNAL_ERROR",
}
var TxAckStatus_value = map[string]int32{
"IGNORED": 0,
"OK": 1,
"TOO_LATE": 2,
"TOO_EARLY": 3,
"COLLISION_PACKET": 4,
"COLLISION_BEACON": 5,
"TX_FREQ": 6,
"TX_POWER": 7,
"GPS_UNLOCKED": 8,
"QUEUE_FULL": 9,
"INTERNAL_ERROR": 10,
}
func (x TxAckStatus) String() string {
return proto.EnumName(TxAckStatus_name, int32(x))
}
func (TxAckStatus) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{3}
}
type UplinkTXInfo struct {
// Frequency (Hz).
Frequency uint32 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"`
// Modulation.
Modulation common.Modulation `protobuf:"varint,2,opt,name=modulation,proto3,enum=common.Modulation" json:"modulation,omitempty"`
// Types that are valid to be assigned to ModulationInfo:
//
// *UplinkTXInfo_LoraModulationInfo
// *UplinkTXInfo_FskModulationInfo
ModulationInfo isUplinkTXInfo_ModulationInfo `protobuf_oneof:"modulation_info"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UplinkTXInfo) Reset() { *m = UplinkTXInfo{} }
func (m *UplinkTXInfo) String() string { return proto.CompactTextString(m) }
func (*UplinkTXInfo) ProtoMessage() {}
func (*UplinkTXInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{0}
}
func (m *UplinkTXInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UplinkTXInfo.Unmarshal(m, b)
}
func (m *UplinkTXInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UplinkTXInfo.Marshal(b, m, deterministic)
}
func (m *UplinkTXInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_UplinkTXInfo.Merge(m, src)
}
func (m *UplinkTXInfo) XXX_Size() int {
return xxx_messageInfo_UplinkTXInfo.Size(m)
}
func (m *UplinkTXInfo) XXX_DiscardUnknown() {
xxx_messageInfo_UplinkTXInfo.DiscardUnknown(m)
}
var xxx_messageInfo_UplinkTXInfo proto.InternalMessageInfo
func (m *UplinkTXInfo) GetFrequency() uint32 {
if m != nil {
return m.Frequency
}
return 0
}
func (m *UplinkTXInfo) GetModulation() common.Modulation {
if m != nil {
return m.Modulation
}
return common.Modulation_LORA
}
type isUplinkTXInfo_ModulationInfo interface {
isUplinkTXInfo_ModulationInfo()
}
type UplinkTXInfo_LoraModulationInfo struct {
LoraModulationInfo *LoRaModulationInfo `protobuf:"bytes,3,opt,name=lora_modulation_info,json=loRaModulationInfo,proto3,oneof"`
}
type UplinkTXInfo_FskModulationInfo struct {
FskModulationInfo *FSKModulationInfo `protobuf:"bytes,4,opt,name=fsk_modulation_info,json=fskModulationInfo,proto3,oneof"`
}
func (*UplinkTXInfo_LoraModulationInfo) isUplinkTXInfo_ModulationInfo() {}
func (*UplinkTXInfo_FskModulationInfo) isUplinkTXInfo_ModulationInfo() {}
func (m *UplinkTXInfo) GetModulationInfo() isUplinkTXInfo_ModulationInfo {
if m != nil {
return m.ModulationInfo
}
return nil
}
func (m *UplinkTXInfo) GetLoraModulationInfo() *LoRaModulationInfo {
if x, ok := m.GetModulationInfo().(*UplinkTXInfo_LoraModulationInfo); ok {
return x.LoraModulationInfo
}
return nil
}
func (m *UplinkTXInfo) GetFskModulationInfo() *FSKModulationInfo {
if x, ok := m.GetModulationInfo().(*UplinkTXInfo_FskModulationInfo); ok {
return x.FskModulationInfo
}
return nil
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*UplinkTXInfo) XXX_OneofWrappers() []interface{} {
return []interface{}{
(*UplinkTXInfo_LoraModulationInfo)(nil),
(*UplinkTXInfo_FskModulationInfo)(nil),
}
}
type LoRaModulationInfo struct {
// Bandwidth.
Bandwidth uint32 `protobuf:"varint,1,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"`
// Speading-factor.
SpreadingFactor uint32 `protobuf:"varint,2,opt,name=spreading_factor,json=spreadingFactor,proto3" json:"spreading_factor,omitempty"`
// Code-rate.
CodeRate string `protobuf:"bytes,3,opt,name=code_rate,json=codeRate,proto3" json:"code_rate,omitempty"`
// Polarization inversion.
PolarizationInversion bool `protobuf:"varint,4,opt,name=polarization_inversion,json=polarizationInversion,proto3" json:"polarization_inversion,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *LoRaModulationInfo) Reset() { *m = LoRaModulationInfo{} }
func (m *LoRaModulationInfo) String() string { return proto.CompactTextString(m) }
func (*LoRaModulationInfo) ProtoMessage() {}
func (*LoRaModulationInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{1}
}
func (m *LoRaModulationInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LoRaModulationInfo.Unmarshal(m, b)
}
func (m *LoRaModulationInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LoRaModulationInfo.Marshal(b, m, deterministic)
}
func (m *LoRaModulationInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_LoRaModulationInfo.Merge(m, src)
}
func (m *LoRaModulationInfo) XXX_Size() int {
return xxx_messageInfo_LoRaModulationInfo.Size(m)
}
func (m *LoRaModulationInfo) XXX_DiscardUnknown() {
xxx_messageInfo_LoRaModulationInfo.DiscardUnknown(m)
}
var xxx_messageInfo_LoRaModulationInfo proto.InternalMessageInfo
func (m *LoRaModulationInfo) GetBandwidth() uint32 {
if m != nil {
return m.Bandwidth
}
return 0
}
func (m *LoRaModulationInfo) GetSpreadingFactor() uint32 {
if m != nil {
return m.SpreadingFactor
}
return 0
}
func (m *LoRaModulationInfo) GetCodeRate() string {
if m != nil {
return m.CodeRate
}
return ""
}
func (m *LoRaModulationInfo) GetPolarizationInversion() bool {
if m != nil {
return m.PolarizationInversion
}
return false
}
type FSKModulationInfo struct {
// Frequency deviation.
FrequencyDeviation uint32 `protobuf:"varint,1,opt,name=frequency_deviation,json=frequencyDeviation,proto3" json:"frequency_deviation,omitempty"`
// FSK datarate (bits / sec).
Datarate uint32 `protobuf:"varint,2,opt,name=datarate,proto3" json:"datarate,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *FSKModulationInfo) Reset() { *m = FSKModulationInfo{} }
func (m *FSKModulationInfo) String() string { return proto.CompactTextString(m) }
func (*FSKModulationInfo) ProtoMessage() {}
func (*FSKModulationInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{2}
}
func (m *FSKModulationInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FSKModulationInfo.Unmarshal(m, b)
}
func (m *FSKModulationInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_FSKModulationInfo.Marshal(b, m, deterministic)
}
func (m *FSKModulationInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_FSKModulationInfo.Merge(m, src)
}
func (m *FSKModulationInfo) XXX_Size() int {
return xxx_messageInfo_FSKModulationInfo.Size(m)
}
func (m *FSKModulationInfo) XXX_DiscardUnknown() {
xxx_messageInfo_FSKModulationInfo.DiscardUnknown(m)
}
var xxx_messageInfo_FSKModulationInfo proto.InternalMessageInfo
func (m *FSKModulationInfo) GetFrequencyDeviation() uint32 {
if m != nil {
return m.FrequencyDeviation
}
return 0
}
func (m *FSKModulationInfo) GetDatarate() uint32 {
if m != nil {
return m.Datarate
}
return 0
}
type EncryptedFineTimestamp struct {
// AES key index used for encrypting the fine timestamp.
AesKeyIndex uint32 `protobuf:"varint,1,opt,name=aes_key_index,json=aesKeyIndex,proto3" json:"aes_key_index,omitempty"`
// Encrypted 'main' fine-timestamp (ns precision part of the timestamp).
EncryptedNs []byte `protobuf:"bytes,2,opt,name=encrypted_ns,json=encryptedNS,proto3" json:"encrypted_ns,omitempty"`
// FPGA ID.
FpgaId []byte `protobuf:"bytes,3,opt,name=fpga_id,json=fpgaID,proto3" json:"fpga_id,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *EncryptedFineTimestamp) Reset() { *m = EncryptedFineTimestamp{} }
func (m *EncryptedFineTimestamp) String() string { return proto.CompactTextString(m) }
func (*EncryptedFineTimestamp) ProtoMessage() {}
func (*EncryptedFineTimestamp) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{3}
}
func (m *EncryptedFineTimestamp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_EncryptedFineTimestamp.Unmarshal(m, b)
}
func (m *EncryptedFineTimestamp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_EncryptedFineTimestamp.Marshal(b, m, deterministic)
}
func (m *EncryptedFineTimestamp) XXX_Merge(src proto.Message) {
xxx_messageInfo_EncryptedFineTimestamp.Merge(m, src)
}
func (m *EncryptedFineTimestamp) XXX_Size() int {
return xxx_messageInfo_EncryptedFineTimestamp.Size(m)
}
func (m *EncryptedFineTimestamp) XXX_DiscardUnknown() {
xxx_messageInfo_EncryptedFineTimestamp.DiscardUnknown(m)
}
var xxx_messageInfo_EncryptedFineTimestamp proto.InternalMessageInfo
func (m *EncryptedFineTimestamp) GetAesKeyIndex() uint32 {
if m != nil {
return m.AesKeyIndex
}
return 0
}
func (m *EncryptedFineTimestamp) GetEncryptedNs() []byte {
if m != nil {
return m.EncryptedNs
}
return nil
}
func (m *EncryptedFineTimestamp) GetFpgaId() []byte {
if m != nil {
return m.FpgaId
}
return nil
}
type PlainFineTimestamp struct {
// Full timestamp.
Time *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *PlainFineTimestamp) Reset() { *m = PlainFineTimestamp{} }
func (m *PlainFineTimestamp) String() string { return proto.CompactTextString(m) }
func (*PlainFineTimestamp) ProtoMessage() {}
func (*PlainFineTimestamp) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{4}
}
func (m *PlainFineTimestamp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PlainFineTimestamp.Unmarshal(m, b)
}
func (m *PlainFineTimestamp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_PlainFineTimestamp.Marshal(b, m, deterministic)
}
func (m *PlainFineTimestamp) XXX_Merge(src proto.Message) {
xxx_messageInfo_PlainFineTimestamp.Merge(m, src)
}
func (m *PlainFineTimestamp) XXX_Size() int {
return xxx_messageInfo_PlainFineTimestamp.Size(m)
}
func (m *PlainFineTimestamp) XXX_DiscardUnknown() {
xxx_messageInfo_PlainFineTimestamp.DiscardUnknown(m)
}
var xxx_messageInfo_PlainFineTimestamp proto.InternalMessageInfo
func (m *PlainFineTimestamp) GetTime() *timestamppb.Timestamp {
if m != nil {
return m.Time
}
return nil
}
type GatewayStats struct {
// Gateway ID.
GatewayId []byte `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayID,proto3" json:"gateway_id,omitempty"`
// Gateway IP.
Ip string `protobuf:"bytes,9,opt,name=ip,proto3" json:"ip,omitempty"`
// Gateway time.
Time *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"`
// Gateway location.
Location *common.Location `protobuf:"bytes,3,opt,name=location,proto3" json:"location,omitempty"`
// Gateway configuration version (this maps to the config_version sent
// by LoRa Server to the gateway).
ConfigVersion string `protobuf:"bytes,4,opt,name=config_version,json=configVersion,proto3" json:"config_version,omitempty"`
// Number of radio packets received.
RxPacketsReceived uint32 `protobuf:"varint,5,opt,name=rx_packets_received,json=rxPacketsReceived,proto3" json:"rx_packets_received,omitempty"`
// Number of radio packets received with valid PHY CRC.
RxPacketsReceivedOk uint32 `protobuf:"varint,6,opt,name=rx_packets_received_ok,json=rxPacketsReceivedOK,proto3" json:"rx_packets_received_ok,omitempty"`
// Number of downlink packets received for transmission.
TxPacketsReceived uint32 `protobuf:"varint,7,opt,name=tx_packets_received,json=txPacketsReceived,proto3" json:"tx_packets_received,omitempty"`
// Number of downlink packets emitted.
TxPacketsEmitted uint32 `protobuf:"varint,8,opt,name=tx_packets_emitted,json=txPacketsEmitted,proto3" json:"tx_packets_emitted,omitempty"`
// Additional gateway meta-data.
MetaData map[string]string `protobuf:"bytes,10,rep,name=meta_data,json=metaData,proto3" json:"meta_data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// Stats ID (UUID).
// Unique identifier for the gateway stats.
StatsId []byte `protobuf:"bytes,11,opt,name=stats_id,json=statsID,proto3" json:"stats_id,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GatewayStats) Reset() { *m = GatewayStats{} }
func (m *GatewayStats) String() string { return proto.CompactTextString(m) }
func (*GatewayStats) ProtoMessage() {}
func (*GatewayStats) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{5}
}
func (m *GatewayStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GatewayStats.Unmarshal(m, b)
}
func (m *GatewayStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GatewayStats.Marshal(b, m, deterministic)
}
func (m *GatewayStats) XXX_Merge(src proto.Message) {
xxx_messageInfo_GatewayStats.Merge(m, src)
}
func (m *GatewayStats) XXX_Size() int {
return xxx_messageInfo_GatewayStats.Size(m)
}
func (m *GatewayStats) XXX_DiscardUnknown() {
xxx_messageInfo_GatewayStats.DiscardUnknown(m)
}
var xxx_messageInfo_GatewayStats proto.InternalMessageInfo
func (m *GatewayStats) GetGatewayId() []byte {
if m != nil {
return m.GatewayId
}
return nil
}
func (m *GatewayStats) GetIp() string {
if m != nil {
return m.Ip
}
return ""
}
func (m *GatewayStats) GetTime() *timestamppb.Timestamp {
if m != nil {
return m.Time
}
return nil
}
func (m *GatewayStats) GetLocation() *common.Location {
if m != nil {
return m.Location
}
return nil
}
func (m *GatewayStats) GetConfigVersion() string {
if m != nil {
return m.ConfigVersion
}
return ""
}
func (m *GatewayStats) GetRxPacketsReceived() uint32 {
if m != nil {
return m.RxPacketsReceived
}
return 0
}
func (m *GatewayStats) GetRxPacketsReceivedOk() uint32 {
if m != nil {
return m.RxPacketsReceivedOk
}
return 0
}
func (m *GatewayStats) GetTxPacketsReceived() uint32 {
if m != nil {
return m.TxPacketsReceived
}
return 0
}
func (m *GatewayStats) GetTxPacketsEmitted() uint32 {
if m != nil {
return m.TxPacketsEmitted
}
return 0
}
func (m *GatewayStats) GetMetaData() map[string]string {
if m != nil {
return m.MetaData
}
return nil
}
func (m *GatewayStats) GetStatsId() []byte {
if m != nil {
return m.StatsId
}
return nil
}
type UplinkRXInfo struct {
// Gateway ID.
GatewayId []byte `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayID,proto3" json:"gateway_id,omitempty"`
// RX time (only set when the gateway has a GPS module).
Time *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"`
// RX time since GPS epoch (only set when the gateway has a GPS module).
TimeSinceGpsEpoch *durationpb.Duration `protobuf:"bytes,3,opt,name=time_since_gps_epoch,json=timeSinceGPSEpoch,proto3" json:"time_since_gps_epoch,omitempty"`
// RSSI.
Rssi int32 `protobuf:"varint,5,opt,name=rssi,proto3" json:"rssi,omitempty"`
// LoRa SNR.
LoraSnr float64 `protobuf:"fixed64,6,opt,name=lora_snr,json=loRaSNR,proto3" json:"lora_snr,omitempty"`
// Channel.
Channel uint32 `protobuf:"varint,7,opt,name=channel,proto3" json:"channel,omitempty"`
// RF Chain.
RfChain uint32 `protobuf:"varint,8,opt,name=rf_chain,json=rfChain,proto3" json:"rf_chain,omitempty"`
// Board.
Board uint32 `protobuf:"varint,9,opt,name=board,proto3" json:"board,omitempty"`
// Antenna.
Antenna uint32 `protobuf:"varint,10,opt,name=antenna,proto3" json:"antenna,omitempty"`
// Location.
Location *common.Location `protobuf:"bytes,11,opt,name=location,proto3" json:"location,omitempty"`
// Fine-timestamp type.
FineTimestampType FineTimestampType `protobuf:"varint,12,opt,name=fine_timestamp_type,json=fineTimestampType,proto3,enum=gw.FineTimestampType" json:"fine_timestamp_type,omitempty"`
// Fine-timestamp data.
//
// Types that are valid to be assigned to FineTimestamp:
//
// *UplinkRXInfo_EncryptedFineTimestamp
// *UplinkRXInfo_PlainFineTimestamp
FineTimestamp isUplinkRXInfo_FineTimestamp `protobuf_oneof:"fine_timestamp"`
// Gateway specific context.
Context []byte `protobuf:"bytes,15,opt,name=context,proto3" json:"context,omitempty"`
// Uplink ID (UUID bytes).
// Unique and random ID which can be used to correlate the uplink across multiple logs.
UplinkId []byte `protobuf:"bytes,16,opt,name=uplink_id,json=uplinkID,proto3" json:"uplink_id,omitempty"`
// CRC status.
CrcStatus CRCStatus `protobuf:"varint,17,opt,name=crc_status,json=crcStatus,proto3,enum=gw.CRCStatus" json:"crc_status,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UplinkRXInfo) Reset() { *m = UplinkRXInfo{} }
func (m *UplinkRXInfo) String() string { return proto.CompactTextString(m) }
func (*UplinkRXInfo) ProtoMessage() {}
func (*UplinkRXInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{6}
}
func (m *UplinkRXInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UplinkRXInfo.Unmarshal(m, b)
}
func (m *UplinkRXInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UplinkRXInfo.Marshal(b, m, deterministic)
}
func (m *UplinkRXInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_UplinkRXInfo.Merge(m, src)
}
func (m *UplinkRXInfo) XXX_Size() int {
return xxx_messageInfo_UplinkRXInfo.Size(m)
}
func (m *UplinkRXInfo) XXX_DiscardUnknown() {
xxx_messageInfo_UplinkRXInfo.DiscardUnknown(m)
}
var xxx_messageInfo_UplinkRXInfo proto.InternalMessageInfo
func (m *UplinkRXInfo) GetGatewayId() []byte {
if m != nil {
return m.GatewayId
}
return nil
}
func (m *UplinkRXInfo) GetTime() *timestamppb.Timestamp {
if m != nil {
return m.Time
}
return nil
}
func (m *UplinkRXInfo) GetTimeSinceGpsEpoch() *durationpb.Duration {
if m != nil {
return m.TimeSinceGpsEpoch
}
return nil
}
func (m *UplinkRXInfo) GetRssi() int32 {
if m != nil {
return m.Rssi
}
return 0
}
func (m *UplinkRXInfo) GetLoraSnr() float64 {
if m != nil {
return m.LoraSnr
}
return 0
}
func (m *UplinkRXInfo) GetChannel() uint32 {
if m != nil {
return m.Channel
}
return 0
}
func (m *UplinkRXInfo) GetRfChain() uint32 {
if m != nil {
return m.RfChain
}
return 0
}
func (m *UplinkRXInfo) GetBoard() uint32 {
if m != nil {
return m.Board
}
return 0
}
func (m *UplinkRXInfo) GetAntenna() uint32 {
if m != nil {
return m.Antenna
}
return 0
}
func (m *UplinkRXInfo) GetLocation() *common.Location {
if m != nil {
return m.Location
}
return nil
}
func (m *UplinkRXInfo) GetFineTimestampType() FineTimestampType {
if m != nil {
return m.FineTimestampType
}
return FineTimestampType_NONE
}
type isUplinkRXInfo_FineTimestamp interface {
isUplinkRXInfo_FineTimestamp()
}
type UplinkRXInfo_EncryptedFineTimestamp struct {
EncryptedFineTimestamp *EncryptedFineTimestamp `protobuf:"bytes,13,opt,name=encrypted_fine_timestamp,json=encryptedFineTimestamp,proto3,oneof"`
}
type UplinkRXInfo_PlainFineTimestamp struct {
PlainFineTimestamp *PlainFineTimestamp `protobuf:"bytes,14,opt,name=plain_fine_timestamp,json=plainFineTimestamp,proto3,oneof"`
}
func (*UplinkRXInfo_EncryptedFineTimestamp) isUplinkRXInfo_FineTimestamp() {}
func (*UplinkRXInfo_PlainFineTimestamp) isUplinkRXInfo_FineTimestamp() {}
func (m *UplinkRXInfo) GetFineTimestamp() isUplinkRXInfo_FineTimestamp {
if m != nil {
return m.FineTimestamp
}
return nil
}
func (m *UplinkRXInfo) GetEncryptedFineTimestamp() *EncryptedFineTimestamp {
if x, ok := m.GetFineTimestamp().(*UplinkRXInfo_EncryptedFineTimestamp); ok {
return x.EncryptedFineTimestamp
}
return nil
}
func (m *UplinkRXInfo) GetPlainFineTimestamp() *PlainFineTimestamp {
if x, ok := m.GetFineTimestamp().(*UplinkRXInfo_PlainFineTimestamp); ok {
return x.PlainFineTimestamp
}
return nil
}
func (m *UplinkRXInfo) GetContext() []byte {
if m != nil {
return m.Context
}
return nil
}
func (m *UplinkRXInfo) GetUplinkId() []byte {
if m != nil {
return m.UplinkId
}
return nil
}
func (m *UplinkRXInfo) GetCrcStatus() CRCStatus {
if m != nil {
return m.CrcStatus
}
return CRCStatus_NO_CRC
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*UplinkRXInfo) XXX_OneofWrappers() []interface{} {
return []interface{}{
(*UplinkRXInfo_EncryptedFineTimestamp)(nil),
(*UplinkRXInfo_PlainFineTimestamp)(nil),
}
}
type DownlinkTXInfo struct {
// Gateway ID.
// Deprecated: replaced by gateway_id in DownlinkFrame.
GatewayId []byte `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayID,proto3" json:"gateway_id,omitempty"`
// TX frequency (in Hz).
Frequency uint32 `protobuf:"varint,5,opt,name=frequency,proto3" json:"frequency,omitempty"`
// TX power (in dBm).
Power int32 `protobuf:"varint,6,opt,name=power,proto3" json:"power,omitempty"`
// Modulation.
Modulation common.Modulation `protobuf:"varint,7,opt,name=modulation,proto3,enum=common.Modulation" json:"modulation,omitempty"`
// Types that are valid to be assigned to ModulationInfo:
//
// *DownlinkTXInfo_LoraModulationInfo
// *DownlinkTXInfo_FskModulationInfo
ModulationInfo isDownlinkTXInfo_ModulationInfo `protobuf_oneof:"modulation_info"`
// The board identifier for emitting the frame.
Board uint32 `protobuf:"varint,10,opt,name=board,proto3" json:"board,omitempty"`
// The antenna identifier for emitting the frame.
Antenna uint32 `protobuf:"varint,11,opt,name=antenna,proto3" json:"antenna,omitempty"`
// Timing defines the downlink timing to use.
Timing DownlinkTiming `protobuf:"varint,12,opt,name=timing,proto3,enum=gw.DownlinkTiming" json:"timing,omitempty"`
// Types that are valid to be assigned to TimingInfo:
//
// *DownlinkTXInfo_ImmediatelyTimingInfo
// *DownlinkTXInfo_DelayTimingInfo
// *DownlinkTXInfo_GpsEpochTimingInfo
TimingInfo isDownlinkTXInfo_TimingInfo `protobuf_oneof:"timing_info"`
// Gateway specific context.
// In case of a Class-A downlink, this contains a copy of the uplink context.
Context []byte `protobuf:"bytes,16,opt,name=context,proto3" json:"context,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DownlinkTXInfo) Reset() { *m = DownlinkTXInfo{} }
func (m *DownlinkTXInfo) String() string { return proto.CompactTextString(m) }
func (*DownlinkTXInfo) ProtoMessage() {}
func (*DownlinkTXInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{7}
}
func (m *DownlinkTXInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DownlinkTXInfo.Unmarshal(m, b)
}
func (m *DownlinkTXInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DownlinkTXInfo.Marshal(b, m, deterministic)
}
func (m *DownlinkTXInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_DownlinkTXInfo.Merge(m, src)
}
func (m *DownlinkTXInfo) XXX_Size() int {
return xxx_messageInfo_DownlinkTXInfo.Size(m)
}
func (m *DownlinkTXInfo) XXX_DiscardUnknown() {
xxx_messageInfo_DownlinkTXInfo.DiscardUnknown(m)
}
var xxx_messageInfo_DownlinkTXInfo proto.InternalMessageInfo
func (m *DownlinkTXInfo) GetGatewayId() []byte {
if m != nil {
return m.GatewayId
}
return nil
}
func (m *DownlinkTXInfo) GetFrequency() uint32 {
if m != nil {
return m.Frequency
}
return 0
}
func (m *DownlinkTXInfo) GetPower() int32 {
if m != nil {
return m.Power
}
return 0
}
func (m *DownlinkTXInfo) GetModulation() common.Modulation {
if m != nil {
return m.Modulation
}
return common.Modulation_LORA
}
type isDownlinkTXInfo_ModulationInfo interface {
isDownlinkTXInfo_ModulationInfo()
}
type DownlinkTXInfo_LoraModulationInfo struct {
LoraModulationInfo *LoRaModulationInfo `protobuf:"bytes,8,opt,name=lora_modulation_info,json=loRaModulationInfo,proto3,oneof"`
}
type DownlinkTXInfo_FskModulationInfo struct {
FskModulationInfo *FSKModulationInfo `protobuf:"bytes,9,opt,name=fsk_modulation_info,json=fskModulationInfo,proto3,oneof"`
}
func (*DownlinkTXInfo_LoraModulationInfo) isDownlinkTXInfo_ModulationInfo() {}
func (*DownlinkTXInfo_FskModulationInfo) isDownlinkTXInfo_ModulationInfo() {}
func (m *DownlinkTXInfo) GetModulationInfo() isDownlinkTXInfo_ModulationInfo {
if m != nil {
return m.ModulationInfo
}
return nil
}
func (m *DownlinkTXInfo) GetLoraModulationInfo() *LoRaModulationInfo {
if x, ok := m.GetModulationInfo().(*DownlinkTXInfo_LoraModulationInfo); ok {
return x.LoraModulationInfo
}
return nil
}
func (m *DownlinkTXInfo) GetFskModulationInfo() *FSKModulationInfo {
if x, ok := m.GetModulationInfo().(*DownlinkTXInfo_FskModulationInfo); ok {
return x.FskModulationInfo
}
return nil
}
func (m *DownlinkTXInfo) GetBoard() uint32 {
if m != nil {
return m.Board
}
return 0
}
func (m *DownlinkTXInfo) GetAntenna() uint32 {
if m != nil {
return m.Antenna
}
return 0
}
func (m *DownlinkTXInfo) GetTiming() DownlinkTiming {
if m != nil {
return m.Timing
}
return DownlinkTiming_IMMEDIATELY
}
type isDownlinkTXInfo_TimingInfo interface {
isDownlinkTXInfo_TimingInfo()
}
type DownlinkTXInfo_ImmediatelyTimingInfo struct {
ImmediatelyTimingInfo *ImmediatelyTimingInfo `protobuf:"bytes,13,opt,name=immediately_timing_info,json=immediatelyTimingInfo,proto3,oneof"`
}
type DownlinkTXInfo_DelayTimingInfo struct {
DelayTimingInfo *DelayTimingInfo `protobuf:"bytes,14,opt,name=delay_timing_info,json=delayTimingInfo,proto3,oneof"`
}
type DownlinkTXInfo_GpsEpochTimingInfo struct {
GpsEpochTimingInfo *GPSEpochTimingInfo `protobuf:"bytes,15,opt,name=gps_epoch_timing_info,json=gpsEpochTimingInfo,proto3,oneof"`
}
func (*DownlinkTXInfo_ImmediatelyTimingInfo) isDownlinkTXInfo_TimingInfo() {}
func (*DownlinkTXInfo_DelayTimingInfo) isDownlinkTXInfo_TimingInfo() {}
func (*DownlinkTXInfo_GpsEpochTimingInfo) isDownlinkTXInfo_TimingInfo() {}
func (m *DownlinkTXInfo) GetTimingInfo() isDownlinkTXInfo_TimingInfo {
if m != nil {
return m.TimingInfo
}
return nil
}
func (m *DownlinkTXInfo) GetImmediatelyTimingInfo() *ImmediatelyTimingInfo {
if x, ok := m.GetTimingInfo().(*DownlinkTXInfo_ImmediatelyTimingInfo); ok {
return x.ImmediatelyTimingInfo
}
return nil
}
func (m *DownlinkTXInfo) GetDelayTimingInfo() *DelayTimingInfo {
if x, ok := m.GetTimingInfo().(*DownlinkTXInfo_DelayTimingInfo); ok {
return x.DelayTimingInfo
}
return nil
}
func (m *DownlinkTXInfo) GetGpsEpochTimingInfo() *GPSEpochTimingInfo {
if x, ok := m.GetTimingInfo().(*DownlinkTXInfo_GpsEpochTimingInfo); ok {
return x.GpsEpochTimingInfo
}
return nil
}
func (m *DownlinkTXInfo) GetContext() []byte {
if m != nil {
return m.Context
}
return nil
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*DownlinkTXInfo) XXX_OneofWrappers() []interface{} {
return []interface{}{
(*DownlinkTXInfo_LoraModulationInfo)(nil),
(*DownlinkTXInfo_FskModulationInfo)(nil),
(*DownlinkTXInfo_ImmediatelyTimingInfo)(nil),
(*DownlinkTXInfo_DelayTimingInfo)(nil),
(*DownlinkTXInfo_GpsEpochTimingInfo)(nil),
}
}
type ImmediatelyTimingInfo struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ImmediatelyTimingInfo) Reset() { *m = ImmediatelyTimingInfo{} }
func (m *ImmediatelyTimingInfo) String() string { return proto.CompactTextString(m) }
func (*ImmediatelyTimingInfo) ProtoMessage() {}
func (*ImmediatelyTimingInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{8}
}
func (m *ImmediatelyTimingInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ImmediatelyTimingInfo.Unmarshal(m, b)
}
func (m *ImmediatelyTimingInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ImmediatelyTimingInfo.Marshal(b, m, deterministic)
}
func (m *ImmediatelyTimingInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ImmediatelyTimingInfo.Merge(m, src)
}
func (m *ImmediatelyTimingInfo) XXX_Size() int {
return xxx_messageInfo_ImmediatelyTimingInfo.Size(m)
}
func (m *ImmediatelyTimingInfo) XXX_DiscardUnknown() {
xxx_messageInfo_ImmediatelyTimingInfo.DiscardUnknown(m)
}
var xxx_messageInfo_ImmediatelyTimingInfo proto.InternalMessageInfo
type DelayTimingInfo struct {
// Delay (duration).
// The delay will be added to the gateway internal timing, provided by the context object.
Delay *durationpb.Duration `protobuf:"bytes,1,opt,name=delay,proto3" json:"delay,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DelayTimingInfo) Reset() { *m = DelayTimingInfo{} }
func (m *DelayTimingInfo) String() string { return proto.CompactTextString(m) }
func (*DelayTimingInfo) ProtoMessage() {}
func (*DelayTimingInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{9}
}
func (m *DelayTimingInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DelayTimingInfo.Unmarshal(m, b)
}
func (m *DelayTimingInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DelayTimingInfo.Marshal(b, m, deterministic)
}
func (m *DelayTimingInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_DelayTimingInfo.Merge(m, src)
}
func (m *DelayTimingInfo) XXX_Size() int {
return xxx_messageInfo_DelayTimingInfo.Size(m)
}
func (m *DelayTimingInfo) XXX_DiscardUnknown() {
xxx_messageInfo_DelayTimingInfo.DiscardUnknown(m)
}
var xxx_messageInfo_DelayTimingInfo proto.InternalMessageInfo
func (m *DelayTimingInfo) GetDelay() *durationpb.Duration {
if m != nil {
return m.Delay
}
return nil
}
type GPSEpochTimingInfo struct {
// Duration since GPS Epoch.
TimeSinceGpsEpoch *durationpb.Duration `protobuf:"bytes,1,opt,name=time_since_gps_epoch,json=timeSinceGPSEpoch,proto3" json:"time_since_gps_epoch,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GPSEpochTimingInfo) Reset() { *m = GPSEpochTimingInfo{} }
func (m *GPSEpochTimingInfo) String() string { return proto.CompactTextString(m) }
func (*GPSEpochTimingInfo) ProtoMessage() {}
func (*GPSEpochTimingInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{10}
}
func (m *GPSEpochTimingInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GPSEpochTimingInfo.Unmarshal(m, b)
}
func (m *GPSEpochTimingInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GPSEpochTimingInfo.Marshal(b, m, deterministic)
}
func (m *GPSEpochTimingInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_GPSEpochTimingInfo.Merge(m, src)
}
func (m *GPSEpochTimingInfo) XXX_Size() int {
return xxx_messageInfo_GPSEpochTimingInfo.Size(m)
}
func (m *GPSEpochTimingInfo) XXX_DiscardUnknown() {
xxx_messageInfo_GPSEpochTimingInfo.DiscardUnknown(m)
}
var xxx_messageInfo_GPSEpochTimingInfo proto.InternalMessageInfo
func (m *GPSEpochTimingInfo) GetTimeSinceGpsEpoch() *durationpb.Duration {
if m != nil {
return m.TimeSinceGpsEpoch
}
return nil
}
type UplinkFrame struct {
GatewayEUI string `protobuf:"bytes,10,opt,name=gatewayEUI,proto3" json:"gatewayEUI,omitempty"`
DevEUI string `protobuf:"bytes,11,opt,name=devEUI,proto3" json:"devEUI,omitempty"`
JoinEUI string `protobuf:"bytes,12,opt,name=joinEUI,proto3" json:"joinEUI,omitempty"`
DevAddr string `protobuf:"bytes,13,opt,name=devAddr,proto3" json:"devAddr,omitempty"`
Name string `protobuf:"bytes,14,opt,name=name,proto3" json:"name,omitempty"`
// PHYPayload.
PhyPayload []byte `protobuf:"bytes,1,opt,name=phy_payload,json=phyPayload,proto3" json:"phy_payload,omitempty"`
// TX meta-data.
TxInfo *UplinkTXInfo `protobuf:"bytes,2,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
// RX meta-data.
RxInfo *UplinkRXInfo `protobuf:"bytes,3,opt,name=rx_info,json=rxInfo,proto3" json:"rx_info,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UplinkFrame) Reset() { *m = UplinkFrame{} }
func (m *UplinkFrame) String() string { return proto.CompactTextString(m) }
func (*UplinkFrame) ProtoMessage() {}
func (*UplinkFrame) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{11}
}
func (m *UplinkFrame) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UplinkFrame.Unmarshal(m, b)
}
func (m *UplinkFrame) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UplinkFrame.Marshal(b, m, deterministic)
}
func (m *UplinkFrame) XXX_Merge(src proto.Message) {
xxx_messageInfo_UplinkFrame.Merge(m, src)
}
func (m *UplinkFrame) XXX_Size() int {
return xxx_messageInfo_UplinkFrame.Size(m)
}
func (m *UplinkFrame) XXX_DiscardUnknown() {
xxx_messageInfo_UplinkFrame.DiscardUnknown(m)
}
var xxx_messageInfo_UplinkFrame proto.InternalMessageInfo
func (m *UplinkFrame) GetGatewayEUI() string {
if m != nil {
return m.GatewayEUI
}
return ""
}
func (m *UplinkFrame) GetDevEUI() string {
if m != nil {
return m.DevEUI
}
return ""
}
func (m *UplinkFrame) GetJoinEUI() string {
if m != nil {
return m.JoinEUI
}
return ""
}
func (m *UplinkFrame) GetDevAddr() string {
if m != nil {
return m.DevAddr
}
return ""
}
func (m *UplinkFrame) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *UplinkFrame) GetPhyPayload() []byte {
if m != nil {
return m.PhyPayload
}
return nil
}
func (m *UplinkFrame) GetTxInfo() *UplinkTXInfo {
if m != nil {
return m.TxInfo
}
return nil
}
func (m *UplinkFrame) GetRxInfo() *UplinkRXInfo {
if m != nil {
return m.RxInfo
}
return nil
}
type UplinkFrameSet struct {
// PHYPayload.
GatewayEUI string `protobuf:"bytes,10,opt,name=gatewayEUI,proto3" json:"gatewayEUI,omitempty"`
DevEUI string `protobuf:"bytes,11,opt,name=devEUI,proto3" json:"devEUI,omitempty"`
JoinEUI string `protobuf:"bytes,12,opt,name=joinEUI,proto3" json:"joinEUI,omitempty"`
DevAddr string `protobuf:"bytes,13,opt,name=devAddr,proto3" json:"devAddr,omitempty"`
PhyPayload []byte `protobuf:"bytes,1,opt,name=phy_payload,json=phyPayload,proto3" json:"phy_payload,omitempty"`
// TX meta-data.
TxInfo *UplinkTXInfo `protobuf:"bytes,2,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
// RX meta-data set.
RxInfo []*UplinkRXInfo `protobuf:"bytes,3,rep,name=rx_info,json=rxInfo,proto3" json:"rx_info,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UplinkFrameSet) Reset() { *m = UplinkFrameSet{} }
func (m *UplinkFrameSet) String() string { return proto.CompactTextString(m) }
func (*UplinkFrameSet) ProtoMessage() {}
func (*UplinkFrameSet) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{12}
}
func (m *UplinkFrameSet) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UplinkFrameSet.Unmarshal(m, b)
}
func (m *UplinkFrameSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UplinkFrameSet.Marshal(b, m, deterministic)
}
func (m *UplinkFrameSet) XXX_Merge(src proto.Message) {
xxx_messageInfo_UplinkFrameSet.Merge(m, src)
}
func (m *UplinkFrameSet) XXX_Size() int {
return xxx_messageInfo_UplinkFrameSet.Size(m)
}
func (m *UplinkFrameSet) XXX_DiscardUnknown() {
xxx_messageInfo_UplinkFrameSet.DiscardUnknown(m)
}
var xxx_messageInfo_UplinkFrameSet proto.InternalMessageInfo
func (m *UplinkFrameSet) GetGatewayEUI() string {
if m != nil {
return m.GatewayEUI
}
return ""
}
func (m *UplinkFrameSet) GetDevEUI() string {
if m != nil {
return m.DevEUI
}
return ""
}
func (m *UplinkFrameSet) GetJoinEUI() string {
if m != nil {
return m.JoinEUI
}
return ""
}
func (m *UplinkFrameSet) GetDevAddr() string {
if m != nil {
return m.DevAddr
}
return ""
}
func (m *UplinkFrameSet) GetPhyPayload() []byte {
if m != nil {
return m.PhyPayload
}
return nil
}
func (m *UplinkFrameSet) GetTxInfo() *UplinkTXInfo {
if m != nil {
return m.TxInfo
}
return nil
}
func (m *UplinkFrameSet) GetRxInfo() []*UplinkRXInfo {
if m != nil {
return m.RxInfo
}
return nil
}
type DownlinkFrame struct {
GatewayEUI string `protobuf:"bytes,10,opt,name=gatewayEUI,proto3" json:"gatewayEUI,omitempty"`
DevEUI string `protobuf:"bytes,11,opt,name=devEUI,proto3" json:"devEUI,omitempty"`
JoinEUI string `protobuf:"bytes,12,opt,name=joinEUI,proto3" json:"joinEUI,omitempty"`
DevAddr string `protobuf:"bytes,13,opt,name=devAddr,proto3" json:"devAddr,omitempty"`
Name string `protobuf:"bytes,14,opt,name=name,proto3" json:"name,omitempty"`
// PHYPayload.
// Deprecated: replaced by items.
PhyPayload []byte `protobuf:"bytes,1,opt,name=phy_payload,json=phyPayload,proto3" json:"phy_payload,omitempty"`
// TX meta-data.
// Deprecated: replaced by items.
TxInfo *DownlinkTXInfo `protobuf:"bytes,2,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
// Token (uint16 value).
// Deprecated: replaced by downlink_id.
Token uint32 `protobuf:"varint,3,opt,name=token,proto3" json:"token,omitempty"`
// Downlink ID (UUID).
DownlinkId []byte `protobuf:"bytes,4,opt,name=downlink_id,json=downlinkID,proto3" json:"downlink_id,omitempty"`
// Downlink frame items.
// This makes it possible to send multiple downlink opportunities to the
// gateway at once (e.g. RX1 and RX2 in LoRaWAN). The first item has the
// highest priority, the last the lowest. The gateway will emit at most
// one item.
Items []*DownlinkFrameItem `protobuf:"bytes,5,rep,name=items,proto3" json:"items,omitempty"`
// Gateway ID.
GatewayId []byte `protobuf:"bytes,6,opt,name=gateway_id,json=gatewayID,proto3" json:"gateway_id,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DownlinkFrame) Reset() { *m = DownlinkFrame{} }
func (m *DownlinkFrame) String() string { return proto.CompactTextString(m) }
func (*DownlinkFrame) ProtoMessage() {}
func (*DownlinkFrame) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{13}
}
func (m *DownlinkFrame) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DownlinkFrame.Unmarshal(m, b)
}
func (m *DownlinkFrame) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DownlinkFrame.Marshal(b, m, deterministic)
}
func (m *DownlinkFrame) XXX_Merge(src proto.Message) {
xxx_messageInfo_DownlinkFrame.Merge(m, src)
}
func (m *DownlinkFrame) XXX_Size() int {
return xxx_messageInfo_DownlinkFrame.Size(m)
}
func (m *DownlinkFrame) XXX_DiscardUnknown() {
xxx_messageInfo_DownlinkFrame.DiscardUnknown(m)
}
var xxx_messageInfo_DownlinkFrame proto.InternalMessageInfo
func (m *DownlinkFrame) GetGatewayEUI() string {
if m != nil {
return m.GatewayEUI
}
return ""
}
func (m *DownlinkFrame) GetDevEUI() string {
if m != nil {
return m.DevEUI
}
return ""
}
func (m *DownlinkFrame) GetJoinEUI() string {
if m != nil {
return m.JoinEUI
}
return ""
}
func (m *DownlinkFrame) GetDevAddr() string {
if m != nil {
return m.DevAddr
}
return ""
}
func (m *DownlinkFrame) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *DownlinkFrame) GetPhyPayload() []byte {
if m != nil {
return m.PhyPayload
}
return nil
}
func (m *DownlinkFrame) GetTxInfo() *DownlinkTXInfo {
if m != nil {
return m.TxInfo
}
return nil
}
func (m *DownlinkFrame) GetToken() uint32 {
if m != nil {
return m.Token
}
return 0
}
func (m *DownlinkFrame) GetDownlinkId() []byte {
if m != nil {
return m.DownlinkId
}
return nil
}
func (m *DownlinkFrame) GetItems() []*DownlinkFrameItem {
if m != nil {
return m.Items
}
return nil
}
func (m *DownlinkFrame) GetGatewayId() []byte {
if m != nil {
return m.GatewayId
}
return nil
}
type DownlinkFrameItem struct {
// PHYPayload.
PhyPayload []byte `protobuf:"bytes,1,opt,name=phy_payload,json=phyPayload,proto3" json:"phy_payload,omitempty"`
// TX meta-data.
TxInfo *DownlinkTXInfo `protobuf:"bytes,2,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DownlinkFrameItem) Reset() { *m = DownlinkFrameItem{} }
func (m *DownlinkFrameItem) String() string { return proto.CompactTextString(m) }
func (*DownlinkFrameItem) ProtoMessage() {}
func (*DownlinkFrameItem) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{14}
}
func (m *DownlinkFrameItem) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DownlinkFrameItem.Unmarshal(m, b)
}
func (m *DownlinkFrameItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DownlinkFrameItem.Marshal(b, m, deterministic)
}
func (m *DownlinkFrameItem) XXX_Merge(src proto.Message) {
xxx_messageInfo_DownlinkFrameItem.Merge(m, src)
}
func (m *DownlinkFrameItem) XXX_Size() int {
return xxx_messageInfo_DownlinkFrameItem.Size(m)
}
func (m *DownlinkFrameItem) XXX_DiscardUnknown() {
xxx_messageInfo_DownlinkFrameItem.DiscardUnknown(m)
}
var xxx_messageInfo_DownlinkFrameItem proto.InternalMessageInfo
func (m *DownlinkFrameItem) GetPhyPayload() []byte {
if m != nil {
return m.PhyPayload
}
return nil
}
func (m *DownlinkFrameItem) GetTxInfo() *DownlinkTXInfo {
if m != nil {
return m.TxInfo
}
return nil
}
type DownlinkTXAck struct {
// Gateway ID.
GatewayId []byte `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayID,proto3" json:"gateway_id,omitempty"`
// Token (uint16 value).
// Deprecated: replaced by downlink_id.
Token uint32 `protobuf:"varint,2,opt,name=token,proto3" json:"token,omitempty"`
// Error.
// Deprecated: replaced by items.
Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
// Downlink ID (UUID).
DownlinkId []byte `protobuf:"bytes,4,opt,name=downlink_id,json=downlinkID,proto3" json:"downlink_id,omitempty"`
// Downlink frame items.
// This list has the same length as the request and indicates which
// downlink frame has been emitted of the requested list (or why it failed).
// Note that at most one item has a positive acknowledgement.
Items []*DownlinkTXAckItem `protobuf:"bytes,5,rep,name=items,proto3" json:"items,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DownlinkTXAck) Reset() { *m = DownlinkTXAck{} }
func (m *DownlinkTXAck) String() string { return proto.CompactTextString(m) }
func (*DownlinkTXAck) ProtoMessage() {}
func (*DownlinkTXAck) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{15}
}
func (m *DownlinkTXAck) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DownlinkTXAck.Unmarshal(m, b)
}
func (m *DownlinkTXAck) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DownlinkTXAck.Marshal(b, m, deterministic)
}
func (m *DownlinkTXAck) XXX_Merge(src proto.Message) {
xxx_messageInfo_DownlinkTXAck.Merge(m, src)
}
func (m *DownlinkTXAck) XXX_Size() int {
return xxx_messageInfo_DownlinkTXAck.Size(m)
}
func (m *DownlinkTXAck) XXX_DiscardUnknown() {
xxx_messageInfo_DownlinkTXAck.DiscardUnknown(m)
}
var xxx_messageInfo_DownlinkTXAck proto.InternalMessageInfo
func (m *DownlinkTXAck) GetGatewayId() []byte {
if m != nil {
return m.GatewayId
}
return nil
}
func (m *DownlinkTXAck) GetToken() uint32 {
if m != nil {
return m.Token
}
return 0
}
func (m *DownlinkTXAck) GetError() string {
if m != nil {
return m.Error
}
return ""
}
func (m *DownlinkTXAck) GetDownlinkId() []byte {
if m != nil {
return m.DownlinkId
}
return nil
}
func (m *DownlinkTXAck) GetItems() []*DownlinkTXAckItem {
if m != nil {
return m.Items
}
return nil
}
type DownlinkTXAckItem struct {
// The Ack status of this item.
Status TxAckStatus `protobuf:"varint,1,opt,name=status,proto3,enum=gw.TxAckStatus" json:"status,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DownlinkTXAckItem) Reset() { *m = DownlinkTXAckItem{} }
func (m *DownlinkTXAckItem) String() string { return proto.CompactTextString(m) }
func (*DownlinkTXAckItem) ProtoMessage() {}
func (*DownlinkTXAckItem) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{16}
}
func (m *DownlinkTXAckItem) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DownlinkTXAckItem.Unmarshal(m, b)
}
func (m *DownlinkTXAckItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DownlinkTXAckItem.Marshal(b, m, deterministic)
}
func (m *DownlinkTXAckItem) XXX_Merge(src proto.Message) {
xxx_messageInfo_DownlinkTXAckItem.Merge(m, src)
}
func (m *DownlinkTXAckItem) XXX_Size() int {
return xxx_messageInfo_DownlinkTXAckItem.Size(m)
}
func (m *DownlinkTXAckItem) XXX_DiscardUnknown() {
xxx_messageInfo_DownlinkTXAckItem.DiscardUnknown(m)
}
var xxx_messageInfo_DownlinkTXAckItem proto.InternalMessageInfo
func (m *DownlinkTXAckItem) GetStatus() TxAckStatus {
if m != nil {
return m.Status
}
return TxAckStatus_IGNORED
}
type GatewayConfiguration struct {
// Gateway ID.
GatewayId []byte `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayID,proto3" json:"gateway_id,omitempty"`
// Configuration version.
Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
// Channels.
Channels []*ChannelConfiguration `protobuf:"bytes,3,rep,name=channels,proto3" json:"channels,omitempty"`
// Stats interval.
StatsInterval *durationpb.Duration `protobuf:"bytes,4,opt,name=stats_interval,json=statsInterval,proto3" json:"stats_interval,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GatewayConfiguration) Reset() { *m = GatewayConfiguration{} }
func (m *GatewayConfiguration) String() string { return proto.CompactTextString(m) }
func (*GatewayConfiguration) ProtoMessage() {}
func (*GatewayConfiguration) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{17}
}
func (m *GatewayConfiguration) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GatewayConfiguration.Unmarshal(m, b)
}
func (m *GatewayConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GatewayConfiguration.Marshal(b, m, deterministic)
}
func (m *GatewayConfiguration) XXX_Merge(src proto.Message) {
xxx_messageInfo_GatewayConfiguration.Merge(m, src)
}
func (m *GatewayConfiguration) XXX_Size() int {
return xxx_messageInfo_GatewayConfiguration.Size(m)
}
func (m *GatewayConfiguration) XXX_DiscardUnknown() {
xxx_messageInfo_GatewayConfiguration.DiscardUnknown(m)
}
var xxx_messageInfo_GatewayConfiguration proto.InternalMessageInfo
func (m *GatewayConfiguration) GetGatewayId() []byte {
if m != nil {
return m.GatewayId
}
return nil
}
func (m *GatewayConfiguration) GetVersion() string {
if m != nil {
return m.Version
}
return ""
}
func (m *GatewayConfiguration) GetChannels() []*ChannelConfiguration {
if m != nil {
return m.Channels
}
return nil
}
func (m *GatewayConfiguration) GetStatsInterval() *durationpb.Duration {
if m != nil {
return m.StatsInterval
}
return nil
}
type ChannelConfiguration struct {
// Frequency (Hz).
Frequency uint32 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"`
// Channel modulation.
Modulation common.Modulation `protobuf:"varint,2,opt,name=modulation,proto3,enum=common.Modulation" json:"modulation,omitempty"`
// Types that are valid to be assigned to ModulationConfig:
//
// *ChannelConfiguration_LoraModulationConfig
// *ChannelConfiguration_FskModulationConfig
ModulationConfig isChannelConfiguration_ModulationConfig `protobuf_oneof:"modulation_config"`
// Board index.
Board uint32 `protobuf:"varint,5,opt,name=board,proto3" json:"board,omitempty"`
// Demodulator index (of the given board).
Demodulator uint32 `protobuf:"varint,6,opt,name=demodulator,proto3" json:"demodulator,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ChannelConfiguration) Reset() { *m = ChannelConfiguration{} }
func (m *ChannelConfiguration) String() string { return proto.CompactTextString(m) }
func (*ChannelConfiguration) ProtoMessage() {}
func (*ChannelConfiguration) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{18}
}
func (m *ChannelConfiguration) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelConfiguration.Unmarshal(m, b)
}
func (m *ChannelConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ChannelConfiguration.Marshal(b, m, deterministic)
}
func (m *ChannelConfiguration) XXX_Merge(src proto.Message) {
xxx_messageInfo_ChannelConfiguration.Merge(m, src)
}
func (m *ChannelConfiguration) XXX_Size() int {
return xxx_messageInfo_ChannelConfiguration.Size(m)
}
func (m *ChannelConfiguration) XXX_DiscardUnknown() {
xxx_messageInfo_ChannelConfiguration.DiscardUnknown(m)
}
var xxx_messageInfo_ChannelConfiguration proto.InternalMessageInfo
func (m *ChannelConfiguration) GetFrequency() uint32 {
if m != nil {
return m.Frequency
}
return 0
}
func (m *ChannelConfiguration) GetModulation() common.Modulation {
if m != nil {
return m.Modulation
}
return common.Modulation_LORA
}
type isChannelConfiguration_ModulationConfig interface {
isChannelConfiguration_ModulationConfig()
}
type ChannelConfiguration_LoraModulationConfig struct {
LoraModulationConfig *LoRaModulationConfig `protobuf:"bytes,3,opt,name=lora_modulation_config,json=loRaModulationConfig,proto3,oneof"`
}
type ChannelConfiguration_FskModulationConfig struct {
FskModulationConfig *FSKModulationConfig `protobuf:"bytes,4,opt,name=fsk_modulation_config,json=fskModulationConfig,proto3,oneof"`
}
func (*ChannelConfiguration_LoraModulationConfig) isChannelConfiguration_ModulationConfig() {}
func (*ChannelConfiguration_FskModulationConfig) isChannelConfiguration_ModulationConfig() {}
func (m *ChannelConfiguration) GetModulationConfig() isChannelConfiguration_ModulationConfig {
if m != nil {
return m.ModulationConfig
}
return nil
}
func (m *ChannelConfiguration) GetLoraModulationConfig() *LoRaModulationConfig {
if x, ok := m.GetModulationConfig().(*ChannelConfiguration_LoraModulationConfig); ok {
return x.LoraModulationConfig
}
return nil
}
func (m *ChannelConfiguration) GetFskModulationConfig() *FSKModulationConfig {
if x, ok := m.GetModulationConfig().(*ChannelConfiguration_FskModulationConfig); ok {
return x.FskModulationConfig
}
return nil
}
func (m *ChannelConfiguration) GetBoard() uint32 {
if m != nil {
return m.Board
}
return 0
}
func (m *ChannelConfiguration) GetDemodulator() uint32 {
if m != nil {
return m.Demodulator
}
return 0
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*ChannelConfiguration) XXX_OneofWrappers() []interface{} {
return []interface{}{
(*ChannelConfiguration_LoraModulationConfig)(nil),
(*ChannelConfiguration_FskModulationConfig)(nil),
}
}
type LoRaModulationConfig struct {
// Bandwidth.
Bandwidth uint32 `protobuf:"varint,1,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"`
// Spreading-factors.
SpreadingFactors []uint32 `protobuf:"varint,2,rep,packed,name=spreading_factors,json=spreadingFactors,proto3" json:"spreading_factors,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *LoRaModulationConfig) Reset() { *m = LoRaModulationConfig{} }
func (m *LoRaModulationConfig) String() string { return proto.CompactTextString(m) }
func (*LoRaModulationConfig) ProtoMessage() {}
func (*LoRaModulationConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{19}
}
func (m *LoRaModulationConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LoRaModulationConfig.Unmarshal(m, b)
}
func (m *LoRaModulationConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_LoRaModulationConfig.Marshal(b, m, deterministic)
}
func (m *LoRaModulationConfig) XXX_Merge(src proto.Message) {
xxx_messageInfo_LoRaModulationConfig.Merge(m, src)
}
func (m *LoRaModulationConfig) XXX_Size() int {
return xxx_messageInfo_LoRaModulationConfig.Size(m)
}
func (m *LoRaModulationConfig) XXX_DiscardUnknown() {
xxx_messageInfo_LoRaModulationConfig.DiscardUnknown(m)
}
var xxx_messageInfo_LoRaModulationConfig proto.InternalMessageInfo
func (m *LoRaModulationConfig) GetBandwidth() uint32 {
if m != nil {
return m.Bandwidth
}
return 0
}
func (m *LoRaModulationConfig) GetSpreadingFactors() []uint32 {
if m != nil {
return m.SpreadingFactors
}
return nil
}
type FSKModulationConfig struct {
// Bandwidth.
Bandwidth uint32 `protobuf:"varint,1,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"`
// Bitrate.
Bitrate uint32 `protobuf:"varint,2,opt,name=bitrate,proto3" json:"bitrate,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *FSKModulationConfig) Reset() { *m = FSKModulationConfig{} }
func (m *FSKModulationConfig) String() string { return proto.CompactTextString(m) }
func (*FSKModulationConfig) ProtoMessage() {}
func (*FSKModulationConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{20}
}
func (m *FSKModulationConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FSKModulationConfig.Unmarshal(m, b)
}
func (m *FSKModulationConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_FSKModulationConfig.Marshal(b, m, deterministic)
}
func (m *FSKModulationConfig) XXX_Merge(src proto.Message) {
xxx_messageInfo_FSKModulationConfig.Merge(m, src)
}
func (m *FSKModulationConfig) XXX_Size() int {
return xxx_messageInfo_FSKModulationConfig.Size(m)
}
func (m *FSKModulationConfig) XXX_DiscardUnknown() {
xxx_messageInfo_FSKModulationConfig.DiscardUnknown(m)
}
var xxx_messageInfo_FSKModulationConfig proto.InternalMessageInfo
func (m *FSKModulationConfig) GetBandwidth() uint32 {
if m != nil {
return m.Bandwidth
}
return 0
}
func (m *FSKModulationConfig) GetBitrate() uint32 {
if m != nil {
return m.Bitrate
}
return 0
}
type GatewayCommandExecRequest struct {
// Gateway ID.
GatewayId []byte `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayID,proto3" json:"gateway_id,omitempty"`
// Command to execute.
// This command must be pre-configured in the LoRa Gateway Bridge configuration.
Command string `protobuf:"bytes,2,opt,name=command,proto3" json:"command,omitempty"`
// Execution request ID (UUID).
// The same token will be returned when the execution of the command has
// completed.
ExecId []byte `protobuf:"bytes,3,opt,name=ExecId,json=execID,proto3" json:"ExecId,omitempty"`
// Standard input.
Stdin []byte `protobuf:"bytes,4,opt,name=stdin,proto3" json:"stdin,omitempty"`
// Environment variables.
Environment map[string]string `protobuf:"bytes,5,rep,name=environment,proto3" json:"environment,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GatewayCommandExecRequest) Reset() { *m = GatewayCommandExecRequest{} }
func (m *GatewayCommandExecRequest) String() string { return proto.CompactTextString(m) }
func (*GatewayCommandExecRequest) ProtoMessage() {}
func (*GatewayCommandExecRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{21}
}
func (m *GatewayCommandExecRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GatewayCommandExecRequest.Unmarshal(m, b)
}
func (m *GatewayCommandExecRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GatewayCommandExecRequest.Marshal(b, m, deterministic)
}
func (m *GatewayCommandExecRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GatewayCommandExecRequest.Merge(m, src)
}
func (m *GatewayCommandExecRequest) XXX_Size() int {
return xxx_messageInfo_GatewayCommandExecRequest.Size(m)
}
func (m *GatewayCommandExecRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GatewayCommandExecRequest.DiscardUnknown(m)
}
var xxx_messageInfo_GatewayCommandExecRequest proto.InternalMessageInfo
func (m *GatewayCommandExecRequest) GetGatewayId() []byte {
if m != nil {
return m.GatewayId
}
return nil
}
func (m *GatewayCommandExecRequest) GetCommand() string {
if m != nil {
return m.Command
}
return ""
}
func (m *GatewayCommandExecRequest) GetExecId() []byte {
if m != nil {
return m.ExecId
}
return nil
}
func (m *GatewayCommandExecRequest) GetStdin() []byte {
if m != nil {
return m.Stdin
}
return nil
}
func (m *GatewayCommandExecRequest) GetEnvironment() map[string]string {
if m != nil {
return m.Environment
}
return nil
}
type GatewayCommandExecResponse struct {
// Gateway ID.
GatewayId []byte `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayID,proto3" json:"gateway_id,omitempty"`
// Execution request ID (UUID).
ExecId []byte `protobuf:"bytes,2,opt,name=exec_id,json=execID,proto3" json:"exec_id,omitempty"`
// Standard output.
Stdout []byte `protobuf:"bytes,3,opt,name=stdout,proto3" json:"stdout,omitempty"`
// Standard error.
Stderr []byte `protobuf:"bytes,4,opt,name=stderr,proto3" json:"stderr,omitempty"`
// Error message.
Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GatewayCommandExecResponse) Reset() { *m = GatewayCommandExecResponse{} }
func (m *GatewayCommandExecResponse) String() string { return proto.CompactTextString(m) }
func (*GatewayCommandExecResponse) ProtoMessage() {}
func (*GatewayCommandExecResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{22}
}
func (m *GatewayCommandExecResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GatewayCommandExecResponse.Unmarshal(m, b)
}
func (m *GatewayCommandExecResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GatewayCommandExecResponse.Marshal(b, m, deterministic)
}
func (m *GatewayCommandExecResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GatewayCommandExecResponse.Merge(m, src)
}
func (m *GatewayCommandExecResponse) XXX_Size() int {
return xxx_messageInfo_GatewayCommandExecResponse.Size(m)
}
func (m *GatewayCommandExecResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GatewayCommandExecResponse.DiscardUnknown(m)
}
var xxx_messageInfo_GatewayCommandExecResponse proto.InternalMessageInfo
func (m *GatewayCommandExecResponse) GetGatewayId() []byte {
if m != nil {
return m.GatewayId
}
return nil
}
func (m *GatewayCommandExecResponse) GetExecId() []byte {
if m != nil {
return m.ExecId
}
return nil
}
func (m *GatewayCommandExecResponse) GetStdout() []byte {
if m != nil {
return m.Stdout
}
return nil
}
func (m *GatewayCommandExecResponse) GetStderr() []byte {
if m != nil {
return m.Stderr
}
return nil
}
func (m *GatewayCommandExecResponse) GetError() string {
if m != nil {
return m.Error
}
return ""
}
// RawPacketForwarderEvent contains a raw packet-forwarder event.
// It can be used to access packet-forwarder features that are not (fully)
// integrated with the ChirpStack Gateway Bridge.
type RawPacketForwarderEvent struct {
// Gateway ID.
GatewayId []byte `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayID,proto3" json:"gateway_id,omitempty"`
// Raw ID (UUID).
RawId []byte `protobuf:"bytes,2,opt,name=raw_id,json=rawID,proto3" json:"raw_id,omitempty"`
// Payload contains the raw payload.
Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *RawPacketForwarderEvent) Reset() { *m = RawPacketForwarderEvent{} }
func (m *RawPacketForwarderEvent) String() string { return proto.CompactTextString(m) }
func (*RawPacketForwarderEvent) ProtoMessage() {}
func (*RawPacketForwarderEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{23}
}
func (m *RawPacketForwarderEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RawPacketForwarderEvent.Unmarshal(m, b)
}
func (m *RawPacketForwarderEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RawPacketForwarderEvent.Marshal(b, m, deterministic)
}
func (m *RawPacketForwarderEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_RawPacketForwarderEvent.Merge(m, src)
}
func (m *RawPacketForwarderEvent) XXX_Size() int {
return xxx_messageInfo_RawPacketForwarderEvent.Size(m)
}
func (m *RawPacketForwarderEvent) XXX_DiscardUnknown() {
xxx_messageInfo_RawPacketForwarderEvent.DiscardUnknown(m)
}
var xxx_messageInfo_RawPacketForwarderEvent proto.InternalMessageInfo
func (m *RawPacketForwarderEvent) GetGatewayId() []byte {
if m != nil {
return m.GatewayId
}
return nil
}
func (m *RawPacketForwarderEvent) GetRawId() []byte {
if m != nil {
return m.RawId
}
return nil
}
func (m *RawPacketForwarderEvent) GetPayload() []byte {
if m != nil {
return m.Payload
}
return nil
}
// RawPacketForwarderEvent contains a raw packet-forwarder command.
// It can be used to access packet-forwarder features that are not (fully)
// integrated with the ChirpStack Gateway Bridge.
type RawPacketForwarderCommand struct {
// Gateway ID.
GatewayId []byte `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayID,proto3" json:"gateway_id,omitempty"`
// Raw ID (UUID).
RawId []byte `protobuf:"bytes,2,opt,name=raw_id,json=rawID,proto3" json:"raw_id,omitempty"`
// Payload contains the raw payload.
Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *RawPacketForwarderCommand) Reset() { *m = RawPacketForwarderCommand{} }
func (m *RawPacketForwarderCommand) String() string { return proto.CompactTextString(m) }
func (*RawPacketForwarderCommand) ProtoMessage() {}
func (*RawPacketForwarderCommand) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{24}
}
func (m *RawPacketForwarderCommand) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RawPacketForwarderCommand.Unmarshal(m, b)
}
func (m *RawPacketForwarderCommand) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RawPacketForwarderCommand.Marshal(b, m, deterministic)
}
func (m *RawPacketForwarderCommand) XXX_Merge(src proto.Message) {
xxx_messageInfo_RawPacketForwarderCommand.Merge(m, src)
}
func (m *RawPacketForwarderCommand) XXX_Size() int {
return xxx_messageInfo_RawPacketForwarderCommand.Size(m)
}
func (m *RawPacketForwarderCommand) XXX_DiscardUnknown() {
xxx_messageInfo_RawPacketForwarderCommand.DiscardUnknown(m)
}
var xxx_messageInfo_RawPacketForwarderCommand proto.InternalMessageInfo
func (m *RawPacketForwarderCommand) GetGatewayId() []byte {
if m != nil {
return m.GatewayId
}
return nil
}
func (m *RawPacketForwarderCommand) GetRawId() []byte {
if m != nil {
return m.RawId
}
return nil
}
func (m *RawPacketForwarderCommand) GetPayload() []byte {
if m != nil {
return m.Payload
}
return nil
}
type DeviceStats struct {
Packets *PacketsStats `protobuf:"bytes,2,opt,name=packets,proto3" json:"packets,omitempty"`
Frame *PacketStatstics `protobuf:"bytes,1,opt,name=frame,proto3" json:"frame,omitempty"`
RssiLevels []*RSSILevel `protobuf:"bytes,3,rep,name=rssiLevels,proto3" json:"rssiLevels,omitempty"`
SnrLevels []*SNRLevel `protobuf:"bytes,4,rep,name=snrLevels,proto3" json:"snrLevels,omitempty"`
Timeline *TimelineMessage `protobuf:"bytes,5,opt,name=timeline,proto3" json:"timeline,omitempty"`
Timestamp int64 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DeviceStats) Reset() { *m = DeviceStats{} }
func (m *DeviceStats) String() string { return proto.CompactTextString(m) }
func (*DeviceStats) ProtoMessage() {}
func (*DeviceStats) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{25}
}
func (m *DeviceStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeviceStats.Unmarshal(m, b)
}
func (m *DeviceStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DeviceStats.Marshal(b, m, deterministic)
}
func (m *DeviceStats) XXX_Merge(src proto.Message) {
xxx_messageInfo_DeviceStats.Merge(m, src)
}
func (m *DeviceStats) XXX_Size() int {
return xxx_messageInfo_DeviceStats.Size(m)
}
func (m *DeviceStats) XXX_DiscardUnknown() {
xxx_messageInfo_DeviceStats.DiscardUnknown(m)
}
var xxx_messageInfo_DeviceStats proto.InternalMessageInfo
func (m *DeviceStats) GetPackets() *PacketsStats {
if m != nil {
return m.Packets
}
return nil
}
func (m *DeviceStats) GetFrame() *PacketStatstics {
if m != nil {
return m.Frame
}
return nil
}
func (m *DeviceStats) GetRssiLevels() []*RSSILevel {
if m != nil {
return m.RssiLevels
}
return nil
}
func (m *DeviceStats) GetSnrLevels() []*SNRLevel {
if m != nil {
return m.SnrLevels
}
return nil
}
func (m *DeviceStats) GetTimeline() *TimelineMessage {
if m != nil {
return m.Timeline
}
return nil
}
func (m *DeviceStats) GetTimestamp() int64 {
if m != nil {
return m.Timestamp
}
return 0
}
type GatewayStatitics struct {
Timestamp int64 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
Application *ApplicationsInfo `protobuf:"bytes,7,opt,name=application,proto3" json:"application,omitempty"`
EndNodes *EndDevices `protobuf:"bytes,1,opt,name=endNodes,proto3" json:"endNodes,omitempty"`
Packets *PacketsStats `protobuf:"bytes,2,opt,name=packets,proto3" json:"packets,omitempty"`
Frame *PacketStatstics `protobuf:"bytes,8,opt,name=frame,proto3" json:"frame,omitempty"`
RssiLevels []*RSSILevel `protobuf:"bytes,3,rep,name=rssiLevels,proto3" json:"rssiLevels,omitempty"`
SnrLevels []*SNRLevel `protobuf:"bytes,4,rep,name=snrLevels,proto3" json:"snrLevels,omitempty"`
Timeline *TimelineMessage `protobuf:"bytes,5,opt,name=timeline,proto3" json:"timeline,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GatewayStatitics) Reset() { *m = GatewayStatitics{} }
func (m *GatewayStatitics) String() string { return proto.CompactTextString(m) }
func (*GatewayStatitics) ProtoMessage() {}
func (*GatewayStatitics) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{26}
}
func (m *GatewayStatitics) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GatewayStatitics.Unmarshal(m, b)
}
func (m *GatewayStatitics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GatewayStatitics.Marshal(b, m, deterministic)
}
func (m *GatewayStatitics) XXX_Merge(src proto.Message) {
xxx_messageInfo_GatewayStatitics.Merge(m, src)
}
func (m *GatewayStatitics) XXX_Size() int {
return xxx_messageInfo_GatewayStatitics.Size(m)
}
func (m *GatewayStatitics) XXX_DiscardUnknown() {
xxx_messageInfo_GatewayStatitics.DiscardUnknown(m)
}
var xxx_messageInfo_GatewayStatitics proto.InternalMessageInfo
func (m *GatewayStatitics) GetTimestamp() int64 {
if m != nil {
return m.Timestamp
}
return 0
}
func (m *GatewayStatitics) GetApplication() *ApplicationsInfo {
if m != nil {
return m.Application
}
return nil
}
func (m *GatewayStatitics) GetEndNodes() *EndDevices {
if m != nil {
return m.EndNodes
}
return nil
}
func (m *GatewayStatitics) GetPackets() *PacketsStats {
if m != nil {
return m.Packets
}
return nil
}
func (m *GatewayStatitics) GetFrame() *PacketStatstics {
if m != nil {
return m.Frame
}
return nil
}
func (m *GatewayStatitics) GetRssiLevels() []*RSSILevel {
if m != nil {
return m.RssiLevels
}
return nil
}
func (m *GatewayStatitics) GetSnrLevels() []*SNRLevel {
if m != nil {
return m.SnrLevels
}
return nil
}
func (m *GatewayStatitics) GetTimeline() *TimelineMessage {
if m != nil {
return m.Timeline
}
return nil
}
type ApplicationsInfo struct {
Number int32 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ApplicationsInfo) Reset() { *m = ApplicationsInfo{} }
func (m *ApplicationsInfo) String() string { return proto.CompactTextString(m) }
func (*ApplicationsInfo) ProtoMessage() {}
func (*ApplicationsInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{27}
}
func (m *ApplicationsInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ApplicationsInfo.Unmarshal(m, b)
}
func (m *ApplicationsInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ApplicationsInfo.Marshal(b, m, deterministic)
}
func (m *ApplicationsInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_ApplicationsInfo.Merge(m, src)
}
func (m *ApplicationsInfo) XXX_Size() int {
return xxx_messageInfo_ApplicationsInfo.Size(m)
}
func (m *ApplicationsInfo) XXX_DiscardUnknown() {
xxx_messageInfo_ApplicationsInfo.DiscardUnknown(m)
}
var xxx_messageInfo_ApplicationsInfo proto.InternalMessageInfo
func (m *ApplicationsInfo) GetNumber() int32 {
if m != nil {
return m.Number
}
return 0
}
type EndDevices struct {
Normal *NormalNodes `protobuf:"bytes,1,opt,name=normal,proto3" json:"normal,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *EndDevices) Reset() { *m = EndDevices{} }
func (m *EndDevices) String() string { return proto.CompactTextString(m) }
func (*EndDevices) ProtoMessage() {}
func (*EndDevices) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{28}
}
func (m *EndDevices) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_EndDevices.Unmarshal(m, b)
}
func (m *EndDevices) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_EndDevices.Marshal(b, m, deterministic)
}
func (m *EndDevices) XXX_Merge(src proto.Message) {
xxx_messageInfo_EndDevices.Merge(m, src)
}
func (m *EndDevices) XXX_Size() int {
return xxx_messageInfo_EndDevices.Size(m)
}
func (m *EndDevices) XXX_DiscardUnknown() {
xxx_messageInfo_EndDevices.DiscardUnknown(m)
}
var xxx_messageInfo_EndDevices proto.InternalMessageInfo
func (m *EndDevices) GetNormal() *NormalNodes {
if m != nil {
return m.Normal
}
return nil
}
type NormalNodes struct {
Total int32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"`
Online int32 `protobuf:"varint,2,opt,name=online,proto3" json:"online,omitempty"`
Offline int32 `protobuf:"varint,3,opt,name=offline,proto3" json:"offline,omitempty"`
Active []*NodeLevels `protobuf:"bytes,4,rep,name=active,proto3" json:"active,omitempty"`
Busy []*NodeLevels `protobuf:"bytes,5,rep,name=busy,proto3" json:"busy,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *NormalNodes) Reset() { *m = NormalNodes{} }
func (m *NormalNodes) String() string { return proto.CompactTextString(m) }
func (*NormalNodes) ProtoMessage() {}
func (*NormalNodes) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{29}
}
func (m *NormalNodes) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NormalNodes.Unmarshal(m, b)
}
func (m *NormalNodes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_NormalNodes.Marshal(b, m, deterministic)
}
func (m *NormalNodes) XXX_Merge(src proto.Message) {
xxx_messageInfo_NormalNodes.Merge(m, src)
}
func (m *NormalNodes) XXX_Size() int {
return xxx_messageInfo_NormalNodes.Size(m)
}
func (m *NormalNodes) XXX_DiscardUnknown() {
xxx_messageInfo_NormalNodes.DiscardUnknown(m)
}
var xxx_messageInfo_NormalNodes proto.InternalMessageInfo
func (m *NormalNodes) GetTotal() int32 {
if m != nil {
return m.Total
}
return 0
}
func (m *NormalNodes) GetOnline() int32 {
if m != nil {
return m.Online
}
return 0
}
func (m *NormalNodes) GetOffline() int32 {
if m != nil {
return m.Offline
}
return 0
}
func (m *NormalNodes) GetActive() []*NodeLevels {
if m != nil {
return m.Active
}
return nil
}
func (m *NormalNodes) GetBusy() []*NodeLevels {
if m != nil {
return m.Busy
}
return nil
}
type NodeLevels struct {
Count int32 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
DevEuis []string `protobuf:"bytes,2,rep,name=dev_euis,json=devEuis,proto3" json:"dev_euis,omitempty"`
Range string `protobuf:"bytes,3,opt,name=range,proto3" json:"range,omitempty"`
LanguageId string `protobuf:"bytes,4,opt,name=language_id,proto3" json:"language_id,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *NodeLevels) Reset() { *m = NodeLevels{} }
func (m *NodeLevels) String() string { return proto.CompactTextString(m) }
func (*NodeLevels) ProtoMessage() {}
func (*NodeLevels) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{30}
}
func (m *NodeLevels) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NodeLevels.Unmarshal(m, b)
}
func (m *NodeLevels) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_NodeLevels.Marshal(b, m, deterministic)
}
func (m *NodeLevels) XXX_Merge(src proto.Message) {
xxx_messageInfo_NodeLevels.Merge(m, src)
}
func (m *NodeLevels) XXX_Size() int {
return xxx_messageInfo_NodeLevels.Size(m)
}
func (m *NodeLevels) XXX_DiscardUnknown() {
xxx_messageInfo_NodeLevels.DiscardUnknown(m)
}
var xxx_messageInfo_NodeLevels proto.InternalMessageInfo
func (m *NodeLevels) GetCount() int32 {
if m != nil {
return m.Count
}
return 0
}
func (m *NodeLevels) GetDevEuis() []string {
if m != nil {
return m.DevEuis
}
return nil
}
func (m *NodeLevels) GetRange() string {
if m != nil {
return m.Range
}
return ""
}
func (m *NodeLevels) GetLanguageId() string {
if m != nil {
return m.LanguageId
}
return ""
}
type UnknownNodes struct {
Total int32 `protobuf:"varint,1,opt,name=total,proto3" json:"total,omitempty"`
Active int32 `protobuf:"varint,2,opt,name=active,proto3" json:"active,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UnknownNodes) Reset() { *m = UnknownNodes{} }
func (m *UnknownNodes) String() string { return proto.CompactTextString(m) }
func (*UnknownNodes) ProtoMessage() {}
func (*UnknownNodes) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{31}
}
func (m *UnknownNodes) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UnknownNodes.Unmarshal(m, b)
}
func (m *UnknownNodes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UnknownNodes.Marshal(b, m, deterministic)
}
func (m *UnknownNodes) XXX_Merge(src proto.Message) {
xxx_messageInfo_UnknownNodes.Merge(m, src)
}
func (m *UnknownNodes) XXX_Size() int {
return xxx_messageInfo_UnknownNodes.Size(m)
}
func (m *UnknownNodes) XXX_DiscardUnknown() {
xxx_messageInfo_UnknownNodes.DiscardUnknown(m)
}
var xxx_messageInfo_UnknownNodes proto.InternalMessageInfo
func (m *UnknownNodes) GetTotal() int32 {
if m != nil {
return m.Total
}
return 0
}
func (m *UnknownNodes) GetActive() int32 {
if m != nil {
return m.Active
}
return 0
}
type PacketsStats struct {
Received int32 `protobuf:"varint,1,opt,name=received,proto3" json:"received,omitempty"`
Transmitted int32 `protobuf:"varint,2,opt,name=transmitted,proto3" json:"transmitted,omitempty"`
ReceivedOk int32 `protobuf:"varint,3,opt,name=receivedOk,proto3" json:"receivedOk,omitempty"`
TransmittedOk int32 `protobuf:"varint,4,opt,name=transmittedOk,proto3" json:"transmittedOk,omitempty"`
Unknown int32 `protobuf:"varint,5,opt,name=unknown,proto3" json:"unknown,omitempty"`
Filter int32 `protobuf:"varint,6,opt,name=filter,proto3" json:"filter,omitempty"`
Collide int32 `protobuf:"varint,7,opt,name=collide,proto3" json:"collide,omitempty"`
Disabled int32 `protobuf:"varint,8,opt,name=disabled,proto3" json:"disabled,omitempty"`
Errored int32 `protobuf:"varint,9,opt,name=errored,proto3" json:"errored,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *PacketsStats) Reset() { *m = PacketsStats{} }
func (m *PacketsStats) String() string { return proto.CompactTextString(m) }
func (*PacketsStats) ProtoMessage() {}
func (*PacketsStats) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{32}
}
func (m *PacketsStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PacketsStats.Unmarshal(m, b)
}
func (m *PacketsStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_PacketsStats.Marshal(b, m, deterministic)
}
func (m *PacketsStats) XXX_Merge(src proto.Message) {
xxx_messageInfo_PacketsStats.Merge(m, src)
}
func (m *PacketsStats) XXX_Size() int {
return xxx_messageInfo_PacketsStats.Size(m)
}
func (m *PacketsStats) XXX_DiscardUnknown() {
xxx_messageInfo_PacketsStats.DiscardUnknown(m)
}
var xxx_messageInfo_PacketsStats proto.InternalMessageInfo
func (m *PacketsStats) GetReceived() int32 {
if m != nil {
return m.Received
}
return 0
}
func (m *PacketsStats) GetTransmitted() int32 {
if m != nil {
return m.Transmitted
}
return 0
}
func (m *PacketsStats) GetReceivedOk() int32 {
if m != nil {
return m.ReceivedOk
}
return 0
}
func (m *PacketsStats) GetTransmittedOk() int32 {
if m != nil {
return m.TransmittedOk
}
return 0
}
func (m *PacketsStats) GetUnknown() int32 {
if m != nil {
return m.Unknown
}
return 0
}
func (m *PacketsStats) GetFilter() int32 {
if m != nil {
return m.Filter
}
return 0
}
func (m *PacketsStats) GetCollide() int32 {
if m != nil {
return m.Collide
}
return 0
}
func (m *PacketsStats) GetDisabled() int32 {
if m != nil {
return m.Disabled
}
return 0
}
func (m *PacketsStats) GetErrored() int32 {
if m != nil {
return m.Errored
}
return 0
}
type PacketStatstics struct {
Vaild int32 `protobuf:"varint,1,opt,name=vaild,proto3" json:"vaild,omitempty"`
VaildVerified int32 `protobuf:"varint,2,opt,name=vaild_verified,json=vaildVerified,proto3" json:"vaild_verified,omitempty"`
VaildUnverified int32 `protobuf:"varint,3,opt,name=vaild_unverified,json=vaildUnverified,proto3" json:"vaild_unverified,omitempty"`
Transmitted int32 `protobuf:"varint,4,opt,name=transmitted,proto3" json:"transmitted,omitempty"`
TransmittedOk int32 `protobuf:"varint,5,opt,name=transmittedOk,proto3" json:"transmittedOk,omitempty"`
TransmittedFail int32 `protobuf:"varint,6,opt,name=transmittedFail,proto3" json:"transmittedFail,omitempty"`
Invaild int32 `protobuf:"varint,7,opt,name=invaild,proto3" json:"invaild,omitempty"`
Filter int32 `protobuf:"varint,8,opt,name=filter,proto3" json:"filter,omitempty"`
Disable int32 `protobuf:"varint,9,opt,name=disable,proto3" json:"disable,omitempty"`
Unknow int32 `protobuf:"varint,10,opt,name=unknow,proto3" json:"unknow,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *PacketStatstics) Reset() { *m = PacketStatstics{} }
func (m *PacketStatstics) String() string { return proto.CompactTextString(m) }
func (*PacketStatstics) ProtoMessage() {}
func (*PacketStatstics) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{33}
}
func (m *PacketStatstics) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PacketStatstics.Unmarshal(m, b)
}
func (m *PacketStatstics) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_PacketStatstics.Marshal(b, m, deterministic)
}
func (m *PacketStatstics) XXX_Merge(src proto.Message) {
xxx_messageInfo_PacketStatstics.Merge(m, src)
}
func (m *PacketStatstics) XXX_Size() int {
return xxx_messageInfo_PacketStatstics.Size(m)
}
func (m *PacketStatstics) XXX_DiscardUnknown() {
xxx_messageInfo_PacketStatstics.DiscardUnknown(m)
}
var xxx_messageInfo_PacketStatstics proto.InternalMessageInfo
func (m *PacketStatstics) GetVaild() int32 {
if m != nil {
return m.Vaild
}
return 0
}
func (m *PacketStatstics) GetVaildVerified() int32 {
if m != nil {
return m.VaildVerified
}
return 0
}
func (m *PacketStatstics) GetVaildUnverified() int32 {
if m != nil {
return m.VaildUnverified
}
return 0
}
func (m *PacketStatstics) GetTransmitted() int32 {
if m != nil {
return m.Transmitted
}
return 0
}
func (m *PacketStatstics) GetTransmittedOk() int32 {
if m != nil {
return m.TransmittedOk
}
return 0
}
func (m *PacketStatstics) GetTransmittedFail() int32 {
if m != nil {
return m.TransmittedFail
}
return 0
}
func (m *PacketStatstics) GetInvaild() int32 {
if m != nil {
return m.Invaild
}
return 0
}
func (m *PacketStatstics) GetFilter() int32 {
if m != nil {
return m.Filter
}
return 0
}
func (m *PacketStatstics) GetDisable() int32 {
if m != nil {
return m.Disable
}
return 0
}
func (m *PacketStatstics) GetUnknow() int32 {
if m != nil {
return m.Unknow
}
return 0
}
type RSSILevel struct {
Count int32 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
Range string `protobuf:"bytes,2,opt,name=range,proto3" json:"range,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *RSSILevel) Reset() { *m = RSSILevel{} }
func (m *RSSILevel) String() string { return proto.CompactTextString(m) }
func (*RSSILevel) ProtoMessage() {}
func (*RSSILevel) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{34}
}
func (m *RSSILevel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RSSILevel.Unmarshal(m, b)
}
func (m *RSSILevel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RSSILevel.Marshal(b, m, deterministic)
}
func (m *RSSILevel) XXX_Merge(src proto.Message) {
xxx_messageInfo_RSSILevel.Merge(m, src)
}
func (m *RSSILevel) XXX_Size() int {
return xxx_messageInfo_RSSILevel.Size(m)
}
func (m *RSSILevel) XXX_DiscardUnknown() {
xxx_messageInfo_RSSILevel.DiscardUnknown(m)
}
var xxx_messageInfo_RSSILevel proto.InternalMessageInfo
func (m *RSSILevel) GetCount() int32 {
if m != nil {
return m.Count
}
return 0
}
func (m *RSSILevel) GetRange() string {
if m != nil {
return m.Range
}
return ""
}
type SNRLevel struct {
Count int32 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
Range string `protobuf:"bytes,2,opt,name=range,proto3" json:"range,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SNRLevel) Reset() { *m = SNRLevel{} }
func (m *SNRLevel) String() string { return proto.CompactTextString(m) }
func (*SNRLevel) ProtoMessage() {}
func (*SNRLevel) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{35}
}
func (m *SNRLevel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SNRLevel.Unmarshal(m, b)
}
func (m *SNRLevel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SNRLevel.Marshal(b, m, deterministic)
}
func (m *SNRLevel) XXX_Merge(src proto.Message) {
xxx_messageInfo_SNRLevel.Merge(m, src)
}
func (m *SNRLevel) XXX_Size() int {
return xxx_messageInfo_SNRLevel.Size(m)
}
func (m *SNRLevel) XXX_DiscardUnknown() {
xxx_messageInfo_SNRLevel.DiscardUnknown(m)
}
var xxx_messageInfo_SNRLevel proto.InternalMessageInfo
func (m *SNRLevel) GetCount() int32 {
if m != nil {
return m.Count
}
return 0
}
func (m *SNRLevel) GetRange() string {
if m != nil {
return m.Range
}
return ""
}
type TimelineMessage struct {
ChanUsage []*ChannelUsage `protobuf:"bytes,1,rep,name=chanUsage,proto3" json:"chanUsage,omitempty"`
Downlink *DownlinkSolution `protobuf:"bytes,2,opt,name=downlink,proto3" json:"downlink,omitempty"`
Uplink *UplinkSolution `protobuf:"bytes,3,opt,name=uplink,proto3" json:"uplink,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *TimelineMessage) Reset() { *m = TimelineMessage{} }
func (m *TimelineMessage) String() string { return proto.CompactTextString(m) }
func (*TimelineMessage) ProtoMessage() {}
func (*TimelineMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{36}
}
func (m *TimelineMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TimelineMessage.Unmarshal(m, b)
}
func (m *TimelineMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TimelineMessage.Marshal(b, m, deterministic)
}
func (m *TimelineMessage) XXX_Merge(src proto.Message) {
xxx_messageInfo_TimelineMessage.Merge(m, src)
}
func (m *TimelineMessage) XXX_Size() int {
return xxx_messageInfo_TimelineMessage.Size(m)
}
func (m *TimelineMessage) XXX_DiscardUnknown() {
xxx_messageInfo_TimelineMessage.DiscardUnknown(m)
}
var xxx_messageInfo_TimelineMessage proto.InternalMessageInfo
func (m *TimelineMessage) GetChanUsage() []*ChannelUsage {
if m != nil {
return m.ChanUsage
}
return nil
}
func (m *TimelineMessage) GetDownlink() *DownlinkSolution {
if m != nil {
return m.Downlink
}
return nil
}
func (m *TimelineMessage) GetUplink() *UplinkSolution {
if m != nil {
return m.Uplink
}
return nil
}
type ChannelUsage struct {
Data []int32 `protobuf:"varint,1,rep,packed,name=data,proto3" json:"data,omitempty"`
Endtime int64 `protobuf:"varint,2,opt,name=endtime,proto3" json:"endtime,omitempty"`
Freq uint32 `protobuf:"varint,3,opt,name=freq,proto3" json:"freq,omitempty"`
Step int32 `protobuf:"varint,4,opt,name=step,proto3" json:"step,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ChannelUsage) Reset() { *m = ChannelUsage{} }
func (m *ChannelUsage) String() string { return proto.CompactTextString(m) }
func (*ChannelUsage) ProtoMessage() {}
func (*ChannelUsage) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{37}
}
func (m *ChannelUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelUsage.Unmarshal(m, b)
}
func (m *ChannelUsage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ChannelUsage.Marshal(b, m, deterministic)
}
func (m *ChannelUsage) XXX_Merge(src proto.Message) {
xxx_messageInfo_ChannelUsage.Merge(m, src)
}
func (m *ChannelUsage) XXX_Size() int {
return xxx_messageInfo_ChannelUsage.Size(m)
}
func (m *ChannelUsage) XXX_DiscardUnknown() {
xxx_messageInfo_ChannelUsage.DiscardUnknown(m)
}
var xxx_messageInfo_ChannelUsage proto.InternalMessageInfo
func (m *ChannelUsage) GetData() []int32 {
if m != nil {
return m.Data
}
return nil
}
func (m *ChannelUsage) GetEndtime() int64 {
if m != nil {
return m.Endtime
}
return 0
}
func (m *ChannelUsage) GetFreq() uint32 {
if m != nil {
return m.Freq
}
return 0
}
func (m *ChannelUsage) GetStep() int32 {
if m != nil {
return m.Step
}
return 0
}
type DownlinkSolution struct {
Airtime []*AirtimeStats `protobuf:"bytes,1,rep,name=airtime,proto3" json:"airtime,omitempty"`
Packet []*PacketStats `protobuf:"bytes,2,rep,name=packet,proto3" json:"packet,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *DownlinkSolution) Reset() { *m = DownlinkSolution{} }
func (m *DownlinkSolution) String() string { return proto.CompactTextString(m) }
func (*DownlinkSolution) ProtoMessage() {}
func (*DownlinkSolution) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{38}
}
func (m *DownlinkSolution) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DownlinkSolution.Unmarshal(m, b)
}
func (m *DownlinkSolution) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_DownlinkSolution.Marshal(b, m, deterministic)
}
func (m *DownlinkSolution) XXX_Merge(src proto.Message) {
xxx_messageInfo_DownlinkSolution.Merge(m, src)
}
func (m *DownlinkSolution) XXX_Size() int {
return xxx_messageInfo_DownlinkSolution.Size(m)
}
func (m *DownlinkSolution) XXX_DiscardUnknown() {
xxx_messageInfo_DownlinkSolution.DiscardUnknown(m)
}
var xxx_messageInfo_DownlinkSolution proto.InternalMessageInfo
func (m *DownlinkSolution) GetAirtime() []*AirtimeStats {
if m != nil {
return m.Airtime
}
return nil
}
func (m *DownlinkSolution) GetPacket() []*PacketStats {
if m != nil {
return m.Packet
}
return nil
}
type UplinkSolution struct {
Airtime []*AirtimeStats `protobuf:"bytes,1,rep,name=airtime,proto3" json:"airtime,omitempty"`
Packet []*PacketStats `protobuf:"bytes,2,rep,name=packet,proto3" json:"packet,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UplinkSolution) Reset() { *m = UplinkSolution{} }
func (m *UplinkSolution) String() string { return proto.CompactTextString(m) }
func (*UplinkSolution) ProtoMessage() {}
func (*UplinkSolution) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{39}
}
func (m *UplinkSolution) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UplinkSolution.Unmarshal(m, b)
}
func (m *UplinkSolution) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UplinkSolution.Marshal(b, m, deterministic)
}
func (m *UplinkSolution) XXX_Merge(src proto.Message) {
xxx_messageInfo_UplinkSolution.Merge(m, src)
}
func (m *UplinkSolution) XXX_Size() int {
return xxx_messageInfo_UplinkSolution.Size(m)
}
func (m *UplinkSolution) XXX_DiscardUnknown() {
xxx_messageInfo_UplinkSolution.DiscardUnknown(m)
}
var xxx_messageInfo_UplinkSolution proto.InternalMessageInfo
func (m *UplinkSolution) GetAirtime() []*AirtimeStats {
if m != nil {
return m.Airtime
}
return nil
}
func (m *UplinkSolution) GetPacket() []*PacketStats {
if m != nil {
return m.Packet
}
return nil
}
type AirtimeStats struct {
Data []int32 `protobuf:"varint,1,rep,packed,name=data,proto3" json:"data,omitempty"`
Endtime int64 `protobuf:"varint,2,opt,name=endtime,proto3" json:"endtime,omitempty"`
Daterate int32 `protobuf:"varint,3,opt,name=daterate,proto3" json:"daterate,omitempty"`
Step int32 `protobuf:"varint,4,opt,name=step,proto3" json:"step,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *AirtimeStats) Reset() { *m = AirtimeStats{} }
func (m *AirtimeStats) String() string { return proto.CompactTextString(m) }
func (*AirtimeStats) ProtoMessage() {}
func (*AirtimeStats) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{40}
}
func (m *AirtimeStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AirtimeStats.Unmarshal(m, b)
}
func (m *AirtimeStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_AirtimeStats.Marshal(b, m, deterministic)
}
func (m *AirtimeStats) XXX_Merge(src proto.Message) {
xxx_messageInfo_AirtimeStats.Merge(m, src)
}
func (m *AirtimeStats) XXX_Size() int {
return xxx_messageInfo_AirtimeStats.Size(m)
}
func (m *AirtimeStats) XXX_DiscardUnknown() {
xxx_messageInfo_AirtimeStats.DiscardUnknown(m)
}
var xxx_messageInfo_AirtimeStats proto.InternalMessageInfo
func (m *AirtimeStats) GetData() []int32 {
if m != nil {
return m.Data
}
return nil
}
func (m *AirtimeStats) GetEndtime() int64 {
if m != nil {
return m.Endtime
}
return 0
}
func (m *AirtimeStats) GetDaterate() int32 {
if m != nil {
return m.Daterate
}
return 0
}
func (m *AirtimeStats) GetStep() int32 {
if m != nil {
return m.Step
}
return 0
}
type PacketStats struct {
Data []int32 `protobuf:"varint,1,rep,packed,name=data,proto3" json:"data,omitempty"`
Endtime int64 `protobuf:"varint,2,opt,name=endtime,proto3" json:"endtime,omitempty"`
Daterate int32 `protobuf:"varint,3,opt,name=daterate,proto3" json:"daterate,omitempty"`
Step int32 `protobuf:"varint,4,opt,name=step,proto3" json:"step,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *PacketStats) Reset() { *m = PacketStats{} }
func (m *PacketStats) String() string { return proto.CompactTextString(m) }
func (*PacketStats) ProtoMessage() {}
func (*PacketStats) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{41}
}
func (m *PacketStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PacketStats.Unmarshal(m, b)
}
func (m *PacketStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_PacketStats.Marshal(b, m, deterministic)
}
func (m *PacketStats) XXX_Merge(src proto.Message) {
xxx_messageInfo_PacketStats.Merge(m, src)
}
func (m *PacketStats) XXX_Size() int {
return xxx_messageInfo_PacketStats.Size(m)
}
func (m *PacketStats) XXX_DiscardUnknown() {
xxx_messageInfo_PacketStats.DiscardUnknown(m)
}
var xxx_messageInfo_PacketStats proto.InternalMessageInfo
func (m *PacketStats) GetData() []int32 {
if m != nil {
return m.Data
}
return nil
}
func (m *PacketStats) GetEndtime() int64 {
if m != nil {
return m.Endtime
}
return 0
}
func (m *PacketStats) GetDaterate() int32 {
if m != nil {
return m.Daterate
}
return 0
}
func (m *PacketStats) GetStep() int32 {
if m != nil {
return m.Step
}
return 0
}
type GatewayLogger struct {
Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
Module string `protobuf:"bytes,2,opt,name=module,proto3" json:"module,omitempty"`
Label []string `protobuf:"bytes,3,rep,name=label,proto3" json:"label,omitempty"`
Level int32 `protobuf:"varint,4,opt,name=level,proto3" json:"level,omitempty"`
Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GatewayLogger) Reset() { *m = GatewayLogger{} }
func (m *GatewayLogger) String() string { return proto.CompactTextString(m) }
func (*GatewayLogger) ProtoMessage() {}
func (*GatewayLogger) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{42}
}
func (m *GatewayLogger) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GatewayLogger.Unmarshal(m, b)
}
func (m *GatewayLogger) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GatewayLogger.Marshal(b, m, deterministic)
}
func (m *GatewayLogger) XXX_Merge(src proto.Message) {
xxx_messageInfo_GatewayLogger.Merge(m, src)
}
func (m *GatewayLogger) XXX_Size() int {
return xxx_messageInfo_GatewayLogger.Size(m)
}
func (m *GatewayLogger) XXX_DiscardUnknown() {
xxx_messageInfo_GatewayLogger.DiscardUnknown(m)
}
var xxx_messageInfo_GatewayLogger proto.InternalMessageInfo
func (m *GatewayLogger) GetTimestamp() int64 {
if m != nil {
return m.Timestamp
}
return 0
}
func (m *GatewayLogger) GetModule() string {
if m != nil {
return m.Module
}
return ""
}
func (m *GatewayLogger) GetLabel() []string {
if m != nil {
return m.Label
}
return nil
}
func (m *GatewayLogger) GetLevel() int32 {
if m != nil {
return m.Level
}
return 0
}
func (m *GatewayLogger) GetMessage() string {
if m != nil {
return m.Message
}
return ""
}
type StatsPacketTransmit struct {
Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
IsUplink bool `protobuf:"varint,2,opt,name=is_uplink,json=isUplink,proto3" json:"is_uplink,omitempty"`
IsRejected bool `protobuf:"varint,3,opt,name=is_rejected,json=isRejected,proto3" json:"is_rejected,omitempty"`
IsCollided bool `protobuf:"varint,4,opt,name=is_collided,json=isCollided,proto3" json:"is_collided,omitempty"`
IsDiscarded bool `protobuf:"varint,5,opt,name=is_discarded,json=isDiscarded,proto3" json:"is_discarded,omitempty"`
Freq uint32 `protobuf:"varint,6,opt,name=freq,proto3" json:"freq,omitempty"`
Dr int32 `protobuf:"varint,7,opt,name=dr,json=DR,proto3" json:"dr,omitempty"`
GIndex uint32 `protobuf:"varint,8,opt,name=g_index,json=gIndex,proto3" json:"g_index,omitempty"`
Device *StatsPacketDevice `protobuf:"bytes,9,opt,name=device,proto3" json:"device,omitempty"`
Gateway []*StatsPacketGateway `protobuf:"bytes,10,rep,name=gateway,proto3" json:"gateway,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *StatsPacketTransmit) Reset() { *m = StatsPacketTransmit{} }
func (m *StatsPacketTransmit) String() string { return proto.CompactTextString(m) }
func (*StatsPacketTransmit) ProtoMessage() {}
func (*StatsPacketTransmit) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{43}
}
func (m *StatsPacketTransmit) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StatsPacketTransmit.Unmarshal(m, b)
}
func (m *StatsPacketTransmit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_StatsPacketTransmit.Marshal(b, m, deterministic)
}
func (m *StatsPacketTransmit) XXX_Merge(src proto.Message) {
xxx_messageInfo_StatsPacketTransmit.Merge(m, src)
}
func (m *StatsPacketTransmit) XXX_Size() int {
return xxx_messageInfo_StatsPacketTransmit.Size(m)
}
func (m *StatsPacketTransmit) XXX_DiscardUnknown() {
xxx_messageInfo_StatsPacketTransmit.DiscardUnknown(m)
}
var xxx_messageInfo_StatsPacketTransmit proto.InternalMessageInfo
func (m *StatsPacketTransmit) GetTimestamp() int64 {
if m != nil {
return m.Timestamp
}
return 0
}
func (m *StatsPacketTransmit) GetIsUplink() bool {
if m != nil {
return m.IsUplink
}
return false
}
func (m *StatsPacketTransmit) GetIsRejected() bool {
if m != nil {
return m.IsRejected
}
return false
}
func (m *StatsPacketTransmit) GetIsCollided() bool {
if m != nil {
return m.IsCollided
}
return false
}
func (m *StatsPacketTransmit) GetIsDiscarded() bool {
if m != nil {
return m.IsDiscarded
}
return false
}
func (m *StatsPacketTransmit) GetFreq() uint32 {
if m != nil {
return m.Freq
}
return 0
}
func (m *StatsPacketTransmit) GetDr() int32 {
if m != nil {
return m.Dr
}
return 0
}
func (m *StatsPacketTransmit) GetGIndex() uint32 {
if m != nil {
return m.GIndex
}
return 0
}
func (m *StatsPacketTransmit) GetDevice() *StatsPacketDevice {
if m != nil {
return m.Device
}
return nil
}
func (m *StatsPacketTransmit) GetGateway() []*StatsPacketGateway {
if m != nil {
return m.Gateway
}
return nil
}
type StatsPacketDevice struct {
DevEui string `protobuf:"bytes,1,opt,name=dev_eui,json=devEUI,proto3" json:"dev_eui,omitempty"`
IsUnknown bool `protobuf:"varint,2,opt,name=is_unknown,json=isUnknown,proto3" json:"is_unknown,omitempty"`
IsDisabled bool `protobuf:"varint,3,opt,name=is_disabled,json=isDisabled,proto3" json:"is_disabled,omitempty"`
IsFilter bool `protobuf:"varint,4,opt,name=is_filter,json=isFilter,proto3" json:"is_filter,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *StatsPacketDevice) Reset() { *m = StatsPacketDevice{} }
func (m *StatsPacketDevice) String() string { return proto.CompactTextString(m) }
func (*StatsPacketDevice) ProtoMessage() {}
func (*StatsPacketDevice) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{44}
}
func (m *StatsPacketDevice) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StatsPacketDevice.Unmarshal(m, b)
}
func (m *StatsPacketDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_StatsPacketDevice.Marshal(b, m, deterministic)
}
func (m *StatsPacketDevice) XXX_Merge(src proto.Message) {
xxx_messageInfo_StatsPacketDevice.Merge(m, src)
}
func (m *StatsPacketDevice) XXX_Size() int {
return xxx_messageInfo_StatsPacketDevice.Size(m)
}
func (m *StatsPacketDevice) XXX_DiscardUnknown() {
xxx_messageInfo_StatsPacketDevice.DiscardUnknown(m)
}
var xxx_messageInfo_StatsPacketDevice proto.InternalMessageInfo
func (m *StatsPacketDevice) GetDevEui() string {
if m != nil {
return m.DevEui
}
return ""
}
func (m *StatsPacketDevice) GetIsUnknown() bool {
if m != nil {
return m.IsUnknown
}
return false
}
func (m *StatsPacketDevice) GetIsDisabled() bool {
if m != nil {
return m.IsDisabled
}
return false
}
func (m *StatsPacketDevice) GetIsFilter() bool {
if m != nil {
return m.IsFilter
}
return false
}
type StatsPacketGateway struct {
GatewayId string `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayID,proto3" json:"gateway_id,omitempty"`
Snr float32 `protobuf:"fixed32,2,opt,name=snr,proto3" json:"snr,omitempty"`
Rssi int32 `protobuf:"varint,3,opt,name=rssi,proto3" json:"rssi,omitempty"`
TimeOnAirMs int64 `protobuf:"varint,4,opt,name=time_on_air_ms,json=timeOnAirMs,proto3" json:"time_on_air_ms,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *StatsPacketGateway) Reset() { *m = StatsPacketGateway{} }
func (m *StatsPacketGateway) String() string { return proto.CompactTextString(m) }
func (*StatsPacketGateway) ProtoMessage() {}
func (*StatsPacketGateway) Descriptor() ([]byte, []int) {
return fileDescriptor_b93a753e2b32e8e7, []int{45}
}
func (m *StatsPacketGateway) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StatsPacketGateway.Unmarshal(m, b)
}
func (m *StatsPacketGateway) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_StatsPacketGateway.Marshal(b, m, deterministic)
}
func (m *StatsPacketGateway) XXX_Merge(src proto.Message) {
xxx_messageInfo_StatsPacketGateway.Merge(m, src)
}
func (m *StatsPacketGateway) XXX_Size() int {
return xxx_messageInfo_StatsPacketGateway.Size(m)
}
func (m *StatsPacketGateway) XXX_DiscardUnknown() {
xxx_messageInfo_StatsPacketGateway.DiscardUnknown(m)
}
var xxx_messageInfo_StatsPacketGateway proto.InternalMessageInfo
func (m *StatsPacketGateway) GetGatewayId() string {
if m != nil {
return m.GatewayId
}
return ""
}
func (m *StatsPacketGateway) GetSnr() float32 {
if m != nil {
return m.Snr
}
return 0
}
func (m *StatsPacketGateway) GetRssi() int32 {
if m != nil {
return m.Rssi
}
return 0
}
func (m *StatsPacketGateway) GetTimeOnAirMs() int64 {
if m != nil {
return m.TimeOnAirMs
}
return 0
}
func init() {
proto.RegisterEnum("gw.DownlinkTiming", DownlinkTiming_name, DownlinkTiming_value)
proto.RegisterEnum("gw.FineTimestampType", FineTimestampType_name, FineTimestampType_value)
proto.RegisterEnum("gw.CRCStatus", CRCStatus_name, CRCStatus_value)
proto.RegisterEnum("gw.TxAckStatus", TxAckStatus_name, TxAckStatus_value)
proto.RegisterType((*UplinkTXInfo)(nil), "gw.UplinkTXInfo")
proto.RegisterType((*LoRaModulationInfo)(nil), "gw.LoRaModulationInfo")
proto.RegisterType((*FSKModulationInfo)(nil), "gw.FSKModulationInfo")
proto.RegisterType((*EncryptedFineTimestamp)(nil), "gw.EncryptedFineTimestamp")
proto.RegisterType((*PlainFineTimestamp)(nil), "gw.PlainFineTimestamp")
proto.RegisterType((*GatewayStats)(nil), "gw.GatewayStats")
proto.RegisterMapType((map[string]string)(nil), "gw.GatewayStats.MetaDataEntry")
proto.RegisterType((*UplinkRXInfo)(nil), "gw.UplinkRXInfo")
proto.RegisterType((*DownlinkTXInfo)(nil), "gw.DownlinkTXInfo")
proto.RegisterType((*ImmediatelyTimingInfo)(nil), "gw.ImmediatelyTimingInfo")
proto.RegisterType((*DelayTimingInfo)(nil), "gw.DelayTimingInfo")
proto.RegisterType((*GPSEpochTimingInfo)(nil), "gw.GPSEpochTimingInfo")
proto.RegisterType((*UplinkFrame)(nil), "gw.UplinkFrame")
proto.RegisterType((*UplinkFrameSet)(nil), "gw.UplinkFrameSet")
proto.RegisterType((*DownlinkFrame)(nil), "gw.DownlinkFrame")
proto.RegisterType((*DownlinkFrameItem)(nil), "gw.DownlinkFrameItem")
proto.RegisterType((*DownlinkTXAck)(nil), "gw.DownlinkTXAck")
proto.RegisterType((*DownlinkTXAckItem)(nil), "gw.DownlinkTXAckItem")
proto.RegisterType((*GatewayConfiguration)(nil), "gw.GatewayConfiguration")
proto.RegisterType((*ChannelConfiguration)(nil), "gw.ChannelConfiguration")
proto.RegisterType((*LoRaModulationConfig)(nil), "gw.LoRaModulationConfig")
proto.RegisterType((*FSKModulationConfig)(nil), "gw.FSKModulationConfig")
proto.RegisterType((*GatewayCommandExecRequest)(nil), "gw.GatewayCommandExecRequest")
proto.RegisterMapType((map[string]string)(nil), "gw.GatewayCommandExecRequest.EnvironmentEntry")
proto.RegisterType((*GatewayCommandExecResponse)(nil), "gw.GatewayCommandExecResponse")
proto.RegisterType((*RawPacketForwarderEvent)(nil), "gw.RawPacketForwarderEvent")
proto.RegisterType((*RawPacketForwarderCommand)(nil), "gw.RawPacketForwarderCommand")
proto.RegisterType((*DeviceStats)(nil), "gw.DeviceStats")
proto.RegisterType((*GatewayStatitics)(nil), "gw.GatewayStatitics")
proto.RegisterType((*ApplicationsInfo)(nil), "gw.ApplicationsInfo")
proto.RegisterType((*EndDevices)(nil), "gw.EndDevices")
proto.RegisterType((*NormalNodes)(nil), "gw.NormalNodes")
proto.RegisterType((*NodeLevels)(nil), "gw.NodeLevels")
proto.RegisterType((*UnknownNodes)(nil), "gw.UnknownNodes")
proto.RegisterType((*PacketsStats)(nil), "gw.PacketsStats")
proto.RegisterType((*PacketStatstics)(nil), "gw.PacketStatstics")
proto.RegisterType((*RSSILevel)(nil), "gw.RSSILevel")
proto.RegisterType((*SNRLevel)(nil), "gw.SNRLevel")
proto.RegisterType((*TimelineMessage)(nil), "gw.TimelineMessage")
proto.RegisterType((*ChannelUsage)(nil), "gw.ChannelUsage")
proto.RegisterType((*DownlinkSolution)(nil), "gw.DownlinkSolution")
proto.RegisterType((*UplinkSolution)(nil), "gw.UplinkSolution")
proto.RegisterType((*AirtimeStats)(nil), "gw.AirtimeStats")
proto.RegisterType((*PacketStats)(nil), "gw.PacketStats")
proto.RegisterType((*GatewayLogger)(nil), "gw.GatewayLogger")
proto.RegisterType((*StatsPacketTransmit)(nil), "gw.StatsPacketTransmit")
proto.RegisterType((*StatsPacketDevice)(nil), "gw.StatsPacketDevice")
proto.RegisterType((*StatsPacketGateway)(nil), "gw.StatsPacketGateway")
}
func init() {
proto.RegisterFile("gw/gw.proto", fileDescriptor_b93a753e2b32e8e7)
}
var fileDescriptor_b93a753e2b32e8e7 = []byte{
// 3173 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5a, 0xcf, 0x73, 0x23, 0x47,
0xf5, 0x5f, 0xc9, 0x96, 0x2c, 0x3d, 0xfd, 0xf0, 0xb8, 0x2d, 0x7b, 0xb5, 0xce, 0x37, 0xc9, 0x66,
0xbe, 0x04, 0x76, 0x9d, 0x44, 0x4e, 0x6d, 0x48, 0x42, 0x91, 0x14, 0x15, 0x59, 0x1a, 0xef, 0x2a,
0x96, 0x25, 0xa7, 0x65, 0x87, 0x5d, 0x2e, 0x93, 0xf6, 0x4c, 0x4b, 0xdb, 0xd1, 0x68, 0x46, 0xcc,
0x8c, 0x2c, 0x9b, 0x03, 0x27, 0x0e, 0x50, 0x54, 0x71, 0xe2, 0x94, 0x0b, 0xc5, 0x0d, 0x8e, 0xdc,
0xb9, 0x73, 0xa2, 0x38, 0x50, 0xc5, 0x99, 0xff, 0x81, 0x03, 0x57, 0xaa, 0x7f, 0xcc, 0x68, 0xf4,
0x23, 0xeb, 0x2c, 0xc9, 0x52, 0x95, 0x93, 0xf5, 0x5e, 0xbf, 0xee, 0xd7, 0xfd, 0x79, 0xaf, 0xdf,
0x8f, 0x1e, 0x43, 0x61, 0x30, 0x3d, 0x18, 0x4c, 0x6b, 0x63, 0xdf, 0x0b, 0x3d, 0x94, 0x1e, 0x4c,
0xf7, 0xb6, 0x2d, 0x6f, 0x34, 0xf2, 0xdc, 0x03, 0xf9, 0x47, 0x0e, 0xec, 0xbd, 0x3a, 0xf0, 0xbc,
0x81, 0x43, 0x0f, 0x04, 0x75, 0x31, 0xe9, 0x1f, 0x84, 0x6c, 0x44, 0x83, 0x90, 0x8c, 0xc6, 0x4a,
0xe0, 0x95, 0x45, 0x01, 0x7b, 0xe2, 0x93, 0x90, 0x45, 0x0b, 0xe8, 0xbf, 0x4c, 0x43, 0xf1, 0x7c,
0xec, 0x30, 0x77, 0x78, 0xf6, 0xb8, 0xe5, 0xf6, 0x3d, 0xf4, 0x7f, 0x90, 0xef, 0xfb, 0xf4, 0xa7,
0x13, 0xea, 0x5a, 0xd7, 0xd5, 0xd4, 0xdd, 0xd4, 0xbd, 0x12, 0x9e, 0x31, 0xd0, 0x03, 0x80, 0x91,
0x67, 0x4f, 0x1c, 0xb1, 0x44, 0x35, 0x7d, 0x37, 0x75, 0xaf, 0xfc, 0x00, 0xd5, 0xd4, 0x96, 0x4e,
0xe2, 0x11, 0x9c, 0x90, 0x42, 0x1f, 0x43, 0xc5, 0xf1, 0x7c, 0x62, 0xce, 0x58, 0x26, 0x73, 0xfb,
0x5e, 0x75, 0xed, 0x6e, 0xea, 0x5e, 0xe1, 0xc1, 0x6e, 0x6d, 0x30, 0xad, 0xb5, 0x3d, 0x4c, 0x66,
0xb3, 0xf9, 0x3e, 0x1e, 0xdd, 0xc2, 0xc8, 0x59, 0xe2, 0xa2, 0x87, 0xb0, 0xdd, 0x0f, 0x86, 0x4b,
0x4b, 0xad, 0x8b, 0xa5, 0x76, 0xf8, 0x52, 0x47, 0xbd, 0xe3, 0xa5, 0x95, 0xb6, 0xfa, 0xc1, 0x70,
0x9e, 0x79, 0xb8, 0x05, 0x9b, 0x0b, 0x8b, 0xe8, 0x7f, 0x4a, 0x01, 0x5a, 0xde, 0x08, 0x07, 0xe4,
0x82, 0xb8, 0xf6, 0x94, 0xd9, 0xe1, 0xd3, 0x08, 0x90, 0x98, 0x81, 0xee, 0x83, 0x16, 0x8c, 0x7d,
0x4a, 0x6c, 0xe6, 0x0e, 0xcc, 0x3e, 0xb1, 0x42, 0xcf, 0x17, 0xb0, 0x94, 0xf0, 0x66, 0xcc, 0x3f,
0x12, 0x6c, 0xf4, 0x12, 0xe4, 0x2d, 0xcf, 0xa6, 0xa6, 0x4f, 0x42, 0x2a, 0x0e, 0x9f, 0xc7, 0x39,
0xce, 0xc0, 0x24, 0xa4, 0xe8, 0x5d, 0xd8, 0x1d, 0x7b, 0x0e, 0xf1, 0xd9, 0xcf, 0xa2, 0x1d, 0x5d,
0x52, 0x3f, 0xe0, 0x20, 0xf3, 0xb3, 0xe5, 0xf0, 0x4e, 0x72, 0xb4, 0x15, 0x0d, 0xea, 0x9f, 0xc1,
0xd6, 0xd2, 0x81, 0xd1, 0x01, 0x6c, 0xc7, 0x16, 0x33, 0x6d, 0x7a, 0xc9, 0xa4, 0xb5, 0xe4, 0xde,
0x51, 0x3c, 0xd4, 0x8c, 0x46, 0xd0, 0x1e, 0xe4, 0x6c, 0x12, 0x12, 0xb1, 0x31, 0xb9, 0xf9, 0x98,
0xd6, 0xaf, 0x60, 0xd7, 0x70, 0x2d, 0xff, 0x7a, 0x1c, 0x52, 0xfb, 0x88, 0xb9, 0xf4, 0x2c, 0x72,
0x30, 0xa4, 0x43, 0x89, 0xd0, 0xc0, 0x1c, 0xd2, 0x6b, 0x93, 0xb9, 0x36, 0xbd, 0x52, 0x0a, 0x0a,
0x84, 0x06, 0xc7, 0xf4, 0xba, 0xc5, 0x59, 0xe8, 0x35, 0x28, 0xd2, 0x68, 0xb6, 0xe9, 0x06, 0x62,
0xf5, 0x22, 0x2e, 0xc4, 0xbc, 0x4e, 0x0f, 0xdd, 0x86, 0x8d, 0xfe, 0x78, 0x40, 0x4c, 0x66, 0x0b,
0x50, 0x8a, 0x38, 0xcb, 0xc9, 0x56, 0x53, 0x6f, 0x02, 0x3a, 0x75, 0x08, 0x73, 0xe7, 0xb5, 0xd6,
0x60, 0x9d, 0xfb, 0xb8, 0x50, 0x56, 0x78, 0xb0, 0x57, 0x93, 0xfe, 0x5d, 0x8b, 0xfc, 0xbb, 0x16,
0x4b, 0x62, 0x21, 0xa7, 0x7f, 0xb1, 0x0e, 0xc5, 0x87, 0x24, 0xa4, 0x53, 0x72, 0xdd, 0x0b, 0x49,
0x18, 0xa0, 0x97, 0x01, 0x06, 0x92, 0xe6, 0x2a, 0x53, 0x42, 0x65, 0x5e, 0x71, 0x5a, 0x4d, 0x54,
0x86, 0x34, 0x1b, 0x57, 0xf3, 0xc2, 0x3c, 0x69, 0x36, 0xd3, 0x97, 0xfe, 0x6a, 0xfa, 0xd0, 0x9b,
0x90, 0x73, 0x3c, 0x4b, 0x22, 0x2e, 0x3d, 0x5c, 0x8b, 0xee, 0x47, 0x5b, 0xf1, 0x71, 0x2c, 0x81,
0x5e, 0x87, 0xb2, 0xe5, 0xb9, 0x7d, 0x36, 0x30, 0x93, 0xe6, 0xce, 0xe3, 0x92, 0xe4, 0x7e, 0x2a,
0x99, 0xa8, 0x06, 0xdb, 0xfe, 0x95, 0x39, 0x26, 0xd6, 0x90, 0x86, 0x81, 0xe9, 0x53, 0x8b, 0xb2,
0x4b, 0x6a, 0x57, 0x33, 0x02, 0xf0, 0x2d, 0xff, 0xea, 0x54, 0x8e, 0x60, 0x35, 0x80, 0xde, 0x81,
0xdd, 0x15, 0xf2, 0xa6, 0x37, 0xac, 0x66, 0xc5, 0x94, 0xed, 0xa5, 0x29, 0xdd, 0x63, 0xae, 0x24,
0x5c, 0xa1, 0x64, 0x43, 0x2a, 0x09, 0x97, 0x94, 0xbc, 0x09, 0x28, 0x21, 0x4f, 0x47, 0x2c, 0x0c,
0xa9, 0x5d, 0xcd, 0x09, 0x71, 0x2d, 0x16, 0x37, 0x24, 0x1f, 0x7d, 0x00, 0xf9, 0x11, 0x0d, 0x89,
0xc9, 0x1d, 0xab, 0x0a, 0x77, 0xd7, 0xee, 0x15, 0x1e, 0xbc, 0xc2, 0xef, 0x6b, 0xd2, 0x36, 0xb5,
0x13, 0x1a, 0x92, 0x26, 0x09, 0x89, 0xe1, 0x86, 0xfe, 0x35, 0xce, 0x8d, 0x14, 0x89, 0xee, 0x40,
0x2e, 0xe0, 0x02, 0xdc, 0x62, 0x05, 0x61, 0xb1, 0x0d, 0x41, 0xb7, 0x9a, 0x7b, 0x1f, 0x40, 0x69,
0x6e, 0x16, 0xd2, 0x60, 0x6d, 0x48, 0x65, 0xe8, 0xca, 0x63, 0xfe, 0x13, 0x55, 0x20, 0x73, 0x49,
0x9c, 0x89, 0xb4, 0x61, 0x1e, 0x4b, 0xe2, 0x87, 0xe9, 0x1f, 0xa4, 0xf4, 0xbf, 0x66, 0xa2, 0xe8,
0x87, 0x65, 0xf4, 0xbb, 0xc1, 0x39, 0x9e, 0xd7, 0x19, 0x3e, 0x86, 0x0a, 0xff, 0x6b, 0x06, 0xcc,
0xb5, 0xa8, 0x39, 0x18, 0x07, 0x26, 0x1d, 0x7b, 0xd6, 0x53, 0xe5, 0x18, 0x77, 0x96, 0xe6, 0x37,
0x55, 0x70, 0xc6, 0x5b, 0x7c, 0x5a, 0x8f, 0xcf, 0x7a, 0x78, 0xda, 0x33, 0xf8, 0x1c, 0x84, 0x60,
0xdd, 0x0f, 0x02, 0x26, 0x8c, 0x9e, 0xc1, 0xe2, 0x37, 0xc7, 0x45, 0x84, 0xd6, 0xc0, 0xf5, 0x85,
0x65, 0x53, 0x78, 0x83, 0x07, 0xcd, 0x5e, 0x07, 0xa3, 0x2a, 0x6c, 0x58, 0x4f, 0x89, 0xeb, 0x52,
0x47, 0x59, 0x30, 0x22, 0xf9, 0x24, 0xbf, 0x6f, 0x5a, 0x4f, 0x09, 0x73, 0x95, 0xb5, 0x36, 0xfc,
0x7e, 0x83, 0x93, 0x1c, 0xa9, 0x0b, 0x8f, 0xf8, 0xb6, 0xf0, 0xff, 0x12, 0x96, 0x04, 0x5f, 0x8a,
0xb8, 0x21, 0x75, 0x5d, 0x6e, 0x38, 0x21, 0xaf, 0xc8, 0x39, 0x67, 0x2f, 0xdc, 0xe8, 0xec, 0x06,
0x6c, 0xf7, 0x99, 0x4b, 0xcd, 0x38, 0x47, 0x99, 0xe1, 0xf5, 0x98, 0x56, 0x8b, 0x22, 0x8b, 0xc8,
0xe0, 0x9d, 0xbc, 0xea, 0x67, 0xd7, 0x63, 0x8a, 0xb7, 0xfa, 0x8b, 0x2c, 0xf4, 0x29, 0x54, 0x67,
0x31, 0x65, 0x7e, 0xc1, 0x6a, 0x29, 0x32, 0xcc, 0xb4, 0xb6, 0x3a, 0x6a, 0x3d, 0xba, 0x85, 0x77,
0xe9, 0xea, 0x78, 0xf6, 0x31, 0x54, 0xc6, 0x3c, 0xde, 0x2c, 0xae, 0x59, 0x9e, 0xe5, 0xa9, 0xe5,
0x78, 0xc4, 0xf3, 0xd4, 0x78, 0x39, 0x4a, 0x71, 0xf4, 0x3d, 0x37, 0xa4, 0x57, 0x61, 0x75, 0x53,
0xfa, 0xab, 0x22, 0x79, 0x16, 0x98, 0x08, 0x8f, 0xe3, 0x0e, 0xa6, 0x89, 0xb1, 0x9c, 0x64, 0xb4,
0x9a, 0xe8, 0x4d, 0x00, 0xcb, 0xb7, 0x4c, 0xee, 0xdb, 0x93, 0xa0, 0xba, 0x25, 0x80, 0x29, 0x71,
0xc5, 0x0d, 0xdc, 0xe8, 0x09, 0x26, 0xce, 0x5b, 0xbe, 0x25, 0x7f, 0x1e, 0x6a, 0x50, 0x9e, 0xdf,
0xaa, 0xfe, 0xc7, 0x0c, 0x94, 0x9b, 0xde, 0xd4, 0x4d, 0xe4, 0xf3, 0x1b, 0x3c, 0x7a, 0x2e, 0xdd,
0x67, 0x16, 0xd3, 0x7d, 0x05, 0x32, 0x63, 0x6f, 0x4a, 0xa5, 0x73, 0x65, 0xb0, 0x24, 0x16, 0x8a,
0x80, 0x8d, 0xaf, 0x55, 0x04, 0xe4, 0xbe, 0xb9, 0x22, 0x20, 0xff, 0xbc, 0x45, 0xc0, 0xcc, 0xdd,
0xe1, 0x4b, 0xdc, 0xbd, 0x30, 0xef, 0xee, 0xfb, 0x90, 0x0d, 0xd9, 0x88, 0xb9, 0x03, 0xe5, 0xb3,
0x88, 0xeb, 0x8a, 0xf1, 0x16, 0x23, 0x58, 0x49, 0xa0, 0x1e, 0xdc, 0x66, 0xa3, 0x11, 0xb5, 0x19,
0x09, 0xa9, 0x73, 0x6d, 0x4a, 0xae, 0xdc, 0x68, 0x29, 0xba, 0xfd, 0xd3, 0x5a, 0x6b, 0x26, 0x22,
0xe7, 0x8b, 0xcd, 0xa6, 0xf0, 0x0e, 0x5b, 0x35, 0x80, 0xea, 0xb0, 0x65, 0x53, 0x87, 0xcc, 0x2f,
0x27, 0xfd, 0x73, 0x5b, 0xec, 0x85, 0x0f, 0xce, 0x2d, 0xb4, 0x69, 0xcf, 0xb3, 0xd0, 0x31, 0xec,
0xc4, 0x71, 0x68, 0x6e, 0x99, 0xcd, 0x99, 0x25, 0xa2, 0x98, 0x33, 0xb7, 0x12, 0x1a, 0x8c, 0x83,
0x05, 0x6e, 0xd2, 0xcd, 0xb5, 0x39, 0x37, 0x5f, 0x51, 0x5f, 0x1d, 0x96, 0xa0, 0x90, 0xd0, 0xa7,
0xdf, 0x86, 0x9d, 0x95, 0xa7, 0xd7, 0x0f, 0x61, 0x73, 0xe1, 0x1c, 0xe8, 0x00, 0x32, 0xe2, 0x1c,
0x2a, 0xeb, 0x3f, 0x23, 0x70, 0x4a, 0x39, 0xfd, 0x33, 0x40, 0xcb, 0x87, 0xf8, 0xd2, 0x70, 0x9c,
0x7a, 0xfe, 0x70, 0xac, 0xff, 0x22, 0x0d, 0x05, 0x99, 0x3a, 0x8e, 0x7c, 0x32, 0xa2, 0xe8, 0x95,
0xf8, 0x9e, 0x19, 0xe7, 0x2d, 0xe1, 0x50, 0x79, 0x9c, 0xe0, 0xa0, 0x5d, 0xc8, 0xda, 0xf4, 0x92,
0x8f, 0x15, 0xc4, 0x98, 0xa2, 0x38, 0x84, 0x9f, 0x7b, 0xcc, 0xe5, 0x03, 0x45, 0x31, 0x10, 0x91,
0x7c, 0xc4, 0xa6, 0x97, 0x75, 0xdb, 0xf6, 0x85, 0xc7, 0xe4, 0x71, 0x44, 0xf2, 0x54, 0xe0, 0x92,
0x11, 0x15, 0x96, 0xcf, 0x63, 0xf1, 0x1b, 0xbd, 0x0a, 0x85, 0xf1, 0xd3, 0x6b, 0x73, 0x4c, 0xae,
0x1d, 0x8f, 0x44, 0x17, 0x1d, 0xc6, 0x4f, 0xaf, 0x4f, 0x25, 0x07, 0xdd, 0x87, 0x8d, 0xf0, 0x4a,
0x9a, 0x3a, 0xad, 0x42, 0xf5, 0x60, 0x5a, 0x4b, 0xd6, 0xfe, 0x38, 0x1b, 0x5e, 0x09, 0x9c, 0xee,
0xc3, 0x86, 0x7f, 0x95, 0x2c, 0xd2, 0x13, 0xa2, 0x58, 0x89, 0xfa, 0x42, 0x54, 0xff, 0x57, 0x0a,
0xca, 0x09, 0x18, 0x7a, 0x34, 0xfc, 0x9f, 0x22, 0xf1, 0xc2, 0x4e, 0xbd, 0xf6, 0xcc, 0x53, 0xff,
0x33, 0x0d, 0xa5, 0xe8, 0xde, 0x7f, 0x4b, 0xcc, 0xff, 0xc6, 0x22, 0x10, 0xf3, 0xc1, 0x6b, 0x1e,
0x8a, 0x0a, 0x64, 0x42, 0x6f, 0x48, 0x65, 0x05, 0x5b, 0xc2, 0x92, 0xe0, 0x3a, 0x6c, 0x25, 0xcf,
0x73, 0xc9, 0xba, 0xd4, 0x11, 0xb1, 0x5a, 0x4d, 0xf4, 0x06, 0x64, 0x58, 0x48, 0x47, 0x41, 0x35,
0x23, 0xf0, 0xdb, 0x49, 0x6a, 0x10, 0x30, 0xb5, 0x42, 0x3a, 0xc2, 0x52, 0x66, 0x21, 0x31, 0x65,
0x17, 0x12, 0x93, 0x4e, 0x60, 0x6b, 0x69, 0xea, 0x37, 0x7b, 0x4a, 0xfd, 0x0f, 0xa9, 0x99, 0x15,
0xcf, 0x1e, 0xd7, 0xad, 0xe1, 0x4d, 0xc9, 0x32, 0x86, 0x25, 0x9d, 0x84, 0xa5, 0x02, 0x19, 0xea,
0xfb, 0x9e, 0xaf, 0x7a, 0x3a, 0x49, 0x7c, 0x3d, 0xb0, 0xc4, 0x6e, 0x12, 0x60, 0xe9, 0x1f, 0xce,
0xd0, 0x88, 0xc7, 0xd0, 0xf7, 0x20, 0xab, 0x2a, 0x85, 0x94, 0x48, 0x47, 0x9b, 0x7c, 0x89, 0xb3,
0xab, 0xba, 0x35, 0x54, 0xb5, 0x82, 0x1a, 0xd6, 0xff, 0x92, 0x82, 0x8a, 0xaa, 0xb3, 0x1b, 0xa2,
0xaf, 0x50, 0x71, 0xed, 0xa6, 0xf3, 0x56, 0x61, 0x23, 0x6a, 0x4b, 0x64, 0xe9, 0x1c, 0x91, 0xe8,
0xfb, 0x90, 0x53, 0xe5, 0x64, 0xa0, 0x2e, 0x4b, 0x55, 0x94, 0x29, 0x92, 0x37, 0xa7, 0x04, 0xc7,
0x92, 0xe8, 0x23, 0x28, 0xab, 0x32, 0xde, 0x0d, 0xa9, 0x7f, 0x49, 0x1c, 0xd5, 0xb8, 0x3f, 0x23,
0xf2, 0x96, 0x64, 0x9d, 0xaf, 0xe4, 0xf5, 0x7f, 0xa4, 0xa1, 0xb2, 0x4a, 0xc9, 0x0b, 0x78, 0xb6,
0x38, 0x85, 0xdd, 0xc5, 0x8a, 0x45, 0x36, 0x65, 0x2a, 0x26, 0x56, 0x97, 0x6b, 0x16, 0xb9, 0xa5,
0x47, 0xb7, 0x70, 0xc5, 0x59, 0xc1, 0x47, 0x27, 0xb0, 0xb3, 0x50, 0xb7, 0xa8, 0x05, 0x25, 0x0a,
0xb7, 0x97, 0x2a, 0x97, 0x78, 0xbd, 0xed, 0xb9, 0xda, 0x45, 0x2d, 0x17, 0x57, 0x2f, 0x99, 0x64,
0xf5, 0x72, 0x17, 0x0a, 0x36, 0x55, 0x2a, 0x3c, 0x5f, 0xf5, 0x7b, 0x49, 0xd6, 0xe1, 0x36, 0x6c,
0x2d, 0x6d, 0x41, 0x27, 0x50, 0x59, 0x75, 0x96, 0x1b, 0x5e, 0x3f, 0xde, 0x80, 0xad, 0xc5, 0xd7,
0x0f, 0xde, 0xe3, 0xaf, 0xf1, 0x0e, 0x70, 0xe1, 0xf9, 0x23, 0xd0, 0x4f, 0x60, 0x7b, 0xc5, 0xe9,
0x6e, 0xd0, 0x50, 0x85, 0x8d, 0x0b, 0x16, 0x26, 0x5e, 0x26, 0x22, 0x52, 0xff, 0x6d, 0x1a, 0xee,
0xc4, 0x4e, 0x3d, 0x1a, 0x11, 0xd7, 0x36, 0xae, 0xa8, 0x85, 0xb9, 0xc9, 0x83, 0xf0, 0x2b, 0x78,
0xb6, 0x25, 0x27, 0x45, 0x9e, 0xad, 0x48, 0x1e, 0xa8, 0xf9, 0x3a, 0xad, 0xf8, 0x35, 0x82, 0x72,
0x4a, 0xdc, 0xfd, 0x20, 0xb4, 0x99, 0xab, 0x6e, 0xb2, 0x24, 0xd0, 0x29, 0x14, 0xa8, 0x7b, 0xc9,
0x7c, 0xcf, 0x1d, 0x51, 0x37, 0x54, 0x57, 0xb9, 0x96, 0xe8, 0x6b, 0x97, 0xb7, 0x56, 0x33, 0x66,
0x13, 0x64, 0x9f, 0x9b, 0x5c, 0x62, 0xef, 0x47, 0xa0, 0x2d, 0x0a, 0x3c, 0x57, 0x4b, 0xfb, 0x45,
0x0a, 0xf6, 0x56, 0xe9, 0x0e, 0xc6, 0x9e, 0x1b, 0xd0, 0x9b, 0x70, 0xb9, 0x0d, 0x1b, 0xfc, 0xbc,
0x7c, 0x2c, 0x3d, 0x77, 0xfc, 0x5d, 0x1e, 0x6b, 0x6c, 0x6f, 0x12, 0x46, 0xb0, 0x48, 0x4a, 0xf1,
0xa9, 0xef, 0x2b, 0x5c, 0x14, 0x35, 0x0b, 0x8a, 0x99, 0x44, 0x50, 0xd4, 0x19, 0xdc, 0xc6, 0x64,
0x2a, 0x5f, 0x06, 0x8e, 0x3c, 0x7f, 0x4a, 0x7c, 0x9b, 0xfa, 0xc6, 0x25, 0x75, 0x6f, 0x34, 0xd8,
0x0e, 0x64, 0x7d, 0x32, 0x9d, 0xed, 0x2b, 0xe3, 0x93, 0xa9, 0xb4, 0x63, 0x94, 0x0c, 0xe4, 0xbe,
0x22, 0x52, 0x1f, 0xc2, 0x9d, 0x65, 0x55, 0x0a, 0x91, 0x6f, 0x5c, 0xd9, 0x6f, 0xd2, 0x50, 0x68,
0xd2, 0x4b, 0x66, 0x51, 0xf9, 0xc6, 0xb4, 0xcf, 0x25, 0xc5, 0xf3, 0x47, 0xb2, 0xea, 0x50, 0x2f,
0x22, 0x42, 0x04, 0x47, 0x02, 0xe8, 0x3e, 0x64, 0xfa, 0x3c, 0xc1, 0xa9, 0x2a, 0x74, 0x7b, 0x26,
0x29, 0x04, 0x43, 0x66, 0x05, 0x58, 0x4a, 0xa0, 0xb7, 0x00, 0x78, 0xdb, 0xdf, 0xa6, 0x97, 0xb3,
0xb8, 0x2b, 0xda, 0x43, 0xdc, 0xeb, 0xb5, 0x04, 0x17, 0x27, 0x04, 0xd0, 0x3e, 0xe4, 0x03, 0xd7,
0x57, 0xd2, 0xeb, 0x42, 0xba, 0xc8, 0xa5, 0x7b, 0x1d, 0x2c, 0x85, 0x67, 0xc3, 0xe8, 0x00, 0x72,
0xbc, 0xc6, 0x75, 0x98, 0x4b, 0x85, 0xc9, 0xd4, 0x46, 0xce, 0x14, 0xef, 0x84, 0x06, 0x01, 0x19,
0x50, 0x1c, 0x0b, 0xf1, 0x6b, 0x3b, 0x6b, 0x91, 0x79, 0x94, 0x59, 0xc3, 0x33, 0x86, 0xfe, 0xef,
0x34, 0x68, 0x89, 0x97, 0x1d, 0xc6, 0x4f, 0xf1, 0xec, 0x29, 0xe8, 0x3d, 0x28, 0x90, 0xf1, 0xd8,
0x61, 0xd6, 0xac, 0xad, 0x2c, 0x3c, 0xa8, 0xf0, 0x4d, 0xd4, 0x67, 0xec, 0x40, 0x24, 0xf0, 0xa4,
0x20, 0xda, 0x87, 0x1c, 0x75, 0xed, 0x8e, 0x67, 0xd3, 0x40, 0x41, 0x58, 0x96, 0xed, 0xbf, 0x2d,
0x2d, 0x12, 0xe0, 0x78, 0xfc, 0xbf, 0xb3, 0x4b, 0xee, 0xdb, 0x64, 0x17, 0x7d, 0x1f, 0xb4, 0x45,
0xbc, 0xf8, 0x25, 0x75, 0x27, 0xa3, 0x0b, 0xea, 0x0b, 0x80, 0x32, 0x58, 0x51, 0xfa, 0xbb, 0x00,
0x33, 0x98, 0x78, 0x39, 0xe1, 0x7a, 0xfe, 0x88, 0x38, 0x0a, 0x46, 0x51, 0x4e, 0x74, 0x04, 0x47,
0xa0, 0x87, 0xd5, 0xb0, 0xfe, 0xfb, 0x14, 0x14, 0x12, 0x7c, 0x59, 0x16, 0x85, 0x6a, 0x5e, 0x06,
0x4b, 0x82, 0x2b, 0xf5, 0x5c, 0xb1, 0xef, 0xb4, 0x54, 0x2a, 0x29, 0x7e, 0x8b, 0xbc, 0x7e, 0x5f,
0x0c, 0xac, 0x89, 0x81, 0x88, 0x44, 0xdf, 0x85, 0x2c, 0xb1, 0x42, 0x76, 0x49, 0x15, 0x28, 0x65,
0xb9, 0x01, 0x9b, 0x4a, 0x2c, 0xb0, 0x1a, 0x45, 0x3a, 0xac, 0x5f, 0x4c, 0x82, 0x6b, 0x15, 0x6d,
0x17, 0xa5, 0xc4, 0x98, 0x3e, 0x01, 0x98, 0xf1, 0xf8, 0x0e, 0x2d, 0x6f, 0xe2, 0x86, 0xd1, 0x0e,
0x05, 0x81, 0xee, 0x40, 0xce, 0xa6, 0x97, 0x26, 0x9d, 0x30, 0x99, 0xb4, 0x64, 0x89, 0x6d, 0x4c,
0x98, 0x98, 0xe0, 0x13, 0x77, 0x10, 0xbd, 0xd3, 0x4b, 0x82, 0xe7, 0x56, 0x87, 0xb8, 0x83, 0x09,
0x19, 0xd0, 0xa8, 0xa6, 0xcb, 0xe3, 0x24, 0x4b, 0xff, 0x10, 0x8a, 0xe7, 0xee, 0xd0, 0xf5, 0xa6,
0xee, 0x0d, 0xd0, 0xa8, 0x83, 0x2a, 0x68, 0x24, 0xc5, 0x53, 0x5a, 0x31, 0xe9, 0x8c, 0x68, 0x0f,
0x72, 0xf1, 0x3b, 0xac, 0x5c, 0x21, 0xa6, 0xf9, 0x66, 0x42, 0x9f, 0xb8, 0x81, 0x7a, 0x77, 0x95,
0x2b, 0x25, 0x59, 0xbc, 0x27, 0x89, 0xa4, 0xbb, 0x43, 0x05, 0x76, 0x82, 0x83, 0xbe, 0x03, 0xa5,
0x84, 0x78, 0x77, 0x28, 0x0e, 0x94, 0xc1, 0xf3, 0x4c, 0x6e, 0xaf, 0x89, 0x3c, 0x92, 0x7a, 0x7a,
0x8c, 0x48, 0x7e, 0x8c, 0x3e, 0x73, 0xc2, 0xf8, 0x79, 0x48, 0x51, 0x32, 0xb9, 0x3a, 0x0e, 0xb3,
0xa9, 0xb8, 0xc5, 0x19, 0x1c, 0x91, 0xe2, 0x43, 0x03, 0x0b, 0xc8, 0x85, 0xa3, 0x1e, 0x8a, 0x33,
0x38, 0xa6, 0xf9, 0x2c, 0x91, 0x24, 0xa8, 0x7c, 0x7d, 0xcc, 0xe0, 0x88, 0xd4, 0xff, 0x96, 0x86,
0xcd, 0x85, 0x9b, 0x27, 0x13, 0x20, 0x73, 0x22, 0x58, 0x24, 0x81, 0x5e, 0x87, 0xb2, 0xf8, 0x61,
0x5e, 0x52, 0x9f, 0xf5, 0x59, 0x0c, 0x4b, 0x49, 0x70, 0x3f, 0x55, 0x4c, 0x74, 0x1f, 0x34, 0x29,
0x36, 0x71, 0x63, 0x41, 0x09, 0xcf, 0xa6, 0xe0, 0x9f, 0xc7, 0xec, 0x45, 0x94, 0xd7, 0x97, 0x51,
0x5e, 0x42, 0x31, 0xb3, 0x0a, 0xc5, 0x7b, 0xb0, 0x99, 0x60, 0x1c, 0x11, 0xe6, 0x28, 0xd0, 0x16,
0xd9, 0x1c, 0x07, 0xe6, 0xca, 0xb3, 0x29, 0xf4, 0x14, 0x99, 0xc0, 0x3b, 0xb7, 0x88, 0xb7, 0x42,
0x31, 0x42, 0x4e, 0x91, 0x7c, 0x86, 0x34, 0x96, 0xe8, 0x48, 0x33, 0x58, 0x51, 0xfa, 0xfb, 0x90,
0x8f, 0x43, 0xd3, 0x97, 0x5c, 0x8e, 0xf8, 0x06, 0xa4, 0x13, 0x37, 0x40, 0x7f, 0x0f, 0x72, 0x51,
0x94, 0x7a, 0xae, 0x79, 0xbf, 0x4b, 0xc1, 0xe6, 0x42, 0xcc, 0x42, 0x35, 0xc8, 0xf3, 0xce, 0xe0,
0x9c, 0x13, 0xd5, 0xd4, 0xac, 0xe3, 0x56, 0xf5, 0xbd, 0xe0, 0xe3, 0x99, 0x08, 0x7a, 0x1b, 0x72,
0x51, 0xfb, 0xa4, 0xa2, 0x77, 0x25, 0xd9, 0x33, 0xf5, 0x3c, 0x67, 0x22, 0xfb, 0x8d, 0x48, 0x0a,
0xed, 0x43, 0x56, 0x3e, 0xad, 0xaa, 0x92, 0x1d, 0xcd, 0x1a, 0xfa, 0x58, 0x5a, 0x49, 0xe8, 0x36,
0x14, 0x93, 0x8a, 0x79, 0x93, 0x2d, 0x3e, 0x55, 0xf0, 0x8d, 0x65, 0xb0, 0xf8, 0x2d, 0x5c, 0xd4,
0xb5, 0xe3, 0x2f, 0x00, 0x6b, 0x38, 0x22, 0xb9, 0x34, 0xef, 0x36, 0x54, 0xbf, 0x2c, 0x7e, 0x73,
0x5e, 0x10, 0xd2, 0xb1, 0xf2, 0x19, 0xf1, 0x5b, 0x1f, 0x80, 0xb6, 0xb8, 0x5f, 0x9e, 0x94, 0x08,
0xf3, 0xd5, 0x47, 0xad, 0x18, 0x85, 0xba, 0x64, 0xa9, 0xa4, 0xa4, 0x04, 0x78, 0x8c, 0x96, 0xf9,
0x49, 0x04, 0x2c, 0x15, 0xa3, 0x13, 0x77, 0x03, 0xab, 0x61, 0x9d, 0x46, 0xcf, 0x32, 0x2f, 0x56,
0x8d, 0x03, 0xc5, 0xe4, 0x0a, 0xcf, 0x89, 0x9a, 0xfc, 0xee, 0x48, 0xe3, 0x0f, 0xa2, 0x19, 0x1c,
0xd3, 0x2b, 0xd1, 0x1b, 0x42, 0x21, 0xb1, 0x89, 0x17, 0xac, 0xec, 0xd7, 0x29, 0x28, 0xa9, 0x12,
0xa6, 0xed, 0x0d, 0x06, 0xd4, 0x9f, 0xaf, 0x5f, 0x52, 0x8b, 0xf5, 0xcb, 0x2e, 0x64, 0x45, 0x5b,
0x15, 0x79, 0xbe, 0xa2, 0xf8, 0x85, 0x70, 0xc8, 0x05, 0x75, 0x44, 0x5d, 0x90, 0xc7, 0x92, 0x10,
0x5c, 0x7e, 0x8b, 0x94, 0x4a, 0x49, 0xf0, 0xdd, 0x8f, 0xe4, 0xed, 0x50, 0x75, 0x73, 0x44, 0xea,
0x7f, 0x4f, 0xc3, 0xb6, 0x38, 0xb5, 0x04, 0xe0, 0x4c, 0x05, 0x8d, 0x1b, 0xf6, 0xf4, 0x12, 0xe4,
0x59, 0x60, 0xaa, 0x3b, 0x90, 0x16, 0x1f, 0x92, 0x73, 0x2c, 0x90, 0x8e, 0x81, 0x5e, 0x85, 0x02,
0x0b, 0x4c, 0x9f, 0x7e, 0x4e, 0xad, 0x50, 0x05, 0xc0, 0x1c, 0x06, 0x16, 0x60, 0xc5, 0x51, 0x02,
0x2a, 0x76, 0xdb, 0xea, 0x43, 0x34, 0xb0, 0xa0, 0xa1, 0x38, 0xe8, 0x35, 0x28, 0xb2, 0xc0, 0xb4,
0x59, 0x60, 0xf1, 0xea, 0x5a, 0x36, 0xa2, 0x39, 0x5c, 0x60, 0x41, 0x33, 0x62, 0xc5, 0x17, 0x23,
0x9b, 0xb8, 0x18, 0x65, 0x48, 0xdb, 0xbe, 0x0a, 0x6e, 0xe9, 0x26, 0xe6, 0x4d, 0xc7, 0x40, 0x7d,
0x42, 0x96, 0xdf, 0xa3, 0xb2, 0x03, 0xf9, 0xf5, 0xf8, 0x2d, 0xf1, 0x68, 0xc6, 0x2c, 0x9a, 0x7c,
0xdb, 0x4f, 0xa0, 0x20, 0x2b, 0x17, 0xac, 0x84, 0xd0, 0xdb, 0xb0, 0xa1, 0x6a, 0x78, 0xf5, 0x81,
0x71, 0x77, 0x41, 0x5e, 0x99, 0x13, 0x47, 0x62, 0xfa, 0xaf, 0x52, 0xb0, 0xb5, 0xb4, 0x1e, 0xdf,
0x8f, 0xaa, 0x0b, 0x54, 0xcb, 0x15, 0x3d, 0xd6, 0xbd, 0x0c, 0xc0, 0xe1, 0x54, 0xd9, 0x50, 0xe2,
0x99, 0x67, 0x81, 0xca, 0xf8, 0x0a, 0xaf, 0x38, 0xc1, 0xc5, 0x80, 0x36, 0xa3, 0x14, 0x27, 0xcd,
0xa1, 0x62, 0xf8, 0x7a, 0x64, 0x8e, 0x23, 0x41, 0xeb, 0x3f, 0x07, 0xb4, 0xbc, 0xd5, 0x15, 0x9d,
0x4a, 0x3e, 0xd9, 0xa9, 0x68, 0xb0, 0x16, 0xb8, 0xf2, 0x3f, 0x0e, 0xd2, 0x98, 0xff, 0x8c, 0x3f,
0x13, 0xae, 0x25, 0x3e, 0x13, 0xfe, 0x3f, 0x94, 0xc5, 0xbb, 0xb7, 0xe7, 0x9a, 0x84, 0xf9, 0xe6,
0x28, 0x10, 0xca, 0xd7, 0x70, 0x81, 0x73, 0xbb, 0x6e, 0x9d, 0xf9, 0x27, 0xc1, 0xfe, 0x07, 0x89,
0x4f, 0x47, 0xf2, 0x13, 0xc6, 0x26, 0x14, 0x5a, 0x27, 0x27, 0x46, 0xb3, 0x55, 0x3f, 0x33, 0xda,
0x4f, 0xb4, 0x5b, 0x28, 0x0f, 0x99, 0xa6, 0xd1, 0xae, 0x3f, 0xd1, 0x52, 0xa8, 0x04, 0xf9, 0x87,
0xa7, 0x3d, 0xd3, 0x38, 0xed, 0x36, 0x1e, 0x69, 0xe9, 0xfd, 0xf7, 0x61, 0x6b, 0xe9, 0xdb, 0x1d,
0xca, 0xc1, 0x7a, 0xa7, 0xdb, 0x31, 0xb4, 0x5b, 0x5c, 0xda, 0xe8, 0x34, 0xf0, 0x93, 0xd3, 0x33,
0xa3, 0xa9, 0xa5, 0xf8, 0x3a, 0xa7, 0xed, 0x7a, 0xab, 0xa3, 0xa5, 0xf7, 0xdf, 0x86, 0x7c, 0xfc,
0x6d, 0x0b, 0x01, 0x64, 0x3b, 0x5d, 0xb3, 0x81, 0x1b, 0xda, 0x2d, 0x54, 0x80, 0x8d, 0xc3, 0x7a,
0x53, 0x10, 0x29, 0x3e, 0xd0, 0xc0, 0x0d, 0xb3, 0x7b, 0xac, 0xa5, 0xf7, 0xff, 0x9c, 0x82, 0x42,
0xe2, 0x91, 0x8b, 0x0b, 0xb6, 0x1e, 0x76, 0xba, 0xd8, 0x68, 0x6a, 0xb7, 0x50, 0x16, 0xd2, 0xdd,
0x63, 0x2d, 0x85, 0x8a, 0x90, 0x3b, 0xeb, 0x76, 0xcd, 0x76, 0xfd, 0xcc, 0xd0, 0xd2, 0x5c, 0x3d,
0xa7, 0x8c, 0x3a, 0x6e, 0x3f, 0xd1, 0xd6, 0x50, 0x05, 0xb4, 0x46, 0xb7, 0xdd, 0x6e, 0xf5, 0x5a,
0xdd, 0x8e, 0x79, 0x5a, 0x6f, 0x1c, 0x1b, 0x67, 0xda, 0xfa, 0x3c, 0xf7, 0xd0, 0xa8, 0x37, 0xba,
0x1d, 0x2d, 0xc3, 0x57, 0x3f, 0x7b, 0x6c, 0x1e, 0x61, 0xe3, 0x13, 0x2d, 0x2b, 0x56, 0x7d, 0x6c,
0x9e, 0x76, 0x7f, 0x6c, 0x60, 0x6d, 0x03, 0x69, 0x50, 0xe4, 0x10, 0x9c, 0x77, 0xda, 0xdd, 0xc6,
0xb1, 0xd1, 0xd4, 0x72, 0xa8, 0x0c, 0xf0, 0xc9, 0xb9, 0x71, 0x6e, 0x98, 0x47, 0xe7, 0xed, 0xb6,
0x96, 0x47, 0x08, 0xca, 0xad, 0xce, 0x99, 0x81, 0x3b, 0xf5, 0xb6, 0x69, 0x60, 0xdc, 0xc5, 0x1a,
0x1c, 0x7e, 0x04, 0x15, 0xe6, 0xd5, 0xac, 0xa7, 0xcc, 0x1f, 0x07, 0x21, 0xb1, 0x86, 0x35, 0x32,
0x66, 0xb5, 0xc1, 0xf4, 0x27, 0xf7, 0x06, 0x2c, 0xa4, 0xb4, 0x66, 0x79, 0xa3, 0x03, 0xbb, 0xef,
0x7b, 0x17, 0x5e, 0x68, 0xd9, 0x07, 0x33, 0xb1, 0xb7, 0xc8, 0x98, 0x1d, 0x0c, 0xbc, 0x83, 0xc1,
0xf4, 0x22, 0x2b, 0x5e, 0xc9, 0xde, 0xf9, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x41, 0x77, 0x04,
0xe9, 0x22, 0x24, 0x00, 0x00,
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。