// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: message_base.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#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 Message {

  /// <summary>Holder for reflection information generated from message_base.proto</summary>
  public static partial class MessageBaseReflection {

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

    static MessageBaseReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChJtZXNzYWdlX2Jhc2UucHJvdG8SB21lc3NhZ2UimAEKCUJhc2VfaW5mbxIn",
            "Cghtc2dfdHlwZRgBIAIoDjIVLm1lc3NhZ2UuTWVzc2FnZV90eXBlEhIKCnRp",
            "bWVvdXRfbXMYAiABKAUSJQoGc2VuZGVyGAMgAigOMhUubWVzc2FnZS5Db21t",
            "dW5pY2F0b3ISJwoIcmVjZWl2ZXIYBCACKA4yFS5tZXNzYWdlLkNvbW11bmlj",
            "YXRvciIxCghCYXNlX21zZxIlCgliYXNlX2luZm8YASACKAsyEi5tZXNzYWdl",
            "LkJhc2VfaW5mbyJpCg1FcnJvcl9tYW5hZ2VyEhIKCmVycm9yX2NvZGUYASAC",
            "KAUSKQoLZXJyb3JfbGV2ZWwYAiABKA4yFC5tZXNzYWdlLkVycm9yX2xldmVs",
            "EhkKEWVycm9yX2Rlc2NyaXB0aW9uGAMgASgJIuEBChJMb2NhdGVfaW5mb3Jt",
            "YXRpb24SEAoIbG9jYXRlX3gYASABKAISEAoIbG9jYXRlX3kYAiABKAISFAoM",
            "bG9jYXRlX2FuZ2xlGAMgASgCEhUKDWxvY2F0ZV9sZW5ndGgYBCABKAISFAoM",
            "bG9jYXRlX3dpZHRoGAUgASgCEhUKDWxvY2F0ZV9oZWlnaHQYBiABKAISGQoR",
            "bG9jYXRlX3doZWVsX2Jhc2UYByABKAISGgoSbG9jYXRlX3doZWVsX3dpZHRo",
            "GAggASgCEhYKDmxvY2F0ZV9jb3JyZWN0GAkgASgIIlYKCENhcl9pbmZvEhIK",
            "CmNhcl9sZW5ndGgYASABKAISEQoJY2FyX3dpZHRoGAIgASgCEhIKCmNhcl9o",
            "ZWlnaHQYAyABKAISDwoHbGljZW5zZRgEIAEoCSKcAgoOUGFya3NwYWNlX2lu",
            "Zm8SFAoMcGFya3NwYWNlX2lkGAEgASgFEg0KBWluZGV4GAIgASgFEiUKCWRp",
            "cmVjdGlvbhgDIAEoDjISLm1lc3NhZ2UuRGlyZWN0aW9uEg0KBWZsb29yGAQg",
            "ASgFEg4KBmxlbmd0aBgFIAEoAhINCgV3aWR0aBgGIAEoAhIOCgZoZWlnaHQY",
            "ByABKAISMwoQcGFya3NwYWNlX3N0YXR1cxgIIAEoDjIZLm1lc3NhZ2UuUGFy",
            "a3NwYWNlX3N0YXR1cxIjCghjYXJfaW5mbxgJIAEoCzIRLm1lc3NhZ2UuQ2Fy",
            "X2luZm8SEgoKZW50cnlfdGltZRgKIAEoCRISCgpsZWF2ZV90aW1lGAsgASgJ",
            "Kr4GCgxNZXNzYWdlX3R5cGUSDQoJZUJhc2VfbXNnEAASEAoMZUNvbW1hbmRf",
            "bXNnEAESFgoSZUxvY2F0ZV9zdGF0dXNfbXNnEBESFwoTZUxvY2F0ZV9yZXF1",
            "ZXN0X21zZxASEhgKFGVMb2NhdGVfcmVzcG9uc2VfbXNnEBMSGAoUZURpc3Bh",
            "dGNoX3N0YXR1c19tc2cQIRIZChVlRGlzcGF0Y2hfcmVxdWVzdF9tc2cQIhIa",
            "ChZlRGlzcGF0Y2hfcmVzcG9uc2VfbXNnECMSJAogZVBhcmtzcGFjZV9hbGxv",
            "Y2F0aW9uX3N0YXR1c19tc2cQMRIlCiFlUGFya3NwYWNlX2FsbG9jYXRpb25f",
            "cmVxdWVzdF9tc2cQMhImCiJlUGFya3NwYWNlX2FsbG9jYXRpb25fcmVzcG9u",
            "c2VfbXNnEDMSIQodZVBhcmtzcGFjZV9zZWFyY2hfcmVxdWVzdF9tc2cQNBIi",
            "Ch5lUGFya3NwYWNlX3NlYXJjaF9yZXNwb25zZV9tc2cQNRIiCh5lUGFya3Nw",
            "YWNlX3JlbGVhc2VfcmVxdWVzdF9tc2cQNhIjCh9lUGFya3NwYWNlX3JlbGVh",
            "c2VfcmVzcG9uc2VfbXNnEDcSJwojZVBhcmtzcGFjZV9mb3JjZV91cGRhdGVf",
            "cmVxdWVzdF9tc2cQOBIoCiRlUGFya3NwYWNlX2ZvcmNlX3VwZGF0ZV9yZXNw",
            "b25zZV9tc2cQORIoCiRlUGFya3NwYWNlX2NvbmZpcm1fYWxsb2NfcmVxdWVz",
            "dF9tc2cQOhIpCiVlUGFya3NwYWNlX2NvbmZpcm1fYWxsb2NfcmVzcG9uc2Vf",
            "bXNnEDsSHgoaZVN0b3JlX2NvbW1hbmRfcmVxdWVzdF9tc2cQQRIfChtlU3Rv",
            "cmVfY29tbWFuZF9yZXNwb25zZV9tc2cQQhIfChtlUGlja3VwX2NvbW1hbmRf",
            "cmVxdWVzdF9tc2cQQxIgChxlUGlja3VwX2NvbW1hbmRfcmVzcG9uc2VfbXNn",
            "EEQSHwoaZVN0b3JpbmdfcHJvY2Vzc19zdGF0dV9tc2cQkAESHwoaZVBpY2tp",
            "bmdfcHJvY2Vzc19zdGF0dV9tc2cQkQEqZgoMQ29tbXVuaWNhdG9yEgoKBmVF",
            "bXB0eRAAEgkKBWVNYWluEAESDgoJZVRlcm1pbm9yEIACEg8KCmVQYXJrc3Bh",
            "Y2UQgAQSDgoJZU1lYXN1cmVyEIAGEg4KCWVEaXNwYXRjaBCACCojCgVFdmVu",
            "dBIMCghlU3RvcmluZxABEgwKCGVQaWNraW5nEAIqZQoLRXJyb3JfbGV2ZWwS",
            "CgoGTk9STUFMEAASFAoQTkVHTElHSUJMRV9FUlJPUhABEg8KC01JTk9SX0VS",
            "Uk9SEAISDwoLTUFKT1JfRVJST1IQAxISCg5DUklUSUNBTF9FUlJPUhAEKocB",
            "ChBQYXJrc3BhY2Vfc3RhdHVzEhQKEGVQYXJrc3BhY2VfZW1wdHkQABIXChNl",
            "UGFya3NwYWNlX29jY3VwaWVkEAESFwoTZVBhcmtzcGFjZV9yZXNlcnZlZBAC",
            "EhUKEWVQYXJrc3BhY2VfbG9ja2VkEAMSFAoQZVBhcmtzcGFjZV9lcnJvchAE",
            "KigKCURpcmVjdGlvbhIMCghlRm9yd2FyZBABEg0KCWVCYWNrd2FyZBAC"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Message.Message_type), typeof(global::Message.Communicator), typeof(global::Message.Event), typeof(global::Message.Error_level), typeof(global::Message.Parkspace_status), typeof(global::Message.Direction), }, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Base_info), global::Message.Base_info.Parser, new[]{ "MsgType", "TimeoutMs", "Sender", "Receiver" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Base_msg), global::Message.Base_msg.Parser, new[]{ "BaseInfo" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Error_manager), global::Message.Error_manager.Parser, new[]{ "ErrorCode", "ErrorLevel", "ErrorDescription" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Locate_information), global::Message.Locate_information.Parser, new[]{ "LocateX", "LocateY", "LocateAngle", "LocateLength", "LocateWidth", "LocateHeight", "LocateWheelBase", "LocateWheelWidth", "LocateCorrect" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Car_info), global::Message.Car_info.Parser, new[]{ "CarLength", "CarWidth", "CarHeight", "License" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Parkspace_info), global::Message.Parkspace_info.Parser, new[]{ "ParkspaceId", "Index", "Direction", "Floor", "Length", "Width", "Height", "ParkspaceStatus", "CarInfo", "EntryTime", "LeaveTime" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  /// <summary>
  ///消息类型定义;每个在网络上传输的消息必须含有这个属性
  /// </summary>
  public enum Message_type {
    [pbr::OriginalName("eBase_msg")] EBaseMsg = 0,
    /// <summary>
    ///指令消息
    /// </summary>
    [pbr::OriginalName("eCommand_msg")] ECommandMsg = 1,
    /// <summary>
    ///定位模块状态消息
    /// </summary>
    [pbr::OriginalName("eLocate_status_msg")] ELocateStatusMsg = 17,
    /// <summary>
    ///定位请求消息
    /// </summary>
    [pbr::OriginalName("eLocate_request_msg")] ELocateRequestMsg = 18,
    /// <summary>
    ///定位反馈消息
    /// </summary>
    [pbr::OriginalName("eLocate_response_msg")] ELocateResponseMsg = 19,
    /// <summary>
    ///调度模块硬件状态消息
    /// </summary>
    [pbr::OriginalName("eDispatch_status_msg")] EDispatchStatusMsg = 33,
    /// <summary>
    ///请求调度消息
    /// </summary>
    [pbr::OriginalName("eDispatch_request_msg")] EDispatchRequestMsg = 34,
    /// <summary>
    ///调度结果反馈消息
    /// </summary>
    [pbr::OriginalName("eDispatch_response_msg")] EDispatchResponseMsg = 35,
    /// <summary>
    ///车位分配模块状态消息，包括车位信息
    /// </summary>
    [pbr::OriginalName("eParkspace_allocation_status_msg")] EParkspaceAllocationStatusMsg = 49,
    /// <summary>
    ///请求分配车位消息
    /// </summary>
    [pbr::OriginalName("eParkspace_allocation_request_msg")] EParkspaceAllocationRequestMsg = 50,
    /// <summary>
    ///分配车位结果反馈消息
    /// </summary>
    [pbr::OriginalName("eParkspace_allocation_response_msg")] EParkspaceAllocationResponseMsg = 51,
    /// <summary>
    ///查询车位请求消息
    /// </summary>
    [pbr::OriginalName("eParkspace_search_request_msg")] EParkspaceSearchRequestMsg = 52,
    /// <summary>
    ///查询车位反馈消息
    /// </summary>
    [pbr::OriginalName("eParkspace_search_response_msg")] EParkspaceSearchResponseMsg = 53,
    /// <summary>
    ///释放车位请求消息
    /// </summary>
    [pbr::OriginalName("eParkspace_release_request_msg")] EParkspaceReleaseRequestMsg = 54,
    /// <summary>
    ///释放车位反馈消息
    /// </summary>
    [pbr::OriginalName("eParkspace_release_response_msg")] EParkspaceReleaseResponseMsg = 55,
    /// <summary>
    ///手动修改车位消息
    /// </summary>
    [pbr::OriginalName("eParkspace_force_update_request_msg")] EParkspaceForceUpdateRequestMsg = 56,
    /// <summary>
    ///手动修改车位反馈消息
    /// </summary>
    [pbr::OriginalName("eParkspace_force_update_response_msg")] EParkspaceForceUpdateResponseMsg = 57,
    /// <summary>
    ///确认分配车位请求消息
    /// </summary>
    [pbr::OriginalName("eParkspace_confirm_alloc_request_msg")] EParkspaceConfirmAllocRequestMsg = 58,
    /// <summary>
    ///确认分配车位反馈消息
    /// </summary>
    [pbr::OriginalName("eParkspace_confirm_alloc_response_msg")] EParkspaceConfirmAllocResponseMsg = 59,
    /// <summary>
    ///终端停车请求消息
    /// </summary>
    [pbr::OriginalName("eStore_command_request_msg")] EStoreCommandRequestMsg = 65,
    /// <summary>
    ///停车请求反馈消息
    /// </summary>
    [pbr::OriginalName("eStore_command_response_msg")] EStoreCommandResponseMsg = 66,
    /// <summary>
    ///取车请求消息
    /// </summary>
    [pbr::OriginalName("ePickup_command_request_msg")] EPickupCommandRequestMsg = 67,
    /// <summary>
    ///取车请求反馈消息
    /// </summary>
    [pbr::OriginalName("ePickup_command_response_msg")] EPickupCommandResponseMsg = 68,
    /// <summary>
    ///停车进度条消息
    /// </summary>
    [pbr::OriginalName("eStoring_process_statu_msg")] EStoringProcessStatuMsg = 144,
    /// <summary>
    ///取车进度消息
    /// </summary>
    [pbr::OriginalName("ePicking_process_statu_msg")] EPickingProcessStatuMsg = 145,
  }

  /// <summary>
  ///通讯单元
  /// </summary>
  public enum Communicator {
    [pbr::OriginalName("eEmpty")] EEmpty = 0,
    /// <summary>
    ///主流程
    /// </summary>
    [pbr::OriginalName("eMain")] EMain = 1,
    [pbr::OriginalName("eTerminor")] ETerminor = 256,
    /// <summary>
    ///车位表
    /// </summary>
    [pbr::OriginalName("eParkspace")] EParkspace = 512,
    /// <summary>
    ///测量单元
    /// </summary>
    [pbr::OriginalName("eMeasurer")] EMeasurer = 768,
    /// <summary>
    ///调度机构
    /// </summary>
    [pbr::OriginalName("eDispatch")] EDispatch = 1024,
  }

  /// <summary>
  /// 事件,停车或者取车
  /// </summary>
  public enum Event {
    [pbr::OriginalName("eStoring")] EStoring = 1,
    [pbr::OriginalName("ePicking")] EPicking = 2,
  }

  /// <summary>
  ///错误等级，用来做故障处理
  /// </summary>
  public enum Error_level {
    /// <summary>
    ///    正常，没有错误，默认值0
    /// </summary>
    [pbr::OriginalName("NORMAL")] Normal = 0,
    /// <summary>
    ///    轻微故障;可忽略的故障，NEGLIGIBLE_ERROR
    /// </summary>
    [pbr::OriginalName("NEGLIGIBLE_ERROR")] NegligibleError = 1,
    /// <summary>
    ///    一般故障，MINOR_ERROR
    /// </summary>
    [pbr::OriginalName("MINOR_ERROR")] MinorError = 2,
    /// <summary>
    ///    严重故障，MAJOR_ERROR
    /// </summary>
    [pbr::OriginalName("MAJOR_ERROR")] MajorError = 3,
    /// <summary>
    ///    致命故障，CRITICAL_ERROR
    /// </summary>
    [pbr::OriginalName("CRITICAL_ERROR")] CriticalError = 4,
  }

  /// <summary>
  ///车位状态枚举
  /// </summary>
  public enum Parkspace_status {
    /// <summary>
    ///空闲，可分配
    /// </summary>
    [pbr::OriginalName("eParkspace_empty")] EParkspaceEmpty = 0,
    /// <summary>
    ///被占用，不可分配
    /// </summary>
    [pbr::OriginalName("eParkspace_occupied")] EParkspaceOccupied = 1,
    /// <summary>
    ///被预约，预约车辆可分配
    /// </summary>
    [pbr::OriginalName("eParkspace_reserved")] EParkspaceReserved = 2,
    /// <summary>
    ///临时锁定，不可分配
    /// </summary>
    [pbr::OriginalName("eParkspace_locked")] EParkspaceLocked = 3,
    /// <summary>
    ///车位机械结构或硬件故障   
    /// </summary>
    [pbr::OriginalName("eParkspace_error")] EParkspaceError = 4,
  }

  public enum Direction {
    [pbr::OriginalName("eForward")] EForward = 1,
    [pbr::OriginalName("eBackward")] EBackward = 2,
  }

  #endregion

  #region Messages
  /// <summary>
  /////base message 用于解析未知类型的消息
  /// </summary>
  public sealed partial class Base_info : pb::IMessage<Base_info> {
    private static readonly pb::MessageParser<Base_info> _parser = new pb::MessageParser<Base_info>(() => new Base_info());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Base_info> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.MessageBaseReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Base_info() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Base_info(Base_info other) : this() {
      _hasBits0 = other._hasBits0;
      msgType_ = other.msgType_;
      timeoutMs_ = other.timeoutMs_;
      sender_ = other.sender_;
      receiver_ = other.receiver_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Base_info Clone() {
      return new Base_info(this);
    }

    /// <summary>Field number for the "msg_type" field.</summary>
    public const int MsgTypeFieldNumber = 1;
    private readonly static global::Message.Message_type MsgTypeDefaultValue = global::Message.Message_type.EBaseMsg;

    private global::Message.Message_type msgType_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Message_type MsgType {
      get { if ((_hasBits0 & 1) != 0) { return msgType_; } else { return MsgTypeDefaultValue; } }
      set {
        _hasBits0 |= 1;
        msgType_ = value;
      }
    }
    /// <summary>Gets whether the "msg_type" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasMsgType {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "msg_type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearMsgType() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "timeout_ms" field.</summary>
    public const int TimeoutMsFieldNumber = 2;
    private readonly static int TimeoutMsDefaultValue = 0;

    private int timeoutMs_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int TimeoutMs {
      get { if ((_hasBits0 & 2) != 0) { return timeoutMs_; } else { return TimeoutMsDefaultValue; } }
      set {
        _hasBits0 |= 2;
        timeoutMs_ = value;
      }
    }
    /// <summary>Gets whether the "timeout_ms" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasTimeoutMs {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "timeout_ms" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTimeoutMs() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "sender" field.</summary>
    public const int SenderFieldNumber = 3;
    private readonly static global::Message.Communicator SenderDefaultValue = global::Message.Communicator.EEmpty;

    private global::Message.Communicator sender_;
    /// <summary>
    ///发送者
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Communicator Sender {
      get { if ((_hasBits0 & 4) != 0) { return sender_; } else { return SenderDefaultValue; } }
      set {
        _hasBits0 |= 4;
        sender_ = value;
      }
    }
    /// <summary>Gets whether the "sender" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasSender {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "sender" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearSender() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "receiver" field.</summary>
    public const int ReceiverFieldNumber = 4;
    private readonly static global::Message.Communicator ReceiverDefaultValue = global::Message.Communicator.EEmpty;

    private global::Message.Communicator receiver_;
    /// <summary>
    ///接收者
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Communicator Receiver {
      get { if ((_hasBits0 & 8) != 0) { return receiver_; } else { return ReceiverDefaultValue; } }
      set {
        _hasBits0 |= 8;
        receiver_ = value;
      }
    }
    /// <summary>Gets whether the "receiver" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasReceiver {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "receiver" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearReceiver() {
      _hasBits0 &= ~8;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Base_info);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Base_info other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (MsgType != other.MsgType) return false;
      if (TimeoutMs != other.TimeoutMs) return false;
      if (Sender != other.Sender) return false;
      if (Receiver != other.Receiver) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (HasMsgType) hash ^= MsgType.GetHashCode();
      if (HasTimeoutMs) hash ^= TimeoutMs.GetHashCode();
      if (HasSender) hash ^= Sender.GetHashCode();
      if (HasReceiver) hash ^= Receiver.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (HasMsgType) {
        output.WriteRawTag(8);
        output.WriteEnum((int) MsgType);
      }
      if (HasTimeoutMs) {
        output.WriteRawTag(16);
        output.WriteInt32(TimeoutMs);
      }
      if (HasSender) {
        output.WriteRawTag(24);
        output.WriteEnum((int) Sender);
      }
      if (HasReceiver) {
        output.WriteRawTag(32);
        output.WriteEnum((int) Receiver);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (HasMsgType) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MsgType);
      }
      if (HasTimeoutMs) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimeoutMs);
      }
      if (HasSender) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Sender);
      }
      if (HasReceiver) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Receiver);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Base_info other) {
      if (other == null) {
        return;
      }
      if (other.HasMsgType) {
        MsgType = other.MsgType;
      }
      if (other.HasTimeoutMs) {
        TimeoutMs = other.TimeoutMs;
      }
      if (other.HasSender) {
        Sender = other.Sender;
      }
      if (other.HasReceiver) {
        Receiver = other.Receiver;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            MsgType = (global::Message.Message_type) input.ReadEnum();
            break;
          }
          case 16: {
            TimeoutMs = input.ReadInt32();
            break;
          }
          case 24: {
            Sender = (global::Message.Communicator) input.ReadEnum();
            break;
          }
          case 32: {
            Receiver = (global::Message.Communicator) input.ReadEnum();
            break;
          }
        }
      }
    }

  }

  public sealed partial class Base_msg : pb::IMessage<Base_msg> {
    private static readonly pb::MessageParser<Base_msg> _parser = new pb::MessageParser<Base_msg>(() => new Base_msg());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Base_msg> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.MessageBaseReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Base_msg() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Base_msg(Base_msg other) : this() {
      baseInfo_ = other.baseInfo_ != null ? other.baseInfo_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Base_msg Clone() {
      return new Base_msg(this);
    }

    /// <summary>Field number for the "base_info" field.</summary>
    public const int BaseInfoFieldNumber = 1;
    private global::Message.Base_info baseInfo_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Base_info BaseInfo {
      get { return baseInfo_; }
      set {
        baseInfo_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Base_msg);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Base_msg other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(BaseInfo, other.BaseInfo)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (baseInfo_ != null) hash ^= BaseInfo.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (baseInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BaseInfo);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Base_msg other) {
      if (other == null) {
        return;
      }
      if (other.baseInfo_ != null) {
        if (baseInfo_ == null) {
          BaseInfo = new global::Message.Base_info();
        }
        BaseInfo.MergeFrom(other.BaseInfo);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (baseInfo_ == null) {
              BaseInfo = new global::Message.Base_info();
            }
            input.ReadMessage(BaseInfo);
            break;
          }
        }
      }
    }

  }

  public sealed partial class Error_manager : pb::IMessage<Error_manager> {
    private static readonly pb::MessageParser<Error_manager> _parser = new pb::MessageParser<Error_manager>(() => new Error_manager());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Error_manager> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.MessageBaseReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Error_manager() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Error_manager(Error_manager other) : this() {
      _hasBits0 = other._hasBits0;
      errorCode_ = other.errorCode_;
      errorLevel_ = other.errorLevel_;
      errorDescription_ = other.errorDescription_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Error_manager Clone() {
      return new Error_manager(this);
    }

    /// <summary>Field number for the "error_code" field.</summary>
    public const int ErrorCodeFieldNumber = 1;
    private readonly static int ErrorCodeDefaultValue = 0;

    private int errorCode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int ErrorCode {
      get { if ((_hasBits0 & 1) != 0) { return errorCode_; } else { return ErrorCodeDefaultValue; } }
      set {
        _hasBits0 |= 1;
        errorCode_ = value;
      }
    }
    /// <summary>Gets whether the "error_code" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasErrorCode {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "error_code" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearErrorCode() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "error_level" field.</summary>
    public const int ErrorLevelFieldNumber = 2;
    private readonly static global::Message.Error_level ErrorLevelDefaultValue = global::Message.Error_level.Normal;

    private global::Message.Error_level errorLevel_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Error_level ErrorLevel {
      get { if ((_hasBits0 & 2) != 0) { return errorLevel_; } else { return ErrorLevelDefaultValue; } }
      set {
        _hasBits0 |= 2;
        errorLevel_ = value;
      }
    }
    /// <summary>Gets whether the "error_level" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasErrorLevel {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "error_level" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearErrorLevel() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "error_description" field.</summary>
    public const int ErrorDescriptionFieldNumber = 3;
    private readonly static string ErrorDescriptionDefaultValue = "";

    private string errorDescription_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string ErrorDescription {
      get { return errorDescription_ ?? ErrorDescriptionDefaultValue; }
      set {
        errorDescription_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "error_description" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasErrorDescription {
      get { return errorDescription_ != null; }
    }
    /// <summary>Clears the value of the "error_description" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearErrorDescription() {
      errorDescription_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Error_manager);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Error_manager other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ErrorCode != other.ErrorCode) return false;
      if (ErrorLevel != other.ErrorLevel) return false;
      if (ErrorDescription != other.ErrorDescription) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (HasErrorCode) hash ^= ErrorCode.GetHashCode();
      if (HasErrorLevel) hash ^= ErrorLevel.GetHashCode();
      if (HasErrorDescription) hash ^= ErrorDescription.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (HasErrorCode) {
        output.WriteRawTag(8);
        output.WriteInt32(ErrorCode);
      }
      if (HasErrorLevel) {
        output.WriteRawTag(16);
        output.WriteEnum((int) ErrorLevel);
      }
      if (HasErrorDescription) {
        output.WriteRawTag(26);
        output.WriteString(ErrorDescription);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (HasErrorCode) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ErrorCode);
      }
      if (HasErrorLevel) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ErrorLevel);
      }
      if (HasErrorDescription) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ErrorDescription);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Error_manager other) {
      if (other == null) {
        return;
      }
      if (other.HasErrorCode) {
        ErrorCode = other.ErrorCode;
      }
      if (other.HasErrorLevel) {
        ErrorLevel = other.ErrorLevel;
      }
      if (other.HasErrorDescription) {
        ErrorDescription = other.ErrorDescription;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ErrorCode = input.ReadInt32();
            break;
          }
          case 16: {
            ErrorLevel = (global::Message.Error_level) input.ReadEnum();
            break;
          }
          case 26: {
            ErrorDescription = input.ReadString();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  ///测量结果结构体
  /// </summary>
  public sealed partial class Locate_information : pb::IMessage<Locate_information> {
    private static readonly pb::MessageParser<Locate_information> _parser = new pb::MessageParser<Locate_information>(() => new Locate_information());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Locate_information> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.MessageBaseReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Locate_information() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Locate_information(Locate_information other) : this() {
      _hasBits0 = other._hasBits0;
      locateX_ = other.locateX_;
      locateY_ = other.locateY_;
      locateAngle_ = other.locateAngle_;
      locateLength_ = other.locateLength_;
      locateWidth_ = other.locateWidth_;
      locateHeight_ = other.locateHeight_;
      locateWheelBase_ = other.locateWheelBase_;
      locateWheelWidth_ = other.locateWheelWidth_;
      locateCorrect_ = other.locateCorrect_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Locate_information Clone() {
      return new Locate_information(this);
    }

    /// <summary>Field number for the "locate_x" field.</summary>
    public const int LocateXFieldNumber = 1;
    private readonly static float LocateXDefaultValue = 0F;

    private float locateX_;
    /// <summary>
    ///整车的中心点x值; 四轮的中心
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LocateX {
      get { if ((_hasBits0 & 1) != 0) { return locateX_; } else { return LocateXDefaultValue; } }
      set {
        _hasBits0 |= 1;
        locateX_ = value;
      }
    }
    /// <summary>Gets whether the "locate_x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLocateX {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "locate_x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLocateX() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "locate_y" field.</summary>
    public const int LocateYFieldNumber = 2;
    private readonly static float LocateYDefaultValue = 0F;

    private float locateY_;
    /// <summary>
    ///整车的中心点y值; 四轮的中心
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LocateY {
      get { if ((_hasBits0 & 2) != 0) { return locateY_; } else { return LocateYDefaultValue; } }
      set {
        _hasBits0 |= 2;
        locateY_ = value;
      }
    }
    /// <summary>Gets whether the "locate_y" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLocateY {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "locate_y" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLocateY() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "locate_angle" field.</summary>
    public const int LocateAngleFieldNumber = 3;
    private readonly static float LocateAngleDefaultValue = 0F;

    private float locateAngle_;
    /// <summary>
    ///整车的旋转角; 四轮的旋转角
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LocateAngle {
      get { if ((_hasBits0 & 4) != 0) { return locateAngle_; } else { return LocateAngleDefaultValue; } }
      set {
        _hasBits0 |= 4;
        locateAngle_ = value;
      }
    }
    /// <summary>Gets whether the "locate_angle" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLocateAngle {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "locate_angle" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLocateAngle() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "locate_length" field.</summary>
    public const int LocateLengthFieldNumber = 4;
    private readonly static float LocateLengthDefaultValue = 0F;

    private float locateLength_;
    /// <summary>
    ///整车的长度; 用于规避碰撞
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LocateLength {
      get { if ((_hasBits0 & 8) != 0) { return locateLength_; } else { return LocateLengthDefaultValue; } }
      set {
        _hasBits0 |= 8;
        locateLength_ = value;
      }
    }
    /// <summary>Gets whether the "locate_length" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLocateLength {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "locate_length" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLocateLength() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "locate_width" field.</summary>
    public const int LocateWidthFieldNumber = 5;
    private readonly static float LocateWidthDefaultValue = 0F;

    private float locateWidth_;
    /// <summary>
    ///整车的宽度; 用于规避碰撞
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LocateWidth {
      get { if ((_hasBits0 & 16) != 0) { return locateWidth_; } else { return LocateWidthDefaultValue; } }
      set {
        _hasBits0 |= 16;
        locateWidth_ = value;
      }
    }
    /// <summary>Gets whether the "locate_width" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLocateWidth {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "locate_width" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLocateWidth() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "locate_height" field.</summary>
    public const int LocateHeightFieldNumber = 6;
    private readonly static float LocateHeightDefaultValue = 0F;

    private float locateHeight_;
    /// <summary>
    ///整车的高度; 用于规避碰撞
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LocateHeight {
      get { if ((_hasBits0 & 32) != 0) { return locateHeight_; } else { return LocateHeightDefaultValue; } }
      set {
        _hasBits0 |= 32;
        locateHeight_ = value;
      }
    }
    /// <summary>Gets whether the "locate_height" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLocateHeight {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "locate_height" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLocateHeight() {
      _hasBits0 &= ~32;
    }

    /// <summary>Field number for the "locate_wheel_base" field.</summary>
    public const int LocateWheelBaseFieldNumber = 7;
    private readonly static float LocateWheelBaseDefaultValue = 0F;

    private float locateWheelBase_;
    /// <summary>
    ///整车的轮距; 前后轮的距离; 用于机器人或agv的抓车
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LocateWheelBase {
      get { if ((_hasBits0 & 64) != 0) { return locateWheelBase_; } else { return LocateWheelBaseDefaultValue; } }
      set {
        _hasBits0 |= 64;
        locateWheelBase_ = value;
      }
    }
    /// <summary>Gets whether the "locate_wheel_base" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLocateWheelBase {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "locate_wheel_base" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLocateWheelBase() {
      _hasBits0 &= ~64;
    }

    /// <summary>Field number for the "locate_wheel_width" field.</summary>
    public const int LocateWheelWidthFieldNumber = 8;
    private readonly static float LocateWheelWidthDefaultValue = 0F;

    private float locateWheelWidth_;
    /// <summary>
    ///整车的轮距; 左右轮的距离; 用于机器人或agv的抓车
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float LocateWheelWidth {
      get { if ((_hasBits0 & 128) != 0) { return locateWheelWidth_; } else { return LocateWheelWidthDefaultValue; } }
      set {
        _hasBits0 |= 128;
        locateWheelWidth_ = value;
      }
    }
    /// <summary>Gets whether the "locate_wheel_width" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLocateWheelWidth {
      get { return (_hasBits0 & 128) != 0; }
    }
    /// <summary>Clears the value of the "locate_wheel_width" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLocateWheelWidth() {
      _hasBits0 &= ~128;
    }

    /// <summary>Field number for the "locate_correct" field.</summary>
    public const int LocateCorrectFieldNumber = 9;
    private readonly static bool LocateCorrectDefaultValue = false;

    private bool locateCorrect_;
    /// <summary>
    ///整车的校准标记位
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool LocateCorrect {
      get { if ((_hasBits0 & 256) != 0) { return locateCorrect_; } else { return LocateCorrectDefaultValue; } }
      set {
        _hasBits0 |= 256;
        locateCorrect_ = value;
      }
    }
    /// <summary>Gets whether the "locate_correct" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLocateCorrect {
      get { return (_hasBits0 & 256) != 0; }
    }
    /// <summary>Clears the value of the "locate_correct" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLocateCorrect() {
      _hasBits0 &= ~256;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Locate_information);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Locate_information other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(LocateX, other.LocateX)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(LocateY, other.LocateY)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(LocateAngle, other.LocateAngle)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(LocateLength, other.LocateLength)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(LocateWidth, other.LocateWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(LocateHeight, other.LocateHeight)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(LocateWheelBase, other.LocateWheelBase)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(LocateWheelWidth, other.LocateWheelWidth)) return false;
      if (LocateCorrect != other.LocateCorrect) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (HasLocateX) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(LocateX);
      if (HasLocateY) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(LocateY);
      if (HasLocateAngle) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(LocateAngle);
      if (HasLocateLength) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(LocateLength);
      if (HasLocateWidth) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(LocateWidth);
      if (HasLocateHeight) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(LocateHeight);
      if (HasLocateWheelBase) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(LocateWheelBase);
      if (HasLocateWheelWidth) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(LocateWheelWidth);
      if (HasLocateCorrect) hash ^= LocateCorrect.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (HasLocateX) {
        output.WriteRawTag(13);
        output.WriteFloat(LocateX);
      }
      if (HasLocateY) {
        output.WriteRawTag(21);
        output.WriteFloat(LocateY);
      }
      if (HasLocateAngle) {
        output.WriteRawTag(29);
        output.WriteFloat(LocateAngle);
      }
      if (HasLocateLength) {
        output.WriteRawTag(37);
        output.WriteFloat(LocateLength);
      }
      if (HasLocateWidth) {
        output.WriteRawTag(45);
        output.WriteFloat(LocateWidth);
      }
      if (HasLocateHeight) {
        output.WriteRawTag(53);
        output.WriteFloat(LocateHeight);
      }
      if (HasLocateWheelBase) {
        output.WriteRawTag(61);
        output.WriteFloat(LocateWheelBase);
      }
      if (HasLocateWheelWidth) {
        output.WriteRawTag(69);
        output.WriteFloat(LocateWheelWidth);
      }
      if (HasLocateCorrect) {
        output.WriteRawTag(72);
        output.WriteBool(LocateCorrect);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (HasLocateX) {
        size += 1 + 4;
      }
      if (HasLocateY) {
        size += 1 + 4;
      }
      if (HasLocateAngle) {
        size += 1 + 4;
      }
      if (HasLocateLength) {
        size += 1 + 4;
      }
      if (HasLocateWidth) {
        size += 1 + 4;
      }
      if (HasLocateHeight) {
        size += 1 + 4;
      }
      if (HasLocateWheelBase) {
        size += 1 + 4;
      }
      if (HasLocateWheelWidth) {
        size += 1 + 4;
      }
      if (HasLocateCorrect) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Locate_information other) {
      if (other == null) {
        return;
      }
      if (other.HasLocateX) {
        LocateX = other.LocateX;
      }
      if (other.HasLocateY) {
        LocateY = other.LocateY;
      }
      if (other.HasLocateAngle) {
        LocateAngle = other.LocateAngle;
      }
      if (other.HasLocateLength) {
        LocateLength = other.LocateLength;
      }
      if (other.HasLocateWidth) {
        LocateWidth = other.LocateWidth;
      }
      if (other.HasLocateHeight) {
        LocateHeight = other.LocateHeight;
      }
      if (other.HasLocateWheelBase) {
        LocateWheelBase = other.LocateWheelBase;
      }
      if (other.HasLocateWheelWidth) {
        LocateWheelWidth = other.LocateWheelWidth;
      }
      if (other.HasLocateCorrect) {
        LocateCorrect = other.LocateCorrect;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            LocateX = input.ReadFloat();
            break;
          }
          case 21: {
            LocateY = input.ReadFloat();
            break;
          }
          case 29: {
            LocateAngle = input.ReadFloat();
            break;
          }
          case 37: {
            LocateLength = input.ReadFloat();
            break;
          }
          case 45: {
            LocateWidth = input.ReadFloat();
            break;
          }
          case 53: {
            LocateHeight = input.ReadFloat();
            break;
          }
          case 61: {
            LocateWheelBase = input.ReadFloat();
            break;
          }
          case 69: {
            LocateWheelWidth = input.ReadFloat();
            break;
          }
          case 72: {
            LocateCorrect = input.ReadBool();
            break;
          }
        }
      }
    }

  }

  public sealed partial class Car_info : pb::IMessage<Car_info> {
    private static readonly pb::MessageParser<Car_info> _parser = new pb::MessageParser<Car_info>(() => new Car_info());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Car_info> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.MessageBaseReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Car_info() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Car_info(Car_info other) : this() {
      _hasBits0 = other._hasBits0;
      carLength_ = other.carLength_;
      carWidth_ = other.carWidth_;
      carHeight_ = other.carHeight_;
      license_ = other.license_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Car_info Clone() {
      return new Car_info(this);
    }

    /// <summary>Field number for the "car_length" field.</summary>
    public const int CarLengthFieldNumber = 1;
    private readonly static float CarLengthDefaultValue = 0F;

    private float carLength_;
    /// <summary>
    ///车长
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float CarLength {
      get { if ((_hasBits0 & 1) != 0) { return carLength_; } else { return CarLengthDefaultValue; } }
      set {
        _hasBits0 |= 1;
        carLength_ = value;
      }
    }
    /// <summary>Gets whether the "car_length" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasCarLength {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "car_length" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearCarLength() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "car_width" field.</summary>
    public const int CarWidthFieldNumber = 2;
    private readonly static float CarWidthDefaultValue = 0F;

    private float carWidth_;
    /// <summary>
    ///车宽
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float CarWidth {
      get { if ((_hasBits0 & 2) != 0) { return carWidth_; } else { return CarWidthDefaultValue; } }
      set {
        _hasBits0 |= 2;
        carWidth_ = value;
      }
    }
    /// <summary>Gets whether the "car_width" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasCarWidth {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "car_width" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearCarWidth() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "car_height" field.</summary>
    public const int CarHeightFieldNumber = 3;
    private readonly static float CarHeightDefaultValue = 0F;

    private float carHeight_;
    /// <summary>
    ///车高
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float CarHeight {
      get { if ((_hasBits0 & 4) != 0) { return carHeight_; } else { return CarHeightDefaultValue; } }
      set {
        _hasBits0 |= 4;
        carHeight_ = value;
      }
    }
    /// <summary>Gets whether the "car_height" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasCarHeight {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "car_height" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearCarHeight() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "license" field.</summary>
    public const int LicenseFieldNumber = 4;
    private readonly static string LicenseDefaultValue = "";

    private string license_;
    /// <summary>
    ///车辆凭证号
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string License {
      get { return license_ ?? LicenseDefaultValue; }
      set {
        license_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "license" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLicense {
      get { return license_ != null; }
    }
    /// <summary>Clears the value of the "license" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLicense() {
      license_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Car_info);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Car_info other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(CarLength, other.CarLength)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(CarWidth, other.CarWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(CarHeight, other.CarHeight)) return false;
      if (License != other.License) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (HasCarLength) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(CarLength);
      if (HasCarWidth) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(CarWidth);
      if (HasCarHeight) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(CarHeight);
      if (HasLicense) hash ^= License.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (HasCarLength) {
        output.WriteRawTag(13);
        output.WriteFloat(CarLength);
      }
      if (HasCarWidth) {
        output.WriteRawTag(21);
        output.WriteFloat(CarWidth);
      }
      if (HasCarHeight) {
        output.WriteRawTag(29);
        output.WriteFloat(CarHeight);
      }
      if (HasLicense) {
        output.WriteRawTag(34);
        output.WriteString(License);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (HasCarLength) {
        size += 1 + 4;
      }
      if (HasCarWidth) {
        size += 1 + 4;
      }
      if (HasCarHeight) {
        size += 1 + 4;
      }
      if (HasLicense) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(License);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Car_info other) {
      if (other == null) {
        return;
      }
      if (other.HasCarLength) {
        CarLength = other.CarLength;
      }
      if (other.HasCarWidth) {
        CarWidth = other.CarWidth;
      }
      if (other.HasCarHeight) {
        CarHeight = other.CarHeight;
      }
      if (other.HasLicense) {
        License = other.License;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            CarLength = input.ReadFloat();
            break;
          }
          case 21: {
            CarWidth = input.ReadFloat();
            break;
          }
          case 29: {
            CarHeight = input.ReadFloat();
            break;
          }
          case 34: {
            License = input.ReadString();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  ///单个车位基本信息与状态信息
  /// </summary>
  public sealed partial class Parkspace_info : pb::IMessage<Parkspace_info> {
    private static readonly pb::MessageParser<Parkspace_info> _parser = new pb::MessageParser<Parkspace_info>(() => new Parkspace_info());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Parkspace_info> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.MessageBaseReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Parkspace_info() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Parkspace_info(Parkspace_info other) : this() {
      _hasBits0 = other._hasBits0;
      parkspaceId_ = other.parkspaceId_;
      index_ = other.index_;
      direction_ = other.direction_;
      floor_ = other.floor_;
      length_ = other.length_;
      width_ = other.width_;
      height_ = other.height_;
      parkspaceStatus_ = other.parkspaceStatus_;
      carInfo_ = other.carInfo_ != null ? other.carInfo_.Clone() : null;
      entryTime_ = other.entryTime_;
      leaveTime_ = other.leaveTime_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Parkspace_info Clone() {
      return new Parkspace_info(this);
    }

    /// <summary>Field number for the "parkspace_id" field.</summary>
    public const int ParkspaceIdFieldNumber = 1;
    private readonly static int ParkspaceIdDefaultValue = 0;

    private int parkspaceId_;
    /// <summary>
    ///车位编号
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int ParkspaceId {
      get { if ((_hasBits0 & 1) != 0) { return parkspaceId_; } else { return ParkspaceIdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        parkspaceId_ = value;
      }
    }
    /// <summary>Gets whether the "parkspace_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasParkspaceId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "parkspace_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearParkspaceId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "index" field.</summary>
    public const int IndexFieldNumber = 2;
    private readonly static int IndexDefaultValue = 0;

    private int index_;
    /// <summary>
    ///同层编号
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Index {
      get { if ((_hasBits0 & 2) != 0) { return index_; } else { return IndexDefaultValue; } }
      set {
        _hasBits0 |= 2;
        index_ = value;
      }
    }
    /// <summary>Gets whether the "index" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasIndex {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "index" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearIndex() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "direction" field.</summary>
    public const int DirectionFieldNumber = 3;
    private readonly static global::Message.Direction DirectionDefaultValue = global::Message.Direction.EForward;

    private global::Message.Direction direction_;
    /// <summary>
    ///前后
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Direction Direction {
      get { if ((_hasBits0 & 4) != 0) { return direction_; } else { return DirectionDefaultValue; } }
      set {
        _hasBits0 |= 4;
        direction_ = value;
      }
    }
    /// <summary>Gets whether the "direction" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasDirection {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "direction" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearDirection() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "floor" field.</summary>
    public const int FloorFieldNumber = 4;
    private readonly static int FloorDefaultValue = 0;

    private int floor_;
    /// <summary>
    ///楼层
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Floor {
      get { if ((_hasBits0 & 8) != 0) { return floor_; } else { return FloorDefaultValue; } }
      set {
        _hasBits0 |= 8;
        floor_ = value;
      }
    }
    /// <summary>Gets whether the "floor" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasFloor {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "floor" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearFloor() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "length" field.</summary>
    public const int LengthFieldNumber = 5;
    private readonly static float LengthDefaultValue = 0F;

    private float length_;
    /// <summary>
    ///车位长
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Length {
      get { if ((_hasBits0 & 16) != 0) { return length_; } else { return LengthDefaultValue; } }
      set {
        _hasBits0 |= 16;
        length_ = value;
      }
    }
    /// <summary>Gets whether the "length" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLength {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "length" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLength() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "width" field.</summary>
    public const int WidthFieldNumber = 6;
    private readonly static float WidthDefaultValue = 0F;

    private float width_;
    /// <summary>
    ///车位宽
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Width {
      get { if ((_hasBits0 & 32) != 0) { return width_; } else { return WidthDefaultValue; } }
      set {
        _hasBits0 |= 32;
        width_ = value;
      }
    }
    /// <summary>Gets whether the "width" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasWidth {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "width" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearWidth() {
      _hasBits0 &= ~32;
    }

    /// <summary>Field number for the "height" field.</summary>
    public const int HeightFieldNumber = 7;
    private readonly static float HeightDefaultValue = 0F;

    private float height_;
    /// <summary>
    ///车位高
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Height {
      get { if ((_hasBits0 & 64) != 0) { return height_; } else { return HeightDefaultValue; } }
      set {
        _hasBits0 |= 64;
        height_ = value;
      }
    }
    /// <summary>Gets whether the "height" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasHeight {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "height" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearHeight() {
      _hasBits0 &= ~64;
    }

    /// <summary>Field number for the "parkspace_status" field.</summary>
    public const int ParkspaceStatusFieldNumber = 8;
    private readonly static global::Message.Parkspace_status ParkspaceStatusDefaultValue = global::Message.Parkspace_status.EParkspaceEmpty;

    private global::Message.Parkspace_status parkspaceStatus_;
    /// <summary>
    ///车位当前状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Parkspace_status ParkspaceStatus {
      get { if ((_hasBits0 & 128) != 0) { return parkspaceStatus_; } else { return ParkspaceStatusDefaultValue; } }
      set {
        _hasBits0 |= 128;
        parkspaceStatus_ = value;
      }
    }
    /// <summary>Gets whether the "parkspace_status" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasParkspaceStatus {
      get { return (_hasBits0 & 128) != 0; }
    }
    /// <summary>Clears the value of the "parkspace_status" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearParkspaceStatus() {
      _hasBits0 &= ~128;
    }

    /// <summary>Field number for the "car_info" field.</summary>
    public const int CarInfoFieldNumber = 9;
    private global::Message.Car_info carInfo_;
    /// <summary>
    ///当前车位存入车辆的凭证号
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Car_info CarInfo {
      get { return carInfo_; }
      set {
        carInfo_ = value;
      }
    }

    /// <summary>Field number for the "entry_time" field.</summary>
    public const int EntryTimeFieldNumber = 10;
    private readonly static string EntryTimeDefaultValue = "";

    private string entryTime_;
    /// <summary>
    ///入场时间
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string EntryTime {
      get { return entryTime_ ?? EntryTimeDefaultValue; }
      set {
        entryTime_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "entry_time" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasEntryTime {
      get { return entryTime_ != null; }
    }
    /// <summary>Clears the value of the "entry_time" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearEntryTime() {
      entryTime_ = null;
    }

    /// <summary>Field number for the "leave_time" field.</summary>
    public const int LeaveTimeFieldNumber = 11;
    private readonly static string LeaveTimeDefaultValue = "";

    private string leaveTime_;
    /// <summary>
    ///离场时间
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string LeaveTime {
      get { return leaveTime_ ?? LeaveTimeDefaultValue; }
      set {
        leaveTime_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "leave_time" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLeaveTime {
      get { return leaveTime_ != null; }
    }
    /// <summary>Clears the value of the "leave_time" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLeaveTime() {
      leaveTime_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as Parkspace_info);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Parkspace_info other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ParkspaceId != other.ParkspaceId) return false;
      if (Index != other.Index) return false;
      if (Direction != other.Direction) return false;
      if (Floor != other.Floor) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Length, other.Length)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Width, other.Width)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Height, other.Height)) return false;
      if (ParkspaceStatus != other.ParkspaceStatus) return false;
      if (!object.Equals(CarInfo, other.CarInfo)) return false;
      if (EntryTime != other.EntryTime) return false;
      if (LeaveTime != other.LeaveTime) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (HasParkspaceId) hash ^= ParkspaceId.GetHashCode();
      if (HasIndex) hash ^= Index.GetHashCode();
      if (HasDirection) hash ^= Direction.GetHashCode();
      if (HasFloor) hash ^= Floor.GetHashCode();
      if (HasLength) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Length);
      if (HasWidth) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Width);
      if (HasHeight) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Height);
      if (HasParkspaceStatus) hash ^= ParkspaceStatus.GetHashCode();
      if (carInfo_ != null) hash ^= CarInfo.GetHashCode();
      if (HasEntryTime) hash ^= EntryTime.GetHashCode();
      if (HasLeaveTime) hash ^= LeaveTime.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (HasParkspaceId) {
        output.WriteRawTag(8);
        output.WriteInt32(ParkspaceId);
      }
      if (HasIndex) {
        output.WriteRawTag(16);
        output.WriteInt32(Index);
      }
      if (HasDirection) {
        output.WriteRawTag(24);
        output.WriteEnum((int) Direction);
      }
      if (HasFloor) {
        output.WriteRawTag(32);
        output.WriteInt32(Floor);
      }
      if (HasLength) {
        output.WriteRawTag(45);
        output.WriteFloat(Length);
      }
      if (HasWidth) {
        output.WriteRawTag(53);
        output.WriteFloat(Width);
      }
      if (HasHeight) {
        output.WriteRawTag(61);
        output.WriteFloat(Height);
      }
      if (HasParkspaceStatus) {
        output.WriteRawTag(64);
        output.WriteEnum((int) ParkspaceStatus);
      }
      if (carInfo_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(CarInfo);
      }
      if (HasEntryTime) {
        output.WriteRawTag(82);
        output.WriteString(EntryTime);
      }
      if (HasLeaveTime) {
        output.WriteRawTag(90);
        output.WriteString(LeaveTime);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (HasParkspaceId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ParkspaceId);
      }
      if (HasIndex) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Index);
      }
      if (HasDirection) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Direction);
      }
      if (HasFloor) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Floor);
      }
      if (HasLength) {
        size += 1 + 4;
      }
      if (HasWidth) {
        size += 1 + 4;
      }
      if (HasHeight) {
        size += 1 + 4;
      }
      if (HasParkspaceStatus) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ParkspaceStatus);
      }
      if (carInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CarInfo);
      }
      if (HasEntryTime) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(EntryTime);
      }
      if (HasLeaveTime) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(LeaveTime);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Parkspace_info other) {
      if (other == null) {
        return;
      }
      if (other.HasParkspaceId) {
        ParkspaceId = other.ParkspaceId;
      }
      if (other.HasIndex) {
        Index = other.Index;
      }
      if (other.HasDirection) {
        Direction = other.Direction;
      }
      if (other.HasFloor) {
        Floor = other.Floor;
      }
      if (other.HasLength) {
        Length = other.Length;
      }
      if (other.HasWidth) {
        Width = other.Width;
      }
      if (other.HasHeight) {
        Height = other.Height;
      }
      if (other.HasParkspaceStatus) {
        ParkspaceStatus = other.ParkspaceStatus;
      }
      if (other.carInfo_ != null) {
        if (carInfo_ == null) {
          CarInfo = new global::Message.Car_info();
        }
        CarInfo.MergeFrom(other.CarInfo);
      }
      if (other.HasEntryTime) {
        EntryTime = other.EntryTime;
      }
      if (other.HasLeaveTime) {
        LeaveTime = other.LeaveTime;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ParkspaceId = input.ReadInt32();
            break;
          }
          case 16: {
            Index = input.ReadInt32();
            break;
          }
          case 24: {
            Direction = (global::Message.Direction) input.ReadEnum();
            break;
          }
          case 32: {
            Floor = input.ReadInt32();
            break;
          }
          case 45: {
            Length = input.ReadFloat();
            break;
          }
          case 53: {
            Width = input.ReadFloat();
            break;
          }
          case 61: {
            Height = input.ReadFloat();
            break;
          }
          case 64: {
            ParkspaceStatus = (global::Message.Parkspace_status) input.ReadEnum();
            break;
          }
          case 74: {
            if (carInfo_ == null) {
              CarInfo = new global::Message.Car_info();
            }
            input.ReadMessage(CarInfo);
            break;
          }
          case 82: {
            EntryTime = input.ReadString();
            break;
          }
          case 90: {
            LeaveTime = input.ReadString();
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code
