mirror of
https://github.com/chirpstack/chirpstack.git
synced 2024-12-22 14:32:24 +00:00
4477 lines
162 KiB
Go
Vendored
4477 lines
162 KiB
Go
Vendored
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
// versions:
|
|
// protoc-gen-go v1.28.0
|
|
// protoc v3.18.1
|
|
// source: gw/gw.proto
|
|
|
|
package gw
|
|
|
|
import (
|
|
common "github.com/chirpstack/chirpstack/api/go/v4/common"
|
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
|
durationpb "google.golang.org/protobuf/types/known/durationpb"
|
|
structpb "google.golang.org/protobuf/types/known/structpb"
|
|
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
|
|
reflect "reflect"
|
|
sync "sync"
|
|
)
|
|
|
|
const (
|
|
// Verify that this generated code is sufficiently up-to-date.
|
|
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
|
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
|
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
|
)
|
|
|
|
type CodeRate int32
|
|
|
|
const (
|
|
CodeRate_CR_UNDEFINED CodeRate = 0
|
|
CodeRate_CR_4_5 CodeRate = 1 // LoRa
|
|
CodeRate_CR_4_6 CodeRate = 2
|
|
CodeRate_CR_4_7 CodeRate = 3
|
|
CodeRate_CR_4_8 CodeRate = 4
|
|
CodeRate_CR_3_8 CodeRate = 5 // LR-FHSS
|
|
CodeRate_CR_2_6 CodeRate = 6
|
|
CodeRate_CR_1_4 CodeRate = 7
|
|
CodeRate_CR_1_6 CodeRate = 8
|
|
CodeRate_CR_5_6 CodeRate = 9
|
|
CodeRate_CR_LI_4_5 CodeRate = 10 // LoRa 2.4 gHz
|
|
CodeRate_CR_LI_4_6 CodeRate = 11
|
|
CodeRate_CR_LI_4_8 CodeRate = 12
|
|
)
|
|
|
|
// Enum value maps for CodeRate.
|
|
var (
|
|
CodeRate_name = map[int32]string{
|
|
0: "CR_UNDEFINED",
|
|
1: "CR_4_5",
|
|
2: "CR_4_6",
|
|
3: "CR_4_7",
|
|
4: "CR_4_8",
|
|
5: "CR_3_8",
|
|
6: "CR_2_6",
|
|
7: "CR_1_4",
|
|
8: "CR_1_6",
|
|
9: "CR_5_6",
|
|
10: "CR_LI_4_5",
|
|
11: "CR_LI_4_6",
|
|
12: "CR_LI_4_8",
|
|
}
|
|
CodeRate_value = map[string]int32{
|
|
"CR_UNDEFINED": 0,
|
|
"CR_4_5": 1,
|
|
"CR_4_6": 2,
|
|
"CR_4_7": 3,
|
|
"CR_4_8": 4,
|
|
"CR_3_8": 5,
|
|
"CR_2_6": 6,
|
|
"CR_1_4": 7,
|
|
"CR_1_6": 8,
|
|
"CR_5_6": 9,
|
|
"CR_LI_4_5": 10,
|
|
"CR_LI_4_6": 11,
|
|
"CR_LI_4_8": 12,
|
|
}
|
|
)
|
|
|
|
func (x CodeRate) Enum() *CodeRate {
|
|
p := new(CodeRate)
|
|
*p = x
|
|
return p
|
|
}
|
|
|
|
func (x CodeRate) String() string {
|
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
}
|
|
|
|
func (CodeRate) Descriptor() protoreflect.EnumDescriptor {
|
|
return file_gw_gw_proto_enumTypes[0].Descriptor()
|
|
}
|
|
|
|
func (CodeRate) Type() protoreflect.EnumType {
|
|
return &file_gw_gw_proto_enumTypes[0]
|
|
}
|
|
|
|
func (x CodeRate) Number() protoreflect.EnumNumber {
|
|
return protoreflect.EnumNumber(x)
|
|
}
|
|
|
|
// Deprecated: Use CodeRate.Descriptor instead.
|
|
func (CodeRate) EnumDescriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{0}
|
|
}
|
|
|
|
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
|
|
)
|
|
|
|
// Enum value maps for DownlinkTiming.
|
|
var (
|
|
DownlinkTiming_name = map[int32]string{
|
|
0: "IMMEDIATELY",
|
|
1: "DELAY",
|
|
2: "GPS_EPOCH",
|
|
}
|
|
DownlinkTiming_value = map[string]int32{
|
|
"IMMEDIATELY": 0,
|
|
"DELAY": 1,
|
|
"GPS_EPOCH": 2,
|
|
}
|
|
)
|
|
|
|
func (x DownlinkTiming) Enum() *DownlinkTiming {
|
|
p := new(DownlinkTiming)
|
|
*p = x
|
|
return p
|
|
}
|
|
|
|
func (x DownlinkTiming) String() string {
|
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
}
|
|
|
|
func (DownlinkTiming) Descriptor() protoreflect.EnumDescriptor {
|
|
return file_gw_gw_proto_enumTypes[1].Descriptor()
|
|
}
|
|
|
|
func (DownlinkTiming) Type() protoreflect.EnumType {
|
|
return &file_gw_gw_proto_enumTypes[1]
|
|
}
|
|
|
|
func (x DownlinkTiming) Number() protoreflect.EnumNumber {
|
|
return protoreflect.EnumNumber(x)
|
|
}
|
|
|
|
// Deprecated: Use DownlinkTiming.Descriptor instead.
|
|
func (DownlinkTiming) EnumDescriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{1}
|
|
}
|
|
|
|
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
|
|
)
|
|
|
|
// Enum value maps for FineTimestampType.
|
|
var (
|
|
FineTimestampType_name = map[int32]string{
|
|
0: "NONE",
|
|
1: "ENCRYPTED",
|
|
2: "PLAIN",
|
|
}
|
|
FineTimestampType_value = map[string]int32{
|
|
"NONE": 0,
|
|
"ENCRYPTED": 1,
|
|
"PLAIN": 2,
|
|
}
|
|
)
|
|
|
|
func (x FineTimestampType) Enum() *FineTimestampType {
|
|
p := new(FineTimestampType)
|
|
*p = x
|
|
return p
|
|
}
|
|
|
|
func (x FineTimestampType) String() string {
|
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
}
|
|
|
|
func (FineTimestampType) Descriptor() protoreflect.EnumDescriptor {
|
|
return file_gw_gw_proto_enumTypes[2].Descriptor()
|
|
}
|
|
|
|
func (FineTimestampType) Type() protoreflect.EnumType {
|
|
return &file_gw_gw_proto_enumTypes[2]
|
|
}
|
|
|
|
func (x FineTimestampType) Number() protoreflect.EnumNumber {
|
|
return protoreflect.EnumNumber(x)
|
|
}
|
|
|
|
// Deprecated: Use FineTimestampType.Descriptor instead.
|
|
func (FineTimestampType) EnumDescriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{2}
|
|
}
|
|
|
|
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
|
|
)
|
|
|
|
// Enum value maps for CRCStatus.
|
|
var (
|
|
CRCStatus_name = map[int32]string{
|
|
0: "NO_CRC",
|
|
1: "BAD_CRC",
|
|
2: "CRC_OK",
|
|
}
|
|
CRCStatus_value = map[string]int32{
|
|
"NO_CRC": 0,
|
|
"BAD_CRC": 1,
|
|
"CRC_OK": 2,
|
|
}
|
|
)
|
|
|
|
func (x CRCStatus) Enum() *CRCStatus {
|
|
p := new(CRCStatus)
|
|
*p = x
|
|
return p
|
|
}
|
|
|
|
func (x CRCStatus) String() string {
|
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
}
|
|
|
|
func (CRCStatus) Descriptor() protoreflect.EnumDescriptor {
|
|
return file_gw_gw_proto_enumTypes[3].Descriptor()
|
|
}
|
|
|
|
func (CRCStatus) Type() protoreflect.EnumType {
|
|
return &file_gw_gw_proto_enumTypes[3]
|
|
}
|
|
|
|
func (x CRCStatus) Number() protoreflect.EnumNumber {
|
|
return protoreflect.EnumNumber(x)
|
|
}
|
|
|
|
// Deprecated: Use CRCStatus.Descriptor instead.
|
|
func (CRCStatus) EnumDescriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{3}
|
|
}
|
|
|
|
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
|
|
)
|
|
|
|
// Enum value maps for TxAckStatus.
|
|
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",
|
|
}
|
|
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) Enum() *TxAckStatus {
|
|
p := new(TxAckStatus)
|
|
*p = x
|
|
return p
|
|
}
|
|
|
|
func (x TxAckStatus) String() string {
|
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
}
|
|
|
|
func (TxAckStatus) Descriptor() protoreflect.EnumDescriptor {
|
|
return file_gw_gw_proto_enumTypes[4].Descriptor()
|
|
}
|
|
|
|
func (TxAckStatus) Type() protoreflect.EnumType {
|
|
return &file_gw_gw_proto_enumTypes[4]
|
|
}
|
|
|
|
func (x TxAckStatus) Number() protoreflect.EnumNumber {
|
|
return protoreflect.EnumNumber(x)
|
|
}
|
|
|
|
// Deprecated: Use TxAckStatus.Descriptor instead.
|
|
func (TxAckStatus) EnumDescriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{4}
|
|
}
|
|
|
|
type ConnState_State int32
|
|
|
|
const (
|
|
ConnState_OFFLINE ConnState_State = 0
|
|
ConnState_ONLINE ConnState_State = 1
|
|
)
|
|
|
|
// Enum value maps for ConnState_State.
|
|
var (
|
|
ConnState_State_name = map[int32]string{
|
|
0: "OFFLINE",
|
|
1: "ONLINE",
|
|
}
|
|
ConnState_State_value = map[string]int32{
|
|
"OFFLINE": 0,
|
|
"ONLINE": 1,
|
|
}
|
|
)
|
|
|
|
func (x ConnState_State) Enum() *ConnState_State {
|
|
p := new(ConnState_State)
|
|
*p = x
|
|
return p
|
|
}
|
|
|
|
func (x ConnState_State) String() string {
|
|
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
}
|
|
|
|
func (ConnState_State) Descriptor() protoreflect.EnumDescriptor {
|
|
return file_gw_gw_proto_enumTypes[5].Descriptor()
|
|
}
|
|
|
|
func (ConnState_State) Type() protoreflect.EnumType {
|
|
return &file_gw_gw_proto_enumTypes[5]
|
|
}
|
|
|
|
func (x ConnState_State) Number() protoreflect.EnumNumber {
|
|
return protoreflect.EnumNumber(x)
|
|
}
|
|
|
|
// Deprecated: Use ConnState_State.Descriptor instead.
|
|
func (ConnState_State) EnumDescriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{32, 0}
|
|
}
|
|
|
|
type Modulation struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Types that are assignable to Parameters:
|
|
// *Modulation_Lora
|
|
// *Modulation_Fsk
|
|
// *Modulation_LrFhss
|
|
Parameters isModulation_Parameters `protobuf_oneof:"parameters"`
|
|
}
|
|
|
|
func (x *Modulation) Reset() {
|
|
*x = Modulation{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[0]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *Modulation) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*Modulation) ProtoMessage() {}
|
|
|
|
func (x *Modulation) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[0]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use Modulation.ProtoReflect.Descriptor instead.
|
|
func (*Modulation) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{0}
|
|
}
|
|
|
|
func (m *Modulation) GetParameters() isModulation_Parameters {
|
|
if m != nil {
|
|
return m.Parameters
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Modulation) GetLora() *LoraModulationInfo {
|
|
if x, ok := x.GetParameters().(*Modulation_Lora); ok {
|
|
return x.Lora
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Modulation) GetFsk() *FskModulationInfo {
|
|
if x, ok := x.GetParameters().(*Modulation_Fsk); ok {
|
|
return x.Fsk
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Modulation) GetLrFhss() *LrFhssModulationInfo {
|
|
if x, ok := x.GetParameters().(*Modulation_LrFhss); ok {
|
|
return x.LrFhss
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type isModulation_Parameters interface {
|
|
isModulation_Parameters()
|
|
}
|
|
|
|
type Modulation_Lora struct {
|
|
// LoRa modulation information.
|
|
Lora *LoraModulationInfo `protobuf:"bytes,3,opt,name=lora,proto3,oneof"`
|
|
}
|
|
|
|
type Modulation_Fsk struct {
|
|
// FSK modulation information.
|
|
Fsk *FskModulationInfo `protobuf:"bytes,4,opt,name=fsk,proto3,oneof"`
|
|
}
|
|
|
|
type Modulation_LrFhss struct {
|
|
// LR-FHSS modulation information.
|
|
LrFhss *LrFhssModulationInfo `protobuf:"bytes,5,opt,name=lr_fhss,json=lrFhss,proto3,oneof"`
|
|
}
|
|
|
|
func (*Modulation_Lora) isModulation_Parameters() {}
|
|
|
|
func (*Modulation_Fsk) isModulation_Parameters() {}
|
|
|
|
func (*Modulation_LrFhss) isModulation_Parameters() {}
|
|
|
|
type UplinkTxInfoLegacy struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// 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 assignable to ModulationInfo:
|
|
// *UplinkTxInfoLegacy_LoraModulationInfo
|
|
// *UplinkTxInfoLegacy_FskModulationInfo
|
|
// *UplinkTxInfoLegacy_LrFhssModulationInfo
|
|
ModulationInfo isUplinkTxInfoLegacy_ModulationInfo `protobuf_oneof:"modulation_info"`
|
|
}
|
|
|
|
func (x *UplinkTxInfoLegacy) Reset() {
|
|
*x = UplinkTxInfoLegacy{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[1]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *UplinkTxInfoLegacy) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*UplinkTxInfoLegacy) ProtoMessage() {}
|
|
|
|
func (x *UplinkTxInfoLegacy) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[1]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use UplinkTxInfoLegacy.ProtoReflect.Descriptor instead.
|
|
func (*UplinkTxInfoLegacy) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{1}
|
|
}
|
|
|
|
func (x *UplinkTxInfoLegacy) GetFrequency() uint32 {
|
|
if x != nil {
|
|
return x.Frequency
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkTxInfoLegacy) GetModulation() common.Modulation {
|
|
if x != nil {
|
|
return x.Modulation
|
|
}
|
|
return common.Modulation(0)
|
|
}
|
|
|
|
func (m *UplinkTxInfoLegacy) GetModulationInfo() isUplinkTxInfoLegacy_ModulationInfo {
|
|
if m != nil {
|
|
return m.ModulationInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkTxInfoLegacy) GetLoraModulationInfo() *LoraModulationInfo {
|
|
if x, ok := x.GetModulationInfo().(*UplinkTxInfoLegacy_LoraModulationInfo); ok {
|
|
return x.LoraModulationInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkTxInfoLegacy) GetFskModulationInfo() *FskModulationInfo {
|
|
if x, ok := x.GetModulationInfo().(*UplinkTxInfoLegacy_FskModulationInfo); ok {
|
|
return x.FskModulationInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkTxInfoLegacy) GetLrFhssModulationInfo() *LrFhssModulationInfo {
|
|
if x, ok := x.GetModulationInfo().(*UplinkTxInfoLegacy_LrFhssModulationInfo); ok {
|
|
return x.LrFhssModulationInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type isUplinkTxInfoLegacy_ModulationInfo interface {
|
|
isUplinkTxInfoLegacy_ModulationInfo()
|
|
}
|
|
|
|
type UplinkTxInfoLegacy_LoraModulationInfo struct {
|
|
// LoRa modulation information.
|
|
LoraModulationInfo *LoraModulationInfo `protobuf:"bytes,3,opt,name=lora_modulation_info,json=loraModulationInfo,proto3,oneof"`
|
|
}
|
|
|
|
type UplinkTxInfoLegacy_FskModulationInfo struct {
|
|
// FSK modulation information.
|
|
FskModulationInfo *FskModulationInfo `protobuf:"bytes,4,opt,name=fsk_modulation_info,json=fskModulationInfo,proto3,oneof"`
|
|
}
|
|
|
|
type UplinkTxInfoLegacy_LrFhssModulationInfo struct {
|
|
// LR-FHSS modulation information.
|
|
LrFhssModulationInfo *LrFhssModulationInfo `protobuf:"bytes,5,opt,name=lr_fhss_modulation_info,json=lrFhssModulationInfo,proto3,oneof"`
|
|
}
|
|
|
|
func (*UplinkTxInfoLegacy_LoraModulationInfo) isUplinkTxInfoLegacy_ModulationInfo() {}
|
|
|
|
func (*UplinkTxInfoLegacy_FskModulationInfo) isUplinkTxInfoLegacy_ModulationInfo() {}
|
|
|
|
func (*UplinkTxInfoLegacy_LrFhssModulationInfo) isUplinkTxInfoLegacy_ModulationInfo() {}
|
|
|
|
type UplinkTxInfo struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Frequency (Hz).
|
|
Frequency uint32 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"`
|
|
// Modulation.
|
|
Modulation *Modulation `protobuf:"bytes,2,opt,name=modulation,proto3" json:"modulation,omitempty"`
|
|
}
|
|
|
|
func (x *UplinkTxInfo) Reset() {
|
|
*x = UplinkTxInfo{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[2]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *UplinkTxInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*UplinkTxInfo) ProtoMessage() {}
|
|
|
|
func (x *UplinkTxInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[2]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use UplinkTxInfo.ProtoReflect.Descriptor instead.
|
|
func (*UplinkTxInfo) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{2}
|
|
}
|
|
|
|
func (x *UplinkTxInfo) GetFrequency() uint32 {
|
|
if x != nil {
|
|
return x.Frequency
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkTxInfo) GetModulation() *Modulation {
|
|
if x != nil {
|
|
return x.Modulation
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type LoraModulationInfo struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// 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.
|
|
CodeRateLegacy string `protobuf:"bytes,3,opt,name=code_rate_legacy,json=codeRateLegacy,proto3" json:"code_rate_legacy,omitempty"`
|
|
// Code-rate.
|
|
CodeRate CodeRate `protobuf:"varint,5,opt,name=code_rate,json=codeRate,proto3,enum=gw.CodeRate" json:"code_rate,omitempty"`
|
|
// Polarization inversion.
|
|
PolarizationInversion bool `protobuf:"varint,4,opt,name=polarization_inversion,json=polarizationInversion,proto3" json:"polarization_inversion,omitempty"`
|
|
}
|
|
|
|
func (x *LoraModulationInfo) Reset() {
|
|
*x = LoraModulationInfo{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[3]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *LoraModulationInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*LoraModulationInfo) ProtoMessage() {}
|
|
|
|
func (x *LoraModulationInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[3]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use LoraModulationInfo.ProtoReflect.Descriptor instead.
|
|
func (*LoraModulationInfo) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{3}
|
|
}
|
|
|
|
func (x *LoraModulationInfo) GetBandwidth() uint32 {
|
|
if x != nil {
|
|
return x.Bandwidth
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *LoraModulationInfo) GetSpreadingFactor() uint32 {
|
|
if x != nil {
|
|
return x.SpreadingFactor
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *LoraModulationInfo) GetCodeRateLegacy() string {
|
|
if x != nil {
|
|
return x.CodeRateLegacy
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *LoraModulationInfo) GetCodeRate() CodeRate {
|
|
if x != nil {
|
|
return x.CodeRate
|
|
}
|
|
return CodeRate_CR_UNDEFINED
|
|
}
|
|
|
|
func (x *LoraModulationInfo) GetPolarizationInversion() bool {
|
|
if x != nil {
|
|
return x.PolarizationInversion
|
|
}
|
|
return false
|
|
}
|
|
|
|
type FskModulationInfo struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// 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"`
|
|
}
|
|
|
|
func (x *FskModulationInfo) Reset() {
|
|
*x = FskModulationInfo{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[4]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *FskModulationInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*FskModulationInfo) ProtoMessage() {}
|
|
|
|
func (x *FskModulationInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[4]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use FskModulationInfo.ProtoReflect.Descriptor instead.
|
|
func (*FskModulationInfo) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{4}
|
|
}
|
|
|
|
func (x *FskModulationInfo) GetFrequencyDeviation() uint32 {
|
|
if x != nil {
|
|
return x.FrequencyDeviation
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *FskModulationInfo) GetDatarate() uint32 {
|
|
if x != nil {
|
|
return x.Datarate
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type LrFhssModulationInfo struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Operating channel width (OCW) in Hz.
|
|
OperatingChannelWidth uint32 `protobuf:"varint,1,opt,name=operating_channel_width,json=operatingChannelWidth,proto3" json:"operating_channel_width,omitempty"`
|
|
// Code-rate.
|
|
// Deprecated: use code_rate.
|
|
CodeRateLegacy string `protobuf:"bytes,2,opt,name=code_rate_legacy,json=codeRateLegacy,proto3" json:"code_rate_legacy,omitempty"`
|
|
// Code-rate.
|
|
CodeRate CodeRate `protobuf:"varint,4,opt,name=code_rate,json=codeRate,proto3,enum=gw.CodeRate" json:"code_rate,omitempty"`
|
|
// Hopping grid number of steps.
|
|
GridSteps uint32 `protobuf:"varint,3,opt,name=grid_steps,json=gridSteps,proto3" json:"grid_steps,omitempty"`
|
|
}
|
|
|
|
func (x *LrFhssModulationInfo) Reset() {
|
|
*x = LrFhssModulationInfo{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[5]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *LrFhssModulationInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*LrFhssModulationInfo) ProtoMessage() {}
|
|
|
|
func (x *LrFhssModulationInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[5]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use LrFhssModulationInfo.ProtoReflect.Descriptor instead.
|
|
func (*LrFhssModulationInfo) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{5}
|
|
}
|
|
|
|
func (x *LrFhssModulationInfo) GetOperatingChannelWidth() uint32 {
|
|
if x != nil {
|
|
return x.OperatingChannelWidth
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *LrFhssModulationInfo) GetCodeRateLegacy() string {
|
|
if x != nil {
|
|
return x.CodeRateLegacy
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *LrFhssModulationInfo) GetCodeRate() CodeRate {
|
|
if x != nil {
|
|
return x.CodeRate
|
|
}
|
|
return CodeRate_CR_UNDEFINED
|
|
}
|
|
|
|
func (x *LrFhssModulationInfo) GetGridSteps() uint32 {
|
|
if x != nil {
|
|
return x.GridSteps
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type EncryptedFineTimestamp struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// 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"`
|
|
}
|
|
|
|
func (x *EncryptedFineTimestamp) Reset() {
|
|
*x = EncryptedFineTimestamp{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[6]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *EncryptedFineTimestamp) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*EncryptedFineTimestamp) ProtoMessage() {}
|
|
|
|
func (x *EncryptedFineTimestamp) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[6]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use EncryptedFineTimestamp.ProtoReflect.Descriptor instead.
|
|
func (*EncryptedFineTimestamp) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{6}
|
|
}
|
|
|
|
func (x *EncryptedFineTimestamp) GetAesKeyIndex() uint32 {
|
|
if x != nil {
|
|
return x.AesKeyIndex
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *EncryptedFineTimestamp) GetEncryptedNs() []byte {
|
|
if x != nil {
|
|
return x.EncryptedNs
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *EncryptedFineTimestamp) GetFpgaId() []byte {
|
|
if x != nil {
|
|
return x.FpgaId
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type PlainFineTimestamp struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Full timestamp.
|
|
Time *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"`
|
|
}
|
|
|
|
func (x *PlainFineTimestamp) Reset() {
|
|
*x = PlainFineTimestamp{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[7]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *PlainFineTimestamp) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*PlainFineTimestamp) ProtoMessage() {}
|
|
|
|
func (x *PlainFineTimestamp) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[7]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use PlainFineTimestamp.ProtoReflect.Descriptor instead.
|
|
func (*PlainFineTimestamp) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{7}
|
|
}
|
|
|
|
func (x *PlainFineTimestamp) GetTime() *timestamppb.Timestamp {
|
|
if x != nil {
|
|
return x.Time
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type GatewayStats struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Gateway ID.
|
|
// Deprecated: use gateway_id.
|
|
GatewayIdLegacy []byte `protobuf:"bytes,1,opt,name=gateway_id_legacy,json=gatewayIdLegacy,proto3" json:"gateway_id_legacy,omitempty"`
|
|
// Gateway ID.
|
|
GatewayId string `protobuf:"bytes,17,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,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 ChirpStack 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"`
|
|
// Tx packets per frequency.
|
|
TxPacketsPerFrequency map[uint32]uint32 `protobuf:"bytes,12,rep,name=tx_packets_per_frequency,json=txPacketsPerFrequency,proto3" json:"tx_packets_per_frequency,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
|
|
// Rx packets per frequency.
|
|
RxPacketsPerFrequency map[uint32]uint32 `protobuf:"bytes,13,rep,name=rx_packets_per_frequency,json=rxPacketsPerFrequency,proto3" json:"rx_packets_per_frequency,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
|
|
// Tx packets per modulation parameters.
|
|
TxPacketsPerModulation []*PerModulationCount `protobuf:"bytes,14,rep,name=tx_packets_per_modulation,json=txPacketsPerModulation,proto3" json:"tx_packets_per_modulation,omitempty"`
|
|
// Rx packets per modulation parameters.
|
|
RxPacketsPerModulation []*PerModulationCount `protobuf:"bytes,15,rep,name=rx_packets_per_modulation,json=rxPacketsPerModulation,proto3" json:"rx_packets_per_modulation,omitempty"`
|
|
// Tx packets per status.
|
|
TxPacketsPerStatus map[string]uint32 `protobuf:"bytes,16,rep,name=tx_packets_per_status,json=txPacketsPerStatus,proto3" json:"tx_packets_per_status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
|
|
}
|
|
|
|
func (x *GatewayStats) Reset() {
|
|
*x = GatewayStats{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[8]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *GatewayStats) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GatewayStats) ProtoMessage() {}
|
|
|
|
func (x *GatewayStats) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[8]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use GatewayStats.ProtoReflect.Descriptor instead.
|
|
func (*GatewayStats) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{8}
|
|
}
|
|
|
|
func (x *GatewayStats) GetGatewayIdLegacy() []byte {
|
|
if x != nil {
|
|
return x.GatewayIdLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayStats) GetGatewayId() string {
|
|
if x != nil {
|
|
return x.GatewayId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *GatewayStats) GetTime() *timestamppb.Timestamp {
|
|
if x != nil {
|
|
return x.Time
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayStats) GetLocation() *common.Location {
|
|
if x != nil {
|
|
return x.Location
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayStats) GetConfigVersion() string {
|
|
if x != nil {
|
|
return x.ConfigVersion
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *GatewayStats) GetRxPacketsReceived() uint32 {
|
|
if x != nil {
|
|
return x.RxPacketsReceived
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *GatewayStats) GetRxPacketsReceivedOk() uint32 {
|
|
if x != nil {
|
|
return x.RxPacketsReceivedOk
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *GatewayStats) GetTxPacketsReceived() uint32 {
|
|
if x != nil {
|
|
return x.TxPacketsReceived
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *GatewayStats) GetTxPacketsEmitted() uint32 {
|
|
if x != nil {
|
|
return x.TxPacketsEmitted
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *GatewayStats) GetMetaData() map[string]string {
|
|
if x != nil {
|
|
return x.MetaData
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayStats) GetTxPacketsPerFrequency() map[uint32]uint32 {
|
|
if x != nil {
|
|
return x.TxPacketsPerFrequency
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayStats) GetRxPacketsPerFrequency() map[uint32]uint32 {
|
|
if x != nil {
|
|
return x.RxPacketsPerFrequency
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayStats) GetTxPacketsPerModulation() []*PerModulationCount {
|
|
if x != nil {
|
|
return x.TxPacketsPerModulation
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayStats) GetRxPacketsPerModulation() []*PerModulationCount {
|
|
if x != nil {
|
|
return x.RxPacketsPerModulation
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayStats) GetTxPacketsPerStatus() map[string]uint32 {
|
|
if x != nil {
|
|
return x.TxPacketsPerStatus
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type PerModulationCount struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Modulation.
|
|
Modulation *Modulation `protobuf:"bytes,1,opt,name=modulation,proto3" json:"modulation,omitempty"`
|
|
// Count.
|
|
Count uint32 `protobuf:"varint,2,opt,name=count,proto3" json:"count,omitempty"`
|
|
}
|
|
|
|
func (x *PerModulationCount) Reset() {
|
|
*x = PerModulationCount{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[9]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *PerModulationCount) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*PerModulationCount) ProtoMessage() {}
|
|
|
|
func (x *PerModulationCount) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[9]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use PerModulationCount.ProtoReflect.Descriptor instead.
|
|
func (*PerModulationCount) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{9}
|
|
}
|
|
|
|
func (x *PerModulationCount) GetModulation() *Modulation {
|
|
if x != nil {
|
|
return x.Modulation
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *PerModulationCount) GetCount() uint32 {
|
|
if x != nil {
|
|
return x.Count
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type UplinkRxInfoLegacy struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// 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 assignable to FineTimestamp:
|
|
// *UplinkRxInfoLegacy_EncryptedFineTimestamp
|
|
// *UplinkRxInfoLegacy_PlainFineTimestamp
|
|
FineTimestamp isUplinkRxInfoLegacy_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"`
|
|
// Optional meta-data map.
|
|
Metadata map[string]string `protobuf:"bytes,18,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) Reset() {
|
|
*x = UplinkRxInfoLegacy{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[10]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*UplinkRxInfoLegacy) ProtoMessage() {}
|
|
|
|
func (x *UplinkRxInfoLegacy) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[10]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use UplinkRxInfoLegacy.ProtoReflect.Descriptor instead.
|
|
func (*UplinkRxInfoLegacy) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{10}
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetGatewayId() []byte {
|
|
if x != nil {
|
|
return x.GatewayId
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetTime() *timestamppb.Timestamp {
|
|
if x != nil {
|
|
return x.Time
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetTimeSinceGpsEpoch() *durationpb.Duration {
|
|
if x != nil {
|
|
return x.TimeSinceGpsEpoch
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetRssi() int32 {
|
|
if x != nil {
|
|
return x.Rssi
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetLoraSnr() float64 {
|
|
if x != nil {
|
|
return x.LoraSnr
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetChannel() uint32 {
|
|
if x != nil {
|
|
return x.Channel
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetRfChain() uint32 {
|
|
if x != nil {
|
|
return x.RfChain
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetBoard() uint32 {
|
|
if x != nil {
|
|
return x.Board
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetAntenna() uint32 {
|
|
if x != nil {
|
|
return x.Antenna
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetLocation() *common.Location {
|
|
if x != nil {
|
|
return x.Location
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetFineTimestampType() FineTimestampType {
|
|
if x != nil {
|
|
return x.FineTimestampType
|
|
}
|
|
return FineTimestampType_NONE
|
|
}
|
|
|
|
func (m *UplinkRxInfoLegacy) GetFineTimestamp() isUplinkRxInfoLegacy_FineTimestamp {
|
|
if m != nil {
|
|
return m.FineTimestamp
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetEncryptedFineTimestamp() *EncryptedFineTimestamp {
|
|
if x, ok := x.GetFineTimestamp().(*UplinkRxInfoLegacy_EncryptedFineTimestamp); ok {
|
|
return x.EncryptedFineTimestamp
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetPlainFineTimestamp() *PlainFineTimestamp {
|
|
if x, ok := x.GetFineTimestamp().(*UplinkRxInfoLegacy_PlainFineTimestamp); ok {
|
|
return x.PlainFineTimestamp
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetContext() []byte {
|
|
if x != nil {
|
|
return x.Context
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetUplinkId() []byte {
|
|
if x != nil {
|
|
return x.UplinkId
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetCrcStatus() CRCStatus {
|
|
if x != nil {
|
|
return x.CrcStatus
|
|
}
|
|
return CRCStatus_NO_CRC
|
|
}
|
|
|
|
func (x *UplinkRxInfoLegacy) GetMetadata() map[string]string {
|
|
if x != nil {
|
|
return x.Metadata
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type isUplinkRxInfoLegacy_FineTimestamp interface {
|
|
isUplinkRxInfoLegacy_FineTimestamp()
|
|
}
|
|
|
|
type UplinkRxInfoLegacy_EncryptedFineTimestamp struct {
|
|
// Encrypted fine-timestamp data.
|
|
EncryptedFineTimestamp *EncryptedFineTimestamp `protobuf:"bytes,13,opt,name=encrypted_fine_timestamp,json=encryptedFineTimestamp,proto3,oneof"`
|
|
}
|
|
|
|
type UplinkRxInfoLegacy_PlainFineTimestamp struct {
|
|
// Plain fine-timestamp data.
|
|
PlainFineTimestamp *PlainFineTimestamp `protobuf:"bytes,14,opt,name=plain_fine_timestamp,json=plainFineTimestamp,proto3,oneof"`
|
|
}
|
|
|
|
func (*UplinkRxInfoLegacy_EncryptedFineTimestamp) isUplinkRxInfoLegacy_FineTimestamp() {}
|
|
|
|
func (*UplinkRxInfoLegacy_PlainFineTimestamp) isUplinkRxInfoLegacy_FineTimestamp() {}
|
|
|
|
type UplinkRxInfo struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Gateway ID.
|
|
GatewayId string `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"`
|
|
// Uplink ID.
|
|
UplinkId uint32 `protobuf:"varint,2,opt,name=uplink_id,json=uplinkId,proto3" json:"uplink_id,omitempty"`
|
|
// RX time (only set when the gateway has a GPS module).
|
|
Time *timestamppb.Timestamp `protobuf:"bytes,3,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,4,opt,name=time_since_gps_epoch,json=timeSinceGpsEpoch,proto3" json:"time_since_gps_epoch,omitempty"`
|
|
// Fine-timestamp.
|
|
// This timestamp can be used for TDOA based geolocation.
|
|
FineTimeSinceGpsEpoch *durationpb.Duration `protobuf:"bytes,5,opt,name=fine_time_since_gps_epoch,json=fineTimeSinceGpsEpoch,proto3" json:"fine_time_since_gps_epoch,omitempty"`
|
|
// RSSI.
|
|
Rssi int32 `protobuf:"varint,6,opt,name=rssi,proto3" json:"rssi,omitempty"`
|
|
// SNR.
|
|
// Note: only available for LoRa modulation.
|
|
Snr float32 `protobuf:"fixed32,7,opt,name=snr,proto3" json:"snr,omitempty"`
|
|
// Board.
|
|
Board uint32 `protobuf:"varint,8,opt,name=board,proto3" json:"board,omitempty"`
|
|
// Antenna.
|
|
Antenna uint32 `protobuf:"varint,9,opt,name=antenna,proto3" json:"antenna,omitempty"`
|
|
// Location.
|
|
Location *common.Location `protobuf:"bytes,10,opt,name=location,proto3" json:"location,omitempty"`
|
|
// Gateway specific context.
|
|
// This value must be returned to the gateway on (Class-A) downlink.
|
|
Context []byte `protobuf:"bytes,11,opt,name=context,proto3" json:"context,omitempty"`
|
|
// Properties.
|
|
Metadata *structpb.Struct `protobuf:"bytes,12,opt,name=metadata,proto3" json:"metadata,omitempty"`
|
|
}
|
|
|
|
func (x *UplinkRxInfo) Reset() {
|
|
*x = UplinkRxInfo{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[11]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *UplinkRxInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*UplinkRxInfo) ProtoMessage() {}
|
|
|
|
func (x *UplinkRxInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[11]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use UplinkRxInfo.ProtoReflect.Descriptor instead.
|
|
func (*UplinkRxInfo) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{11}
|
|
}
|
|
|
|
func (x *UplinkRxInfo) GetGatewayId() string {
|
|
if x != nil {
|
|
return x.GatewayId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *UplinkRxInfo) GetUplinkId() uint32 {
|
|
if x != nil {
|
|
return x.UplinkId
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkRxInfo) GetTime() *timestamppb.Timestamp {
|
|
if x != nil {
|
|
return x.Time
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfo) GetTimeSinceGpsEpoch() *durationpb.Duration {
|
|
if x != nil {
|
|
return x.TimeSinceGpsEpoch
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfo) GetFineTimeSinceGpsEpoch() *durationpb.Duration {
|
|
if x != nil {
|
|
return x.FineTimeSinceGpsEpoch
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfo) GetRssi() int32 {
|
|
if x != nil {
|
|
return x.Rssi
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkRxInfo) GetSnr() float32 {
|
|
if x != nil {
|
|
return x.Snr
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkRxInfo) GetBoard() uint32 {
|
|
if x != nil {
|
|
return x.Board
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkRxInfo) GetAntenna() uint32 {
|
|
if x != nil {
|
|
return x.Antenna
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *UplinkRxInfo) GetLocation() *common.Location {
|
|
if x != nil {
|
|
return x.Location
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfo) GetContext() []byte {
|
|
if x != nil {
|
|
return x.Context
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkRxInfo) GetMetadata() *structpb.Struct {
|
|
if x != nil {
|
|
return x.Metadata
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type DownlinkTxInfoLegacy struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// 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 assignable to ModulationInfo:
|
|
// *DownlinkTxInfoLegacy_LoraModulationInfo
|
|
// *DownlinkTxInfoLegacy_FskModulationInfo
|
|
ModulationInfo isDownlinkTxInfoLegacy_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 assignable to TimingInfo:
|
|
// *DownlinkTxInfoLegacy_ImmediatelyTimingInfo
|
|
// *DownlinkTxInfoLegacy_DelayTimingInfo
|
|
// *DownlinkTxInfoLegacy_GpsEpochTimingInfo
|
|
TimingInfo isDownlinkTxInfoLegacy_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"`
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) Reset() {
|
|
*x = DownlinkTxInfoLegacy{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[12]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*DownlinkTxInfoLegacy) ProtoMessage() {}
|
|
|
|
func (x *DownlinkTxInfoLegacy) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[12]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use DownlinkTxInfoLegacy.ProtoReflect.Descriptor instead.
|
|
func (*DownlinkTxInfoLegacy) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{12}
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetGatewayId() []byte {
|
|
if x != nil {
|
|
return x.GatewayId
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetFrequency() uint32 {
|
|
if x != nil {
|
|
return x.Frequency
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetPower() int32 {
|
|
if x != nil {
|
|
return x.Power
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetModulation() common.Modulation {
|
|
if x != nil {
|
|
return x.Modulation
|
|
}
|
|
return common.Modulation(0)
|
|
}
|
|
|
|
func (m *DownlinkTxInfoLegacy) GetModulationInfo() isDownlinkTxInfoLegacy_ModulationInfo {
|
|
if m != nil {
|
|
return m.ModulationInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetLoraModulationInfo() *LoraModulationInfo {
|
|
if x, ok := x.GetModulationInfo().(*DownlinkTxInfoLegacy_LoraModulationInfo); ok {
|
|
return x.LoraModulationInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetFskModulationInfo() *FskModulationInfo {
|
|
if x, ok := x.GetModulationInfo().(*DownlinkTxInfoLegacy_FskModulationInfo); ok {
|
|
return x.FskModulationInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetBoard() uint32 {
|
|
if x != nil {
|
|
return x.Board
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetAntenna() uint32 {
|
|
if x != nil {
|
|
return x.Antenna
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetTiming() DownlinkTiming {
|
|
if x != nil {
|
|
return x.Timing
|
|
}
|
|
return DownlinkTiming_IMMEDIATELY
|
|
}
|
|
|
|
func (m *DownlinkTxInfoLegacy) GetTimingInfo() isDownlinkTxInfoLegacy_TimingInfo {
|
|
if m != nil {
|
|
return m.TimingInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetImmediatelyTimingInfo() *ImmediatelyTimingInfo {
|
|
if x, ok := x.GetTimingInfo().(*DownlinkTxInfoLegacy_ImmediatelyTimingInfo); ok {
|
|
return x.ImmediatelyTimingInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetDelayTimingInfo() *DelayTimingInfo {
|
|
if x, ok := x.GetTimingInfo().(*DownlinkTxInfoLegacy_DelayTimingInfo); ok {
|
|
return x.DelayTimingInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetGpsEpochTimingInfo() *GPSEpochTimingInfo {
|
|
if x, ok := x.GetTimingInfo().(*DownlinkTxInfoLegacy_GpsEpochTimingInfo); ok {
|
|
return x.GpsEpochTimingInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkTxInfoLegacy) GetContext() []byte {
|
|
if x != nil {
|
|
return x.Context
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type isDownlinkTxInfoLegacy_ModulationInfo interface {
|
|
isDownlinkTxInfoLegacy_ModulationInfo()
|
|
}
|
|
|
|
type DownlinkTxInfoLegacy_LoraModulationInfo struct {
|
|
// LoRa modulation information.
|
|
LoraModulationInfo *LoraModulationInfo `protobuf:"bytes,8,opt,name=lora_modulation_info,json=loraModulationInfo,proto3,oneof"`
|
|
}
|
|
|
|
type DownlinkTxInfoLegacy_FskModulationInfo struct {
|
|
// FSK modulation information.
|
|
FskModulationInfo *FskModulationInfo `protobuf:"bytes,9,opt,name=fsk_modulation_info,json=fskModulationInfo,proto3,oneof"`
|
|
}
|
|
|
|
func (*DownlinkTxInfoLegacy_LoraModulationInfo) isDownlinkTxInfoLegacy_ModulationInfo() {}
|
|
|
|
func (*DownlinkTxInfoLegacy_FskModulationInfo) isDownlinkTxInfoLegacy_ModulationInfo() {}
|
|
|
|
type isDownlinkTxInfoLegacy_TimingInfo interface {
|
|
isDownlinkTxInfoLegacy_TimingInfo()
|
|
}
|
|
|
|
type DownlinkTxInfoLegacy_ImmediatelyTimingInfo struct {
|
|
// Immediately timing information.
|
|
ImmediatelyTimingInfo *ImmediatelyTimingInfo `protobuf:"bytes,13,opt,name=immediately_timing_info,json=immediatelyTimingInfo,proto3,oneof"`
|
|
}
|
|
|
|
type DownlinkTxInfoLegacy_DelayTimingInfo struct {
|
|
// Context based delay timing information.
|
|
DelayTimingInfo *DelayTimingInfo `protobuf:"bytes,14,opt,name=delay_timing_info,json=delayTimingInfo,proto3,oneof"`
|
|
}
|
|
|
|
type DownlinkTxInfoLegacy_GpsEpochTimingInfo struct {
|
|
// GPS Epoch timing information.
|
|
GpsEpochTimingInfo *GPSEpochTimingInfo `protobuf:"bytes,15,opt,name=gps_epoch_timing_info,json=gpsEpochTimingInfo,proto3,oneof"`
|
|
}
|
|
|
|
func (*DownlinkTxInfoLegacy_ImmediatelyTimingInfo) isDownlinkTxInfoLegacy_TimingInfo() {}
|
|
|
|
func (*DownlinkTxInfoLegacy_DelayTimingInfo) isDownlinkTxInfoLegacy_TimingInfo() {}
|
|
|
|
func (*DownlinkTxInfoLegacy_GpsEpochTimingInfo) isDownlinkTxInfoLegacy_TimingInfo() {}
|
|
|
|
type DownlinkTxInfo struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// TX frequency (in Hz).
|
|
Frequency uint32 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"`
|
|
// TX power (in dBm).
|
|
Power int32 `protobuf:"varint,2,opt,name=power,proto3" json:"power,omitempty"`
|
|
// Modulation.
|
|
Modulation *Modulation `protobuf:"bytes,3,opt,name=modulation,proto3" json:"modulation,omitempty"`
|
|
// The board identifier for emitting the frame.
|
|
Board uint32 `protobuf:"varint,4,opt,name=board,proto3" json:"board,omitempty"`
|
|
// The antenna identifier for emitting the frame.
|
|
Antenna uint32 `protobuf:"varint,5,opt,name=antenna,proto3" json:"antenna,omitempty"`
|
|
// Timing.
|
|
Timing *Timing `protobuf:"bytes,6,opt,name=timing,proto3" json:"timing,omitempty"`
|
|
// Gateway specific context.
|
|
// In case of a Class-A downlink, this contains a copy of the uplink context.
|
|
Context []byte `protobuf:"bytes,7,opt,name=context,proto3" json:"context,omitempty"`
|
|
}
|
|
|
|
func (x *DownlinkTxInfo) Reset() {
|
|
*x = DownlinkTxInfo{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[13]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *DownlinkTxInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*DownlinkTxInfo) ProtoMessage() {}
|
|
|
|
func (x *DownlinkTxInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[13]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use DownlinkTxInfo.ProtoReflect.Descriptor instead.
|
|
func (*DownlinkTxInfo) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{13}
|
|
}
|
|
|
|
func (x *DownlinkTxInfo) GetFrequency() uint32 {
|
|
if x != nil {
|
|
return x.Frequency
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *DownlinkTxInfo) GetPower() int32 {
|
|
if x != nil {
|
|
return x.Power
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *DownlinkTxInfo) GetModulation() *Modulation {
|
|
if x != nil {
|
|
return x.Modulation
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkTxInfo) GetBoard() uint32 {
|
|
if x != nil {
|
|
return x.Board
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *DownlinkTxInfo) GetAntenna() uint32 {
|
|
if x != nil {
|
|
return x.Antenna
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *DownlinkTxInfo) GetTiming() *Timing {
|
|
if x != nil {
|
|
return x.Timing
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkTxInfo) GetContext() []byte {
|
|
if x != nil {
|
|
return x.Context
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type Timing struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Types that are assignable to Parameters:
|
|
// *Timing_Immediately
|
|
// *Timing_Delay
|
|
// *Timing_GpsEpoch
|
|
Parameters isTiming_Parameters `protobuf_oneof:"parameters"`
|
|
}
|
|
|
|
func (x *Timing) Reset() {
|
|
*x = Timing{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[14]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *Timing) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*Timing) ProtoMessage() {}
|
|
|
|
func (x *Timing) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[14]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use Timing.ProtoReflect.Descriptor instead.
|
|
func (*Timing) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{14}
|
|
}
|
|
|
|
func (m *Timing) GetParameters() isTiming_Parameters {
|
|
if m != nil {
|
|
return m.Parameters
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Timing) GetImmediately() *ImmediatelyTimingInfo {
|
|
if x, ok := x.GetParameters().(*Timing_Immediately); ok {
|
|
return x.Immediately
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Timing) GetDelay() *DelayTimingInfo {
|
|
if x, ok := x.GetParameters().(*Timing_Delay); ok {
|
|
return x.Delay
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Timing) GetGpsEpoch() *GPSEpochTimingInfo {
|
|
if x, ok := x.GetParameters().(*Timing_GpsEpoch); ok {
|
|
return x.GpsEpoch
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type isTiming_Parameters interface {
|
|
isTiming_Parameters()
|
|
}
|
|
|
|
type Timing_Immediately struct {
|
|
// Immediately timing information.
|
|
Immediately *ImmediatelyTimingInfo `protobuf:"bytes,1,opt,name=immediately,proto3,oneof"`
|
|
}
|
|
|
|
type Timing_Delay struct {
|
|
// Context based delay timing information.
|
|
Delay *DelayTimingInfo `protobuf:"bytes,2,opt,name=delay,proto3,oneof"`
|
|
}
|
|
|
|
type Timing_GpsEpoch struct {
|
|
// GPS Epoch timing information.
|
|
GpsEpoch *GPSEpochTimingInfo `protobuf:"bytes,3,opt,name=gps_epoch,json=gpsEpoch,proto3,oneof"`
|
|
}
|
|
|
|
func (*Timing_Immediately) isTiming_Parameters() {}
|
|
|
|
func (*Timing_Delay) isTiming_Parameters() {}
|
|
|
|
func (*Timing_GpsEpoch) isTiming_Parameters() {}
|
|
|
|
type ImmediatelyTimingInfo struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
}
|
|
|
|
func (x *ImmediatelyTimingInfo) Reset() {
|
|
*x = ImmediatelyTimingInfo{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[15]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *ImmediatelyTimingInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ImmediatelyTimingInfo) ProtoMessage() {}
|
|
|
|
func (x *ImmediatelyTimingInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[15]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use ImmediatelyTimingInfo.ProtoReflect.Descriptor instead.
|
|
func (*ImmediatelyTimingInfo) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{15}
|
|
}
|
|
|
|
type DelayTimingInfo struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// 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"`
|
|
}
|
|
|
|
func (x *DelayTimingInfo) Reset() {
|
|
*x = DelayTimingInfo{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[16]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *DelayTimingInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*DelayTimingInfo) ProtoMessage() {}
|
|
|
|
func (x *DelayTimingInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[16]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use DelayTimingInfo.ProtoReflect.Descriptor instead.
|
|
func (*DelayTimingInfo) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{16}
|
|
}
|
|
|
|
func (x *DelayTimingInfo) GetDelay() *durationpb.Duration {
|
|
if x != nil {
|
|
return x.Delay
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type GPSEpochTimingInfo struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// 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"`
|
|
}
|
|
|
|
func (x *GPSEpochTimingInfo) Reset() {
|
|
*x = GPSEpochTimingInfo{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[17]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *GPSEpochTimingInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GPSEpochTimingInfo) ProtoMessage() {}
|
|
|
|
func (x *GPSEpochTimingInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[17]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use GPSEpochTimingInfo.ProtoReflect.Descriptor instead.
|
|
func (*GPSEpochTimingInfo) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{17}
|
|
}
|
|
|
|
func (x *GPSEpochTimingInfo) GetTimeSinceGpsEpoch() *durationpb.Duration {
|
|
if x != nil {
|
|
return x.TimeSinceGpsEpoch
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type UplinkFrame struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// PHYPayload.
|
|
PhyPayload []byte `protobuf:"bytes,1,opt,name=phy_payload,json=phyPayload,proto3" json:"phy_payload,omitempty"`
|
|
// TX meta-data (deprecated).
|
|
TxInfoLegacy *UplinkTxInfoLegacy `protobuf:"bytes,2,opt,name=tx_info_legacy,json=txInfoLegacy,proto3" json:"tx_info_legacy,omitempty"`
|
|
// RX meta-data (deprecated).
|
|
RxInfoLegacy *UplinkRxInfoLegacy `protobuf:"bytes,3,opt,name=rx_info_legacy,json=rxInfoLegacy,proto3" json:"rx_info_legacy,omitempty"`
|
|
// Tx meta-data.
|
|
TxInfo *UplinkTxInfo `protobuf:"bytes,4,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
|
|
// Rx meta-data.
|
|
RxInfo *UplinkRxInfo `protobuf:"bytes,5,opt,name=rx_info,json=rxInfo,proto3" json:"rx_info,omitempty"`
|
|
}
|
|
|
|
func (x *UplinkFrame) Reset() {
|
|
*x = UplinkFrame{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[18]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *UplinkFrame) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*UplinkFrame) ProtoMessage() {}
|
|
|
|
func (x *UplinkFrame) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[18]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use UplinkFrame.ProtoReflect.Descriptor instead.
|
|
func (*UplinkFrame) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{18}
|
|
}
|
|
|
|
func (x *UplinkFrame) GetPhyPayload() []byte {
|
|
if x != nil {
|
|
return x.PhyPayload
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkFrame) GetTxInfoLegacy() *UplinkTxInfoLegacy {
|
|
if x != nil {
|
|
return x.TxInfoLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkFrame) GetRxInfoLegacy() *UplinkRxInfoLegacy {
|
|
if x != nil {
|
|
return x.RxInfoLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkFrame) GetTxInfo() *UplinkTxInfo {
|
|
if x != nil {
|
|
return x.TxInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkFrame) GetRxInfo() *UplinkRxInfo {
|
|
if x != nil {
|
|
return x.RxInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type UplinkFrameSet struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// 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 set.
|
|
RxInfo []*UplinkRxInfo `protobuf:"bytes,3,rep,name=rx_info,json=rxInfo,proto3" json:"rx_info,omitempty"`
|
|
}
|
|
|
|
func (x *UplinkFrameSet) Reset() {
|
|
*x = UplinkFrameSet{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[19]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *UplinkFrameSet) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*UplinkFrameSet) ProtoMessage() {}
|
|
|
|
func (x *UplinkFrameSet) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[19]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use UplinkFrameSet.ProtoReflect.Descriptor instead.
|
|
func (*UplinkFrameSet) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{19}
|
|
}
|
|
|
|
func (x *UplinkFrameSet) GetPhyPayload() []byte {
|
|
if x != nil {
|
|
return x.PhyPayload
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkFrameSet) GetTxInfo() *UplinkTxInfo {
|
|
if x != nil {
|
|
return x.TxInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *UplinkFrameSet) GetRxInfo() []*UplinkRxInfo {
|
|
if x != nil {
|
|
return x.RxInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type DownlinkFrame struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Downlink ID.
|
|
DownlinkId uint32 `protobuf:"varint,3,opt,name=downlink_id,json=downlinkId,proto3" json:"downlink_id,omitempty"`
|
|
// Downlink ID (UUID).
|
|
// Deprecated: use downlink_id.
|
|
DownlinkIdLegacy []byte `protobuf:"bytes,4,opt,name=downlink_id_legacy,json=downlinkIdLegacy,proto3" json:"downlink_id_legacy,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.
|
|
// Deprecated: use gateway_id
|
|
GatewayIdLegacy []byte `protobuf:"bytes,6,opt,name=gateway_id_legacy,json=gatewayIdLegacy,proto3" json:"gateway_id_legacy,omitempty"`
|
|
// Gateway ID.
|
|
GatewayId string `protobuf:"bytes,7,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"`
|
|
}
|
|
|
|
func (x *DownlinkFrame) Reset() {
|
|
*x = DownlinkFrame{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[20]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *DownlinkFrame) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*DownlinkFrame) ProtoMessage() {}
|
|
|
|
func (x *DownlinkFrame) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[20]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use DownlinkFrame.ProtoReflect.Descriptor instead.
|
|
func (*DownlinkFrame) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{20}
|
|
}
|
|
|
|
func (x *DownlinkFrame) GetDownlinkId() uint32 {
|
|
if x != nil {
|
|
return x.DownlinkId
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *DownlinkFrame) GetDownlinkIdLegacy() []byte {
|
|
if x != nil {
|
|
return x.DownlinkIdLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkFrame) GetItems() []*DownlinkFrameItem {
|
|
if x != nil {
|
|
return x.Items
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkFrame) GetGatewayIdLegacy() []byte {
|
|
if x != nil {
|
|
return x.GatewayIdLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkFrame) GetGatewayId() string {
|
|
if x != nil {
|
|
return x.GatewayId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type DownlinkFrameItem struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// PHYPayload.
|
|
PhyPayload []byte `protobuf:"bytes,1,opt,name=phy_payload,json=phyPayload,proto3" json:"phy_payload,omitempty"`
|
|
// TX meta-data (deprecated).
|
|
TxInfoLegacy *DownlinkTxInfoLegacy `protobuf:"bytes,2,opt,name=tx_info_legacy,json=txInfoLegacy,proto3" json:"tx_info_legacy,omitempty"`
|
|
// Tx meta-data.
|
|
TxInfo *DownlinkTxInfo `protobuf:"bytes,3,opt,name=tx_info,json=txInfo,proto3" json:"tx_info,omitempty"`
|
|
}
|
|
|
|
func (x *DownlinkFrameItem) Reset() {
|
|
*x = DownlinkFrameItem{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[21]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *DownlinkFrameItem) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*DownlinkFrameItem) ProtoMessage() {}
|
|
|
|
func (x *DownlinkFrameItem) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[21]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use DownlinkFrameItem.ProtoReflect.Descriptor instead.
|
|
func (*DownlinkFrameItem) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{21}
|
|
}
|
|
|
|
func (x *DownlinkFrameItem) GetPhyPayload() []byte {
|
|
if x != nil {
|
|
return x.PhyPayload
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkFrameItem) GetTxInfoLegacy() *DownlinkTxInfoLegacy {
|
|
if x != nil {
|
|
return x.TxInfoLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkFrameItem) GetTxInfo() *DownlinkTxInfo {
|
|
if x != nil {
|
|
return x.TxInfo
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type DownlinkTxAck struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Gateway ID (deprecated).
|
|
GatewayIdLegacy []byte `protobuf:"bytes,1,opt,name=gateway_id_legacy,json=gatewayIdLegacy,proto3" json:"gateway_id_legacy,omitempty"`
|
|
// Gateway ID.
|
|
GatewayId string `protobuf:"bytes,6,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"`
|
|
// Downlink ID.
|
|
DownlinkId uint32 `protobuf:"varint,2,opt,name=downlink_id,json=downlinkId,proto3" json:"downlink_id,omitempty"`
|
|
// Downlink ID (deprecated).
|
|
DownlinkIdLegacy []byte `protobuf:"bytes,4,opt,name=downlink_id_legacy,json=downlinkIdLegacy,proto3" json:"downlink_id_legacy,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"`
|
|
}
|
|
|
|
func (x *DownlinkTxAck) Reset() {
|
|
*x = DownlinkTxAck{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[22]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *DownlinkTxAck) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*DownlinkTxAck) ProtoMessage() {}
|
|
|
|
func (x *DownlinkTxAck) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[22]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use DownlinkTxAck.ProtoReflect.Descriptor instead.
|
|
func (*DownlinkTxAck) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{22}
|
|
}
|
|
|
|
func (x *DownlinkTxAck) GetGatewayIdLegacy() []byte {
|
|
if x != nil {
|
|
return x.GatewayIdLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkTxAck) GetGatewayId() string {
|
|
if x != nil {
|
|
return x.GatewayId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *DownlinkTxAck) GetDownlinkId() uint32 {
|
|
if x != nil {
|
|
return x.DownlinkId
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *DownlinkTxAck) GetDownlinkIdLegacy() []byte {
|
|
if x != nil {
|
|
return x.DownlinkIdLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *DownlinkTxAck) GetItems() []*DownlinkTxAckItem {
|
|
if x != nil {
|
|
return x.Items
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type DownlinkTxAckItem struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// The Ack status of this item.
|
|
Status TxAckStatus `protobuf:"varint,1,opt,name=status,proto3,enum=gw.TxAckStatus" json:"status,omitempty"`
|
|
}
|
|
|
|
func (x *DownlinkTxAckItem) Reset() {
|
|
*x = DownlinkTxAckItem{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[23]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *DownlinkTxAckItem) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*DownlinkTxAckItem) ProtoMessage() {}
|
|
|
|
func (x *DownlinkTxAckItem) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[23]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use DownlinkTxAckItem.ProtoReflect.Descriptor instead.
|
|
func (*DownlinkTxAckItem) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{23}
|
|
}
|
|
|
|
func (x *DownlinkTxAckItem) GetStatus() TxAckStatus {
|
|
if x != nil {
|
|
return x.Status
|
|
}
|
|
return TxAckStatus_IGNORED
|
|
}
|
|
|
|
type GatewayConfiguration struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Gateway ID.
|
|
// Deprecated: use gateway_id.
|
|
GatewayIdLegacy []byte `protobuf:"bytes,1,opt,name=gateway_id_legacy,json=gatewayIdLegacy,proto3" json:"gateway_id_legacy,omitempty"`
|
|
// Gateway ID.
|
|
GatewayId string `protobuf:"bytes,5,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"`
|
|
}
|
|
|
|
func (x *GatewayConfiguration) Reset() {
|
|
*x = GatewayConfiguration{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[24]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *GatewayConfiguration) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GatewayConfiguration) ProtoMessage() {}
|
|
|
|
func (x *GatewayConfiguration) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[24]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use GatewayConfiguration.ProtoReflect.Descriptor instead.
|
|
func (*GatewayConfiguration) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{24}
|
|
}
|
|
|
|
func (x *GatewayConfiguration) GetGatewayIdLegacy() []byte {
|
|
if x != nil {
|
|
return x.GatewayIdLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayConfiguration) GetGatewayId() string {
|
|
if x != nil {
|
|
return x.GatewayId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *GatewayConfiguration) GetVersion() string {
|
|
if x != nil {
|
|
return x.Version
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *GatewayConfiguration) GetChannels() []*ChannelConfiguration {
|
|
if x != nil {
|
|
return x.Channels
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayConfiguration) GetStatsInterval() *durationpb.Duration {
|
|
if x != nil {
|
|
return x.StatsInterval
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type ChannelConfiguration struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Frequency (Hz).
|
|
Frequency uint32 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"`
|
|
// Modulation (deprecated).
|
|
ModulationLegacy common.Modulation `protobuf:"varint,2,opt,name=modulation_legacy,json=modulationLegacy,proto3,enum=common.Modulation" json:"modulation_legacy,omitempty"`
|
|
// Types that are assignable 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"`
|
|
}
|
|
|
|
func (x *ChannelConfiguration) Reset() {
|
|
*x = ChannelConfiguration{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[25]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *ChannelConfiguration) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ChannelConfiguration) ProtoMessage() {}
|
|
|
|
func (x *ChannelConfiguration) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[25]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use ChannelConfiguration.ProtoReflect.Descriptor instead.
|
|
func (*ChannelConfiguration) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{25}
|
|
}
|
|
|
|
func (x *ChannelConfiguration) GetFrequency() uint32 {
|
|
if x != nil {
|
|
return x.Frequency
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *ChannelConfiguration) GetModulationLegacy() common.Modulation {
|
|
if x != nil {
|
|
return x.ModulationLegacy
|
|
}
|
|
return common.Modulation(0)
|
|
}
|
|
|
|
func (m *ChannelConfiguration) GetModulationConfig() isChannelConfiguration_ModulationConfig {
|
|
if m != nil {
|
|
return m.ModulationConfig
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *ChannelConfiguration) GetLoraModulationConfig() *LoraModulationConfig {
|
|
if x, ok := x.GetModulationConfig().(*ChannelConfiguration_LoraModulationConfig); ok {
|
|
return x.LoraModulationConfig
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *ChannelConfiguration) GetFskModulationConfig() *FskModulationConfig {
|
|
if x, ok := x.GetModulationConfig().(*ChannelConfiguration_FskModulationConfig); ok {
|
|
return x.FskModulationConfig
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *ChannelConfiguration) GetBoard() uint32 {
|
|
if x != nil {
|
|
return x.Board
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *ChannelConfiguration) GetDemodulator() uint32 {
|
|
if x != nil {
|
|
return x.Demodulator
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type isChannelConfiguration_ModulationConfig interface {
|
|
isChannelConfiguration_ModulationConfig()
|
|
}
|
|
|
|
type ChannelConfiguration_LoraModulationConfig struct {
|
|
// LoRa modulation config.
|
|
LoraModulationConfig *LoraModulationConfig `protobuf:"bytes,3,opt,name=lora_modulation_config,json=loraModulationConfig,proto3,oneof"`
|
|
}
|
|
|
|
type ChannelConfiguration_FskModulationConfig struct {
|
|
// FSK modulation config.
|
|
FskModulationConfig *FskModulationConfig `protobuf:"bytes,4,opt,name=fsk_modulation_config,json=fskModulationConfig,proto3,oneof"`
|
|
}
|
|
|
|
func (*ChannelConfiguration_LoraModulationConfig) isChannelConfiguration_ModulationConfig() {}
|
|
|
|
func (*ChannelConfiguration_FskModulationConfig) isChannelConfiguration_ModulationConfig() {}
|
|
|
|
type LoraModulationConfig struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Bandwidth (kHz).
|
|
// Deprecated: use bandwidth.
|
|
BandwidthLegacy uint32 `protobuf:"varint,1,opt,name=bandwidth_legacy,json=bandwidthLegacy,proto3" json:"bandwidth_legacy,omitempty"`
|
|
// Bandwidth (Hz).
|
|
Bandwidth uint32 `protobuf:"varint,3,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"`
|
|
}
|
|
|
|
func (x *LoraModulationConfig) Reset() {
|
|
*x = LoraModulationConfig{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[26]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *LoraModulationConfig) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*LoraModulationConfig) ProtoMessage() {}
|
|
|
|
func (x *LoraModulationConfig) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[26]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use LoraModulationConfig.ProtoReflect.Descriptor instead.
|
|
func (*LoraModulationConfig) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{26}
|
|
}
|
|
|
|
func (x *LoraModulationConfig) GetBandwidthLegacy() uint32 {
|
|
if x != nil {
|
|
return x.BandwidthLegacy
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *LoraModulationConfig) GetBandwidth() uint32 {
|
|
if x != nil {
|
|
return x.Bandwidth
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *LoraModulationConfig) GetSpreadingFactors() []uint32 {
|
|
if x != nil {
|
|
return x.SpreadingFactors
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type FskModulationConfig struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Bandwidth (kHz).
|
|
// Deprecated: use bandwidth.
|
|
BandwidthLegacy uint32 `protobuf:"varint,1,opt,name=bandwidth_legacy,json=bandwidthLegacy,proto3" json:"bandwidth_legacy,omitempty"`
|
|
// Bandwidth (Hz).
|
|
Bandwidth uint32 `protobuf:"varint,3,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"`
|
|
// Bitrate.
|
|
Bitrate uint32 `protobuf:"varint,2,opt,name=bitrate,proto3" json:"bitrate,omitempty"`
|
|
}
|
|
|
|
func (x *FskModulationConfig) Reset() {
|
|
*x = FskModulationConfig{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[27]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *FskModulationConfig) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*FskModulationConfig) ProtoMessage() {}
|
|
|
|
func (x *FskModulationConfig) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[27]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use FskModulationConfig.ProtoReflect.Descriptor instead.
|
|
func (*FskModulationConfig) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{27}
|
|
}
|
|
|
|
func (x *FskModulationConfig) GetBandwidthLegacy() uint32 {
|
|
if x != nil {
|
|
return x.BandwidthLegacy
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *FskModulationConfig) GetBandwidth() uint32 {
|
|
if x != nil {
|
|
return x.Bandwidth
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *FskModulationConfig) GetBitrate() uint32 {
|
|
if x != nil {
|
|
return x.Bitrate
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type GatewayCommandExecRequest struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Gateway ID.
|
|
// Deprecated: use gateway_id.
|
|
GatewayIdLegacy []byte `protobuf:"bytes,1,opt,name=gateway_id_legacy,json=gatewayIdLegacy,proto3" json:"gateway_id_legacy,omitempty"`
|
|
// Gateway ID.
|
|
GatewayId string `protobuf:"bytes,6,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.
|
|
// The same will be returned when the execution of the command has
|
|
// completed.
|
|
ExecId uint32 `protobuf:"varint,7,opt,name=exec_id,json=execId,proto3" json:"exec_id,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"`
|
|
}
|
|
|
|
func (x *GatewayCommandExecRequest) Reset() {
|
|
*x = GatewayCommandExecRequest{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[28]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *GatewayCommandExecRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GatewayCommandExecRequest) ProtoMessage() {}
|
|
|
|
func (x *GatewayCommandExecRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[28]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use GatewayCommandExecRequest.ProtoReflect.Descriptor instead.
|
|
func (*GatewayCommandExecRequest) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{28}
|
|
}
|
|
|
|
func (x *GatewayCommandExecRequest) GetGatewayIdLegacy() []byte {
|
|
if x != nil {
|
|
return x.GatewayIdLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayCommandExecRequest) GetGatewayId() string {
|
|
if x != nil {
|
|
return x.GatewayId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *GatewayCommandExecRequest) GetCommand() string {
|
|
if x != nil {
|
|
return x.Command
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *GatewayCommandExecRequest) GetExecId() uint32 {
|
|
if x != nil {
|
|
return x.ExecId
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *GatewayCommandExecRequest) GetStdin() []byte {
|
|
if x != nil {
|
|
return x.Stdin
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayCommandExecRequest) GetEnvironment() map[string]string {
|
|
if x != nil {
|
|
return x.Environment
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type GatewayCommandExecResponse struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Gateway ID.
|
|
// Deprecated: use gateway_id.
|
|
GatewayIdLegacy []byte `protobuf:"bytes,1,opt,name=gateway_id_legacy,json=gatewayIdLegacy,proto3" json:"gateway_id_legacy,omitempty"`
|
|
// Gateway ID.
|
|
GatewayId string `protobuf:"bytes,6,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"`
|
|
// Execution request ID.
|
|
ExecId uint32 `protobuf:"varint,7,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"`
|
|
}
|
|
|
|
func (x *GatewayCommandExecResponse) Reset() {
|
|
*x = GatewayCommandExecResponse{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[29]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *GatewayCommandExecResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GatewayCommandExecResponse) ProtoMessage() {}
|
|
|
|
func (x *GatewayCommandExecResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[29]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use GatewayCommandExecResponse.ProtoReflect.Descriptor instead.
|
|
func (*GatewayCommandExecResponse) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{29}
|
|
}
|
|
|
|
func (x *GatewayCommandExecResponse) GetGatewayIdLegacy() []byte {
|
|
if x != nil {
|
|
return x.GatewayIdLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayCommandExecResponse) GetGatewayId() string {
|
|
if x != nil {
|
|
return x.GatewayId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *GatewayCommandExecResponse) GetExecId() uint32 {
|
|
if x != nil {
|
|
return x.ExecId
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *GatewayCommandExecResponse) GetStdout() []byte {
|
|
if x != nil {
|
|
return x.Stdout
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayCommandExecResponse) GetStderr() []byte {
|
|
if x != nil {
|
|
return x.Stderr
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *GatewayCommandExecResponse) GetError() string {
|
|
if x != nil {
|
|
return x.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 {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Gateway ID.
|
|
// Deprecated: use gateway_id.
|
|
GatewayIdLegacy []byte `protobuf:"bytes,1,opt,name=gateway_id_legacy,json=gatewayIdLegacy,proto3" json:"gateway_id_legacy,omitempty"`
|
|
// Gateway ID.
|
|
GatewayId string `protobuf:"bytes,4,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"`
|
|
// Payload contains the raw payload.
|
|
Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"`
|
|
}
|
|
|
|
func (x *RawPacketForwarderEvent) Reset() {
|
|
*x = RawPacketForwarderEvent{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[30]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *RawPacketForwarderEvent) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*RawPacketForwarderEvent) ProtoMessage() {}
|
|
|
|
func (x *RawPacketForwarderEvent) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[30]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use RawPacketForwarderEvent.ProtoReflect.Descriptor instead.
|
|
func (*RawPacketForwarderEvent) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{30}
|
|
}
|
|
|
|
func (x *RawPacketForwarderEvent) GetGatewayIdLegacy() []byte {
|
|
if x != nil {
|
|
return x.GatewayIdLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *RawPacketForwarderEvent) GetGatewayId() string {
|
|
if x != nil {
|
|
return x.GatewayId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *RawPacketForwarderEvent) GetPayload() []byte {
|
|
if x != nil {
|
|
return x.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 {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Gateway ID.
|
|
// Deprecated: use gateway_id.
|
|
GatewayIdLegacy []byte `protobuf:"bytes,1,opt,name=gateway_id_legacy,json=gatewayIdLegacy,proto3" json:"gateway_id_legacy,omitempty"`
|
|
// Gateway ID.
|
|
GatewayId string `protobuf:"bytes,4,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"`
|
|
// Payload contains the raw payload.
|
|
Payload []byte `protobuf:"bytes,3,opt,name=payload,proto3" json:"payload,omitempty"`
|
|
}
|
|
|
|
func (x *RawPacketForwarderCommand) Reset() {
|
|
*x = RawPacketForwarderCommand{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[31]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *RawPacketForwarderCommand) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*RawPacketForwarderCommand) ProtoMessage() {}
|
|
|
|
func (x *RawPacketForwarderCommand) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[31]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use RawPacketForwarderCommand.ProtoReflect.Descriptor instead.
|
|
func (*RawPacketForwarderCommand) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{31}
|
|
}
|
|
|
|
func (x *RawPacketForwarderCommand) GetGatewayIdLegacy() []byte {
|
|
if x != nil {
|
|
return x.GatewayIdLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *RawPacketForwarderCommand) GetGatewayId() string {
|
|
if x != nil {
|
|
return x.GatewayId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *RawPacketForwarderCommand) GetPayload() []byte {
|
|
if x != nil {
|
|
return x.Payload
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// ConnState contains the connection state of a gateway.
|
|
type ConnState struct {
|
|
state protoimpl.MessageState
|
|
sizeCache protoimpl.SizeCache
|
|
unknownFields protoimpl.UnknownFields
|
|
|
|
// Gateway ID.
|
|
// Deprecated: use gateway_id.
|
|
GatewayIdLegacy []byte `protobuf:"bytes,1,opt,name=gateway_id_legacy,json=gatewayIdLegacy,proto3" json:"gateway_id_legacy,omitempty"`
|
|
// Gateway ID.
|
|
GatewayId string `protobuf:"bytes,3,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"`
|
|
State ConnState_State `protobuf:"varint,2,opt,name=state,proto3,enum=gw.ConnState_State" json:"state,omitempty"`
|
|
}
|
|
|
|
func (x *ConnState) Reset() {
|
|
*x = ConnState{}
|
|
if protoimpl.UnsafeEnabled {
|
|
mi := &file_gw_gw_proto_msgTypes[32]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
}
|
|
|
|
func (x *ConnState) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ConnState) ProtoMessage() {}
|
|
|
|
func (x *ConnState) ProtoReflect() protoreflect.Message {
|
|
mi := &file_gw_gw_proto_msgTypes[32]
|
|
if protoimpl.UnsafeEnabled && x != nil {
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
if ms.LoadMessageInfo() == nil {
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
return ms
|
|
}
|
|
return mi.MessageOf(x)
|
|
}
|
|
|
|
// Deprecated: Use ConnState.ProtoReflect.Descriptor instead.
|
|
func (*ConnState) Descriptor() ([]byte, []int) {
|
|
return file_gw_gw_proto_rawDescGZIP(), []int{32}
|
|
}
|
|
|
|
func (x *ConnState) GetGatewayIdLegacy() []byte {
|
|
if x != nil {
|
|
return x.GatewayIdLegacy
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *ConnState) GetGatewayId() string {
|
|
if x != nil {
|
|
return x.GatewayId
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *ConnState) GetState() ConnState_State {
|
|
if x != nil {
|
|
return x.State
|
|
}
|
|
return ConnState_OFFLINE
|
|
}
|
|
|
|
var File_gw_gw_proto protoreflect.FileDescriptor
|
|
|
|
var file_gw_gw_proto_rawDesc = []byte{
|
|
0x0a, 0x0b, 0x67, 0x77, 0x2f, 0x67, 0x77, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x02, 0x67,
|
|
0x77, 0x1a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
|
|
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
|
|
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
|
|
0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
|
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
|
|
0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
|
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e,
|
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa8, 0x01, 0x0a, 0x0a, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61,
|
|
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x04, 0x6c, 0x6f, 0x72, 0x61, 0x18, 0x03, 0x20, 0x01,
|
|
0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x77, 0x2e, 0x4c, 0x6f, 0x72, 0x61, 0x4d, 0x6f, 0x64, 0x75,
|
|
0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x6f,
|
|
0x72, 0x61, 0x12, 0x29, 0x0a, 0x03, 0x66, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
|
0x15, 0x2e, 0x67, 0x77, 0x2e, 0x46, 0x73, 0x6b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69,
|
|
0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x03, 0x66, 0x73, 0x6b, 0x12, 0x33, 0x0a,
|
|
0x07, 0x6c, 0x72, 0x5f, 0x66, 0x68, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
|
|
0x2e, 0x67, 0x77, 0x2e, 0x4c, 0x72, 0x46, 0x68, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61,
|
|
0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x06, 0x6c, 0x72, 0x46, 0x68,
|
|
0x73, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73,
|
|
0x22, 0xe1, 0x02, 0x0a, 0x12, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78, 0x49, 0x6e, 0x66,
|
|
0x6f, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75,
|
|
0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71,
|
|
0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x32, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74,
|
|
0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
|
|
0x6f, 0x6e, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d,
|
|
0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x14, 0x6c, 0x6f, 0x72,
|
|
0x61, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66,
|
|
0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x77, 0x2e, 0x4c, 0x6f, 0x72,
|
|
0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48,
|
|
0x00, 0x52, 0x12, 0x6c, 0x6f, 0x72, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f,
|
|
0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x47, 0x0a, 0x13, 0x66, 0x73, 0x6b, 0x5f, 0x6d, 0x6f, 0x64,
|
|
0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01,
|
|
0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x77, 0x2e, 0x46, 0x73, 0x6b, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
|
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x11, 0x66, 0x73, 0x6b,
|
|
0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x51,
|
|
0x0a, 0x17, 0x6c, 0x72, 0x5f, 0x66, 0x68, 0x73, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61,
|
|
0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
|
0x18, 0x2e, 0x67, 0x77, 0x2e, 0x4c, 0x72, 0x46, 0x68, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
|
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x14, 0x6c, 0x72, 0x46,
|
|
0x68, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66,
|
|
0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
|
|
0x69, 0x6e, 0x66, 0x6f, 0x22, 0x5c, 0x0a, 0x0c, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78,
|
|
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63,
|
|
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e,
|
|
0x63, 0x79, 0x12, 0x2e, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
|
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x77, 0x2e, 0x4d, 0x6f, 0x64, 0x75,
|
|
0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69,
|
|
0x6f, 0x6e, 0x22, 0xe9, 0x01, 0x0a, 0x12, 0x4c, 0x6f, 0x72, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
|
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e,
|
|
0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x61,
|
|
0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x70, 0x72, 0x65, 0x61,
|
|
0x64, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
|
|
0x0d, 0x52, 0x0f, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74,
|
|
0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f,
|
|
0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f,
|
|
0x64, 0x65, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x29, 0x0a, 0x09,
|
|
0x63, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32,
|
|
0x0c, 0x2e, 0x67, 0x77, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x65, 0x52, 0x08, 0x63,
|
|
0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x16, 0x70, 0x6f, 0x6c, 0x61, 0x72,
|
|
0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
|
|
0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x70, 0x6f, 0x6c, 0x61, 0x72, 0x69, 0x7a,
|
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x60,
|
|
0x0a, 0x11, 0x46, 0x73, 0x6b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
|
|
0x6e, 0x66, 0x6f, 0x12, 0x2f, 0x0a, 0x13, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79,
|
|
0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d,
|
|
0x52, 0x12, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x76, 0x69, 0x61,
|
|
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x72, 0x61, 0x74, 0x65,
|
|
0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x72, 0x61, 0x74, 0x65,
|
|
0x22, 0xc2, 0x01, 0x0a, 0x14, 0x4c, 0x72, 0x46, 0x68, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
|
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x36, 0x0a, 0x17, 0x6f, 0x70, 0x65,
|
|
0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x77,
|
|
0x69, 0x64, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x6f, 0x70, 0x65, 0x72,
|
|
0x61, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x57, 0x69, 0x64, 0x74,
|
|
0x68, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c,
|
|
0x65, 0x67, 0x61, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x64,
|
|
0x65, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x29, 0x0a, 0x09, 0x63,
|
|
0x6f, 0x64, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0c,
|
|
0x2e, 0x67, 0x77, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x65, 0x52, 0x08, 0x63, 0x6f,
|
|
0x64, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x69, 0x64, 0x5f, 0x73,
|
|
0x74, 0x65, 0x70, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x67, 0x72, 0x69, 0x64,
|
|
0x53, 0x74, 0x65, 0x70, 0x73, 0x22, 0x78, 0x0a, 0x16, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74,
|
|
0x65, 0x64, 0x46, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
|
|
0x22, 0x0a, 0x0d, 0x61, 0x65, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78,
|
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x65, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x6e,
|
|
0x64, 0x65, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64,
|
|
0x5f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79,
|
|
0x70, 0x74, 0x65, 0x64, 0x4e, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x70, 0x67, 0x61, 0x5f, 0x69,
|
|
0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x70, 0x67, 0x61, 0x49, 0x64, 0x22,
|
|
0x44, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x69, 0x6e, 0x46, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65,
|
|
0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20,
|
|
0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
|
|
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
|
|
0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xc5, 0x09, 0x0a, 0x0c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61,
|
|
0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61,
|
|
0x79, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
|
|
0x0c, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x4c, 0x65, 0x67, 0x61,
|
|
0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64,
|
|
0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49,
|
|
0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
|
0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
|
|
0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d,
|
|
0x65, 0x12, 0x2c, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
|
|
0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63,
|
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
|
|
0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
|
|
0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56,
|
|
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x78, 0x5f, 0x70, 0x61, 0x63,
|
|
0x6b, 0x65, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20,
|
|
0x01, 0x28, 0x0d, 0x52, 0x11, 0x72, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65,
|
|
0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x72, 0x78, 0x5f, 0x70, 0x61, 0x63,
|
|
0x6b, 0x65, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x6f, 0x6b,
|
|
0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x72, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74,
|
|
0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x4f, 0x6b, 0x12, 0x2e, 0x0a, 0x13, 0x74,
|
|
0x78, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76,
|
|
0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x74, 0x78, 0x50, 0x61, 0x63, 0x6b,
|
|
0x65, 0x74, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x74,
|
|
0x78, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x65, 0x6d, 0x69, 0x74, 0x74, 0x65,
|
|
0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x74, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65,
|
|
0x74, 0x73, 0x45, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x09, 0x6d, 0x65, 0x74,
|
|
0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67,
|
|
0x77, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x4d,
|
|
0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65,
|
|
0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x64, 0x0a, 0x18, 0x74, 0x78, 0x5f, 0x70, 0x61, 0x63,
|
|
0x6b, 0x65, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e,
|
|
0x63, 0x79, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x77, 0x2e, 0x47, 0x61,
|
|
0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x54, 0x78, 0x50, 0x61, 0x63,
|
|
0x6b, 0x65, 0x74, 0x73, 0x50, 0x65, 0x72, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79,
|
|
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, 0x74, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73,
|
|
0x50, 0x65, 0x72, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x64, 0x0a, 0x18,
|
|
0x72, 0x78, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66,
|
|
0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b,
|
|
0x2e, 0x67, 0x77, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73,
|
|
0x2e, 0x52, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x50, 0x65, 0x72, 0x46, 0x72, 0x65,
|
|
0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, 0x72, 0x78, 0x50,
|
|
0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x50, 0x65, 0x72, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e,
|
|
0x63, 0x79, 0x12, 0x51, 0x0a, 0x19, 0x74, 0x78, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73,
|
|
0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
|
|
0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x77, 0x2e, 0x50, 0x65, 0x72, 0x4d, 0x6f,
|
|
0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x16, 0x74,
|
|
0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x75, 0x6c,
|
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x19, 0x72, 0x78, 0x5f, 0x70, 0x61, 0x63, 0x6b,
|
|
0x65, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69,
|
|
0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x77, 0x2e, 0x50, 0x65,
|
|
0x72, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74,
|
|
0x52, 0x16, 0x72, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x50, 0x65, 0x72, 0x4d, 0x6f,
|
|
0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x15, 0x74, 0x78, 0x5f, 0x70,
|
|
0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
|
|
0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x77, 0x2e, 0x47, 0x61, 0x74,
|
|
0x65, 0x77, 0x61, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x54, 0x78, 0x50, 0x61, 0x63, 0x6b,
|
|
0x65, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72,
|
|
0x79, 0x52, 0x12, 0x74, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53,
|
|
0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74,
|
|
0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
|
|
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
|
|
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
|
|
0x38, 0x01, 0x1a, 0x48, 0x0a, 0x1a, 0x54, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x50,
|
|
0x65, 0x72, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79,
|
|
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b,
|
|
0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
|
|
0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x48, 0x0a, 0x1a,
|
|
0x52, 0x78, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x50, 0x65, 0x72, 0x46, 0x72, 0x65, 0x71,
|
|
0x75, 0x65, 0x6e, 0x63, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
|
|
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
|
|
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c,
|
|
0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x45, 0x0a, 0x17, 0x54, 0x78, 0x50, 0x61, 0x63, 0x6b,
|
|
0x65, 0x74, 0x73, 0x50, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72,
|
|
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
|
|
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
|
|
0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a,
|
|
0x12, 0x50, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
|
|
0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f,
|
|
0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x77, 0x2e, 0x4d, 0x6f, 0x64,
|
|
0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74,
|
|
0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
|
|
0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xd2, 0x06, 0x0a, 0x12, 0x55, 0x70,
|
|
0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79,
|
|
0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01,
|
|
0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12,
|
|
0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
|
|
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
|
0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12,
|
|
0x4a, 0x0a, 0x14, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x67, 0x70,
|
|
0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
|
|
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
|
0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x69,
|
|
0x6e, 0x63, 0x65, 0x47, 0x70, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x72,
|
|
0x73, 0x73, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x73, 0x73, 0x69, 0x12,
|
|
0x19, 0x0a, 0x08, 0x6c, 0x6f, 0x72, 0x61, 0x5f, 0x73, 0x6e, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28,
|
|
0x01, 0x52, 0x07, 0x6c, 0x6f, 0x72, 0x61, 0x53, 0x6e, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68,
|
|
0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x63, 0x68, 0x61,
|
|
0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x66, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e,
|
|
0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x66, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12,
|
|
0x14, 0x0a, 0x05, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05,
|
|
0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61,
|
|
0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x12,
|
|
0x2c, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28,
|
|
0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74,
|
|
0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a,
|
|
0x13, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f,
|
|
0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x67, 0x77, 0x2e,
|
|
0x46, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x79, 0x70,
|
|
0x65, 0x52, 0x11, 0x66, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
|
|
0x54, 0x79, 0x70, 0x65, 0x12, 0x56, 0x0a, 0x18, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65,
|
|
0x64, 0x5f, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
|
|
0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x77, 0x2e, 0x45, 0x6e, 0x63, 0x72,
|
|
0x79, 0x70, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
|
|
0x6d, 0x70, 0x48, 0x00, 0x52, 0x16, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x46,
|
|
0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4a, 0x0a, 0x14,
|
|
0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73,
|
|
0x74, 0x61, 0x6d, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x77, 0x2e,
|
|
0x50, 0x6c, 0x61, 0x69, 0x6e, 0x46, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
|
|
0x6d, 0x70, 0x48, 0x00, 0x52, 0x12, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x46, 0x69, 0x6e, 0x65, 0x54,
|
|
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74,
|
|
0x65, 0x78, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
|
|
0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18,
|
|
0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12,
|
|
0x2c, 0x0a, 0x0a, 0x63, 0x72, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x11, 0x20,
|
|
0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x67, 0x77, 0x2e, 0x43, 0x52, 0x43, 0x53, 0x74, 0x61, 0x74,
|
|
0x75, 0x73, 0x52, 0x09, 0x63, 0x72, 0x63, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x40, 0x0a,
|
|
0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32,
|
|
0x24, 0x2e, 0x67, 0x77, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x78, 0x49, 0x6e, 0x66,
|
|
0x6f, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
|
|
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a,
|
|
0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79,
|
|
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
|
|
0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
|
|
0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x10, 0x0a, 0x0e,
|
|
0x66, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xee,
|
|
0x03, 0x0a, 0x0c, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12,
|
|
0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
|
|
0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x1b,
|
|
0x0a, 0x09, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
|
|
0x0d, 0x52, 0x08, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74,
|
|
0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
|
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
|
|
0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x4a, 0x0a, 0x14, 0x74,
|
|
0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x67, 0x70, 0x73, 0x5f, 0x65, 0x70,
|
|
0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
|
|
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,
|
|
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x47,
|
|
0x70, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x53, 0x0a, 0x19, 0x66, 0x69, 0x6e, 0x65, 0x5f,
|
|
0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, 0x67, 0x70, 0x73, 0x5f, 0x65,
|
|
0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f,
|
|
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72,
|
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x66, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53,
|
|
0x69, 0x6e, 0x63, 0x65, 0x47, 0x70, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04,
|
|
0x72, 0x73, 0x73, 0x69, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x73, 0x73, 0x69,
|
|
0x12, 0x10, 0x0a, 0x03, 0x73, 0x6e, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x73,
|
|
0x6e, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
|
|
0x0d, 0x52, 0x05, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6e, 0x74, 0x65,
|
|
0x6e, 0x6e, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x61, 0x6e, 0x74, 0x65, 0x6e,
|
|
0x6e, 0x61, 0x12, 0x2c, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a,
|
|
0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f,
|
|
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
|
0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28,
|
|
0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65,
|
|
0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67,
|
|
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53,
|
|
0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22,
|
|
0xaf, 0x05, 0x0a, 0x14, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78, 0x49, 0x6e,
|
|
0x66, 0x6f, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65,
|
|
0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x67, 0x61,
|
|
0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75,
|
|
0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71,
|
|
0x75, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x06,
|
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x0a, 0x6d,
|
|
0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32,
|
|
0x12, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74,
|
|
0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12,
|
|
0x4a, 0x0a, 0x14, 0x6c, 0x6f, 0x72, 0x61, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69,
|
|
0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
|
|
0x67, 0x77, 0x2e, 0x4c, 0x6f, 0x72, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f,
|
|
0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x12, 0x6c, 0x6f, 0x72, 0x61, 0x4d, 0x6f, 0x64,
|
|
0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x47, 0x0a, 0x13, 0x66,
|
|
0x73, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e,
|
|
0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x77, 0x2e, 0x46, 0x73,
|
|
0x6b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x48,
|
|
0x00, 0x52, 0x11, 0x66, 0x73, 0x6b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
|
|
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x0a, 0x20,
|
|
0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6e,
|
|
0x74, 0x65, 0x6e, 0x6e, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x61, 0x6e, 0x74,
|
|
0x65, 0x6e, 0x6e, 0x61, 0x12, 0x2a, 0x0a, 0x06, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x0c,
|
|
0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x67, 0x77, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69,
|
|
0x6e, 0x6b, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67,
|
|
0x12, 0x53, 0x0a, 0x17, 0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6c, 0x79, 0x5f,
|
|
0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28,
|
|
0x0b, 0x32, 0x19, 0x2e, 0x67, 0x77, 0x2e, 0x49, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65,
|
|
0x6c, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x01, 0x52, 0x15,
|
|
0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6c, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e,
|
|
0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x41, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x74,
|
|
0x69, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b,
|
|
0x32, 0x13, 0x2e, 0x67, 0x77, 0x2e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e,
|
|
0x67, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x01, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x69,
|
|
0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4b, 0x0a, 0x15, 0x67, 0x70, 0x73, 0x5f,
|
|
0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x66,
|
|
0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x77, 0x2e, 0x47, 0x50, 0x53,
|
|
0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x48,
|
|
0x01, 0x52, 0x12, 0x67, 0x70, 0x73, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x69, 0x6e,
|
|
0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
|
|
0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42,
|
|
0x11, 0x0a, 0x0f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e,
|
|
0x66, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x66,
|
|
0x6f, 0x22, 0xe2, 0x01, 0x0a, 0x0e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78,
|
|
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63,
|
|
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e,
|
|
0x63, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
|
|
0x05, 0x52, 0x05, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x75,
|
|
0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67,
|
|
0x77, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d, 0x6f,
|
|
0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x61, 0x72,
|
|
0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x18,
|
|
0x0a, 0x07, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52,
|
|
0x07, 0x61, 0x6e, 0x74, 0x65, 0x6e, 0x6e, 0x61, 0x12, 0x22, 0x0a, 0x06, 0x74, 0x69, 0x6d, 0x69,
|
|
0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x77, 0x2e, 0x54, 0x69,
|
|
0x6d, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x74, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x18, 0x0a, 0x07,
|
|
0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63,
|
|
0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0xb9, 0x01, 0x0a, 0x06, 0x54, 0x69, 0x6d, 0x69, 0x6e,
|
|
0x67, 0x12, 0x3d, 0x0a, 0x0b, 0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6c, 0x79,
|
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x77, 0x2e, 0x49, 0x6d, 0x6d, 0x65,
|
|
0x64, 0x69, 0x61, 0x74, 0x65, 0x6c, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66,
|
|
0x6f, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6c, 0x79,
|
|
0x12, 0x2b, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
|
0x13, 0x2e, 0x67, 0x77, 0x2e, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67,
|
|
0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x35, 0x0a,
|
|
0x09, 0x67, 0x70, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
|
|
0x32, 0x16, 0x2e, 0x67, 0x77, 0x2e, 0x47, 0x50, 0x53, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69,
|
|
0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x08, 0x67, 0x70, 0x73, 0x45,
|
|
0x70, 0x6f, 0x63, 0x68, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65,
|
|
0x72, 0x73, 0x22, 0x17, 0x0a, 0x15, 0x49, 0x6d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6c,
|
|
0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x42, 0x0a, 0x0f, 0x44,
|
|
0x65, 0x6c, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2f,
|
|
0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
|
|
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
|
|
0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x22,
|
|
0x60, 0x0a, 0x12, 0x47, 0x50, 0x53, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x69, 0x6e,
|
|
0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4a, 0x0a, 0x14, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x69,
|
|
0x6e, 0x63, 0x65, 0x5f, 0x67, 0x70, 0x73, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20,
|
|
0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
|
|
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11,
|
|
0x74, 0x69, 0x6d, 0x65, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x47, 0x70, 0x73, 0x45, 0x70, 0x6f, 0x63,
|
|
0x68, 0x22, 0x80, 0x02, 0x0a, 0x0b, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x72, 0x61, 0x6d,
|
|
0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x68, 0x79, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64,
|
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x68, 0x79, 0x50, 0x61, 0x79, 0x6c, 0x6f,
|
|
0x61, 0x64, 0x12, 0x3c, 0x0a, 0x0e, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x6c, 0x65,
|
|
0x67, 0x61, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x77, 0x2e,
|
|
0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x65, 0x67, 0x61,
|
|
0x63, 0x79, 0x52, 0x0c, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79,
|
|
0x12, 0x3c, 0x0a, 0x0e, 0x72, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x6c, 0x65, 0x67, 0x61,
|
|
0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x77, 0x2e, 0x55, 0x70,
|
|
0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79,
|
|
0x52, 0x0c, 0x72, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x29,
|
|
0x0a, 0x07, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
|
0x10, 0x2e, 0x67, 0x77, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78, 0x49, 0x6e, 0x66,
|
|
0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x07, 0x72, 0x78, 0x5f,
|
|
0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x77, 0x2e,
|
|
0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x72, 0x78,
|
|
0x49, 0x6e, 0x66, 0x6f, 0x22, 0x87, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x46,
|
|
0x72, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x68, 0x79, 0x5f, 0x70,
|
|
0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x68,
|
|
0x79, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x29, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x69,
|
|
0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x77, 0x2e, 0x55,
|
|
0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49,
|
|
0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x07, 0x72, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03,
|
|
0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x77, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b,
|
|
0x52, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x72, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd6,
|
|
0x01, 0x0a, 0x0d, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x72, 0x61, 0x6d, 0x65,
|
|
0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18,
|
|
0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x49,
|
|
0x64, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64,
|
|
0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x64,
|
|
0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12,
|
|
0x2b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15,
|
|
0x2e, 0x67, 0x77, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x72, 0x61, 0x6d,
|
|
0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2a, 0x0a, 0x11,
|
|
0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63,
|
|
0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
|
|
0x49, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65,
|
|
0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61,
|
|
0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e,
|
|
0x6c, 0x69, 0x6e, 0x6b, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x0a,
|
|
0x0b, 0x70, 0x68, 0x79, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01,
|
|
0x28, 0x0c, 0x52, 0x0a, 0x70, 0x68, 0x79, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x3e,
|
|
0x0a, 0x0e, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79,
|
|
0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x77, 0x2e, 0x44, 0x6f, 0x77, 0x6e,
|
|
0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79,
|
|
0x52, 0x0c, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x2b,
|
|
0x0a, 0x07, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
|
0x12, 0x2e, 0x67, 0x77, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78, 0x49,
|
|
0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd6, 0x01, 0x0a, 0x0d,
|
|
0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x12, 0x2a, 0x0a,
|
|
0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61,
|
|
0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61,
|
|
0x79, 0x49, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74,
|
|
0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67,
|
|
0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x6f, 0x77, 0x6e,
|
|
0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x64,
|
|
0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x64, 0x6f, 0x77,
|
|
0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x18,
|
|
0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x49,
|
|
0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73,
|
|
0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x77, 0x2e, 0x44, 0x6f, 0x77, 0x6e,
|
|
0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69,
|
|
0x74, 0x65, 0x6d, 0x73, 0x22, 0x3c, 0x0a, 0x11, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b,
|
|
0x54, 0x78, 0x41, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x74, 0x61,
|
|
0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x67, 0x77, 0x2e, 0x54,
|
|
0x78, 0x41, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
|
|
0x75, 0x73, 0x22, 0xf3, 0x01, 0x0a, 0x14, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f,
|
|
0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x67,
|
|
0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79,
|
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49,
|
|
0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77,
|
|
0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74,
|
|
0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
|
|
0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
|
|
0x12, 0x34, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03,
|
|
0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x77, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43,
|
|
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x63, 0x68,
|
|
0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f,
|
|
0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
|
|
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
|
|
0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x73,
|
|
0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xe3, 0x02, 0x0a, 0x14, 0x43, 0x68, 0x61,
|
|
0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
|
|
0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01,
|
|
0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x12,
|
|
0x3f, 0x0a, 0x11, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65,
|
|
0x67, 0x61, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x63, 0x6f, 0x6d,
|
|
0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10,
|
|
0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79,
|
|
0x12, 0x50, 0x0a, 0x16, 0x6c, 0x6f, 0x72, 0x61, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74,
|
|
0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
|
|
0x32, 0x18, 0x2e, 0x67, 0x77, 0x2e, 0x4c, 0x6f, 0x72, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61,
|
|
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x14, 0x6c, 0x6f,
|
|
0x72, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66,
|
|
0x69, 0x67, 0x12, 0x4d, 0x0a, 0x15, 0x66, 0x73, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61,
|
|
0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28,
|
|
0x0b, 0x32, 0x17, 0x2e, 0x67, 0x77, 0x2e, 0x46, 0x73, 0x6b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61,
|
|
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x13, 0x66, 0x73,
|
|
0x6b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69,
|
|
0x67, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d,
|
|
0x52, 0x05, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x6d, 0x6f, 0x64,
|
|
0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x64, 0x65,
|
|
0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x13, 0x0a, 0x11, 0x6d, 0x6f, 0x64,
|
|
0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x8c,
|
|
0x01, 0x0a, 0x14, 0x4c, 0x6f, 0x72, 0x61, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f,
|
|
0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x62, 0x61, 0x6e, 0x64, 0x77,
|
|
0x69, 0x64, 0x74, 0x68, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
|
|
0x0d, 0x52, 0x0f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x4c, 0x65, 0x67, 0x61,
|
|
0x63, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18,
|
|
0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68,
|
|
0x12, 0x2b, 0x0a, 0x11, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61,
|
|
0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x10, 0x73, 0x70, 0x72,
|
|
0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, 0x78, 0x0a,
|
|
0x13, 0x46, 0x73, 0x6b, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
|
|
0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74,
|
|
0x68, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f,
|
|
0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12,
|
|
0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01,
|
|
0x28, 0x0d, 0x52, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x18, 0x0a,
|
|
0x07, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07,
|
|
0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x22, 0xc1, 0x02, 0x0a, 0x19, 0x47, 0x61, 0x74, 0x65,
|
|
0x77, 0x61, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x78, 0x65, 0x63, 0x52, 0x65,
|
|
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
|
|
0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
|
|
0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63,
|
|
0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18,
|
|
0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64,
|
|
0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
|
|
0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x78,
|
|
0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x65, 0x78, 0x65,
|
|
0x63, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01,
|
|
0x28, 0x0c, 0x52, 0x05, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x12, 0x50, 0x0a, 0x0b, 0x65, 0x6e, 0x76,
|
|
0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e,
|
|
0x2e, 0x67, 0x77, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
|
|
0x6e, 0x64, 0x45, 0x78, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6e,
|
|
0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b,
|
|
0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x3e, 0x0a, 0x10, 0x45,
|
|
0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
|
|
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
|
|
0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
|
|
0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc6, 0x01, 0x0a, 0x1a,
|
|
0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x45, 0x78,
|
|
0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61,
|
|
0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x18,
|
|
0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64,
|
|
0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61,
|
|
0x79, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65,
|
|
0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x78, 0x65, 0x63, 0x5f, 0x69, 0x64,
|
|
0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x65, 0x78, 0x65, 0x63, 0x49, 0x64, 0x12, 0x16,
|
|
0x0a, 0x06, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06,
|
|
0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72,
|
|
0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x12, 0x14,
|
|
0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65,
|
|
0x72, 0x72, 0x6f, 0x72, 0x22, 0x7e, 0x0a, 0x17, 0x52, 0x61, 0x77, 0x50, 0x61, 0x63, 0x6b, 0x65,
|
|
0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12,
|
|
0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x65,
|
|
0x67, 0x61, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x67, 0x61, 0x74, 0x65,
|
|
0x77, 0x61, 0x79, 0x49, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67,
|
|
0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
|
|
0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61,
|
|
0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79,
|
|
0x6c, 0x6f, 0x61, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x19, 0x52, 0x61, 0x77, 0x50, 0x61, 0x63, 0x6b,
|
|
0x65, 0x74, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61,
|
|
0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64,
|
|
0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x67,
|
|
0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x1d,
|
|
0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01,
|
|
0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a,
|
|
0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07,
|
|
0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xa3, 0x01, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x6e,
|
|
0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
|
|
0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c,
|
|
0x52, 0x0f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x4c, 0x65, 0x67, 0x61, 0x63,
|
|
0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18,
|
|
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64,
|
|
0x12, 0x29, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
|
|
0x13, 0x2e, 0x67, 0x77, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53,
|
|
0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x20, 0x0a, 0x05, 0x53,
|
|
0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x46, 0x46, 0x4c, 0x49, 0x4e, 0x45, 0x10,
|
|
0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x2a, 0xb5, 0x01,
|
|
0x0a, 0x08, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x52,
|
|
0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06,
|
|
0x43, 0x52, 0x5f, 0x34, 0x5f, 0x35, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x34,
|
|
0x5f, 0x36, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x34, 0x5f, 0x37, 0x10, 0x03,
|
|
0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x34, 0x5f, 0x38, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06,
|
|
0x43, 0x52, 0x5f, 0x33, 0x5f, 0x38, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x32,
|
|
0x5f, 0x36, 0x10, 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x31, 0x5f, 0x34, 0x10, 0x07,
|
|
0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x5f, 0x31, 0x5f, 0x36, 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06,
|
|
0x43, 0x52, 0x5f, 0x35, 0x5f, 0x36, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x52, 0x5f, 0x4c,
|
|
0x49, 0x5f, 0x34, 0x5f, 0x35, 0x10, 0x0a, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x52, 0x5f, 0x4c, 0x49,
|
|
0x5f, 0x34, 0x5f, 0x36, 0x10, 0x0b, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x52, 0x5f, 0x4c, 0x49, 0x5f,
|
|
0x34, 0x5f, 0x38, 0x10, 0x0c, 0x2a, 0x3b, 0x0a, 0x0e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e,
|
|
0x6b, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4d, 0x4d, 0x45, 0x44,
|
|
0x49, 0x41, 0x54, 0x45, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x4c, 0x41,
|
|
0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x50, 0x53, 0x5f, 0x45, 0x50, 0x4f, 0x43, 0x48,
|
|
0x10, 0x02, 0x2a, 0x37, 0x0a, 0x11, 0x46, 0x69, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
|
|
0x61, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10,
|
|
0x00, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x45, 0x44, 0x10, 0x01,
|
|
0x12, 0x09, 0x0a, 0x05, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x2a, 0x30, 0x0a, 0x09, 0x43,
|
|
0x52, 0x43, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, 0x5f, 0x43,
|
|
0x52, 0x43, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x41, 0x44, 0x5f, 0x43, 0x52, 0x43, 0x10,
|
|
0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x43, 0x5f, 0x4f, 0x4b, 0x10, 0x02, 0x2a, 0xbc, 0x01,
|
|
0x0a, 0x0b, 0x54, 0x78, 0x41, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a,
|
|
0x07, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b,
|
|
0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x02,
|
|
0x12, 0x0d, 0x0a, 0x09, 0x54, 0x4f, 0x4f, 0x5f, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x03, 0x12,
|
|
0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x43,
|
|
0x4b, 0x45, 0x54, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49,
|
|
0x4f, 0x4e, 0x5f, 0x42, 0x45, 0x41, 0x43, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x54,
|
|
0x58, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x58, 0x5f, 0x50,
|
|
0x4f, 0x57, 0x45, 0x52, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x50, 0x53, 0x5f, 0x55, 0x4e,
|
|
0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x51, 0x55, 0x45, 0x55,
|
|
0x45, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45,
|
|
0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x0a, 0x42, 0x55, 0x0a, 0x14,
|
|
0x69, 0x6f, 0x2e, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2e, 0x61, 0x70,
|
|
0x69, 0x2e, 0x67, 0x77, 0x42, 0x0c, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x50, 0x72, 0x6f,
|
|
0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
|
|
0x2f, 0x63, 0x68, 0x69, 0x72, 0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x63, 0x68, 0x69, 0x72,
|
|
0x70, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x34,
|
|
0x2f, 0x67, 0x77, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
}
|
|
|
|
var (
|
|
file_gw_gw_proto_rawDescOnce sync.Once
|
|
file_gw_gw_proto_rawDescData = file_gw_gw_proto_rawDesc
|
|
)
|
|
|
|
func file_gw_gw_proto_rawDescGZIP() []byte {
|
|
file_gw_gw_proto_rawDescOnce.Do(func() {
|
|
file_gw_gw_proto_rawDescData = protoimpl.X.CompressGZIP(file_gw_gw_proto_rawDescData)
|
|
})
|
|
return file_gw_gw_proto_rawDescData
|
|
}
|
|
|
|
var file_gw_gw_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
|
|
var file_gw_gw_proto_msgTypes = make([]protoimpl.MessageInfo, 39)
|
|
var file_gw_gw_proto_goTypes = []interface{}{
|
|
(CodeRate)(0), // 0: gw.CodeRate
|
|
(DownlinkTiming)(0), // 1: gw.DownlinkTiming
|
|
(FineTimestampType)(0), // 2: gw.FineTimestampType
|
|
(CRCStatus)(0), // 3: gw.CRCStatus
|
|
(TxAckStatus)(0), // 4: gw.TxAckStatus
|
|
(ConnState_State)(0), // 5: gw.ConnState.State
|
|
(*Modulation)(nil), // 6: gw.Modulation
|
|
(*UplinkTxInfoLegacy)(nil), // 7: gw.UplinkTxInfoLegacy
|
|
(*UplinkTxInfo)(nil), // 8: gw.UplinkTxInfo
|
|
(*LoraModulationInfo)(nil), // 9: gw.LoraModulationInfo
|
|
(*FskModulationInfo)(nil), // 10: gw.FskModulationInfo
|
|
(*LrFhssModulationInfo)(nil), // 11: gw.LrFhssModulationInfo
|
|
(*EncryptedFineTimestamp)(nil), // 12: gw.EncryptedFineTimestamp
|
|
(*PlainFineTimestamp)(nil), // 13: gw.PlainFineTimestamp
|
|
(*GatewayStats)(nil), // 14: gw.GatewayStats
|
|
(*PerModulationCount)(nil), // 15: gw.PerModulationCount
|
|
(*UplinkRxInfoLegacy)(nil), // 16: gw.UplinkRxInfoLegacy
|
|
(*UplinkRxInfo)(nil), // 17: gw.UplinkRxInfo
|
|
(*DownlinkTxInfoLegacy)(nil), // 18: gw.DownlinkTxInfoLegacy
|
|
(*DownlinkTxInfo)(nil), // 19: gw.DownlinkTxInfo
|
|
(*Timing)(nil), // 20: gw.Timing
|
|
(*ImmediatelyTimingInfo)(nil), // 21: gw.ImmediatelyTimingInfo
|
|
(*DelayTimingInfo)(nil), // 22: gw.DelayTimingInfo
|
|
(*GPSEpochTimingInfo)(nil), // 23: gw.GPSEpochTimingInfo
|
|
(*UplinkFrame)(nil), // 24: gw.UplinkFrame
|
|
(*UplinkFrameSet)(nil), // 25: gw.UplinkFrameSet
|
|
(*DownlinkFrame)(nil), // 26: gw.DownlinkFrame
|
|
(*DownlinkFrameItem)(nil), // 27: gw.DownlinkFrameItem
|
|
(*DownlinkTxAck)(nil), // 28: gw.DownlinkTxAck
|
|
(*DownlinkTxAckItem)(nil), // 29: gw.DownlinkTxAckItem
|
|
(*GatewayConfiguration)(nil), // 30: gw.GatewayConfiguration
|
|
(*ChannelConfiguration)(nil), // 31: gw.ChannelConfiguration
|
|
(*LoraModulationConfig)(nil), // 32: gw.LoraModulationConfig
|
|
(*FskModulationConfig)(nil), // 33: gw.FskModulationConfig
|
|
(*GatewayCommandExecRequest)(nil), // 34: gw.GatewayCommandExecRequest
|
|
(*GatewayCommandExecResponse)(nil), // 35: gw.GatewayCommandExecResponse
|
|
(*RawPacketForwarderEvent)(nil), // 36: gw.RawPacketForwarderEvent
|
|
(*RawPacketForwarderCommand)(nil), // 37: gw.RawPacketForwarderCommand
|
|
(*ConnState)(nil), // 38: gw.ConnState
|
|
nil, // 39: gw.GatewayStats.MetaDataEntry
|
|
nil, // 40: gw.GatewayStats.TxPacketsPerFrequencyEntry
|
|
nil, // 41: gw.GatewayStats.RxPacketsPerFrequencyEntry
|
|
nil, // 42: gw.GatewayStats.TxPacketsPerStatusEntry
|
|
nil, // 43: gw.UplinkRxInfoLegacy.MetadataEntry
|
|
nil, // 44: gw.GatewayCommandExecRequest.EnvironmentEntry
|
|
(common.Modulation)(0), // 45: common.Modulation
|
|
(*timestamppb.Timestamp)(nil), // 46: google.protobuf.Timestamp
|
|
(*common.Location)(nil), // 47: common.Location
|
|
(*durationpb.Duration)(nil), // 48: google.protobuf.Duration
|
|
(*structpb.Struct)(nil), // 49: google.protobuf.Struct
|
|
}
|
|
var file_gw_gw_proto_depIdxs = []int32{
|
|
9, // 0: gw.Modulation.lora:type_name -> gw.LoraModulationInfo
|
|
10, // 1: gw.Modulation.fsk:type_name -> gw.FskModulationInfo
|
|
11, // 2: gw.Modulation.lr_fhss:type_name -> gw.LrFhssModulationInfo
|
|
45, // 3: gw.UplinkTxInfoLegacy.modulation:type_name -> common.Modulation
|
|
9, // 4: gw.UplinkTxInfoLegacy.lora_modulation_info:type_name -> gw.LoraModulationInfo
|
|
10, // 5: gw.UplinkTxInfoLegacy.fsk_modulation_info:type_name -> gw.FskModulationInfo
|
|
11, // 6: gw.UplinkTxInfoLegacy.lr_fhss_modulation_info:type_name -> gw.LrFhssModulationInfo
|
|
6, // 7: gw.UplinkTxInfo.modulation:type_name -> gw.Modulation
|
|
0, // 8: gw.LoraModulationInfo.code_rate:type_name -> gw.CodeRate
|
|
0, // 9: gw.LrFhssModulationInfo.code_rate:type_name -> gw.CodeRate
|
|
46, // 10: gw.PlainFineTimestamp.time:type_name -> google.protobuf.Timestamp
|
|
46, // 11: gw.GatewayStats.time:type_name -> google.protobuf.Timestamp
|
|
47, // 12: gw.GatewayStats.location:type_name -> common.Location
|
|
39, // 13: gw.GatewayStats.meta_data:type_name -> gw.GatewayStats.MetaDataEntry
|
|
40, // 14: gw.GatewayStats.tx_packets_per_frequency:type_name -> gw.GatewayStats.TxPacketsPerFrequencyEntry
|
|
41, // 15: gw.GatewayStats.rx_packets_per_frequency:type_name -> gw.GatewayStats.RxPacketsPerFrequencyEntry
|
|
15, // 16: gw.GatewayStats.tx_packets_per_modulation:type_name -> gw.PerModulationCount
|
|
15, // 17: gw.GatewayStats.rx_packets_per_modulation:type_name -> gw.PerModulationCount
|
|
42, // 18: gw.GatewayStats.tx_packets_per_status:type_name -> gw.GatewayStats.TxPacketsPerStatusEntry
|
|
6, // 19: gw.PerModulationCount.modulation:type_name -> gw.Modulation
|
|
46, // 20: gw.UplinkRxInfoLegacy.time:type_name -> google.protobuf.Timestamp
|
|
48, // 21: gw.UplinkRxInfoLegacy.time_since_gps_epoch:type_name -> google.protobuf.Duration
|
|
47, // 22: gw.UplinkRxInfoLegacy.location:type_name -> common.Location
|
|
2, // 23: gw.UplinkRxInfoLegacy.fine_timestamp_type:type_name -> gw.FineTimestampType
|
|
12, // 24: gw.UplinkRxInfoLegacy.encrypted_fine_timestamp:type_name -> gw.EncryptedFineTimestamp
|
|
13, // 25: gw.UplinkRxInfoLegacy.plain_fine_timestamp:type_name -> gw.PlainFineTimestamp
|
|
3, // 26: gw.UplinkRxInfoLegacy.crc_status:type_name -> gw.CRCStatus
|
|
43, // 27: gw.UplinkRxInfoLegacy.metadata:type_name -> gw.UplinkRxInfoLegacy.MetadataEntry
|
|
46, // 28: gw.UplinkRxInfo.time:type_name -> google.protobuf.Timestamp
|
|
48, // 29: gw.UplinkRxInfo.time_since_gps_epoch:type_name -> google.protobuf.Duration
|
|
48, // 30: gw.UplinkRxInfo.fine_time_since_gps_epoch:type_name -> google.protobuf.Duration
|
|
47, // 31: gw.UplinkRxInfo.location:type_name -> common.Location
|
|
49, // 32: gw.UplinkRxInfo.metadata:type_name -> google.protobuf.Struct
|
|
45, // 33: gw.DownlinkTxInfoLegacy.modulation:type_name -> common.Modulation
|
|
9, // 34: gw.DownlinkTxInfoLegacy.lora_modulation_info:type_name -> gw.LoraModulationInfo
|
|
10, // 35: gw.DownlinkTxInfoLegacy.fsk_modulation_info:type_name -> gw.FskModulationInfo
|
|
1, // 36: gw.DownlinkTxInfoLegacy.timing:type_name -> gw.DownlinkTiming
|
|
21, // 37: gw.DownlinkTxInfoLegacy.immediately_timing_info:type_name -> gw.ImmediatelyTimingInfo
|
|
22, // 38: gw.DownlinkTxInfoLegacy.delay_timing_info:type_name -> gw.DelayTimingInfo
|
|
23, // 39: gw.DownlinkTxInfoLegacy.gps_epoch_timing_info:type_name -> gw.GPSEpochTimingInfo
|
|
6, // 40: gw.DownlinkTxInfo.modulation:type_name -> gw.Modulation
|
|
20, // 41: gw.DownlinkTxInfo.timing:type_name -> gw.Timing
|
|
21, // 42: gw.Timing.immediately:type_name -> gw.ImmediatelyTimingInfo
|
|
22, // 43: gw.Timing.delay:type_name -> gw.DelayTimingInfo
|
|
23, // 44: gw.Timing.gps_epoch:type_name -> gw.GPSEpochTimingInfo
|
|
48, // 45: gw.DelayTimingInfo.delay:type_name -> google.protobuf.Duration
|
|
48, // 46: gw.GPSEpochTimingInfo.time_since_gps_epoch:type_name -> google.protobuf.Duration
|
|
7, // 47: gw.UplinkFrame.tx_info_legacy:type_name -> gw.UplinkTxInfoLegacy
|
|
16, // 48: gw.UplinkFrame.rx_info_legacy:type_name -> gw.UplinkRxInfoLegacy
|
|
8, // 49: gw.UplinkFrame.tx_info:type_name -> gw.UplinkTxInfo
|
|
17, // 50: gw.UplinkFrame.rx_info:type_name -> gw.UplinkRxInfo
|
|
8, // 51: gw.UplinkFrameSet.tx_info:type_name -> gw.UplinkTxInfo
|
|
17, // 52: gw.UplinkFrameSet.rx_info:type_name -> gw.UplinkRxInfo
|
|
27, // 53: gw.DownlinkFrame.items:type_name -> gw.DownlinkFrameItem
|
|
18, // 54: gw.DownlinkFrameItem.tx_info_legacy:type_name -> gw.DownlinkTxInfoLegacy
|
|
19, // 55: gw.DownlinkFrameItem.tx_info:type_name -> gw.DownlinkTxInfo
|
|
29, // 56: gw.DownlinkTxAck.items:type_name -> gw.DownlinkTxAckItem
|
|
4, // 57: gw.DownlinkTxAckItem.status:type_name -> gw.TxAckStatus
|
|
31, // 58: gw.GatewayConfiguration.channels:type_name -> gw.ChannelConfiguration
|
|
48, // 59: gw.GatewayConfiguration.stats_interval:type_name -> google.protobuf.Duration
|
|
45, // 60: gw.ChannelConfiguration.modulation_legacy:type_name -> common.Modulation
|
|
32, // 61: gw.ChannelConfiguration.lora_modulation_config:type_name -> gw.LoraModulationConfig
|
|
33, // 62: gw.ChannelConfiguration.fsk_modulation_config:type_name -> gw.FskModulationConfig
|
|
44, // 63: gw.GatewayCommandExecRequest.environment:type_name -> gw.GatewayCommandExecRequest.EnvironmentEntry
|
|
5, // 64: gw.ConnState.state:type_name -> gw.ConnState.State
|
|
65, // [65:65] is the sub-list for method output_type
|
|
65, // [65:65] is the sub-list for method input_type
|
|
65, // [65:65] is the sub-list for extension type_name
|
|
65, // [65:65] is the sub-list for extension extendee
|
|
0, // [0:65] is the sub-list for field type_name
|
|
}
|
|
|
|
func init() { file_gw_gw_proto_init() }
|
|
func file_gw_gw_proto_init() {
|
|
if File_gw_gw_proto != nil {
|
|
return
|
|
}
|
|
if !protoimpl.UnsafeEnabled {
|
|
file_gw_gw_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*Modulation); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*UplinkTxInfoLegacy); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*UplinkTxInfo); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*LoraModulationInfo); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*FskModulationInfo); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*LrFhssModulationInfo); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*EncryptedFineTimestamp); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*PlainFineTimestamp); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*GatewayStats); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*PerModulationCount); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*UplinkRxInfoLegacy); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*UplinkRxInfo); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*DownlinkTxInfoLegacy); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*DownlinkTxInfo); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*Timing); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*ImmediatelyTimingInfo); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*DelayTimingInfo); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*GPSEpochTimingInfo); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*UplinkFrame); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*UplinkFrameSet); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*DownlinkFrame); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*DownlinkFrameItem); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*DownlinkTxAck); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*DownlinkTxAckItem); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*GatewayConfiguration); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*ChannelConfiguration); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*LoraModulationConfig); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*FskModulationConfig); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*GatewayCommandExecRequest); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*GatewayCommandExecResponse); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*RawPacketForwarderEvent); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*RawPacketForwarderCommand); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
|
|
switch v := v.(*ConnState); i {
|
|
case 0:
|
|
return &v.state
|
|
case 1:
|
|
return &v.sizeCache
|
|
case 2:
|
|
return &v.unknownFields
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
}
|
|
file_gw_gw_proto_msgTypes[0].OneofWrappers = []interface{}{
|
|
(*Modulation_Lora)(nil),
|
|
(*Modulation_Fsk)(nil),
|
|
(*Modulation_LrFhss)(nil),
|
|
}
|
|
file_gw_gw_proto_msgTypes[1].OneofWrappers = []interface{}{
|
|
(*UplinkTxInfoLegacy_LoraModulationInfo)(nil),
|
|
(*UplinkTxInfoLegacy_FskModulationInfo)(nil),
|
|
(*UplinkTxInfoLegacy_LrFhssModulationInfo)(nil),
|
|
}
|
|
file_gw_gw_proto_msgTypes[10].OneofWrappers = []interface{}{
|
|
(*UplinkRxInfoLegacy_EncryptedFineTimestamp)(nil),
|
|
(*UplinkRxInfoLegacy_PlainFineTimestamp)(nil),
|
|
}
|
|
file_gw_gw_proto_msgTypes[12].OneofWrappers = []interface{}{
|
|
(*DownlinkTxInfoLegacy_LoraModulationInfo)(nil),
|
|
(*DownlinkTxInfoLegacy_FskModulationInfo)(nil),
|
|
(*DownlinkTxInfoLegacy_ImmediatelyTimingInfo)(nil),
|
|
(*DownlinkTxInfoLegacy_DelayTimingInfo)(nil),
|
|
(*DownlinkTxInfoLegacy_GpsEpochTimingInfo)(nil),
|
|
}
|
|
file_gw_gw_proto_msgTypes[14].OneofWrappers = []interface{}{
|
|
(*Timing_Immediately)(nil),
|
|
(*Timing_Delay)(nil),
|
|
(*Timing_GpsEpoch)(nil),
|
|
}
|
|
file_gw_gw_proto_msgTypes[25].OneofWrappers = []interface{}{
|
|
(*ChannelConfiguration_LoraModulationConfig)(nil),
|
|
(*ChannelConfiguration_FskModulationConfig)(nil),
|
|
}
|
|
type x struct{}
|
|
out := protoimpl.TypeBuilder{
|
|
File: protoimpl.DescBuilder{
|
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
RawDescriptor: file_gw_gw_proto_rawDesc,
|
|
NumEnums: 6,
|
|
NumMessages: 39,
|
|
NumExtensions: 0,
|
|
NumServices: 0,
|
|
},
|
|
GoTypes: file_gw_gw_proto_goTypes,
|
|
DependencyIndexes: file_gw_gw_proto_depIdxs,
|
|
EnumInfos: file_gw_gw_proto_enumTypes,
|
|
MessageInfos: file_gw_gw_proto_msgTypes,
|
|
}.Build()
|
|
File_gw_gw_proto = out.File
|
|
file_gw_gw_proto_rawDesc = nil
|
|
file_gw_gw_proto_goTypes = nil
|
|
file_gw_gw_proto_depIdxs = nil
|
|
}
|