// <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(
            "ChJtZXNzYWdlX2Jhc2UucHJvdG8SB21lc3NhZ2UitgEKCUJhc2VfaW5mbxIy",
            "Cghtc2dfdHlwZRgBIAIoDjIVLm1lc3NhZ2UuTWVzc2FnZV90eXBlOgllQmFz",
            "ZV9tc2cSFQoKdGltZW91dF9tcxgCIAEoBToBMBItCgZzZW5kZXIYAyACKA4y",
            "FS5tZXNzYWdlLkNvbW11bmljYXRvcjoGZUVtcHR5Ei8KCHJlY2VpdmVyGAQg",
            "AigOMhUubWVzc2FnZS5Db21tdW5pY2F0b3I6BmVFbXB0eSIxCghCYXNlX21z",
            "ZxIlCgliYXNlX2luZm8YASACKAsyEi5tZXNzYWdlLkJhc2VfaW5mbyJ2Cg1F",
            "cnJvcl9tYW5hZ2VyEhUKCmVycm9yX2NvZGUYASACKAU6ATASMQoLZXJyb3Jf",
            "bGV2ZWwYAiABKA4yFC5tZXNzYWdlLkVycm9yX2xldmVsOgZOT1JNQUwSGwoR",
            "ZXJyb3JfZGVzY3JpcHRpb24YAyABKAk6ACLRAgoSTG9jYXRlX2luZm9ybWF0",
            "aW9uEhMKCGxvY2F0ZV94GAEgASgCOgEwEhMKCGxvY2F0ZV95GAIgASgCOgEw",
            "EhcKDGxvY2F0ZV9hbmdsZRgDIAEoAjoBMBIYCg1sb2NhdGVfbGVuZ3RoGAQg",
            "ASgCOgEwEhcKDGxvY2F0ZV93aWR0aBgFIAEoAjoBMBIYCg1sb2NhdGVfaGVp",
            "Z2h0GAYgASgCOgEwEhwKEWxvY2F0ZV93aGVlbF9iYXNlGAcgASgCOgEwEh0K",
            "EmxvY2F0ZV93aGVlbF93aWR0aBgIIAEoAjoBMBIdCg5sb2NhdGVfY29ycmVj",
            "dBgJIAEoCDoFZmFsc2USHQoSbG9jYXRlX2Zyb250X3RoZXRhGAogASgCOgEw",
            "EhcKD3VuaWZvcm1lZF9jYXJfeBgLIAEoAhIXCg91bmlmb3JtZWRfY2FyX3kY",
            "DCABKAIiswEKCENhcl9pbmZvEhUKCmNhcl9sZW5ndGgYASABKAI6ATASFAoJ",
            "Y2FyX3dpZHRoGAIgASgCOgEwEhUKCmNhcl9oZWlnaHQYAyABKAI6ATASEQoH",
            "bGljZW5zZRgEIAEoCToAEhkKD2Nhcl9udW1iZXJQbGF0ZRgFIAEoCToAEhkK",
            "DmNhcl93aGVlbF9iYXNlGAYgASgCOgEwEhoKD2Nhcl93aGVlbF93aWR0aBgH",
            "IAEoAjoBMCL9BAoOUGFya3NwYWNlX2luZm8SHQoVcGFya2luZ3NwYWNlX2lu",
            "ZGV4X2lkGAEgASgFEjIKEXBhcmtpbmdzcGFjZV90eXBlGAIgASgOMhcubWVz",
            "c2FnZS5QYXJrc3BhY2VfdHlwZRIcChRwYXJraW5nc3BhY2VfdW5pdF9pZBgD",
            "IAEoBRIdChVwYXJraW5nc3BhY2VfbGFiZWxfaWQYBCABKAUSHAoUcGFya2lu",
            "Z3NwYWNlX3Jvb21faWQYBSABKAUSMgoWcGFya2luZ3NwYWNlX2RpcmVjdGlv",
            "bhgGIAEoDjISLm1lc3NhZ2UuRGlyZWN0aW9uEh0KFXBhcmtpbmdzcGFjZV9m",
            "bG9vcl9pZBgHIAEoBRIaChJwYXJraW5nc3BhY2Vfd2lkdGgYCCABKAISGwoT",
            "cGFya2luZ3NwYWNlX2hlaWdodBgJIAEoAhI2ChNwYXJraW5nc3BhY2Vfc3Rh",
            "dHVzGAogASgOMhkubWVzc2FnZS5QYXJrc3BhY2Vfc3RhdHVzEiMKCGNhcl9p",
            "bmZvGAsgASgLMhEubWVzc2FnZS5DYXJfaW5mbxISCgplbnRyeV90aW1lGAwg",
            "ASgJEhIKCmxlYXZlX3RpbWUYDSABKAkSLwoOcGFya3NwYWNlX3BhdGgYDiAB",
            "KA4yFy5tZXNzYWdlLlBhcmtzcGFjZV9wYXRoEhoKEnBhdGhfZXN0aW1hdGVf",
            "dGltZRgPIAEoAhI6ChdwYXJrc3BhY2Vfc3RhdHVzX3RhcmdldBgQIAEoDjIZ",
            "Lm1lc3NhZ2UuUGFya3NwYWNlX3N0YXR1cxIjCghjYXJfdHlwZRgRIAEoDjIR",
            "Lm1lc3NhZ2UuQ2FyX3R5cGUiMQoJSWRfc3RydWN0EhMKC3Rlcm1pbmFsX2lk",
            "GAEgASgFEg8KB3VuaXRfaWQYAiABKAUqxwwKDE1lc3NhZ2VfdHlwZRINCgll",
            "QmFzZV9tc2cQABIQCgxlQ29tbWFuZF9tc2cQARIWChJlTG9jYXRlX3N0YXR1",
            "c19tc2cQERIXChNlTG9jYXRlX3JlcXVlc3RfbXNnEBISGAoUZUxvY2F0ZV9y",
            "ZXNwb25zZV9tc2cQExIcChhlTG9jYXRlX3NpZnRfcmVxdWVzdF9tc2cQFBId",
            "ChllTG9jYXRlX3NpZnRfcmVzcG9uc2VfbXNnEBUSGAoUZURpc3BhdGNoX3N0",
            "YXR1c19tc2cQIRIZChVlRGlzcGF0Y2hfcmVxdWVzdF9tc2cQIhIaChZlRGlz",
            "cGF0Y2hfcmVzcG9uc2VfbXNnECMSJAogZVBhcmtzcGFjZV9hbGxvY2F0aW9u",
            "X3N0YXR1c19tc2cQMRIlCiFlUGFya3NwYWNlX2FsbG9jYXRpb25fcmVxdWVz",
            "dF9tc2cQMhImCiJlUGFya3NwYWNlX2FsbG9jYXRpb25fcmVzcG9uc2VfbXNn",
            "EDMSIQodZVBhcmtzcGFjZV9zZWFyY2hfcmVxdWVzdF9tc2cQNBIiCh5lUGFy",
            "a3NwYWNlX3NlYXJjaF9yZXNwb25zZV9tc2cQNRIiCh5lUGFya3NwYWNlX3Jl",
            "bGVhc2VfcmVxdWVzdF9tc2cQNhIjCh9lUGFya3NwYWNlX3JlbGVhc2VfcmVz",
            "cG9uc2VfbXNnEDcSJwojZVBhcmtzcGFjZV9mb3JjZV91cGRhdGVfcmVxdWVz",
            "dF9tc2cQOBIoCiRlUGFya3NwYWNlX2ZvcmNlX3VwZGF0ZV9yZXNwb25zZV9t",
            "c2cQORIoCiRlUGFya3NwYWNlX2NvbmZpcm1fYWxsb2NfcmVxdWVzdF9tc2cQ",
            "OhIpCiVlUGFya3NwYWNlX2NvbmZpcm1fYWxsb2NfcmVzcG9uc2VfbXNnEDsS",
            "IgoeZVBhcmtzcGFjZV9yZWZyZXNoX3JlcXVlc3RfbXNnEDwSKwonZVBhcmtz",
            "cGFjZV9hbGxvY2F0aW9uX2RhdGFfcmVzcG9uc2VfbXNnED0SKAokZVBhcmtz",
            "cGFjZV9tYW51YWxfc2VhcmNoX3JlcXVlc3RfbXNnED4SKQolZVBhcmtzcGFj",
            "ZV9tYW51YWxfc2VhcmNoX3Jlc3BvbnNlX21zZxA/Eh4KGmVTdG9yZV9jb21t",
            "YW5kX3JlcXVlc3RfbXNnEEESHwobZVN0b3JlX2NvbW1hbmRfcmVzcG9uc2Vf",
            "bXNnEEISHwobZVBpY2t1cF9jb21tYW5kX3JlcXVlc3RfbXNnEEMSIAocZVBp",
            "Y2t1cF9jb21tYW5kX3Jlc3BvbnNlX21zZxBEEhgKFGVUZXJtaW5hbF9zdGF0",
            "dXNfbXNnEFASHwoaZVN0b3JpbmdfcHJvY2Vzc19zdGF0dV9tc2cQkAESHwoa",
            "ZVBpY2tpbmdfcHJvY2Vzc19zdGF0dV9tc2cQkQESIgodZUNlbnRyYWxfY29u",
            "dHJvbGxlcl9zdGF0dV9tc2cQoAESIwoeZUVudHJhbmNlX21hbnVhbF9vcGVy",
            "YXRpb25fbXNnELABEiIKHWVQcm9jZXNzX21hbnVhbF9vcGVyYXRpb25fbXNn",
            "ELEBEhgKE2VOb3RpZnlfcmVxdWVzdF9tc2cQwAESGQoUZU5vdGlmeV9yZXNw",
            "b25zZV9tc2cQwQESFwoSZU5vdGlmeV9zdGF0dXNfbXNnEMIBEiMKHmVVbk5v",
            "cm1hbGl6ZWRfbW9kdWxlX3N0YXR1X21zZxDQARIfChplRGlzcGF0Y2hfcGxh",
            "bl9yZXF1ZXN0X21zZxDgARIgChtlRGlzcGF0Y2hfcGxhbl9yZXNwb25zZV9t",
            "c2cQ4QESIgodZURpc3BhdGNoX2NvbnRyb2xfcmVxdWVzdF9tc2cQ4gESIwoe",
            "ZURpc3BhdGNoX2NvbnRyb2xfcmVzcG9uc2VfbXNnEOMBEiEKHGVEaXNwYXRj",
            "aF9tYW5hZ2VyX3N0YXR1c19tc2cQ6gESHwoaZURpc3BhdGNoX21hbmFnZXJf",
            "ZGF0YV9tc2cQ6wESHwoaZUdyb3VuZF9kZXRlY3RfcmVxdWVzdF9tc2cQ8AES",
            "IAobZUdyb3VuZF9kZXRlY3RfcmVzcG9uc2VfbXNnEPEBEhcKEmVHcm91bmRf",
            "c3RhdHVzX21zZxDyASrHAQoMQ29tbXVuaWNhdG9yEgoKBmVFbXB0eRAAEgkK",
            "BWVNYWluEAESDgoJZVRlcm1pbm9yEIACEg8KCmVQYXJrc3BhY2UQgAQSDgoJ",
            "ZU1lYXN1cmVyEIAGEhoKFWVNZWFzdXJlcl9zaWZ0X3NlcnZlchCBBhIWChFl",
            "RGlzcGF0Y2hfbWFuYWdlchCACBIWChFlRGlzcGF0Y2hfY29udHJvbBCBCBIM",
            "CgdlTm90aWZ5EIEKEhUKEGVHcm91bmRfbWVhc3VyZXIQgB4qKgoMUHJvY2Vz",
            "c190eXBlEgwKCGVTdG9yaW5nEAESDAoIZVBpY2tpbmcQAiplCgtFcnJvcl9s",
            "ZXZlbBIKCgZOT1JNQUwQABIUChBORUdMSUdJQkxFX0VSUk9SEAESDwoLTUlO",
            "T1JfRVJST1IQAhIPCgtNQUpPUl9FUlJPUhADEhIKDkNSSVRJQ0FMX0VSUk9S",
            "EAQqpQEKEFBhcmtzcGFjZV9zdGF0dXMSHAoYZVBhcmtzcGFjZV9zdGF0dXNf",
            "dW5rbm93EAASFAoQZVBhcmtzcGFjZV9lbXB0eRABEhcKE2VQYXJrc3BhY2Vf",
            "b2NjdXBpZWQQAhIXChNlUGFya3NwYWNlX3Jlc2VydmVkEAMSFQoRZVBhcmtz",
            "cGFjZV9sb2NrZWQQBBIUChBlUGFya3NwYWNlX2Vycm9yEAUqPwoJRGlyZWN0",
            "aW9uEhUKEWVEaXJlY3Rpb25fdW5rbm93EAASDAoIZUZvcndhcmQQARINCgll",
            "QmFja3dhcmQQAipsCg5QYXJrc3BhY2VfcGF0aBIPCgtVTktOT1dfUEFUSBAA",
            "EhAKDE9QVElNQUxfUEFUSBABEg0KCUxFRlRfUEFUSBACEg4KClJJR0hUX1BB",
            "VEgQAxIYChRURU1QT1JBUllfQ0FDSEVfUEFUSBAEKm0KDlBhcmtzcGFjZV90",
            "eXBlEhkKFVVOS05PV19QQVJLU1BBQ0VfVFlQRRAAEhQKEE1JTl9QQVJLSU5H",
            "U1BBQ0UQARIUChBNSURfUEFSS0lOR1NQQUNFEAISFAoQQklHX1BBUktJTkdT",
            "UEFDRRADKkYKCENhcl90eXBlEhMKD1VOS05PV19DQVJfVFlQRRAAEgsKB01J",
            "Tl9DQVIQARILCgdNSURfQ0FSEAISCwoHQklHX0NBUhADKt0CCglTdGVwX3R5",
            "cGUSDwoLZUFsbG9jX3N0ZXAQABIRCg1lTWVhc3VyZV9zdGVwEAESEQoNZUNv",
            "bXBhcmVfc3RlcBACEhIKDmVEaXNwYXRjaF9zdGVwEAMSEQoNZUNvbmZpcm1f",
            "c3RlcBAEEhAKDGVTZWFyY2hfc3RlcBAFEg4KCmVXYWl0X3N0ZXAQBhIRCg1l",
            "UmVsZWFzZV9zdGVwEAcSDQoJZUNvbXBsZXRlEAgSFQoRZUJhY2tDb25maXJt",
            "X3N0ZXAQCRIWChJlQmFja19jb21wYXJlX3N0ZXAQChIVChFlQmFja01lYXN1",
            "cmVfc3RlcBALEhMKD2VCYWNrQWxsb2Nfc3RlcBAMEhIKDmVCYWNrV2FpdF9z",
            "dGVwEA0SFgoSZUJhY2tEaXNwYXRjaF9zdGVwEA4SFAoQZUJhY2tTZWFyY2hf",
            "c3RlcBAPEhEKDWVCYWNrQ29tcGxldGUQECpDCgpTdGVwX3N0YXR1EgwKCGVX",
            "YWl0aW5nEAASDAoIZVdvcmtpbmcQARIKCgZlRXJyb3IQAhINCgllRmluaXNo",
            "ZWQQAyr4AQoURGlzcGF0Y2hfZGV2aWNlX3R5cGUSCwoHUk9CT1RfMRBlEgsK",
            "B1JPQk9UXzIQZhIOCglDQVJSSUVSXzEQyAESDgoJQ0FSUklFUl8yEM8BEg4K",
            "CUNBUlJJRVJfMxDLARIRCgxQQVNTQUdFV0FZXzAQrAISEQoMUEFTU0FHRVdB",
            "WV8xEK0CEhEKDFBBU1NBR0VXQVlfMhCuAhIRCgxQQVNTQUdFV0FZXzMQrwIS",
            "EQoMUEFTU0FHRVdBWV80ELACEhEKDFBBU1NBR0VXQVlfNRCxAhIRCgxQQVNT",
            "QUdFV0FZXzYQsgISEQoMUEFTU0FHRVdBWV83ELMC"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Message.Message_type), typeof(global::Message.Communicator), typeof(global::Message.Process_type), typeof(global::Message.Error_level), typeof(global::Message.Parkspace_status), typeof(global::Message.Direction), typeof(global::Message.Parkspace_path), typeof(global::Message.Parkspace_type), typeof(global::Message.Car_type), typeof(global::Message.Step_type), typeof(global::Message.Step_statu), typeof(global::Message.Dispatch_device_type), }, 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", "LocateFrontTheta", "UniformedCarX", "UniformedCarY" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Car_info), global::Message.Car_info.Parser, new[]{ "CarLength", "CarWidth", "CarHeight", "License", "CarNumberPlate", "CarWheelBase", "CarWheelWidth" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Parkspace_info), global::Message.Parkspace_info.Parser, new[]{ "ParkingspaceIndexId", "ParkingspaceType", "ParkingspaceUnitId", "ParkingspaceLabelId", "ParkingspaceRoomId", "ParkingspaceDirection", "ParkingspaceFloorId", "ParkingspaceWidth", "ParkingspaceHeight", "ParkingspaceStatus", "CarInfo", "EntryTime", "LeaveTime", "ParkspacePath", "PathEstimateTime", "ParkspaceStatusTarget", "CarType" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Id_struct), global::Message.Id_struct.Parser, new[]{ "TerminalId", "UnitId" }, 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("eLocate_sift_request_msg")] ELocateSiftRequestMsg = 20,
    /// <summary>
    ///预测算法反馈消息
    /// </summary>
    [pbr::OriginalName("eLocate_sift_response_msg")] ELocateSiftResponseMsg = 21,
    /// <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("eParkspace_refresh_request_msg")] EParkspaceRefreshRequestMsg = 60,
    /// <summary>
    ///车位数据反馈消息
    /// </summary>
    [pbr::OriginalName("eParkspace_allocation_data_response_msg")] EParkspaceAllocationDataResponseMsg = 61,
    /// <summary>
    ///手动查询车位请求消息
    /// </summary>
    [pbr::OriginalName("eParkspace_manual_search_request_msg")] EParkspaceManualSearchRequestMsg = 62,
    /// <summary>
    ///手动查询车位反馈消息
    /// </summary>
    [pbr::OriginalName("eParkspace_manual_search_response_msg")] EParkspaceManualSearchResponseMsg = 63,
    /// <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("eTerminal_status_msg")] ETerminalStatusMsg = 80,
    /// <summary>
    ///停车指令进度条消息
    /// </summary>
    [pbr::OriginalName("eStoring_process_statu_msg")] EStoringProcessStatuMsg = 144,
    /// <summary>
    ///取车指令进度消息
    /// </summary>
    [pbr::OriginalName("ePicking_process_statu_msg")] EPickingProcessStatuMsg = 145,
    /// <summary>
    ///中控系统状态消息
    /// </summary>
    [pbr::OriginalName("eCentral_controller_statu_msg")] ECentralControllerStatuMsg = 160,
    /// <summary>
    ///针对出入口状态操作的手动消息
    /// </summary>
    [pbr::OriginalName("eEntrance_manual_operation_msg")] EEntranceManualOperationMsg = 176,
    /// <summary>
    ///针对流程的手动消息
    /// </summary>
    [pbr::OriginalName("eProcess_manual_operation_msg")] EProcessManualOperationMsg = 177,
    /// <summary>
    ///取车等候区通知请求
    /// </summary>
    [pbr::OriginalName("eNotify_request_msg")] ENotifyRequestMsg = 192,
    /// <summary>
    ///等候区反馈
    /// </summary>
    [pbr::OriginalName("eNotify_response_msg")] ENotifyResponseMsg = 193,
    /// <summary>
    ///等候区通知节点状态
    /// </summary>
    [pbr::OriginalName("eNotify_status_msg")] ENotifyStatusMsg = 194,
    /// <summary>
    ///非标节点状态
    /// </summary>
    [pbr::OriginalName("eUnNormalized_module_statu_msg")] EUnNormalizedModuleStatuMsg = 208,
    /// <summary>
    ///调度总规划的请求(用于启动整个调度算法)(调度管理->调度算法)
    /// </summary>
    [pbr::OriginalName("eDispatch_plan_request_msg")] EDispatchPlanRequestMsg = 224,
    /// <summary>
    ///调度总规划的答复(调度算法->调度管理)
    /// </summary>
    [pbr::OriginalName("eDispatch_plan_response_msg")] EDispatchPlanResponseMsg = 225,
    /// <summary>
    ///调度控制的任务请求(调度算法->调度管理)
    /// </summary>
    [pbr::OriginalName("eDispatch_control_request_msg")] EDispatchControlRequestMsg = 226,
    /// <summary>
    ///调度控制的任务答复(调度管理->调度算法)
    /// </summary>
    [pbr::OriginalName("eDispatch_control_response_msg")] EDispatchControlResponseMsg = 227,
    /// <summary>
    ///调度管理的设备状态消息(调度底下所有硬件设备状态的汇总)
    /// </summary>
    [pbr::OriginalName("eDispatch_manager_status_msg")] EDispatchManagerStatusMsg = 234,
    /// <summary>
    ///调度管理的设备详细的数据信息
    /// </summary>
    [pbr::OriginalName("eDispatch_manager_data_msg")] EDispatchManagerDataMsg = 235,
    /// <summary>
    ///地面雷达测量请求消息
    /// </summary>
    [pbr::OriginalName("eGround_detect_request_msg")] EGroundDetectRequestMsg = 240,
    /// <summary>
    ///地面雷达测量反馈消息
    /// </summary>
    [pbr::OriginalName("eGround_detect_response_msg")] EGroundDetectResponseMsg = 241,
    /// <summary>
    ///地面雷达状态消息
    /// </summary>
    [pbr::OriginalName("eGround_status_msg")] EGroundStatusMsg = 242,
  }

  /// <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("eMeasurer_sift_server")] EMeasurerSiftServer = 769,
    /// <summary>
    ///调度机构
    /// </summary>
    [pbr::OriginalName("eDispatch_manager")] EDispatchManager = 1024,
    /// <summary>
    ///调度机构
    /// </summary>
    [pbr::OriginalName("eDispatch_control")] EDispatchControl = 1025,
    /// <summary>
    ///...
    ///取车等候区通知节点
    /// </summary>
    [pbr::OriginalName("eNotify")] ENotify = 1281,
    /// <summary>
    ///地面测量单元
    /// </summary>
    [pbr::OriginalName("eGround_measurer")] EGroundMeasurer = 3840,
  }

  /// <summary>
  /// 事件,停车或者取车
  /// </summary>
  public enum Process_type {
    [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 {
    [pbr::OriginalName("eParkspace_status_unknow")] EParkspaceStatusUnknow = 0,
    /// <summary>
    ///空闲，可分配
    /// </summary>
    [pbr::OriginalName("eParkspace_empty")] EParkspaceEmpty = 1,
    /// <summary>
    ///被占用，不可分配
    /// </summary>
    [pbr::OriginalName("eParkspace_occupied")] EParkspaceOccupied = 2,
    /// <summary>
    ///被预约，预约车辆可分配
    /// </summary>
    [pbr::OriginalName("eParkspace_reserved")] EParkspaceReserved = 3,
    /// <summary>
    ///临时锁定，不可分配
    /// </summary>
    [pbr::OriginalName("eParkspace_locked")] EParkspaceLocked = 4,
    /// <summary>
    ///车位机械结构或硬件故障
    /// </summary>
    [pbr::OriginalName("eParkspace_error")] EParkspaceError = 5,
  }

  /// <summary>
  ///车位朝向, 小号朝前朝南, 大号朝后朝北
  /// </summary>
  public enum Direction {
    [pbr::OriginalName("eDirection_unknow")] EDirectionUnknow = 0,
    /// <summary>
    ///小号朝前朝南
    /// </summary>
    [pbr::OriginalName("eForward")] EForward = 1,
    /// <summary>
    ///大号朝后朝北
    /// </summary>
    [pbr::OriginalName("eBackward")] EBackward = 2,
  }

  /// <summary>
  ///车位分配路线（根据中跑车的路线来定）
  /// </summary>
  public enum Parkspace_path {
    [pbr::OriginalName("UNKNOW_PATH")] UnknowPath = 0,
    [pbr::OriginalName("OPTIMAL_PATH")] OptimalPath = 1,
    [pbr::OriginalName("LEFT_PATH")] LeftPath = 2,
    [pbr::OriginalName("RIGHT_PATH")] RightPath = 3,
    [pbr::OriginalName("TEMPORARY_CACHE_PATH")] TemporaryCachePath = 4,
  }

  /// <summary>
  ///车位类型
  /// </summary>
  public enum Parkspace_type {
    [pbr::OriginalName("UNKNOW_PARKSPACE_TYPE")] UnknowParkspaceType = 0,
    /// <summary>
    ///小车位
    /// </summary>
    [pbr::OriginalName("MIN_PARKINGSPACE")] MinParkingspace = 1,
    /// <summary>
    ///中车位
    /// </summary>
    [pbr::OriginalName("MID_PARKINGSPACE")] MidParkingspace = 2,
    /// <summary>
    ///大车位
    /// </summary>
    [pbr::OriginalName("BIG_PARKINGSPACE")] BigParkingspace = 3,
  }

  /// <summary>
  ///汽车类型
  /// </summary>
  public enum Car_type {
    [pbr::OriginalName("UNKNOW_CAR_TYPE")] UnknowCarType = 0,
    /// <summary>
    ///小车
    /// </summary>
    [pbr::OriginalName("MIN_CAR")] MinCar = 1,
    /// <summary>
    ///中车
    /// </summary>
    [pbr::OriginalName("MID_CAR")] MidCar = 2,
    /// <summary>
    ///大车
    /// </summary>
    [pbr::OriginalName("BIG_CAR")] BigCar = 3,
  }

  /// <summary>
  ///
  ///流程中的步骤类型, 例如:停车流程包含5个步骤 , 分配车位-测量-检验结果-搬运-更新车位表
  /// </summary>
  public enum Step_type {
    [pbr::OriginalName("eAlloc_step")] EAllocStep = 0,
    [pbr::OriginalName("eMeasure_step")] EMeasureStep = 1,
    [pbr::OriginalName("eCompare_step")] ECompareStep = 2,
    [pbr::OriginalName("eDispatch_step")] EDispatchStep = 3,
    [pbr::OriginalName("eConfirm_step")] EConfirmStep = 4,
    /// <summary>
    ///查询数据库
    /// </summary>
    [pbr::OriginalName("eSearch_step")] ESearchStep = 5,
    /// <summary>
    ///等待车辆离开
    /// </summary>
    [pbr::OriginalName("eWait_step")] EWaitStep = 6,
    /// <summary>
    ///释放车位
    /// </summary>
    [pbr::OriginalName("eRelease_step")] EReleaseStep = 7,
    /// <summary>
    ///完成
    /// </summary>
    [pbr::OriginalName("eComplete")] EComplete = 8,
    [pbr::OriginalName("eBackConfirm_step")] EBackConfirmStep = 9,
    [pbr::OriginalName("eBack_compare_step")] EBackCompareStep = 10,
    [pbr::OriginalName("eBackMeasure_step")] EBackMeasureStep = 11,
    [pbr::OriginalName("eBackAlloc_step")] EBackAllocStep = 12,
    [pbr::OriginalName("eBackWait_step")] EBackWaitStep = 13,
    [pbr::OriginalName("eBackDispatch_step")] EBackDispatchStep = 14,
    [pbr::OriginalName("eBackSearch_step")] EBackSearchStep = 15,
    [pbr::OriginalName("eBackComplete")] EBackComplete = 16,
  }

  /// <summary>
  ///步骤状态,每个步骤有四中可能状态 ,等待中-执行中-完成或者错误  四个状态
  /// </summary>
  public enum Step_statu {
    /// <summary>
    ///完成/空闲
    /// </summary>
    [pbr::OriginalName("eWaiting")] EWaiting = 0,
    [pbr::OriginalName("eWorking")] EWorking = 1,
    [pbr::OriginalName("eError")] EError = 2,
    [pbr::OriginalName("eFinished")] EFinished = 3,
  }

  /// <summary>
  ///调度设备的类型
  /// </summary>
  public enum Dispatch_device_type {
    /// <summary>
    ///一号出口的专用机器手(只能负责1号出口的取车)(目前没有安装,暂时不考虑)
    /// </summary>
    [pbr::OriginalName("ROBOT_1")] Robot1 = 101,
    /// <summary>
    ///中间的大型机器手   (可以负责1~6号出入口的停车和取车)
    /// </summary>
    [pbr::OriginalName("ROBOT_2")] Robot2 = 102,
    /// <summary>
    ///左侧0号电梯井的搬运器(升降电梯 中跑车 小跑车 三合一为搬运器)
    /// </summary>
    [pbr::OriginalName("CARRIER_1")] Carrier1 = 200,
    /// <summary>
    ///右侧7号电梯井的搬运器(升降电梯 中跑车 小跑车 三合一为搬运器)
    /// </summary>
    [pbr::OriginalName("CARRIER_2")] Carrier2 = 207,
    /// <summary>
    ///中间3楼的搬运器(中跑车 小跑车 二合一为搬运器)(没有电梯, 只能在3楼活动)
    /// </summary>
    [pbr::OriginalName("CARRIER_3")] Carrier3 = 203,
    /// <summary>
    ///0号出口(在左侧电梯井, 只能取车)(暂时不存在)
    /// </summary>
    [pbr::OriginalName("PASSAGEWAY_0")] Passageway0 = 300,
    /// <summary>
    ///1号出入口
    /// </summary>
    [pbr::OriginalName("PASSAGEWAY_1")] Passageway1 = 301,
    /// <summary>
    ///2号出入口
    /// </summary>
    [pbr::OriginalName("PASSAGEWAY_2")] Passageway2 = 302,
    /// <summary>
    ///3号出入口
    /// </summary>
    [pbr::OriginalName("PASSAGEWAY_3")] Passageway3 = 303,
    /// <summary>
    ///4号出入口
    /// </summary>
    [pbr::OriginalName("PASSAGEWAY_4")] Passageway4 = 304,
    /// <summary>
    ///5号出入口
    /// </summary>
    [pbr::OriginalName("PASSAGEWAY_5")] Passageway5 = 305,
    /// <summary>
    ///6号出入口
    /// </summary>
    [pbr::OriginalName("PASSAGEWAY_6")] Passageway6 = 306,
    /// <summary>
    ///7号出口(在右侧电梯井, 只能取车)
    /// </summary>
    [pbr::OriginalName("PASSAGEWAY_7")] Passageway7 = 307,
  }

  #endregion

  #region Messages
  /// <summary>
  /////base message 用于解析未知类型的消息
  /// </summary>
  public sealed partial class Base_info : pb::IMessage<Base_info>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Base_info> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.MessageBaseReflection.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 Base_info() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasMsgType {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "msg_type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasTimeoutMs {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "timeout_ms" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasSender {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "sender" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasReceiver {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "receiver" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearReceiver() {
      _hasBits0 &= ~8;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [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 (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);
      }
    #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 (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(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [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 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;
          }
        }
      }
    #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 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;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Message.MessageBaseReflection.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 Base_msg() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Base_info BaseInfo {
      get { return baseInfo_; }
      set {
        baseInfo_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [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 (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      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 (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      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 (baseInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BaseInfo);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [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 (baseInfo_ == null) {
              BaseInfo = new global::Message.Base_info();
            }
            input.ReadMessage(BaseInfo);
            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 (baseInfo_ == null) {
              BaseInfo = new global::Message.Base_info();
            }
            input.ReadMessage(BaseInfo);
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class Error_manager : pb::IMessage<Error_manager>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Error_manager> Parser { get { return _parser; } }

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

    [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 Error_manager() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasErrorCode {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "error_code" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasErrorLevel {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "error_level" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasErrorDescription {
      get { return errorDescription_ != null; }
    }
    /// <summary>Clears the value of the "error_description" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearErrorDescription() {
      errorDescription_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [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 (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);
      }
    #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 (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(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [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 8: {
            ErrorCode = input.ReadInt32();
            break;
          }
          case 16: {
            ErrorLevel = (global::Message.Error_level) input.ReadEnum();
            break;
          }
          case 26: {
            ErrorDescription = input.ReadString();
            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 8: {
            ErrorCode = input.ReadInt32();
            break;
          }
          case 16: {
            ErrorLevel = (global::Message.Error_level) input.ReadEnum();
            break;
          }
          case 26: {
            ErrorDescription = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///测量结果结构体
  /// </summary>
  public sealed partial class Locate_information : pb::IMessage<Locate_information>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Locate_information> Parser { get { return _parser; } }

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

    [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 Locate_information() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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_;
      locateFrontTheta_ = other.locateFrontTheta_;
      uniformedCarX_ = other.uniformedCarX_;
      uniformedCarY_ = other.uniformedCarY_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLocateX {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "locate_x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLocateY {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "locate_y" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLocateAngle {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "locate_angle" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLocateLength {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "locate_length" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLocateWidth {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "locate_width" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLocateHeight {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "locate_height" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLocateWheelBase {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "locate_wheel_base" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLocateWheelWidth {
      get { return (_hasBits0 & 128) != 0; }
    }
    /// <summary>Clears the value of the "locate_wheel_width" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLocateCorrect {
      get { return (_hasBits0 & 256) != 0; }
    }
    /// <summary>Clears the value of the "locate_correct" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearLocateCorrect() {
      _hasBits0 &= ~256;
    }

    /// <summary>Field number for the "locate_front_theta" field.</summary>
    public const int LocateFrontThetaFieldNumber = 10;
    private readonly static float LocateFrontThetaDefaultValue = 0F;

    private float locateFrontTheta_;
    /// <summary>
    ///整车的前轮的旋转角
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float LocateFrontTheta {
      get { if ((_hasBits0 & 512) != 0) { return locateFrontTheta_; } else { return LocateFrontThetaDefaultValue; } }
      set {
        _hasBits0 |= 512;
        locateFrontTheta_ = value;
      }
    }
    /// <summary>Gets whether the "locate_front_theta" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLocateFrontTheta {
      get { return (_hasBits0 & 512) != 0; }
    }
    /// <summary>Clears the value of the "locate_front_theta" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearLocateFrontTheta() {
      _hasBits0 &= ~512;
    }

    /// <summary>Field number for the "uniformed_car_x" field.</summary>
    public const int UniformedCarXFieldNumber = 11;
    private readonly static float UniformedCarXDefaultValue = 0F;

    private float uniformedCarX_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float UniformedCarX {
      get { if ((_hasBits0 & 1024) != 0) { return uniformedCarX_; } else { return UniformedCarXDefaultValue; } }
      set {
        _hasBits0 |= 1024;
        uniformedCarX_ = value;
      }
    }
    /// <summary>Gets whether the "uniformed_car_x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasUniformedCarX {
      get { return (_hasBits0 & 1024) != 0; }
    }
    /// <summary>Clears the value of the "uniformed_car_x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearUniformedCarX() {
      _hasBits0 &= ~1024;
    }

    /// <summary>Field number for the "uniformed_car_y" field.</summary>
    public const int UniformedCarYFieldNumber = 12;
    private readonly static float UniformedCarYDefaultValue = 0F;

    private float uniformedCarY_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float UniformedCarY {
      get { if ((_hasBits0 & 2048) != 0) { return uniformedCarY_; } else { return UniformedCarYDefaultValue; } }
      set {
        _hasBits0 |= 2048;
        uniformedCarY_ = value;
      }
    }
    /// <summary>Gets whether the "uniformed_car_y" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasUniformedCarY {
      get { return (_hasBits0 & 2048) != 0; }
    }
    /// <summary>Clears the value of the "uniformed_car_y" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearUniformedCarY() {
      _hasBits0 &= ~2048;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(LocateFrontTheta, other.LocateFrontTheta)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(UniformedCarX, other.UniformedCarX)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(UniformedCarY, other.UniformedCarY)) 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 (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 (HasLocateFrontTheta) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(LocateFrontTheta);
      if (HasUniformedCarX) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(UniformedCarX);
      if (HasUniformedCarY) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(UniformedCarY);
      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 (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 (HasLocateFrontTheta) {
        output.WriteRawTag(85);
        output.WriteFloat(LocateFrontTheta);
      }
      if (HasUniformedCarX) {
        output.WriteRawTag(93);
        output.WriteFloat(UniformedCarX);
      }
      if (HasUniformedCarY) {
        output.WriteRawTag(101);
        output.WriteFloat(UniformedCarY);
      }
      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 (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 (HasLocateFrontTheta) {
        output.WriteRawTag(85);
        output.WriteFloat(LocateFrontTheta);
      }
      if (HasUniformedCarX) {
        output.WriteRawTag(93);
        output.WriteFloat(UniformedCarX);
      }
      if (HasUniformedCarY) {
        output.WriteRawTag(101);
        output.WriteFloat(UniformedCarY);
      }
      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 (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 (HasLocateFrontTheta) {
        size += 1 + 4;
      }
      if (HasUniformedCarX) {
        size += 1 + 4;
      }
      if (HasUniformedCarY) {
        size += 1 + 4;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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;
      }
      if (other.HasLocateFrontTheta) {
        LocateFrontTheta = other.LocateFrontTheta;
      }
      if (other.HasUniformedCarX) {
        UniformedCarX = other.UniformedCarX;
      }
      if (other.HasUniformedCarY) {
        UniformedCarY = other.UniformedCarY;
      }
      _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 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;
          }
          case 85: {
            LocateFrontTheta = input.ReadFloat();
            break;
          }
          case 93: {
            UniformedCarX = input.ReadFloat();
            break;
          }
          case 101: {
            UniformedCarY = input.ReadFloat();
            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 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;
          }
          case 85: {
            LocateFrontTheta = input.ReadFloat();
            break;
          }
          case 93: {
            UniformedCarX = input.ReadFloat();
            break;
          }
          case 101: {
            UniformedCarY = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///车辆基本信息
  /// </summary>
  public sealed partial class Car_info : pb::IMessage<Car_info>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Car_info> Parser { get { return _parser; } }

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

    [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 Car_info() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Car_info(Car_info other) : this() {
      _hasBits0 = other._hasBits0;
      carLength_ = other.carLength_;
      carWidth_ = other.carWidth_;
      carHeight_ = other.carHeight_;
      license_ = other.license_;
      carNumberPlate_ = other.carNumberPlate_;
      carWheelBase_ = other.carWheelBase_;
      carWheelWidth_ = other.carWheelWidth_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCarLength {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "car_length" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCarWidth {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "car_width" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCarHeight {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "car_height" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLicense {
      get { return license_ != null; }
    }
    /// <summary>Clears the value of the "license" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearLicense() {
      license_ = null;
    }

    /// <summary>Field number for the "car_numberPlate" field.</summary>
    public const int CarNumberPlateFieldNumber = 5;
    private readonly static string CarNumberPlateDefaultValue = "";

    private string carNumberPlate_;
    /// <summary>
    ///车牌号
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string CarNumberPlate {
      get { return carNumberPlate_ ?? CarNumberPlateDefaultValue; }
      set {
        carNumberPlate_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "car_numberPlate" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCarNumberPlate {
      get { return carNumberPlate_ != null; }
    }
    /// <summary>Clears the value of the "car_numberPlate" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearCarNumberPlate() {
      carNumberPlate_ = null;
    }

    /// <summary>Field number for the "car_wheel_base" field.</summary>
    public const int CarWheelBaseFieldNumber = 6;
    private readonly static float CarWheelBaseDefaultValue = 0F;

    private float carWheelBase_;
    /// <summary>
    ///整车的轮距; 前后轮的距离; 用于机器人或agv的抓车
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float CarWheelBase {
      get { if ((_hasBits0 & 8) != 0) { return carWheelBase_; } else { return CarWheelBaseDefaultValue; } }
      set {
        _hasBits0 |= 8;
        carWheelBase_ = value;
      }
    }
    /// <summary>Gets whether the "car_wheel_base" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCarWheelBase {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "car_wheel_base" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearCarWheelBase() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "car_wheel_width" field.</summary>
    public const int CarWheelWidthFieldNumber = 7;
    private readonly static float CarWheelWidthDefaultValue = 0F;

    private float carWheelWidth_;
    /// <summary>
    ///整车的轮距; 左右轮的距离; 用于机器人或agv的抓车
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float CarWheelWidth {
      get { if ((_hasBits0 & 16) != 0) { return carWheelWidth_; } else { return CarWheelWidthDefaultValue; } }
      set {
        _hasBits0 |= 16;
        carWheelWidth_ = value;
      }
    }
    /// <summary>Gets whether the "car_wheel_width" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCarWheelWidth {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "car_wheel_width" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearCarWheelWidth() {
      _hasBits0 &= ~16;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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;
      if (CarNumberPlate != other.CarNumberPlate) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(CarWheelBase, other.CarWheelBase)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(CarWheelWidth, other.CarWheelWidth)) 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 (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 (HasCarNumberPlate) hash ^= CarNumberPlate.GetHashCode();
      if (HasCarWheelBase) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(CarWheelBase);
      if (HasCarWheelWidth) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(CarWheelWidth);
      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 (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 (HasCarNumberPlate) {
        output.WriteRawTag(42);
        output.WriteString(CarNumberPlate);
      }
      if (HasCarWheelBase) {
        output.WriteRawTag(53);
        output.WriteFloat(CarWheelBase);
      }
      if (HasCarWheelWidth) {
        output.WriteRawTag(61);
        output.WriteFloat(CarWheelWidth);
      }
      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 (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 (HasCarNumberPlate) {
        output.WriteRawTag(42);
        output.WriteString(CarNumberPlate);
      }
      if (HasCarWheelBase) {
        output.WriteRawTag(53);
        output.WriteFloat(CarWheelBase);
      }
      if (HasCarWheelWidth) {
        output.WriteRawTag(61);
        output.WriteFloat(CarWheelWidth);
      }
      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 (HasCarLength) {
        size += 1 + 4;
      }
      if (HasCarWidth) {
        size += 1 + 4;
      }
      if (HasCarHeight) {
        size += 1 + 4;
      }
      if (HasLicense) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(License);
      }
      if (HasCarNumberPlate) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CarNumberPlate);
      }
      if (HasCarWheelBase) {
        size += 1 + 4;
      }
      if (HasCarWheelWidth) {
        size += 1 + 4;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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;
      }
      if (other.HasCarNumberPlate) {
        CarNumberPlate = other.CarNumberPlate;
      }
      if (other.HasCarWheelBase) {
        CarWheelBase = other.CarWheelBase;
      }
      if (other.HasCarWheelWidth) {
        CarWheelWidth = other.CarWheelWidth;
      }
      _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 13: {
            CarLength = input.ReadFloat();
            break;
          }
          case 21: {
            CarWidth = input.ReadFloat();
            break;
          }
          case 29: {
            CarHeight = input.ReadFloat();
            break;
          }
          case 34: {
            License = input.ReadString();
            break;
          }
          case 42: {
            CarNumberPlate = input.ReadString();
            break;
          }
          case 53: {
            CarWheelBase = input.ReadFloat();
            break;
          }
          case 61: {
            CarWheelWidth = input.ReadFloat();
            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 13: {
            CarLength = input.ReadFloat();
            break;
          }
          case 21: {
            CarWidth = input.ReadFloat();
            break;
          }
          case 29: {
            CarHeight = input.ReadFloat();
            break;
          }
          case 34: {
            License = input.ReadString();
            break;
          }
          case 42: {
            CarNumberPlate = input.ReadString();
            break;
          }
          case 53: {
            CarWheelBase = input.ReadFloat();
            break;
          }
          case 61: {
            CarWheelWidth = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///单个车位基本信息与状态信息,车位信息以及车位上的车辆信息
  /// </summary>
  public sealed partial class Parkspace_info : pb::IMessage<Parkspace_info>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Parkspace_info> Parser { get { return _parser; } }

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

    [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 Parkspace_info() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Parkspace_info(Parkspace_info other) : this() {
      _hasBits0 = other._hasBits0;
      parkingspaceIndexId_ = other.parkingspaceIndexId_;
      parkingspaceType_ = other.parkingspaceType_;
      parkingspaceUnitId_ = other.parkingspaceUnitId_;
      parkingspaceLabelId_ = other.parkingspaceLabelId_;
      parkingspaceRoomId_ = other.parkingspaceRoomId_;
      parkingspaceDirection_ = other.parkingspaceDirection_;
      parkingspaceFloorId_ = other.parkingspaceFloorId_;
      parkingspaceWidth_ = other.parkingspaceWidth_;
      parkingspaceHeight_ = other.parkingspaceHeight_;
      parkingspaceStatus_ = other.parkingspaceStatus_;
      carInfo_ = other.carInfo_ != null ? other.carInfo_.Clone() : null;
      entryTime_ = other.entryTime_;
      leaveTime_ = other.leaveTime_;
      parkspacePath_ = other.parkspacePath_;
      pathEstimateTime_ = other.pathEstimateTime_;
      parkspaceStatusTarget_ = other.parkspaceStatusTarget_;
      carType_ = other.carType_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "parkingspace_index_id" field.</summary>
    public const int ParkingspaceIndexIdFieldNumber = 1;
    private readonly static int ParkingspaceIndexIdDefaultValue = 0;

    private int parkingspaceIndexId_;
    /// <summary>
    ///车位ID
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ParkingspaceIndexId {
      get { if ((_hasBits0 & 1) != 0) { return parkingspaceIndexId_; } else { return ParkingspaceIndexIdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        parkingspaceIndexId_ = value;
      }
    }
    /// <summary>Gets whether the "parkingspace_index_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParkingspaceIndexId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "parkingspace_index_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParkingspaceIndexId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "parkingspace_type" field.</summary>
    public const int ParkingspaceTypeFieldNumber = 2;
    private readonly static global::Message.Parkspace_type ParkingspaceTypeDefaultValue = global::Message.Parkspace_type.UnknowParkspaceType;

    private global::Message.Parkspace_type parkingspaceType_;
    /// <summary>
    ///车位类型
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Parkspace_type ParkingspaceType {
      get { if ((_hasBits0 & 2) != 0) { return parkingspaceType_; } else { return ParkingspaceTypeDefaultValue; } }
      set {
        _hasBits0 |= 2;
        parkingspaceType_ = value;
      }
    }
    /// <summary>Gets whether the "parkingspace_type" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParkingspaceType {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "parkingspace_type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParkingspaceType() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "parkingspace_unit_id" field.</summary>
    public const int ParkingspaceUnitIdFieldNumber = 3;
    private readonly static int ParkingspaceUnitIdDefaultValue = 0;

    private int parkingspaceUnitId_;
    /// <summary>
    ///车位单元号
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ParkingspaceUnitId {
      get { if ((_hasBits0 & 4) != 0) { return parkingspaceUnitId_; } else { return ParkingspaceUnitIdDefaultValue; } }
      set {
        _hasBits0 |= 4;
        parkingspaceUnitId_ = value;
      }
    }
    /// <summary>Gets whether the "parkingspace_unit_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParkingspaceUnitId {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "parkingspace_unit_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParkingspaceUnitId() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "parkingspace_label_id" field.</summary>
    public const int ParkingspaceLabelIdFieldNumber = 4;
    private readonly static int ParkingspaceLabelIdDefaultValue = 0;

    private int parkingspaceLabelId_;
    /// <summary>
    ///车位单元内部ID
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ParkingspaceLabelId {
      get { if ((_hasBits0 & 8) != 0) { return parkingspaceLabelId_; } else { return ParkingspaceLabelIdDefaultValue; } }
      set {
        _hasBits0 |= 8;
        parkingspaceLabelId_ = value;
      }
    }
    /// <summary>Gets whether the "parkingspace_label_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParkingspaceLabelId {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "parkingspace_label_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParkingspaceLabelId() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "parkingspace_room_id" field.</summary>
    public const int ParkingspaceRoomIdFieldNumber = 5;
    private readonly static int ParkingspaceRoomIdDefaultValue = 0;

    private int parkingspaceRoomId_;
    /// <summary>
    ///同层编号
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ParkingspaceRoomId {
      get { if ((_hasBits0 & 16) != 0) { return parkingspaceRoomId_; } else { return ParkingspaceRoomIdDefaultValue; } }
      set {
        _hasBits0 |= 16;
        parkingspaceRoomId_ = value;
      }
    }
    /// <summary>Gets whether the "parkingspace_room_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParkingspaceRoomId {
      get { return (_hasBits0 & 16) != 0; }
    }
    /// <summary>Clears the value of the "parkingspace_room_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParkingspaceRoomId() {
      _hasBits0 &= ~16;
    }

    /// <summary>Field number for the "parkingspace_direction" field.</summary>
    public const int ParkingspaceDirectionFieldNumber = 6;
    private readonly static global::Message.Direction ParkingspaceDirectionDefaultValue = global::Message.Direction.EDirectionUnknow;

    private global::Message.Direction parkingspaceDirection_;
    /// <summary>
    ///前后
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Direction ParkingspaceDirection {
      get { if ((_hasBits0 & 32) != 0) { return parkingspaceDirection_; } else { return ParkingspaceDirectionDefaultValue; } }
      set {
        _hasBits0 |= 32;
        parkingspaceDirection_ = value;
      }
    }
    /// <summary>Gets whether the "parkingspace_direction" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParkingspaceDirection {
      get { return (_hasBits0 & 32) != 0; }
    }
    /// <summary>Clears the value of the "parkingspace_direction" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParkingspaceDirection() {
      _hasBits0 &= ~32;
    }

    /// <summary>Field number for the "parkingspace_floor_id" field.</summary>
    public const int ParkingspaceFloorIdFieldNumber = 7;
    private readonly static int ParkingspaceFloorIdDefaultValue = 0;

    private int parkingspaceFloorId_;
    /// <summary>
    ///楼层
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ParkingspaceFloorId {
      get { if ((_hasBits0 & 64) != 0) { return parkingspaceFloorId_; } else { return ParkingspaceFloorIdDefaultValue; } }
      set {
        _hasBits0 |= 64;
        parkingspaceFloorId_ = value;
      }
    }
    /// <summary>Gets whether the "parkingspace_floor_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParkingspaceFloorId {
      get { return (_hasBits0 & 64) != 0; }
    }
    /// <summary>Clears the value of the "parkingspace_floor_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParkingspaceFloorId() {
      _hasBits0 &= ~64;
    }

    /// <summary>Field number for the "parkingspace_width" field.</summary>
    public const int ParkingspaceWidthFieldNumber = 8;
    private readonly static float ParkingspaceWidthDefaultValue = 0F;

    private float parkingspaceWidth_;
    /// <summary>
    ///车位宽
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ParkingspaceWidth {
      get { if ((_hasBits0 & 128) != 0) { return parkingspaceWidth_; } else { return ParkingspaceWidthDefaultValue; } }
      set {
        _hasBits0 |= 128;
        parkingspaceWidth_ = value;
      }
    }
    /// <summary>Gets whether the "parkingspace_width" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParkingspaceWidth {
      get { return (_hasBits0 & 128) != 0; }
    }
    /// <summary>Clears the value of the "parkingspace_width" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParkingspaceWidth() {
      _hasBits0 &= ~128;
    }

    /// <summary>Field number for the "parkingspace_height" field.</summary>
    public const int ParkingspaceHeightFieldNumber = 9;
    private readonly static float ParkingspaceHeightDefaultValue = 0F;

    private float parkingspaceHeight_;
    /// <summary>
    ///车位高
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ParkingspaceHeight {
      get { if ((_hasBits0 & 256) != 0) { return parkingspaceHeight_; } else { return ParkingspaceHeightDefaultValue; } }
      set {
        _hasBits0 |= 256;
        parkingspaceHeight_ = value;
      }
    }
    /// <summary>Gets whether the "parkingspace_height" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParkingspaceHeight {
      get { return (_hasBits0 & 256) != 0; }
    }
    /// <summary>Clears the value of the "parkingspace_height" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParkingspaceHeight() {
      _hasBits0 &= ~256;
    }

    /// <summary>Field number for the "parkingspace_status" field.</summary>
    public const int ParkingspaceStatusFieldNumber = 10;
    private readonly static global::Message.Parkspace_status ParkingspaceStatusDefaultValue = global::Message.Parkspace_status.EParkspaceStatusUnknow;

    private global::Message.Parkspace_status parkingspaceStatus_;
    /// <summary>
    ///车位当前状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Parkspace_status ParkingspaceStatus {
      get { if ((_hasBits0 & 512) != 0) { return parkingspaceStatus_; } else { return ParkingspaceStatusDefaultValue; } }
      set {
        _hasBits0 |= 512;
        parkingspaceStatus_ = value;
      }
    }
    /// <summary>Gets whether the "parkingspace_status" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParkingspaceStatus {
      get { return (_hasBits0 & 512) != 0; }
    }
    /// <summary>Clears the value of the "parkingspace_status" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParkingspaceStatus() {
      _hasBits0 &= ~512;
    }

    /// <summary>Field number for the "car_info" field.</summary>
    public const int CarInfoFieldNumber = 11;
    private global::Message.Car_info carInfo_;
    /// <summary>
    ///车辆信息
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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 = 12;
    private readonly static string EntryTimeDefaultValue = "";

    private string entryTime_;
    /// <summary>
    ///入场时间
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasEntryTime {
      get { return entryTime_ != null; }
    }
    /// <summary>Clears the value of the "entry_time" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearEntryTime() {
      entryTime_ = null;
    }

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

    private string leaveTime_;
    /// <summary>
    ///离场时间
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    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]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasLeaveTime {
      get { return leaveTime_ != null; }
    }
    /// <summary>Clears the value of the "leave_time" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearLeaveTime() {
      leaveTime_ = null;
    }

    /// <summary>Field number for the "parkspace_path" field.</summary>
    public const int ParkspacePathFieldNumber = 14;
    private readonly static global::Message.Parkspace_path ParkspacePathDefaultValue = global::Message.Parkspace_path.UnknowPath;

    private global::Message.Parkspace_path parkspacePath_;
    /// <summary>
    /// 车位分配路线
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Parkspace_path ParkspacePath {
      get { if ((_hasBits0 & 1024) != 0) { return parkspacePath_; } else { return ParkspacePathDefaultValue; } }
      set {
        _hasBits0 |= 1024;
        parkspacePath_ = value;
      }
    }
    /// <summary>Gets whether the "parkspace_path" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParkspacePath {
      get { return (_hasBits0 & 1024) != 0; }
    }
    /// <summary>Clears the value of the "parkspace_path" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParkspacePath() {
      _hasBits0 &= ~1024;
    }

    /// <summary>Field number for the "path_estimate_time" field.</summary>
    public const int PathEstimateTimeFieldNumber = 15;
    private readonly static float PathEstimateTimeDefaultValue = 0F;

    private float pathEstimateTime_;
    /// <summary>
    ///车位分配路线 time(s)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float PathEstimateTime {
      get { if ((_hasBits0 & 2048) != 0) { return pathEstimateTime_; } else { return PathEstimateTimeDefaultValue; } }
      set {
        _hasBits0 |= 2048;
        pathEstimateTime_ = value;
      }
    }
    /// <summary>Gets whether the "path_estimate_time" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasPathEstimateTime {
      get { return (_hasBits0 & 2048) != 0; }
    }
    /// <summary>Clears the value of the "path_estimate_time" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearPathEstimateTime() {
      _hasBits0 &= ~2048;
    }

    /// <summary>Field number for the "parkspace_status_target" field.</summary>
    public const int ParkspaceStatusTargetFieldNumber = 16;
    private readonly static global::Message.Parkspace_status ParkspaceStatusTargetDefaultValue = global::Message.Parkspace_status.EParkspaceStatusUnknow;

    private global::Message.Parkspace_status parkspaceStatusTarget_;
    /// <summary>
    ///车位目标状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Parkspace_status ParkspaceStatusTarget {
      get { if ((_hasBits0 & 4096) != 0) { return parkspaceStatusTarget_; } else { return ParkspaceStatusTargetDefaultValue; } }
      set {
        _hasBits0 |= 4096;
        parkspaceStatusTarget_ = value;
      }
    }
    /// <summary>Gets whether the "parkspace_status_target" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasParkspaceStatusTarget {
      get { return (_hasBits0 & 4096) != 0; }
    }
    /// <summary>Clears the value of the "parkspace_status_target" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearParkspaceStatusTarget() {
      _hasBits0 &= ~4096;
    }

    /// <summary>Field number for the "car_type" field.</summary>
    public const int CarTypeFieldNumber = 17;
    private readonly static global::Message.Car_type CarTypeDefaultValue = global::Message.Car_type.UnknowCarType;

    private global::Message.Car_type carType_;
    /// <summary>
    ///车辆类型
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Message.Car_type CarType {
      get { if ((_hasBits0 & 8192) != 0) { return carType_; } else { return CarTypeDefaultValue; } }
      set {
        _hasBits0 |= 8192;
        carType_ = value;
      }
    }
    /// <summary>Gets whether the "car_type" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasCarType {
      get { return (_hasBits0 & 8192) != 0; }
    }
    /// <summary>Clears the value of the "car_type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearCarType() {
      _hasBits0 &= ~8192;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Parkspace_info other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ParkingspaceIndexId != other.ParkingspaceIndexId) return false;
      if (ParkingspaceType != other.ParkingspaceType) return false;
      if (ParkingspaceUnitId != other.ParkingspaceUnitId) return false;
      if (ParkingspaceLabelId != other.ParkingspaceLabelId) return false;
      if (ParkingspaceRoomId != other.ParkingspaceRoomId) return false;
      if (ParkingspaceDirection != other.ParkingspaceDirection) return false;
      if (ParkingspaceFloorId != other.ParkingspaceFloorId) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ParkingspaceWidth, other.ParkingspaceWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ParkingspaceHeight, other.ParkingspaceHeight)) return false;
      if (ParkingspaceStatus != other.ParkingspaceStatus) return false;
      if (!object.Equals(CarInfo, other.CarInfo)) return false;
      if (EntryTime != other.EntryTime) return false;
      if (LeaveTime != other.LeaveTime) return false;
      if (ParkspacePath != other.ParkspacePath) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(PathEstimateTime, other.PathEstimateTime)) return false;
      if (ParkspaceStatusTarget != other.ParkspaceStatusTarget) return false;
      if (CarType != other.CarType) 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 (HasParkingspaceIndexId) hash ^= ParkingspaceIndexId.GetHashCode();
      if (HasParkingspaceType) hash ^= ParkingspaceType.GetHashCode();
      if (HasParkingspaceUnitId) hash ^= ParkingspaceUnitId.GetHashCode();
      if (HasParkingspaceLabelId) hash ^= ParkingspaceLabelId.GetHashCode();
      if (HasParkingspaceRoomId) hash ^= ParkingspaceRoomId.GetHashCode();
      if (HasParkingspaceDirection) hash ^= ParkingspaceDirection.GetHashCode();
      if (HasParkingspaceFloorId) hash ^= ParkingspaceFloorId.GetHashCode();
      if (HasParkingspaceWidth) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ParkingspaceWidth);
      if (HasParkingspaceHeight) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ParkingspaceHeight);
      if (HasParkingspaceStatus) hash ^= ParkingspaceStatus.GetHashCode();
      if (carInfo_ != null) hash ^= CarInfo.GetHashCode();
      if (HasEntryTime) hash ^= EntryTime.GetHashCode();
      if (HasLeaveTime) hash ^= LeaveTime.GetHashCode();
      if (HasParkspacePath) hash ^= ParkspacePath.GetHashCode();
      if (HasPathEstimateTime) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(PathEstimateTime);
      if (HasParkspaceStatusTarget) hash ^= ParkspaceStatusTarget.GetHashCode();
      if (HasCarType) hash ^= CarType.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 (HasParkingspaceIndexId) {
        output.WriteRawTag(8);
        output.WriteInt32(ParkingspaceIndexId);
      }
      if (HasParkingspaceType) {
        output.WriteRawTag(16);
        output.WriteEnum((int) ParkingspaceType);
      }
      if (HasParkingspaceUnitId) {
        output.WriteRawTag(24);
        output.WriteInt32(ParkingspaceUnitId);
      }
      if (HasParkingspaceLabelId) {
        output.WriteRawTag(32);
        output.WriteInt32(ParkingspaceLabelId);
      }
      if (HasParkingspaceRoomId) {
        output.WriteRawTag(40);
        output.WriteInt32(ParkingspaceRoomId);
      }
      if (HasParkingspaceDirection) {
        output.WriteRawTag(48);
        output.WriteEnum((int) ParkingspaceDirection);
      }
      if (HasParkingspaceFloorId) {
        output.WriteRawTag(56);
        output.WriteInt32(ParkingspaceFloorId);
      }
      if (HasParkingspaceWidth) {
        output.WriteRawTag(69);
        output.WriteFloat(ParkingspaceWidth);
      }
      if (HasParkingspaceHeight) {
        output.WriteRawTag(77);
        output.WriteFloat(ParkingspaceHeight);
      }
      if (HasParkingspaceStatus) {
        output.WriteRawTag(80);
        output.WriteEnum((int) ParkingspaceStatus);
      }
      if (carInfo_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(CarInfo);
      }
      if (HasEntryTime) {
        output.WriteRawTag(98);
        output.WriteString(EntryTime);
      }
      if (HasLeaveTime) {
        output.WriteRawTag(106);
        output.WriteString(LeaveTime);
      }
      if (HasParkspacePath) {
        output.WriteRawTag(112);
        output.WriteEnum((int) ParkspacePath);
      }
      if (HasPathEstimateTime) {
        output.WriteRawTag(125);
        output.WriteFloat(PathEstimateTime);
      }
      if (HasParkspaceStatusTarget) {
        output.WriteRawTag(128, 1);
        output.WriteEnum((int) ParkspaceStatusTarget);
      }
      if (HasCarType) {
        output.WriteRawTag(136, 1);
        output.WriteEnum((int) CarType);
      }
      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 (HasParkingspaceIndexId) {
        output.WriteRawTag(8);
        output.WriteInt32(ParkingspaceIndexId);
      }
      if (HasParkingspaceType) {
        output.WriteRawTag(16);
        output.WriteEnum((int) ParkingspaceType);
      }
      if (HasParkingspaceUnitId) {
        output.WriteRawTag(24);
        output.WriteInt32(ParkingspaceUnitId);
      }
      if (HasParkingspaceLabelId) {
        output.WriteRawTag(32);
        output.WriteInt32(ParkingspaceLabelId);
      }
      if (HasParkingspaceRoomId) {
        output.WriteRawTag(40);
        output.WriteInt32(ParkingspaceRoomId);
      }
      if (HasParkingspaceDirection) {
        output.WriteRawTag(48);
        output.WriteEnum((int) ParkingspaceDirection);
      }
      if (HasParkingspaceFloorId) {
        output.WriteRawTag(56);
        output.WriteInt32(ParkingspaceFloorId);
      }
      if (HasParkingspaceWidth) {
        output.WriteRawTag(69);
        output.WriteFloat(ParkingspaceWidth);
      }
      if (HasParkingspaceHeight) {
        output.WriteRawTag(77);
        output.WriteFloat(ParkingspaceHeight);
      }
      if (HasParkingspaceStatus) {
        output.WriteRawTag(80);
        output.WriteEnum((int) ParkingspaceStatus);
      }
      if (carInfo_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(CarInfo);
      }
      if (HasEntryTime) {
        output.WriteRawTag(98);
        output.WriteString(EntryTime);
      }
      if (HasLeaveTime) {
        output.WriteRawTag(106);
        output.WriteString(LeaveTime);
      }
      if (HasParkspacePath) {
        output.WriteRawTag(112);
        output.WriteEnum((int) ParkspacePath);
      }
      if (HasPathEstimateTime) {
        output.WriteRawTag(125);
        output.WriteFloat(PathEstimateTime);
      }
      if (HasParkspaceStatusTarget) {
        output.WriteRawTag(128, 1);
        output.WriteEnum((int) ParkspaceStatusTarget);
      }
      if (HasCarType) {
        output.WriteRawTag(136, 1);
        output.WriteEnum((int) CarType);
      }
      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 (HasParkingspaceIndexId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ParkingspaceIndexId);
      }
      if (HasParkingspaceType) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ParkingspaceType);
      }
      if (HasParkingspaceUnitId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ParkingspaceUnitId);
      }
      if (HasParkingspaceLabelId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ParkingspaceLabelId);
      }
      if (HasParkingspaceRoomId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ParkingspaceRoomId);
      }
      if (HasParkingspaceDirection) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ParkingspaceDirection);
      }
      if (HasParkingspaceFloorId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ParkingspaceFloorId);
      }
      if (HasParkingspaceWidth) {
        size += 1 + 4;
      }
      if (HasParkingspaceHeight) {
        size += 1 + 4;
      }
      if (HasParkingspaceStatus) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ParkingspaceStatus);
      }
      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 (HasParkspacePath) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ParkspacePath);
      }
      if (HasPathEstimateTime) {
        size += 1 + 4;
      }
      if (HasParkspaceStatusTarget) {
        size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) ParkspaceStatusTarget);
      }
      if (HasCarType) {
        size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) CarType);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Parkspace_info other) {
      if (other == null) {
        return;
      }
      if (other.HasParkingspaceIndexId) {
        ParkingspaceIndexId = other.ParkingspaceIndexId;
      }
      if (other.HasParkingspaceType) {
        ParkingspaceType = other.ParkingspaceType;
      }
      if (other.HasParkingspaceUnitId) {
        ParkingspaceUnitId = other.ParkingspaceUnitId;
      }
      if (other.HasParkingspaceLabelId) {
        ParkingspaceLabelId = other.ParkingspaceLabelId;
      }
      if (other.HasParkingspaceRoomId) {
        ParkingspaceRoomId = other.ParkingspaceRoomId;
      }
      if (other.HasParkingspaceDirection) {
        ParkingspaceDirection = other.ParkingspaceDirection;
      }
      if (other.HasParkingspaceFloorId) {
        ParkingspaceFloorId = other.ParkingspaceFloorId;
      }
      if (other.HasParkingspaceWidth) {
        ParkingspaceWidth = other.ParkingspaceWidth;
      }
      if (other.HasParkingspaceHeight) {
        ParkingspaceHeight = other.ParkingspaceHeight;
      }
      if (other.HasParkingspaceStatus) {
        ParkingspaceStatus = other.ParkingspaceStatus;
      }
      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;
      }
      if (other.HasParkspacePath) {
        ParkspacePath = other.ParkspacePath;
      }
      if (other.HasPathEstimateTime) {
        PathEstimateTime = other.PathEstimateTime;
      }
      if (other.HasParkspaceStatusTarget) {
        ParkspaceStatusTarget = other.ParkspaceStatusTarget;
      }
      if (other.HasCarType) {
        CarType = other.CarType;
      }
      _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 8: {
            ParkingspaceIndexId = input.ReadInt32();
            break;
          }
          case 16: {
            ParkingspaceType = (global::Message.Parkspace_type) input.ReadEnum();
            break;
          }
          case 24: {
            ParkingspaceUnitId = input.ReadInt32();
            break;
          }
          case 32: {
            ParkingspaceLabelId = input.ReadInt32();
            break;
          }
          case 40: {
            ParkingspaceRoomId = input.ReadInt32();
            break;
          }
          case 48: {
            ParkingspaceDirection = (global::Message.Direction) input.ReadEnum();
            break;
          }
          case 56: {
            ParkingspaceFloorId = input.ReadInt32();
            break;
          }
          case 69: {
            ParkingspaceWidth = input.ReadFloat();
            break;
          }
          case 77: {
            ParkingspaceHeight = input.ReadFloat();
            break;
          }
          case 80: {
            ParkingspaceStatus = (global::Message.Parkspace_status) input.ReadEnum();
            break;
          }
          case 90: {
            if (carInfo_ == null) {
              CarInfo = new global::Message.Car_info();
            }
            input.ReadMessage(CarInfo);
            break;
          }
          case 98: {
            EntryTime = input.ReadString();
            break;
          }
          case 106: {
            LeaveTime = input.ReadString();
            break;
          }
          case 112: {
            ParkspacePath = (global::Message.Parkspace_path) input.ReadEnum();
            break;
          }
          case 125: {
            PathEstimateTime = input.ReadFloat();
            break;
          }
          case 128: {
            ParkspaceStatusTarget = (global::Message.Parkspace_status) input.ReadEnum();
            break;
          }
          case 136: {
            CarType = (global::Message.Car_type) input.ReadEnum();
            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 8: {
            ParkingspaceIndexId = input.ReadInt32();
            break;
          }
          case 16: {
            ParkingspaceType = (global::Message.Parkspace_type) input.ReadEnum();
            break;
          }
          case 24: {
            ParkingspaceUnitId = input.ReadInt32();
            break;
          }
          case 32: {
            ParkingspaceLabelId = input.ReadInt32();
            break;
          }
          case 40: {
            ParkingspaceRoomId = input.ReadInt32();
            break;
          }
          case 48: {
            ParkingspaceDirection = (global::Message.Direction) input.ReadEnum();
            break;
          }
          case 56: {
            ParkingspaceFloorId = input.ReadInt32();
            break;
          }
          case 69: {
            ParkingspaceWidth = input.ReadFloat();
            break;
          }
          case 77: {
            ParkingspaceHeight = input.ReadFloat();
            break;
          }
          case 80: {
            ParkingspaceStatus = (global::Message.Parkspace_status) input.ReadEnum();
            break;
          }
          case 90: {
            if (carInfo_ == null) {
              CarInfo = new global::Message.Car_info();
            }
            input.ReadMessage(CarInfo);
            break;
          }
          case 98: {
            EntryTime = input.ReadString();
            break;
          }
          case 106: {
            LeaveTime = input.ReadString();
            break;
          }
          case 112: {
            ParkspacePath = (global::Message.Parkspace_path) input.ReadEnum();
            break;
          }
          case 125: {
            PathEstimateTime = input.ReadFloat();
            break;
          }
          case 128: {
            ParkspaceStatusTarget = (global::Message.Parkspace_status) input.ReadEnum();
            break;
          }
          case 136: {
            CarType = (global::Message.Car_type) input.ReadEnum();
            break;
          }
        }
      }
    }
    #endif

  }

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

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

    [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 Id_struct() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Id_struct(Id_struct other) : this() {
      _hasBits0 = other._hasBits0;
      terminalId_ = other.terminalId_;
      unitId_ = other.unitId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "terminal_id" field.</summary>
    public const int TerminalIdFieldNumber = 1;
    private readonly static int TerminalIdDefaultValue = 0;

    private int terminalId_;
    /// <summary>
    ///终端ID
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int TerminalId {
      get { if ((_hasBits0 & 1) != 0) { return terminalId_; } else { return TerminalIdDefaultValue; } }
      set {
        _hasBits0 |= 1;
        terminalId_ = value;
      }
    }
    /// <summary>Gets whether the "terminal_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasTerminalId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "terminal_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearTerminalId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "unit_id" field.</summary>
    public const int UnitIdFieldNumber = 2;
    private readonly static int UnitIdDefaultValue = 0;

    private int unitId_;
    /// <summary>
    ///单元号
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int UnitId {
      get { if ((_hasBits0 & 2) != 0) { return unitId_; } else { return UnitIdDefaultValue; } }
      set {
        _hasBits0 |= 2;
        unitId_ = value;
      }
    }
    /// <summary>Gets whether the "unit_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasUnitId {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "unit_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearUnitId() {
      _hasBits0 &= ~2;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Id_struct other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (TerminalId != other.TerminalId) return false;
      if (UnitId != other.UnitId) 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 (HasTerminalId) hash ^= TerminalId.GetHashCode();
      if (HasUnitId) hash ^= UnitId.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 (HasTerminalId) {
        output.WriteRawTag(8);
        output.WriteInt32(TerminalId);
      }
      if (HasUnitId) {
        output.WriteRawTag(16);
        output.WriteInt32(UnitId);
      }
      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 (HasTerminalId) {
        output.WriteRawTag(8);
        output.WriteInt32(TerminalId);
      }
      if (HasUnitId) {
        output.WriteRawTag(16);
        output.WriteInt32(UnitId);
      }
      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 (HasTerminalId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TerminalId);
      }
      if (HasUnitId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UnitId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Id_struct other) {
      if (other == null) {
        return;
      }
      if (other.HasTerminalId) {
        TerminalId = other.TerminalId;
      }
      if (other.HasUnitId) {
        UnitId = other.UnitId;
      }
      _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 8: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 16: {
            UnitId = input.ReadInt32();
            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 8: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 16: {
            UnitId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
