// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: DeviceInfo.proto

package com.zhidao.ptech.shadow.server.protocol;

public final class DeviceInfo {
  private DeviceInfo() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * <pre>
   * 摄像头状态
   * </pre>
   *
   * Protobuf enum {@code com.zhidao.ptech.shadow.server.protocol.CameraStatus}
   */
  public enum CameraStatus
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * 未知
     * </pre>
     *
     * <code>CAMERA_STATUS_UNKNOW = 0;</code>
     */
    CAMERA_STATUS_UNKNOW(0),
    /**
     * <pre>
     * 可用
     * </pre>
     *
     * <code>CAMERA_STATUS_AVAILABLE = 1;</code>
     */
    CAMERA_STATUS_AVAILABLE(1),
    /**
     * <pre>
     * 不可用
     * </pre>
     *
     * <code>CAMERA_STATUS_UNAVAILABLE = 2;</code>
     */
    CAMERA_STATUS_UNAVAILABLE(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * 未知
     * </pre>
     *
     * <code>CAMERA_STATUS_UNKNOW = 0;</code>
     */
    public static final int CAMERA_STATUS_UNKNOW_VALUE = 0;
    /**
     * <pre>
     * 可用
     * </pre>
     *
     * <code>CAMERA_STATUS_AVAILABLE = 1;</code>
     */
    public static final int CAMERA_STATUS_AVAILABLE_VALUE = 1;
    /**
     * <pre>
     * 不可用
     * </pre>
     *
     * <code>CAMERA_STATUS_UNAVAILABLE = 2;</code>
     */
    public static final int CAMERA_STATUS_UNAVAILABLE_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @Deprecated
    public static CameraStatus valueOf(int value) {
      return forNumber(value);
    }

    public static CameraStatus forNumber(int value) {
      switch (value) {
        case 0: return CAMERA_STATUS_UNKNOW;
        case 1: return CAMERA_STATUS_AVAILABLE;
        case 2: return CAMERA_STATUS_UNAVAILABLE;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<CameraStatus>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        CameraStatus> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<CameraStatus>() {
            public CameraStatus findValueByNumber(int number) {
              return CameraStatus.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return DeviceInfo.getDescriptor().getEnumTypes().get(0);
    }

    private static final CameraStatus[] VALUES = values();

    public static CameraStatus valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private CameraStatus(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:com.zhidao.ptech.shadow.server.protocol.CameraStatus)
  }

  /**
   * Protobuf enum {@code com.zhidao.ptech.shadow.server.protocol.CoordinateType}
   */
  public enum CoordinateType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * 火星经纬度，国内GPS默认取的是火星坐标系
     * </pre>
     *
     * <code>GCJ = 0;</code>
     */
    GCJ(0),
    /**
     * <pre>
     * 百度坐标系
     * </pre>
     *
     * <code>BAIDU_COORDINATE = 1;</code>
     */
    BAIDU_COORDINATE(1),
    /**
     * <pre>
     * 腾讯和高德和国测局坐标系
     * </pre>
     *
     * <code>SOSO_GCJ_COORDINATE = 2;</code>
     */
    SOSO_GCJ_COORDINATE(2),
    /**
     * <pre>
     * 地球经纬度
     * </pre>
     *
     * <code>WGS84 = 3;</code>
     */
    WGS84(3),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * 火星经纬度，国内GPS默认取的是火星坐标系
     * </pre>
     *
     * <code>GCJ = 0;</code>
     */
    public static final int GCJ_VALUE = 0;
    /**
     * <pre>
     * 百度坐标系
     * </pre>
     *
     * <code>BAIDU_COORDINATE = 1;</code>
     */
    public static final int BAIDU_COORDINATE_VALUE = 1;
    /**
     * <pre>
     * 腾讯和高德和国测局坐标系
     * </pre>
     *
     * <code>SOSO_GCJ_COORDINATE = 2;</code>
     */
    public static final int SOSO_GCJ_COORDINATE_VALUE = 2;
    /**
     * <pre>
     * 地球经纬度
     * </pre>
     *
     * <code>WGS84 = 3;</code>
     */
    public static final int WGS84_VALUE = 3;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @Deprecated
    public static CoordinateType valueOf(int value) {
      return forNumber(value);
    }

    public static CoordinateType forNumber(int value) {
      switch (value) {
        case 0: return GCJ;
        case 1: return BAIDU_COORDINATE;
        case 2: return SOSO_GCJ_COORDINATE;
        case 3: return WGS84;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<CoordinateType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        CoordinateType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<CoordinateType>() {
            public CoordinateType findValueByNumber(int number) {
              return CoordinateType.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return DeviceInfo.getDescriptor().getEnumTypes().get(1);
    }

    private static final CoordinateType[] VALUES = values();

    public static CoordinateType valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private CoordinateType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:com.zhidao.ptech.shadow.server.protocol.CoordinateType)
  }

  /**
   * Protobuf enum {@code com.zhidao.ptech.shadow.server.protocol.LockType}
   */
  public enum LockType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * 未知
     * </pre>
     *
     * <code>LOCK_TYPE_UNKNOW = 0;</code>
     */
    LOCK_TYPE_UNKNOW(0),
    /**
     * <pre>
     * GPS定位
     * </pre>
     *
     * <code>LOCK_TYPE_GPS = 1;</code>
     */
    LOCK_TYPE_GPS(1),
    /**
     * <pre>
     * 前次定位
     * </pre>
     *
     * <code>LOCK_TYPE_LAST = 2;</code>
     */
    LOCK_TYPE_LAST(2),
    /**
     * <pre>
     * 缓存定位
     * </pre>
     *
     * <code>LOCK_TYPE_CACHE = 4;</code>
     */
    LOCK_TYPE_CACHE(4),
    /**
     * <pre>
     * wifi定位
     * </pre>
     *
     * <code>LOCK_TYPE_WIFI = 5;</code>
     */
    LOCK_TYPE_WIFI(5),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * 未知
     * </pre>
     *
     * <code>LOCK_TYPE_UNKNOW = 0;</code>
     */
    public static final int LOCK_TYPE_UNKNOW_VALUE = 0;
    /**
     * <pre>
     * GPS定位
     * </pre>
     *
     * <code>LOCK_TYPE_GPS = 1;</code>
     */
    public static final int LOCK_TYPE_GPS_VALUE = 1;
    /**
     * <pre>
     * 前次定位
     * </pre>
     *
     * <code>LOCK_TYPE_LAST = 2;</code>
     */
    public static final int LOCK_TYPE_LAST_VALUE = 2;
    /**
     * <pre>
     * 缓存定位
     * </pre>
     *
     * <code>LOCK_TYPE_CACHE = 4;</code>
     */
    public static final int LOCK_TYPE_CACHE_VALUE = 4;
    /**
     * <pre>
     * wifi定位
     * </pre>
     *
     * <code>LOCK_TYPE_WIFI = 5;</code>
     */
    public static final int LOCK_TYPE_WIFI_VALUE = 5;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @Deprecated
    public static LockType valueOf(int value) {
      return forNumber(value);
    }

    public static LockType forNumber(int value) {
      switch (value) {
        case 0: return LOCK_TYPE_UNKNOW;
        case 1: return LOCK_TYPE_GPS;
        case 2: return LOCK_TYPE_LAST;
        case 4: return LOCK_TYPE_CACHE;
        case 5: return LOCK_TYPE_WIFI;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<LockType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        LockType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<LockType>() {
            public LockType findValueByNumber(int number) {
              return LockType.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return DeviceInfo.getDescriptor().getEnumTypes().get(2);
    }

    private static final LockType[] VALUES = values();

    public static LockType valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private LockType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:com.zhidao.ptech.shadow.server.protocol.LockType)
  }

  public interface DeviceInfoDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.zhidao.ptech.shadow.server.protocol.DeviceInfoData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 精确到毫秒的时间戳
     * </pre>
     *
     * <code>int64 timestamp = 1;</code>
     */
    long getTimestamp();

    /**
     * <pre>
     * sn码
     * </pre>
     *
     * <code>string sn = 2;</code>
     */
    String getSn();
    /**
     * <pre>
     * sn码
     * </pre>
     *
     * <code>string sn = 2;</code>
     */
    com.google.protobuf.ByteString
        getSnBytes();

    /**
     * <pre>
     * uid
     * </pre>
     *
     * <code>int64 uid = 3;</code>
     */
    long getUid();

    /**
     * <pre>
     * 数据版本
     * </pre>
     *
     * <code>int64 version = 4;</code>
     */
    long getVersion();

    /**
     * <pre>
     * 纬度
     * </pre>
     *
     * <code>double lat = 5;</code>
     */
    double getLat();

    /**
     * <pre>
     * 经度
     * </pre>
     *
     * <code>double lon = 6;</code>
     */
    double getLon();

    /**
     * <pre>
     * 坐标系类型
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CoordinateType coordinateType = 7;</code>
     */
    int getCoordinateTypeValue();
    /**
     * <pre>
     * 坐标系类型
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CoordinateType coordinateType = 7;</code>
     */
    CoordinateType getCoordinateType();

    /**
     * <pre>
     * 坐标类型
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.LockType lockType = 8;</code>
     */
    int getLockTypeValue();
    /**
     * <pre>
     * 坐标类型
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.LockType lockType = 8;</code>
     */
    LockType getLockType();

    /**
     * <code>string cityCode = 9;</code>
     */
    String getCityCode();
    /**
     * <code>string cityCode = 9;</code>
     */
    com.google.protobuf.ByteString
        getCityCodeBytes();

    /**
     * <code>string adCode = 10;</code>
     */
    String getAdCode();
    /**
     * <code>string adCode = 10;</code>
     */
    com.google.protobuf.ByteString
        getAdCodeBytes();

    /**
     * <pre>
     * 摄像头信息
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
     */
    boolean hasCameraInfo();
    /**
     * <pre>
     * 摄像头信息
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
     */
    CameraInfo getCameraInfo();
    /**
     * <pre>
     * 摄像头信息
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
     */
    CameraInfoOrBuilder getCameraInfoOrBuilder();
  }
  /**
   * Protobuf type {@code com.zhidao.ptech.shadow.server.protocol.DeviceInfoData}
   */
  public  static final class DeviceInfoData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.zhidao.ptech.shadow.server.protocol.DeviceInfoData)
      DeviceInfoDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeviceInfoData.newBuilder() to construct.
    private DeviceInfoData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeviceInfoData() {
      sn_ = "";
      coordinateType_ = 0;
      lockType_ = 0;
      cityCode_ = "";
      adCode_ = "";
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DeviceInfoData(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              timestamp_ = input.readInt64();
              break;
            }
            case 18: {
              String s = input.readStringRequireUtf8();

              sn_ = s;
              break;
            }
            case 24: {

              uid_ = input.readInt64();
              break;
            }
            case 32: {

              version_ = input.readInt64();
              break;
            }
            case 41: {

              lat_ = input.readDouble();
              break;
            }
            case 49: {

              lon_ = input.readDouble();
              break;
            }
            case 56: {
              int rawValue = input.readEnum();

              coordinateType_ = rawValue;
              break;
            }
            case 64: {
              int rawValue = input.readEnum();

              lockType_ = rawValue;
              break;
            }
            case 74: {
              String s = input.readStringRequireUtf8();

              cityCode_ = s;
              break;
            }
            case 82: {
              String s = input.readStringRequireUtf8();

              adCode_ = s;
              break;
            }
            case 810: {
              CameraInfo.Builder subBuilder = null;
              if (cameraInfo_ != null) {
                subBuilder = cameraInfo_.toBuilder();
              }
              cameraInfo_ = input.readMessage(CameraInfo.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(cameraInfo_);
                cameraInfo_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return DeviceInfo.internal_static_com_zhidao_ptech_shadow_server_protocol_DeviceInfoData_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return DeviceInfo.internal_static_com_zhidao_ptech_shadow_server_protocol_DeviceInfoData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              DeviceInfoData.class, Builder.class);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 1;
    private long timestamp_;
    /**
     * <pre>
     * 精确到毫秒的时间戳
     * </pre>
     *
     * <code>int64 timestamp = 1;</code>
     */
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int SN_FIELD_NUMBER = 2;
    private volatile Object sn_;
    /**
     * <pre>
     * sn码
     * </pre>
     *
     * <code>string sn = 2;</code>
     */
    public String getSn() {
      Object ref = sn_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        sn_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * sn码
     * </pre>
     *
     * <code>string sn = 2;</code>
     */
    public com.google.protobuf.ByteString
        getSnBytes() {
      Object ref = sn_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        sn_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int UID_FIELD_NUMBER = 3;
    private long uid_;
    /**
     * <pre>
     * uid
     * </pre>
     *
     * <code>int64 uid = 3;</code>
     */
    public long getUid() {
      return uid_;
    }

    public static final int VERSION_FIELD_NUMBER = 4;
    private long version_;
    /**
     * <pre>
     * 数据版本
     * </pre>
     *
     * <code>int64 version = 4;</code>
     */
    public long getVersion() {
      return version_;
    }

    public static final int LAT_FIELD_NUMBER = 5;
    private double lat_;
    /**
     * <pre>
     * 纬度
     * </pre>
     *
     * <code>double lat = 5;</code>
     */
    public double getLat() {
      return lat_;
    }

    public static final int LON_FIELD_NUMBER = 6;
    private double lon_;
    /**
     * <pre>
     * 经度
     * </pre>
     *
     * <code>double lon = 6;</code>
     */
    public double getLon() {
      return lon_;
    }

    public static final int COORDINATETYPE_FIELD_NUMBER = 7;
    private int coordinateType_;
    /**
     * <pre>
     * 坐标系类型
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CoordinateType coordinateType = 7;</code>
     */
    public int getCoordinateTypeValue() {
      return coordinateType_;
    }
    /**
     * <pre>
     * 坐标系类型
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CoordinateType coordinateType = 7;</code>
     */
    public CoordinateType getCoordinateType() {
      @SuppressWarnings("deprecation")
      CoordinateType result = CoordinateType.valueOf(coordinateType_);
      return result == null ? CoordinateType.UNRECOGNIZED : result;
    }

    public static final int LOCKTYPE_FIELD_NUMBER = 8;
    private int lockType_;
    /**
     * <pre>
     * 坐标类型
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.LockType lockType = 8;</code>
     */
    public int getLockTypeValue() {
      return lockType_;
    }
    /**
     * <pre>
     * 坐标类型
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.LockType lockType = 8;</code>
     */
    public LockType getLockType() {
      @SuppressWarnings("deprecation")
      LockType result = LockType.valueOf(lockType_);
      return result == null ? LockType.UNRECOGNIZED : result;
    }

    public static final int CITYCODE_FIELD_NUMBER = 9;
    private volatile Object cityCode_;
    /**
     * <code>string cityCode = 9;</code>
     */
    public String getCityCode() {
      Object ref = cityCode_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        cityCode_ = s;
        return s;
      }
    }
    /**
     * <code>string cityCode = 9;</code>
     */
    public com.google.protobuf.ByteString
        getCityCodeBytes() {
      Object ref = cityCode_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        cityCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ADCODE_FIELD_NUMBER = 10;
    private volatile Object adCode_;
    /**
     * <code>string adCode = 10;</code>
     */
    public String getAdCode() {
      Object ref = adCode_;
      if (ref instanceof String) {
        return (String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        String s = bs.toStringUtf8();
        adCode_ = s;
        return s;
      }
    }
    /**
     * <code>string adCode = 10;</code>
     */
    public com.google.protobuf.ByteString
        getAdCodeBytes() {
      Object ref = adCode_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (String) ref);
        adCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CAMERAINFO_FIELD_NUMBER = 101;
    private CameraInfo cameraInfo_;
    /**
     * <pre>
     * 摄像头信息
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
     */
    public boolean hasCameraInfo() {
      return cameraInfo_ != null;
    }
    /**
     * <pre>
     * 摄像头信息
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
     */
    public CameraInfo getCameraInfo() {
      return cameraInfo_ == null ? CameraInfo.getDefaultInstance() : cameraInfo_;
    }
    /**
     * <pre>
     * 摄像头信息
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
     */
    public CameraInfoOrBuilder getCameraInfoOrBuilder() {
      return getCameraInfo();
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (timestamp_ != 0L) {
        output.writeInt64(1, timestamp_);
      }
      if (!getSnBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, sn_);
      }
      if (uid_ != 0L) {
        output.writeInt64(3, uid_);
      }
      if (version_ != 0L) {
        output.writeInt64(4, version_);
      }
      if (lat_ != 0D) {
        output.writeDouble(5, lat_);
      }
      if (lon_ != 0D) {
        output.writeDouble(6, lon_);
      }
      if (coordinateType_ != CoordinateType.GCJ.getNumber()) {
        output.writeEnum(7, coordinateType_);
      }
      if (lockType_ != LockType.LOCK_TYPE_UNKNOW.getNumber()) {
        output.writeEnum(8, lockType_);
      }
      if (!getCityCodeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, cityCode_);
      }
      if (!getAdCodeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, adCode_);
      }
      if (cameraInfo_ != null) {
        output.writeMessage(101, getCameraInfo());
      }
      unknownFields.writeTo(output);
    }

    @Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, timestamp_);
      }
      if (!getSnBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, sn_);
      }
      if (uid_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, uid_);
      }
      if (version_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, version_);
      }
      if (lat_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(5, lat_);
      }
      if (lon_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(6, lon_);
      }
      if (coordinateType_ != CoordinateType.GCJ.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(7, coordinateType_);
      }
      if (lockType_ != LockType.LOCK_TYPE_UNKNOW.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(8, lockType_);
      }
      if (!getCityCodeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, cityCode_);
      }
      if (!getAdCodeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, adCode_);
      }
      if (cameraInfo_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(101, getCameraInfo());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof DeviceInfoData)) {
        return super.equals(obj);
      }
      DeviceInfoData other = (DeviceInfoData) obj;

      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getSn()
          .equals(other.getSn())) return false;
      if (getUid()
          != other.getUid()) return false;
      if (getVersion()
          != other.getVersion()) return false;
      if (Double.doubleToLongBits(getLat())
          != Double.doubleToLongBits(
              other.getLat())) return false;
      if (Double.doubleToLongBits(getLon())
          != Double.doubleToLongBits(
              other.getLon())) return false;
      if (coordinateType_ != other.coordinateType_) return false;
      if (lockType_ != other.lockType_) return false;
      if (!getCityCode()
          .equals(other.getCityCode())) return false;
      if (!getAdCode()
          .equals(other.getAdCode())) return false;
      if (hasCameraInfo() != other.hasCameraInfo()) return false;
      if (hasCameraInfo()) {
        if (!getCameraInfo()
            .equals(other.getCameraInfo())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (37 * hash) + SN_FIELD_NUMBER;
      hash = (53 * hash) + getSn().hashCode();
      hash = (37 * hash) + UID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getUid());
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getVersion());
      hash = (37 * hash) + LAT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          Double.doubleToLongBits(getLat()));
      hash = (37 * hash) + LON_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          Double.doubleToLongBits(getLon()));
      hash = (37 * hash) + COORDINATETYPE_FIELD_NUMBER;
      hash = (53 * hash) + coordinateType_;
      hash = (37 * hash) + LOCKTYPE_FIELD_NUMBER;
      hash = (53 * hash) + lockType_;
      hash = (37 * hash) + CITYCODE_FIELD_NUMBER;
      hash = (53 * hash) + getCityCode().hashCode();
      hash = (37 * hash) + ADCODE_FIELD_NUMBER;
      hash = (53 * hash) + getAdCode().hashCode();
      if (hasCameraInfo()) {
        hash = (37 * hash) + CAMERAINFO_FIELD_NUMBER;
        hash = (53 * hash) + getCameraInfo().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static DeviceInfoData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DeviceInfoData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DeviceInfoData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DeviceInfoData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DeviceInfoData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static DeviceInfoData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static DeviceInfoData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DeviceInfoData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static DeviceInfoData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static DeviceInfoData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static DeviceInfoData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static DeviceInfoData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(DeviceInfoData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.zhidao.ptech.shadow.server.protocol.DeviceInfoData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.zhidao.ptech.shadow.server.protocol.DeviceInfoData)
        DeviceInfoDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DeviceInfo.internal_static_com_zhidao_ptech_shadow_server_protocol_DeviceInfoData_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceInfo.internal_static_com_zhidao_ptech_shadow_server_protocol_DeviceInfoData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                DeviceInfoData.class, Builder.class);
      }

      // Construct using com.zhidao.ptech.shadow.server.protocol.DeviceInfo.DeviceInfoData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        timestamp_ = 0L;

        sn_ = "";

        uid_ = 0L;

        version_ = 0L;

        lat_ = 0D;

        lon_ = 0D;

        coordinateType_ = 0;

        lockType_ = 0;

        cityCode_ = "";

        adCode_ = "";

        if (cameraInfoBuilder_ == null) {
          cameraInfo_ = null;
        } else {
          cameraInfo_ = null;
          cameraInfoBuilder_ = null;
        }
        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return DeviceInfo.internal_static_com_zhidao_ptech_shadow_server_protocol_DeviceInfoData_descriptor;
      }

      @Override
      public DeviceInfoData getDefaultInstanceForType() {
        return DeviceInfoData.getDefaultInstance();
      }

      @Override
      public DeviceInfoData build() {
        DeviceInfoData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public DeviceInfoData buildPartial() {
        DeviceInfoData result = new DeviceInfoData(this);
        result.timestamp_ = timestamp_;
        result.sn_ = sn_;
        result.uid_ = uid_;
        result.version_ = version_;
        result.lat_ = lat_;
        result.lon_ = lon_;
        result.coordinateType_ = coordinateType_;
        result.lockType_ = lockType_;
        result.cityCode_ = cityCode_;
        result.adCode_ = adCode_;
        if (cameraInfoBuilder_ == null) {
          result.cameraInfo_ = cameraInfo_;
        } else {
          result.cameraInfo_ = cameraInfoBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof DeviceInfoData) {
          return mergeFrom((DeviceInfoData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(DeviceInfoData other) {
        if (other == DeviceInfoData.getDefaultInstance()) return this;
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (!other.getSn().isEmpty()) {
          sn_ = other.sn_;
          onChanged();
        }
        if (other.getUid() != 0L) {
          setUid(other.getUid());
        }
        if (other.getVersion() != 0L) {
          setVersion(other.getVersion());
        }
        if (other.getLat() != 0D) {
          setLat(other.getLat());
        }
        if (other.getLon() != 0D) {
          setLon(other.getLon());
        }
        if (other.coordinateType_ != 0) {
          setCoordinateTypeValue(other.getCoordinateTypeValue());
        }
        if (other.lockType_ != 0) {
          setLockTypeValue(other.getLockTypeValue());
        }
        if (!other.getCityCode().isEmpty()) {
          cityCode_ = other.cityCode_;
          onChanged();
        }
        if (!other.getAdCode().isEmpty()) {
          adCode_ = other.adCode_;
          onChanged();
        }
        if (other.hasCameraInfo()) {
          mergeCameraInfo(other.getCameraInfo());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        return true;
      }

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        DeviceInfoData parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (DeviceInfoData) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * 精确到毫秒的时间戳
       * </pre>
       *
       * <code>int64 timestamp = 1;</code>
       */
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * 精确到毫秒的时间戳
       * </pre>
       *
       * <code>int64 timestamp = 1;</code>
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 精确到毫秒的时间戳
       * </pre>
       *
       * <code>int64 timestamp = 1;</code>
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private Object sn_ = "";
      /**
       * <pre>
       * sn码
       * </pre>
       *
       * <code>string sn = 2;</code>
       */
      public String getSn() {
        Object ref = sn_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          sn_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <pre>
       * sn码
       * </pre>
       *
       * <code>string sn = 2;</code>
       */
      public com.google.protobuf.ByteString
          getSnBytes() {
        Object ref = sn_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          sn_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * sn码
       * </pre>
       *
       * <code>string sn = 2;</code>
       */
      public Builder setSn(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sn_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sn码
       * </pre>
       *
       * <code>string sn = 2;</code>
       */
      public Builder clearSn() {
        
        sn_ = getDefaultInstance().getSn();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * sn码
       * </pre>
       *
       * <code>string sn = 2;</code>
       */
      public Builder setSnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sn_ = value;
        onChanged();
        return this;
      }

      private long uid_ ;
      /**
       * <pre>
       * uid
       * </pre>
       *
       * <code>int64 uid = 3;</code>
       */
      public long getUid() {
        return uid_;
      }
      /**
       * <pre>
       * uid
       * </pre>
       *
       * <code>int64 uid = 3;</code>
       */
      public Builder setUid(long value) {
        
        uid_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * uid
       * </pre>
       *
       * <code>int64 uid = 3;</code>
       */
      public Builder clearUid() {
        
        uid_ = 0L;
        onChanged();
        return this;
      }

      private long version_ ;
      /**
       * <pre>
       * 数据版本
       * </pre>
       *
       * <code>int64 version = 4;</code>
       */
      public long getVersion() {
        return version_;
      }
      /**
       * <pre>
       * 数据版本
       * </pre>
       *
       * <code>int64 version = 4;</code>
       */
      public Builder setVersion(long value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 数据版本
       * </pre>
       *
       * <code>int64 version = 4;</code>
       */
      public Builder clearVersion() {
        
        version_ = 0L;
        onChanged();
        return this;
      }

      private double lat_ ;
      /**
       * <pre>
       * 纬度
       * </pre>
       *
       * <code>double lat = 5;</code>
       */
      public double getLat() {
        return lat_;
      }
      /**
       * <pre>
       * 纬度
       * </pre>
       *
       * <code>double lat = 5;</code>
       */
      public Builder setLat(double value) {
        
        lat_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 纬度
       * </pre>
       *
       * <code>double lat = 5;</code>
       */
      public Builder clearLat() {
        
        lat_ = 0D;
        onChanged();
        return this;
      }

      private double lon_ ;
      /**
       * <pre>
       * 经度
       * </pre>
       *
       * <code>double lon = 6;</code>
       */
      public double getLon() {
        return lon_;
      }
      /**
       * <pre>
       * 经度
       * </pre>
       *
       * <code>double lon = 6;</code>
       */
      public Builder setLon(double value) {
        
        lon_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 经度
       * </pre>
       *
       * <code>double lon = 6;</code>
       */
      public Builder clearLon() {
        
        lon_ = 0D;
        onChanged();
        return this;
      }

      private int coordinateType_ = 0;
      /**
       * <pre>
       * 坐标系类型
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CoordinateType coordinateType = 7;</code>
       */
      public int getCoordinateTypeValue() {
        return coordinateType_;
      }
      /**
       * <pre>
       * 坐标系类型
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CoordinateType coordinateType = 7;</code>
       */
      public Builder setCoordinateTypeValue(int value) {
        coordinateType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 坐标系类型
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CoordinateType coordinateType = 7;</code>
       */
      public CoordinateType getCoordinateType() {
        @SuppressWarnings("deprecation")
        CoordinateType result = CoordinateType.valueOf(coordinateType_);
        return result == null ? CoordinateType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * 坐标系类型
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CoordinateType coordinateType = 7;</code>
       */
      public Builder setCoordinateType(CoordinateType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        coordinateType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 坐标系类型
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CoordinateType coordinateType = 7;</code>
       */
      public Builder clearCoordinateType() {
        
        coordinateType_ = 0;
        onChanged();
        return this;
      }

      private int lockType_ = 0;
      /**
       * <pre>
       * 坐标类型
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.LockType lockType = 8;</code>
       */
      public int getLockTypeValue() {
        return lockType_;
      }
      /**
       * <pre>
       * 坐标类型
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.LockType lockType = 8;</code>
       */
      public Builder setLockTypeValue(int value) {
        lockType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 坐标类型
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.LockType lockType = 8;</code>
       */
      public LockType getLockType() {
        @SuppressWarnings("deprecation")
        LockType result = LockType.valueOf(lockType_);
        return result == null ? LockType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * 坐标类型
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.LockType lockType = 8;</code>
       */
      public Builder setLockType(LockType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        lockType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 坐标类型
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.LockType lockType = 8;</code>
       */
      public Builder clearLockType() {
        
        lockType_ = 0;
        onChanged();
        return this;
      }

      private Object cityCode_ = "";
      /**
       * <code>string cityCode = 9;</code>
       */
      public String getCityCode() {
        Object ref = cityCode_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          cityCode_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string cityCode = 9;</code>
       */
      public com.google.protobuf.ByteString
          getCityCodeBytes() {
        Object ref = cityCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          cityCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string cityCode = 9;</code>
       */
      public Builder setCityCode(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cityCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string cityCode = 9;</code>
       */
      public Builder clearCityCode() {
        
        cityCode_ = getDefaultInstance().getCityCode();
        onChanged();
        return this;
      }
      /**
       * <code>string cityCode = 9;</code>
       */
      public Builder setCityCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        cityCode_ = value;
        onChanged();
        return this;
      }

      private Object adCode_ = "";
      /**
       * <code>string adCode = 10;</code>
       */
      public String getAdCode() {
        Object ref = adCode_;
        if (!(ref instanceof String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          adCode_ = s;
          return s;
        } else {
          return (String) ref;
        }
      }
      /**
       * <code>string adCode = 10;</code>
       */
      public com.google.protobuf.ByteString
          getAdCodeBytes() {
        Object ref = adCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (String) ref);
          adCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string adCode = 10;</code>
       */
      public Builder setAdCode(
          String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        adCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string adCode = 10;</code>
       */
      public Builder clearAdCode() {
        
        adCode_ = getDefaultInstance().getAdCode();
        onChanged();
        return this;
      }
      /**
       * <code>string adCode = 10;</code>
       */
      public Builder setAdCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        adCode_ = value;
        onChanged();
        return this;
      }

      private CameraInfo cameraInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          CameraInfo, CameraInfo.Builder, CameraInfoOrBuilder> cameraInfoBuilder_;
      /**
       * <pre>
       * 摄像头信息
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
       */
      public boolean hasCameraInfo() {
        return cameraInfoBuilder_ != null || cameraInfo_ != null;
      }
      /**
       * <pre>
       * 摄像头信息
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
       */
      public CameraInfo getCameraInfo() {
        if (cameraInfoBuilder_ == null) {
          return cameraInfo_ == null ? CameraInfo.getDefaultInstance() : cameraInfo_;
        } else {
          return cameraInfoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * 摄像头信息
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
       */
      public Builder setCameraInfo(CameraInfo value) {
        if (cameraInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          cameraInfo_ = value;
          onChanged();
        } else {
          cameraInfoBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * 摄像头信息
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
       */
      public Builder setCameraInfo(
          CameraInfo.Builder builderForValue) {
        if (cameraInfoBuilder_ == null) {
          cameraInfo_ = builderForValue.build();
          onChanged();
        } else {
          cameraInfoBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * 摄像头信息
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
       */
      public Builder mergeCameraInfo(CameraInfo value) {
        if (cameraInfoBuilder_ == null) {
          if (cameraInfo_ != null) {
            cameraInfo_ =
              CameraInfo.newBuilder(cameraInfo_).mergeFrom(value).buildPartial();
          } else {
            cameraInfo_ = value;
          }
          onChanged();
        } else {
          cameraInfoBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * 摄像头信息
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
       */
      public Builder clearCameraInfo() {
        if (cameraInfoBuilder_ == null) {
          cameraInfo_ = null;
          onChanged();
        } else {
          cameraInfo_ = null;
          cameraInfoBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * 摄像头信息
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
       */
      public CameraInfo.Builder getCameraInfoBuilder() {
        
        onChanged();
        return getCameraInfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * 摄像头信息
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
       */
      public CameraInfoOrBuilder getCameraInfoOrBuilder() {
        if (cameraInfoBuilder_ != null) {
          return cameraInfoBuilder_.getMessageOrBuilder();
        } else {
          return cameraInfo_ == null ?
              CameraInfo.getDefaultInstance() : cameraInfo_;
        }
      }
      /**
       * <pre>
       * 摄像头信息
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraInfo cameraInfo = 101;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          CameraInfo, CameraInfo.Builder, CameraInfoOrBuilder>
          getCameraInfoFieldBuilder() {
        if (cameraInfoBuilder_ == null) {
          cameraInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              CameraInfo, CameraInfo.Builder, CameraInfoOrBuilder>(
                  getCameraInfo(),
                  getParentForChildren(),
                  isClean());
          cameraInfo_ = null;
        }
        return cameraInfoBuilder_;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.zhidao.ptech.shadow.server.protocol.DeviceInfoData)
    }

    // @@protoc_insertion_point(class_scope:com.zhidao.ptech.shadow.server.protocol.DeviceInfoData)
    private static final DeviceInfoData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new DeviceInfoData();
    }

    public static DeviceInfoData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DeviceInfoData>
        PARSER = new com.google.protobuf.AbstractParser<DeviceInfoData>() {
      @Override
      public DeviceInfoData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new DeviceInfoData(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<DeviceInfoData> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<DeviceInfoData> getParserForType() {
      return PARSER;
    }

    @Override
    public DeviceInfoData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CameraInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.zhidao.ptech.shadow.server.protocol.CameraInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * 前置
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_1 = 1;</code>
     */
    int getC1Value();
    /**
     * <pre>
     * 前置
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_1 = 1;</code>
     */
    CameraStatus getC1();

    /**
     * <pre>
     * 后置
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_2 = 2;</code>
     */
    int getC2Value();
    /**
     * <pre>
     * 后置
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_2 = 2;</code>
     */
    CameraStatus getC2();

    /**
     * <pre>
     * 数据有效时间：数据失效时间 = 当前时间 + expireTime
     * </pre>
     *
     * <code>int64 expireTime = 3;</code>
     */
    long getExpireTime();
  }
  /**
   * <pre>
   * 摄像头信息
   * </pre>
   *
   * Protobuf type {@code com.zhidao.ptech.shadow.server.protocol.CameraInfo}
   */
  public  static final class CameraInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:com.zhidao.ptech.shadow.server.protocol.CameraInfo)
      CameraInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CameraInfo.newBuilder() to construct.
    private CameraInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CameraInfo() {
      c1_ = 0;
      c2_ = 0;
    }

    @Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CameraInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              int rawValue = input.readEnum();

              c1_ = rawValue;
              break;
            }
            case 16: {
              int rawValue = input.readEnum();

              c2_ = rawValue;
              break;
            }
            case 24: {

              expireTime_ = input.readInt64();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return DeviceInfo.internal_static_com_zhidao_ptech_shadow_server_protocol_CameraInfo_descriptor;
    }

    @Override
    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return DeviceInfo.internal_static_com_zhidao_ptech_shadow_server_protocol_CameraInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              CameraInfo.class, Builder.class);
    }

    public static final int C_1_FIELD_NUMBER = 1;
    private int c1_;
    /**
     * <pre>
     * 前置
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_1 = 1;</code>
     */
    public int getC1Value() {
      return c1_;
    }
    /**
     * <pre>
     * 前置
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_1 = 1;</code>
     */
    public CameraStatus getC1() {
      @SuppressWarnings("deprecation")
      CameraStatus result = CameraStatus.valueOf(c1_);
      return result == null ? CameraStatus.UNRECOGNIZED : result;
    }

    public static final int C_2_FIELD_NUMBER = 2;
    private int c2_;
    /**
     * <pre>
     * 后置
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_2 = 2;</code>
     */
    public int getC2Value() {
      return c2_;
    }
    /**
     * <pre>
     * 后置
     * </pre>
     *
     * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_2 = 2;</code>
     */
    public CameraStatus getC2() {
      @SuppressWarnings("deprecation")
      CameraStatus result = CameraStatus.valueOf(c2_);
      return result == null ? CameraStatus.UNRECOGNIZED : result;
    }

    public static final int EXPIRETIME_FIELD_NUMBER = 3;
    private long expireTime_;
    /**
     * <pre>
     * 数据有效时间：数据失效时间 = 当前时间 + expireTime
     * </pre>
     *
     * <code>int64 expireTime = 3;</code>
     */
    public long getExpireTime() {
      return expireTime_;
    }

    private byte memoizedIsInitialized = -1;
    @Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (c1_ != CameraStatus.CAMERA_STATUS_UNKNOW.getNumber()) {
        output.writeEnum(1, c1_);
      }
      if (c2_ != CameraStatus.CAMERA_STATUS_UNKNOW.getNumber()) {
        output.writeEnum(2, c2_);
      }
      if (expireTime_ != 0L) {
        output.writeInt64(3, expireTime_);
      }
      unknownFields.writeTo(output);
    }

    @Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (c1_ != CameraStatus.CAMERA_STATUS_UNKNOW.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, c1_);
      }
      if (c2_ != CameraStatus.CAMERA_STATUS_UNKNOW.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, c2_);
      }
      if (expireTime_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, expireTime_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @Override
    public boolean equals(final Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof CameraInfo)) {
        return super.equals(obj);
      }
      CameraInfo other = (CameraInfo) obj;

      if (c1_ != other.c1_) return false;
      if (c2_ != other.c2_) return false;
      if (getExpireTime()
          != other.getExpireTime()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + C_1_FIELD_NUMBER;
      hash = (53 * hash) + c1_;
      hash = (37 * hash) + C_2_FIELD_NUMBER;
      hash = (53 * hash) + c2_;
      hash = (37 * hash) + EXPIRETIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getExpireTime());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static CameraInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static CameraInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static CameraInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static CameraInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static CameraInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static CameraInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static CameraInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static CameraInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static CameraInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static CameraInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static CameraInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static CameraInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(CameraInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * 摄像头信息
     * </pre>
     *
     * Protobuf type {@code com.zhidao.ptech.shadow.server.protocol.CameraInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.zhidao.ptech.shadow.server.protocol.CameraInfo)
        CameraInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return DeviceInfo.internal_static_com_zhidao_ptech_shadow_server_protocol_CameraInfo_descriptor;
      }

      @Override
      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return DeviceInfo.internal_static_com_zhidao_ptech_shadow_server_protocol_CameraInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                CameraInfo.class, Builder.class);
      }

      // Construct using com.zhidao.ptech.shadow.server.protocol.DeviceInfo.CameraInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @Override
      public Builder clear() {
        super.clear();
        c1_ = 0;

        c2_ = 0;

        expireTime_ = 0L;

        return this;
      }

      @Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return DeviceInfo.internal_static_com_zhidao_ptech_shadow_server_protocol_CameraInfo_descriptor;
      }

      @Override
      public CameraInfo getDefaultInstanceForType() {
        return CameraInfo.getDefaultInstance();
      }

      @Override
      public CameraInfo build() {
        CameraInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @Override
      public CameraInfo buildPartial() {
        CameraInfo result = new CameraInfo(this);
        result.c1_ = c1_;
        result.c2_ = c2_;
        result.expireTime_ = expireTime_;
        onBuilt();
        return result;
      }

      @Override
      public Builder clone() {
        return super.clone();
      }
      @Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.setField(field, value);
      }
      @Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return super.addRepeatedField(field, value);
      }
      @Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof CameraInfo) {
          return mergeFrom((CameraInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(CameraInfo other) {
        if (other == CameraInfo.getDefaultInstance()) return this;
        if (other.c1_ != 0) {
          setC1Value(other.getC1Value());
        }
        if (other.c2_ != 0) {
          setC2Value(other.getC2Value());
        }
        if (other.getExpireTime() != 0L) {
          setExpireTime(other.getExpireTime());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @Override
      public final boolean isInitialized() {
        return true;
      }

      @Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        CameraInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (CameraInfo) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int c1_ = 0;
      /**
       * <pre>
       * 前置
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_1 = 1;</code>
       */
      public int getC1Value() {
        return c1_;
      }
      /**
       * <pre>
       * 前置
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_1 = 1;</code>
       */
      public Builder setC1Value(int value) {
        c1_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 前置
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_1 = 1;</code>
       */
      public CameraStatus getC1() {
        @SuppressWarnings("deprecation")
        CameraStatus result = CameraStatus.valueOf(c1_);
        return result == null ? CameraStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * 前置
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_1 = 1;</code>
       */
      public Builder setC1(CameraStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        c1_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 前置
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_1 = 1;</code>
       */
      public Builder clearC1() {
        
        c1_ = 0;
        onChanged();
        return this;
      }

      private int c2_ = 0;
      /**
       * <pre>
       * 后置
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_2 = 2;</code>
       */
      public int getC2Value() {
        return c2_;
      }
      /**
       * <pre>
       * 后置
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_2 = 2;</code>
       */
      public Builder setC2Value(int value) {
        c2_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 后置
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_2 = 2;</code>
       */
      public CameraStatus getC2() {
        @SuppressWarnings("deprecation")
        CameraStatus result = CameraStatus.valueOf(c2_);
        return result == null ? CameraStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * 后置
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_2 = 2;</code>
       */
      public Builder setC2(CameraStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        c2_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 后置
       * </pre>
       *
       * <code>.com.zhidao.ptech.shadow.server.protocol.CameraStatus C_2 = 2;</code>
       */
      public Builder clearC2() {
        
        c2_ = 0;
        onChanged();
        return this;
      }

      private long expireTime_ ;
      /**
       * <pre>
       * 数据有效时间：数据失效时间 = 当前时间 + expireTime
       * </pre>
       *
       * <code>int64 expireTime = 3;</code>
       */
      public long getExpireTime() {
        return expireTime_;
      }
      /**
       * <pre>
       * 数据有效时间：数据失效时间 = 当前时间 + expireTime
       * </pre>
       *
       * <code>int64 expireTime = 3;</code>
       */
      public Builder setExpireTime(long value) {
        
        expireTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * 数据有效时间：数据失效时间 = 当前时间 + expireTime
       * </pre>
       *
       * <code>int64 expireTime = 3;</code>
       */
      public Builder clearExpireTime() {
        
        expireTime_ = 0L;
        onChanged();
        return this;
      }
      @Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:com.zhidao.ptech.shadow.server.protocol.CameraInfo)
    }

    // @@protoc_insertion_point(class_scope:com.zhidao.ptech.shadow.server.protocol.CameraInfo)
    private static final CameraInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new CameraInfo();
    }

    public static CameraInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CameraInfo>
        PARSER = new com.google.protobuf.AbstractParser<CameraInfo>() {
      @Override
      public CameraInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new CameraInfo(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<CameraInfo> parser() {
      return PARSER;
    }

    @Override
    public com.google.protobuf.Parser<CameraInfo> getParserForType() {
      return PARSER;
    }

    @Override
    public CameraInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_zhidao_ptech_shadow_server_protocol_DeviceInfoData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_zhidao_ptech_shadow_server_protocol_DeviceInfoData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_zhidao_ptech_shadow_server_protocol_CameraInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_com_zhidao_ptech_shadow_server_protocol_CameraInfo_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    String[] descriptorData = {
      "\n\020DeviceInfo.proto\022\'com.zhidao.ptech.sha" +
      "dow.server.protocol\"\350\002\n\016DeviceInfoData\022\021" +
      "\n\ttimestamp\030\001 \001(\003\022\n\n\002sn\030\002 \001(\t\022\013\n\003uid\030\003 \001" +
      "(\003\022\017\n\007version\030\004 \001(\003\022\013\n\003lat\030\005 \001(\001\022\013\n\003lon\030" +
      "\006 \001(\001\022O\n\016coordinateType\030\007 \001(\01627.com.zhid" +
      "ao.ptech.shadow.server.protocol.Coordina" +
      "teType\022C\n\010lockType\030\010 \001(\01621.com.zhidao.pt" +
      "ech.shadow.server.protocol.LockType\022\020\n\010c" +
      "ityCode\030\t \001(\t\022\016\n\006adCode\030\n \001(\t\022G\n\ncameraI" +
      "nfo\030e \001(\01323.com.zhidao.ptech.shadow.serv" +
      "er.protocol.CameraInfo\"\250\001\n\nCameraInfo\022B\n" +
      "\003C_1\030\001 \001(\01625.com.zhidao.ptech.shadow.ser" +
      "ver.protocol.CameraStatus\022B\n\003C_2\030\002 \001(\01625" +
      ".com.zhidao.ptech.shadow.server.protocol" +
      ".CameraStatus\022\022\n\nexpireTime\030\003 \001(\003*d\n\014Cam" +
      "eraStatus\022\030\n\024CAMERA_STATUS_UNKNOW\020\000\022\033\n\027C" +
      "AMERA_STATUS_AVAILABLE\020\001\022\035\n\031CAMERA_STATU" +
      "S_UNAVAILABLE\020\002*S\n\016CoordinateType\022\007\n\003GCJ" +
      "\020\000\022\024\n\020BAIDU_COORDINATE\020\001\022\027\n\023SOSO_GCJ_COO" +
      "RDINATE\020\002\022\t\n\005WGS84\020\003*p\n\010LockType\022\024\n\020LOCK" +
      "_TYPE_UNKNOW\020\000\022\021\n\rLOCK_TYPE_GPS\020\001\022\022\n\016LOC" +
      "K_TYPE_LAST\020\002\022\023\n\017LOCK_TYPE_CACHE\020\004\022\022\n\016LO" +
      "CK_TYPE_WIFI\020\005B\014B\nDeviceInfob\006proto3"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
    internal_static_com_zhidao_ptech_shadow_server_protocol_DeviceInfoData_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_com_zhidao_ptech_shadow_server_protocol_DeviceInfoData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_zhidao_ptech_shadow_server_protocol_DeviceInfoData_descriptor,
        new String[] { "Timestamp", "Sn", "Uid", "Version", "Lat", "Lon", "CoordinateType", "LockType", "CityCode", "AdCode", "CameraInfo", });
    internal_static_com_zhidao_ptech_shadow_server_protocol_CameraInfo_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_com_zhidao_ptech_shadow_server_protocol_CameraInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_com_zhidao_ptech_shadow_server_protocol_CameraInfo_descriptor,
        new String[] { "C1", "C2", "ExpireTime", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
