// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: api/frame_log.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021, 8981
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Chirpstack.Api {

  /// <summary>Holder for reflection information generated from api/frame_log.proto</summary>
  public static partial class FrameLogReflection {

    #region Descriptor
    /// <summary>File descriptor for api/frame_log.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static FrameLogReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChNhcGkvZnJhbWVfbG9nLnByb3RvEgNhcGkaH2dvb2dsZS9wcm90b2J1Zi90",
            "aW1lc3RhbXAucHJvdG8aE2NvbW1vbi9jb21tb24ucHJvdG8aC2d3L2d3LnBy",
            "b3RvIvcBCg5VcGxpbmtGcmFtZUxvZxITCgtwaHlfcGF5bG9hZBgBIAEoDBIh",
            "Cgd0eF9pbmZvGAIgASgLMhAuZ3cuVXBsaW5rVHhJbmZvEiEKB3J4X2luZm8Y",
            "AyADKAsyEC5ndy5VcGxpbmtSeEluZm8SHQoGbV90eXBlGAQgASgOMg0uY29t",
            "bW9uLk1UeXBlEhAKCGRldl9hZGRyGAUgASgJEg8KB2Rldl9ldWkYBiABKAkS",
            "KAoEdGltZRgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASHgoW",
            "cGxhaW50ZXh0X21hY19jb21tYW5kcxgIIAEoCCKBAgoQRG93bmxpbmtGcmFt",
            "ZUxvZxIoCgR0aW1lGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFt",
            "cBITCgtwaHlfcGF5bG9hZBgCIAEoDBIjCgd0eF9pbmZvGAMgASgLMhIuZ3cu",
            "RG93bmxpbmtUeEluZm8SEwoLZG93bmxpbmtfaWQYBCABKA0SEgoKZ2F0ZXdh",
            "eV9pZBgFIAEoCRIdCgZtX3R5cGUYBiABKA4yDS5jb21tb24uTVR5cGUSEAoI",
            "ZGV2X2FkZHIYByABKAkSDwoHZGV2X2V1aRgIIAEoCRIeChZwbGFpbnRleHRf",
            "bWFjX2NvbW1hbmRzGAkgASgIQmUKEWlvLmNoaXJwc3RhY2suYXBpQg1GcmFt",
            "ZUxvZ1Byb3RvUAFaLmdpdGh1Yi5jb20vY2hpcnBzdGFjay9jaGlycHN0YWNr",
            "L2FwaS9nby92NC9hcGmqAg5DaGlycHN0YWNrLkFwaWIGcHJvdG8z"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Chirpstack.Common.CommonReflection.Descriptor, global::Chirpstack.Gateway.GwReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.UplinkFrameLog), global::Chirpstack.Api.UplinkFrameLog.Parser, new[]{ "PhyPayload", "TxInfo", "RxInfo", "MType", "DevAddr", "DevEui", "Time", "PlaintextMacCommands" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Chirpstack.Api.DownlinkFrameLog), global::Chirpstack.Api.DownlinkFrameLog.Parser, new[]{ "Time", "PhyPayload", "TxInfo", "DownlinkId", "GatewayId", "MType", "DevAddr", "DevEui", "PlaintextMacCommands" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  public sealed partial class UplinkFrameLog : pb::IMessage<UplinkFrameLog>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<UplinkFrameLog> _parser = new pb::MessageParser<UplinkFrameLog>(() => new UplinkFrameLog());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<UplinkFrameLog> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Chirpstack.Api.FrameLogReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UplinkFrameLog() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UplinkFrameLog(UplinkFrameLog other) : this() {
      phyPayload_ = other.phyPayload_;
      txInfo_ = other.txInfo_ != null ? other.txInfo_.Clone() : null;
      rxInfo_ = other.rxInfo_.Clone();
      mType_ = other.mType_;
      devAddr_ = other.devAddr_;
      devEui_ = other.devEui_;
      time_ = other.time_ != null ? other.time_.Clone() : null;
      plaintextMacCommands_ = other.plaintextMacCommands_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UplinkFrameLog Clone() {
      return new UplinkFrameLog(this);
    }

    /// <summary>Field number for the "phy_payload" field.</summary>
    public const int PhyPayloadFieldNumber = 1;
    private pb::ByteString phyPayload_ = pb::ByteString.Empty;
    /// <summary>
    /// PHYPayload.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString PhyPayload {
      get { return phyPayload_; }
      set {
        phyPayload_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "tx_info" field.</summary>
    public const int TxInfoFieldNumber = 2;
    private global::Chirpstack.Gateway.UplinkTxInfo txInfo_;
    /// <summary>
    /// TX meta-data.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Chirpstack.Gateway.UplinkTxInfo TxInfo {
      get { return txInfo_; }
      set {
        txInfo_ = value;
      }
    }

    /// <summary>Field number for the "rx_info" field.</summary>
    public const int RxInfoFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Chirpstack.Gateway.UplinkRxInfo> _repeated_rxInfo_codec
        = pb::FieldCodec.ForMessage(26, global::Chirpstack.Gateway.UplinkRxInfo.Parser);
    private readonly pbc::RepeatedField<global::Chirpstack.Gateway.UplinkRxInfo> rxInfo_ = new pbc::RepeatedField<global::Chirpstack.Gateway.UplinkRxInfo>();
    /// <summary>
    /// RX meta-data.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Chirpstack.Gateway.UplinkRxInfo> RxInfo {
      get { return rxInfo_; }
    }

    /// <summary>Field number for the "m_type" field.</summary>
    public const int MTypeFieldNumber = 4;
    private global::Chirpstack.Common.MType mType_ = global::Chirpstack.Common.MType.JoinRequest;
    /// <summary>
    /// Message type.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Chirpstack.Common.MType MType {
      get { return mType_; }
      set {
        mType_ = value;
      }
    }

    /// <summary>Field number for the "dev_addr" field.</summary>
    public const int DevAddrFieldNumber = 5;
    private string devAddr_ = "";
    /// <summary>
    /// Device address (optional).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string DevAddr {
      get { return devAddr_; }
      set {
        devAddr_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "dev_eui" field.</summary>
    public const int DevEuiFieldNumber = 6;
    private string devEui_ = "";
    /// <summary>
    /// Device EUI (optional).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string DevEui {
      get { return devEui_; }
      set {
        devEui_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "time" field.</summary>
    public const int TimeFieldNumber = 7;
    private global::Google.Protobuf.WellKnownTypes.Timestamp time_;
    /// <summary>
    /// Time.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp Time {
      get { return time_; }
      set {
        time_ = value;
      }
    }

    /// <summary>Field number for the "plaintext_mac_commands" field.</summary>
    public const int PlaintextMacCommandsFieldNumber = 8;
    private bool plaintextMacCommands_;
    /// <summary>
    /// Plaintext mac-commands.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool PlaintextMacCommands {
      get { return plaintextMacCommands_; }
      set {
        plaintextMacCommands_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as UplinkFrameLog);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(UplinkFrameLog other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (PhyPayload != other.PhyPayload) return false;
      if (!object.Equals(TxInfo, other.TxInfo)) return false;
      if(!rxInfo_.Equals(other.rxInfo_)) return false;
      if (MType != other.MType) return false;
      if (DevAddr != other.DevAddr) return false;
      if (DevEui != other.DevEui) return false;
      if (!object.Equals(Time, other.Time)) return false;
      if (PlaintextMacCommands != other.PlaintextMacCommands) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (PhyPayload.Length != 0) hash ^= PhyPayload.GetHashCode();
      if (txInfo_ != null) hash ^= TxInfo.GetHashCode();
      hash ^= rxInfo_.GetHashCode();
      if (MType != global::Chirpstack.Common.MType.JoinRequest) hash ^= MType.GetHashCode();
      if (DevAddr.Length != 0) hash ^= DevAddr.GetHashCode();
      if (DevEui.Length != 0) hash ^= DevEui.GetHashCode();
      if (time_ != null) hash ^= Time.GetHashCode();
      if (PlaintextMacCommands != false) hash ^= PlaintextMacCommands.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (PhyPayload.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(PhyPayload);
      }
      if (txInfo_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(TxInfo);
      }
      rxInfo_.WriteTo(output, _repeated_rxInfo_codec);
      if (MType != global::Chirpstack.Common.MType.JoinRequest) {
        output.WriteRawTag(32);
        output.WriteEnum((int) MType);
      }
      if (DevAddr.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(DevAddr);
      }
      if (DevEui.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(DevEui);
      }
      if (time_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(Time);
      }
      if (PlaintextMacCommands != false) {
        output.WriteRawTag(64);
        output.WriteBool(PlaintextMacCommands);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (PhyPayload.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(PhyPayload);
      }
      if (txInfo_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(TxInfo);
      }
      rxInfo_.WriteTo(ref output, _repeated_rxInfo_codec);
      if (MType != global::Chirpstack.Common.MType.JoinRequest) {
        output.WriteRawTag(32);
        output.WriteEnum((int) MType);
      }
      if (DevAddr.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(DevAddr);
      }
      if (DevEui.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(DevEui);
      }
      if (time_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(Time);
      }
      if (PlaintextMacCommands != false) {
        output.WriteRawTag(64);
        output.WriteBool(PlaintextMacCommands);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (PhyPayload.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(PhyPayload);
      }
      if (txInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TxInfo);
      }
      size += rxInfo_.CalculateSize(_repeated_rxInfo_codec);
      if (MType != global::Chirpstack.Common.MType.JoinRequest) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MType);
      }
      if (DevAddr.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DevAddr);
      }
      if (DevEui.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DevEui);
      }
      if (time_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Time);
      }
      if (PlaintextMacCommands != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(UplinkFrameLog other) {
      if (other == null) {
        return;
      }
      if (other.PhyPayload.Length != 0) {
        PhyPayload = other.PhyPayload;
      }
      if (other.txInfo_ != null) {
        if (txInfo_ == null) {
          TxInfo = new global::Chirpstack.Gateway.UplinkTxInfo();
        }
        TxInfo.MergeFrom(other.TxInfo);
      }
      rxInfo_.Add(other.rxInfo_);
      if (other.MType != global::Chirpstack.Common.MType.JoinRequest) {
        MType = other.MType;
      }
      if (other.DevAddr.Length != 0) {
        DevAddr = other.DevAddr;
      }
      if (other.DevEui.Length != 0) {
        DevEui = other.DevEui;
      }
      if (other.time_ != null) {
        if (time_ == null) {
          Time = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        Time.MergeFrom(other.Time);
      }
      if (other.PlaintextMacCommands != false) {
        PlaintextMacCommands = other.PlaintextMacCommands;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            PhyPayload = input.ReadBytes();
            break;
          }
          case 18: {
            if (txInfo_ == null) {
              TxInfo = new global::Chirpstack.Gateway.UplinkTxInfo();
            }
            input.ReadMessage(TxInfo);
            break;
          }
          case 26: {
            rxInfo_.AddEntriesFrom(input, _repeated_rxInfo_codec);
            break;
          }
          case 32: {
            MType = (global::Chirpstack.Common.MType) input.ReadEnum();
            break;
          }
          case 42: {
            DevAddr = input.ReadString();
            break;
          }
          case 50: {
            DevEui = input.ReadString();
            break;
          }
          case 58: {
            if (time_ == null) {
              Time = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(Time);
            break;
          }
          case 64: {
            PlaintextMacCommands = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            PhyPayload = input.ReadBytes();
            break;
          }
          case 18: {
            if (txInfo_ == null) {
              TxInfo = new global::Chirpstack.Gateway.UplinkTxInfo();
            }
            input.ReadMessage(TxInfo);
            break;
          }
          case 26: {
            rxInfo_.AddEntriesFrom(ref input, _repeated_rxInfo_codec);
            break;
          }
          case 32: {
            MType = (global::Chirpstack.Common.MType) input.ReadEnum();
            break;
          }
          case 42: {
            DevAddr = input.ReadString();
            break;
          }
          case 50: {
            DevEui = input.ReadString();
            break;
          }
          case 58: {
            if (time_ == null) {
              Time = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(Time);
            break;
          }
          case 64: {
            PlaintextMacCommands = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class DownlinkFrameLog : pb::IMessage<DownlinkFrameLog>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<DownlinkFrameLog> _parser = new pb::MessageParser<DownlinkFrameLog>(() => new DownlinkFrameLog());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<DownlinkFrameLog> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Chirpstack.Api.FrameLogReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DownlinkFrameLog() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DownlinkFrameLog(DownlinkFrameLog other) : this() {
      time_ = other.time_ != null ? other.time_.Clone() : null;
      phyPayload_ = other.phyPayload_;
      txInfo_ = other.txInfo_ != null ? other.txInfo_.Clone() : null;
      downlinkId_ = other.downlinkId_;
      gatewayId_ = other.gatewayId_;
      mType_ = other.mType_;
      devAddr_ = other.devAddr_;
      devEui_ = other.devEui_;
      plaintextMacCommands_ = other.plaintextMacCommands_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DownlinkFrameLog Clone() {
      return new DownlinkFrameLog(this);
    }

    /// <summary>Field number for the "time" field.</summary>
    public const int TimeFieldNumber = 1;
    private global::Google.Protobuf.WellKnownTypes.Timestamp time_;
    /// <summary>
    /// Time.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp Time {
      get { return time_; }
      set {
        time_ = value;
      }
    }

    /// <summary>Field number for the "phy_payload" field.</summary>
    public const int PhyPayloadFieldNumber = 2;
    private pb::ByteString phyPayload_ = pb::ByteString.Empty;
    /// <summary>
    /// PHYPayload.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString PhyPayload {
      get { return phyPayload_; }
      set {
        phyPayload_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "tx_info" field.</summary>
    public const int TxInfoFieldNumber = 3;
    private global::Chirpstack.Gateway.DownlinkTxInfo txInfo_;
    /// <summary>
    /// TX meta-data.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Chirpstack.Gateway.DownlinkTxInfo TxInfo {
      get { return txInfo_; }
      set {
        txInfo_ = value;
      }
    }

    /// <summary>Field number for the "downlink_id" field.</summary>
    public const int DownlinkIdFieldNumber = 4;
    private uint downlinkId_;
    /// <summary>
    /// Downlink ID.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint DownlinkId {
      get { return downlinkId_; }
      set {
        downlinkId_ = value;
      }
    }

    /// <summary>Field number for the "gateway_id" field.</summary>
    public const int GatewayIdFieldNumber = 5;
    private string gatewayId_ = "";
    /// <summary>
    /// Gateway ID (EUI64).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string GatewayId {
      get { return gatewayId_; }
      set {
        gatewayId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "m_type" field.</summary>
    public const int MTypeFieldNumber = 6;
    private global::Chirpstack.Common.MType mType_ = global::Chirpstack.Common.MType.JoinRequest;
    /// <summary>
    /// Message type.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Chirpstack.Common.MType MType {
      get { return mType_; }
      set {
        mType_ = value;
      }
    }

    /// <summary>Field number for the "dev_addr" field.</summary>
    public const int DevAddrFieldNumber = 7;
    private string devAddr_ = "";
    /// <summary>
    /// Device address (optional).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string DevAddr {
      get { return devAddr_; }
      set {
        devAddr_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "dev_eui" field.</summary>
    public const int DevEuiFieldNumber = 8;
    private string devEui_ = "";
    /// <summary>
    /// Device EUI (optional).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string DevEui {
      get { return devEui_; }
      set {
        devEui_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "plaintext_mac_commands" field.</summary>
    public const int PlaintextMacCommandsFieldNumber = 9;
    private bool plaintextMacCommands_;
    /// <summary>
    /// Plaintext mac-commands.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool PlaintextMacCommands {
      get { return plaintextMacCommands_; }
      set {
        plaintextMacCommands_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as DownlinkFrameLog);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(DownlinkFrameLog other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Time, other.Time)) return false;
      if (PhyPayload != other.PhyPayload) return false;
      if (!object.Equals(TxInfo, other.TxInfo)) return false;
      if (DownlinkId != other.DownlinkId) return false;
      if (GatewayId != other.GatewayId) return false;
      if (MType != other.MType) return false;
      if (DevAddr != other.DevAddr) return false;
      if (DevEui != other.DevEui) return false;
      if (PlaintextMacCommands != other.PlaintextMacCommands) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (time_ != null) hash ^= Time.GetHashCode();
      if (PhyPayload.Length != 0) hash ^= PhyPayload.GetHashCode();
      if (txInfo_ != null) hash ^= TxInfo.GetHashCode();
      if (DownlinkId != 0) hash ^= DownlinkId.GetHashCode();
      if (GatewayId.Length != 0) hash ^= GatewayId.GetHashCode();
      if (MType != global::Chirpstack.Common.MType.JoinRequest) hash ^= MType.GetHashCode();
      if (DevAddr.Length != 0) hash ^= DevAddr.GetHashCode();
      if (DevEui.Length != 0) hash ^= DevEui.GetHashCode();
      if (PlaintextMacCommands != false) hash ^= PlaintextMacCommands.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (time_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Time);
      }
      if (PhyPayload.Length != 0) {
        output.WriteRawTag(18);
        output.WriteBytes(PhyPayload);
      }
      if (txInfo_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(TxInfo);
      }
      if (DownlinkId != 0) {
        output.WriteRawTag(32);
        output.WriteUInt32(DownlinkId);
      }
      if (GatewayId.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(GatewayId);
      }
      if (MType != global::Chirpstack.Common.MType.JoinRequest) {
        output.WriteRawTag(48);
        output.WriteEnum((int) MType);
      }
      if (DevAddr.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(DevAddr);
      }
      if (DevEui.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(DevEui);
      }
      if (PlaintextMacCommands != false) {
        output.WriteRawTag(72);
        output.WriteBool(PlaintextMacCommands);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (time_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Time);
      }
      if (PhyPayload.Length != 0) {
        output.WriteRawTag(18);
        output.WriteBytes(PhyPayload);
      }
      if (txInfo_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(TxInfo);
      }
      if (DownlinkId != 0) {
        output.WriteRawTag(32);
        output.WriteUInt32(DownlinkId);
      }
      if (GatewayId.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(GatewayId);
      }
      if (MType != global::Chirpstack.Common.MType.JoinRequest) {
        output.WriteRawTag(48);
        output.WriteEnum((int) MType);
      }
      if (DevAddr.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(DevAddr);
      }
      if (DevEui.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(DevEui);
      }
      if (PlaintextMacCommands != false) {
        output.WriteRawTag(72);
        output.WriteBool(PlaintextMacCommands);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (time_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Time);
      }
      if (PhyPayload.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(PhyPayload);
      }
      if (txInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TxInfo);
      }
      if (DownlinkId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(DownlinkId);
      }
      if (GatewayId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(GatewayId);
      }
      if (MType != global::Chirpstack.Common.MType.JoinRequest) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MType);
      }
      if (DevAddr.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DevAddr);
      }
      if (DevEui.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DevEui);
      }
      if (PlaintextMacCommands != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(DownlinkFrameLog other) {
      if (other == null) {
        return;
      }
      if (other.time_ != null) {
        if (time_ == null) {
          Time = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        Time.MergeFrom(other.Time);
      }
      if (other.PhyPayload.Length != 0) {
        PhyPayload = other.PhyPayload;
      }
      if (other.txInfo_ != null) {
        if (txInfo_ == null) {
          TxInfo = new global::Chirpstack.Gateway.DownlinkTxInfo();
        }
        TxInfo.MergeFrom(other.TxInfo);
      }
      if (other.DownlinkId != 0) {
        DownlinkId = other.DownlinkId;
      }
      if (other.GatewayId.Length != 0) {
        GatewayId = other.GatewayId;
      }
      if (other.MType != global::Chirpstack.Common.MType.JoinRequest) {
        MType = other.MType;
      }
      if (other.DevAddr.Length != 0) {
        DevAddr = other.DevAddr;
      }
      if (other.DevEui.Length != 0) {
        DevEui = other.DevEui;
      }
      if (other.PlaintextMacCommands != false) {
        PlaintextMacCommands = other.PlaintextMacCommands;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (time_ == null) {
              Time = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(Time);
            break;
          }
          case 18: {
            PhyPayload = input.ReadBytes();
            break;
          }
          case 26: {
            if (txInfo_ == null) {
              TxInfo = new global::Chirpstack.Gateway.DownlinkTxInfo();
            }
            input.ReadMessage(TxInfo);
            break;
          }
          case 32: {
            DownlinkId = input.ReadUInt32();
            break;
          }
          case 42: {
            GatewayId = input.ReadString();
            break;
          }
          case 48: {
            MType = (global::Chirpstack.Common.MType) input.ReadEnum();
            break;
          }
          case 58: {
            DevAddr = input.ReadString();
            break;
          }
          case 66: {
            DevEui = input.ReadString();
            break;
          }
          case 72: {
            PlaintextMacCommands = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (time_ == null) {
              Time = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(Time);
            break;
          }
          case 18: {
            PhyPayload = input.ReadBytes();
            break;
          }
          case 26: {
            if (txInfo_ == null) {
              TxInfo = new global::Chirpstack.Gateway.DownlinkTxInfo();
            }
            input.ReadMessage(TxInfo);
            break;
          }
          case 32: {
            DownlinkId = input.ReadUInt32();
            break;
          }
          case 42: {
            GatewayId = input.ReadString();
            break;
          }
          case 48: {
            MType = (global::Chirpstack.Common.MType) input.ReadEnum();
            break;
          }
          case 58: {
            DevAddr = input.ReadString();
            break;
          }
          case 66: {
            DevEui = input.ReadString();
            break;
          }
          case 72: {
            PlaintextMacCommands = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
