// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: measure_message.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 measure_message.proto</summary>
  public static partial class MeasureMessageReflection {

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

    static MeasureMessageReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChVtZWFzdXJlX21lc3NhZ2UucHJvdG8SB21lc3NhZ2UaEm1lc3NhZ2VfYmFz",
            "ZS5wcm90byKwBAoSTWVhc3VyZV9zdGF0dXNfbXNnEiUKCWJhc2VfaW5mbxgB",
            "IAIoCzISLm1lc3NhZ2UuQmFzZV9pbmZvEhMKC3Rlcm1pbmFsX2lkGAIgAigF",
            "EjsKFGxhc2VyX21hbmFnZXJfc3RhdHVzGAMgAigOMh0ubWVzc2FnZS5MYXNl",
            "cl9tYW5hZ2VyX3N0YXR1cxIwChJsYXNlcl9zdGF0dV92ZWN0b3IYBCADKA4y",
            "FC5tZXNzYWdlLkxhc2VyX3N0YXR1Ej0KFWxvY2F0ZV9tYW5hZ2VyX3N0YXR1",
            "cxgFIAIoDjIeLm1lc3NhZ2UuTG9jYXRlX21hbmFnZXJfc3RhdHVzEjsKFHdh",
            "bmppX21hbmFnZXJfc3RhdHVzGAYgAigOMh0ubWVzc2FnZS5XYW5qaV9tYW5h",
            "Z2VyX3N0YXR1cxJFChl3YW5qaV9saWRhcl9kZXZpY2Vfc3RhdHVzGAcgAygO",
            "MiIubWVzc2FnZS5XYW5qaV9saWRhcl9kZXZpY2Vfc3RhdHVzEjsKFHJlZ2lv",
            "bl93b3JrZXJfc3RhdHVzGAggAygOMh0ubWVzc2FnZS5SZWdpb25fd29ya2Vy",
            "X3N0YXR1cxJAChtsb2NhdGVfaW5mb3JtYXRpb25fcmVhbHRpbWUYCSADKAsy",
            "Gy5tZXNzYWdlLkxvY2F0ZV9pbmZvcm1hdGlvbhItCg1lcnJvcl9tYW5hZ2Vy",
            "GAogAigLMhYubWVzc2FnZS5FcnJvcl9tYW5hZ2VyImYKE01lYXN1cmVfcmVx",
            "dWVzdF9tc2cSJQoJYmFzZV9pbmZvGAEgAigLMhIubWVzc2FnZS5CYXNlX2lu",
            "Zm8SEwoLY29tbWFuZF9rZXkYAiACKAkSEwoLdGVybWluYWxfaWQYAyACKAUi",
            "zwEKFE1lYXN1cmVfcmVzcG9uc2VfbXNnEiUKCWJhc2VfaW5mbxgBIAIoCzIS",
            "Lm1lc3NhZ2UuQmFzZV9pbmZvEhMKC2NvbW1hbmRfa2V5GAIgAigJEhMKC3Rl",
            "cm1pbmFsX2lkGAMgAigFEjcKEmxvY2F0ZV9pbmZvcm1hdGlvbhgEIAEoCzIb",
            "Lm1lc3NhZ2UuTG9jYXRlX2luZm9ybWF0aW9uEi0KDWVycm9yX21hbmFnZXIY",
            "BSACKAsyFi5tZXNzYWdlLkVycm9yX21hbmFnZXIibAoZR3JvdW5kX2RldGVj",
            "dF9yZXF1ZXN0X21zZxIlCgliYXNlX2luZm8YASACKAsyEi5tZXNzYWdlLkJh",
            "c2VfaW5mbxITCgtjb21tYW5kX2tleRgCIAIoCRITCgt0ZXJtaW5hbF9pZBgD",
            "IAIoBSLVAQoaR3JvdW5kX2RldGVjdF9yZXNwb25zZV9tc2cSJQoJYmFzZV9p",
            "bmZvGAEgAigLMhIubWVzc2FnZS5CYXNlX2luZm8SEwoLY29tbWFuZF9rZXkY",
            "AiACKAkSEwoLdGVybWluYWxfaWQYAyACKAUSNwoSbG9jYXRlX2luZm9ybWF0",
            "aW9uGAQgASgLMhsubWVzc2FnZS5Mb2NhdGVfaW5mb3JtYXRpb24SLQoNZXJy",
            "b3JfbWFuYWdlchgFIAIoCzIWLm1lc3NhZ2UuRXJyb3JfbWFuYWdlciKvAwoR",
            "R3JvdW5kX3N0YXR1c19tc2cSJQoJYmFzZV9pbmZvGAEgAigLMhIubWVzc2Fn",
            "ZS5CYXNlX2luZm8SEwoLdGVybWluYWxfaWQYAiACKAUSOwoUd2FuamlfbWFu",
            "YWdlcl9zdGF0dXMYAyACKA4yHS5tZXNzYWdlLldhbmppX21hbmFnZXJfc3Rh",
            "dHVzEkUKGXdhbmppX2xpZGFyX2RldmljZV9zdGF0dXMYBCADKA4yIi5tZXNz",
            "YWdlLldhbmppX2xpZGFyX2RldmljZV9zdGF0dXMSOwoUcmVnaW9uX3dvcmtl",
            "cl9zdGF0dXMYBSACKA4yHS5tZXNzYWdlLlJlZ2lvbl93b3JrZXJfc3RhdHVz",
            "EkAKG2xvY2F0ZV9pbmZvcm1hdGlvbl9yZWFsdGltZRgGIAIoCzIbLm1lc3Nh",
            "Z2UuTG9jYXRlX2luZm9ybWF0aW9uEiwKDWdyb3VuZF9zdGF0dXMYByACKA4y",
            "FS5tZXNzYWdlLkdyb3VuZF9zdGF0dRItCg1lcnJvcl9tYW5hZ2VyGAggAigL",
            "MhYubWVzc2FnZS5FcnJvcl9tYW5hZ2VyIjMKEENsb3VkX2Nvb3JkaW5hdGUS",
            "CQoBeBgBIAIoAhIJCgF5GAIgAigCEgkKAXoYAyACKAIiGgoKQ2xvdWRfdHlw",
            "ZRIMCgR0eXBlGAEgAigFIrIBChdMb2NhdGVfc2lmdF9yZXF1ZXN0X21zZxIl",
            "CgliYXNlX2luZm8YASACKAsyEi5tZXNzYWdlLkJhc2VfaW5mbxITCgtjb21t",
            "YW5kX2tleRgCIAIoCRITCgt0ZXJtaW5hbF9pZBgDIAIoBRIQCghsaWRhcl9p",
            "ZBgEIAIoBRI0ChFjbG91ZF9jb29yZGluYXRlcxgFIAMoCzIZLm1lc3NhZ2Uu",
            "Q2xvdWRfY29vcmRpbmF0ZSLVAQoYTG9jYXRlX3NpZnRfcmVzcG9uc2VfbXNn",
            "EiUKCWJhc2VfaW5mbxgBIAIoCzISLm1lc3NhZ2UuQmFzZV9pbmZvEhMKC2Nv",
            "bW1hbmRfa2V5GAIgAigJEhMKC3Rlcm1pbmFsX2lkGAMgAigFEhAKCGxpZGFy",
            "X2lkGAQgAigFEicKCmNsb3VkX3R5cGUYBSADKAsyEy5tZXNzYWdlLkNsb3Vk",
            "X3R5cGUSLQoNZXJyb3JfbWFuYWdlchgGIAIoCzIWLm1lc3NhZ2UuRXJyb3Jf",
            "bWFuYWdlciqfAQoUTGFzZXJfbWFuYWdlcl9zdGF0dXMSGAoUTEFTRVJfTUFO",
            "QUdFUl9VTktOT1cQABIXChNMQVNFUl9NQU5BR0VSX1JFQURZEAESHQoZTEFT",
            "RVJfTUFOQUdFUl9JU1NVRURfVEFTSxACEhwKGExBU0VSX01BTkFHRVJfV0FJ",
            "VF9SRVBMWRADEhcKE0xBU0VSX01BTkFHRVJfRkFVTFQQBCpVCgtMYXNlcl9z",
            "dGF0dRIUChBMQVNFUl9ESVNDT05ORUNUEAASDwoLTEFTRVJfUkVBRFkQARIO",
            "CgpMQVNFUl9CVVNZEAISDwoLTEFTRVJfRkFVTFQQAyqxAQoVTG9jYXRlX21h",
            "bmFnZXJfc3RhdHVzEhkKFUxPQ0FURV9NQU5BR0VSX1VOS05PVxAAEhgKFExP",
            "Q0FURV9NQU5BR0VSX1JFQURZEAESFwoTTE9DQVRFX01BTkFHRVJfU0lGVBAC",
            "EhYKEkxPQ0FURV9NQU5BR0VSX0NBUhADEhgKFExPQ0FURV9NQU5BR0VSX1dI",
            "RUVMEAQSGAoUTE9DQVRFX01BTkFHRVJfRkFVTFQQBSr3AQoUV2FuamlfbWFu",
            "YWdlcl9zdGF0dXMSGQoVV0FOSklfTUFOQUdFUl9VTktOT1dOEAASFwoTV0FO",
            "SklfTUFOQUdFUl9SRUFEWRABEhYKEldBTkpJX01BTkFHRVJfQlVTWRACEh0K",
            "GVdBTkpJX01BTkFHRVJfSVNTVUVEX1NDQU4QAxIbChdXQU5KSV9NQU5BR0VS",
            "X1dBSVRfU0NBThAEEh8KG1dBTkpJX01BTkFHRVJfSVNTVUVEX0RFVEVDVBAF",
            "Eh0KGVdBTkpJX01BTkFHRVJfV0FJVF9ERVRFQ1QQBhIXChNXQU5KSV9NQU5B",
            "R0VSX0ZBVUxUEAoqtwEKGVdhbmppX2xpZGFyX2RldmljZV9zdGF0dXMSHgoa",
            "V0FOSklfTElEQVJfREVWSUNFX1VOS05PV04QABIcChhXQU5KSV9MSURBUl9E",
            "RVZJQ0VfUkVBRFkQARIhCh1XQU5KSV9MSURBUl9ERVZJQ0VfRElTQ09OTkVD",
            "VBACEhsKF1dBTkpJX0xJREFSX0RFVklDRV9CVVNZEAMSHAoYV0FOSklfTElE",
            "QVJfREVWSUNFX0ZBVUxUEAoqewoUUmVnaW9uX3dvcmtlcl9zdGF0dXMSGQoV",
            "UkVHSU9OX1dPUktFUl9VTktOT1dOEAASFwoTUkVHSU9OX1dPUktFUl9SRUFE",
            "WRABEhYKElJFR0lPTl9XT1JLRVJfQlVTWRACEhcKE1JFR0lPTl9XT1JLRVJf",
            "RkFVTFQQCiqBAQoMR3JvdW5kX3N0YXR1EgsKB05vdGhpbmcQABIJCgVOb2lz",
            "ZRABEg8KC0Nhcl9jb3JyZWN0EAISEAoMQ2FyX2xlZnRfb3V0EAMSEQoNQ2Fy",
            "X3JpZ2h0X291dBAEEg8KC0Nhcl90b3Bfb3V0EAUSEgoOQ2FyX2JvdHRvbV9v",
            "dXQQBg=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Message.MessageBaseReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Message.Laser_manager_status), typeof(global::Message.Laser_statu), typeof(global::Message.Locate_manager_status), typeof(global::Message.Wanji_manager_status), typeof(global::Message.Wanji_lidar_device_status), typeof(global::Message.Region_worker_status), typeof(global::Message.Ground_statu), }, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Measure_status_msg), global::Message.Measure_status_msg.Parser, new[]{ "BaseInfo", "TerminalId", "LaserManagerStatus", "LaserStatuVector", "LocateManagerStatus", "WanjiManagerStatus", "WanjiLidarDeviceStatus", "RegionWorkerStatus", "LocateInformationRealtime", "ErrorManager" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Measure_request_msg), global::Message.Measure_request_msg.Parser, new[]{ "BaseInfo", "CommandKey", "TerminalId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Measure_response_msg), global::Message.Measure_response_msg.Parser, new[]{ "BaseInfo", "CommandKey", "TerminalId", "LocateInformation", "ErrorManager" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Ground_detect_request_msg), global::Message.Ground_detect_request_msg.Parser, new[]{ "BaseInfo", "CommandKey", "TerminalId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Ground_detect_response_msg), global::Message.Ground_detect_response_msg.Parser, new[]{ "BaseInfo", "CommandKey", "TerminalId", "LocateInformation", "ErrorManager" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Ground_status_msg), global::Message.Ground_status_msg.Parser, new[]{ "BaseInfo", "TerminalId", "WanjiManagerStatus", "WanjiLidarDeviceStatus", "RegionWorkerStatus", "LocateInformationRealtime", "GroundStatus", "ErrorManager" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Cloud_coordinate), global::Message.Cloud_coordinate.Parser, new[]{ "X", "Y", "Z" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Cloud_type), global::Message.Cloud_type.Parser, new[]{ "Type" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Locate_sift_request_msg), global::Message.Locate_sift_request_msg.Parser, new[]{ "BaseInfo", "CommandKey", "TerminalId", "LidarId", "CloudCoordinates" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Message.Locate_sift_response_msg), global::Message.Locate_sift_response_msg.Parser, new[]{ "BaseInfo", "CommandKey", "TerminalId", "LidarId", "CloudType", "ErrorManager" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  /// <summary>
  ///雷达管理模块的工作状态
  /// </summary>
  public enum Laser_manager_status {
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("LASER_MANAGER_UNKNOW")] LaserManagerUnknow = 0,
    /// <summary>
    ///准备，待机
    /// </summary>
    [pbr::OriginalName("LASER_MANAGER_READY")] LaserManagerReady = 1,
    /// <summary>
    ///工作下发任务
    /// </summary>
    [pbr::OriginalName("LASER_MANAGER_ISSUED_TASK")] LaserManagerIssuedTask = 2,
    /// <summary>
    ///工作等待答复
    /// </summary>
    [pbr::OriginalName("LASER_MANAGER_WAIT_REPLY")] LaserManagerWaitReply = 3,
    /// <summary>
    ///故障
    /// </summary>
    [pbr::OriginalName("LASER_MANAGER_FAULT")] LaserManagerFault = 4,
  }

  /// <summary>
  ///子雷达状态
  /// </summary>
  public enum Laser_statu {
    /// <summary>
    ///雷达断连
    /// </summary>
    [pbr::OriginalName("LASER_DISCONNECT")] LaserDisconnect = 0,
    /// <summary>
    ///雷达正常待机，空闲
    /// </summary>
    [pbr::OriginalName("LASER_READY")] LaserReady = 1,
    /// <summary>
    ///雷达正在工作，正忙
    /// </summary>
    [pbr::OriginalName("LASER_BUSY")] LaserBusy = 2,
    /// <summary>
    ///雷达错误
    /// </summary>
    [pbr::OriginalName("LASER_FAULT")] LaserFault = 3,
  }

  /// <summary>
  ///定位管理模块的工作状态
  /// </summary>
  public enum Locate_manager_status {
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("LOCATE_MANAGER_UNKNOW")] LocateManagerUnknow = 0,
    /// <summary>
    ///准备，待机
    /// </summary>
    [pbr::OriginalName("LOCATE_MANAGER_READY")] LocateManagerReady = 1,
    /// <summary>
    ///sift点云筛选; 将车身和轮胎的点剥离出来
    /// </summary>
    [pbr::OriginalName("LOCATE_MANAGER_SIFT")] LocateManagerSift = 2,
    /// <summary>
    ///通过车身 计算汽车的定位信息.
    /// </summary>
    [pbr::OriginalName("LOCATE_MANAGER_CAR")] LocateManagerCar = 3,
    /// <summary>
    ///通过车轮 计算汽车的定位信息.
    /// </summary>
    [pbr::OriginalName("LOCATE_MANAGER_WHEEL")] LocateManagerWheel = 4,
    /// <summary>
    ///故障
    /// </summary>
    [pbr::OriginalName("LOCATE_MANAGER_FAULT")] LocateManagerFault = 5,
  }

  /// <summary>
  ///雷达管理的状态
  /// </summary>
  public enum Wanji_manager_status {
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("WANJI_MANAGER_UNKNOWN")] WanjiManagerUnknown = 0,
    /// <summary>
    ///准备，待机
    /// </summary>
    [pbr::OriginalName("WANJI_MANAGER_READY")] WanjiManagerReady = 1,
    /// <summary>
    ///工作正忙
    /// </summary>
    [pbr::OriginalName("WANJI_MANAGER_BUSY")] WanjiManagerBusy = 2,
    /// <summary>
    ///下发任务; 获取点云
    /// </summary>
    [pbr::OriginalName("WANJI_MANAGER_ISSUED_SCAN")] WanjiManagerIssuedScan = 3,
    /// <summary>
    ///等待任务; 扫描点云
    /// </summary>
    [pbr::OriginalName("WANJI_MANAGER_WAIT_SCAN")] WanjiManagerWaitScan = 4,
    /// <summary>
    ///下发任务; 算法预测
    /// </summary>
    [pbr::OriginalName("WANJI_MANAGER_ISSUED_DETECT")] WanjiManagerIssuedDetect = 5,
    /// <summary>
    ///等待任务; 算法预测
    /// </summary>
    [pbr::OriginalName("WANJI_MANAGER_WAIT_DETECT")] WanjiManagerWaitDetect = 6,
    /// <summary>
    ///故障
    /// </summary>
    [pbr::OriginalName("WANJI_MANAGER_FAULT")] WanjiManagerFault = 10,
  }

  /// <summary>
  ///万集设备身状态
  /// </summary>
  public enum Wanji_lidar_device_status {
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("WANJI_LIDAR_DEVICE_UNKNOWN")] WanjiLidarDeviceUnknown = 0,
    /// <summary>
    ///正常待机
    /// </summary>
    [pbr::OriginalName("WANJI_LIDAR_DEVICE_READY")] WanjiLidarDeviceReady = 1,
    /// <summary>
    ///断连
    /// </summary>
    [pbr::OriginalName("WANJI_LIDAR_DEVICE_DISCONNECT")] WanjiLidarDeviceDisconnect = 2,
    /// <summary>
    ///工作正忙
    /// </summary>
    [pbr::OriginalName("WANJI_LIDAR_DEVICE_BUSY")] WanjiLidarDeviceBusy = 3,
    /// <summary>
    ///故障
    /// </summary>
    [pbr::OriginalName("WANJI_LIDAR_DEVICE_FAULT")] WanjiLidarDeviceFault = 10,
  }

  /// <summary>
  ///万集区域功能的状态
  /// </summary>
  public enum Region_worker_status {
    /// <summary>
    ///未知
    /// </summary>
    [pbr::OriginalName("REGION_WORKER_UNKNOWN")] RegionWorkerUnknown = 0,
    /// <summary>
    ///准备，待机
    /// </summary>
    [pbr::OriginalName("REGION_WORKER_READY")] RegionWorkerReady = 1,
    /// <summary>
    ///工作正忙
    /// </summary>
    [pbr::OriginalName("REGION_WORKER_BUSY")] RegionWorkerBusy = 2,
    /// <summary>
    ///故障
    /// </summary>
    [pbr::OriginalName("REGION_WORKER_FAULT")] RegionWorkerFault = 10,
  }

  /// <summary>
  /// 电子围栏状态
  /// </summary>
  public enum Ground_statu {
    [pbr::OriginalName("Nothing")] Nothing = 0,
    [pbr::OriginalName("Noise")] Noise = 1,
    [pbr::OriginalName("Car_correct")] CarCorrect = 2,
    [pbr::OriginalName("Car_left_out")] CarLeftOut = 3,
    [pbr::OriginalName("Car_right_out")] CarRightOut = 4,
    [pbr::OriginalName("Car_top_out")] CarTopOut = 5,
    [pbr::OriginalName("Car_bottom_out")] CarBottomOut = 6,
  }

  #endregion

  #region Messages
  /// <summary>
  ///定位模块状态
  /// </summary>
  public sealed partial class Measure_status_msg : pb::IMessage<Measure_status_msg>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Measure_status_msg> _parser = new pb::MessageParser<Measure_status_msg>(() => new Measure_status_msg());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Measure_status_msg> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Measure_status_msg(Measure_status_msg other) : this() {
      _hasBits0 = other._hasBits0;
      baseInfo_ = other.baseInfo_ != null ? other.baseInfo_.Clone() : null;
      terminalId_ = other.terminalId_;
      laserManagerStatus_ = other.laserManagerStatus_;
      laserStatuVector_ = other.laserStatuVector_.Clone();
      locateManagerStatus_ = other.locateManagerStatus_;
      wanjiManagerStatus_ = other.wanjiManagerStatus_;
      wanjiLidarDeviceStatus_ = other.wanjiLidarDeviceStatus_.Clone();
      regionWorkerStatus_ = other.regionWorkerStatus_.Clone();
      locateInformationRealtime_ = other.locateInformationRealtime_.Clone();
      errorManager_ = other.errorManager_ != null ? other.errorManager_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

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

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

    private int terminalId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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]
    public bool HasTerminalId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "terminal_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTerminalId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "laser_manager_status" field.</summary>
    public const int LaserManagerStatusFieldNumber = 3;
    private readonly static global::Message.Laser_manager_status LaserManagerStatusDefaultValue = global::Message.Laser_manager_status.LaserManagerUnknow;

    private global::Message.Laser_manager_status laserManagerStatus_;
    /// <summary>
    ///大疆管理状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Laser_manager_status LaserManagerStatus {
      get { if ((_hasBits0 & 2) != 0) { return laserManagerStatus_; } else { return LaserManagerStatusDefaultValue; } }
      set {
        _hasBits0 |= 2;
        laserManagerStatus_ = value;
      }
    }
    /// <summary>Gets whether the "laser_manager_status" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLaserManagerStatus {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "laser_manager_status" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLaserManagerStatus() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "laser_statu_vector" field.</summary>
    public const int LaserStatuVectorFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Message.Laser_statu> _repeated_laserStatuVector_codec
        = pb::FieldCodec.ForEnum(32, x => (int) x, x => (global::Message.Laser_statu) x);
    private readonly pbc::RepeatedField<global::Message.Laser_statu> laserStatuVector_ = new pbc::RepeatedField<global::Message.Laser_statu>();
    /// <summary>
    ///大疆雷达设备状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Message.Laser_statu> LaserStatuVector {
      get { return laserStatuVector_; }
    }

    /// <summary>Field number for the "locate_manager_status" field.</summary>
    public const int LocateManagerStatusFieldNumber = 5;
    private readonly static global::Message.Locate_manager_status LocateManagerStatusDefaultValue = global::Message.Locate_manager_status.LocateManagerUnknow;

    private global::Message.Locate_manager_status locateManagerStatus_;
    /// <summary>
    ///大疆定位算法状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Locate_manager_status LocateManagerStatus {
      get { if ((_hasBits0 & 4) != 0) { return locateManagerStatus_; } else { return LocateManagerStatusDefaultValue; } }
      set {
        _hasBits0 |= 4;
        locateManagerStatus_ = value;
      }
    }
    /// <summary>Gets whether the "locate_manager_status" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLocateManagerStatus {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "locate_manager_status" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLocateManagerStatus() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "wanji_manager_status" field.</summary>
    public const int WanjiManagerStatusFieldNumber = 6;
    private readonly static global::Message.Wanji_manager_status WanjiManagerStatusDefaultValue = global::Message.Wanji_manager_status.WanjiManagerUnknown;

    private global::Message.Wanji_manager_status wanjiManagerStatus_;
    /// <summary>
    ///万集管理状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Wanji_manager_status WanjiManagerStatus {
      get { if ((_hasBits0 & 8) != 0) { return wanjiManagerStatus_; } else { return WanjiManagerStatusDefaultValue; } }
      set {
        _hasBits0 |= 8;
        wanjiManagerStatus_ = value;
      }
    }
    /// <summary>Gets whether the "wanji_manager_status" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasWanjiManagerStatus {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "wanji_manager_status" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearWanjiManagerStatus() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "wanji_lidar_device_status" field.</summary>
    public const int WanjiLidarDeviceStatusFieldNumber = 7;
    private static readonly pb::FieldCodec<global::Message.Wanji_lidar_device_status> _repeated_wanjiLidarDeviceStatus_codec
        = pb::FieldCodec.ForEnum(56, x => (int) x, x => (global::Message.Wanji_lidar_device_status) x);
    private readonly pbc::RepeatedField<global::Message.Wanji_lidar_device_status> wanjiLidarDeviceStatus_ = new pbc::RepeatedField<global::Message.Wanji_lidar_device_status>();
    /// <summary>
    ///万集设备身状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Message.Wanji_lidar_device_status> WanjiLidarDeviceStatus {
      get { return wanjiLidarDeviceStatus_; }
    }

    /// <summary>Field number for the "region_worker_status" field.</summary>
    public const int RegionWorkerStatusFieldNumber = 8;
    private static readonly pb::FieldCodec<global::Message.Region_worker_status> _repeated_regionWorkerStatus_codec
        = pb::FieldCodec.ForEnum(64, x => (int) x, x => (global::Message.Region_worker_status) x);
    private readonly pbc::RepeatedField<global::Message.Region_worker_status> regionWorkerStatus_ = new pbc::RepeatedField<global::Message.Region_worker_status>();
    /// <summary>
    ///万集区域功能的状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Message.Region_worker_status> RegionWorkerStatus {
      get { return regionWorkerStatus_; }
    }

    /// <summary>Field number for the "locate_information_realtime" field.</summary>
    public const int LocateInformationRealtimeFieldNumber = 9;
    private static readonly pb::FieldCodec<global::Message.Locate_information> _repeated_locateInformationRealtime_codec
        = pb::FieldCodec.ForMessage(74, global::Message.Locate_information.Parser);
    private readonly pbc::RepeatedField<global::Message.Locate_information> locateInformationRealtime_ = new pbc::RepeatedField<global::Message.Locate_information>();
    /// <summary>
    ///地面雷达的 实时定位信息
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Message.Locate_information> LocateInformationRealtime {
      get { return locateInformationRealtime_; }
    }

    /// <summary>Field number for the "error_manager" field.</summary>
    public const int ErrorManagerFieldNumber = 10;
    private global::Message.Error_manager errorManager_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Error_manager ErrorManager {
      get { return errorManager_; }
      set {
        errorManager_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Measure_status_msg other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(BaseInfo, other.BaseInfo)) return false;
      if (TerminalId != other.TerminalId) return false;
      if (LaserManagerStatus != other.LaserManagerStatus) return false;
      if(!laserStatuVector_.Equals(other.laserStatuVector_)) return false;
      if (LocateManagerStatus != other.LocateManagerStatus) return false;
      if (WanjiManagerStatus != other.WanjiManagerStatus) return false;
      if(!wanjiLidarDeviceStatus_.Equals(other.wanjiLidarDeviceStatus_)) return false;
      if(!regionWorkerStatus_.Equals(other.regionWorkerStatus_)) return false;
      if(!locateInformationRealtime_.Equals(other.locateInformationRealtime_)) return false;
      if (!object.Equals(ErrorManager, other.ErrorManager)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (baseInfo_ != null) hash ^= BaseInfo.GetHashCode();
      if (HasTerminalId) hash ^= TerminalId.GetHashCode();
      if (HasLaserManagerStatus) hash ^= LaserManagerStatus.GetHashCode();
      hash ^= laserStatuVector_.GetHashCode();
      if (HasLocateManagerStatus) hash ^= LocateManagerStatus.GetHashCode();
      if (HasWanjiManagerStatus) hash ^= WanjiManagerStatus.GetHashCode();
      hash ^= wanjiLidarDeviceStatus_.GetHashCode();
      hash ^= regionWorkerStatus_.GetHashCode();
      hash ^= locateInformationRealtime_.GetHashCode();
      if (errorManager_ != null) hash ^= ErrorManager.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasTerminalId) {
        output.WriteRawTag(16);
        output.WriteInt32(TerminalId);
      }
      if (HasLaserManagerStatus) {
        output.WriteRawTag(24);
        output.WriteEnum((int) LaserManagerStatus);
      }
      laserStatuVector_.WriteTo(output, _repeated_laserStatuVector_codec);
      if (HasLocateManagerStatus) {
        output.WriteRawTag(40);
        output.WriteEnum((int) LocateManagerStatus);
      }
      if (HasWanjiManagerStatus) {
        output.WriteRawTag(48);
        output.WriteEnum((int) WanjiManagerStatus);
      }
      wanjiLidarDeviceStatus_.WriteTo(output, _repeated_wanjiLidarDeviceStatus_codec);
      regionWorkerStatus_.WriteTo(output, _repeated_regionWorkerStatus_codec);
      locateInformationRealtime_.WriteTo(output, _repeated_locateInformationRealtime_codec);
      if (errorManager_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(ErrorManager);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasTerminalId) {
        output.WriteRawTag(16);
        output.WriteInt32(TerminalId);
      }
      if (HasLaserManagerStatus) {
        output.WriteRawTag(24);
        output.WriteEnum((int) LaserManagerStatus);
      }
      laserStatuVector_.WriteTo(ref output, _repeated_laserStatuVector_codec);
      if (HasLocateManagerStatus) {
        output.WriteRawTag(40);
        output.WriteEnum((int) LocateManagerStatus);
      }
      if (HasWanjiManagerStatus) {
        output.WriteRawTag(48);
        output.WriteEnum((int) WanjiManagerStatus);
      }
      wanjiLidarDeviceStatus_.WriteTo(ref output, _repeated_wanjiLidarDeviceStatus_codec);
      regionWorkerStatus_.WriteTo(ref output, _repeated_regionWorkerStatus_codec);
      locateInformationRealtime_.WriteTo(ref output, _repeated_locateInformationRealtime_codec);
      if (errorManager_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(ErrorManager);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (baseInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BaseInfo);
      }
      if (HasTerminalId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TerminalId);
      }
      if (HasLaserManagerStatus) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) LaserManagerStatus);
      }
      size += laserStatuVector_.CalculateSize(_repeated_laserStatuVector_codec);
      if (HasLocateManagerStatus) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) LocateManagerStatus);
      }
      if (HasWanjiManagerStatus) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) WanjiManagerStatus);
      }
      size += wanjiLidarDeviceStatus_.CalculateSize(_repeated_wanjiLidarDeviceStatus_codec);
      size += regionWorkerStatus_.CalculateSize(_repeated_regionWorkerStatus_codec);
      size += locateInformationRealtime_.CalculateSize(_repeated_locateInformationRealtime_codec);
      if (errorManager_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ErrorManager);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Measure_status_msg other) {
      if (other == null) {
        return;
      }
      if (other.baseInfo_ != null) {
        if (baseInfo_ == null) {
          BaseInfo = new global::Message.Base_info();
        }
        BaseInfo.MergeFrom(other.BaseInfo);
      }
      if (other.HasTerminalId) {
        TerminalId = other.TerminalId;
      }
      if (other.HasLaserManagerStatus) {
        LaserManagerStatus = other.LaserManagerStatus;
      }
      laserStatuVector_.Add(other.laserStatuVector_);
      if (other.HasLocateManagerStatus) {
        LocateManagerStatus = other.LocateManagerStatus;
      }
      if (other.HasWanjiManagerStatus) {
        WanjiManagerStatus = other.WanjiManagerStatus;
      }
      wanjiLidarDeviceStatus_.Add(other.wanjiLidarDeviceStatus_);
      regionWorkerStatus_.Add(other.regionWorkerStatus_);
      locateInformationRealtime_.Add(other.locateInformationRealtime_);
      if (other.errorManager_ != null) {
        if (errorManager_ == null) {
          ErrorManager = new global::Message.Error_manager();
        }
        ErrorManager.MergeFrom(other.ErrorManager);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 16: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 24: {
            LaserManagerStatus = (global::Message.Laser_manager_status) input.ReadEnum();
            break;
          }
          case 34:
          case 32: {
            laserStatuVector_.AddEntriesFrom(input, _repeated_laserStatuVector_codec);
            break;
          }
          case 40: {
            LocateManagerStatus = (global::Message.Locate_manager_status) input.ReadEnum();
            break;
          }
          case 48: {
            WanjiManagerStatus = (global::Message.Wanji_manager_status) input.ReadEnum();
            break;
          }
          case 58:
          case 56: {
            wanjiLidarDeviceStatus_.AddEntriesFrom(input, _repeated_wanjiLidarDeviceStatus_codec);
            break;
          }
          case 66:
          case 64: {
            regionWorkerStatus_.AddEntriesFrom(input, _repeated_regionWorkerStatus_codec);
            break;
          }
          case 74: {
            locateInformationRealtime_.AddEntriesFrom(input, _repeated_locateInformationRealtime_codec);
            break;
          }
          case 82: {
            if (errorManager_ == null) {
              ErrorManager = new global::Message.Error_manager();
            }
            input.ReadMessage(ErrorManager);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 16: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 24: {
            LaserManagerStatus = (global::Message.Laser_manager_status) input.ReadEnum();
            break;
          }
          case 34:
          case 32: {
            laserStatuVector_.AddEntriesFrom(ref input, _repeated_laserStatuVector_codec);
            break;
          }
          case 40: {
            LocateManagerStatus = (global::Message.Locate_manager_status) input.ReadEnum();
            break;
          }
          case 48: {
            WanjiManagerStatus = (global::Message.Wanji_manager_status) input.ReadEnum();
            break;
          }
          case 58:
          case 56: {
            wanjiLidarDeviceStatus_.AddEntriesFrom(ref input, _repeated_wanjiLidarDeviceStatus_codec);
            break;
          }
          case 66:
          case 64: {
            regionWorkerStatus_.AddEntriesFrom(ref input, _repeated_regionWorkerStatus_codec);
            break;
          }
          case 74: {
            locateInformationRealtime_.AddEntriesFrom(ref input, _repeated_locateInformationRealtime_codec);
            break;
          }
          case 82: {
            if (errorManager_ == null) {
              ErrorManager = new global::Message.Error_manager();
            }
            input.ReadMessage(ErrorManager);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///定位请求消息
  /// </summary>
  public sealed partial class Measure_request_msg : pb::IMessage<Measure_request_msg>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Measure_request_msg> _parser = new pb::MessageParser<Measure_request_msg>(() => new Measure_request_msg());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Measure_request_msg> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

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

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

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

    /// <summary>Field number for the "command_key" field.</summary>
    public const int CommandKeyFieldNumber = 2;
    private readonly static string CommandKeyDefaultValue = "";

    private string commandKey_;
    /// <summary>
    ///指令唯一标识符id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string CommandKey {
      get { return commandKey_ ?? CommandKeyDefaultValue; }
      set {
        commandKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "command_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasCommandKey {
      get { return commandKey_ != null; }
    }
    /// <summary>Clears the value of the "command_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearCommandKey() {
      commandKey_ = null;
    }

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

    private int terminalId_;
    /// <summary>
    ///终端id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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]
    public bool HasTerminalId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "terminal_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTerminalId() {
      _hasBits0 &= ~1;
    }

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasCommandKey) {
        output.WriteRawTag(18);
        output.WriteString(CommandKey);
      }
      if (HasTerminalId) {
        output.WriteRawTag(24);
        output.WriteInt32(TerminalId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasCommandKey) {
        output.WriteRawTag(18);
        output.WriteString(CommandKey);
      }
      if (HasTerminalId) {
        output.WriteRawTag(24);
        output.WriteInt32(TerminalId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 18: {
            CommandKey = input.ReadString();
            break;
          }
          case 24: {
            TerminalId = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 18: {
            CommandKey = input.ReadString();
            break;
          }
          case 24: {
            TerminalId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///定位测量返回消息
  /// </summary>
  public sealed partial class Measure_response_msg : pb::IMessage<Measure_response_msg>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Measure_response_msg> _parser = new pb::MessageParser<Measure_response_msg>(() => new Measure_response_msg());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Measure_response_msg> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Measure_response_msg(Measure_response_msg other) : this() {
      _hasBits0 = other._hasBits0;
      baseInfo_ = other.baseInfo_ != null ? other.baseInfo_.Clone() : null;
      commandKey_ = other.commandKey_;
      terminalId_ = other.terminalId_;
      locateInformation_ = other.locateInformation_ != null ? other.locateInformation_.Clone() : null;
      errorManager_ = other.errorManager_ != null ? other.errorManager_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

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

    /// <summary>Field number for the "command_key" field.</summary>
    public const int CommandKeyFieldNumber = 2;
    private readonly static string CommandKeyDefaultValue = "";

    private string commandKey_;
    /// <summary>
    ///指令唯一标识符id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string CommandKey {
      get { return commandKey_ ?? CommandKeyDefaultValue; }
      set {
        commandKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "command_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasCommandKey {
      get { return commandKey_ != null; }
    }
    /// <summary>Clears the value of the "command_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearCommandKey() {
      commandKey_ = null;
    }

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

    private int terminalId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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]
    public bool HasTerminalId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "terminal_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTerminalId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "locate_information" field.</summary>
    public const int LocateInformationFieldNumber = 4;
    private global::Message.Locate_information locateInformation_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Locate_information LocateInformation {
      get { return locateInformation_; }
      set {
        locateInformation_ = value;
      }
    }

    /// <summary>Field number for the "error_manager" field.</summary>
    public const int ErrorManagerFieldNumber = 5;
    private global::Message.Error_manager errorManager_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Error_manager ErrorManager {
      get { return errorManager_; }
      set {
        errorManager_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (baseInfo_ != null) hash ^= BaseInfo.GetHashCode();
      if (HasCommandKey) hash ^= CommandKey.GetHashCode();
      if (HasTerminalId) hash ^= TerminalId.GetHashCode();
      if (locateInformation_ != null) hash ^= LocateInformation.GetHashCode();
      if (errorManager_ != null) hash ^= ErrorManager.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasCommandKey) {
        output.WriteRawTag(18);
        output.WriteString(CommandKey);
      }
      if (HasTerminalId) {
        output.WriteRawTag(24);
        output.WriteInt32(TerminalId);
      }
      if (locateInformation_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(LocateInformation);
      }
      if (errorManager_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(ErrorManager);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasCommandKey) {
        output.WriteRawTag(18);
        output.WriteString(CommandKey);
      }
      if (HasTerminalId) {
        output.WriteRawTag(24);
        output.WriteInt32(TerminalId);
      }
      if (locateInformation_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(LocateInformation);
      }
      if (errorManager_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(ErrorManager);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (baseInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BaseInfo);
      }
      if (HasCommandKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CommandKey);
      }
      if (HasTerminalId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TerminalId);
      }
      if (locateInformation_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LocateInformation);
      }
      if (errorManager_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ErrorManager);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Measure_response_msg other) {
      if (other == null) {
        return;
      }
      if (other.baseInfo_ != null) {
        if (baseInfo_ == null) {
          BaseInfo = new global::Message.Base_info();
        }
        BaseInfo.MergeFrom(other.BaseInfo);
      }
      if (other.HasCommandKey) {
        CommandKey = other.CommandKey;
      }
      if (other.HasTerminalId) {
        TerminalId = other.TerminalId;
      }
      if (other.locateInformation_ != null) {
        if (locateInformation_ == null) {
          LocateInformation = new global::Message.Locate_information();
        }
        LocateInformation.MergeFrom(other.LocateInformation);
      }
      if (other.errorManager_ != null) {
        if (errorManager_ == null) {
          ErrorManager = new global::Message.Error_manager();
        }
        ErrorManager.MergeFrom(other.ErrorManager);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 18: {
            CommandKey = input.ReadString();
            break;
          }
          case 24: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 34: {
            if (locateInformation_ == null) {
              LocateInformation = new global::Message.Locate_information();
            }
            input.ReadMessage(LocateInformation);
            break;
          }
          case 42: {
            if (errorManager_ == null) {
              ErrorManager = new global::Message.Error_manager();
            }
            input.ReadMessage(ErrorManager);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 18: {
            CommandKey = input.ReadString();
            break;
          }
          case 24: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 34: {
            if (locateInformation_ == null) {
              LocateInformation = new global::Message.Locate_information();
            }
            input.ReadMessage(LocateInformation);
            break;
          }
          case 42: {
            if (errorManager_ == null) {
              ErrorManager = new global::Message.Error_manager();
            }
            input.ReadMessage(ErrorManager);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///地面测量请求消息
  /// </summary>
  public sealed partial class Ground_detect_request_msg : pb::IMessage<Ground_detect_request_msg>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Ground_detect_request_msg> _parser = new pb::MessageParser<Ground_detect_request_msg>(() => new Ground_detect_request_msg());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Ground_detect_request_msg> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

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

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

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

    /// <summary>Field number for the "command_key" field.</summary>
    public const int CommandKeyFieldNumber = 2;
    private readonly static string CommandKeyDefaultValue = "";

    private string commandKey_;
    /// <summary>
    ///指令唯一标识符id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string CommandKey {
      get { return commandKey_ ?? CommandKeyDefaultValue; }
      set {
        commandKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "command_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasCommandKey {
      get { return commandKey_ != null; }
    }
    /// <summary>Clears the value of the "command_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearCommandKey() {
      commandKey_ = null;
    }

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

    private int terminalId_;
    /// <summary>
    ///终端id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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]
    public bool HasTerminalId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "terminal_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTerminalId() {
      _hasBits0 &= ~1;
    }

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasCommandKey) {
        output.WriteRawTag(18);
        output.WriteString(CommandKey);
      }
      if (HasTerminalId) {
        output.WriteRawTag(24);
        output.WriteInt32(TerminalId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasCommandKey) {
        output.WriteRawTag(18);
        output.WriteString(CommandKey);
      }
      if (HasTerminalId) {
        output.WriteRawTag(24);
        output.WriteInt32(TerminalId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 18: {
            CommandKey = input.ReadString();
            break;
          }
          case 24: {
            TerminalId = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 18: {
            CommandKey = input.ReadString();
            break;
          }
          case 24: {
            TerminalId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///地面测量反馈消息
  /// </summary>
  public sealed partial class Ground_detect_response_msg : pb::IMessage<Ground_detect_response_msg>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Ground_detect_response_msg> _parser = new pb::MessageParser<Ground_detect_response_msg>(() => new Ground_detect_response_msg());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Ground_detect_response_msg> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Ground_detect_response_msg(Ground_detect_response_msg other) : this() {
      _hasBits0 = other._hasBits0;
      baseInfo_ = other.baseInfo_ != null ? other.baseInfo_.Clone() : null;
      commandKey_ = other.commandKey_;
      terminalId_ = other.terminalId_;
      locateInformation_ = other.locateInformation_ != null ? other.locateInformation_.Clone() : null;
      errorManager_ = other.errorManager_ != null ? other.errorManager_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

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

    /// <summary>Field number for the "command_key" field.</summary>
    public const int CommandKeyFieldNumber = 2;
    private readonly static string CommandKeyDefaultValue = "";

    private string commandKey_;
    /// <summary>
    ///指令唯一标识符id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string CommandKey {
      get { return commandKey_ ?? CommandKeyDefaultValue; }
      set {
        commandKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "command_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasCommandKey {
      get { return commandKey_ != null; }
    }
    /// <summary>Clears the value of the "command_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearCommandKey() {
      commandKey_ = null;
    }

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

    private int terminalId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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]
    public bool HasTerminalId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "terminal_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTerminalId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "locate_information" field.</summary>
    public const int LocateInformationFieldNumber = 4;
    private global::Message.Locate_information locateInformation_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Locate_information LocateInformation {
      get { return locateInformation_; }
      set {
        locateInformation_ = value;
      }
    }

    /// <summary>Field number for the "error_manager" field.</summary>
    public const int ErrorManagerFieldNumber = 5;
    private global::Message.Error_manager errorManager_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Error_manager ErrorManager {
      get { return errorManager_; }
      set {
        errorManager_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (baseInfo_ != null) hash ^= BaseInfo.GetHashCode();
      if (HasCommandKey) hash ^= CommandKey.GetHashCode();
      if (HasTerminalId) hash ^= TerminalId.GetHashCode();
      if (locateInformation_ != null) hash ^= LocateInformation.GetHashCode();
      if (errorManager_ != null) hash ^= ErrorManager.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasCommandKey) {
        output.WriteRawTag(18);
        output.WriteString(CommandKey);
      }
      if (HasTerminalId) {
        output.WriteRawTag(24);
        output.WriteInt32(TerminalId);
      }
      if (locateInformation_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(LocateInformation);
      }
      if (errorManager_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(ErrorManager);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasCommandKey) {
        output.WriteRawTag(18);
        output.WriteString(CommandKey);
      }
      if (HasTerminalId) {
        output.WriteRawTag(24);
        output.WriteInt32(TerminalId);
      }
      if (locateInformation_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(LocateInformation);
      }
      if (errorManager_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(ErrorManager);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (baseInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BaseInfo);
      }
      if (HasCommandKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CommandKey);
      }
      if (HasTerminalId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TerminalId);
      }
      if (locateInformation_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LocateInformation);
      }
      if (errorManager_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ErrorManager);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Ground_detect_response_msg other) {
      if (other == null) {
        return;
      }
      if (other.baseInfo_ != null) {
        if (baseInfo_ == null) {
          BaseInfo = new global::Message.Base_info();
        }
        BaseInfo.MergeFrom(other.BaseInfo);
      }
      if (other.HasCommandKey) {
        CommandKey = other.CommandKey;
      }
      if (other.HasTerminalId) {
        TerminalId = other.TerminalId;
      }
      if (other.locateInformation_ != null) {
        if (locateInformation_ == null) {
          LocateInformation = new global::Message.Locate_information();
        }
        LocateInformation.MergeFrom(other.LocateInformation);
      }
      if (other.errorManager_ != null) {
        if (errorManager_ == null) {
          ErrorManager = new global::Message.Error_manager();
        }
        ErrorManager.MergeFrom(other.ErrorManager);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 18: {
            CommandKey = input.ReadString();
            break;
          }
          case 24: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 34: {
            if (locateInformation_ == null) {
              LocateInformation = new global::Message.Locate_information();
            }
            input.ReadMessage(LocateInformation);
            break;
          }
          case 42: {
            if (errorManager_ == null) {
              ErrorManager = new global::Message.Error_manager();
            }
            input.ReadMessage(ErrorManager);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 18: {
            CommandKey = input.ReadString();
            break;
          }
          case 24: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 34: {
            if (locateInformation_ == null) {
              LocateInformation = new global::Message.Locate_information();
            }
            input.ReadMessage(LocateInformation);
            break;
          }
          case 42: {
            if (errorManager_ == null) {
              ErrorManager = new global::Message.Error_manager();
            }
            input.ReadMessage(ErrorManager);
            break;
          }
        }
      }
    }
    #endif

  }

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

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Ground_status_msg(Ground_status_msg other) : this() {
      _hasBits0 = other._hasBits0;
      baseInfo_ = other.baseInfo_ != null ? other.baseInfo_.Clone() : null;
      terminalId_ = other.terminalId_;
      wanjiManagerStatus_ = other.wanjiManagerStatus_;
      wanjiLidarDeviceStatus_ = other.wanjiLidarDeviceStatus_.Clone();
      regionWorkerStatus_ = other.regionWorkerStatus_;
      locateInformationRealtime_ = other.locateInformationRealtime_ != null ? other.locateInformationRealtime_.Clone() : null;
      groundStatus_ = other.groundStatus_;
      errorManager_ = other.errorManager_ != null ? other.errorManager_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

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

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

    private int terminalId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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]
    public bool HasTerminalId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "terminal_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTerminalId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "wanji_manager_status" field.</summary>
    public const int WanjiManagerStatusFieldNumber = 3;
    private readonly static global::Message.Wanji_manager_status WanjiManagerStatusDefaultValue = global::Message.Wanji_manager_status.WanjiManagerUnknown;

    private global::Message.Wanji_manager_status wanjiManagerStatus_;
    /// <summary>
    ///万集管理状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Wanji_manager_status WanjiManagerStatus {
      get { if ((_hasBits0 & 2) != 0) { return wanjiManagerStatus_; } else { return WanjiManagerStatusDefaultValue; } }
      set {
        _hasBits0 |= 2;
        wanjiManagerStatus_ = value;
      }
    }
    /// <summary>Gets whether the "wanji_manager_status" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasWanjiManagerStatus {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "wanji_manager_status" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearWanjiManagerStatus() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "wanji_lidar_device_status" field.</summary>
    public const int WanjiLidarDeviceStatusFieldNumber = 4;
    private static readonly pb::FieldCodec<global::Message.Wanji_lidar_device_status> _repeated_wanjiLidarDeviceStatus_codec
        = pb::FieldCodec.ForEnum(32, x => (int) x, x => (global::Message.Wanji_lidar_device_status) x);
    private readonly pbc::RepeatedField<global::Message.Wanji_lidar_device_status> wanjiLidarDeviceStatus_ = new pbc::RepeatedField<global::Message.Wanji_lidar_device_status>();
    /// <summary>
    ///万集设备身状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Message.Wanji_lidar_device_status> WanjiLidarDeviceStatus {
      get { return wanjiLidarDeviceStatus_; }
    }

    /// <summary>Field number for the "region_worker_status" field.</summary>
    public const int RegionWorkerStatusFieldNumber = 5;
    private readonly static global::Message.Region_worker_status RegionWorkerStatusDefaultValue = global::Message.Region_worker_status.RegionWorkerUnknown;

    private global::Message.Region_worker_status regionWorkerStatus_;
    /// <summary>
    ///万集区域功能的状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Region_worker_status RegionWorkerStatus {
      get { if ((_hasBits0 & 4) != 0) { return regionWorkerStatus_; } else { return RegionWorkerStatusDefaultValue; } }
      set {
        _hasBits0 |= 4;
        regionWorkerStatus_ = value;
      }
    }
    /// <summary>Gets whether the "region_worker_status" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasRegionWorkerStatus {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "region_worker_status" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearRegionWorkerStatus() {
      _hasBits0 &= ~4;
    }

    /// <summary>Field number for the "locate_information_realtime" field.</summary>
    public const int LocateInformationRealtimeFieldNumber = 6;
    private global::Message.Locate_information locateInformationRealtime_;
    /// <summary>
    ///地面雷达的 实时定位信息
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Locate_information LocateInformationRealtime {
      get { return locateInformationRealtime_; }
      set {
        locateInformationRealtime_ = value;
      }
    }

    /// <summary>Field number for the "ground_status" field.</summary>
    public const int GroundStatusFieldNumber = 7;
    private readonly static global::Message.Ground_statu GroundStatusDefaultValue = global::Message.Ground_statu.Nothing;

    private global::Message.Ground_statu groundStatus_;
    /// <summary>
    /// 电子围栏状态
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Ground_statu GroundStatus {
      get { if ((_hasBits0 & 8) != 0) { return groundStatus_; } else { return GroundStatusDefaultValue; } }
      set {
        _hasBits0 |= 8;
        groundStatus_ = value;
      }
    }
    /// <summary>Gets whether the "ground_status" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasGroundStatus {
      get { return (_hasBits0 & 8) != 0; }
    }
    /// <summary>Clears the value of the "ground_status" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearGroundStatus() {
      _hasBits0 &= ~8;
    }

    /// <summary>Field number for the "error_manager" field.</summary>
    public const int ErrorManagerFieldNumber = 8;
    private global::Message.Error_manager errorManager_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Error_manager ErrorManager {
      get { return errorManager_; }
      set {
        errorManager_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Ground_status_msg other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(BaseInfo, other.BaseInfo)) return false;
      if (TerminalId != other.TerminalId) return false;
      if (WanjiManagerStatus != other.WanjiManagerStatus) return false;
      if(!wanjiLidarDeviceStatus_.Equals(other.wanjiLidarDeviceStatus_)) return false;
      if (RegionWorkerStatus != other.RegionWorkerStatus) return false;
      if (!object.Equals(LocateInformationRealtime, other.LocateInformationRealtime)) return false;
      if (GroundStatus != other.GroundStatus) return false;
      if (!object.Equals(ErrorManager, other.ErrorManager)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (baseInfo_ != null) hash ^= BaseInfo.GetHashCode();
      if (HasTerminalId) hash ^= TerminalId.GetHashCode();
      if (HasWanjiManagerStatus) hash ^= WanjiManagerStatus.GetHashCode();
      hash ^= wanjiLidarDeviceStatus_.GetHashCode();
      if (HasRegionWorkerStatus) hash ^= RegionWorkerStatus.GetHashCode();
      if (locateInformationRealtime_ != null) hash ^= LocateInformationRealtime.GetHashCode();
      if (HasGroundStatus) hash ^= GroundStatus.GetHashCode();
      if (errorManager_ != null) hash ^= ErrorManager.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasTerminalId) {
        output.WriteRawTag(16);
        output.WriteInt32(TerminalId);
      }
      if (HasWanjiManagerStatus) {
        output.WriteRawTag(24);
        output.WriteEnum((int) WanjiManagerStatus);
      }
      wanjiLidarDeviceStatus_.WriteTo(output, _repeated_wanjiLidarDeviceStatus_codec);
      if (HasRegionWorkerStatus) {
        output.WriteRawTag(40);
        output.WriteEnum((int) RegionWorkerStatus);
      }
      if (locateInformationRealtime_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(LocateInformationRealtime);
      }
      if (HasGroundStatus) {
        output.WriteRawTag(56);
        output.WriteEnum((int) GroundStatus);
      }
      if (errorManager_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(ErrorManager);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasTerminalId) {
        output.WriteRawTag(16);
        output.WriteInt32(TerminalId);
      }
      if (HasWanjiManagerStatus) {
        output.WriteRawTag(24);
        output.WriteEnum((int) WanjiManagerStatus);
      }
      wanjiLidarDeviceStatus_.WriteTo(ref output, _repeated_wanjiLidarDeviceStatus_codec);
      if (HasRegionWorkerStatus) {
        output.WriteRawTag(40);
        output.WriteEnum((int) RegionWorkerStatus);
      }
      if (locateInformationRealtime_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(LocateInformationRealtime);
      }
      if (HasGroundStatus) {
        output.WriteRawTag(56);
        output.WriteEnum((int) GroundStatus);
      }
      if (errorManager_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(ErrorManager);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (baseInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BaseInfo);
      }
      if (HasTerminalId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TerminalId);
      }
      if (HasWanjiManagerStatus) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) WanjiManagerStatus);
      }
      size += wanjiLidarDeviceStatus_.CalculateSize(_repeated_wanjiLidarDeviceStatus_codec);
      if (HasRegionWorkerStatus) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RegionWorkerStatus);
      }
      if (locateInformationRealtime_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LocateInformationRealtime);
      }
      if (HasGroundStatus) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) GroundStatus);
      }
      if (errorManager_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ErrorManager);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Ground_status_msg other) {
      if (other == null) {
        return;
      }
      if (other.baseInfo_ != null) {
        if (baseInfo_ == null) {
          BaseInfo = new global::Message.Base_info();
        }
        BaseInfo.MergeFrom(other.BaseInfo);
      }
      if (other.HasTerminalId) {
        TerminalId = other.TerminalId;
      }
      if (other.HasWanjiManagerStatus) {
        WanjiManagerStatus = other.WanjiManagerStatus;
      }
      wanjiLidarDeviceStatus_.Add(other.wanjiLidarDeviceStatus_);
      if (other.HasRegionWorkerStatus) {
        RegionWorkerStatus = other.RegionWorkerStatus;
      }
      if (other.locateInformationRealtime_ != null) {
        if (locateInformationRealtime_ == null) {
          LocateInformationRealtime = new global::Message.Locate_information();
        }
        LocateInformationRealtime.MergeFrom(other.LocateInformationRealtime);
      }
      if (other.HasGroundStatus) {
        GroundStatus = other.GroundStatus;
      }
      if (other.errorManager_ != null) {
        if (errorManager_ == null) {
          ErrorManager = new global::Message.Error_manager();
        }
        ErrorManager.MergeFrom(other.ErrorManager);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 16: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 24: {
            WanjiManagerStatus = (global::Message.Wanji_manager_status) input.ReadEnum();
            break;
          }
          case 34:
          case 32: {
            wanjiLidarDeviceStatus_.AddEntriesFrom(input, _repeated_wanjiLidarDeviceStatus_codec);
            break;
          }
          case 40: {
            RegionWorkerStatus = (global::Message.Region_worker_status) input.ReadEnum();
            break;
          }
          case 50: {
            if (locateInformationRealtime_ == null) {
              LocateInformationRealtime = new global::Message.Locate_information();
            }
            input.ReadMessage(LocateInformationRealtime);
            break;
          }
          case 56: {
            GroundStatus = (global::Message.Ground_statu) input.ReadEnum();
            break;
          }
          case 66: {
            if (errorManager_ == null) {
              ErrorManager = new global::Message.Error_manager();
            }
            input.ReadMessage(ErrorManager);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 16: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 24: {
            WanjiManagerStatus = (global::Message.Wanji_manager_status) input.ReadEnum();
            break;
          }
          case 34:
          case 32: {
            wanjiLidarDeviceStatus_.AddEntriesFrom(ref input, _repeated_wanjiLidarDeviceStatus_codec);
            break;
          }
          case 40: {
            RegionWorkerStatus = (global::Message.Region_worker_status) input.ReadEnum();
            break;
          }
          case 50: {
            if (locateInformationRealtime_ == null) {
              LocateInformationRealtime = new global::Message.Locate_information();
            }
            input.ReadMessage(LocateInformationRealtime);
            break;
          }
          case 56: {
            GroundStatus = (global::Message.Ground_statu) input.ReadEnum();
            break;
          }
          case 66: {
            if (errorManager_ == null) {
              ErrorManager = new global::Message.Error_manager();
            }
            input.ReadMessage(ErrorManager);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///点云坐标
  /// </summary>
  public sealed partial class Cloud_coordinate : pb::IMessage<Cloud_coordinate>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Cloud_coordinate> _parser = new pb::MessageParser<Cloud_coordinate>(() => new Cloud_coordinate());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Cloud_coordinate> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Cloud_coordinate(Cloud_coordinate other) : this() {
      _hasBits0 = other._hasBits0;
      x_ = other.x_;
      y_ = other.y_;
      z_ = other.z_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "x" field.</summary>
    public const int XFieldNumber = 1;
    private readonly static float XDefaultValue = 0F;

    private float x_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float X {
      get { if ((_hasBits0 & 1) != 0) { return x_; } else { return XDefaultValue; } }
      set {
        _hasBits0 |= 1;
        x_ = value;
      }
    }
    /// <summary>Gets whether the "x" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasX {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "x" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearX() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "y" field.</summary>
    public const int YFieldNumber = 2;
    private readonly static float YDefaultValue = 0F;

    private float y_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Y {
      get { if ((_hasBits0 & 2) != 0) { return y_; } else { return YDefaultValue; } }
      set {
        _hasBits0 |= 2;
        y_ = value;
      }
    }
    /// <summary>Gets whether the "y" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasY {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "y" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearY() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "z" field.</summary>
    public const int ZFieldNumber = 3;
    private readonly static float ZDefaultValue = 0F;

    private float z_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Z {
      get { if ((_hasBits0 & 4) != 0) { return z_; } else { return ZDefaultValue; } }
      set {
        _hasBits0 |= 4;
        z_ = value;
      }
    }
    /// <summary>Gets whether the "z" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasZ {
      get { return (_hasBits0 & 4) != 0; }
    }
    /// <summary>Clears the value of the "z" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearZ() {
      _hasBits0 &= ~4;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Cloud_coordinate other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(X, other.X)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Y, other.Y)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Z, other.Z)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (HasX) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(X);
      if (HasY) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Y);
      if (HasZ) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Z);
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (HasX) {
        output.WriteRawTag(13);
        output.WriteFloat(X);
      }
      if (HasY) {
        output.WriteRawTag(21);
        output.WriteFloat(Y);
      }
      if (HasZ) {
        output.WriteRawTag(29);
        output.WriteFloat(Z);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (HasX) {
        output.WriteRawTag(13);
        output.WriteFloat(X);
      }
      if (HasY) {
        output.WriteRawTag(21);
        output.WriteFloat(Y);
      }
      if (HasZ) {
        output.WriteRawTag(29);
        output.WriteFloat(Z);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (HasX) {
        size += 1 + 4;
      }
      if (HasY) {
        size += 1 + 4;
      }
      if (HasZ) {
        size += 1 + 4;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Cloud_coordinate other) {
      if (other == null) {
        return;
      }
      if (other.HasX) {
        X = other.X;
      }
      if (other.HasY) {
        Y = other.Y;
      }
      if (other.HasZ) {
        Z = other.Z;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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: {
            X = input.ReadFloat();
            break;
          }
          case 21: {
            Y = input.ReadFloat();
            break;
          }
          case 29: {
            Z = input.ReadFloat();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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: {
            X = input.ReadFloat();
            break;
          }
          case 21: {
            Y = input.ReadFloat();
            break;
          }
          case 29: {
            Z = input.ReadFloat();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///点云类型
  /// </summary>
  public sealed partial class Cloud_type : pb::IMessage<Cloud_type>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Cloud_type> _parser = new pb::MessageParser<Cloud_type>(() => new Cloud_type());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Cloud_type> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Cloud_type(Cloud_type other) : this() {
      _hasBits0 = other._hasBits0;
      type_ = other.type_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "type" field.</summary>
    public const int TypeFieldNumber = 1;
    private readonly static int TypeDefaultValue = 0;

    private int type_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int Type {
      get { if ((_hasBits0 & 1) != 0) { return type_; } else { return TypeDefaultValue; } }
      set {
        _hasBits0 |= 1;
        type_ = value;
      }
    }
    /// <summary>Gets whether the "type" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasType {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "type" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearType() {
      _hasBits0 &= ~1;
    }

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (HasType) {
        output.WriteRawTag(8);
        output.WriteInt32(Type);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (HasType) {
        output.WriteRawTag(8);
        output.WriteInt32(Type);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Cloud_type other) {
      if (other == null) {
        return;
      }
      if (other.HasType) {
        Type = other.Type;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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: {
            Type = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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: {
            Type = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///筛选点云; 请求消息
  /// </summary>
  public sealed partial class Locate_sift_request_msg : pb::IMessage<Locate_sift_request_msg>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Locate_sift_request_msg> _parser = new pb::MessageParser<Locate_sift_request_msg>(() => new Locate_sift_request_msg());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Locate_sift_request_msg> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Locate_sift_request_msg(Locate_sift_request_msg other) : this() {
      _hasBits0 = other._hasBits0;
      baseInfo_ = other.baseInfo_ != null ? other.baseInfo_.Clone() : null;
      commandKey_ = other.commandKey_;
      terminalId_ = other.terminalId_;
      lidarId_ = other.lidarId_;
      cloudCoordinates_ = other.cloudCoordinates_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

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

    /// <summary>Field number for the "command_key" field.</summary>
    public const int CommandKeyFieldNumber = 2;
    private readonly static string CommandKeyDefaultValue = "";

    private string commandKey_;
    /// <summary>
    ///指令唯一标识符id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string CommandKey {
      get { return commandKey_ ?? CommandKeyDefaultValue; }
      set {
        commandKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "command_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasCommandKey {
      get { return commandKey_ != null; }
    }
    /// <summary>Clears the value of the "command_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearCommandKey() {
      commandKey_ = null;
    }

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

    private int terminalId_;
    /// <summary>
    ///终端id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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]
    public bool HasTerminalId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "terminal_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTerminalId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "lidar_id" field.</summary>
    public const int LidarIdFieldNumber = 4;
    private readonly static int LidarIdDefaultValue = 0;

    private int lidarId_;
    /// <summary>
    ///雷达id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int LidarId {
      get { if ((_hasBits0 & 2) != 0) { return lidarId_; } else { return LidarIdDefaultValue; } }
      set {
        _hasBits0 |= 2;
        lidarId_ = value;
      }
    }
    /// <summary>Gets whether the "lidar_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLidarId {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "lidar_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLidarId() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "cloud_coordinates" field.</summary>
    public const int CloudCoordinatesFieldNumber = 5;
    private static readonly pb::FieldCodec<global::Message.Cloud_coordinate> _repeated_cloudCoordinates_codec
        = pb::FieldCodec.ForMessage(42, global::Message.Cloud_coordinate.Parser);
    private readonly pbc::RepeatedField<global::Message.Cloud_coordinate> cloudCoordinates_ = new pbc::RepeatedField<global::Message.Cloud_coordinate>();
    /// <summary>
    ///点云坐标
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Message.Cloud_coordinate> CloudCoordinates {
      get { return cloudCoordinates_; }
    }

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasCommandKey) {
        output.WriteRawTag(18);
        output.WriteString(CommandKey);
      }
      if (HasTerminalId) {
        output.WriteRawTag(24);
        output.WriteInt32(TerminalId);
      }
      if (HasLidarId) {
        output.WriteRawTag(32);
        output.WriteInt32(LidarId);
      }
      cloudCoordinates_.WriteTo(output, _repeated_cloudCoordinates_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasCommandKey) {
        output.WriteRawTag(18);
        output.WriteString(CommandKey);
      }
      if (HasTerminalId) {
        output.WriteRawTag(24);
        output.WriteInt32(TerminalId);
      }
      if (HasLidarId) {
        output.WriteRawTag(32);
        output.WriteInt32(LidarId);
      }
      cloudCoordinates_.WriteTo(ref output, _repeated_cloudCoordinates_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (baseInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BaseInfo);
      }
      if (HasCommandKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CommandKey);
      }
      if (HasTerminalId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TerminalId);
      }
      if (HasLidarId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(LidarId);
      }
      size += cloudCoordinates_.CalculateSize(_repeated_cloudCoordinates_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Locate_sift_request_msg other) {
      if (other == null) {
        return;
      }
      if (other.baseInfo_ != null) {
        if (baseInfo_ == null) {
          BaseInfo = new global::Message.Base_info();
        }
        BaseInfo.MergeFrom(other.BaseInfo);
      }
      if (other.HasCommandKey) {
        CommandKey = other.CommandKey;
      }
      if (other.HasTerminalId) {
        TerminalId = other.TerminalId;
      }
      if (other.HasLidarId) {
        LidarId = other.LidarId;
      }
      cloudCoordinates_.Add(other.cloudCoordinates_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 18: {
            CommandKey = input.ReadString();
            break;
          }
          case 24: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 32: {
            LidarId = input.ReadInt32();
            break;
          }
          case 42: {
            cloudCoordinates_.AddEntriesFrom(input, _repeated_cloudCoordinates_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 18: {
            CommandKey = input.ReadString();
            break;
          }
          case 24: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 32: {
            LidarId = input.ReadInt32();
            break;
          }
          case 42: {
            cloudCoordinates_.AddEntriesFrom(ref input, _repeated_cloudCoordinates_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  ///筛选点云; 答复消息
  /// </summary>
  public sealed partial class Locate_sift_response_msg : pb::IMessage<Locate_sift_response_msg>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Locate_sift_response_msg> _parser = new pb::MessageParser<Locate_sift_response_msg>(() => new Locate_sift_response_msg());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Locate_sift_response_msg> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Locate_sift_response_msg(Locate_sift_response_msg other) : this() {
      _hasBits0 = other._hasBits0;
      baseInfo_ = other.baseInfo_ != null ? other.baseInfo_.Clone() : null;
      commandKey_ = other.commandKey_;
      terminalId_ = other.terminalId_;
      lidarId_ = other.lidarId_;
      cloudType_ = other.cloudType_.Clone();
      errorManager_ = other.errorManager_ != null ? other.errorManager_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

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

    /// <summary>Field number for the "command_key" field.</summary>
    public const int CommandKeyFieldNumber = 2;
    private readonly static string CommandKeyDefaultValue = "";

    private string commandKey_;
    /// <summary>
    ///指令唯一标识符id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string CommandKey {
      get { return commandKey_ ?? CommandKeyDefaultValue; }
      set {
        commandKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }
    /// <summary>Gets whether the "command_key" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasCommandKey {
      get { return commandKey_ != null; }
    }
    /// <summary>Clears the value of the "command_key" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearCommandKey() {
      commandKey_ = null;
    }

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

    private int terminalId_;
    /// <summary>
    ///终端id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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]
    public bool HasTerminalId {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "terminal_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearTerminalId() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "lidar_id" field.</summary>
    public const int LidarIdFieldNumber = 4;
    private readonly static int LidarIdDefaultValue = 0;

    private int lidarId_;
    /// <summary>
    ///雷达id
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int LidarId {
      get { if ((_hasBits0 & 2) != 0) { return lidarId_; } else { return LidarIdDefaultValue; } }
      set {
        _hasBits0 |= 2;
        lidarId_ = value;
      }
    }
    /// <summary>Gets whether the "lidar_id" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool HasLidarId {
      get { return (_hasBits0 & 2) != 0; }
    }
    /// <summary>Clears the value of the "lidar_id" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearLidarId() {
      _hasBits0 &= ~2;
    }

    /// <summary>Field number for the "cloud_type" field.</summary>
    public const int CloudTypeFieldNumber = 5;
    private static readonly pb::FieldCodec<global::Message.Cloud_type> _repeated_cloudType_codec
        = pb::FieldCodec.ForMessage(42, global::Message.Cloud_type.Parser);
    private readonly pbc::RepeatedField<global::Message.Cloud_type> cloudType_ = new pbc::RepeatedField<global::Message.Cloud_type>();
    /// <summary>
    ///点云类型
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Message.Cloud_type> CloudType {
      get { return cloudType_; }
    }

    /// <summary>Field number for the "error_manager" field.</summary>
    public const int ErrorManagerFieldNumber = 6;
    private global::Message.Error_manager errorManager_;
    /// <summary>
    ///错误码
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Message.Error_manager ErrorManager {
      get { return errorManager_; }
      set {
        errorManager_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Locate_sift_response_msg other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(BaseInfo, other.BaseInfo)) return false;
      if (CommandKey != other.CommandKey) return false;
      if (TerminalId != other.TerminalId) return false;
      if (LidarId != other.LidarId) return false;
      if(!cloudType_.Equals(other.cloudType_)) return false;
      if (!object.Equals(ErrorManager, other.ErrorManager)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (baseInfo_ != null) hash ^= BaseInfo.GetHashCode();
      if (HasCommandKey) hash ^= CommandKey.GetHashCode();
      if (HasTerminalId) hash ^= TerminalId.GetHashCode();
      if (HasLidarId) hash ^= LidarId.GetHashCode();
      hash ^= cloudType_.GetHashCode();
      if (errorManager_ != null) hash ^= ErrorManager.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasCommandKey) {
        output.WriteRawTag(18);
        output.WriteString(CommandKey);
      }
      if (HasTerminalId) {
        output.WriteRawTag(24);
        output.WriteInt32(TerminalId);
      }
      if (HasLidarId) {
        output.WriteRawTag(32);
        output.WriteInt32(LidarId);
      }
      cloudType_.WriteTo(output, _repeated_cloudType_codec);
      if (errorManager_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(ErrorManager);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (baseInfo_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(BaseInfo);
      }
      if (HasCommandKey) {
        output.WriteRawTag(18);
        output.WriteString(CommandKey);
      }
      if (HasTerminalId) {
        output.WriteRawTag(24);
        output.WriteInt32(TerminalId);
      }
      if (HasLidarId) {
        output.WriteRawTag(32);
        output.WriteInt32(LidarId);
      }
      cloudType_.WriteTo(ref output, _repeated_cloudType_codec);
      if (errorManager_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(ErrorManager);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (baseInfo_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BaseInfo);
      }
      if (HasCommandKey) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CommandKey);
      }
      if (HasTerminalId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TerminalId);
      }
      if (HasLidarId) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(LidarId);
      }
      size += cloudType_.CalculateSize(_repeated_cloudType_codec);
      if (errorManager_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ErrorManager);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Locate_sift_response_msg other) {
      if (other == null) {
        return;
      }
      if (other.baseInfo_ != null) {
        if (baseInfo_ == null) {
          BaseInfo = new global::Message.Base_info();
        }
        BaseInfo.MergeFrom(other.BaseInfo);
      }
      if (other.HasCommandKey) {
        CommandKey = other.CommandKey;
      }
      if (other.HasTerminalId) {
        TerminalId = other.TerminalId;
      }
      if (other.HasLidarId) {
        LidarId = other.LidarId;
      }
      cloudType_.Add(other.cloudType_);
      if (other.errorManager_ != null) {
        if (errorManager_ == null) {
          ErrorManager = new global::Message.Error_manager();
        }
        ErrorManager.MergeFrom(other.ErrorManager);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 18: {
            CommandKey = input.ReadString();
            break;
          }
          case 24: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 32: {
            LidarId = input.ReadInt32();
            break;
          }
          case 42: {
            cloudType_.AddEntriesFrom(input, _repeated_cloudType_codec);
            break;
          }
          case 50: {
            if (errorManager_ == null) {
              ErrorManager = new global::Message.Error_manager();
            }
            input.ReadMessage(ErrorManager);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    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;
          }
          case 18: {
            CommandKey = input.ReadString();
            break;
          }
          case 24: {
            TerminalId = input.ReadInt32();
            break;
          }
          case 32: {
            LidarId = input.ReadInt32();
            break;
          }
          case 42: {
            cloudType_.AddEntriesFrom(ref input, _repeated_cloudType_codec);
            break;
          }
          case 50: {
            if (errorManager_ == null) {
              ErrorManager = new global::Message.Error_manager();
            }
            input.ReadMessage(ErrorManager);
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
