From e9ad2e18fcff1e6adcf4dd624a8ec02f9cb6c13e Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Thu, 24 Oct 2024 17:24:39 +0800
Subject: [PATCH] 增加protobuf映射实体解析数据

---
 ard-work/src/main/java/com/ard/tianyu/netty/protobuf/TelemetryDataPB.java | 9907 ++++++++++++++++++++++++++---------------------------------
 1 files changed, 4,393 insertions(+), 5,514 deletions(-)

diff --git a/ard-work/src/main/java/com/ard/tianyu/netty/protobuf/TelemetryDataPB.java b/ard-work/src/main/java/com/ard/tianyu/netty/protobuf/TelemetryDataPB.java
index 6c1407b..cb9cf96 100644
--- a/ard-work/src/main/java/com/ard/tianyu/netty/protobuf/TelemetryDataPB.java
+++ b/ard-work/src/main/java/com/ard/tianyu/netty/protobuf/TelemetryDataPB.java
@@ -1,5 +1,5 @@
 // Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: TelemetryDataBuf-new.proto
+// source: TelemetryDataBuf.proto
 
 package com.ard.tianyu.netty.protobuf;
 
@@ -23,8 +23,7 @@
      *经度
      * </pre>
      *
-     * <code>double lng = 1;</code>
-     * @return The lng.
+     * <code>optional double lng = 1;</code>
      */
     double getLng();
 
@@ -33,8 +32,7 @@
      *纬度
      * </pre>
      *
-     * <code>double lat = 2;</code>
-     * @return The lat.
+     * <code>optional double lat = 2;</code>
      */
     double getLat();
 
@@ -43,8 +41,7 @@
      *海拔高度(椭球高)(单位:米)[与遥控器显示值不同源,可能不一致。会受周围气压湿度等环境影响,数据差异及误差比较大]
      * </pre>
      *
-     * <code>float altitude = 3;</code>
-     * @return The altitude.
+     * <code>optional float altitude = 3;</code>
      */
     float getAltitude();
 
@@ -53,8 +50,7 @@
      *相对高度(单位:米)[飞行器距地面10米以下,此值为真实距地距离,大于10米时为距起飞点的相对高度]
      * </pre>
      *
-     * <code>float ultrasonic = 4;</code>
-     * @return The ultrasonic.
+     * <code>optional float ultrasonic = 4;</code>
      */
     float getUltrasonic();
 
@@ -63,8 +59,7 @@
      *俯仰角
      * </pre>
      *
-     * <code>float pitch = 5;</code>
-     * @return The pitch.
+     * <code>optional float pitch = 5;</code>
      */
     float getPitch();
 
@@ -73,8 +68,7 @@
      *横滚角
      * </pre>
      *
-     * <code>float roll = 6;</code>
-     * @return The roll.
+     * <code>optional float roll = 6;</code>
      */
     float getRoll();
 
@@ -83,8 +77,7 @@
      *偏航角
      * </pre>
      *
-     * <code>float yaw = 7;</code>
-     * @return The yaw.
+     * <code>optional float yaw = 7;</code>
      */
     float getYaw();
 
@@ -93,8 +86,7 @@
      *空速(单位:米/秒)
      * </pre>
      *
-     * <code>float airspeed = 8;</code>
-     * @return The airspeed.
+     * <code>optional float airspeed = 8;</code>
      */
     float getAirspeed();
 
@@ -103,8 +95,7 @@
      *地速(单位:米/秒)
      * </pre>
      *
-     * <code>float velocity = 9;</code>
-     * @return The velocity.
+     * <code>optional float velocity = 9;</code>
      */
     float getVelocity();
 
@@ -113,8 +104,7 @@
      *时间戳
      * </pre>
      *
-     * <code>uint64 timestamp = 10;</code>
-     * @return The timestamp.
+     * <code>optional uint64 timestamp = 10;</code>
      */
     long getTimestamp();
 
@@ -123,8 +113,7 @@
      *载荷俯仰角
      * </pre>
      *
-     * <code>float ptpitch = 11;</code>
-     * @return The ptpitch.
+     * <code>optional float ptpitch = 11;</code>
      */
     float getPtpitch();
 
@@ -133,8 +122,7 @@
      *载荷横滚角
      * </pre>
      *
-     * <code>float ptroll = 12;</code>
-     * @return The ptroll.
+     * <code>optional float ptroll = 12;</code>
      */
     float getPtroll();
 
@@ -143,8 +131,7 @@
      *载荷航向角
      * </pre>
      *
-     * <code>float ptyaw = 13;</code>
-     * @return The ptyaw.
+     * <code>optional float ptyaw = 13;</code>
      */
     float getPtyaw();
 
@@ -153,8 +140,7 @@
      *载荷当前倍数
      * </pre>
      *
-     * <code>float zoomfactor = 14;</code>
-     * @return The zoomfactor.
+     * <code>optional float zoomfactor = 14;</code>
      */
     float getZoomfactor();
 
@@ -163,17 +149,15 @@
      *云盒子编号
      * </pre>
      *
-     * <code>string boxSn = 15;</code>
-     * @return The boxSn.
+     * <code>optional string boxSn = 15;</code>
      */
-    String getBoxSn();
+    java.lang.String getBoxSn();
     /**
      * <pre>
      *云盒子编号
      * </pre>
      *
-     * <code>string boxSn = 15;</code>
-     * @return The bytes for boxSn.
+     * <code>optional string boxSn = 15;</code>
      */
     com.google.protobuf.ByteString
         getBoxSnBytes();
@@ -183,17 +167,15 @@
      *电池电量,多个电池以下划线分割,如:80_60
      * </pre>
      *
-     * <code>string batteryPower = 16;</code>
-     * @return The batteryPower.
+     * <code>optional string batteryPower = 16;</code>
      */
-    String getBatteryPower();
+    java.lang.String getBatteryPower();
     /**
      * <pre>
      *电池电量,多个电池以下划线分割,如:80_60
      * </pre>
      *
-     * <code>string batteryPower = 16;</code>
-     * @return The bytes for batteryPower.
+     * <code>optional string batteryPower = 16;</code>
      */
     com.google.protobuf.ByteString
         getBatteryPowerBytes();
@@ -203,8 +185,7 @@
      *卫星计数
      * </pre>
      *
-     * <code>uint32 satelliteCount = 17;</code>
-     * @return The satelliteCount.
+     * <code>optional uint32 satelliteCount = 17;</code>
      */
     int getSatelliteCount();
 
@@ -213,8 +194,7 @@
      *任务编号
      * </pre>
      *
-     * <code>uint64 taskId = 18;</code>
-     * @return The taskId.
+     * <code>optional uint64 taskId = 18;</code>
      */
     long getTaskId();
 
@@ -223,8 +203,7 @@
      *rtk经度
      * </pre>
      *
-     * <code>double rtkLng = 19;</code>
-     * @return The rtkLng.
+     * <code>optional double rtkLng = 19;</code>
      */
     double getRtkLng();
 
@@ -233,18 +212,16 @@
      *rtk纬度
      * </pre>
      *
-     * <code>double rtkLat = 20;</code>
-     * @return The rtkLat.
+     * <code>optional double rtkLat = 20;</code>
      */
     double getRtkLat();
 
     /**
      * <pre>
-     *rtk海拔高度(平均海平面高度)(单位:米)   
+     *rtk海拔高度(平均海平面高度)(单位:米)
      * </pre>
      *
-     * <code>float rtkHFSL = 21;</code>
-     * @return The rtkHFSL.
+     * <code>optional float rtkHFSL = 21;</code>
      */
     float getRtkHFSL();
 
@@ -253,8 +230,7 @@
      *rtk状态(值为50时[rtk数据fix固定解],rtk的经纬度及海拔高度值可用)
      * </pre>
      *
-     * <code>uint32 rtkPositionInfo = 22;</code>
-     * @return The rtkPositionInfo.
+     * <code>optional uint32 rtkPositionInfo = 22;</code>
      */
     int getRtkPositionInfo();
 
@@ -263,8 +239,7 @@
      *当前架次飞行时长(单位:秒) [起飞-&gt;落地 视为一个架次]
      * </pre>
      *
-     * <code>uint32 airFlyTimes = 23;</code>
-     * @return The airFlyTimes.
+     * <code>optional uint32 airFlyTimes = 23;</code>
      */
     int getAirFlyTimes();
 
@@ -273,8 +248,7 @@
      *当前架次飞行实际距离(单位:米)
      * </pre>
      *
-     * <code>float airFlyDistance = 24;</code>
-     * @return The airFlyDistance.
+     * <code>optional float airFlyDistance = 24;</code>
      */
     float getAirFlyDistance();
 
@@ -283,17 +257,15 @@
      *无人机编号
      * </pre>
      *
-     * <code>string uavSn = 25;</code>
-     * @return The uavSn.
+     * <code>optional string uavSn = 25;</code>
      */
-    String getUavSn();
+    java.lang.String getUavSn();
     /**
      * <pre>
      *无人机编号
      * </pre>
      *
-     * <code>string uavSn = 25;</code>
-     * @return The bytes for uavSn.
+     * <code>optional string uavSn = 25;</code>
      */
     com.google.protobuf.ByteString
         getUavSnBytes();
@@ -303,17 +275,15 @@
      *无人机型号
      * </pre>
      *
-     * <code>string uavModel = 26;</code>
-     * @return The uavModel.
+     * <code>optional string uavModel = 26;</code>
      */
-    String getUavModel();
+    java.lang.String getUavModel();
     /**
      * <pre>
      *无人机型号
      * </pre>
      *
-     * <code>string uavModel = 26;</code>
-     * @return The bytes for uavModel.
+     * <code>optional string uavModel = 26;</code>
      */
     com.google.protobuf.ByteString
         getUavModelBytes();
@@ -323,8 +293,7 @@
      *距降落点水平直线距离(单位:米)
      * </pre>
      *
-     * <code>float homeRange = 27;</code>
-     * @return The homeRange.
+     * <code>optional float homeRange = 27;</code>
      */
     float getHomeRange();
 
@@ -333,8 +302,7 @@
      *飞行模式:1=手动控制模式,2=姿态模式,6=MODE_P_GPS,9=热点任务中,11=自动起飞中,12=降落中,14=航线中,15=返航中,17=虚拟摇杆控制中,33=强制降落中,41=解锁电机准备起飞中
      * </pre>
      *
-     * <code>uint32 flightMode = 28;</code>
-     * @return The flightMode.
+     * <code>optional uint32 flightMode = 28;</code>
      */
     int getFlightMode();
 
@@ -343,8 +311,7 @@
      *距目标点实际距离(单位:米) [适用于打点飞行和航线飞行]
      * </pre>
      *
-     * <code>float targetDistance = 29;</code>
-     * @return The targetDistance.
+     * <code>optional float targetDistance = 29;</code>
      */
     float getTargetDistance();
 
@@ -353,8 +320,7 @@
      *预计剩余飞行时间[适用于打点飞行和航线飞行]
      * </pre>
      *
-     * <code>uint32 predictFlyTime = 30;</code>
-     * @return The predictFlyTime.
+     * <code>optional uint32 predictFlyTime = 30;</code>
      */
     int getPredictFlyTime();
 
@@ -363,18 +329,16 @@
      *本架次最大相对高度值
      * </pre>
      *
-     * <code>float ultrasonicMax = 31;</code>
-     * @return The ultrasonicMax.
+     * <code>optional float ultrasonicMax = 31;</code>
      */
     float getUltrasonicMax();
 
     /**
      * <pre>
-     *本架次最小相对高度值    
+     *本架次最小相对高度值
      * </pre>
      *
-     * <code>float ultrasonicMin = 32;</code>
-     * @return The ultrasonicMin.
+     * <code>optional float ultrasonicMin = 32;</code>
      */
     float getUltrasonicMin();
   }
@@ -385,44 +349,60 @@
    *
    * Protobuf type {@code TelemetryData}
    */
-  public static final class TelemetryData extends
+  public  static final class TelemetryData extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:TelemetryData)
       TelemetryDataOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use TelemetryData.newBuilder() to construct.
     private TelemetryData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private TelemetryData() {
+      lng_ = 0D;
+      lat_ = 0D;
+      altitude_ = 0F;
+      ultrasonic_ = 0F;
+      pitch_ = 0F;
+      roll_ = 0F;
+      yaw_ = 0F;
+      airspeed_ = 0F;
+      velocity_ = 0F;
+      timestamp_ = 0L;
+      ptpitch_ = 0F;
+      ptroll_ = 0F;
+      ptyaw_ = 0F;
+      zoomfactor_ = 0F;
       boxSn_ = "";
       batteryPower_ = "";
+      satelliteCount_ = 0;
+      taskId_ = 0L;
+      rtkLng_ = 0D;
+      rtkLat_ = 0D;
+      rtkHFSL_ = 0F;
+      rtkPositionInfo_ = 0;
+      airFlyTimes_ = 0;
+      airFlyDistance_ = 0F;
       uavSn_ = "";
       uavModel_ = "";
+      homeRange_ = 0F;
+      flightMode_ = 0;
+      targetDistance_ = 0F;
+      predictFlyTime_ = 0;
+      ultrasonicMax_ = 0F;
+      ultrasonicMin_ = 0F;
     }
 
-    @Override
-    @SuppressWarnings({"unused"})
-    protected Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new TelemetryData();
-    }
-
-    @Override
+    @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private TelemetryData(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -431,6 +411,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 9: {
 
               lng_ = input.readDouble();
@@ -502,13 +488,13 @@
               break;
             }
             case 122: {
-              String s = input.readStringRequireUtf8();
+              java.lang.String s = input.readStringRequireUtf8();
 
               boxSn_ = s;
               break;
             }
             case 130: {
-              String s = input.readStringRequireUtf8();
+              java.lang.String s = input.readStringRequireUtf8();
 
               batteryPower_ = s;
               break;
@@ -554,13 +540,13 @@
               break;
             }
             case 202: {
-              String s = input.readStringRequireUtf8();
+              java.lang.String s = input.readStringRequireUtf8();
 
               uavSn_ = s;
               break;
             }
             case 210: {
-              String s = input.readStringRequireUtf8();
+              java.lang.String s = input.readStringRequireUtf8();
 
               uavModel_ = s;
               break;
@@ -595,24 +581,14 @@
               ultrasonicMin_ = input.readFloat();
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -621,8 +597,7 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_TelemetryData_descriptor;
     }
 
-    @Override
-    protected FieldAccessorTable
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_TelemetryData_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
@@ -636,10 +611,8 @@
      *经度
      * </pre>
      *
-     * <code>double lng = 1;</code>
-     * @return The lng.
+     * <code>optional double lng = 1;</code>
      */
-    @Override
     public double getLng() {
       return lng_;
     }
@@ -651,10 +624,8 @@
      *纬度
      * </pre>
      *
-     * <code>double lat = 2;</code>
-     * @return The lat.
+     * <code>optional double lat = 2;</code>
      */
-    @Override
     public double getLat() {
       return lat_;
     }
@@ -666,10 +637,8 @@
      *海拔高度(椭球高)(单位:米)[与遥控器显示值不同源,可能不一致。会受周围气压湿度等环境影响,数据差异及误差比较大]
      * </pre>
      *
-     * <code>float altitude = 3;</code>
-     * @return The altitude.
+     * <code>optional float altitude = 3;</code>
      */
-    @Override
     public float getAltitude() {
       return altitude_;
     }
@@ -681,10 +650,8 @@
      *相对高度(单位:米)[飞行器距地面10米以下,此值为真实距地距离,大于10米时为距起飞点的相对高度]
      * </pre>
      *
-     * <code>float ultrasonic = 4;</code>
-     * @return The ultrasonic.
+     * <code>optional float ultrasonic = 4;</code>
      */
-    @Override
     public float getUltrasonic() {
       return ultrasonic_;
     }
@@ -696,10 +663,8 @@
      *俯仰角
      * </pre>
      *
-     * <code>float pitch = 5;</code>
-     * @return The pitch.
+     * <code>optional float pitch = 5;</code>
      */
-    @Override
     public float getPitch() {
       return pitch_;
     }
@@ -711,10 +676,8 @@
      *横滚角
      * </pre>
      *
-     * <code>float roll = 6;</code>
-     * @return The roll.
+     * <code>optional float roll = 6;</code>
      */
-    @Override
     public float getRoll() {
       return roll_;
     }
@@ -726,10 +689,8 @@
      *偏航角
      * </pre>
      *
-     * <code>float yaw = 7;</code>
-     * @return The yaw.
+     * <code>optional float yaw = 7;</code>
      */
-    @Override
     public float getYaw() {
       return yaw_;
     }
@@ -741,10 +702,8 @@
      *空速(单位:米/秒)
      * </pre>
      *
-     * <code>float airspeed = 8;</code>
-     * @return The airspeed.
+     * <code>optional float airspeed = 8;</code>
      */
-    @Override
     public float getAirspeed() {
       return airspeed_;
     }
@@ -756,10 +715,8 @@
      *地速(单位:米/秒)
      * </pre>
      *
-     * <code>float velocity = 9;</code>
-     * @return The velocity.
+     * <code>optional float velocity = 9;</code>
      */
-    @Override
     public float getVelocity() {
       return velocity_;
     }
@@ -771,10 +728,8 @@
      *时间戳
      * </pre>
      *
-     * <code>uint64 timestamp = 10;</code>
-     * @return The timestamp.
+     * <code>optional uint64 timestamp = 10;</code>
      */
-    @Override
     public long getTimestamp() {
       return timestamp_;
     }
@@ -786,10 +741,8 @@
      *载荷俯仰角
      * </pre>
      *
-     * <code>float ptpitch = 11;</code>
-     * @return The ptpitch.
+     * <code>optional float ptpitch = 11;</code>
      */
-    @Override
     public float getPtpitch() {
       return ptpitch_;
     }
@@ -801,10 +754,8 @@
      *载荷横滚角
      * </pre>
      *
-     * <code>float ptroll = 12;</code>
-     * @return The ptroll.
+     * <code>optional float ptroll = 12;</code>
      */
-    @Override
     public float getPtroll() {
       return ptroll_;
     }
@@ -816,10 +767,8 @@
      *载荷航向角
      * </pre>
      *
-     * <code>float ptyaw = 13;</code>
-     * @return The ptyaw.
+     * <code>optional float ptyaw = 13;</code>
      */
-    @Override
     public float getPtyaw() {
       return ptyaw_;
     }
@@ -831,33 +780,29 @@
      *载荷当前倍数
      * </pre>
      *
-     * <code>float zoomfactor = 14;</code>
-     * @return The zoomfactor.
+     * <code>optional float zoomfactor = 14;</code>
      */
-    @Override
     public float getZoomfactor() {
       return zoomfactor_;
     }
 
     public static final int BOXSN_FIELD_NUMBER = 15;
-    private volatile Object boxSn_;
+    private volatile java.lang.Object boxSn_;
     /**
      * <pre>
      *云盒子编号
      * </pre>
      *
-     * <code>string boxSn = 15;</code>
-     * @return The boxSn.
+     * <code>optional string boxSn = 15;</code>
      */
-    @Override
-    public String getBoxSn() {
-      Object ref = boxSn_;
-      if (ref instanceof String) {
-        return (String) ref;
+    public java.lang.String getBoxSn() {
+      java.lang.Object ref = boxSn_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
       } else {
         com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
-        String s = bs.toStringUtf8();
+        java.lang.String s = bs.toStringUtf8();
         boxSn_ = s;
         return s;
       }
@@ -867,17 +812,15 @@
      *云盒子编号
      * </pre>
      *
-     * <code>string boxSn = 15;</code>
-     * @return The bytes for boxSn.
+     * <code>optional string boxSn = 15;</code>
      */
-    @Override
     public com.google.protobuf.ByteString
         getBoxSnBytes() {
-      Object ref = boxSn_;
-      if (ref instanceof String) {
+      java.lang.Object ref = boxSn_;
+      if (ref instanceof java.lang.String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
-                (String) ref);
+                (java.lang.String) ref);
         boxSn_ = b;
         return b;
       } else {
@@ -886,24 +829,22 @@
     }
 
     public static final int BATTERYPOWER_FIELD_NUMBER = 16;
-    private volatile Object batteryPower_;
+    private volatile java.lang.Object batteryPower_;
     /**
      * <pre>
      *电池电量,多个电池以下划线分割,如:80_60
      * </pre>
      *
-     * <code>string batteryPower = 16;</code>
-     * @return The batteryPower.
+     * <code>optional string batteryPower = 16;</code>
      */
-    @Override
-    public String getBatteryPower() {
-      Object ref = batteryPower_;
-      if (ref instanceof String) {
-        return (String) ref;
+    public java.lang.String getBatteryPower() {
+      java.lang.Object ref = batteryPower_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
       } else {
         com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
-        String s = bs.toStringUtf8();
+        java.lang.String s = bs.toStringUtf8();
         batteryPower_ = s;
         return s;
       }
@@ -913,17 +854,15 @@
      *电池电量,多个电池以下划线分割,如:80_60
      * </pre>
      *
-     * <code>string batteryPower = 16;</code>
-     * @return The bytes for batteryPower.
+     * <code>optional string batteryPower = 16;</code>
      */
-    @Override
     public com.google.protobuf.ByteString
         getBatteryPowerBytes() {
-      Object ref = batteryPower_;
-      if (ref instanceof String) {
+      java.lang.Object ref = batteryPower_;
+      if (ref instanceof java.lang.String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
-                (String) ref);
+                (java.lang.String) ref);
         batteryPower_ = b;
         return b;
       } else {
@@ -938,10 +877,8 @@
      *卫星计数
      * </pre>
      *
-     * <code>uint32 satelliteCount = 17;</code>
-     * @return The satelliteCount.
+     * <code>optional uint32 satelliteCount = 17;</code>
      */
-    @Override
     public int getSatelliteCount() {
       return satelliteCount_;
     }
@@ -953,10 +890,8 @@
      *任务编号
      * </pre>
      *
-     * <code>uint64 taskId = 18;</code>
-     * @return The taskId.
+     * <code>optional uint64 taskId = 18;</code>
      */
-    @Override
     public long getTaskId() {
       return taskId_;
     }
@@ -968,10 +903,8 @@
      *rtk经度
      * </pre>
      *
-     * <code>double rtkLng = 19;</code>
-     * @return The rtkLng.
+     * <code>optional double rtkLng = 19;</code>
      */
-    @Override
     public double getRtkLng() {
       return rtkLng_;
     }
@@ -983,10 +916,8 @@
      *rtk纬度
      * </pre>
      *
-     * <code>double rtkLat = 20;</code>
-     * @return The rtkLat.
+     * <code>optional double rtkLat = 20;</code>
      */
-    @Override
     public double getRtkLat() {
       return rtkLat_;
     }
@@ -995,13 +926,11 @@
     private float rtkHFSL_;
     /**
      * <pre>
-     *rtk海拔高度(平均海平面高度)(单位:米)   
+     *rtk海拔高度(平均海平面高度)(单位:米)
      * </pre>
      *
-     * <code>float rtkHFSL = 21;</code>
-     * @return The rtkHFSL.
+     * <code>optional float rtkHFSL = 21;</code>
      */
-    @Override
     public float getRtkHFSL() {
       return rtkHFSL_;
     }
@@ -1013,10 +942,8 @@
      *rtk状态(值为50时[rtk数据fix固定解],rtk的经纬度及海拔高度值可用)
      * </pre>
      *
-     * <code>uint32 rtkPositionInfo = 22;</code>
-     * @return The rtkPositionInfo.
+     * <code>optional uint32 rtkPositionInfo = 22;</code>
      */
-    @Override
     public int getRtkPositionInfo() {
       return rtkPositionInfo_;
     }
@@ -1028,10 +955,8 @@
      *当前架次飞行时长(单位:秒) [起飞-&gt;落地 视为一个架次]
      * </pre>
      *
-     * <code>uint32 airFlyTimes = 23;</code>
-     * @return The airFlyTimes.
+     * <code>optional uint32 airFlyTimes = 23;</code>
      */
-    @Override
     public int getAirFlyTimes() {
       return airFlyTimes_;
     }
@@ -1043,33 +968,29 @@
      *当前架次飞行实际距离(单位:米)
      * </pre>
      *
-     * <code>float airFlyDistance = 24;</code>
-     * @return The airFlyDistance.
+     * <code>optional float airFlyDistance = 24;</code>
      */
-    @Override
     public float getAirFlyDistance() {
       return airFlyDistance_;
     }
 
     public static final int UAVSN_FIELD_NUMBER = 25;
-    private volatile Object uavSn_;
+    private volatile java.lang.Object uavSn_;
     /**
      * <pre>
      *无人机编号
      * </pre>
      *
-     * <code>string uavSn = 25;</code>
-     * @return The uavSn.
+     * <code>optional string uavSn = 25;</code>
      */
-    @Override
-    public String getUavSn() {
-      Object ref = uavSn_;
-      if (ref instanceof String) {
-        return (String) ref;
+    public java.lang.String getUavSn() {
+      java.lang.Object ref = uavSn_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
       } else {
         com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
-        String s = bs.toStringUtf8();
+        java.lang.String s = bs.toStringUtf8();
         uavSn_ = s;
         return s;
       }
@@ -1079,17 +1000,15 @@
      *无人机编号
      * </pre>
      *
-     * <code>string uavSn = 25;</code>
-     * @return The bytes for uavSn.
+     * <code>optional string uavSn = 25;</code>
      */
-    @Override
     public com.google.protobuf.ByteString
         getUavSnBytes() {
-      Object ref = uavSn_;
-      if (ref instanceof String) {
+      java.lang.Object ref = uavSn_;
+      if (ref instanceof java.lang.String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
-                (String) ref);
+                (java.lang.String) ref);
         uavSn_ = b;
         return b;
       } else {
@@ -1098,24 +1017,22 @@
     }
 
     public static final int UAVMODEL_FIELD_NUMBER = 26;
-    private volatile Object uavModel_;
+    private volatile java.lang.Object uavModel_;
     /**
      * <pre>
      *无人机型号
      * </pre>
      *
-     * <code>string uavModel = 26;</code>
-     * @return The uavModel.
+     * <code>optional string uavModel = 26;</code>
      */
-    @Override
-    public String getUavModel() {
-      Object ref = uavModel_;
-      if (ref instanceof String) {
-        return (String) ref;
+    public java.lang.String getUavModel() {
+      java.lang.Object ref = uavModel_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
       } else {
         com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
-        String s = bs.toStringUtf8();
+        java.lang.String s = bs.toStringUtf8();
         uavModel_ = s;
         return s;
       }
@@ -1125,17 +1042,15 @@
      *无人机型号
      * </pre>
      *
-     * <code>string uavModel = 26;</code>
-     * @return The bytes for uavModel.
+     * <code>optional string uavModel = 26;</code>
      */
-    @Override
     public com.google.protobuf.ByteString
         getUavModelBytes() {
-      Object ref = uavModel_;
-      if (ref instanceof String) {
+      java.lang.Object ref = uavModel_;
+      if (ref instanceof java.lang.String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
-                (String) ref);
+                (java.lang.String) ref);
         uavModel_ = b;
         return b;
       } else {
@@ -1150,10 +1065,8 @@
      *距降落点水平直线距离(单位:米)
      * </pre>
      *
-     * <code>float homeRange = 27;</code>
-     * @return The homeRange.
+     * <code>optional float homeRange = 27;</code>
      */
-    @Override
     public float getHomeRange() {
       return homeRange_;
     }
@@ -1165,10 +1078,8 @@
      *飞行模式:1=手动控制模式,2=姿态模式,6=MODE_P_GPS,9=热点任务中,11=自动起飞中,12=降落中,14=航线中,15=返航中,17=虚拟摇杆控制中,33=强制降落中,41=解锁电机准备起飞中
      * </pre>
      *
-     * <code>uint32 flightMode = 28;</code>
-     * @return The flightMode.
+     * <code>optional uint32 flightMode = 28;</code>
      */
-    @Override
     public int getFlightMode() {
       return flightMode_;
     }
@@ -1180,10 +1091,8 @@
      *距目标点实际距离(单位:米) [适用于打点飞行和航线飞行]
      * </pre>
      *
-     * <code>float targetDistance = 29;</code>
-     * @return The targetDistance.
+     * <code>optional float targetDistance = 29;</code>
      */
-    @Override
     public float getTargetDistance() {
       return targetDistance_;
     }
@@ -1195,10 +1104,8 @@
      *预计剩余飞行时间[适用于打点飞行和航线飞行]
      * </pre>
      *
-     * <code>uint32 predictFlyTime = 30;</code>
-     * @return The predictFlyTime.
+     * <code>optional uint32 predictFlyTime = 30;</code>
      */
-    @Override
     public int getPredictFlyTime() {
       return predictFlyTime_;
     }
@@ -1210,10 +1117,8 @@
      *本架次最大相对高度值
      * </pre>
      *
-     * <code>float ultrasonicMax = 31;</code>
-     * @return The ultrasonicMax.
+     * <code>optional float ultrasonicMax = 31;</code>
      */
-    @Override
     public float getUltrasonicMax() {
       return ultrasonicMax_;
     }
@@ -1222,19 +1127,16 @@
     private float ultrasonicMin_;
     /**
      * <pre>
-     *本架次最小相对高度值    
+     *本架次最小相对高度值
      * </pre>
      *
-     * <code>float ultrasonicMin = 32;</code>
-     * @return The ultrasonicMin.
+     * <code>optional float ultrasonicMin = 32;</code>
      */
-    @Override
     public float getUltrasonicMin() {
       return ultrasonicMin_;
     }
 
     private byte memoizedIsInitialized = -1;
-    @Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -1244,55 +1146,54 @@
       return true;
     }
 
-    @Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (Double.doubleToRawLongBits(lng_) != 0) {
+      if (lng_ != 0D) {
         output.writeDouble(1, lng_);
       }
-      if (Double.doubleToRawLongBits(lat_) != 0) {
+      if (lat_ != 0D) {
         output.writeDouble(2, lat_);
       }
-      if (Float.floatToRawIntBits(altitude_) != 0) {
+      if (altitude_ != 0F) {
         output.writeFloat(3, altitude_);
       }
-      if (Float.floatToRawIntBits(ultrasonic_) != 0) {
+      if (ultrasonic_ != 0F) {
         output.writeFloat(4, ultrasonic_);
       }
-      if (Float.floatToRawIntBits(pitch_) != 0) {
+      if (pitch_ != 0F) {
         output.writeFloat(5, pitch_);
       }
-      if (Float.floatToRawIntBits(roll_) != 0) {
+      if (roll_ != 0F) {
         output.writeFloat(6, roll_);
       }
-      if (Float.floatToRawIntBits(yaw_) != 0) {
+      if (yaw_ != 0F) {
         output.writeFloat(7, yaw_);
       }
-      if (Float.floatToRawIntBits(airspeed_) != 0) {
+      if (airspeed_ != 0F) {
         output.writeFloat(8, airspeed_);
       }
-      if (Float.floatToRawIntBits(velocity_) != 0) {
+      if (velocity_ != 0F) {
         output.writeFloat(9, velocity_);
       }
       if (timestamp_ != 0L) {
         output.writeUInt64(10, timestamp_);
       }
-      if (Float.floatToRawIntBits(ptpitch_) != 0) {
+      if (ptpitch_ != 0F) {
         output.writeFloat(11, ptpitch_);
       }
-      if (Float.floatToRawIntBits(ptroll_) != 0) {
+      if (ptroll_ != 0F) {
         output.writeFloat(12, ptroll_);
       }
-      if (Float.floatToRawIntBits(ptyaw_) != 0) {
+      if (ptyaw_ != 0F) {
         output.writeFloat(13, ptyaw_);
       }
-      if (Float.floatToRawIntBits(zoomfactor_) != 0) {
+      if (zoomfactor_ != 0F) {
         output.writeFloat(14, zoomfactor_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(boxSn_)) {
+      if (!getBoxSnBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 15, boxSn_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(batteryPower_)) {
+      if (!getBatteryPowerBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 16, batteryPower_);
       }
       if (satelliteCount_ != 0) {
@@ -1301,13 +1202,13 @@
       if (taskId_ != 0L) {
         output.writeUInt64(18, taskId_);
       }
-      if (java.lang.Double.doubleToRawLongBits(rtkLng_) != 0) {
+      if (rtkLng_ != 0D) {
         output.writeDouble(19, rtkLng_);
       }
-      if (java.lang.Double.doubleToRawLongBits(rtkLat_) != 0) {
+      if (rtkLat_ != 0D) {
         output.writeDouble(20, rtkLat_);
       }
-      if (java.lang.Float.floatToRawIntBits(rtkHFSL_) != 0) {
+      if (rtkHFSL_ != 0F) {
         output.writeFloat(21, rtkHFSL_);
       }
       if (rtkPositionInfo_ != 0) {
@@ -1316,75 +1217,73 @@
       if (airFlyTimes_ != 0) {
         output.writeUInt32(23, airFlyTimes_);
       }
-      if (java.lang.Float.floatToRawIntBits(airFlyDistance_) != 0) {
+      if (airFlyDistance_ != 0F) {
         output.writeFloat(24, airFlyDistance_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uavSn_)) {
+      if (!getUavSnBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 25, uavSn_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uavModel_)) {
+      if (!getUavModelBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 26, uavModel_);
       }
-      if (java.lang.Float.floatToRawIntBits(homeRange_) != 0) {
+      if (homeRange_ != 0F) {
         output.writeFloat(27, homeRange_);
       }
       if (flightMode_ != 0) {
         output.writeUInt32(28, flightMode_);
       }
-      if (java.lang.Float.floatToRawIntBits(targetDistance_) != 0) {
+      if (targetDistance_ != 0F) {
         output.writeFloat(29, targetDistance_);
       }
       if (predictFlyTime_ != 0) {
         output.writeUInt32(30, predictFlyTime_);
       }
-      if (java.lang.Float.floatToRawIntBits(ultrasonicMax_) != 0) {
+      if (ultrasonicMax_ != 0F) {
         output.writeFloat(31, ultrasonicMax_);
       }
-      if (java.lang.Float.floatToRawIntBits(ultrasonicMin_) != 0) {
+      if (ultrasonicMin_ != 0F) {
         output.writeFloat(32, ultrasonicMin_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
-      if (java.lang.Double.doubleToRawLongBits(lng_) != 0) {
+      if (lng_ != 0D) {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(1, lng_);
       }
-      if (java.lang.Double.doubleToRawLongBits(lat_) != 0) {
+      if (lat_ != 0D) {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(2, lat_);
       }
-      if (java.lang.Float.floatToRawIntBits(altitude_) != 0) {
+      if (altitude_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(3, altitude_);
       }
-      if (java.lang.Float.floatToRawIntBits(ultrasonic_) != 0) {
+      if (ultrasonic_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(4, ultrasonic_);
       }
-      if (java.lang.Float.floatToRawIntBits(pitch_) != 0) {
+      if (pitch_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(5, pitch_);
       }
-      if (java.lang.Float.floatToRawIntBits(roll_) != 0) {
+      if (roll_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(6, roll_);
       }
-      if (java.lang.Float.floatToRawIntBits(yaw_) != 0) {
+      if (yaw_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(7, yaw_);
       }
-      if (java.lang.Float.floatToRawIntBits(airspeed_) != 0) {
+      if (airspeed_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(8, airspeed_);
       }
-      if (java.lang.Float.floatToRawIntBits(velocity_) != 0) {
+      if (velocity_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(9, velocity_);
       }
@@ -1392,26 +1291,26 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt64Size(10, timestamp_);
       }
-      if (java.lang.Float.floatToRawIntBits(ptpitch_) != 0) {
+      if (ptpitch_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(11, ptpitch_);
       }
-      if (java.lang.Float.floatToRawIntBits(ptroll_) != 0) {
+      if (ptroll_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(12, ptroll_);
       }
-      if (java.lang.Float.floatToRawIntBits(ptyaw_) != 0) {
+      if (ptyaw_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(13, ptyaw_);
       }
-      if (java.lang.Float.floatToRawIntBits(zoomfactor_) != 0) {
+      if (zoomfactor_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(14, zoomfactor_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(boxSn_)) {
+      if (!getBoxSnBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, boxSn_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(batteryPower_)) {
+      if (!getBatteryPowerBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, batteryPower_);
       }
       if (satelliteCount_ != 0) {
@@ -1422,15 +1321,15 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt64Size(18, taskId_);
       }
-      if (java.lang.Double.doubleToRawLongBits(rtkLng_) != 0) {
+      if (rtkLng_ != 0D) {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(19, rtkLng_);
       }
-      if (java.lang.Double.doubleToRawLongBits(rtkLat_) != 0) {
+      if (rtkLat_ != 0D) {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(20, rtkLat_);
       }
-      if (java.lang.Float.floatToRawIntBits(rtkHFSL_) != 0) {
+      if (rtkHFSL_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(21, rtkHFSL_);
       }
@@ -1442,17 +1341,17 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(23, airFlyTimes_);
       }
-      if (java.lang.Float.floatToRawIntBits(airFlyDistance_) != 0) {
+      if (airFlyDistance_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(24, airFlyDistance_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uavSn_)) {
+      if (!getUavSnBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(25, uavSn_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(uavModel_)) {
+      if (!getUavModelBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(26, uavModel_);
       }
-      if (java.lang.Float.floatToRawIntBits(homeRange_) != 0) {
+      if (homeRange_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(27, homeRange_);
       }
@@ -1460,7 +1359,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(28, flightMode_);
       }
-      if (java.lang.Float.floatToRawIntBits(targetDistance_) != 0) {
+      if (targetDistance_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(29, targetDistance_);
       }
@@ -1468,19 +1367,19 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(30, predictFlyTime_);
       }
-      if (java.lang.Float.floatToRawIntBits(ultrasonicMax_) != 0) {
+      if (ultrasonicMax_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(31, ultrasonicMax_);
       }
-      if (java.lang.Float.floatToRawIntBits(ultrasonicMin_) != 0) {
+      if (ultrasonicMin_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(32, ultrasonicMin_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -1491,93 +1390,114 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData) obj;
 
-      if (java.lang.Double.doubleToLongBits(getLng())
-          != java.lang.Double.doubleToLongBits(
-              other.getLng())) return false;
-      if (java.lang.Double.doubleToLongBits(getLat())
-          != java.lang.Double.doubleToLongBits(
-              other.getLat())) return false;
-      if (java.lang.Float.floatToIntBits(getAltitude())
-          != java.lang.Float.floatToIntBits(
-              other.getAltitude())) return false;
-      if (java.lang.Float.floatToIntBits(getUltrasonic())
-          != java.lang.Float.floatToIntBits(
-              other.getUltrasonic())) return false;
-      if (java.lang.Float.floatToIntBits(getPitch())
-          != java.lang.Float.floatToIntBits(
-              other.getPitch())) return false;
-      if (java.lang.Float.floatToIntBits(getRoll())
-          != java.lang.Float.floatToIntBits(
-              other.getRoll())) return false;
-      if (java.lang.Float.floatToIntBits(getYaw())
-          != java.lang.Float.floatToIntBits(
-              other.getYaw())) return false;
-      if (java.lang.Float.floatToIntBits(getAirspeed())
-          != java.lang.Float.floatToIntBits(
-              other.getAirspeed())) return false;
-      if (java.lang.Float.floatToIntBits(getVelocity())
-          != java.lang.Float.floatToIntBits(
-              other.getVelocity())) return false;
-      if (getTimestamp()
-          != other.getTimestamp()) return false;
-      if (java.lang.Float.floatToIntBits(getPtpitch())
-          != java.lang.Float.floatToIntBits(
-              other.getPtpitch())) return false;
-      if (java.lang.Float.floatToIntBits(getPtroll())
-          != java.lang.Float.floatToIntBits(
-              other.getPtroll())) return false;
-      if (java.lang.Float.floatToIntBits(getPtyaw())
-          != java.lang.Float.floatToIntBits(
-              other.getPtyaw())) return false;
-      if (java.lang.Float.floatToIntBits(getZoomfactor())
-          != java.lang.Float.floatToIntBits(
-              other.getZoomfactor())) return false;
-      if (!getBoxSn()
-          .equals(other.getBoxSn())) return false;
-      if (!getBatteryPower()
-          .equals(other.getBatteryPower())) return false;
-      if (getSatelliteCount()
-          != other.getSatelliteCount()) return false;
-      if (getTaskId()
-          != other.getTaskId()) return false;
-      if (java.lang.Double.doubleToLongBits(getRtkLng())
-          != java.lang.Double.doubleToLongBits(
-              other.getRtkLng())) return false;
-      if (java.lang.Double.doubleToLongBits(getRtkLat())
-          != java.lang.Double.doubleToLongBits(
-              other.getRtkLat())) return false;
-      if (java.lang.Float.floatToIntBits(getRtkHFSL())
-          != java.lang.Float.floatToIntBits(
-              other.getRtkHFSL())) return false;
-      if (getRtkPositionInfo()
-          != other.getRtkPositionInfo()) return false;
-      if (getAirFlyTimes()
-          != other.getAirFlyTimes()) return false;
-      if (java.lang.Float.floatToIntBits(getAirFlyDistance())
-          != java.lang.Float.floatToIntBits(
-              other.getAirFlyDistance())) return false;
-      if (!getUavSn()
-          .equals(other.getUavSn())) return false;
-      if (!getUavModel()
-          .equals(other.getUavModel())) return false;
-      if (java.lang.Float.floatToIntBits(getHomeRange())
-          != java.lang.Float.floatToIntBits(
-              other.getHomeRange())) return false;
-      if (getFlightMode()
-          != other.getFlightMode()) return false;
-      if (java.lang.Float.floatToIntBits(getTargetDistance())
-          != java.lang.Float.floatToIntBits(
-              other.getTargetDistance())) return false;
-      if (getPredictFlyTime()
-          != other.getPredictFlyTime()) return false;
-      if (java.lang.Float.floatToIntBits(getUltrasonicMax())
-          != java.lang.Float.floatToIntBits(
-              other.getUltrasonicMax())) return false;
-      if (java.lang.Float.floatToIntBits(getUltrasonicMin())
-          != java.lang.Float.floatToIntBits(
-              other.getUltrasonicMin())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && (
+          java.lang.Double.doubleToLongBits(getLng())
+          == java.lang.Double.doubleToLongBits(
+              other.getLng()));
+      result = result && (
+          java.lang.Double.doubleToLongBits(getLat())
+          == java.lang.Double.doubleToLongBits(
+              other.getLat()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getAltitude())
+          == java.lang.Float.floatToIntBits(
+              other.getAltitude()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getUltrasonic())
+          == java.lang.Float.floatToIntBits(
+              other.getUltrasonic()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getPitch())
+          == java.lang.Float.floatToIntBits(
+              other.getPitch()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getRoll())
+          == java.lang.Float.floatToIntBits(
+              other.getRoll()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getYaw())
+          == java.lang.Float.floatToIntBits(
+              other.getYaw()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getAirspeed())
+          == java.lang.Float.floatToIntBits(
+              other.getAirspeed()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getVelocity())
+          == java.lang.Float.floatToIntBits(
+              other.getVelocity()));
+      result = result && (getTimestamp()
+          == other.getTimestamp());
+      result = result && (
+          java.lang.Float.floatToIntBits(getPtpitch())
+          == java.lang.Float.floatToIntBits(
+              other.getPtpitch()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getPtroll())
+          == java.lang.Float.floatToIntBits(
+              other.getPtroll()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getPtyaw())
+          == java.lang.Float.floatToIntBits(
+              other.getPtyaw()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getZoomfactor())
+          == java.lang.Float.floatToIntBits(
+              other.getZoomfactor()));
+      result = result && getBoxSn()
+          .equals(other.getBoxSn());
+      result = result && getBatteryPower()
+          .equals(other.getBatteryPower());
+      result = result && (getSatelliteCount()
+          == other.getSatelliteCount());
+      result = result && (getTaskId()
+          == other.getTaskId());
+      result = result && (
+          java.lang.Double.doubleToLongBits(getRtkLng())
+          == java.lang.Double.doubleToLongBits(
+              other.getRtkLng()));
+      result = result && (
+          java.lang.Double.doubleToLongBits(getRtkLat())
+          == java.lang.Double.doubleToLongBits(
+              other.getRtkLat()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getRtkHFSL())
+          == java.lang.Float.floatToIntBits(
+              other.getRtkHFSL()));
+      result = result && (getRtkPositionInfo()
+          == other.getRtkPositionInfo());
+      result = result && (getAirFlyTimes()
+          == other.getAirFlyTimes());
+      result = result && (
+          java.lang.Float.floatToIntBits(getAirFlyDistance())
+          == java.lang.Float.floatToIntBits(
+              other.getAirFlyDistance()));
+      result = result && getUavSn()
+          .equals(other.getUavSn());
+      result = result && getUavModel()
+          .equals(other.getUavModel());
+      result = result && (
+          java.lang.Float.floatToIntBits(getHomeRange())
+          == java.lang.Float.floatToIntBits(
+              other.getHomeRange()));
+      result = result && (getFlightMode()
+          == other.getFlightMode());
+      result = result && (
+          java.lang.Float.floatToIntBits(getTargetDistance())
+          == java.lang.Float.floatToIntBits(
+              other.getTargetDistance()));
+      result = result && (getPredictFlyTime()
+          == other.getPredictFlyTime());
+      result = result && (
+          java.lang.Float.floatToIntBits(getUltrasonicMax())
+          == java.lang.Float.floatToIntBits(
+              other.getUltrasonicMax()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getUltrasonicMin())
+          == java.lang.Float.floatToIntBits(
+              other.getUltrasonicMin()));
+      return result;
     }
 
     @java.lang.Override
@@ -1586,7 +1506,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + LNG_FIELD_NUMBER;
       hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
           java.lang.Double.doubleToLongBits(getLng()));
@@ -1680,17 +1600,6 @@
     }
 
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
@@ -1749,7 +1658,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -1757,7 +1665,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -1785,7 +1692,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_TelemetryData_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_TelemetryData_fieldAccessorTable
@@ -1808,7 +1714,6 @@
                 .alwaysUseFieldBuilders) {
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         lng_ = 0D;
@@ -1878,18 +1783,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_TelemetryData_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData result = buildPartial();
         if (!result.isInitialized()) {
@@ -1898,7 +1800,6 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData(this);
         result.lng_ = lng_;
@@ -1937,39 +1838,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData)other);
@@ -2081,17 +1975,14 @@
         if (other.getUltrasonicMin() != 0F) {
           setUltrasonicMin(other.getUltrasonicMin());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -2116,10 +2007,8 @@
        *经度
        * </pre>
        *
-       * <code>double lng = 1;</code>
-       * @return The lng.
+       * <code>optional double lng = 1;</code>
        */
-      @java.lang.Override
       public double getLng() {
         return lng_;
       }
@@ -2128,9 +2017,7 @@
        *经度
        * </pre>
        *
-       * <code>double lng = 1;</code>
-       * @param value The lng to set.
-       * @return This builder for chaining.
+       * <code>optional double lng = 1;</code>
        */
       public Builder setLng(double value) {
         
@@ -2143,8 +2030,7 @@
        *经度
        * </pre>
        *
-       * <code>double lng = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional double lng = 1;</code>
        */
       public Builder clearLng() {
         
@@ -2159,10 +2045,8 @@
        *纬度
        * </pre>
        *
-       * <code>double lat = 2;</code>
-       * @return The lat.
+       * <code>optional double lat = 2;</code>
        */
-      @java.lang.Override
       public double getLat() {
         return lat_;
       }
@@ -2171,9 +2055,7 @@
        *纬度
        * </pre>
        *
-       * <code>double lat = 2;</code>
-       * @param value The lat to set.
-       * @return This builder for chaining.
+       * <code>optional double lat = 2;</code>
        */
       public Builder setLat(double value) {
         
@@ -2186,8 +2068,7 @@
        *纬度
        * </pre>
        *
-       * <code>double lat = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional double lat = 2;</code>
        */
       public Builder clearLat() {
         
@@ -2202,10 +2083,8 @@
        *海拔高度(椭球高)(单位:米)[与遥控器显示值不同源,可能不一致。会受周围气压湿度等环境影响,数据差异及误差比较大]
        * </pre>
        *
-       * <code>float altitude = 3;</code>
-       * @return The altitude.
+       * <code>optional float altitude = 3;</code>
        */
-      @java.lang.Override
       public float getAltitude() {
         return altitude_;
       }
@@ -2214,9 +2093,7 @@
        *海拔高度(椭球高)(单位:米)[与遥控器显示值不同源,可能不一致。会受周围气压湿度等环境影响,数据差异及误差比较大]
        * </pre>
        *
-       * <code>float altitude = 3;</code>
-       * @param value The altitude to set.
-       * @return This builder for chaining.
+       * <code>optional float altitude = 3;</code>
        */
       public Builder setAltitude(float value) {
         
@@ -2229,8 +2106,7 @@
        *海拔高度(椭球高)(单位:米)[与遥控器显示值不同源,可能不一致。会受周围气压湿度等环境影响,数据差异及误差比较大]
        * </pre>
        *
-       * <code>float altitude = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional float altitude = 3;</code>
        */
       public Builder clearAltitude() {
         
@@ -2245,10 +2121,8 @@
        *相对高度(单位:米)[飞行器距地面10米以下,此值为真实距地距离,大于10米时为距起飞点的相对高度]
        * </pre>
        *
-       * <code>float ultrasonic = 4;</code>
-       * @return The ultrasonic.
+       * <code>optional float ultrasonic = 4;</code>
        */
-      @java.lang.Override
       public float getUltrasonic() {
         return ultrasonic_;
       }
@@ -2257,9 +2131,7 @@
        *相对高度(单位:米)[飞行器距地面10米以下,此值为真实距地距离,大于10米时为距起飞点的相对高度]
        * </pre>
        *
-       * <code>float ultrasonic = 4;</code>
-       * @param value The ultrasonic to set.
-       * @return This builder for chaining.
+       * <code>optional float ultrasonic = 4;</code>
        */
       public Builder setUltrasonic(float value) {
         
@@ -2272,8 +2144,7 @@
        *相对高度(单位:米)[飞行器距地面10米以下,此值为真实距地距离,大于10米时为距起飞点的相对高度]
        * </pre>
        *
-       * <code>float ultrasonic = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional float ultrasonic = 4;</code>
        */
       public Builder clearUltrasonic() {
         
@@ -2288,10 +2159,8 @@
        *俯仰角
        * </pre>
        *
-       * <code>float pitch = 5;</code>
-       * @return The pitch.
+       * <code>optional float pitch = 5;</code>
        */
-      @java.lang.Override
       public float getPitch() {
         return pitch_;
       }
@@ -2300,9 +2169,7 @@
        *俯仰角
        * </pre>
        *
-       * <code>float pitch = 5;</code>
-       * @param value The pitch to set.
-       * @return This builder for chaining.
+       * <code>optional float pitch = 5;</code>
        */
       public Builder setPitch(float value) {
         
@@ -2315,8 +2182,7 @@
        *俯仰角
        * </pre>
        *
-       * <code>float pitch = 5;</code>
-       * @return This builder for chaining.
+       * <code>optional float pitch = 5;</code>
        */
       public Builder clearPitch() {
         
@@ -2331,10 +2197,8 @@
        *横滚角
        * </pre>
        *
-       * <code>float roll = 6;</code>
-       * @return The roll.
+       * <code>optional float roll = 6;</code>
        */
-      @java.lang.Override
       public float getRoll() {
         return roll_;
       }
@@ -2343,9 +2207,7 @@
        *横滚角
        * </pre>
        *
-       * <code>float roll = 6;</code>
-       * @param value The roll to set.
-       * @return This builder for chaining.
+       * <code>optional float roll = 6;</code>
        */
       public Builder setRoll(float value) {
         
@@ -2358,8 +2220,7 @@
        *横滚角
        * </pre>
        *
-       * <code>float roll = 6;</code>
-       * @return This builder for chaining.
+       * <code>optional float roll = 6;</code>
        */
       public Builder clearRoll() {
         
@@ -2374,10 +2235,8 @@
        *偏航角
        * </pre>
        *
-       * <code>float yaw = 7;</code>
-       * @return The yaw.
+       * <code>optional float yaw = 7;</code>
        */
-      @java.lang.Override
       public float getYaw() {
         return yaw_;
       }
@@ -2386,9 +2245,7 @@
        *偏航角
        * </pre>
        *
-       * <code>float yaw = 7;</code>
-       * @param value The yaw to set.
-       * @return This builder for chaining.
+       * <code>optional float yaw = 7;</code>
        */
       public Builder setYaw(float value) {
         
@@ -2401,8 +2258,7 @@
        *偏航角
        * </pre>
        *
-       * <code>float yaw = 7;</code>
-       * @return This builder for chaining.
+       * <code>optional float yaw = 7;</code>
        */
       public Builder clearYaw() {
         
@@ -2417,10 +2273,8 @@
        *空速(单位:米/秒)
        * </pre>
        *
-       * <code>float airspeed = 8;</code>
-       * @return The airspeed.
+       * <code>optional float airspeed = 8;</code>
        */
-      @java.lang.Override
       public float getAirspeed() {
         return airspeed_;
       }
@@ -2429,9 +2283,7 @@
        *空速(单位:米/秒)
        * </pre>
        *
-       * <code>float airspeed = 8;</code>
-       * @param value The airspeed to set.
-       * @return This builder for chaining.
+       * <code>optional float airspeed = 8;</code>
        */
       public Builder setAirspeed(float value) {
         
@@ -2444,8 +2296,7 @@
        *空速(单位:米/秒)
        * </pre>
        *
-       * <code>float airspeed = 8;</code>
-       * @return This builder for chaining.
+       * <code>optional float airspeed = 8;</code>
        */
       public Builder clearAirspeed() {
         
@@ -2460,10 +2311,8 @@
        *地速(单位:米/秒)
        * </pre>
        *
-       * <code>float velocity = 9;</code>
-       * @return The velocity.
+       * <code>optional float velocity = 9;</code>
        */
-      @java.lang.Override
       public float getVelocity() {
         return velocity_;
       }
@@ -2472,9 +2321,7 @@
        *地速(单位:米/秒)
        * </pre>
        *
-       * <code>float velocity = 9;</code>
-       * @param value The velocity to set.
-       * @return This builder for chaining.
+       * <code>optional float velocity = 9;</code>
        */
       public Builder setVelocity(float value) {
         
@@ -2487,8 +2334,7 @@
        *地速(单位:米/秒)
        * </pre>
        *
-       * <code>float velocity = 9;</code>
-       * @return This builder for chaining.
+       * <code>optional float velocity = 9;</code>
        */
       public Builder clearVelocity() {
         
@@ -2503,10 +2349,8 @@
        *时间戳
        * </pre>
        *
-       * <code>uint64 timestamp = 10;</code>
-       * @return The timestamp.
+       * <code>optional uint64 timestamp = 10;</code>
        */
-      @java.lang.Override
       public long getTimestamp() {
         return timestamp_;
       }
@@ -2515,9 +2359,7 @@
        *时间戳
        * </pre>
        *
-       * <code>uint64 timestamp = 10;</code>
-       * @param value The timestamp to set.
-       * @return This builder for chaining.
+       * <code>optional uint64 timestamp = 10;</code>
        */
       public Builder setTimestamp(long value) {
         
@@ -2530,8 +2372,7 @@
        *时间戳
        * </pre>
        *
-       * <code>uint64 timestamp = 10;</code>
-       * @return This builder for chaining.
+       * <code>optional uint64 timestamp = 10;</code>
        */
       public Builder clearTimestamp() {
         
@@ -2546,10 +2387,8 @@
        *载荷俯仰角
        * </pre>
        *
-       * <code>float ptpitch = 11;</code>
-       * @return The ptpitch.
+       * <code>optional float ptpitch = 11;</code>
        */
-      @java.lang.Override
       public float getPtpitch() {
         return ptpitch_;
       }
@@ -2558,9 +2397,7 @@
        *载荷俯仰角
        * </pre>
        *
-       * <code>float ptpitch = 11;</code>
-       * @param value The ptpitch to set.
-       * @return This builder for chaining.
+       * <code>optional float ptpitch = 11;</code>
        */
       public Builder setPtpitch(float value) {
         
@@ -2573,8 +2410,7 @@
        *载荷俯仰角
        * </pre>
        *
-       * <code>float ptpitch = 11;</code>
-       * @return This builder for chaining.
+       * <code>optional float ptpitch = 11;</code>
        */
       public Builder clearPtpitch() {
         
@@ -2589,10 +2425,8 @@
        *载荷横滚角
        * </pre>
        *
-       * <code>float ptroll = 12;</code>
-       * @return The ptroll.
+       * <code>optional float ptroll = 12;</code>
        */
-      @java.lang.Override
       public float getPtroll() {
         return ptroll_;
       }
@@ -2601,9 +2435,7 @@
        *载荷横滚角
        * </pre>
        *
-       * <code>float ptroll = 12;</code>
-       * @param value The ptroll to set.
-       * @return This builder for chaining.
+       * <code>optional float ptroll = 12;</code>
        */
       public Builder setPtroll(float value) {
         
@@ -2616,8 +2448,7 @@
        *载荷横滚角
        * </pre>
        *
-       * <code>float ptroll = 12;</code>
-       * @return This builder for chaining.
+       * <code>optional float ptroll = 12;</code>
        */
       public Builder clearPtroll() {
         
@@ -2632,10 +2463,8 @@
        *载荷航向角
        * </pre>
        *
-       * <code>float ptyaw = 13;</code>
-       * @return The ptyaw.
+       * <code>optional float ptyaw = 13;</code>
        */
-      @java.lang.Override
       public float getPtyaw() {
         return ptyaw_;
       }
@@ -2644,9 +2473,7 @@
        *载荷航向角
        * </pre>
        *
-       * <code>float ptyaw = 13;</code>
-       * @param value The ptyaw to set.
-       * @return This builder for chaining.
+       * <code>optional float ptyaw = 13;</code>
        */
       public Builder setPtyaw(float value) {
         
@@ -2659,8 +2486,7 @@
        *载荷航向角
        * </pre>
        *
-       * <code>float ptyaw = 13;</code>
-       * @return This builder for chaining.
+       * <code>optional float ptyaw = 13;</code>
        */
       public Builder clearPtyaw() {
         
@@ -2675,10 +2501,8 @@
        *载荷当前倍数
        * </pre>
        *
-       * <code>float zoomfactor = 14;</code>
-       * @return The zoomfactor.
+       * <code>optional float zoomfactor = 14;</code>
        */
-      @java.lang.Override
       public float getZoomfactor() {
         return zoomfactor_;
       }
@@ -2687,9 +2511,7 @@
        *载荷当前倍数
        * </pre>
        *
-       * <code>float zoomfactor = 14;</code>
-       * @param value The zoomfactor to set.
-       * @return This builder for chaining.
+       * <code>optional float zoomfactor = 14;</code>
        */
       public Builder setZoomfactor(float value) {
         
@@ -2702,8 +2524,7 @@
        *载荷当前倍数
        * </pre>
        *
-       * <code>float zoomfactor = 14;</code>
-       * @return This builder for chaining.
+       * <code>optional float zoomfactor = 14;</code>
        */
       public Builder clearZoomfactor() {
         
@@ -2718,8 +2539,7 @@
        *云盒子编号
        * </pre>
        *
-       * <code>string boxSn = 15;</code>
-       * @return The boxSn.
+       * <code>optional string boxSn = 15;</code>
        */
       public java.lang.String getBoxSn() {
         java.lang.Object ref = boxSn_;
@@ -2738,8 +2558,7 @@
        *云盒子编号
        * </pre>
        *
-       * <code>string boxSn = 15;</code>
-       * @return The bytes for boxSn.
+       * <code>optional string boxSn = 15;</code>
        */
       public com.google.protobuf.ByteString
           getBoxSnBytes() {
@@ -2759,9 +2578,7 @@
        *云盒子编号
        * </pre>
        *
-       * <code>string boxSn = 15;</code>
-       * @param value The boxSn to set.
-       * @return This builder for chaining.
+       * <code>optional string boxSn = 15;</code>
        */
       public Builder setBoxSn(
           java.lang.String value) {
@@ -2778,8 +2595,7 @@
        *云盒子编号
        * </pre>
        *
-       * <code>string boxSn = 15;</code>
-       * @return This builder for chaining.
+       * <code>optional string boxSn = 15;</code>
        */
       public Builder clearBoxSn() {
         
@@ -2792,9 +2608,7 @@
        *云盒子编号
        * </pre>
        *
-       * <code>string boxSn = 15;</code>
-       * @param value The bytes for boxSn to set.
-       * @return This builder for chaining.
+       * <code>optional string boxSn = 15;</code>
        */
       public Builder setBoxSnBytes(
           com.google.protobuf.ByteString value) {
@@ -2814,8 +2628,7 @@
        *电池电量,多个电池以下划线分割,如:80_60
        * </pre>
        *
-       * <code>string batteryPower = 16;</code>
-       * @return The batteryPower.
+       * <code>optional string batteryPower = 16;</code>
        */
       public java.lang.String getBatteryPower() {
         java.lang.Object ref = batteryPower_;
@@ -2834,8 +2647,7 @@
        *电池电量,多个电池以下划线分割,如:80_60
        * </pre>
        *
-       * <code>string batteryPower = 16;</code>
-       * @return The bytes for batteryPower.
+       * <code>optional string batteryPower = 16;</code>
        */
       public com.google.protobuf.ByteString
           getBatteryPowerBytes() {
@@ -2855,9 +2667,7 @@
        *电池电量,多个电池以下划线分割,如:80_60
        * </pre>
        *
-       * <code>string batteryPower = 16;</code>
-       * @param value The batteryPower to set.
-       * @return This builder for chaining.
+       * <code>optional string batteryPower = 16;</code>
        */
       public Builder setBatteryPower(
           java.lang.String value) {
@@ -2874,8 +2684,7 @@
        *电池电量,多个电池以下划线分割,如:80_60
        * </pre>
        *
-       * <code>string batteryPower = 16;</code>
-       * @return This builder for chaining.
+       * <code>optional string batteryPower = 16;</code>
        */
       public Builder clearBatteryPower() {
         
@@ -2888,9 +2697,7 @@
        *电池电量,多个电池以下划线分割,如:80_60
        * </pre>
        *
-       * <code>string batteryPower = 16;</code>
-       * @param value The bytes for batteryPower to set.
-       * @return This builder for chaining.
+       * <code>optional string batteryPower = 16;</code>
        */
       public Builder setBatteryPowerBytes(
           com.google.protobuf.ByteString value) {
@@ -2910,10 +2717,8 @@
        *卫星计数
        * </pre>
        *
-       * <code>uint32 satelliteCount = 17;</code>
-       * @return The satelliteCount.
+       * <code>optional uint32 satelliteCount = 17;</code>
        */
-      @java.lang.Override
       public int getSatelliteCount() {
         return satelliteCount_;
       }
@@ -2922,9 +2727,7 @@
        *卫星计数
        * </pre>
        *
-       * <code>uint32 satelliteCount = 17;</code>
-       * @param value The satelliteCount to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 satelliteCount = 17;</code>
        */
       public Builder setSatelliteCount(int value) {
         
@@ -2937,8 +2740,7 @@
        *卫星计数
        * </pre>
        *
-       * <code>uint32 satelliteCount = 17;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 satelliteCount = 17;</code>
        */
       public Builder clearSatelliteCount() {
         
@@ -2953,10 +2755,8 @@
        *任务编号
        * </pre>
        *
-       * <code>uint64 taskId = 18;</code>
-       * @return The taskId.
+       * <code>optional uint64 taskId = 18;</code>
        */
-      @java.lang.Override
       public long getTaskId() {
         return taskId_;
       }
@@ -2965,9 +2765,7 @@
        *任务编号
        * </pre>
        *
-       * <code>uint64 taskId = 18;</code>
-       * @param value The taskId to set.
-       * @return This builder for chaining.
+       * <code>optional uint64 taskId = 18;</code>
        */
       public Builder setTaskId(long value) {
         
@@ -2980,8 +2778,7 @@
        *任务编号
        * </pre>
        *
-       * <code>uint64 taskId = 18;</code>
-       * @return This builder for chaining.
+       * <code>optional uint64 taskId = 18;</code>
        */
       public Builder clearTaskId() {
         
@@ -2996,10 +2793,8 @@
        *rtk经度
        * </pre>
        *
-       * <code>double rtkLng = 19;</code>
-       * @return The rtkLng.
+       * <code>optional double rtkLng = 19;</code>
        */
-      @java.lang.Override
       public double getRtkLng() {
         return rtkLng_;
       }
@@ -3008,9 +2803,7 @@
        *rtk经度
        * </pre>
        *
-       * <code>double rtkLng = 19;</code>
-       * @param value The rtkLng to set.
-       * @return This builder for chaining.
+       * <code>optional double rtkLng = 19;</code>
        */
       public Builder setRtkLng(double value) {
         
@@ -3023,8 +2816,7 @@
        *rtk经度
        * </pre>
        *
-       * <code>double rtkLng = 19;</code>
-       * @return This builder for chaining.
+       * <code>optional double rtkLng = 19;</code>
        */
       public Builder clearRtkLng() {
         
@@ -3039,10 +2831,8 @@
        *rtk纬度
        * </pre>
        *
-       * <code>double rtkLat = 20;</code>
-       * @return The rtkLat.
+       * <code>optional double rtkLat = 20;</code>
        */
-      @java.lang.Override
       public double getRtkLat() {
         return rtkLat_;
       }
@@ -3051,9 +2841,7 @@
        *rtk纬度
        * </pre>
        *
-       * <code>double rtkLat = 20;</code>
-       * @param value The rtkLat to set.
-       * @return This builder for chaining.
+       * <code>optional double rtkLat = 20;</code>
        */
       public Builder setRtkLat(double value) {
         
@@ -3066,8 +2854,7 @@
        *rtk纬度
        * </pre>
        *
-       * <code>double rtkLat = 20;</code>
-       * @return This builder for chaining.
+       * <code>optional double rtkLat = 20;</code>
        */
       public Builder clearRtkLat() {
         
@@ -3079,24 +2866,20 @@
       private float rtkHFSL_ ;
       /**
        * <pre>
-       *rtk海拔高度(平均海平面高度)(单位:米)   
+       *rtk海拔高度(平均海平面高度)(单位:米)
        * </pre>
        *
-       * <code>float rtkHFSL = 21;</code>
-       * @return The rtkHFSL.
+       * <code>optional float rtkHFSL = 21;</code>
        */
-      @java.lang.Override
       public float getRtkHFSL() {
         return rtkHFSL_;
       }
       /**
        * <pre>
-       *rtk海拔高度(平均海平面高度)(单位:米)   
+       *rtk海拔高度(平均海平面高度)(单位:米)
        * </pre>
        *
-       * <code>float rtkHFSL = 21;</code>
-       * @param value The rtkHFSL to set.
-       * @return This builder for chaining.
+       * <code>optional float rtkHFSL = 21;</code>
        */
       public Builder setRtkHFSL(float value) {
         
@@ -3106,11 +2889,10 @@
       }
       /**
        * <pre>
-       *rtk海拔高度(平均海平面高度)(单位:米)   
+       *rtk海拔高度(平均海平面高度)(单位:米)
        * </pre>
        *
-       * <code>float rtkHFSL = 21;</code>
-       * @return This builder for chaining.
+       * <code>optional float rtkHFSL = 21;</code>
        */
       public Builder clearRtkHFSL() {
         
@@ -3125,10 +2907,8 @@
        *rtk状态(值为50时[rtk数据fix固定解],rtk的经纬度及海拔高度值可用)
        * </pre>
        *
-       * <code>uint32 rtkPositionInfo = 22;</code>
-       * @return The rtkPositionInfo.
+       * <code>optional uint32 rtkPositionInfo = 22;</code>
        */
-      @java.lang.Override
       public int getRtkPositionInfo() {
         return rtkPositionInfo_;
       }
@@ -3137,9 +2917,7 @@
        *rtk状态(值为50时[rtk数据fix固定解],rtk的经纬度及海拔高度值可用)
        * </pre>
        *
-       * <code>uint32 rtkPositionInfo = 22;</code>
-       * @param value The rtkPositionInfo to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 rtkPositionInfo = 22;</code>
        */
       public Builder setRtkPositionInfo(int value) {
         
@@ -3152,8 +2930,7 @@
        *rtk状态(值为50时[rtk数据fix固定解],rtk的经纬度及海拔高度值可用)
        * </pre>
        *
-       * <code>uint32 rtkPositionInfo = 22;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 rtkPositionInfo = 22;</code>
        */
       public Builder clearRtkPositionInfo() {
         
@@ -3168,10 +2945,8 @@
        *当前架次飞行时长(单位:秒) [起飞-&gt;落地 视为一个架次]
        * </pre>
        *
-       * <code>uint32 airFlyTimes = 23;</code>
-       * @return The airFlyTimes.
+       * <code>optional uint32 airFlyTimes = 23;</code>
        */
-      @java.lang.Override
       public int getAirFlyTimes() {
         return airFlyTimes_;
       }
@@ -3180,9 +2955,7 @@
        *当前架次飞行时长(单位:秒) [起飞-&gt;落地 视为一个架次]
        * </pre>
        *
-       * <code>uint32 airFlyTimes = 23;</code>
-       * @param value The airFlyTimes to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 airFlyTimes = 23;</code>
        */
       public Builder setAirFlyTimes(int value) {
         
@@ -3195,8 +2968,7 @@
        *当前架次飞行时长(单位:秒) [起飞-&gt;落地 视为一个架次]
        * </pre>
        *
-       * <code>uint32 airFlyTimes = 23;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 airFlyTimes = 23;</code>
        */
       public Builder clearAirFlyTimes() {
         
@@ -3211,10 +2983,8 @@
        *当前架次飞行实际距离(单位:米)
        * </pre>
        *
-       * <code>float airFlyDistance = 24;</code>
-       * @return The airFlyDistance.
+       * <code>optional float airFlyDistance = 24;</code>
        */
-      @java.lang.Override
       public float getAirFlyDistance() {
         return airFlyDistance_;
       }
@@ -3223,9 +2993,7 @@
        *当前架次飞行实际距离(单位:米)
        * </pre>
        *
-       * <code>float airFlyDistance = 24;</code>
-       * @param value The airFlyDistance to set.
-       * @return This builder for chaining.
+       * <code>optional float airFlyDistance = 24;</code>
        */
       public Builder setAirFlyDistance(float value) {
         
@@ -3238,8 +3006,7 @@
        *当前架次飞行实际距离(单位:米)
        * </pre>
        *
-       * <code>float airFlyDistance = 24;</code>
-       * @return This builder for chaining.
+       * <code>optional float airFlyDistance = 24;</code>
        */
       public Builder clearAirFlyDistance() {
         
@@ -3254,8 +3021,7 @@
        *无人机编号
        * </pre>
        *
-       * <code>string uavSn = 25;</code>
-       * @return The uavSn.
+       * <code>optional string uavSn = 25;</code>
        */
       public java.lang.String getUavSn() {
         java.lang.Object ref = uavSn_;
@@ -3274,8 +3040,7 @@
        *无人机编号
        * </pre>
        *
-       * <code>string uavSn = 25;</code>
-       * @return The bytes for uavSn.
+       * <code>optional string uavSn = 25;</code>
        */
       public com.google.protobuf.ByteString
           getUavSnBytes() {
@@ -3295,9 +3060,7 @@
        *无人机编号
        * </pre>
        *
-       * <code>string uavSn = 25;</code>
-       * @param value The uavSn to set.
-       * @return This builder for chaining.
+       * <code>optional string uavSn = 25;</code>
        */
       public Builder setUavSn(
           java.lang.String value) {
@@ -3314,8 +3077,7 @@
        *无人机编号
        * </pre>
        *
-       * <code>string uavSn = 25;</code>
-       * @return This builder for chaining.
+       * <code>optional string uavSn = 25;</code>
        */
       public Builder clearUavSn() {
         
@@ -3328,9 +3090,7 @@
        *无人机编号
        * </pre>
        *
-       * <code>string uavSn = 25;</code>
-       * @param value The bytes for uavSn to set.
-       * @return This builder for chaining.
+       * <code>optional string uavSn = 25;</code>
        */
       public Builder setUavSnBytes(
           com.google.protobuf.ByteString value) {
@@ -3350,8 +3110,7 @@
        *无人机型号
        * </pre>
        *
-       * <code>string uavModel = 26;</code>
-       * @return The uavModel.
+       * <code>optional string uavModel = 26;</code>
        */
       public java.lang.String getUavModel() {
         java.lang.Object ref = uavModel_;
@@ -3370,8 +3129,7 @@
        *无人机型号
        * </pre>
        *
-       * <code>string uavModel = 26;</code>
-       * @return The bytes for uavModel.
+       * <code>optional string uavModel = 26;</code>
        */
       public com.google.protobuf.ByteString
           getUavModelBytes() {
@@ -3391,9 +3149,7 @@
        *无人机型号
        * </pre>
        *
-       * <code>string uavModel = 26;</code>
-       * @param value The uavModel to set.
-       * @return This builder for chaining.
+       * <code>optional string uavModel = 26;</code>
        */
       public Builder setUavModel(
           java.lang.String value) {
@@ -3410,8 +3166,7 @@
        *无人机型号
        * </pre>
        *
-       * <code>string uavModel = 26;</code>
-       * @return This builder for chaining.
+       * <code>optional string uavModel = 26;</code>
        */
       public Builder clearUavModel() {
         
@@ -3424,9 +3179,7 @@
        *无人机型号
        * </pre>
        *
-       * <code>string uavModel = 26;</code>
-       * @param value The bytes for uavModel to set.
-       * @return This builder for chaining.
+       * <code>optional string uavModel = 26;</code>
        */
       public Builder setUavModelBytes(
           com.google.protobuf.ByteString value) {
@@ -3446,10 +3199,8 @@
        *距降落点水平直线距离(单位:米)
        * </pre>
        *
-       * <code>float homeRange = 27;</code>
-       * @return The homeRange.
+       * <code>optional float homeRange = 27;</code>
        */
-      @java.lang.Override
       public float getHomeRange() {
         return homeRange_;
       }
@@ -3458,9 +3209,7 @@
        *距降落点水平直线距离(单位:米)
        * </pre>
        *
-       * <code>float homeRange = 27;</code>
-       * @param value The homeRange to set.
-       * @return This builder for chaining.
+       * <code>optional float homeRange = 27;</code>
        */
       public Builder setHomeRange(float value) {
         
@@ -3473,8 +3222,7 @@
        *距降落点水平直线距离(单位:米)
        * </pre>
        *
-       * <code>float homeRange = 27;</code>
-       * @return This builder for chaining.
+       * <code>optional float homeRange = 27;</code>
        */
       public Builder clearHomeRange() {
         
@@ -3489,10 +3237,8 @@
        *飞行模式:1=手动控制模式,2=姿态模式,6=MODE_P_GPS,9=热点任务中,11=自动起飞中,12=降落中,14=航线中,15=返航中,17=虚拟摇杆控制中,33=强制降落中,41=解锁电机准备起飞中
        * </pre>
        *
-       * <code>uint32 flightMode = 28;</code>
-       * @return The flightMode.
+       * <code>optional uint32 flightMode = 28;</code>
        */
-      @java.lang.Override
       public int getFlightMode() {
         return flightMode_;
       }
@@ -3501,9 +3247,7 @@
        *飞行模式:1=手动控制模式,2=姿态模式,6=MODE_P_GPS,9=热点任务中,11=自动起飞中,12=降落中,14=航线中,15=返航中,17=虚拟摇杆控制中,33=强制降落中,41=解锁电机准备起飞中
        * </pre>
        *
-       * <code>uint32 flightMode = 28;</code>
-       * @param value The flightMode to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 flightMode = 28;</code>
        */
       public Builder setFlightMode(int value) {
         
@@ -3516,8 +3260,7 @@
        *飞行模式:1=手动控制模式,2=姿态模式,6=MODE_P_GPS,9=热点任务中,11=自动起飞中,12=降落中,14=航线中,15=返航中,17=虚拟摇杆控制中,33=强制降落中,41=解锁电机准备起飞中
        * </pre>
        *
-       * <code>uint32 flightMode = 28;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 flightMode = 28;</code>
        */
       public Builder clearFlightMode() {
         
@@ -3532,10 +3275,8 @@
        *距目标点实际距离(单位:米) [适用于打点飞行和航线飞行]
        * </pre>
        *
-       * <code>float targetDistance = 29;</code>
-       * @return The targetDistance.
+       * <code>optional float targetDistance = 29;</code>
        */
-      @java.lang.Override
       public float getTargetDistance() {
         return targetDistance_;
       }
@@ -3544,9 +3285,7 @@
        *距目标点实际距离(单位:米) [适用于打点飞行和航线飞行]
        * </pre>
        *
-       * <code>float targetDistance = 29;</code>
-       * @param value The targetDistance to set.
-       * @return This builder for chaining.
+       * <code>optional float targetDistance = 29;</code>
        */
       public Builder setTargetDistance(float value) {
         
@@ -3559,8 +3298,7 @@
        *距目标点实际距离(单位:米) [适用于打点飞行和航线飞行]
        * </pre>
        *
-       * <code>float targetDistance = 29;</code>
-       * @return This builder for chaining.
+       * <code>optional float targetDistance = 29;</code>
        */
       public Builder clearTargetDistance() {
         
@@ -3575,10 +3313,8 @@
        *预计剩余飞行时间[适用于打点飞行和航线飞行]
        * </pre>
        *
-       * <code>uint32 predictFlyTime = 30;</code>
-       * @return The predictFlyTime.
+       * <code>optional uint32 predictFlyTime = 30;</code>
        */
-      @java.lang.Override
       public int getPredictFlyTime() {
         return predictFlyTime_;
       }
@@ -3587,9 +3323,7 @@
        *预计剩余飞行时间[适用于打点飞行和航线飞行]
        * </pre>
        *
-       * <code>uint32 predictFlyTime = 30;</code>
-       * @param value The predictFlyTime to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 predictFlyTime = 30;</code>
        */
       public Builder setPredictFlyTime(int value) {
         
@@ -3602,8 +3336,7 @@
        *预计剩余飞行时间[适用于打点飞行和航线飞行]
        * </pre>
        *
-       * <code>uint32 predictFlyTime = 30;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 predictFlyTime = 30;</code>
        */
       public Builder clearPredictFlyTime() {
         
@@ -3618,10 +3351,8 @@
        *本架次最大相对高度值
        * </pre>
        *
-       * <code>float ultrasonicMax = 31;</code>
-       * @return The ultrasonicMax.
+       * <code>optional float ultrasonicMax = 31;</code>
        */
-      @java.lang.Override
       public float getUltrasonicMax() {
         return ultrasonicMax_;
       }
@@ -3630,9 +3361,7 @@
        *本架次最大相对高度值
        * </pre>
        *
-       * <code>float ultrasonicMax = 31;</code>
-       * @param value The ultrasonicMax to set.
-       * @return This builder for chaining.
+       * <code>optional float ultrasonicMax = 31;</code>
        */
       public Builder setUltrasonicMax(float value) {
         
@@ -3645,8 +3374,7 @@
        *本架次最大相对高度值
        * </pre>
        *
-       * <code>float ultrasonicMax = 31;</code>
-       * @return This builder for chaining.
+       * <code>optional float ultrasonicMax = 31;</code>
        */
       public Builder clearUltrasonicMax() {
         
@@ -3658,24 +3386,20 @@
       private float ultrasonicMin_ ;
       /**
        * <pre>
-       *本架次最小相对高度值    
+       *本架次最小相对高度值
        * </pre>
        *
-       * <code>float ultrasonicMin = 32;</code>
-       * @return The ultrasonicMin.
+       * <code>optional float ultrasonicMin = 32;</code>
        */
-      @java.lang.Override
       public float getUltrasonicMin() {
         return ultrasonicMin_;
       }
       /**
        * <pre>
-       *本架次最小相对高度值    
+       *本架次最小相对高度值
        * </pre>
        *
-       * <code>float ultrasonicMin = 32;</code>
-       * @param value The ultrasonicMin to set.
-       * @return This builder for chaining.
+       * <code>optional float ultrasonicMin = 32;</code>
        */
       public Builder setUltrasonicMin(float value) {
         
@@ -3685,11 +3409,10 @@
       }
       /**
        * <pre>
-       *本架次最小相对高度值    
+       *本架次最小相对高度值
        * </pre>
        *
-       * <code>float ultrasonicMin = 32;</code>
-       * @return This builder for chaining.
+       * <code>optional float ultrasonicMin = 32;</code>
        */
       public Builder clearUltrasonicMin() {
         
@@ -3697,16 +3420,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -3725,12 +3446,11 @@
 
     private static final com.google.protobuf.Parser<TelemetryData>
         PARSER = new com.google.protobuf.AbstractParser<TelemetryData>() {
-      @java.lang.Override
       public TelemetryData parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new TelemetryData(input, extensionRegistry);
+          return new TelemetryData(input, extensionRegistry);
       }
     };
 
@@ -3743,7 +3463,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -3785,11 +3504,10 @@
    *
    * Protobuf type {@code TelemetryList}
    */
-  public static final class TelemetryList extends
+  public  static final class TelemetryList extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:TelemetryList)
       TelemetryListOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use TelemetryList.newBuilder() to construct.
     private TelemetryList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
@@ -3799,28 +3517,16 @@
     }
 
     @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new TelemetryList();
-    }
-
-    @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private TelemetryList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
       int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
         boolean done = false;
         while (!done) {
@@ -3829,8 +3535,14 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                 telemetryList_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData>();
                 mutable_bitField0_ |= 0x00000001;
               }
@@ -3838,27 +3550,17 @@
                   input.readMessage(com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData.parser(), extensionRegistry));
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
           telemetryList_ = java.util.Collections.unmodifiableList(telemetryList_);
         }
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -3867,7 +3569,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_TelemetryList_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_TelemetryList_fieldAccessorTable
@@ -3880,14 +3581,12 @@
     /**
      * <code>repeated .TelemetryData telemetryList = 1;</code>
      */
-    @java.lang.Override
     public java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData> getTelemetryListList() {
       return telemetryList_;
     }
     /**
      * <code>repeated .TelemetryData telemetryList = 1;</code>
      */
-    @java.lang.Override
     public java.util.List<? extends com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryDataOrBuilder> 
         getTelemetryListOrBuilderList() {
       return telemetryList_;
@@ -3895,28 +3594,24 @@
     /**
      * <code>repeated .TelemetryData telemetryList = 1;</code>
      */
-    @java.lang.Override
     public int getTelemetryListCount() {
       return telemetryList_.size();
     }
     /**
      * <code>repeated .TelemetryData telemetryList = 1;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData getTelemetryList(int index) {
       return telemetryList_.get(index);
     }
     /**
      * <code>repeated .TelemetryData telemetryList = 1;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryDataOrBuilder getTelemetryListOrBuilder(
         int index) {
       return telemetryList_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -3926,16 +3621,13 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       for (int i = 0; i < telemetryList_.size(); i++) {
         output.writeMessage(1, telemetryList_.get(i));
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -3945,11 +3637,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(1, telemetryList_.get(i));
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -3960,10 +3652,10 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList) obj;
 
-      if (!getTelemetryListList()
-          .equals(other.getTelemetryListList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && getTelemetryListList()
+          .equals(other.getTelemetryListList());
+      return result;
     }
 
     @java.lang.Override
@@ -3972,7 +3664,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       if (getTelemetryListCount() > 0) {
         hash = (37 * hash) + TELEMETRYLIST_FIELD_NUMBER;
         hash = (53 * hash) + getTelemetryListList().hashCode();
@@ -3982,17 +3674,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -4052,7 +3733,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -4060,7 +3740,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -4088,7 +3767,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_TelemetryList_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_TelemetryList_fieldAccessorTable
@@ -4112,7 +3790,6 @@
           getTelemetryListFieldBuilder();
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         if (telemetryListBuilder_ == null) {
@@ -4124,18 +3801,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_TelemetryList_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList result = buildPartial();
         if (!result.isInitialized()) {
@@ -4144,12 +3818,11 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList(this);
         int from_bitField0_ = bitField0_;
         if (telemetryListBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
             telemetryList_ = java.util.Collections.unmodifiableList(telemetryList_);
             bitField0_ = (bitField0_ & ~0x00000001);
           }
@@ -4161,39 +3834,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList)other);
@@ -4231,17 +3897,14 @@
             }
           }
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -4264,7 +3927,7 @@
       private java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData> telemetryList_ =
         java.util.Collections.emptyList();
       private void ensureTelemetryListIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
           telemetryList_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData>(telemetryList_);
           bitField0_ |= 0x00000001;
          }
@@ -4493,23 +4156,21 @@
           telemetryListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryDataOrBuilder>(
                   telemetryList_,
-                  ((bitField0_ & 0x00000001) != 0),
+                  ((bitField0_ & 0x00000001) == 0x00000001),
                   getParentForChildren(),
                   isClean());
           telemetryList_ = null;
         }
         return telemetryListBuilder_;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -4528,12 +4189,11 @@
 
     private static final com.google.protobuf.Parser<TelemetryList>
         PARSER = new com.google.protobuf.AbstractParser<TelemetryList>() {
-      @java.lang.Override
       public TelemetryList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new TelemetryList(input, extensionRegistry);
+          return new TelemetryList(input, extensionRegistry);
       }
     };
 
@@ -4546,7 +4206,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.TelemetryList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -4562,8 +4221,7 @@
      *入网模式:NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string mode = 1;</code>
-     * @return The mode.
+     * <code>optional string mode = 1;</code>
      */
     java.lang.String getMode();
     /**
@@ -4571,8 +4229,7 @@
      *入网模式:NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string mode = 1;</code>
-     * @return The bytes for mode.
+     * <code>optional string mode = 1;</code>
      */
     com.google.protobuf.ByteString
         getModeBytes();
@@ -4582,8 +4239,7 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string mcc = 2;</code>
-     * @return The mcc.
+     * <code>optional string mcc = 2;</code>
      */
     java.lang.String getMcc();
     /**
@@ -4591,8 +4247,7 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string mcc = 2;</code>
-     * @return The bytes for mcc.
+     * <code>optional string mcc = 2;</code>
      */
     com.google.protobuf.ByteString
         getMccBytes();
@@ -4602,8 +4257,7 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string mnc = 3;</code>
-     * @return The mnc.
+     * <code>optional string mnc = 3;</code>
      */
     java.lang.String getMnc();
     /**
@@ -4611,8 +4265,7 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string mnc = 3;</code>
-     * @return The bytes for mnc.
+     * <code>optional string mnc = 3;</code>
      */
     com.google.protobuf.ByteString
         getMncBytes();
@@ -4622,8 +4275,7 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string cellid = 4;</code>
-     * @return The cellid.
+     * <code>optional string cellid = 4;</code>
      */
     java.lang.String getCellid();
     /**
@@ -4631,8 +4283,7 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string cellid = 4;</code>
-     * @return The bytes for cellid.
+     * <code>optional string cellid = 4;</code>
      */
     com.google.protobuf.ByteString
         getCellidBytes();
@@ -4642,8 +4293,7 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string pcid = 5;</code>
-     * @return The pcid.
+     * <code>optional string pcid = 5;</code>
      */
     java.lang.String getPcid();
     /**
@@ -4651,8 +4301,7 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string pcid = 5;</code>
-     * @return The bytes for pcid.
+     * <code>optional string pcid = 5;</code>
      */
     com.google.protobuf.ByteString
         getPcidBytes();
@@ -4662,8 +4311,7 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string tac = 6;</code>
-     * @return The tac.
+     * <code>optional string tac = 6;</code>
      */
     java.lang.String getTac();
     /**
@@ -4671,8 +4319,7 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string tac = 6;</code>
-     * @return The bytes for tac.
+     * <code>optional string tac = 6;</code>
      */
     com.google.protobuf.ByteString
         getTacBytes();
@@ -4682,8 +4329,7 @@
      *NR5G-SA,NR5G-NSA
      * </pre>
      *
-     * <code>string arfcn = 7;</code>
-     * @return The arfcn.
+     * <code>optional string arfcn = 7;</code>
      */
     java.lang.String getArfcn();
     /**
@@ -4691,8 +4337,7 @@
      *NR5G-SA,NR5G-NSA
      * </pre>
      *
-     * <code>string arfcn = 7;</code>
-     * @return The bytes for arfcn.
+     * <code>optional string arfcn = 7;</code>
      */
     com.google.protobuf.ByteString
         getArfcnBytes();
@@ -4702,8 +4347,7 @@
      *NR5G-SA,NR5G-NSA
      * </pre>
      *
-     * <code>string band = 8;</code>
-     * @return The band.
+     * <code>optional string band = 8;</code>
      */
     java.lang.String getBand();
     /**
@@ -4711,8 +4355,7 @@
      *NR5G-SA,NR5G-NSA
      * </pre>
      *
-     * <code>string band = 8;</code>
-     * @return The bytes for band.
+     * <code>optional string band = 8;</code>
      */
     com.google.protobuf.ByteString
         getBandBytes();
@@ -4722,8 +4365,7 @@
      *NR5G-SA
      * </pre>
      *
-     * <code>string nr_dl_bandwidth = 9;</code>
-     * @return The nrDlBandwidth.
+     * <code>optional string nr_dl_bandwidth = 9;</code>
      */
     java.lang.String getNrDlBandwidth();
     /**
@@ -4731,8 +4373,7 @@
      *NR5G-SA
      * </pre>
      *
-     * <code>string nr_dl_bandwidth = 9;</code>
-     * @return The bytes for nrDlBandwidth.
+     * <code>optional string nr_dl_bandwidth = 9;</code>
      */
     com.google.protobuf.ByteString
         getNrDlBandwidthBytes();
@@ -4742,8 +4383,7 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string rsrp = 10;</code>
-     * @return The rsrp.
+     * <code>optional string rsrp = 10;</code>
      */
     java.lang.String getRsrp();
     /**
@@ -4751,8 +4391,7 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string rsrp = 10;</code>
-     * @return The bytes for rsrp.
+     * <code>optional string rsrp = 10;</code>
      */
     com.google.protobuf.ByteString
         getRsrpBytes();
@@ -4762,8 +4401,7 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string rsrq = 11;</code>
-     * @return The rsrq.
+     * <code>optional string rsrq = 11;</code>
      */
     java.lang.String getRsrq();
     /**
@@ -4771,8 +4409,7 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string rsrq = 11;</code>
-     * @return The bytes for rsrq.
+     * <code>optional string rsrq = 11;</code>
      */
     com.google.protobuf.ByteString
         getRsrqBytes();
@@ -4782,8 +4419,7 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string sinr = 12;</code>
-     * @return The sinr.
+     * <code>optional string sinr = 12;</code>
      */
     java.lang.String getSinr();
     /**
@@ -4791,8 +4427,7 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string sinr = 12;</code>
-     * @return The bytes for sinr.
+     * <code>optional string sinr = 12;</code>
      */
     com.google.protobuf.ByteString
         getSinrBytes();
@@ -4802,8 +4437,7 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string tx_power = 13;</code>
-     * @return The txPower.
+     * <code>optional string tx_power = 13;</code>
      */
     java.lang.String getTxPower();
     /**
@@ -4811,8 +4445,7 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string tx_power = 13;</code>
-     * @return The bytes for txPower.
+     * <code>optional string tx_power = 13;</code>
      */
     com.google.protobuf.ByteString
         getTxPowerBytes();
@@ -4822,8 +4455,7 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string srxlev = 14;</code>
-     * @return The srxlev.
+     * <code>optional string srxlev = 14;</code>
      */
     java.lang.String getSrxlev();
     /**
@@ -4831,8 +4463,7 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string srxlev = 14;</code>
-     * @return The bytes for srxlev.
+     * <code>optional string srxlev = 14;</code>
      */
     com.google.protobuf.ByteString
         getSrxlevBytes();
@@ -4842,8 +4473,7 @@
      *LTE
      * </pre>
      *
-     * <code>string cqi = 15;</code>
-     * @return The cqi.
+     * <code>optional string cqi = 15;</code>
      */
     java.lang.String getCqi();
     /**
@@ -4851,8 +4481,7 @@
      *LTE
      * </pre>
      *
-     * <code>string cqi = 15;</code>
-     * @return The bytes for cqi.
+     * <code>optional string cqi = 15;</code>
      */
     com.google.protobuf.ByteString
         getCqiBytes();
@@ -4862,8 +4491,7 @@
      *LTE
      * </pre>
      *
-     * <code>string earfcn = 16;</code>
-     * @return The earfcn.
+     * <code>optional string earfcn = 16;</code>
      */
     java.lang.String getEarfcn();
     /**
@@ -4871,8 +4499,7 @@
      *LTE
      * </pre>
      *
-     * <code>string earfcn = 16;</code>
-     * @return The bytes for earfcn.
+     * <code>optional string earfcn = 16;</code>
      */
     com.google.protobuf.ByteString
         getEarfcnBytes();
@@ -4882,8 +4509,7 @@
      *LTE
      * </pre>
      *
-     * <code>string freq_band_ind = 17;</code>
-     * @return The freqBandInd.
+     * <code>optional string freq_band_ind = 17;</code>
      */
     java.lang.String getFreqBandInd();
     /**
@@ -4891,8 +4517,7 @@
      *LTE
      * </pre>
      *
-     * <code>string freq_band_ind = 17;</code>
-     * @return The bytes for freqBandInd.
+     * <code>optional string freq_band_ind = 17;</code>
      */
     com.google.protobuf.ByteString
         getFreqBandIndBytes();
@@ -4902,8 +4527,7 @@
      *LTE
      * </pre>
      *
-     * <code>string ul_bandwidth = 18;</code>
-     * @return The ulBandwidth.
+     * <code>optional string ul_bandwidth = 18;</code>
      */
     java.lang.String getUlBandwidth();
     /**
@@ -4911,8 +4535,7 @@
      *LTE
      * </pre>
      *
-     * <code>string ul_bandwidth = 18;</code>
-     * @return The bytes for ulBandwidth.
+     * <code>optional string ul_bandwidth = 18;</code>
      */
     com.google.protobuf.ByteString
         getUlBandwidthBytes();
@@ -4922,8 +4545,7 @@
      *LTE
      * </pre>
      *
-     * <code>string dl_bandwidth = 19;</code>
-     * @return The dlBandwidth.
+     * <code>optional string dl_bandwidth = 19;</code>
      */
     java.lang.String getDlBandwidth();
     /**
@@ -4931,8 +4553,7 @@
      *LTE
      * </pre>
      *
-     * <code>string dl_bandwidth = 19;</code>
-     * @return The bytes for dlBandwidth.
+     * <code>optional string dl_bandwidth = 19;</code>
      */
     com.google.protobuf.ByteString
         getDlBandwidthBytes();
@@ -4942,8 +4563,7 @@
      *LTE
      * </pre>
      *
-     * <code>string is_tdd = 20;</code>
-     * @return The isTdd.
+     * <code>optional string is_tdd = 20;</code>
      */
     java.lang.String getIsTdd();
     /**
@@ -4951,8 +4571,7 @@
      *LTE
      * </pre>
      *
-     * <code>string is_tdd = 20;</code>
-     * @return The bytes for isTdd.
+     * <code>optional string is_tdd = 20;</code>
      */
     com.google.protobuf.ByteString
         getIsTddBytes();
@@ -4962,8 +4581,7 @@
      *LTE
      * </pre>
      *
-     * <code>string rssi = 21;</code>
-     * @return The rssi.
+     * <code>optional string rssi = 21;</code>
      */
     java.lang.String getRssi();
     /**
@@ -4971,8 +4589,7 @@
      *LTE
      * </pre>
      *
-     * <code>string rssi = 21;</code>
-     * @return The bytes for rssi.
+     * <code>optional string rssi = 21;</code>
      */
     com.google.protobuf.ByteString
         getRssiBytes();
@@ -4982,8 +4599,7 @@
      *NR5G-SA
      * </pre>
      *
-     * <code>string duplex_mode = 22;</code>
-     * @return The duplexMode.
+     * <code>optional string duplex_mode = 22;</code>
      */
     java.lang.String getDuplexMode();
     /**
@@ -4991,8 +4607,7 @@
      *NR5G-SA
      * </pre>
      *
-     * <code>string duplex_mode = 22;</code>
-     * @return The bytes for duplexMode.
+     * <code>optional string duplex_mode = 22;</code>
      */
     com.google.protobuf.ByteString
         getDuplexModeBytes();
@@ -5002,8 +4617,7 @@
      *经度
      * </pre>
      *
-     * <code>double lng = 23;</code>
-     * @return The lng.
+     * <code>optional double lng = 23;</code>
      */
     double getLng();
 
@@ -5012,8 +4626,7 @@
      *纬度
      * </pre>
      *
-     * <code>double lat = 24;</code>
-     * @return The lat.
+     * <code>optional double lat = 24;</code>
      */
     double getLat();
 
@@ -5022,8 +4635,7 @@
      *高度(单位:米)
      * </pre>
      *
-     * <code>float height = 25;</code>
-     * @return The height.
+     * <code>optional float height = 25;</code>
      */
     float getHeight();
 
@@ -5032,8 +4644,7 @@
      *时间戳(单位:秒)
      * </pre>
      *
-     * <code>uint32 timestamp = 26;</code>
-     * @return The timestamp.
+     * <code>optional uint32 timestamp = 26;</code>
      */
     int getTimestamp();
 
@@ -5042,8 +4653,7 @@
      *1=线缆故障,2=OSDK未激活,3=正常,4=云盒固件更新
      * </pre>
      *
-     * <code>uint32 boxstate = 27;</code>
-     * @return The boxstate.
+     * <code>optional uint32 boxstate = 27;</code>
      */
     int getBoxstate();
 
@@ -5052,8 +4662,7 @@
      *运营商
      * </pre>
      *
-     * <code>string isp = 28;</code>
-     * @return The isp.
+     * <code>optional string isp = 28;</code>
      */
     java.lang.String getIsp();
     /**
@@ -5061,8 +4670,7 @@
      *运营商
      * </pre>
      *
-     * <code>string isp = 28;</code>
-     * @return The bytes for isp.
+     * <code>optional string isp = 28;</code>
      */
     com.google.protobuf.ByteString
         getIspBytes();
@@ -5072,8 +4680,7 @@
      *模组芯片温度(单位:摄氏度)
      * </pre>
      *
-     * <code>uint32 tempMax = 29;</code>
-     * @return The tempMax.
+     * <code>optional uint32 tempMax = 29;</code>
      */
     int getTempMax();
 
@@ -5082,8 +4689,7 @@
      *prx路径的rsrp值
      * </pre>
      *
-     * <code>string prx_rsrp = 30;</code>
-     * @return The prxRsrp.
+     * <code>optional string prx_rsrp = 30;</code>
      */
     java.lang.String getPrxRsrp();
     /**
@@ -5091,8 +4697,7 @@
      *prx路径的rsrp值
      * </pre>
      *
-     * <code>string prx_rsrp = 30;</code>
-     * @return The bytes for prxRsrp.
+     * <code>optional string prx_rsrp = 30;</code>
      */
     com.google.protobuf.ByteString
         getPrxRsrpBytes();
@@ -5102,8 +4707,7 @@
      *drx路径的rsrp值
      * </pre>
      *
-     * <code>string drx_rsrp = 31;</code>
-     * @return The drxRsrp.
+     * <code>optional string drx_rsrp = 31;</code>
      */
     java.lang.String getDrxRsrp();
     /**
@@ -5111,8 +4715,7 @@
      *drx路径的rsrp值
      * </pre>
      *
-     * <code>string drx_rsrp = 31;</code>
-     * @return The bytes for drxRsrp.
+     * <code>optional string drx_rsrp = 31;</code>
      */
     com.google.protobuf.ByteString
         getDrxRsrpBytes();
@@ -5122,8 +4725,7 @@
      *rx2路径的rsrp值
      * </pre>
      *
-     * <code>string rx2_rsrp = 32;</code>
-     * @return The rx2Rsrp.
+     * <code>optional string rx2_rsrp = 32;</code>
      */
     java.lang.String getRx2Rsrp();
     /**
@@ -5131,8 +4733,7 @@
      *rx2路径的rsrp值
      * </pre>
      *
-     * <code>string rx2_rsrp = 32;</code>
-     * @return The bytes for rx2Rsrp.
+     * <code>optional string rx2_rsrp = 32;</code>
      */
     com.google.protobuf.ByteString
         getRx2RsrpBytes();
@@ -5142,8 +4743,7 @@
      *rx3路径的rsrp值
      * </pre>
      *
-     * <code>string rx3_rsrp = 33;</code>
-     * @return The rx3Rsrp.
+     * <code>optional string rx3_rsrp = 33;</code>
      */
     java.lang.String getRx3Rsrp();
     /**
@@ -5151,8 +4751,7 @@
      *rx3路径的rsrp值
      * </pre>
      *
-     * <code>string rx3_rsrp = 33;</code>
-     * @return The bytes for rx3Rsrp.
+     * <code>optional string rx3_rsrp = 33;</code>
      */
     com.google.protobuf.ByteString
         getRx3RsrpBytes();
@@ -5162,8 +4761,7 @@
      *云盒编号
      * </pre>
      *
-     * <code>string box_sn = 34;</code>
-     * @return The boxSn.
+     * <code>optional string box_sn = 34;</code>
      */
     java.lang.String getBoxSn();
     /**
@@ -5171,8 +4769,7 @@
      *云盒编号
      * </pre>
      *
-     * <code>string box_sn = 34;</code>
-     * @return The bytes for boxSn.
+     * <code>optional string box_sn = 34;</code>
      */
     com.google.protobuf.ByteString
         getBoxSnBytes();
@@ -5184,11 +4781,10 @@
    *
    * Protobuf type {@code SignalInfo}
    */
-  public static final class SignalInfo extends
+  public  static final class SignalInfo extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:SignalInfo)
       SignalInfoOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use SignalInfo.newBuilder() to construct.
     private SignalInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
@@ -5216,7 +4812,13 @@
       isTdd_ = "";
       rssi_ = "";
       duplexMode_ = "";
+      lng_ = 0D;
+      lat_ = 0D;
+      height_ = 0F;
+      timestamp_ = 0;
+      boxstate_ = 0;
       isp_ = "";
+      tempMax_ = 0;
       prxRsrp_ = "";
       drxRsrp_ = "";
       rx2Rsrp_ = "";
@@ -5225,27 +4827,17 @@
     }
 
     @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SignalInfo();
-    }
-
-    @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private SignalInfo(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
+      int mutable_bitField0_ = 0;
+      int mutable_bitField1_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -5254,6 +4846,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 10: {
               java.lang.String s = input.readStringRequireUtf8();
 
@@ -5452,24 +5050,14 @@
               boxSn_ = s;
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -5478,7 +5066,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SignalInfo_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SignalInfo_fieldAccessorTable
@@ -5493,10 +5080,8 @@
      *入网模式:NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string mode = 1;</code>
-     * @return The mode.
+     * <code>optional string mode = 1;</code>
      */
-    @java.lang.Override
     public java.lang.String getMode() {
       java.lang.Object ref = mode_;
       if (ref instanceof java.lang.String) {
@@ -5514,10 +5099,8 @@
      *入网模式:NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string mode = 1;</code>
-     * @return The bytes for mode.
+     * <code>optional string mode = 1;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getModeBytes() {
       java.lang.Object ref = mode_;
@@ -5539,10 +5122,8 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string mcc = 2;</code>
-     * @return The mcc.
+     * <code>optional string mcc = 2;</code>
      */
-    @java.lang.Override
     public java.lang.String getMcc() {
       java.lang.Object ref = mcc_;
       if (ref instanceof java.lang.String) {
@@ -5560,10 +5141,8 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string mcc = 2;</code>
-     * @return The bytes for mcc.
+     * <code>optional string mcc = 2;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getMccBytes() {
       java.lang.Object ref = mcc_;
@@ -5585,10 +5164,8 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string mnc = 3;</code>
-     * @return The mnc.
+     * <code>optional string mnc = 3;</code>
      */
-    @java.lang.Override
     public java.lang.String getMnc() {
       java.lang.Object ref = mnc_;
       if (ref instanceof java.lang.String) {
@@ -5606,10 +5183,8 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string mnc = 3;</code>
-     * @return The bytes for mnc.
+     * <code>optional string mnc = 3;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getMncBytes() {
       java.lang.Object ref = mnc_;
@@ -5631,10 +5206,8 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string cellid = 4;</code>
-     * @return The cellid.
+     * <code>optional string cellid = 4;</code>
      */
-    @java.lang.Override
     public java.lang.String getCellid() {
       java.lang.Object ref = cellid_;
       if (ref instanceof java.lang.String) {
@@ -5652,10 +5225,8 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string cellid = 4;</code>
-     * @return The bytes for cellid.
+     * <code>optional string cellid = 4;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getCellidBytes() {
       java.lang.Object ref = cellid_;
@@ -5677,10 +5248,8 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string pcid = 5;</code>
-     * @return The pcid.
+     * <code>optional string pcid = 5;</code>
      */
-    @java.lang.Override
     public java.lang.String getPcid() {
       java.lang.Object ref = pcid_;
       if (ref instanceof java.lang.String) {
@@ -5698,10 +5267,8 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string pcid = 5;</code>
-     * @return The bytes for pcid.
+     * <code>optional string pcid = 5;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getPcidBytes() {
       java.lang.Object ref = pcid_;
@@ -5723,10 +5290,8 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string tac = 6;</code>
-     * @return The tac.
+     * <code>optional string tac = 6;</code>
      */
-    @java.lang.Override
     public java.lang.String getTac() {
       java.lang.Object ref = tac_;
       if (ref instanceof java.lang.String) {
@@ -5744,10 +5309,8 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string tac = 6;</code>
-     * @return The bytes for tac.
+     * <code>optional string tac = 6;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getTacBytes() {
       java.lang.Object ref = tac_;
@@ -5769,10 +5332,8 @@
      *NR5G-SA,NR5G-NSA
      * </pre>
      *
-     * <code>string arfcn = 7;</code>
-     * @return The arfcn.
+     * <code>optional string arfcn = 7;</code>
      */
-    @java.lang.Override
     public java.lang.String getArfcn() {
       java.lang.Object ref = arfcn_;
       if (ref instanceof java.lang.String) {
@@ -5790,10 +5351,8 @@
      *NR5G-SA,NR5G-NSA
      * </pre>
      *
-     * <code>string arfcn = 7;</code>
-     * @return The bytes for arfcn.
+     * <code>optional string arfcn = 7;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getArfcnBytes() {
       java.lang.Object ref = arfcn_;
@@ -5815,10 +5374,8 @@
      *NR5G-SA,NR5G-NSA
      * </pre>
      *
-     * <code>string band = 8;</code>
-     * @return The band.
+     * <code>optional string band = 8;</code>
      */
-    @java.lang.Override
     public java.lang.String getBand() {
       java.lang.Object ref = band_;
       if (ref instanceof java.lang.String) {
@@ -5836,10 +5393,8 @@
      *NR5G-SA,NR5G-NSA
      * </pre>
      *
-     * <code>string band = 8;</code>
-     * @return The bytes for band.
+     * <code>optional string band = 8;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getBandBytes() {
       java.lang.Object ref = band_;
@@ -5861,10 +5416,8 @@
      *NR5G-SA
      * </pre>
      *
-     * <code>string nr_dl_bandwidth = 9;</code>
-     * @return The nrDlBandwidth.
+     * <code>optional string nr_dl_bandwidth = 9;</code>
      */
-    @java.lang.Override
     public java.lang.String getNrDlBandwidth() {
       java.lang.Object ref = nrDlBandwidth_;
       if (ref instanceof java.lang.String) {
@@ -5882,10 +5435,8 @@
      *NR5G-SA
      * </pre>
      *
-     * <code>string nr_dl_bandwidth = 9;</code>
-     * @return The bytes for nrDlBandwidth.
+     * <code>optional string nr_dl_bandwidth = 9;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getNrDlBandwidthBytes() {
       java.lang.Object ref = nrDlBandwidth_;
@@ -5907,10 +5458,8 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string rsrp = 10;</code>
-     * @return The rsrp.
+     * <code>optional string rsrp = 10;</code>
      */
-    @java.lang.Override
     public java.lang.String getRsrp() {
       java.lang.Object ref = rsrp_;
       if (ref instanceof java.lang.String) {
@@ -5928,10 +5477,8 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string rsrp = 10;</code>
-     * @return The bytes for rsrp.
+     * <code>optional string rsrp = 10;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getRsrpBytes() {
       java.lang.Object ref = rsrp_;
@@ -5953,10 +5500,8 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string rsrq = 11;</code>
-     * @return The rsrq.
+     * <code>optional string rsrq = 11;</code>
      */
-    @java.lang.Override
     public java.lang.String getRsrq() {
       java.lang.Object ref = rsrq_;
       if (ref instanceof java.lang.String) {
@@ -5974,10 +5519,8 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string rsrq = 11;</code>
-     * @return The bytes for rsrq.
+     * <code>optional string rsrq = 11;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getRsrqBytes() {
       java.lang.Object ref = rsrq_;
@@ -5999,10 +5542,8 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string sinr = 12;</code>
-     * @return The sinr.
+     * <code>optional string sinr = 12;</code>
      */
-    @java.lang.Override
     public java.lang.String getSinr() {
       java.lang.Object ref = sinr_;
       if (ref instanceof java.lang.String) {
@@ -6020,10 +5561,8 @@
      *NR5G-SA,NR5G-NSA,LTE
      * </pre>
      *
-     * <code>string sinr = 12;</code>
-     * @return The bytes for sinr.
+     * <code>optional string sinr = 12;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getSinrBytes() {
       java.lang.Object ref = sinr_;
@@ -6045,10 +5584,8 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string tx_power = 13;</code>
-     * @return The txPower.
+     * <code>optional string tx_power = 13;</code>
      */
-    @java.lang.Override
     public java.lang.String getTxPower() {
       java.lang.Object ref = txPower_;
       if (ref instanceof java.lang.String) {
@@ -6066,10 +5603,8 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string tx_power = 13;</code>
-     * @return The bytes for txPower.
+     * <code>optional string tx_power = 13;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getTxPowerBytes() {
       java.lang.Object ref = txPower_;
@@ -6091,10 +5626,8 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string srxlev = 14;</code>
-     * @return The srxlev.
+     * <code>optional string srxlev = 14;</code>
      */
-    @java.lang.Override
     public java.lang.String getSrxlev() {
       java.lang.Object ref = srxlev_;
       if (ref instanceof java.lang.String) {
@@ -6112,10 +5645,8 @@
      *NR5G-SA,LTE
      * </pre>
      *
-     * <code>string srxlev = 14;</code>
-     * @return The bytes for srxlev.
+     * <code>optional string srxlev = 14;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getSrxlevBytes() {
       java.lang.Object ref = srxlev_;
@@ -6137,10 +5668,8 @@
      *LTE
      * </pre>
      *
-     * <code>string cqi = 15;</code>
-     * @return The cqi.
+     * <code>optional string cqi = 15;</code>
      */
-    @java.lang.Override
     public java.lang.String getCqi() {
       java.lang.Object ref = cqi_;
       if (ref instanceof java.lang.String) {
@@ -6158,10 +5687,8 @@
      *LTE
      * </pre>
      *
-     * <code>string cqi = 15;</code>
-     * @return The bytes for cqi.
+     * <code>optional string cqi = 15;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getCqiBytes() {
       java.lang.Object ref = cqi_;
@@ -6183,10 +5710,8 @@
      *LTE
      * </pre>
      *
-     * <code>string earfcn = 16;</code>
-     * @return The earfcn.
+     * <code>optional string earfcn = 16;</code>
      */
-    @java.lang.Override
     public java.lang.String getEarfcn() {
       java.lang.Object ref = earfcn_;
       if (ref instanceof java.lang.String) {
@@ -6204,10 +5729,8 @@
      *LTE
      * </pre>
      *
-     * <code>string earfcn = 16;</code>
-     * @return The bytes for earfcn.
+     * <code>optional string earfcn = 16;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getEarfcnBytes() {
       java.lang.Object ref = earfcn_;
@@ -6229,10 +5752,8 @@
      *LTE
      * </pre>
      *
-     * <code>string freq_band_ind = 17;</code>
-     * @return The freqBandInd.
+     * <code>optional string freq_band_ind = 17;</code>
      */
-    @java.lang.Override
     public java.lang.String getFreqBandInd() {
       java.lang.Object ref = freqBandInd_;
       if (ref instanceof java.lang.String) {
@@ -6250,10 +5771,8 @@
      *LTE
      * </pre>
      *
-     * <code>string freq_band_ind = 17;</code>
-     * @return The bytes for freqBandInd.
+     * <code>optional string freq_band_ind = 17;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getFreqBandIndBytes() {
       java.lang.Object ref = freqBandInd_;
@@ -6275,10 +5794,8 @@
      *LTE
      * </pre>
      *
-     * <code>string ul_bandwidth = 18;</code>
-     * @return The ulBandwidth.
+     * <code>optional string ul_bandwidth = 18;</code>
      */
-    @java.lang.Override
     public java.lang.String getUlBandwidth() {
       java.lang.Object ref = ulBandwidth_;
       if (ref instanceof java.lang.String) {
@@ -6296,10 +5813,8 @@
      *LTE
      * </pre>
      *
-     * <code>string ul_bandwidth = 18;</code>
-     * @return The bytes for ulBandwidth.
+     * <code>optional string ul_bandwidth = 18;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getUlBandwidthBytes() {
       java.lang.Object ref = ulBandwidth_;
@@ -6321,10 +5836,8 @@
      *LTE
      * </pre>
      *
-     * <code>string dl_bandwidth = 19;</code>
-     * @return The dlBandwidth.
+     * <code>optional string dl_bandwidth = 19;</code>
      */
-    @java.lang.Override
     public java.lang.String getDlBandwidth() {
       java.lang.Object ref = dlBandwidth_;
       if (ref instanceof java.lang.String) {
@@ -6342,10 +5855,8 @@
      *LTE
      * </pre>
      *
-     * <code>string dl_bandwidth = 19;</code>
-     * @return The bytes for dlBandwidth.
+     * <code>optional string dl_bandwidth = 19;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getDlBandwidthBytes() {
       java.lang.Object ref = dlBandwidth_;
@@ -6367,10 +5878,8 @@
      *LTE
      * </pre>
      *
-     * <code>string is_tdd = 20;</code>
-     * @return The isTdd.
+     * <code>optional string is_tdd = 20;</code>
      */
-    @java.lang.Override
     public java.lang.String getIsTdd() {
       java.lang.Object ref = isTdd_;
       if (ref instanceof java.lang.String) {
@@ -6388,10 +5897,8 @@
      *LTE
      * </pre>
      *
-     * <code>string is_tdd = 20;</code>
-     * @return The bytes for isTdd.
+     * <code>optional string is_tdd = 20;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getIsTddBytes() {
       java.lang.Object ref = isTdd_;
@@ -6413,10 +5920,8 @@
      *LTE
      * </pre>
      *
-     * <code>string rssi = 21;</code>
-     * @return The rssi.
+     * <code>optional string rssi = 21;</code>
      */
-    @java.lang.Override
     public java.lang.String getRssi() {
       java.lang.Object ref = rssi_;
       if (ref instanceof java.lang.String) {
@@ -6434,10 +5939,8 @@
      *LTE
      * </pre>
      *
-     * <code>string rssi = 21;</code>
-     * @return The bytes for rssi.
+     * <code>optional string rssi = 21;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getRssiBytes() {
       java.lang.Object ref = rssi_;
@@ -6459,10 +5962,8 @@
      *NR5G-SA
      * </pre>
      *
-     * <code>string duplex_mode = 22;</code>
-     * @return The duplexMode.
+     * <code>optional string duplex_mode = 22;</code>
      */
-    @java.lang.Override
     public java.lang.String getDuplexMode() {
       java.lang.Object ref = duplexMode_;
       if (ref instanceof java.lang.String) {
@@ -6480,10 +5981,8 @@
      *NR5G-SA
      * </pre>
      *
-     * <code>string duplex_mode = 22;</code>
-     * @return The bytes for duplexMode.
+     * <code>optional string duplex_mode = 22;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getDuplexModeBytes() {
       java.lang.Object ref = duplexMode_;
@@ -6505,10 +6004,8 @@
      *经度
      * </pre>
      *
-     * <code>double lng = 23;</code>
-     * @return The lng.
+     * <code>optional double lng = 23;</code>
      */
-    @java.lang.Override
     public double getLng() {
       return lng_;
     }
@@ -6520,10 +6017,8 @@
      *纬度
      * </pre>
      *
-     * <code>double lat = 24;</code>
-     * @return The lat.
+     * <code>optional double lat = 24;</code>
      */
-    @java.lang.Override
     public double getLat() {
       return lat_;
     }
@@ -6535,10 +6030,8 @@
      *高度(单位:米)
      * </pre>
      *
-     * <code>float height = 25;</code>
-     * @return The height.
+     * <code>optional float height = 25;</code>
      */
-    @java.lang.Override
     public float getHeight() {
       return height_;
     }
@@ -6550,10 +6043,8 @@
      *时间戳(单位:秒)
      * </pre>
      *
-     * <code>uint32 timestamp = 26;</code>
-     * @return The timestamp.
+     * <code>optional uint32 timestamp = 26;</code>
      */
-    @java.lang.Override
     public int getTimestamp() {
       return timestamp_;
     }
@@ -6565,10 +6056,8 @@
      *1=线缆故障,2=OSDK未激活,3=正常,4=云盒固件更新
      * </pre>
      *
-     * <code>uint32 boxstate = 27;</code>
-     * @return The boxstate.
+     * <code>optional uint32 boxstate = 27;</code>
      */
-    @java.lang.Override
     public int getBoxstate() {
       return boxstate_;
     }
@@ -6580,10 +6069,8 @@
      *运营商
      * </pre>
      *
-     * <code>string isp = 28;</code>
-     * @return The isp.
+     * <code>optional string isp = 28;</code>
      */
-    @java.lang.Override
     public java.lang.String getIsp() {
       java.lang.Object ref = isp_;
       if (ref instanceof java.lang.String) {
@@ -6601,10 +6088,8 @@
      *运营商
      * </pre>
      *
-     * <code>string isp = 28;</code>
-     * @return The bytes for isp.
+     * <code>optional string isp = 28;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getIspBytes() {
       java.lang.Object ref = isp_;
@@ -6626,10 +6111,8 @@
      *模组芯片温度(单位:摄氏度)
      * </pre>
      *
-     * <code>uint32 tempMax = 29;</code>
-     * @return The tempMax.
+     * <code>optional uint32 tempMax = 29;</code>
      */
-    @java.lang.Override
     public int getTempMax() {
       return tempMax_;
     }
@@ -6641,10 +6124,8 @@
      *prx路径的rsrp值
      * </pre>
      *
-     * <code>string prx_rsrp = 30;</code>
-     * @return The prxRsrp.
+     * <code>optional string prx_rsrp = 30;</code>
      */
-    @java.lang.Override
     public java.lang.String getPrxRsrp() {
       java.lang.Object ref = prxRsrp_;
       if (ref instanceof java.lang.String) {
@@ -6662,10 +6143,8 @@
      *prx路径的rsrp值
      * </pre>
      *
-     * <code>string prx_rsrp = 30;</code>
-     * @return The bytes for prxRsrp.
+     * <code>optional string prx_rsrp = 30;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getPrxRsrpBytes() {
       java.lang.Object ref = prxRsrp_;
@@ -6687,10 +6166,8 @@
      *drx路径的rsrp值
      * </pre>
      *
-     * <code>string drx_rsrp = 31;</code>
-     * @return The drxRsrp.
+     * <code>optional string drx_rsrp = 31;</code>
      */
-    @java.lang.Override
     public java.lang.String getDrxRsrp() {
       java.lang.Object ref = drxRsrp_;
       if (ref instanceof java.lang.String) {
@@ -6708,10 +6185,8 @@
      *drx路径的rsrp值
      * </pre>
      *
-     * <code>string drx_rsrp = 31;</code>
-     * @return The bytes for drxRsrp.
+     * <code>optional string drx_rsrp = 31;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getDrxRsrpBytes() {
       java.lang.Object ref = drxRsrp_;
@@ -6733,10 +6208,8 @@
      *rx2路径的rsrp值
      * </pre>
      *
-     * <code>string rx2_rsrp = 32;</code>
-     * @return The rx2Rsrp.
+     * <code>optional string rx2_rsrp = 32;</code>
      */
-    @java.lang.Override
     public java.lang.String getRx2Rsrp() {
       java.lang.Object ref = rx2Rsrp_;
       if (ref instanceof java.lang.String) {
@@ -6754,10 +6227,8 @@
      *rx2路径的rsrp值
      * </pre>
      *
-     * <code>string rx2_rsrp = 32;</code>
-     * @return The bytes for rx2Rsrp.
+     * <code>optional string rx2_rsrp = 32;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getRx2RsrpBytes() {
       java.lang.Object ref = rx2Rsrp_;
@@ -6779,10 +6250,8 @@
      *rx3路径的rsrp值
      * </pre>
      *
-     * <code>string rx3_rsrp = 33;</code>
-     * @return The rx3Rsrp.
+     * <code>optional string rx3_rsrp = 33;</code>
      */
-    @java.lang.Override
     public java.lang.String getRx3Rsrp() {
       java.lang.Object ref = rx3Rsrp_;
       if (ref instanceof java.lang.String) {
@@ -6800,10 +6269,8 @@
      *rx3路径的rsrp值
      * </pre>
      *
-     * <code>string rx3_rsrp = 33;</code>
-     * @return The bytes for rx3Rsrp.
+     * <code>optional string rx3_rsrp = 33;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getRx3RsrpBytes() {
       java.lang.Object ref = rx3Rsrp_;
@@ -6825,10 +6292,8 @@
      *云盒编号
      * </pre>
      *
-     * <code>string box_sn = 34;</code>
-     * @return The boxSn.
+     * <code>optional string box_sn = 34;</code>
      */
-    @java.lang.Override
     public java.lang.String getBoxSn() {
       java.lang.Object ref = boxSn_;
       if (ref instanceof java.lang.String) {
@@ -6846,10 +6311,8 @@
      *云盒编号
      * </pre>
      *
-     * <code>string box_sn = 34;</code>
-     * @return The bytes for boxSn.
+     * <code>optional string box_sn = 34;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getBoxSnBytes() {
       java.lang.Object ref = boxSn_;
@@ -6865,7 +6328,6 @@
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -6875,82 +6337,81 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mode_)) {
+      if (!getModeBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 1, mode_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mcc_)) {
+      if (!getMccBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 2, mcc_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mnc_)) {
+      if (!getMncBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 3, mnc_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cellid_)) {
+      if (!getCellidBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 4, cellid_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(pcid_)) {
+      if (!getPcidBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 5, pcid_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tac_)) {
+      if (!getTacBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 6, tac_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(arfcn_)) {
+      if (!getArfcnBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 7, arfcn_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(band_)) {
+      if (!getBandBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 8, band_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nrDlBandwidth_)) {
+      if (!getNrDlBandwidthBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 9, nrDlBandwidth_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(rsrp_)) {
+      if (!getRsrpBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 10, rsrp_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(rsrq_)) {
+      if (!getRsrqBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 11, rsrq_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sinr_)) {
+      if (!getSinrBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 12, sinr_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(txPower_)) {
+      if (!getTxPowerBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 13, txPower_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srxlev_)) {
+      if (!getSrxlevBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 14, srxlev_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cqi_)) {
+      if (!getCqiBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 15, cqi_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(earfcn_)) {
+      if (!getEarfcnBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 16, earfcn_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(freqBandInd_)) {
+      if (!getFreqBandIndBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 17, freqBandInd_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ulBandwidth_)) {
+      if (!getUlBandwidthBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 18, ulBandwidth_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dlBandwidth_)) {
+      if (!getDlBandwidthBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 19, dlBandwidth_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(isTdd_)) {
+      if (!getIsTddBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 20, isTdd_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(rssi_)) {
+      if (!getRssiBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 21, rssi_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(duplexMode_)) {
+      if (!getDuplexModeBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 22, duplexMode_);
       }
-      if (java.lang.Double.doubleToRawLongBits(lng_) != 0) {
+      if (lng_ != 0D) {
         output.writeDouble(23, lng_);
       }
-      if (java.lang.Double.doubleToRawLongBits(lat_) != 0) {
+      if (lat_ != 0D) {
         output.writeDouble(24, lat_);
       }
-      if (java.lang.Float.floatToRawIntBits(height_) != 0) {
+      if (height_ != 0F) {
         output.writeFloat(25, height_);
       }
       if (timestamp_ != 0) {
@@ -6959,111 +6420,109 @@
       if (boxstate_ != 0) {
         output.writeUInt32(27, boxstate_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(isp_)) {
+      if (!getIspBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 28, isp_);
       }
       if (tempMax_ != 0) {
         output.writeUInt32(29, tempMax_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(prxRsrp_)) {
+      if (!getPrxRsrpBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 30, prxRsrp_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(drxRsrp_)) {
+      if (!getDrxRsrpBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 31, drxRsrp_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(rx2Rsrp_)) {
+      if (!getRx2RsrpBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 32, rx2Rsrp_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(rx3Rsrp_)) {
+      if (!getRx3RsrpBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 33, rx3Rsrp_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(boxSn_)) {
+      if (!getBoxSnBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 34, boxSn_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mode_)) {
+      if (!getModeBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, mode_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mcc_)) {
+      if (!getMccBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, mcc_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mnc_)) {
+      if (!getMncBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, mnc_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cellid_)) {
+      if (!getCellidBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, cellid_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(pcid_)) {
+      if (!getPcidBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, pcid_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tac_)) {
+      if (!getTacBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, tac_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(arfcn_)) {
+      if (!getArfcnBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, arfcn_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(band_)) {
+      if (!getBandBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, band_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nrDlBandwidth_)) {
+      if (!getNrDlBandwidthBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, nrDlBandwidth_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(rsrp_)) {
+      if (!getRsrpBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, rsrp_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(rsrq_)) {
+      if (!getRsrqBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, rsrq_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sinr_)) {
+      if (!getSinrBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, sinr_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(txPower_)) {
+      if (!getTxPowerBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, txPower_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(srxlev_)) {
+      if (!getSrxlevBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, srxlev_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cqi_)) {
+      if (!getCqiBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, cqi_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(earfcn_)) {
+      if (!getEarfcnBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(16, earfcn_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(freqBandInd_)) {
+      if (!getFreqBandIndBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(17, freqBandInd_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(ulBandwidth_)) {
+      if (!getUlBandwidthBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(18, ulBandwidth_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(dlBandwidth_)) {
+      if (!getDlBandwidthBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(19, dlBandwidth_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(isTdd_)) {
+      if (!getIsTddBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(20, isTdd_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(rssi_)) {
+      if (!getRssiBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(21, rssi_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(duplexMode_)) {
+      if (!getDuplexModeBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(22, duplexMode_);
       }
-      if (java.lang.Double.doubleToRawLongBits(lng_) != 0) {
+      if (lng_ != 0D) {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(23, lng_);
       }
-      if (java.lang.Double.doubleToRawLongBits(lat_) != 0) {
+      if (lat_ != 0D) {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(24, lat_);
       }
-      if (java.lang.Float.floatToRawIntBits(height_) != 0) {
+      if (height_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(25, height_);
       }
@@ -7075,33 +6534,33 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(27, boxstate_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(isp_)) {
+      if (!getIspBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(28, isp_);
       }
       if (tempMax_ != 0) {
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(29, tempMax_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(prxRsrp_)) {
+      if (!getPrxRsrpBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(30, prxRsrp_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(drxRsrp_)) {
+      if (!getDrxRsrpBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(31, drxRsrp_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(rx2Rsrp_)) {
+      if (!getRx2RsrpBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(32, rx2Rsrp_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(rx3Rsrp_)) {
+      if (!getRx3RsrpBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(33, rx3Rsrp_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(boxSn_)) {
+      if (!getBoxSnBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(34, boxSn_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -7112,79 +6571,82 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo) obj;
 
-      if (!getMode()
-          .equals(other.getMode())) return false;
-      if (!getMcc()
-          .equals(other.getMcc())) return false;
-      if (!getMnc()
-          .equals(other.getMnc())) return false;
-      if (!getCellid()
-          .equals(other.getCellid())) return false;
-      if (!getPcid()
-          .equals(other.getPcid())) return false;
-      if (!getTac()
-          .equals(other.getTac())) return false;
-      if (!getArfcn()
-          .equals(other.getArfcn())) return false;
-      if (!getBand()
-          .equals(other.getBand())) return false;
-      if (!getNrDlBandwidth()
-          .equals(other.getNrDlBandwidth())) return false;
-      if (!getRsrp()
-          .equals(other.getRsrp())) return false;
-      if (!getRsrq()
-          .equals(other.getRsrq())) return false;
-      if (!getSinr()
-          .equals(other.getSinr())) return false;
-      if (!getTxPower()
-          .equals(other.getTxPower())) return false;
-      if (!getSrxlev()
-          .equals(other.getSrxlev())) return false;
-      if (!getCqi()
-          .equals(other.getCqi())) return false;
-      if (!getEarfcn()
-          .equals(other.getEarfcn())) return false;
-      if (!getFreqBandInd()
-          .equals(other.getFreqBandInd())) return false;
-      if (!getUlBandwidth()
-          .equals(other.getUlBandwidth())) return false;
-      if (!getDlBandwidth()
-          .equals(other.getDlBandwidth())) return false;
-      if (!getIsTdd()
-          .equals(other.getIsTdd())) return false;
-      if (!getRssi()
-          .equals(other.getRssi())) return false;
-      if (!getDuplexMode()
-          .equals(other.getDuplexMode())) return false;
-      if (java.lang.Double.doubleToLongBits(getLng())
-          != java.lang.Double.doubleToLongBits(
-              other.getLng())) return false;
-      if (java.lang.Double.doubleToLongBits(getLat())
-          != java.lang.Double.doubleToLongBits(
-              other.getLat())) return false;
-      if (java.lang.Float.floatToIntBits(getHeight())
-          != java.lang.Float.floatToIntBits(
-              other.getHeight())) return false;
-      if (getTimestamp()
-          != other.getTimestamp()) return false;
-      if (getBoxstate()
-          != other.getBoxstate()) return false;
-      if (!getIsp()
-          .equals(other.getIsp())) return false;
-      if (getTempMax()
-          != other.getTempMax()) return false;
-      if (!getPrxRsrp()
-          .equals(other.getPrxRsrp())) return false;
-      if (!getDrxRsrp()
-          .equals(other.getDrxRsrp())) return false;
-      if (!getRx2Rsrp()
-          .equals(other.getRx2Rsrp())) return false;
-      if (!getRx3Rsrp()
-          .equals(other.getRx3Rsrp())) return false;
-      if (!getBoxSn()
-          .equals(other.getBoxSn())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && getMode()
+          .equals(other.getMode());
+      result = result && getMcc()
+          .equals(other.getMcc());
+      result = result && getMnc()
+          .equals(other.getMnc());
+      result = result && getCellid()
+          .equals(other.getCellid());
+      result = result && getPcid()
+          .equals(other.getPcid());
+      result = result && getTac()
+          .equals(other.getTac());
+      result = result && getArfcn()
+          .equals(other.getArfcn());
+      result = result && getBand()
+          .equals(other.getBand());
+      result = result && getNrDlBandwidth()
+          .equals(other.getNrDlBandwidth());
+      result = result && getRsrp()
+          .equals(other.getRsrp());
+      result = result && getRsrq()
+          .equals(other.getRsrq());
+      result = result && getSinr()
+          .equals(other.getSinr());
+      result = result && getTxPower()
+          .equals(other.getTxPower());
+      result = result && getSrxlev()
+          .equals(other.getSrxlev());
+      result = result && getCqi()
+          .equals(other.getCqi());
+      result = result && getEarfcn()
+          .equals(other.getEarfcn());
+      result = result && getFreqBandInd()
+          .equals(other.getFreqBandInd());
+      result = result && getUlBandwidth()
+          .equals(other.getUlBandwidth());
+      result = result && getDlBandwidth()
+          .equals(other.getDlBandwidth());
+      result = result && getIsTdd()
+          .equals(other.getIsTdd());
+      result = result && getRssi()
+          .equals(other.getRssi());
+      result = result && getDuplexMode()
+          .equals(other.getDuplexMode());
+      result = result && (
+          java.lang.Double.doubleToLongBits(getLng())
+          == java.lang.Double.doubleToLongBits(
+              other.getLng()));
+      result = result && (
+          java.lang.Double.doubleToLongBits(getLat())
+          == java.lang.Double.doubleToLongBits(
+              other.getLat()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getHeight())
+          == java.lang.Float.floatToIntBits(
+              other.getHeight()));
+      result = result && (getTimestamp()
+          == other.getTimestamp());
+      result = result && (getBoxstate()
+          == other.getBoxstate());
+      result = result && getIsp()
+          .equals(other.getIsp());
+      result = result && (getTempMax()
+          == other.getTempMax());
+      result = result && getPrxRsrp()
+          .equals(other.getPrxRsrp());
+      result = result && getDrxRsrp()
+          .equals(other.getDrxRsrp());
+      result = result && getRx2Rsrp()
+          .equals(other.getRx2Rsrp());
+      result = result && getRx3Rsrp()
+          .equals(other.getRx3Rsrp());
+      result = result && getBoxSn()
+          .equals(other.getBoxSn());
+      return result;
     }
 
     @java.lang.Override
@@ -7193,7 +6655,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + MODE_FIELD_NUMBER;
       hash = (53 * hash) + getMode().hashCode();
       hash = (37 * hash) + MCC_FIELD_NUMBER;
@@ -7271,17 +6733,6 @@
     }
 
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
@@ -7340,7 +6791,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -7348,7 +6798,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -7376,7 +6825,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SignalInfo_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SignalInfo_fieldAccessorTable
@@ -7399,7 +6847,6 @@
                 .alwaysUseFieldBuilders) {
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         mode_ = "";
@@ -7473,18 +6920,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SignalInfo_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo result = buildPartial();
         if (!result.isInitialized()) {
@@ -7493,7 +6937,6 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo(this);
         result.mode_ = mode_;
@@ -7534,39 +6977,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo)other);
@@ -7708,17 +7144,14 @@
           boxSn_ = other.boxSn_;
           onChanged();
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -7743,8 +7176,7 @@
        *入网模式:NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mode = 1;</code>
-       * @return The mode.
+       * <code>optional string mode = 1;</code>
        */
       public java.lang.String getMode() {
         java.lang.Object ref = mode_;
@@ -7763,8 +7195,7 @@
        *入网模式:NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mode = 1;</code>
-       * @return The bytes for mode.
+       * <code>optional string mode = 1;</code>
        */
       public com.google.protobuf.ByteString
           getModeBytes() {
@@ -7784,9 +7215,7 @@
        *入网模式:NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mode = 1;</code>
-       * @param value The mode to set.
-       * @return This builder for chaining.
+       * <code>optional string mode = 1;</code>
        */
       public Builder setMode(
           java.lang.String value) {
@@ -7803,8 +7232,7 @@
        *入网模式:NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mode = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional string mode = 1;</code>
        */
       public Builder clearMode() {
         
@@ -7817,9 +7245,7 @@
        *入网模式:NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mode = 1;</code>
-       * @param value The bytes for mode to set.
-       * @return This builder for chaining.
+       * <code>optional string mode = 1;</code>
        */
       public Builder setModeBytes(
           com.google.protobuf.ByteString value) {
@@ -7839,8 +7265,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mcc = 2;</code>
-       * @return The mcc.
+       * <code>optional string mcc = 2;</code>
        */
       public java.lang.String getMcc() {
         java.lang.Object ref = mcc_;
@@ -7859,8 +7284,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mcc = 2;</code>
-       * @return The bytes for mcc.
+       * <code>optional string mcc = 2;</code>
        */
       public com.google.protobuf.ByteString
           getMccBytes() {
@@ -7880,9 +7304,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mcc = 2;</code>
-       * @param value The mcc to set.
-       * @return This builder for chaining.
+       * <code>optional string mcc = 2;</code>
        */
       public Builder setMcc(
           java.lang.String value) {
@@ -7899,8 +7321,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mcc = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional string mcc = 2;</code>
        */
       public Builder clearMcc() {
         
@@ -7913,9 +7334,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mcc = 2;</code>
-       * @param value The bytes for mcc to set.
-       * @return This builder for chaining.
+       * <code>optional string mcc = 2;</code>
        */
       public Builder setMccBytes(
           com.google.protobuf.ByteString value) {
@@ -7935,8 +7354,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mnc = 3;</code>
-       * @return The mnc.
+       * <code>optional string mnc = 3;</code>
        */
       public java.lang.String getMnc() {
         java.lang.Object ref = mnc_;
@@ -7955,8 +7373,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mnc = 3;</code>
-       * @return The bytes for mnc.
+       * <code>optional string mnc = 3;</code>
        */
       public com.google.protobuf.ByteString
           getMncBytes() {
@@ -7976,9 +7393,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mnc = 3;</code>
-       * @param value The mnc to set.
-       * @return This builder for chaining.
+       * <code>optional string mnc = 3;</code>
        */
       public Builder setMnc(
           java.lang.String value) {
@@ -7995,8 +7410,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mnc = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional string mnc = 3;</code>
        */
       public Builder clearMnc() {
         
@@ -8009,9 +7423,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string mnc = 3;</code>
-       * @param value The bytes for mnc to set.
-       * @return This builder for chaining.
+       * <code>optional string mnc = 3;</code>
        */
       public Builder setMncBytes(
           com.google.protobuf.ByteString value) {
@@ -8031,8 +7443,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string cellid = 4;</code>
-       * @return The cellid.
+       * <code>optional string cellid = 4;</code>
        */
       public java.lang.String getCellid() {
         java.lang.Object ref = cellid_;
@@ -8051,8 +7462,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string cellid = 4;</code>
-       * @return The bytes for cellid.
+       * <code>optional string cellid = 4;</code>
        */
       public com.google.protobuf.ByteString
           getCellidBytes() {
@@ -8072,9 +7482,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string cellid = 4;</code>
-       * @param value The cellid to set.
-       * @return This builder for chaining.
+       * <code>optional string cellid = 4;</code>
        */
       public Builder setCellid(
           java.lang.String value) {
@@ -8091,8 +7499,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string cellid = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional string cellid = 4;</code>
        */
       public Builder clearCellid() {
         
@@ -8105,9 +7512,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string cellid = 4;</code>
-       * @param value The bytes for cellid to set.
-       * @return This builder for chaining.
+       * <code>optional string cellid = 4;</code>
        */
       public Builder setCellidBytes(
           com.google.protobuf.ByteString value) {
@@ -8127,8 +7532,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string pcid = 5;</code>
-       * @return The pcid.
+       * <code>optional string pcid = 5;</code>
        */
       public java.lang.String getPcid() {
         java.lang.Object ref = pcid_;
@@ -8147,8 +7551,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string pcid = 5;</code>
-       * @return The bytes for pcid.
+       * <code>optional string pcid = 5;</code>
        */
       public com.google.protobuf.ByteString
           getPcidBytes() {
@@ -8168,9 +7571,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string pcid = 5;</code>
-       * @param value The pcid to set.
-       * @return This builder for chaining.
+       * <code>optional string pcid = 5;</code>
        */
       public Builder setPcid(
           java.lang.String value) {
@@ -8187,8 +7588,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string pcid = 5;</code>
-       * @return This builder for chaining.
+       * <code>optional string pcid = 5;</code>
        */
       public Builder clearPcid() {
         
@@ -8201,9 +7601,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string pcid = 5;</code>
-       * @param value The bytes for pcid to set.
-       * @return This builder for chaining.
+       * <code>optional string pcid = 5;</code>
        */
       public Builder setPcidBytes(
           com.google.protobuf.ByteString value) {
@@ -8223,8 +7621,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string tac = 6;</code>
-       * @return The tac.
+       * <code>optional string tac = 6;</code>
        */
       public java.lang.String getTac() {
         java.lang.Object ref = tac_;
@@ -8243,8 +7640,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string tac = 6;</code>
-       * @return The bytes for tac.
+       * <code>optional string tac = 6;</code>
        */
       public com.google.protobuf.ByteString
           getTacBytes() {
@@ -8264,9 +7660,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string tac = 6;</code>
-       * @param value The tac to set.
-       * @return This builder for chaining.
+       * <code>optional string tac = 6;</code>
        */
       public Builder setTac(
           java.lang.String value) {
@@ -8283,8 +7677,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string tac = 6;</code>
-       * @return This builder for chaining.
+       * <code>optional string tac = 6;</code>
        */
       public Builder clearTac() {
         
@@ -8297,9 +7690,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string tac = 6;</code>
-       * @param value The bytes for tac to set.
-       * @return This builder for chaining.
+       * <code>optional string tac = 6;</code>
        */
       public Builder setTacBytes(
           com.google.protobuf.ByteString value) {
@@ -8319,8 +7710,7 @@
        *NR5G-SA,NR5G-NSA
        * </pre>
        *
-       * <code>string arfcn = 7;</code>
-       * @return The arfcn.
+       * <code>optional string arfcn = 7;</code>
        */
       public java.lang.String getArfcn() {
         java.lang.Object ref = arfcn_;
@@ -8339,8 +7729,7 @@
        *NR5G-SA,NR5G-NSA
        * </pre>
        *
-       * <code>string arfcn = 7;</code>
-       * @return The bytes for arfcn.
+       * <code>optional string arfcn = 7;</code>
        */
       public com.google.protobuf.ByteString
           getArfcnBytes() {
@@ -8360,9 +7749,7 @@
        *NR5G-SA,NR5G-NSA
        * </pre>
        *
-       * <code>string arfcn = 7;</code>
-       * @param value The arfcn to set.
-       * @return This builder for chaining.
+       * <code>optional string arfcn = 7;</code>
        */
       public Builder setArfcn(
           java.lang.String value) {
@@ -8379,8 +7766,7 @@
        *NR5G-SA,NR5G-NSA
        * </pre>
        *
-       * <code>string arfcn = 7;</code>
-       * @return This builder for chaining.
+       * <code>optional string arfcn = 7;</code>
        */
       public Builder clearArfcn() {
         
@@ -8393,9 +7779,7 @@
        *NR5G-SA,NR5G-NSA
        * </pre>
        *
-       * <code>string arfcn = 7;</code>
-       * @param value The bytes for arfcn to set.
-       * @return This builder for chaining.
+       * <code>optional string arfcn = 7;</code>
        */
       public Builder setArfcnBytes(
           com.google.protobuf.ByteString value) {
@@ -8415,8 +7799,7 @@
        *NR5G-SA,NR5G-NSA
        * </pre>
        *
-       * <code>string band = 8;</code>
-       * @return The band.
+       * <code>optional string band = 8;</code>
        */
       public java.lang.String getBand() {
         java.lang.Object ref = band_;
@@ -8435,8 +7818,7 @@
        *NR5G-SA,NR5G-NSA
        * </pre>
        *
-       * <code>string band = 8;</code>
-       * @return The bytes for band.
+       * <code>optional string band = 8;</code>
        */
       public com.google.protobuf.ByteString
           getBandBytes() {
@@ -8456,9 +7838,7 @@
        *NR5G-SA,NR5G-NSA
        * </pre>
        *
-       * <code>string band = 8;</code>
-       * @param value The band to set.
-       * @return This builder for chaining.
+       * <code>optional string band = 8;</code>
        */
       public Builder setBand(
           java.lang.String value) {
@@ -8475,8 +7855,7 @@
        *NR5G-SA,NR5G-NSA
        * </pre>
        *
-       * <code>string band = 8;</code>
-       * @return This builder for chaining.
+       * <code>optional string band = 8;</code>
        */
       public Builder clearBand() {
         
@@ -8489,9 +7868,7 @@
        *NR5G-SA,NR5G-NSA
        * </pre>
        *
-       * <code>string band = 8;</code>
-       * @param value The bytes for band to set.
-       * @return This builder for chaining.
+       * <code>optional string band = 8;</code>
        */
       public Builder setBandBytes(
           com.google.protobuf.ByteString value) {
@@ -8511,8 +7888,7 @@
        *NR5G-SA
        * </pre>
        *
-       * <code>string nr_dl_bandwidth = 9;</code>
-       * @return The nrDlBandwidth.
+       * <code>optional string nr_dl_bandwidth = 9;</code>
        */
       public java.lang.String getNrDlBandwidth() {
         java.lang.Object ref = nrDlBandwidth_;
@@ -8531,8 +7907,7 @@
        *NR5G-SA
        * </pre>
        *
-       * <code>string nr_dl_bandwidth = 9;</code>
-       * @return The bytes for nrDlBandwidth.
+       * <code>optional string nr_dl_bandwidth = 9;</code>
        */
       public com.google.protobuf.ByteString
           getNrDlBandwidthBytes() {
@@ -8552,9 +7927,7 @@
        *NR5G-SA
        * </pre>
        *
-       * <code>string nr_dl_bandwidth = 9;</code>
-       * @param value The nrDlBandwidth to set.
-       * @return This builder for chaining.
+       * <code>optional string nr_dl_bandwidth = 9;</code>
        */
       public Builder setNrDlBandwidth(
           java.lang.String value) {
@@ -8571,8 +7944,7 @@
        *NR5G-SA
        * </pre>
        *
-       * <code>string nr_dl_bandwidth = 9;</code>
-       * @return This builder for chaining.
+       * <code>optional string nr_dl_bandwidth = 9;</code>
        */
       public Builder clearNrDlBandwidth() {
         
@@ -8585,9 +7957,7 @@
        *NR5G-SA
        * </pre>
        *
-       * <code>string nr_dl_bandwidth = 9;</code>
-       * @param value The bytes for nrDlBandwidth to set.
-       * @return This builder for chaining.
+       * <code>optional string nr_dl_bandwidth = 9;</code>
        */
       public Builder setNrDlBandwidthBytes(
           com.google.protobuf.ByteString value) {
@@ -8607,8 +7977,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string rsrp = 10;</code>
-       * @return The rsrp.
+       * <code>optional string rsrp = 10;</code>
        */
       public java.lang.String getRsrp() {
         java.lang.Object ref = rsrp_;
@@ -8627,8 +7996,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string rsrp = 10;</code>
-       * @return The bytes for rsrp.
+       * <code>optional string rsrp = 10;</code>
        */
       public com.google.protobuf.ByteString
           getRsrpBytes() {
@@ -8648,9 +8016,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string rsrp = 10;</code>
-       * @param value The rsrp to set.
-       * @return This builder for chaining.
+       * <code>optional string rsrp = 10;</code>
        */
       public Builder setRsrp(
           java.lang.String value) {
@@ -8667,8 +8033,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string rsrp = 10;</code>
-       * @return This builder for chaining.
+       * <code>optional string rsrp = 10;</code>
        */
       public Builder clearRsrp() {
         
@@ -8681,9 +8046,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string rsrp = 10;</code>
-       * @param value The bytes for rsrp to set.
-       * @return This builder for chaining.
+       * <code>optional string rsrp = 10;</code>
        */
       public Builder setRsrpBytes(
           com.google.protobuf.ByteString value) {
@@ -8703,8 +8066,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string rsrq = 11;</code>
-       * @return The rsrq.
+       * <code>optional string rsrq = 11;</code>
        */
       public java.lang.String getRsrq() {
         java.lang.Object ref = rsrq_;
@@ -8723,8 +8085,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string rsrq = 11;</code>
-       * @return The bytes for rsrq.
+       * <code>optional string rsrq = 11;</code>
        */
       public com.google.protobuf.ByteString
           getRsrqBytes() {
@@ -8744,9 +8105,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string rsrq = 11;</code>
-       * @param value The rsrq to set.
-       * @return This builder for chaining.
+       * <code>optional string rsrq = 11;</code>
        */
       public Builder setRsrq(
           java.lang.String value) {
@@ -8763,8 +8122,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string rsrq = 11;</code>
-       * @return This builder for chaining.
+       * <code>optional string rsrq = 11;</code>
        */
       public Builder clearRsrq() {
         
@@ -8777,9 +8135,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string rsrq = 11;</code>
-       * @param value The bytes for rsrq to set.
-       * @return This builder for chaining.
+       * <code>optional string rsrq = 11;</code>
        */
       public Builder setRsrqBytes(
           com.google.protobuf.ByteString value) {
@@ -8799,8 +8155,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string sinr = 12;</code>
-       * @return The sinr.
+       * <code>optional string sinr = 12;</code>
        */
       public java.lang.String getSinr() {
         java.lang.Object ref = sinr_;
@@ -8819,8 +8174,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string sinr = 12;</code>
-       * @return The bytes for sinr.
+       * <code>optional string sinr = 12;</code>
        */
       public com.google.protobuf.ByteString
           getSinrBytes() {
@@ -8840,9 +8194,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string sinr = 12;</code>
-       * @param value The sinr to set.
-       * @return This builder for chaining.
+       * <code>optional string sinr = 12;</code>
        */
       public Builder setSinr(
           java.lang.String value) {
@@ -8859,8 +8211,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string sinr = 12;</code>
-       * @return This builder for chaining.
+       * <code>optional string sinr = 12;</code>
        */
       public Builder clearSinr() {
         
@@ -8873,9 +8224,7 @@
        *NR5G-SA,NR5G-NSA,LTE
        * </pre>
        *
-       * <code>string sinr = 12;</code>
-       * @param value The bytes for sinr to set.
-       * @return This builder for chaining.
+       * <code>optional string sinr = 12;</code>
        */
       public Builder setSinrBytes(
           com.google.protobuf.ByteString value) {
@@ -8895,8 +8244,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string tx_power = 13;</code>
-       * @return The txPower.
+       * <code>optional string tx_power = 13;</code>
        */
       public java.lang.String getTxPower() {
         java.lang.Object ref = txPower_;
@@ -8915,8 +8263,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string tx_power = 13;</code>
-       * @return The bytes for txPower.
+       * <code>optional string tx_power = 13;</code>
        */
       public com.google.protobuf.ByteString
           getTxPowerBytes() {
@@ -8936,9 +8283,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string tx_power = 13;</code>
-       * @param value The txPower to set.
-       * @return This builder for chaining.
+       * <code>optional string tx_power = 13;</code>
        */
       public Builder setTxPower(
           java.lang.String value) {
@@ -8955,8 +8300,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string tx_power = 13;</code>
-       * @return This builder for chaining.
+       * <code>optional string tx_power = 13;</code>
        */
       public Builder clearTxPower() {
         
@@ -8969,9 +8313,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string tx_power = 13;</code>
-       * @param value The bytes for txPower to set.
-       * @return This builder for chaining.
+       * <code>optional string tx_power = 13;</code>
        */
       public Builder setTxPowerBytes(
           com.google.protobuf.ByteString value) {
@@ -8991,8 +8333,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string srxlev = 14;</code>
-       * @return The srxlev.
+       * <code>optional string srxlev = 14;</code>
        */
       public java.lang.String getSrxlev() {
         java.lang.Object ref = srxlev_;
@@ -9011,8 +8352,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string srxlev = 14;</code>
-       * @return The bytes for srxlev.
+       * <code>optional string srxlev = 14;</code>
        */
       public com.google.protobuf.ByteString
           getSrxlevBytes() {
@@ -9032,9 +8372,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string srxlev = 14;</code>
-       * @param value The srxlev to set.
-       * @return This builder for chaining.
+       * <code>optional string srxlev = 14;</code>
        */
       public Builder setSrxlev(
           java.lang.String value) {
@@ -9051,8 +8389,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string srxlev = 14;</code>
-       * @return This builder for chaining.
+       * <code>optional string srxlev = 14;</code>
        */
       public Builder clearSrxlev() {
         
@@ -9065,9 +8402,7 @@
        *NR5G-SA,LTE
        * </pre>
        *
-       * <code>string srxlev = 14;</code>
-       * @param value The bytes for srxlev to set.
-       * @return This builder for chaining.
+       * <code>optional string srxlev = 14;</code>
        */
       public Builder setSrxlevBytes(
           com.google.protobuf.ByteString value) {
@@ -9087,8 +8422,7 @@
        *LTE
        * </pre>
        *
-       * <code>string cqi = 15;</code>
-       * @return The cqi.
+       * <code>optional string cqi = 15;</code>
        */
       public java.lang.String getCqi() {
         java.lang.Object ref = cqi_;
@@ -9107,8 +8441,7 @@
        *LTE
        * </pre>
        *
-       * <code>string cqi = 15;</code>
-       * @return The bytes for cqi.
+       * <code>optional string cqi = 15;</code>
        */
       public com.google.protobuf.ByteString
           getCqiBytes() {
@@ -9128,9 +8461,7 @@
        *LTE
        * </pre>
        *
-       * <code>string cqi = 15;</code>
-       * @param value The cqi to set.
-       * @return This builder for chaining.
+       * <code>optional string cqi = 15;</code>
        */
       public Builder setCqi(
           java.lang.String value) {
@@ -9147,8 +8478,7 @@
        *LTE
        * </pre>
        *
-       * <code>string cqi = 15;</code>
-       * @return This builder for chaining.
+       * <code>optional string cqi = 15;</code>
        */
       public Builder clearCqi() {
         
@@ -9161,9 +8491,7 @@
        *LTE
        * </pre>
        *
-       * <code>string cqi = 15;</code>
-       * @param value The bytes for cqi to set.
-       * @return This builder for chaining.
+       * <code>optional string cqi = 15;</code>
        */
       public Builder setCqiBytes(
           com.google.protobuf.ByteString value) {
@@ -9183,8 +8511,7 @@
        *LTE
        * </pre>
        *
-       * <code>string earfcn = 16;</code>
-       * @return The earfcn.
+       * <code>optional string earfcn = 16;</code>
        */
       public java.lang.String getEarfcn() {
         java.lang.Object ref = earfcn_;
@@ -9203,8 +8530,7 @@
        *LTE
        * </pre>
        *
-       * <code>string earfcn = 16;</code>
-       * @return The bytes for earfcn.
+       * <code>optional string earfcn = 16;</code>
        */
       public com.google.protobuf.ByteString
           getEarfcnBytes() {
@@ -9224,9 +8550,7 @@
        *LTE
        * </pre>
        *
-       * <code>string earfcn = 16;</code>
-       * @param value The earfcn to set.
-       * @return This builder for chaining.
+       * <code>optional string earfcn = 16;</code>
        */
       public Builder setEarfcn(
           java.lang.String value) {
@@ -9243,8 +8567,7 @@
        *LTE
        * </pre>
        *
-       * <code>string earfcn = 16;</code>
-       * @return This builder for chaining.
+       * <code>optional string earfcn = 16;</code>
        */
       public Builder clearEarfcn() {
         
@@ -9257,9 +8580,7 @@
        *LTE
        * </pre>
        *
-       * <code>string earfcn = 16;</code>
-       * @param value The bytes for earfcn to set.
-       * @return This builder for chaining.
+       * <code>optional string earfcn = 16;</code>
        */
       public Builder setEarfcnBytes(
           com.google.protobuf.ByteString value) {
@@ -9279,8 +8600,7 @@
        *LTE
        * </pre>
        *
-       * <code>string freq_band_ind = 17;</code>
-       * @return The freqBandInd.
+       * <code>optional string freq_band_ind = 17;</code>
        */
       public java.lang.String getFreqBandInd() {
         java.lang.Object ref = freqBandInd_;
@@ -9299,8 +8619,7 @@
        *LTE
        * </pre>
        *
-       * <code>string freq_band_ind = 17;</code>
-       * @return The bytes for freqBandInd.
+       * <code>optional string freq_band_ind = 17;</code>
        */
       public com.google.protobuf.ByteString
           getFreqBandIndBytes() {
@@ -9320,9 +8639,7 @@
        *LTE
        * </pre>
        *
-       * <code>string freq_band_ind = 17;</code>
-       * @param value The freqBandInd to set.
-       * @return This builder for chaining.
+       * <code>optional string freq_band_ind = 17;</code>
        */
       public Builder setFreqBandInd(
           java.lang.String value) {
@@ -9339,8 +8656,7 @@
        *LTE
        * </pre>
        *
-       * <code>string freq_band_ind = 17;</code>
-       * @return This builder for chaining.
+       * <code>optional string freq_band_ind = 17;</code>
        */
       public Builder clearFreqBandInd() {
         
@@ -9353,9 +8669,7 @@
        *LTE
        * </pre>
        *
-       * <code>string freq_band_ind = 17;</code>
-       * @param value The bytes for freqBandInd to set.
-       * @return This builder for chaining.
+       * <code>optional string freq_band_ind = 17;</code>
        */
       public Builder setFreqBandIndBytes(
           com.google.protobuf.ByteString value) {
@@ -9375,8 +8689,7 @@
        *LTE
        * </pre>
        *
-       * <code>string ul_bandwidth = 18;</code>
-       * @return The ulBandwidth.
+       * <code>optional string ul_bandwidth = 18;</code>
        */
       public java.lang.String getUlBandwidth() {
         java.lang.Object ref = ulBandwidth_;
@@ -9395,8 +8708,7 @@
        *LTE
        * </pre>
        *
-       * <code>string ul_bandwidth = 18;</code>
-       * @return The bytes for ulBandwidth.
+       * <code>optional string ul_bandwidth = 18;</code>
        */
       public com.google.protobuf.ByteString
           getUlBandwidthBytes() {
@@ -9416,9 +8728,7 @@
        *LTE
        * </pre>
        *
-       * <code>string ul_bandwidth = 18;</code>
-       * @param value The ulBandwidth to set.
-       * @return This builder for chaining.
+       * <code>optional string ul_bandwidth = 18;</code>
        */
       public Builder setUlBandwidth(
           java.lang.String value) {
@@ -9435,8 +8745,7 @@
        *LTE
        * </pre>
        *
-       * <code>string ul_bandwidth = 18;</code>
-       * @return This builder for chaining.
+       * <code>optional string ul_bandwidth = 18;</code>
        */
       public Builder clearUlBandwidth() {
         
@@ -9449,9 +8758,7 @@
        *LTE
        * </pre>
        *
-       * <code>string ul_bandwidth = 18;</code>
-       * @param value The bytes for ulBandwidth to set.
-       * @return This builder for chaining.
+       * <code>optional string ul_bandwidth = 18;</code>
        */
       public Builder setUlBandwidthBytes(
           com.google.protobuf.ByteString value) {
@@ -9471,8 +8778,7 @@
        *LTE
        * </pre>
        *
-       * <code>string dl_bandwidth = 19;</code>
-       * @return The dlBandwidth.
+       * <code>optional string dl_bandwidth = 19;</code>
        */
       public java.lang.String getDlBandwidth() {
         java.lang.Object ref = dlBandwidth_;
@@ -9491,8 +8797,7 @@
        *LTE
        * </pre>
        *
-       * <code>string dl_bandwidth = 19;</code>
-       * @return The bytes for dlBandwidth.
+       * <code>optional string dl_bandwidth = 19;</code>
        */
       public com.google.protobuf.ByteString
           getDlBandwidthBytes() {
@@ -9512,9 +8817,7 @@
        *LTE
        * </pre>
        *
-       * <code>string dl_bandwidth = 19;</code>
-       * @param value The dlBandwidth to set.
-       * @return This builder for chaining.
+       * <code>optional string dl_bandwidth = 19;</code>
        */
       public Builder setDlBandwidth(
           java.lang.String value) {
@@ -9531,8 +8834,7 @@
        *LTE
        * </pre>
        *
-       * <code>string dl_bandwidth = 19;</code>
-       * @return This builder for chaining.
+       * <code>optional string dl_bandwidth = 19;</code>
        */
       public Builder clearDlBandwidth() {
         
@@ -9545,9 +8847,7 @@
        *LTE
        * </pre>
        *
-       * <code>string dl_bandwidth = 19;</code>
-       * @param value The bytes for dlBandwidth to set.
-       * @return This builder for chaining.
+       * <code>optional string dl_bandwidth = 19;</code>
        */
       public Builder setDlBandwidthBytes(
           com.google.protobuf.ByteString value) {
@@ -9567,8 +8867,7 @@
        *LTE
        * </pre>
        *
-       * <code>string is_tdd = 20;</code>
-       * @return The isTdd.
+       * <code>optional string is_tdd = 20;</code>
        */
       public java.lang.String getIsTdd() {
         java.lang.Object ref = isTdd_;
@@ -9587,8 +8886,7 @@
        *LTE
        * </pre>
        *
-       * <code>string is_tdd = 20;</code>
-       * @return The bytes for isTdd.
+       * <code>optional string is_tdd = 20;</code>
        */
       public com.google.protobuf.ByteString
           getIsTddBytes() {
@@ -9608,9 +8906,7 @@
        *LTE
        * </pre>
        *
-       * <code>string is_tdd = 20;</code>
-       * @param value The isTdd to set.
-       * @return This builder for chaining.
+       * <code>optional string is_tdd = 20;</code>
        */
       public Builder setIsTdd(
           java.lang.String value) {
@@ -9627,8 +8923,7 @@
        *LTE
        * </pre>
        *
-       * <code>string is_tdd = 20;</code>
-       * @return This builder for chaining.
+       * <code>optional string is_tdd = 20;</code>
        */
       public Builder clearIsTdd() {
         
@@ -9641,9 +8936,7 @@
        *LTE
        * </pre>
        *
-       * <code>string is_tdd = 20;</code>
-       * @param value The bytes for isTdd to set.
-       * @return This builder for chaining.
+       * <code>optional string is_tdd = 20;</code>
        */
       public Builder setIsTddBytes(
           com.google.protobuf.ByteString value) {
@@ -9663,8 +8956,7 @@
        *LTE
        * </pre>
        *
-       * <code>string rssi = 21;</code>
-       * @return The rssi.
+       * <code>optional string rssi = 21;</code>
        */
       public java.lang.String getRssi() {
         java.lang.Object ref = rssi_;
@@ -9683,8 +8975,7 @@
        *LTE
        * </pre>
        *
-       * <code>string rssi = 21;</code>
-       * @return The bytes for rssi.
+       * <code>optional string rssi = 21;</code>
        */
       public com.google.protobuf.ByteString
           getRssiBytes() {
@@ -9704,9 +8995,7 @@
        *LTE
        * </pre>
        *
-       * <code>string rssi = 21;</code>
-       * @param value The rssi to set.
-       * @return This builder for chaining.
+       * <code>optional string rssi = 21;</code>
        */
       public Builder setRssi(
           java.lang.String value) {
@@ -9723,8 +9012,7 @@
        *LTE
        * </pre>
        *
-       * <code>string rssi = 21;</code>
-       * @return This builder for chaining.
+       * <code>optional string rssi = 21;</code>
        */
       public Builder clearRssi() {
         
@@ -9737,9 +9025,7 @@
        *LTE
        * </pre>
        *
-       * <code>string rssi = 21;</code>
-       * @param value The bytes for rssi to set.
-       * @return This builder for chaining.
+       * <code>optional string rssi = 21;</code>
        */
       public Builder setRssiBytes(
           com.google.protobuf.ByteString value) {
@@ -9759,8 +9045,7 @@
        *NR5G-SA
        * </pre>
        *
-       * <code>string duplex_mode = 22;</code>
-       * @return The duplexMode.
+       * <code>optional string duplex_mode = 22;</code>
        */
       public java.lang.String getDuplexMode() {
         java.lang.Object ref = duplexMode_;
@@ -9779,8 +9064,7 @@
        *NR5G-SA
        * </pre>
        *
-       * <code>string duplex_mode = 22;</code>
-       * @return The bytes for duplexMode.
+       * <code>optional string duplex_mode = 22;</code>
        */
       public com.google.protobuf.ByteString
           getDuplexModeBytes() {
@@ -9800,9 +9084,7 @@
        *NR5G-SA
        * </pre>
        *
-       * <code>string duplex_mode = 22;</code>
-       * @param value The duplexMode to set.
-       * @return This builder for chaining.
+       * <code>optional string duplex_mode = 22;</code>
        */
       public Builder setDuplexMode(
           java.lang.String value) {
@@ -9819,8 +9101,7 @@
        *NR5G-SA
        * </pre>
        *
-       * <code>string duplex_mode = 22;</code>
-       * @return This builder for chaining.
+       * <code>optional string duplex_mode = 22;</code>
        */
       public Builder clearDuplexMode() {
         
@@ -9833,9 +9114,7 @@
        *NR5G-SA
        * </pre>
        *
-       * <code>string duplex_mode = 22;</code>
-       * @param value The bytes for duplexMode to set.
-       * @return This builder for chaining.
+       * <code>optional string duplex_mode = 22;</code>
        */
       public Builder setDuplexModeBytes(
           com.google.protobuf.ByteString value) {
@@ -9855,10 +9134,8 @@
        *经度
        * </pre>
        *
-       * <code>double lng = 23;</code>
-       * @return The lng.
+       * <code>optional double lng = 23;</code>
        */
-      @java.lang.Override
       public double getLng() {
         return lng_;
       }
@@ -9867,9 +9144,7 @@
        *经度
        * </pre>
        *
-       * <code>double lng = 23;</code>
-       * @param value The lng to set.
-       * @return This builder for chaining.
+       * <code>optional double lng = 23;</code>
        */
       public Builder setLng(double value) {
         
@@ -9882,8 +9157,7 @@
        *经度
        * </pre>
        *
-       * <code>double lng = 23;</code>
-       * @return This builder for chaining.
+       * <code>optional double lng = 23;</code>
        */
       public Builder clearLng() {
         
@@ -9898,10 +9172,8 @@
        *纬度
        * </pre>
        *
-       * <code>double lat = 24;</code>
-       * @return The lat.
+       * <code>optional double lat = 24;</code>
        */
-      @java.lang.Override
       public double getLat() {
         return lat_;
       }
@@ -9910,9 +9182,7 @@
        *纬度
        * </pre>
        *
-       * <code>double lat = 24;</code>
-       * @param value The lat to set.
-       * @return This builder for chaining.
+       * <code>optional double lat = 24;</code>
        */
       public Builder setLat(double value) {
         
@@ -9925,8 +9195,7 @@
        *纬度
        * </pre>
        *
-       * <code>double lat = 24;</code>
-       * @return This builder for chaining.
+       * <code>optional double lat = 24;</code>
        */
       public Builder clearLat() {
         
@@ -9941,10 +9210,8 @@
        *高度(单位:米)
        * </pre>
        *
-       * <code>float height = 25;</code>
-       * @return The height.
+       * <code>optional float height = 25;</code>
        */
-      @java.lang.Override
       public float getHeight() {
         return height_;
       }
@@ -9953,9 +9220,7 @@
        *高度(单位:米)
        * </pre>
        *
-       * <code>float height = 25;</code>
-       * @param value The height to set.
-       * @return This builder for chaining.
+       * <code>optional float height = 25;</code>
        */
       public Builder setHeight(float value) {
         
@@ -9968,8 +9233,7 @@
        *高度(单位:米)
        * </pre>
        *
-       * <code>float height = 25;</code>
-       * @return This builder for chaining.
+       * <code>optional float height = 25;</code>
        */
       public Builder clearHeight() {
         
@@ -9984,10 +9248,8 @@
        *时间戳(单位:秒)
        * </pre>
        *
-       * <code>uint32 timestamp = 26;</code>
-       * @return The timestamp.
+       * <code>optional uint32 timestamp = 26;</code>
        */
-      @java.lang.Override
       public int getTimestamp() {
         return timestamp_;
       }
@@ -9996,9 +9258,7 @@
        *时间戳(单位:秒)
        * </pre>
        *
-       * <code>uint32 timestamp = 26;</code>
-       * @param value The timestamp to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 timestamp = 26;</code>
        */
       public Builder setTimestamp(int value) {
         
@@ -10011,8 +9271,7 @@
        *时间戳(单位:秒)
        * </pre>
        *
-       * <code>uint32 timestamp = 26;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 timestamp = 26;</code>
        */
       public Builder clearTimestamp() {
         
@@ -10027,10 +9286,8 @@
        *1=线缆故障,2=OSDK未激活,3=正常,4=云盒固件更新
        * </pre>
        *
-       * <code>uint32 boxstate = 27;</code>
-       * @return The boxstate.
+       * <code>optional uint32 boxstate = 27;</code>
        */
-      @java.lang.Override
       public int getBoxstate() {
         return boxstate_;
       }
@@ -10039,9 +9296,7 @@
        *1=线缆故障,2=OSDK未激活,3=正常,4=云盒固件更新
        * </pre>
        *
-       * <code>uint32 boxstate = 27;</code>
-       * @param value The boxstate to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 boxstate = 27;</code>
        */
       public Builder setBoxstate(int value) {
         
@@ -10054,8 +9309,7 @@
        *1=线缆故障,2=OSDK未激活,3=正常,4=云盒固件更新
        * </pre>
        *
-       * <code>uint32 boxstate = 27;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 boxstate = 27;</code>
        */
       public Builder clearBoxstate() {
         
@@ -10070,8 +9324,7 @@
        *运营商
        * </pre>
        *
-       * <code>string isp = 28;</code>
-       * @return The isp.
+       * <code>optional string isp = 28;</code>
        */
       public java.lang.String getIsp() {
         java.lang.Object ref = isp_;
@@ -10090,8 +9343,7 @@
        *运营商
        * </pre>
        *
-       * <code>string isp = 28;</code>
-       * @return The bytes for isp.
+       * <code>optional string isp = 28;</code>
        */
       public com.google.protobuf.ByteString
           getIspBytes() {
@@ -10111,9 +9363,7 @@
        *运营商
        * </pre>
        *
-       * <code>string isp = 28;</code>
-       * @param value The isp to set.
-       * @return This builder for chaining.
+       * <code>optional string isp = 28;</code>
        */
       public Builder setIsp(
           java.lang.String value) {
@@ -10130,8 +9380,7 @@
        *运营商
        * </pre>
        *
-       * <code>string isp = 28;</code>
-       * @return This builder for chaining.
+       * <code>optional string isp = 28;</code>
        */
       public Builder clearIsp() {
         
@@ -10144,9 +9393,7 @@
        *运营商
        * </pre>
        *
-       * <code>string isp = 28;</code>
-       * @param value The bytes for isp to set.
-       * @return This builder for chaining.
+       * <code>optional string isp = 28;</code>
        */
       public Builder setIspBytes(
           com.google.protobuf.ByteString value) {
@@ -10166,10 +9413,8 @@
        *模组芯片温度(单位:摄氏度)
        * </pre>
        *
-       * <code>uint32 tempMax = 29;</code>
-       * @return The tempMax.
+       * <code>optional uint32 tempMax = 29;</code>
        */
-      @java.lang.Override
       public int getTempMax() {
         return tempMax_;
       }
@@ -10178,9 +9423,7 @@
        *模组芯片温度(单位:摄氏度)
        * </pre>
        *
-       * <code>uint32 tempMax = 29;</code>
-       * @param value The tempMax to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 tempMax = 29;</code>
        */
       public Builder setTempMax(int value) {
         
@@ -10193,8 +9436,7 @@
        *模组芯片温度(单位:摄氏度)
        * </pre>
        *
-       * <code>uint32 tempMax = 29;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 tempMax = 29;</code>
        */
       public Builder clearTempMax() {
         
@@ -10209,8 +9451,7 @@
        *prx路径的rsrp值
        * </pre>
        *
-       * <code>string prx_rsrp = 30;</code>
-       * @return The prxRsrp.
+       * <code>optional string prx_rsrp = 30;</code>
        */
       public java.lang.String getPrxRsrp() {
         java.lang.Object ref = prxRsrp_;
@@ -10229,8 +9470,7 @@
        *prx路径的rsrp值
        * </pre>
        *
-       * <code>string prx_rsrp = 30;</code>
-       * @return The bytes for prxRsrp.
+       * <code>optional string prx_rsrp = 30;</code>
        */
       public com.google.protobuf.ByteString
           getPrxRsrpBytes() {
@@ -10250,9 +9490,7 @@
        *prx路径的rsrp值
        * </pre>
        *
-       * <code>string prx_rsrp = 30;</code>
-       * @param value The prxRsrp to set.
-       * @return This builder for chaining.
+       * <code>optional string prx_rsrp = 30;</code>
        */
       public Builder setPrxRsrp(
           java.lang.String value) {
@@ -10269,8 +9507,7 @@
        *prx路径的rsrp值
        * </pre>
        *
-       * <code>string prx_rsrp = 30;</code>
-       * @return This builder for chaining.
+       * <code>optional string prx_rsrp = 30;</code>
        */
       public Builder clearPrxRsrp() {
         
@@ -10283,9 +9520,7 @@
        *prx路径的rsrp值
        * </pre>
        *
-       * <code>string prx_rsrp = 30;</code>
-       * @param value The bytes for prxRsrp to set.
-       * @return This builder for chaining.
+       * <code>optional string prx_rsrp = 30;</code>
        */
       public Builder setPrxRsrpBytes(
           com.google.protobuf.ByteString value) {
@@ -10305,8 +9540,7 @@
        *drx路径的rsrp值
        * </pre>
        *
-       * <code>string drx_rsrp = 31;</code>
-       * @return The drxRsrp.
+       * <code>optional string drx_rsrp = 31;</code>
        */
       public java.lang.String getDrxRsrp() {
         java.lang.Object ref = drxRsrp_;
@@ -10325,8 +9559,7 @@
        *drx路径的rsrp值
        * </pre>
        *
-       * <code>string drx_rsrp = 31;</code>
-       * @return The bytes for drxRsrp.
+       * <code>optional string drx_rsrp = 31;</code>
        */
       public com.google.protobuf.ByteString
           getDrxRsrpBytes() {
@@ -10346,9 +9579,7 @@
        *drx路径的rsrp值
        * </pre>
        *
-       * <code>string drx_rsrp = 31;</code>
-       * @param value The drxRsrp to set.
-       * @return This builder for chaining.
+       * <code>optional string drx_rsrp = 31;</code>
        */
       public Builder setDrxRsrp(
           java.lang.String value) {
@@ -10365,8 +9596,7 @@
        *drx路径的rsrp值
        * </pre>
        *
-       * <code>string drx_rsrp = 31;</code>
-       * @return This builder for chaining.
+       * <code>optional string drx_rsrp = 31;</code>
        */
       public Builder clearDrxRsrp() {
         
@@ -10379,9 +9609,7 @@
        *drx路径的rsrp值
        * </pre>
        *
-       * <code>string drx_rsrp = 31;</code>
-       * @param value The bytes for drxRsrp to set.
-       * @return This builder for chaining.
+       * <code>optional string drx_rsrp = 31;</code>
        */
       public Builder setDrxRsrpBytes(
           com.google.protobuf.ByteString value) {
@@ -10401,8 +9629,7 @@
        *rx2路径的rsrp值
        * </pre>
        *
-       * <code>string rx2_rsrp = 32;</code>
-       * @return The rx2Rsrp.
+       * <code>optional string rx2_rsrp = 32;</code>
        */
       public java.lang.String getRx2Rsrp() {
         java.lang.Object ref = rx2Rsrp_;
@@ -10421,8 +9648,7 @@
        *rx2路径的rsrp值
        * </pre>
        *
-       * <code>string rx2_rsrp = 32;</code>
-       * @return The bytes for rx2Rsrp.
+       * <code>optional string rx2_rsrp = 32;</code>
        */
       public com.google.protobuf.ByteString
           getRx2RsrpBytes() {
@@ -10442,9 +9668,7 @@
        *rx2路径的rsrp值
        * </pre>
        *
-       * <code>string rx2_rsrp = 32;</code>
-       * @param value The rx2Rsrp to set.
-       * @return This builder for chaining.
+       * <code>optional string rx2_rsrp = 32;</code>
        */
       public Builder setRx2Rsrp(
           java.lang.String value) {
@@ -10461,8 +9685,7 @@
        *rx2路径的rsrp值
        * </pre>
        *
-       * <code>string rx2_rsrp = 32;</code>
-       * @return This builder for chaining.
+       * <code>optional string rx2_rsrp = 32;</code>
        */
       public Builder clearRx2Rsrp() {
         
@@ -10475,9 +9698,7 @@
        *rx2路径的rsrp值
        * </pre>
        *
-       * <code>string rx2_rsrp = 32;</code>
-       * @param value The bytes for rx2Rsrp to set.
-       * @return This builder for chaining.
+       * <code>optional string rx2_rsrp = 32;</code>
        */
       public Builder setRx2RsrpBytes(
           com.google.protobuf.ByteString value) {
@@ -10497,8 +9718,7 @@
        *rx3路径的rsrp值
        * </pre>
        *
-       * <code>string rx3_rsrp = 33;</code>
-       * @return The rx3Rsrp.
+       * <code>optional string rx3_rsrp = 33;</code>
        */
       public java.lang.String getRx3Rsrp() {
         java.lang.Object ref = rx3Rsrp_;
@@ -10517,8 +9737,7 @@
        *rx3路径的rsrp值
        * </pre>
        *
-       * <code>string rx3_rsrp = 33;</code>
-       * @return The bytes for rx3Rsrp.
+       * <code>optional string rx3_rsrp = 33;</code>
        */
       public com.google.protobuf.ByteString
           getRx3RsrpBytes() {
@@ -10538,9 +9757,7 @@
        *rx3路径的rsrp值
        * </pre>
        *
-       * <code>string rx3_rsrp = 33;</code>
-       * @param value The rx3Rsrp to set.
-       * @return This builder for chaining.
+       * <code>optional string rx3_rsrp = 33;</code>
        */
       public Builder setRx3Rsrp(
           java.lang.String value) {
@@ -10557,8 +9774,7 @@
        *rx3路径的rsrp值
        * </pre>
        *
-       * <code>string rx3_rsrp = 33;</code>
-       * @return This builder for chaining.
+       * <code>optional string rx3_rsrp = 33;</code>
        */
       public Builder clearRx3Rsrp() {
         
@@ -10571,9 +9787,7 @@
        *rx3路径的rsrp值
        * </pre>
        *
-       * <code>string rx3_rsrp = 33;</code>
-       * @param value The bytes for rx3Rsrp to set.
-       * @return This builder for chaining.
+       * <code>optional string rx3_rsrp = 33;</code>
        */
       public Builder setRx3RsrpBytes(
           com.google.protobuf.ByteString value) {
@@ -10593,8 +9807,7 @@
        *云盒编号
        * </pre>
        *
-       * <code>string box_sn = 34;</code>
-       * @return The boxSn.
+       * <code>optional string box_sn = 34;</code>
        */
       public java.lang.String getBoxSn() {
         java.lang.Object ref = boxSn_;
@@ -10613,8 +9826,7 @@
        *云盒编号
        * </pre>
        *
-       * <code>string box_sn = 34;</code>
-       * @return The bytes for boxSn.
+       * <code>optional string box_sn = 34;</code>
        */
       public com.google.protobuf.ByteString
           getBoxSnBytes() {
@@ -10634,9 +9846,7 @@
        *云盒编号
        * </pre>
        *
-       * <code>string box_sn = 34;</code>
-       * @param value The boxSn to set.
-       * @return This builder for chaining.
+       * <code>optional string box_sn = 34;</code>
        */
       public Builder setBoxSn(
           java.lang.String value) {
@@ -10653,8 +9863,7 @@
        *云盒编号
        * </pre>
        *
-       * <code>string box_sn = 34;</code>
-       * @return This builder for chaining.
+       * <code>optional string box_sn = 34;</code>
        */
       public Builder clearBoxSn() {
         
@@ -10667,9 +9876,7 @@
        *云盒编号
        * </pre>
        *
-       * <code>string box_sn = 34;</code>
-       * @param value The bytes for boxSn to set.
-       * @return This builder for chaining.
+       * <code>optional string box_sn = 34;</code>
        */
       public Builder setBoxSnBytes(
           com.google.protobuf.ByteString value) {
@@ -10682,16 +9889,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -10710,12 +9915,11 @@
 
     private static final com.google.protobuf.Parser<SignalInfo>
         PARSER = new com.google.protobuf.AbstractParser<SignalInfo>() {
-      @java.lang.Override
       public SignalInfo parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SignalInfo(input, extensionRegistry);
+          return new SignalInfo(input, extensionRegistry);
       }
     };
 
@@ -10728,7 +9932,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -10766,11 +9969,10 @@
   /**
    * Protobuf type {@code SignalList}
    */
-  public static final class SignalList extends
+  public  static final class SignalList extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:SignalList)
       SignalListOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use SignalList.newBuilder() to construct.
     private SignalList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
@@ -10780,28 +9982,16 @@
     }
 
     @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SignalList();
-    }
-
-    @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private SignalList(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
       int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
         boolean done = false;
         while (!done) {
@@ -10810,8 +10000,14 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                 signalInfo_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo>();
                 mutable_bitField0_ |= 0x00000001;
               }
@@ -10819,27 +10015,17 @@
                   input.readMessage(com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo.parser(), extensionRegistry));
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
           signalInfo_ = java.util.Collections.unmodifiableList(signalInfo_);
         }
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -10848,7 +10034,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SignalList_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SignalList_fieldAccessorTable
@@ -10861,14 +10046,12 @@
     /**
      * <code>repeated .SignalInfo signalInfo = 1;</code>
      */
-    @java.lang.Override
     public java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo> getSignalInfoList() {
       return signalInfo_;
     }
     /**
      * <code>repeated .SignalInfo signalInfo = 1;</code>
      */
-    @java.lang.Override
     public java.util.List<? extends com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfoOrBuilder> 
         getSignalInfoOrBuilderList() {
       return signalInfo_;
@@ -10876,28 +10059,24 @@
     /**
      * <code>repeated .SignalInfo signalInfo = 1;</code>
      */
-    @java.lang.Override
     public int getSignalInfoCount() {
       return signalInfo_.size();
     }
     /**
      * <code>repeated .SignalInfo signalInfo = 1;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo getSignalInfo(int index) {
       return signalInfo_.get(index);
     }
     /**
      * <code>repeated .SignalInfo signalInfo = 1;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfoOrBuilder getSignalInfoOrBuilder(
         int index) {
       return signalInfo_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -10907,16 +10086,13 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       for (int i = 0; i < signalInfo_.size(); i++) {
         output.writeMessage(1, signalInfo_.get(i));
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -10926,11 +10102,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(1, signalInfo_.get(i));
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -10941,10 +10117,10 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList) obj;
 
-      if (!getSignalInfoList()
-          .equals(other.getSignalInfoList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && getSignalInfoList()
+          .equals(other.getSignalInfoList());
+      return result;
     }
 
     @java.lang.Override
@@ -10953,7 +10129,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       if (getSignalInfoCount() > 0) {
         hash = (37 * hash) + SIGNALINFO_FIELD_NUMBER;
         hash = (53 * hash) + getSignalInfoList().hashCode();
@@ -10963,17 +10139,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -11033,7 +10198,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -11041,7 +10205,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -11065,7 +10228,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SignalList_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SignalList_fieldAccessorTable
@@ -11089,7 +10251,6 @@
           getSignalInfoFieldBuilder();
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         if (signalInfoBuilder_ == null) {
@@ -11101,18 +10262,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SignalList_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList result = buildPartial();
         if (!result.isInitialized()) {
@@ -11121,12 +10279,11 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList(this);
         int from_bitField0_ = bitField0_;
         if (signalInfoBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
             signalInfo_ = java.util.Collections.unmodifiableList(signalInfo_);
             bitField0_ = (bitField0_ & ~0x00000001);
           }
@@ -11138,39 +10295,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList)other);
@@ -11208,17 +10358,14 @@
             }
           }
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -11241,7 +10388,7 @@
       private java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo> signalInfo_ =
         java.util.Collections.emptyList();
       private void ensureSignalInfoIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
           signalInfo_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo>(signalInfo_);
           bitField0_ |= 0x00000001;
          }
@@ -11470,23 +10617,21 @@
           signalInfoBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo, com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfo.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalInfoOrBuilder>(
                   signalInfo_,
-                  ((bitField0_ & 0x00000001) != 0),
+                  ((bitField0_ & 0x00000001) == 0x00000001),
                   getParentForChildren(),
                   isClean());
           signalInfo_ = null;
         }
         return signalInfoBuilder_;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -11505,12 +10650,11 @@
 
     private static final com.google.protobuf.Parser<SignalList>
         PARSER = new com.google.protobuf.AbstractParser<SignalList>() {
-      @java.lang.Override
       public SignalList parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SignalList(input, extensionRegistry);
+          return new SignalList(input, extensionRegistry);
       }
     };
 
@@ -11523,7 +10667,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SignalList getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -11539,8 +10682,7 @@
      *飞控状态
      * </pre>
      *
-     * <code>.FlightControllerState flightControllerState = 1;</code>
-     * @return Whether the flightControllerState field is set.
+     * <code>optional .FlightControllerState flightControllerState = 1;</code>
      */
     boolean hasFlightControllerState();
     /**
@@ -11548,8 +10690,7 @@
      *飞控状态
      * </pre>
      *
-     * <code>.FlightControllerState flightControllerState = 1;</code>
-     * @return The flightControllerState.
+     * <code>optional .FlightControllerState flightControllerState = 1;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState getFlightControllerState();
     /**
@@ -11557,7 +10698,7 @@
      *飞控状态
      * </pre>
      *
-     * <code>.FlightControllerState flightControllerState = 1;</code>
+     * <code>optional .FlightControllerState flightControllerState = 1;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerStateOrBuilder getFlightControllerStateOrBuilder();
 
@@ -11566,8 +10707,7 @@
      *电池状态
      * </pre>
      *
-     * <code>.BatteryState batteryState = 2;</code>
-     * @return Whether the batteryState field is set.
+     * <code>optional .BatteryState batteryState = 2;</code>
      */
     boolean hasBatteryState();
     /**
@@ -11575,8 +10715,7 @@
      *电池状态
      * </pre>
      *
-     * <code>.BatteryState batteryState = 2;</code>
-     * @return The batteryState.
+     * <code>optional .BatteryState batteryState = 2;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState getBatteryState();
     /**
@@ -11584,7 +10723,7 @@
      *电池状态
      * </pre>
      *
-     * <code>.BatteryState batteryState = 2;</code>
+     * <code>optional .BatteryState batteryState = 2;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateOrBuilder getBatteryStateOrBuilder();
 
@@ -11593,8 +10732,7 @@
      *云台状态
      * </pre>
      *
-     * <code>.PtzState ptzState = 3;</code>
-     * @return Whether the ptzState field is set.
+     * <code>optional .PtzState ptzState = 3;</code>
      */
     boolean hasPtzState();
     /**
@@ -11602,8 +10740,7 @@
      *云台状态
      * </pre>
      *
-     * <code>.PtzState ptzState = 3;</code>
-     * @return The ptzState.
+     * <code>optional .PtzState ptzState = 3;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState getPtzState();
     /**
@@ -11611,7 +10748,7 @@
      *云台状态
      * </pre>
      *
-     * <code>.PtzState ptzState = 3;</code>
+     * <code>optional .PtzState ptzState = 3;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzStateOrBuilder getPtzStateOrBuilder();
 
@@ -11620,8 +10757,7 @@
      *相机状态
      * </pre>
      *
-     * <code>.CameraState cameraState = 4;</code>
-     * @return Whether the cameraState field is set.
+     * <code>optional .CameraState cameraState = 4;</code>
      */
     boolean hasCameraState();
     /**
@@ -11629,8 +10765,7 @@
      *相机状态
      * </pre>
      *
-     * <code>.CameraState cameraState = 4;</code>
-     * @return The cameraState.
+     * <code>optional .CameraState cameraState = 4;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState getCameraState();
     /**
@@ -11638,7 +10773,7 @@
      *相机状态
      * </pre>
      *
-     * <code>.CameraState cameraState = 4;</code>
+     * <code>optional .CameraState cameraState = 4;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraStateOrBuilder getCameraStateOrBuilder();
 
@@ -11647,8 +10782,7 @@
      *任务状态
      * </pre>
      *
-     * <code>.MissionState missionState = 5;</code>
-     * @return Whether the missionState field is set.
+     * <code>optional .MissionState missionState = 5;</code>
      */
     boolean hasMissionState();
     /**
@@ -11656,8 +10790,7 @@
      *任务状态
      * </pre>
      *
-     * <code>.MissionState missionState = 5;</code>
-     * @return The missionState.
+     * <code>optional .MissionState missionState = 5;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState getMissionState();
     /**
@@ -11665,7 +10798,7 @@
      *任务状态
      * </pre>
      *
-     * <code>.MissionState missionState = 5;</code>
+     * <code>optional .MissionState missionState = 5;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionStateOrBuilder getMissionStateOrBuilder();
 
@@ -11674,8 +10807,7 @@
      *云盒编号
      * </pre>
      *
-     * <code>string boxSn = 6;</code>
-     * @return The boxSn.
+     * <code>optional string boxSn = 6;</code>
      */
     java.lang.String getBoxSn();
     /**
@@ -11683,8 +10815,7 @@
      *云盒编号
      * </pre>
      *
-     * <code>string boxSn = 6;</code>
-     * @return The bytes for boxSn.
+     * <code>optional string boxSn = 6;</code>
      */
     com.google.protobuf.ByteString
         getBoxSnBytes();
@@ -11694,8 +10825,7 @@
      *避障数据
      * </pre>
      *
-     * <code>.AvoidanceData avoidanceData = 7;</code>
-     * @return Whether the avoidanceData field is set.
+     * <code>optional .AvoidanceData avoidanceData = 7;</code>
      */
     boolean hasAvoidanceData();
     /**
@@ -11703,8 +10833,7 @@
      *避障数据
      * </pre>
      *
-     * <code>.AvoidanceData avoidanceData = 7;</code>
-     * @return The avoidanceData.
+     * <code>optional .AvoidanceData avoidanceData = 7;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData getAvoidanceData();
     /**
@@ -11712,7 +10841,7 @@
      *避障数据
      * </pre>
      *
-     * <code>.AvoidanceData avoidanceData = 7;</code>
+     * <code>optional .AvoidanceData avoidanceData = 7;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceDataOrBuilder getAvoidanceDataOrBuilder();
 
@@ -11767,11 +10896,10 @@
    *
    * Protobuf type {@code UavState}
    */
-  public static final class UavState extends
+  public  static final class UavState extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:UavState)
       UavStateOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use UavState.newBuilder() to construct.
     private UavState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
@@ -11782,28 +10910,16 @@
     }
 
     @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new UavState();
-    }
-
-    @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private UavState(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
       int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
         boolean done = false;
         while (!done) {
@@ -11812,6 +10928,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 10: {
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState.Builder subBuilder = null;
               if (flightControllerState_ != null) {
@@ -11897,35 +11019,25 @@
               break;
             }
             case 66: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                 hmsAlarmData_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData>();
-                mutable_bitField0_ |= 0x00000001;
+                mutable_bitField0_ |= 0x00000080;
               }
               hmsAlarmData_.add(
                   input.readMessage(com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData.parser(), extensionRegistry));
-              break;
-            }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
               break;
             }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
           hmsAlarmData_ = java.util.Collections.unmodifiableList(hmsAlarmData_);
         }
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -11934,7 +11046,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_UavState_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_UavState_fieldAccessorTable
@@ -11942,6 +11053,7 @@
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState.class, com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState.Builder.class);
     }
 
+    private int bitField0_;
     public static final int FLIGHTCONTROLLERSTATE_FIELD_NUMBER = 1;
     private com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState flightControllerState_;
     /**
@@ -11949,10 +11061,8 @@
      *飞控状态
      * </pre>
      *
-     * <code>.FlightControllerState flightControllerState = 1;</code>
-     * @return Whether the flightControllerState field is set.
+     * <code>optional .FlightControllerState flightControllerState = 1;</code>
      */
-    @java.lang.Override
     public boolean hasFlightControllerState() {
       return flightControllerState_ != null;
     }
@@ -11961,10 +11071,8 @@
      *飞控状态
      * </pre>
      *
-     * <code>.FlightControllerState flightControllerState = 1;</code>
-     * @return The flightControllerState.
+     * <code>optional .FlightControllerState flightControllerState = 1;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState getFlightControllerState() {
       return flightControllerState_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState.getDefaultInstance() : flightControllerState_;
     }
@@ -11973,9 +11081,8 @@
      *飞控状态
      * </pre>
      *
-     * <code>.FlightControllerState flightControllerState = 1;</code>
+     * <code>optional .FlightControllerState flightControllerState = 1;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerStateOrBuilder getFlightControllerStateOrBuilder() {
       return getFlightControllerState();
     }
@@ -11987,10 +11094,8 @@
      *电池状态
      * </pre>
      *
-     * <code>.BatteryState batteryState = 2;</code>
-     * @return Whether the batteryState field is set.
+     * <code>optional .BatteryState batteryState = 2;</code>
      */
-    @java.lang.Override
     public boolean hasBatteryState() {
       return batteryState_ != null;
     }
@@ -11999,10 +11104,8 @@
      *电池状态
      * </pre>
      *
-     * <code>.BatteryState batteryState = 2;</code>
-     * @return The batteryState.
+     * <code>optional .BatteryState batteryState = 2;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState getBatteryState() {
       return batteryState_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState.getDefaultInstance() : batteryState_;
     }
@@ -12011,9 +11114,8 @@
      *电池状态
      * </pre>
      *
-     * <code>.BatteryState batteryState = 2;</code>
+     * <code>optional .BatteryState batteryState = 2;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateOrBuilder getBatteryStateOrBuilder() {
       return getBatteryState();
     }
@@ -12025,10 +11127,8 @@
      *云台状态
      * </pre>
      *
-     * <code>.PtzState ptzState = 3;</code>
-     * @return Whether the ptzState field is set.
+     * <code>optional .PtzState ptzState = 3;</code>
      */
-    @java.lang.Override
     public boolean hasPtzState() {
       return ptzState_ != null;
     }
@@ -12037,10 +11137,8 @@
      *云台状态
      * </pre>
      *
-     * <code>.PtzState ptzState = 3;</code>
-     * @return The ptzState.
+     * <code>optional .PtzState ptzState = 3;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState getPtzState() {
       return ptzState_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState.getDefaultInstance() : ptzState_;
     }
@@ -12049,9 +11147,8 @@
      *云台状态
      * </pre>
      *
-     * <code>.PtzState ptzState = 3;</code>
+     * <code>optional .PtzState ptzState = 3;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzStateOrBuilder getPtzStateOrBuilder() {
       return getPtzState();
     }
@@ -12063,10 +11160,8 @@
      *相机状态
      * </pre>
      *
-     * <code>.CameraState cameraState = 4;</code>
-     * @return Whether the cameraState field is set.
+     * <code>optional .CameraState cameraState = 4;</code>
      */
-    @java.lang.Override
     public boolean hasCameraState() {
       return cameraState_ != null;
     }
@@ -12075,10 +11170,8 @@
      *相机状态
      * </pre>
      *
-     * <code>.CameraState cameraState = 4;</code>
-     * @return The cameraState.
+     * <code>optional .CameraState cameraState = 4;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState getCameraState() {
       return cameraState_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState.getDefaultInstance() : cameraState_;
     }
@@ -12087,9 +11180,8 @@
      *相机状态
      * </pre>
      *
-     * <code>.CameraState cameraState = 4;</code>
+     * <code>optional .CameraState cameraState = 4;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraStateOrBuilder getCameraStateOrBuilder() {
       return getCameraState();
     }
@@ -12101,10 +11193,8 @@
      *任务状态
      * </pre>
      *
-     * <code>.MissionState missionState = 5;</code>
-     * @return Whether the missionState field is set.
+     * <code>optional .MissionState missionState = 5;</code>
      */
-    @java.lang.Override
     public boolean hasMissionState() {
       return missionState_ != null;
     }
@@ -12113,10 +11203,8 @@
      *任务状态
      * </pre>
      *
-     * <code>.MissionState missionState = 5;</code>
-     * @return The missionState.
+     * <code>optional .MissionState missionState = 5;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState getMissionState() {
       return missionState_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState.getDefaultInstance() : missionState_;
     }
@@ -12125,9 +11213,8 @@
      *任务状态
      * </pre>
      *
-     * <code>.MissionState missionState = 5;</code>
+     * <code>optional .MissionState missionState = 5;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionStateOrBuilder getMissionStateOrBuilder() {
       return getMissionState();
     }
@@ -12139,10 +11226,8 @@
      *云盒编号
      * </pre>
      *
-     * <code>string boxSn = 6;</code>
-     * @return The boxSn.
+     * <code>optional string boxSn = 6;</code>
      */
-    @java.lang.Override
     public java.lang.String getBoxSn() {
       java.lang.Object ref = boxSn_;
       if (ref instanceof java.lang.String) {
@@ -12160,10 +11245,8 @@
      *云盒编号
      * </pre>
      *
-     * <code>string boxSn = 6;</code>
-     * @return The bytes for boxSn.
+     * <code>optional string boxSn = 6;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getBoxSnBytes() {
       java.lang.Object ref = boxSn_;
@@ -12185,10 +11268,8 @@
      *避障数据
      * </pre>
      *
-     * <code>.AvoidanceData avoidanceData = 7;</code>
-     * @return Whether the avoidanceData field is set.
+     * <code>optional .AvoidanceData avoidanceData = 7;</code>
      */
-    @java.lang.Override
     public boolean hasAvoidanceData() {
       return avoidanceData_ != null;
     }
@@ -12197,10 +11278,8 @@
      *避障数据
      * </pre>
      *
-     * <code>.AvoidanceData avoidanceData = 7;</code>
-     * @return The avoidanceData.
+     * <code>optional .AvoidanceData avoidanceData = 7;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData getAvoidanceData() {
       return avoidanceData_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData.getDefaultInstance() : avoidanceData_;
     }
@@ -12209,9 +11288,8 @@
      *避障数据
      * </pre>
      *
-     * <code>.AvoidanceData avoidanceData = 7;</code>
+     * <code>optional .AvoidanceData avoidanceData = 7;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceDataOrBuilder getAvoidanceDataOrBuilder() {
       return getAvoidanceData();
     }
@@ -12225,7 +11303,6 @@
      *
      * <code>repeated .HmsAlarmData hmsAlarmData = 8;</code>
      */
-    @java.lang.Override
     public java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData> getHmsAlarmDataList() {
       return hmsAlarmData_;
     }
@@ -12236,7 +11313,6 @@
      *
      * <code>repeated .HmsAlarmData hmsAlarmData = 8;</code>
      */
-    @java.lang.Override
     public java.util.List<? extends com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmDataOrBuilder> 
         getHmsAlarmDataOrBuilderList() {
       return hmsAlarmData_;
@@ -12248,7 +11324,6 @@
      *
      * <code>repeated .HmsAlarmData hmsAlarmData = 8;</code>
      */
-    @java.lang.Override
     public int getHmsAlarmDataCount() {
       return hmsAlarmData_.size();
     }
@@ -12259,7 +11334,6 @@
      *
      * <code>repeated .HmsAlarmData hmsAlarmData = 8;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData getHmsAlarmData(int index) {
       return hmsAlarmData_.get(index);
     }
@@ -12270,14 +11344,12 @@
      *
      * <code>repeated .HmsAlarmData hmsAlarmData = 8;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmDataOrBuilder getHmsAlarmDataOrBuilder(
         int index) {
       return hmsAlarmData_.get(index);
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -12287,7 +11359,6 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       if (flightControllerState_ != null) {
@@ -12305,7 +11376,7 @@
       if (missionState_ != null) {
         output.writeMessage(5, getMissionState());
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(boxSn_)) {
+      if (!getBoxSnBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 6, boxSn_);
       }
       if (avoidanceData_ != null) {
@@ -12314,10 +11385,8 @@
       for (int i = 0; i < hmsAlarmData_.size(); i++) {
         output.writeMessage(8, hmsAlarmData_.get(i));
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -12343,7 +11412,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(5, getMissionState());
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(boxSn_)) {
+      if (!getBoxSnBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, boxSn_);
       }
       if (avoidanceData_ != null) {
@@ -12354,11 +11423,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(8, hmsAlarmData_.get(i));
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -12369,42 +11438,42 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState) obj;
 
-      if (hasFlightControllerState() != other.hasFlightControllerState()) return false;
+      boolean result = true;
+      result = result && (hasFlightControllerState() == other.hasFlightControllerState());
       if (hasFlightControllerState()) {
-        if (!getFlightControllerState()
-            .equals(other.getFlightControllerState())) return false;
+        result = result && getFlightControllerState()
+            .equals(other.getFlightControllerState());
       }
-      if (hasBatteryState() != other.hasBatteryState()) return false;
+      result = result && (hasBatteryState() == other.hasBatteryState());
       if (hasBatteryState()) {
-        if (!getBatteryState()
-            .equals(other.getBatteryState())) return false;
+        result = result && getBatteryState()
+            .equals(other.getBatteryState());
       }
-      if (hasPtzState() != other.hasPtzState()) return false;
+      result = result && (hasPtzState() == other.hasPtzState());
       if (hasPtzState()) {
-        if (!getPtzState()
-            .equals(other.getPtzState())) return false;
+        result = result && getPtzState()
+            .equals(other.getPtzState());
       }
-      if (hasCameraState() != other.hasCameraState()) return false;
+      result = result && (hasCameraState() == other.hasCameraState());
       if (hasCameraState()) {
-        if (!getCameraState()
-            .equals(other.getCameraState())) return false;
+        result = result && getCameraState()
+            .equals(other.getCameraState());
       }
-      if (hasMissionState() != other.hasMissionState()) return false;
+      result = result && (hasMissionState() == other.hasMissionState());
       if (hasMissionState()) {
-        if (!getMissionState()
-            .equals(other.getMissionState())) return false;
+        result = result && getMissionState()
+            .equals(other.getMissionState());
       }
-      if (!getBoxSn()
-          .equals(other.getBoxSn())) return false;
-      if (hasAvoidanceData() != other.hasAvoidanceData()) return false;
+      result = result && getBoxSn()
+          .equals(other.getBoxSn());
+      result = result && (hasAvoidanceData() == other.hasAvoidanceData());
       if (hasAvoidanceData()) {
-        if (!getAvoidanceData()
-            .equals(other.getAvoidanceData())) return false;
+        result = result && getAvoidanceData()
+            .equals(other.getAvoidanceData());
       }
-      if (!getHmsAlarmDataList()
-          .equals(other.getHmsAlarmDataList())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      result = result && getHmsAlarmDataList()
+          .equals(other.getHmsAlarmDataList());
+      return result;
     }
 
     @java.lang.Override
@@ -12413,7 +11482,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       if (hasFlightControllerState()) {
         hash = (37 * hash) + FLIGHTCONTROLLERSTATE_FIELD_NUMBER;
         hash = (53 * hash) + getFlightControllerState().hashCode();
@@ -12449,17 +11518,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -12519,7 +11577,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -12527,7 +11584,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -12555,7 +11611,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_UavState_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_UavState_fieldAccessorTable
@@ -12579,7 +11634,6 @@
           getHmsAlarmDataFieldBuilder();
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         if (flightControllerStateBuilder_ == null) {
@@ -12622,25 +11676,22 @@
         }
         if (hmsAlarmDataBuilder_ == null) {
           hmsAlarmData_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000080);
         } else {
           hmsAlarmDataBuilder_.clear();
         }
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_UavState_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState result = buildPartial();
         if (!result.isInitialized()) {
@@ -12649,10 +11700,10 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState(this);
         int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
         if (flightControllerStateBuilder_ == null) {
           result.flightControllerState_ = flightControllerState_;
         } else {
@@ -12685,51 +11736,45 @@
           result.avoidanceData_ = avoidanceDataBuilder_.build();
         }
         if (hmsAlarmDataBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
+          if (((bitField0_ & 0x00000080) == 0x00000080)) {
             hmsAlarmData_ = java.util.Collections.unmodifiableList(hmsAlarmData_);
-            bitField0_ = (bitField0_ & ~0x00000001);
+            bitField0_ = (bitField0_ & ~0x00000080);
           }
           result.hmsAlarmData_ = hmsAlarmData_;
         } else {
           result.hmsAlarmData_ = hmsAlarmDataBuilder_.build();
         }
+        result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState)other);
@@ -12767,7 +11812,7 @@
           if (!other.hmsAlarmData_.isEmpty()) {
             if (hmsAlarmData_.isEmpty()) {
               hmsAlarmData_ = other.hmsAlarmData_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+              bitField0_ = (bitField0_ & ~0x00000080);
             } else {
               ensureHmsAlarmDataIsMutable();
               hmsAlarmData_.addAll(other.hmsAlarmData_);
@@ -12780,7 +11825,7 @@
               hmsAlarmDataBuilder_.dispose();
               hmsAlarmDataBuilder_ = null;
               hmsAlarmData_ = other.hmsAlarmData_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+              bitField0_ = (bitField0_ & ~0x00000080);
               hmsAlarmDataBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getHmsAlarmDataFieldBuilder() : null;
@@ -12789,17 +11834,14 @@
             }
           }
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -12819,7 +11861,7 @@
       }
       private int bitField0_;
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState flightControllerState_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState flightControllerState_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState, com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerStateOrBuilder> flightControllerStateBuilder_;
       /**
@@ -12827,8 +11869,7 @@
        *飞控状态
        * </pre>
        *
-       * <code>.FlightControllerState flightControllerState = 1;</code>
-       * @return Whether the flightControllerState field is set.
+       * <code>optional .FlightControllerState flightControllerState = 1;</code>
        */
       public boolean hasFlightControllerState() {
         return flightControllerStateBuilder_ != null || flightControllerState_ != null;
@@ -12838,8 +11879,7 @@
        *飞控状态
        * </pre>
        *
-       * <code>.FlightControllerState flightControllerState = 1;</code>
-       * @return The flightControllerState.
+       * <code>optional .FlightControllerState flightControllerState = 1;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState getFlightControllerState() {
         if (flightControllerStateBuilder_ == null) {
@@ -12853,7 +11893,7 @@
        *飞控状态
        * </pre>
        *
-       * <code>.FlightControllerState flightControllerState = 1;</code>
+       * <code>optional .FlightControllerState flightControllerState = 1;</code>
        */
       public Builder setFlightControllerState(com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState value) {
         if (flightControllerStateBuilder_ == null) {
@@ -12873,7 +11913,7 @@
        *飞控状态
        * </pre>
        *
-       * <code>.FlightControllerState flightControllerState = 1;</code>
+       * <code>optional .FlightControllerState flightControllerState = 1;</code>
        */
       public Builder setFlightControllerState(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState.Builder builderForValue) {
@@ -12891,7 +11931,7 @@
        *飞控状态
        * </pre>
        *
-       * <code>.FlightControllerState flightControllerState = 1;</code>
+       * <code>optional .FlightControllerState flightControllerState = 1;</code>
        */
       public Builder mergeFlightControllerState(com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState value) {
         if (flightControllerStateBuilder_ == null) {
@@ -12913,7 +11953,7 @@
        *飞控状态
        * </pre>
        *
-       * <code>.FlightControllerState flightControllerState = 1;</code>
+       * <code>optional .FlightControllerState flightControllerState = 1;</code>
        */
       public Builder clearFlightControllerState() {
         if (flightControllerStateBuilder_ == null) {
@@ -12931,7 +11971,7 @@
        *飞控状态
        * </pre>
        *
-       * <code>.FlightControllerState flightControllerState = 1;</code>
+       * <code>optional .FlightControllerState flightControllerState = 1;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState.Builder getFlightControllerStateBuilder() {
         
@@ -12943,7 +11983,7 @@
        *飞控状态
        * </pre>
        *
-       * <code>.FlightControllerState flightControllerState = 1;</code>
+       * <code>optional .FlightControllerState flightControllerState = 1;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerStateOrBuilder getFlightControllerStateOrBuilder() {
         if (flightControllerStateBuilder_ != null) {
@@ -12958,7 +11998,7 @@
        *飞控状态
        * </pre>
        *
-       * <code>.FlightControllerState flightControllerState = 1;</code>
+       * <code>optional .FlightControllerState flightControllerState = 1;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState, com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerStateOrBuilder> 
@@ -12974,7 +12014,7 @@
         return flightControllerStateBuilder_;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState batteryState_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState batteryState_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState, com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateOrBuilder> batteryStateBuilder_;
       /**
@@ -12982,8 +12022,7 @@
        *电池状态
        * </pre>
        *
-       * <code>.BatteryState batteryState = 2;</code>
-       * @return Whether the batteryState field is set.
+       * <code>optional .BatteryState batteryState = 2;</code>
        */
       public boolean hasBatteryState() {
         return batteryStateBuilder_ != null || batteryState_ != null;
@@ -12993,8 +12032,7 @@
        *电池状态
        * </pre>
        *
-       * <code>.BatteryState batteryState = 2;</code>
-       * @return The batteryState.
+       * <code>optional .BatteryState batteryState = 2;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState getBatteryState() {
         if (batteryStateBuilder_ == null) {
@@ -13008,7 +12046,7 @@
        *电池状态
        * </pre>
        *
-       * <code>.BatteryState batteryState = 2;</code>
+       * <code>optional .BatteryState batteryState = 2;</code>
        */
       public Builder setBatteryState(com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState value) {
         if (batteryStateBuilder_ == null) {
@@ -13028,7 +12066,7 @@
        *电池状态
        * </pre>
        *
-       * <code>.BatteryState batteryState = 2;</code>
+       * <code>optional .BatteryState batteryState = 2;</code>
        */
       public Builder setBatteryState(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState.Builder builderForValue) {
@@ -13046,7 +12084,7 @@
        *电池状态
        * </pre>
        *
-       * <code>.BatteryState batteryState = 2;</code>
+       * <code>optional .BatteryState batteryState = 2;</code>
        */
       public Builder mergeBatteryState(com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState value) {
         if (batteryStateBuilder_ == null) {
@@ -13068,7 +12106,7 @@
        *电池状态
        * </pre>
        *
-       * <code>.BatteryState batteryState = 2;</code>
+       * <code>optional .BatteryState batteryState = 2;</code>
        */
       public Builder clearBatteryState() {
         if (batteryStateBuilder_ == null) {
@@ -13086,7 +12124,7 @@
        *电池状态
        * </pre>
        *
-       * <code>.BatteryState batteryState = 2;</code>
+       * <code>optional .BatteryState batteryState = 2;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState.Builder getBatteryStateBuilder() {
         
@@ -13098,7 +12136,7 @@
        *电池状态
        * </pre>
        *
-       * <code>.BatteryState batteryState = 2;</code>
+       * <code>optional .BatteryState batteryState = 2;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateOrBuilder getBatteryStateOrBuilder() {
         if (batteryStateBuilder_ != null) {
@@ -13113,7 +12151,7 @@
        *电池状态
        * </pre>
        *
-       * <code>.BatteryState batteryState = 2;</code>
+       * <code>optional .BatteryState batteryState = 2;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState, com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateOrBuilder> 
@@ -13129,7 +12167,7 @@
         return batteryStateBuilder_;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState ptzState_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState ptzState_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzStateOrBuilder> ptzStateBuilder_;
       /**
@@ -13137,8 +12175,7 @@
        *云台状态
        * </pre>
        *
-       * <code>.PtzState ptzState = 3;</code>
-       * @return Whether the ptzState field is set.
+       * <code>optional .PtzState ptzState = 3;</code>
        */
       public boolean hasPtzState() {
         return ptzStateBuilder_ != null || ptzState_ != null;
@@ -13148,8 +12185,7 @@
        *云台状态
        * </pre>
        *
-       * <code>.PtzState ptzState = 3;</code>
-       * @return The ptzState.
+       * <code>optional .PtzState ptzState = 3;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState getPtzState() {
         if (ptzStateBuilder_ == null) {
@@ -13163,7 +12199,7 @@
        *云台状态
        * </pre>
        *
-       * <code>.PtzState ptzState = 3;</code>
+       * <code>optional .PtzState ptzState = 3;</code>
        */
       public Builder setPtzState(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState value) {
         if (ptzStateBuilder_ == null) {
@@ -13183,7 +12219,7 @@
        *云台状态
        * </pre>
        *
-       * <code>.PtzState ptzState = 3;</code>
+       * <code>optional .PtzState ptzState = 3;</code>
        */
       public Builder setPtzState(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState.Builder builderForValue) {
@@ -13201,7 +12237,7 @@
        *云台状态
        * </pre>
        *
-       * <code>.PtzState ptzState = 3;</code>
+       * <code>optional .PtzState ptzState = 3;</code>
        */
       public Builder mergePtzState(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState value) {
         if (ptzStateBuilder_ == null) {
@@ -13223,7 +12259,7 @@
        *云台状态
        * </pre>
        *
-       * <code>.PtzState ptzState = 3;</code>
+       * <code>optional .PtzState ptzState = 3;</code>
        */
       public Builder clearPtzState() {
         if (ptzStateBuilder_ == null) {
@@ -13241,7 +12277,7 @@
        *云台状态
        * </pre>
        *
-       * <code>.PtzState ptzState = 3;</code>
+       * <code>optional .PtzState ptzState = 3;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState.Builder getPtzStateBuilder() {
         
@@ -13253,7 +12289,7 @@
        *云台状态
        * </pre>
        *
-       * <code>.PtzState ptzState = 3;</code>
+       * <code>optional .PtzState ptzState = 3;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzStateOrBuilder getPtzStateOrBuilder() {
         if (ptzStateBuilder_ != null) {
@@ -13268,7 +12304,7 @@
        *云台状态
        * </pre>
        *
-       * <code>.PtzState ptzState = 3;</code>
+       * <code>optional .PtzState ptzState = 3;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzStateOrBuilder> 
@@ -13284,7 +12320,7 @@
         return ptzStateBuilder_;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState cameraState_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState cameraState_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState, com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraStateOrBuilder> cameraStateBuilder_;
       /**
@@ -13292,8 +12328,7 @@
        *相机状态
        * </pre>
        *
-       * <code>.CameraState cameraState = 4;</code>
-       * @return Whether the cameraState field is set.
+       * <code>optional .CameraState cameraState = 4;</code>
        */
       public boolean hasCameraState() {
         return cameraStateBuilder_ != null || cameraState_ != null;
@@ -13303,8 +12338,7 @@
        *相机状态
        * </pre>
        *
-       * <code>.CameraState cameraState = 4;</code>
-       * @return The cameraState.
+       * <code>optional .CameraState cameraState = 4;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState getCameraState() {
         if (cameraStateBuilder_ == null) {
@@ -13318,7 +12352,7 @@
        *相机状态
        * </pre>
        *
-       * <code>.CameraState cameraState = 4;</code>
+       * <code>optional .CameraState cameraState = 4;</code>
        */
       public Builder setCameraState(com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState value) {
         if (cameraStateBuilder_ == null) {
@@ -13338,7 +12372,7 @@
        *相机状态
        * </pre>
        *
-       * <code>.CameraState cameraState = 4;</code>
+       * <code>optional .CameraState cameraState = 4;</code>
        */
       public Builder setCameraState(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState.Builder builderForValue) {
@@ -13356,7 +12390,7 @@
        *相机状态
        * </pre>
        *
-       * <code>.CameraState cameraState = 4;</code>
+       * <code>optional .CameraState cameraState = 4;</code>
        */
       public Builder mergeCameraState(com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState value) {
         if (cameraStateBuilder_ == null) {
@@ -13378,7 +12412,7 @@
        *相机状态
        * </pre>
        *
-       * <code>.CameraState cameraState = 4;</code>
+       * <code>optional .CameraState cameraState = 4;</code>
        */
       public Builder clearCameraState() {
         if (cameraStateBuilder_ == null) {
@@ -13396,7 +12430,7 @@
        *相机状态
        * </pre>
        *
-       * <code>.CameraState cameraState = 4;</code>
+       * <code>optional .CameraState cameraState = 4;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState.Builder getCameraStateBuilder() {
         
@@ -13408,7 +12442,7 @@
        *相机状态
        * </pre>
        *
-       * <code>.CameraState cameraState = 4;</code>
+       * <code>optional .CameraState cameraState = 4;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraStateOrBuilder getCameraStateOrBuilder() {
         if (cameraStateBuilder_ != null) {
@@ -13423,7 +12457,7 @@
        *相机状态
        * </pre>
        *
-       * <code>.CameraState cameraState = 4;</code>
+       * <code>optional .CameraState cameraState = 4;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState, com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraStateOrBuilder> 
@@ -13439,7 +12473,7 @@
         return cameraStateBuilder_;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState missionState_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState missionState_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState, com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionStateOrBuilder> missionStateBuilder_;
       /**
@@ -13447,8 +12481,7 @@
        *任务状态
        * </pre>
        *
-       * <code>.MissionState missionState = 5;</code>
-       * @return Whether the missionState field is set.
+       * <code>optional .MissionState missionState = 5;</code>
        */
       public boolean hasMissionState() {
         return missionStateBuilder_ != null || missionState_ != null;
@@ -13458,8 +12491,7 @@
        *任务状态
        * </pre>
        *
-       * <code>.MissionState missionState = 5;</code>
-       * @return The missionState.
+       * <code>optional .MissionState missionState = 5;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState getMissionState() {
         if (missionStateBuilder_ == null) {
@@ -13473,7 +12505,7 @@
        *任务状态
        * </pre>
        *
-       * <code>.MissionState missionState = 5;</code>
+       * <code>optional .MissionState missionState = 5;</code>
        */
       public Builder setMissionState(com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState value) {
         if (missionStateBuilder_ == null) {
@@ -13493,7 +12525,7 @@
        *任务状态
        * </pre>
        *
-       * <code>.MissionState missionState = 5;</code>
+       * <code>optional .MissionState missionState = 5;</code>
        */
       public Builder setMissionState(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState.Builder builderForValue) {
@@ -13511,7 +12543,7 @@
        *任务状态
        * </pre>
        *
-       * <code>.MissionState missionState = 5;</code>
+       * <code>optional .MissionState missionState = 5;</code>
        */
       public Builder mergeMissionState(com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState value) {
         if (missionStateBuilder_ == null) {
@@ -13533,7 +12565,7 @@
        *任务状态
        * </pre>
        *
-       * <code>.MissionState missionState = 5;</code>
+       * <code>optional .MissionState missionState = 5;</code>
        */
       public Builder clearMissionState() {
         if (missionStateBuilder_ == null) {
@@ -13551,7 +12583,7 @@
        *任务状态
        * </pre>
        *
-       * <code>.MissionState missionState = 5;</code>
+       * <code>optional .MissionState missionState = 5;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState.Builder getMissionStateBuilder() {
         
@@ -13563,7 +12595,7 @@
        *任务状态
        * </pre>
        *
-       * <code>.MissionState missionState = 5;</code>
+       * <code>optional .MissionState missionState = 5;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionStateOrBuilder getMissionStateOrBuilder() {
         if (missionStateBuilder_ != null) {
@@ -13578,7 +12610,7 @@
        *任务状态
        * </pre>
        *
-       * <code>.MissionState missionState = 5;</code>
+       * <code>optional .MissionState missionState = 5;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState, com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionStateOrBuilder> 
@@ -13600,8 +12632,7 @@
        *云盒编号
        * </pre>
        *
-       * <code>string boxSn = 6;</code>
-       * @return The boxSn.
+       * <code>optional string boxSn = 6;</code>
        */
       public java.lang.String getBoxSn() {
         java.lang.Object ref = boxSn_;
@@ -13620,8 +12651,7 @@
        *云盒编号
        * </pre>
        *
-       * <code>string boxSn = 6;</code>
-       * @return The bytes for boxSn.
+       * <code>optional string boxSn = 6;</code>
        */
       public com.google.protobuf.ByteString
           getBoxSnBytes() {
@@ -13641,9 +12671,7 @@
        *云盒编号
        * </pre>
        *
-       * <code>string boxSn = 6;</code>
-       * @param value The boxSn to set.
-       * @return This builder for chaining.
+       * <code>optional string boxSn = 6;</code>
        */
       public Builder setBoxSn(
           java.lang.String value) {
@@ -13660,8 +12688,7 @@
        *云盒编号
        * </pre>
        *
-       * <code>string boxSn = 6;</code>
-       * @return This builder for chaining.
+       * <code>optional string boxSn = 6;</code>
        */
       public Builder clearBoxSn() {
         
@@ -13674,9 +12701,7 @@
        *云盒编号
        * </pre>
        *
-       * <code>string boxSn = 6;</code>
-       * @param value The bytes for boxSn to set.
-       * @return This builder for chaining.
+       * <code>optional string boxSn = 6;</code>
        */
       public Builder setBoxSnBytes(
           com.google.protobuf.ByteString value) {
@@ -13690,7 +12715,7 @@
         return this;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData avoidanceData_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData avoidanceData_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceDataOrBuilder> avoidanceDataBuilder_;
       /**
@@ -13698,8 +12723,7 @@
        *避障数据
        * </pre>
        *
-       * <code>.AvoidanceData avoidanceData = 7;</code>
-       * @return Whether the avoidanceData field is set.
+       * <code>optional .AvoidanceData avoidanceData = 7;</code>
        */
       public boolean hasAvoidanceData() {
         return avoidanceDataBuilder_ != null || avoidanceData_ != null;
@@ -13709,8 +12733,7 @@
        *避障数据
        * </pre>
        *
-       * <code>.AvoidanceData avoidanceData = 7;</code>
-       * @return The avoidanceData.
+       * <code>optional .AvoidanceData avoidanceData = 7;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData getAvoidanceData() {
         if (avoidanceDataBuilder_ == null) {
@@ -13724,7 +12747,7 @@
        *避障数据
        * </pre>
        *
-       * <code>.AvoidanceData avoidanceData = 7;</code>
+       * <code>optional .AvoidanceData avoidanceData = 7;</code>
        */
       public Builder setAvoidanceData(com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData value) {
         if (avoidanceDataBuilder_ == null) {
@@ -13744,7 +12767,7 @@
        *避障数据
        * </pre>
        *
-       * <code>.AvoidanceData avoidanceData = 7;</code>
+       * <code>optional .AvoidanceData avoidanceData = 7;</code>
        */
       public Builder setAvoidanceData(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData.Builder builderForValue) {
@@ -13762,7 +12785,7 @@
        *避障数据
        * </pre>
        *
-       * <code>.AvoidanceData avoidanceData = 7;</code>
+       * <code>optional .AvoidanceData avoidanceData = 7;</code>
        */
       public Builder mergeAvoidanceData(com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData value) {
         if (avoidanceDataBuilder_ == null) {
@@ -13784,7 +12807,7 @@
        *避障数据
        * </pre>
        *
-       * <code>.AvoidanceData avoidanceData = 7;</code>
+       * <code>optional .AvoidanceData avoidanceData = 7;</code>
        */
       public Builder clearAvoidanceData() {
         if (avoidanceDataBuilder_ == null) {
@@ -13802,7 +12825,7 @@
        *避障数据
        * </pre>
        *
-       * <code>.AvoidanceData avoidanceData = 7;</code>
+       * <code>optional .AvoidanceData avoidanceData = 7;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData.Builder getAvoidanceDataBuilder() {
         
@@ -13814,7 +12837,7 @@
        *避障数据
        * </pre>
        *
-       * <code>.AvoidanceData avoidanceData = 7;</code>
+       * <code>optional .AvoidanceData avoidanceData = 7;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceDataOrBuilder getAvoidanceDataOrBuilder() {
         if (avoidanceDataBuilder_ != null) {
@@ -13829,7 +12852,7 @@
        *避障数据
        * </pre>
        *
-       * <code>.AvoidanceData avoidanceData = 7;</code>
+       * <code>optional .AvoidanceData avoidanceData = 7;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceDataOrBuilder> 
@@ -13848,9 +12871,9 @@
       private java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData> hmsAlarmData_ =
         java.util.Collections.emptyList();
       private void ensureHmsAlarmDataIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
+        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
           hmsAlarmData_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData>(hmsAlarmData_);
-          bitField0_ |= 0x00000001;
+          bitField0_ |= 0x00000080;
          }
       }
 
@@ -14044,7 +13067,7 @@
       public Builder clearHmsAlarmData() {
         if (hmsAlarmDataBuilder_ == null) {
           hmsAlarmData_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000080);
           onChanged();
         } else {
           hmsAlarmDataBuilder_.clear();
@@ -14149,23 +13172,21 @@
           hmsAlarmDataBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmDataOrBuilder>(
                   hmsAlarmData_,
-                  ((bitField0_ & 0x00000001) != 0),
+                  ((bitField0_ & 0x00000080) == 0x00000080),
                   getParentForChildren(),
                   isClean());
           hmsAlarmData_ = null;
         }
         return hmsAlarmDataBuilder_;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -14184,12 +13205,11 @@
 
     private static final com.google.protobuf.Parser<UavState>
         PARSER = new com.google.protobuf.AbstractParser<UavState>() {
-      @java.lang.Override
       public UavState parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new UavState(input, extensionRegistry);
+          return new UavState(input, extensionRegistry);
       }
     };
 
@@ -14202,7 +13222,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavState getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -14218,8 +13237,7 @@
      *卫星计数
      * </pre>
      *
-     * <code>uint32 satelliteCount = 1;</code>
-     * @return The satelliteCount.
+     * <code>optional uint32 satelliteCount = 1;</code>
      */
     int getSatelliteCount();
 
@@ -14228,8 +13246,7 @@
      *GPS信号级别,0~5[4,5等级可以执行航线]
      * </pre>
      *
-     * <code>uint32 gpsSignalLevel = 2;</code>
-     * @return The gpsSignalLevel.
+     * <code>optional uint32 gpsSignalLevel = 2;</code>
      */
     int getGpsSignalLevel();
 
@@ -14238,8 +13255,7 @@
      *飞行模式:1=手动控制模式,2=姿态模式,6=MODE_P_GPS,9=热点任务中,11=自动起飞中,12=降落中,14=航线中,15=返航中,17=虚拟摇杆控制中,33=强制降落中,41=解锁电机准备起飞中
      * </pre>
      *
-     * <code>uint32 flightMode = 3;</code>
-     * @return The flightMode.
+     * <code>optional uint32 flightMode = 3;</code>
      */
     int getFlightMode();
 
@@ -14248,8 +13264,7 @@
      *飞行状态:0=电机未启动(地面),1=电机启动未起飞(地面),2=起飞在空中(空中)
      * </pre>
      *
-     * <code>uint32 flightStatus = 4;</code>
-     * @return The flightStatus.
+     * <code>optional uint32 flightStatus = 4;</code>
      */
     int getFlightStatus();
 
@@ -14258,8 +13273,7 @@
      *起飞点(只包含lat和lng信息)
      * </pre>
      *
-     * <code>.PointData startPoint = 5;</code>
-     * @return Whether the startPoint field is set.
+     * <code>optional .PointData startPoint = 5;</code>
      */
     boolean hasStartPoint();
     /**
@@ -14267,8 +13281,7 @@
      *起飞点(只包含lat和lng信息)
      * </pre>
      *
-     * <code>.PointData startPoint = 5;</code>
-     * @return The startPoint.
+     * <code>optional .PointData startPoint = 5;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getStartPoint();
     /**
@@ -14276,7 +13289,7 @@
      *起飞点(只包含lat和lng信息)
      * </pre>
      *
-     * <code>.PointData startPoint = 5;</code>
+     * <code>optional .PointData startPoint = 5;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getStartPointOrBuilder();
 
@@ -14285,8 +13298,7 @@
      *返航点(只包含lat和lng信息)
      * </pre>
      *
-     * <code>.PointData homePoint = 6;</code>
-     * @return Whether the homePoint field is set.
+     * <code>optional .PointData homePoint = 6;</code>
      */
     boolean hasHomePoint();
     /**
@@ -14294,8 +13306,7 @@
      *返航点(只包含lat和lng信息)
      * </pre>
      *
-     * <code>.PointData homePoint = 6;</code>
-     * @return The homePoint.
+     * <code>optional .PointData homePoint = 6;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getHomePoint();
     /**
@@ -14303,7 +13314,7 @@
      *返航点(只包含lat和lng信息)
      * </pre>
      *
-     * <code>.PointData homePoint = 6;</code>
+     * <code>optional .PointData homePoint = 6;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getHomePointOrBuilder();
 
@@ -14312,8 +13323,7 @@
      *返航高度(单位:米)
      * </pre>
      *
-     * <code>int32 homeHeight = 7;</code>
-     * @return The homeHeight.
+     * <code>optional int32 homeHeight = 7;</code>
      */
     int getHomeHeight();
 
@@ -14322,8 +13332,7 @@
      *打点飞行模式:0=节能模式【飞机直线飞到目标点,需飞机在空中并且有控制权】,1=安全模式【飞机飞行至目标点高度再平飞到目标点,飞机可以在地面】 默认为节能模式
      * </pre>
      *
-     * <code>uint32 safeLine = 8;</code>
-     * @return The safeLine.
+     * <code>optional uint32 safeLine = 8;</code>
      */
     int getSafeLine();
 
@@ -14332,8 +13341,7 @@
      *控制权状态:0=遥控器,1=msdk,4=云盒[此控制权只针对虚拟摇杆控制权,起飞、降落、强制降落、航线操作、返航不需要此控制权,但是遥控器断连情况下,如果云盒没有控制权,飞机会执行遥控器的失联策略]
      * </pre>
      *
-     * <code>uint32 deviceStatus = 9;</code>
-     * @return The deviceStatus.
+     * <code>optional uint32 deviceStatus = 9;</code>
      */
     int getDeviceStatus();
 
@@ -14342,27 +13350,24 @@
      *UWB星数(只有等于4时,才可以开启uwb精准降落模式)
      * </pre>
      *
-     * <code>uint32 uwbNodeCount = 10;</code>
-     * @return The uwbNodeCount.
+     * <code>optional uint32 uwbNodeCount = 10;</code>
      */
     int getUwbNodeCount();
 
     /**
      * <pre>
-     *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)    
+     *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)
      * </pre>
      *
-     * <code>string rcMode = 11;</code>
-     * @return The rcMode.
+     * <code>optional string rcMode = 11;</code>
      */
     java.lang.String getRcMode();
     /**
      * <pre>
-     *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)    
+     *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)
      * </pre>
      *
-     * <code>string rcMode = 11;</code>
-     * @return The bytes for rcMode.
+     * <code>optional string rcMode = 11;</code>
      */
     com.google.protobuf.ByteString
         getRcModeBytes();
@@ -14372,8 +13377,7 @@
      *是否紧急制动中,0=否,1=是 【飞行器在地面限制起飞,飞行器在空中限制飞行.如果想操作飞行,请先解除紧急制动】
      * </pre>
      *
-     * <code>uint32 isEmergencyBrakeing = 12;</code>
-     * @return The isEmergencyBrakeing.
+     * <code>optional uint32 isEmergencyBrakeing = 12;</code>
      */
     int getIsEmergencyBrakeing();
 
@@ -14382,8 +13386,7 @@
      *飞行器是否在所有自定义电子围栏外,0=电子围栏内 1=电子围栏外
      * </pre>
      *
-     * <code>uint32 outFlyAreaFlag = 13;</code>
-     * @return The outFlyAreaFlag.
+     * <code>optional uint32 outFlyAreaFlag = 13;</code>
      */
     int getOutFlyAreaFlag();
 
@@ -14392,49 +13395,47 @@
      *飞行器是否在自定义禁飞区内,0=禁飞区外 1=禁飞区内
      * </pre>
      *
-     * <code>uint32 inNoFlyAreaFlag = 14;</code>
-     * @return The inNoFlyAreaFlag.
+     * <code>optional uint32 inNoFlyAreaFlag = 14;</code>
      */
     int getInNoFlyAreaFlag();
   }
   /**
    * Protobuf type {@code FlightControllerState}
    */
-  public static final class FlightControllerState extends
+  public  static final class FlightControllerState extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:FlightControllerState)
       FlightControllerStateOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use FlightControllerState.newBuilder() to construct.
     private FlightControllerState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private FlightControllerState() {
+      satelliteCount_ = 0;
+      gpsSignalLevel_ = 0;
+      flightMode_ = 0;
+      flightStatus_ = 0;
+      homeHeight_ = 0;
+      safeLine_ = 0;
+      deviceStatus_ = 0;
+      uwbNodeCount_ = 0;
       rcMode_ = "";
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new FlightControllerState();
+      isEmergencyBrakeing_ = 0;
+      outFlyAreaFlag_ = 0;
+      inNoFlyAreaFlag_ = 0;
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private FlightControllerState(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -14443,6 +13444,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 8: {
 
               satelliteCount_ = input.readUInt32();
@@ -14530,24 +13537,14 @@
               inNoFlyAreaFlag_ = input.readUInt32();
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -14556,7 +13553,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_FlightControllerState_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_FlightControllerState_fieldAccessorTable
@@ -14571,10 +13567,8 @@
      *卫星计数
      * </pre>
      *
-     * <code>uint32 satelliteCount = 1;</code>
-     * @return The satelliteCount.
+     * <code>optional uint32 satelliteCount = 1;</code>
      */
-    @java.lang.Override
     public int getSatelliteCount() {
       return satelliteCount_;
     }
@@ -14586,10 +13580,8 @@
      *GPS信号级别,0~5[4,5等级可以执行航线]
      * </pre>
      *
-     * <code>uint32 gpsSignalLevel = 2;</code>
-     * @return The gpsSignalLevel.
+     * <code>optional uint32 gpsSignalLevel = 2;</code>
      */
-    @java.lang.Override
     public int getGpsSignalLevel() {
       return gpsSignalLevel_;
     }
@@ -14601,10 +13593,8 @@
      *飞行模式:1=手动控制模式,2=姿态模式,6=MODE_P_GPS,9=热点任务中,11=自动起飞中,12=降落中,14=航线中,15=返航中,17=虚拟摇杆控制中,33=强制降落中,41=解锁电机准备起飞中
      * </pre>
      *
-     * <code>uint32 flightMode = 3;</code>
-     * @return The flightMode.
+     * <code>optional uint32 flightMode = 3;</code>
      */
-    @java.lang.Override
     public int getFlightMode() {
       return flightMode_;
     }
@@ -14616,10 +13606,8 @@
      *飞行状态:0=电机未启动(地面),1=电机启动未起飞(地面),2=起飞在空中(空中)
      * </pre>
      *
-     * <code>uint32 flightStatus = 4;</code>
-     * @return The flightStatus.
+     * <code>optional uint32 flightStatus = 4;</code>
      */
-    @java.lang.Override
     public int getFlightStatus() {
       return flightStatus_;
     }
@@ -14631,10 +13619,8 @@
      *起飞点(只包含lat和lng信息)
      * </pre>
      *
-     * <code>.PointData startPoint = 5;</code>
-     * @return Whether the startPoint field is set.
+     * <code>optional .PointData startPoint = 5;</code>
      */
-    @java.lang.Override
     public boolean hasStartPoint() {
       return startPoint_ != null;
     }
@@ -14643,10 +13629,8 @@
      *起飞点(只包含lat和lng信息)
      * </pre>
      *
-     * <code>.PointData startPoint = 5;</code>
-     * @return The startPoint.
+     * <code>optional .PointData startPoint = 5;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getStartPoint() {
       return startPoint_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.getDefaultInstance() : startPoint_;
     }
@@ -14655,9 +13639,8 @@
      *起飞点(只包含lat和lng信息)
      * </pre>
      *
-     * <code>.PointData startPoint = 5;</code>
+     * <code>optional .PointData startPoint = 5;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getStartPointOrBuilder() {
       return getStartPoint();
     }
@@ -14669,10 +13652,8 @@
      *返航点(只包含lat和lng信息)
      * </pre>
      *
-     * <code>.PointData homePoint = 6;</code>
-     * @return Whether the homePoint field is set.
+     * <code>optional .PointData homePoint = 6;</code>
      */
-    @java.lang.Override
     public boolean hasHomePoint() {
       return homePoint_ != null;
     }
@@ -14681,10 +13662,8 @@
      *返航点(只包含lat和lng信息)
      * </pre>
      *
-     * <code>.PointData homePoint = 6;</code>
-     * @return The homePoint.
+     * <code>optional .PointData homePoint = 6;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getHomePoint() {
       return homePoint_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.getDefaultInstance() : homePoint_;
     }
@@ -14693,9 +13672,8 @@
      *返航点(只包含lat和lng信息)
      * </pre>
      *
-     * <code>.PointData homePoint = 6;</code>
+     * <code>optional .PointData homePoint = 6;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getHomePointOrBuilder() {
       return getHomePoint();
     }
@@ -14707,10 +13685,8 @@
      *返航高度(单位:米)
      * </pre>
      *
-     * <code>int32 homeHeight = 7;</code>
-     * @return The homeHeight.
+     * <code>optional int32 homeHeight = 7;</code>
      */
-    @java.lang.Override
     public int getHomeHeight() {
       return homeHeight_;
     }
@@ -14722,10 +13698,8 @@
      *打点飞行模式:0=节能模式【飞机直线飞到目标点,需飞机在空中并且有控制权】,1=安全模式【飞机飞行至目标点高度再平飞到目标点,飞机可以在地面】 默认为节能模式
      * </pre>
      *
-     * <code>uint32 safeLine = 8;</code>
-     * @return The safeLine.
+     * <code>optional uint32 safeLine = 8;</code>
      */
-    @java.lang.Override
     public int getSafeLine() {
       return safeLine_;
     }
@@ -14737,10 +13711,8 @@
      *控制权状态:0=遥控器,1=msdk,4=云盒[此控制权只针对虚拟摇杆控制权,起飞、降落、强制降落、航线操作、返航不需要此控制权,但是遥控器断连情况下,如果云盒没有控制权,飞机会执行遥控器的失联策略]
      * </pre>
      *
-     * <code>uint32 deviceStatus = 9;</code>
-     * @return The deviceStatus.
+     * <code>optional uint32 deviceStatus = 9;</code>
      */
-    @java.lang.Override
     public int getDeviceStatus() {
       return deviceStatus_;
     }
@@ -14752,10 +13724,8 @@
      *UWB星数(只有等于4时,才可以开启uwb精准降落模式)
      * </pre>
      *
-     * <code>uint32 uwbNodeCount = 10;</code>
-     * @return The uwbNodeCount.
+     * <code>optional uint32 uwbNodeCount = 10;</code>
      */
-    @java.lang.Override
     public int getUwbNodeCount() {
       return uwbNodeCount_;
     }
@@ -14764,13 +13734,11 @@
     private volatile java.lang.Object rcMode_;
     /**
      * <pre>
-     *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)    
+     *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)
      * </pre>
      *
-     * <code>string rcMode = 11;</code>
-     * @return The rcMode.
+     * <code>optional string rcMode = 11;</code>
      */
-    @java.lang.Override
     public java.lang.String getRcMode() {
       java.lang.Object ref = rcMode_;
       if (ref instanceof java.lang.String) {
@@ -14785,13 +13753,11 @@
     }
     /**
      * <pre>
-     *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)    
+     *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)
      * </pre>
      *
-     * <code>string rcMode = 11;</code>
-     * @return The bytes for rcMode.
+     * <code>optional string rcMode = 11;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getRcModeBytes() {
       java.lang.Object ref = rcMode_;
@@ -14813,10 +13779,8 @@
      *是否紧急制动中,0=否,1=是 【飞行器在地面限制起飞,飞行器在空中限制飞行.如果想操作飞行,请先解除紧急制动】
      * </pre>
      *
-     * <code>uint32 isEmergencyBrakeing = 12;</code>
-     * @return The isEmergencyBrakeing.
+     * <code>optional uint32 isEmergencyBrakeing = 12;</code>
      */
-    @java.lang.Override
     public int getIsEmergencyBrakeing() {
       return isEmergencyBrakeing_;
     }
@@ -14828,10 +13792,8 @@
      *飞行器是否在所有自定义电子围栏外,0=电子围栏内 1=电子围栏外
      * </pre>
      *
-     * <code>uint32 outFlyAreaFlag = 13;</code>
-     * @return The outFlyAreaFlag.
+     * <code>optional uint32 outFlyAreaFlag = 13;</code>
      */
-    @java.lang.Override
     public int getOutFlyAreaFlag() {
       return outFlyAreaFlag_;
     }
@@ -14843,16 +13805,13 @@
      *飞行器是否在自定义禁飞区内,0=禁飞区外 1=禁飞区内
      * </pre>
      *
-     * <code>uint32 inNoFlyAreaFlag = 14;</code>
-     * @return The inNoFlyAreaFlag.
+     * <code>optional uint32 inNoFlyAreaFlag = 14;</code>
      */
-    @java.lang.Override
     public int getInNoFlyAreaFlag() {
       return inNoFlyAreaFlag_;
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -14862,7 +13821,6 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       if (satelliteCount_ != 0) {
@@ -14895,7 +13853,7 @@
       if (uwbNodeCount_ != 0) {
         output.writeUInt32(10, uwbNodeCount_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(rcMode_)) {
+      if (!getRcModeBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 11, rcMode_);
       }
       if (isEmergencyBrakeing_ != 0) {
@@ -14907,10 +13865,8 @@
       if (inNoFlyAreaFlag_ != 0) {
         output.writeUInt32(14, inNoFlyAreaFlag_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -14956,7 +13912,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(10, uwbNodeCount_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(rcMode_)) {
+      if (!getRcModeBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, rcMode_);
       }
       if (isEmergencyBrakeing_ != 0) {
@@ -14971,11 +13927,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(14, inNoFlyAreaFlag_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -14986,42 +13942,42 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState) obj;
 
-      if (getSatelliteCount()
-          != other.getSatelliteCount()) return false;
-      if (getGpsSignalLevel()
-          != other.getGpsSignalLevel()) return false;
-      if (getFlightMode()
-          != other.getFlightMode()) return false;
-      if (getFlightStatus()
-          != other.getFlightStatus()) return false;
-      if (hasStartPoint() != other.hasStartPoint()) return false;
+      boolean result = true;
+      result = result && (getSatelliteCount()
+          == other.getSatelliteCount());
+      result = result && (getGpsSignalLevel()
+          == other.getGpsSignalLevel());
+      result = result && (getFlightMode()
+          == other.getFlightMode());
+      result = result && (getFlightStatus()
+          == other.getFlightStatus());
+      result = result && (hasStartPoint() == other.hasStartPoint());
       if (hasStartPoint()) {
-        if (!getStartPoint()
-            .equals(other.getStartPoint())) return false;
+        result = result && getStartPoint()
+            .equals(other.getStartPoint());
       }
-      if (hasHomePoint() != other.hasHomePoint()) return false;
+      result = result && (hasHomePoint() == other.hasHomePoint());
       if (hasHomePoint()) {
-        if (!getHomePoint()
-            .equals(other.getHomePoint())) return false;
+        result = result && getHomePoint()
+            .equals(other.getHomePoint());
       }
-      if (getHomeHeight()
-          != other.getHomeHeight()) return false;
-      if (getSafeLine()
-          != other.getSafeLine()) return false;
-      if (getDeviceStatus()
-          != other.getDeviceStatus()) return false;
-      if (getUwbNodeCount()
-          != other.getUwbNodeCount()) return false;
-      if (!getRcMode()
-          .equals(other.getRcMode())) return false;
-      if (getIsEmergencyBrakeing()
-          != other.getIsEmergencyBrakeing()) return false;
-      if (getOutFlyAreaFlag()
-          != other.getOutFlyAreaFlag()) return false;
-      if (getInNoFlyAreaFlag()
-          != other.getInNoFlyAreaFlag()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      result = result && (getHomeHeight()
+          == other.getHomeHeight());
+      result = result && (getSafeLine()
+          == other.getSafeLine());
+      result = result && (getDeviceStatus()
+          == other.getDeviceStatus());
+      result = result && (getUwbNodeCount()
+          == other.getUwbNodeCount());
+      result = result && getRcMode()
+          .equals(other.getRcMode());
+      result = result && (getIsEmergencyBrakeing()
+          == other.getIsEmergencyBrakeing());
+      result = result && (getOutFlyAreaFlag()
+          == other.getOutFlyAreaFlag());
+      result = result && (getInNoFlyAreaFlag()
+          == other.getInNoFlyAreaFlag());
+      return result;
     }
 
     @java.lang.Override
@@ -15030,7 +13986,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + SATELLITECOUNT_FIELD_NUMBER;
       hash = (53 * hash) + getSatelliteCount();
       hash = (37 * hash) + GPSSIGNALLEVEL_FIELD_NUMBER;
@@ -15068,17 +14024,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -15138,7 +14083,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -15146,7 +14090,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -15170,7 +14113,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_FlightControllerState_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_FlightControllerState_fieldAccessorTable
@@ -15193,7 +14135,6 @@
                 .alwaysUseFieldBuilders) {
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         satelliteCount_ = 0;
@@ -15235,18 +14176,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_FlightControllerState_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState result = buildPartial();
         if (!result.isInitialized()) {
@@ -15255,7 +14193,6 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState(this);
         result.satelliteCount_ = satelliteCount_;
@@ -15284,39 +14221,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState)other);
@@ -15371,17 +14301,14 @@
         if (other.getInNoFlyAreaFlag() != 0) {
           setInNoFlyAreaFlag(other.getInNoFlyAreaFlag());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -15406,10 +14333,8 @@
        *卫星计数
        * </pre>
        *
-       * <code>uint32 satelliteCount = 1;</code>
-       * @return The satelliteCount.
+       * <code>optional uint32 satelliteCount = 1;</code>
        */
-      @java.lang.Override
       public int getSatelliteCount() {
         return satelliteCount_;
       }
@@ -15418,9 +14343,7 @@
        *卫星计数
        * </pre>
        *
-       * <code>uint32 satelliteCount = 1;</code>
-       * @param value The satelliteCount to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 satelliteCount = 1;</code>
        */
       public Builder setSatelliteCount(int value) {
         
@@ -15433,8 +14356,7 @@
        *卫星计数
        * </pre>
        *
-       * <code>uint32 satelliteCount = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 satelliteCount = 1;</code>
        */
       public Builder clearSatelliteCount() {
         
@@ -15449,10 +14371,8 @@
        *GPS信号级别,0~5[4,5等级可以执行航线]
        * </pre>
        *
-       * <code>uint32 gpsSignalLevel = 2;</code>
-       * @return The gpsSignalLevel.
+       * <code>optional uint32 gpsSignalLevel = 2;</code>
        */
-      @java.lang.Override
       public int getGpsSignalLevel() {
         return gpsSignalLevel_;
       }
@@ -15461,9 +14381,7 @@
        *GPS信号级别,0~5[4,5等级可以执行航线]
        * </pre>
        *
-       * <code>uint32 gpsSignalLevel = 2;</code>
-       * @param value The gpsSignalLevel to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 gpsSignalLevel = 2;</code>
        */
       public Builder setGpsSignalLevel(int value) {
         
@@ -15476,8 +14394,7 @@
        *GPS信号级别,0~5[4,5等级可以执行航线]
        * </pre>
        *
-       * <code>uint32 gpsSignalLevel = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 gpsSignalLevel = 2;</code>
        */
       public Builder clearGpsSignalLevel() {
         
@@ -15492,10 +14409,8 @@
        *飞行模式:1=手动控制模式,2=姿态模式,6=MODE_P_GPS,9=热点任务中,11=自动起飞中,12=降落中,14=航线中,15=返航中,17=虚拟摇杆控制中,33=强制降落中,41=解锁电机准备起飞中
        * </pre>
        *
-       * <code>uint32 flightMode = 3;</code>
-       * @return The flightMode.
+       * <code>optional uint32 flightMode = 3;</code>
        */
-      @java.lang.Override
       public int getFlightMode() {
         return flightMode_;
       }
@@ -15504,9 +14419,7 @@
        *飞行模式:1=手动控制模式,2=姿态模式,6=MODE_P_GPS,9=热点任务中,11=自动起飞中,12=降落中,14=航线中,15=返航中,17=虚拟摇杆控制中,33=强制降落中,41=解锁电机准备起飞中
        * </pre>
        *
-       * <code>uint32 flightMode = 3;</code>
-       * @param value The flightMode to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 flightMode = 3;</code>
        */
       public Builder setFlightMode(int value) {
         
@@ -15519,8 +14432,7 @@
        *飞行模式:1=手动控制模式,2=姿态模式,6=MODE_P_GPS,9=热点任务中,11=自动起飞中,12=降落中,14=航线中,15=返航中,17=虚拟摇杆控制中,33=强制降落中,41=解锁电机准备起飞中
        * </pre>
        *
-       * <code>uint32 flightMode = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 flightMode = 3;</code>
        */
       public Builder clearFlightMode() {
         
@@ -15535,10 +14447,8 @@
        *飞行状态:0=电机未启动(地面),1=电机启动未起飞(地面),2=起飞在空中(空中)
        * </pre>
        *
-       * <code>uint32 flightStatus = 4;</code>
-       * @return The flightStatus.
+       * <code>optional uint32 flightStatus = 4;</code>
        */
-      @java.lang.Override
       public int getFlightStatus() {
         return flightStatus_;
       }
@@ -15547,9 +14457,7 @@
        *飞行状态:0=电机未启动(地面),1=电机启动未起飞(地面),2=起飞在空中(空中)
        * </pre>
        *
-       * <code>uint32 flightStatus = 4;</code>
-       * @param value The flightStatus to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 flightStatus = 4;</code>
        */
       public Builder setFlightStatus(int value) {
         
@@ -15562,8 +14470,7 @@
        *飞行状态:0=电机未启动(地面),1=电机启动未起飞(地面),2=起飞在空中(空中)
        * </pre>
        *
-       * <code>uint32 flightStatus = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 flightStatus = 4;</code>
        */
       public Builder clearFlightStatus() {
         
@@ -15572,7 +14479,7 @@
         return this;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData startPoint_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData startPoint_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder> startPointBuilder_;
       /**
@@ -15580,8 +14487,7 @@
        *起飞点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData startPoint = 5;</code>
-       * @return Whether the startPoint field is set.
+       * <code>optional .PointData startPoint = 5;</code>
        */
       public boolean hasStartPoint() {
         return startPointBuilder_ != null || startPoint_ != null;
@@ -15591,8 +14497,7 @@
        *起飞点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData startPoint = 5;</code>
-       * @return The startPoint.
+       * <code>optional .PointData startPoint = 5;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getStartPoint() {
         if (startPointBuilder_ == null) {
@@ -15606,7 +14511,7 @@
        *起飞点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData startPoint = 5;</code>
+       * <code>optional .PointData startPoint = 5;</code>
        */
       public Builder setStartPoint(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData value) {
         if (startPointBuilder_ == null) {
@@ -15626,7 +14531,7 @@
        *起飞点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData startPoint = 5;</code>
+       * <code>optional .PointData startPoint = 5;</code>
        */
       public Builder setStartPoint(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder builderForValue) {
@@ -15644,7 +14549,7 @@
        *起飞点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData startPoint = 5;</code>
+       * <code>optional .PointData startPoint = 5;</code>
        */
       public Builder mergeStartPoint(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData value) {
         if (startPointBuilder_ == null) {
@@ -15666,7 +14571,7 @@
        *起飞点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData startPoint = 5;</code>
+       * <code>optional .PointData startPoint = 5;</code>
        */
       public Builder clearStartPoint() {
         if (startPointBuilder_ == null) {
@@ -15684,7 +14589,7 @@
        *起飞点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData startPoint = 5;</code>
+       * <code>optional .PointData startPoint = 5;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder getStartPointBuilder() {
         
@@ -15696,7 +14601,7 @@
        *起飞点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData startPoint = 5;</code>
+       * <code>optional .PointData startPoint = 5;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getStartPointOrBuilder() {
         if (startPointBuilder_ != null) {
@@ -15711,7 +14616,7 @@
        *起飞点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData startPoint = 5;</code>
+       * <code>optional .PointData startPoint = 5;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder> 
@@ -15727,7 +14632,7 @@
         return startPointBuilder_;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData homePoint_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData homePoint_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder> homePointBuilder_;
       /**
@@ -15735,8 +14640,7 @@
        *返航点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData homePoint = 6;</code>
-       * @return Whether the homePoint field is set.
+       * <code>optional .PointData homePoint = 6;</code>
        */
       public boolean hasHomePoint() {
         return homePointBuilder_ != null || homePoint_ != null;
@@ -15746,8 +14650,7 @@
        *返航点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData homePoint = 6;</code>
-       * @return The homePoint.
+       * <code>optional .PointData homePoint = 6;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getHomePoint() {
         if (homePointBuilder_ == null) {
@@ -15761,7 +14664,7 @@
        *返航点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData homePoint = 6;</code>
+       * <code>optional .PointData homePoint = 6;</code>
        */
       public Builder setHomePoint(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData value) {
         if (homePointBuilder_ == null) {
@@ -15781,7 +14684,7 @@
        *返航点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData homePoint = 6;</code>
+       * <code>optional .PointData homePoint = 6;</code>
        */
       public Builder setHomePoint(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder builderForValue) {
@@ -15799,7 +14702,7 @@
        *返航点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData homePoint = 6;</code>
+       * <code>optional .PointData homePoint = 6;</code>
        */
       public Builder mergeHomePoint(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData value) {
         if (homePointBuilder_ == null) {
@@ -15821,7 +14724,7 @@
        *返航点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData homePoint = 6;</code>
+       * <code>optional .PointData homePoint = 6;</code>
        */
       public Builder clearHomePoint() {
         if (homePointBuilder_ == null) {
@@ -15839,7 +14742,7 @@
        *返航点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData homePoint = 6;</code>
+       * <code>optional .PointData homePoint = 6;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder getHomePointBuilder() {
         
@@ -15851,7 +14754,7 @@
        *返航点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData homePoint = 6;</code>
+       * <code>optional .PointData homePoint = 6;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getHomePointOrBuilder() {
         if (homePointBuilder_ != null) {
@@ -15866,7 +14769,7 @@
        *返航点(只包含lat和lng信息)
        * </pre>
        *
-       * <code>.PointData homePoint = 6;</code>
+       * <code>optional .PointData homePoint = 6;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder> 
@@ -15888,10 +14791,8 @@
        *返航高度(单位:米)
        * </pre>
        *
-       * <code>int32 homeHeight = 7;</code>
-       * @return The homeHeight.
+       * <code>optional int32 homeHeight = 7;</code>
        */
-      @java.lang.Override
       public int getHomeHeight() {
         return homeHeight_;
       }
@@ -15900,9 +14801,7 @@
        *返航高度(单位:米)
        * </pre>
        *
-       * <code>int32 homeHeight = 7;</code>
-       * @param value The homeHeight to set.
-       * @return This builder for chaining.
+       * <code>optional int32 homeHeight = 7;</code>
        */
       public Builder setHomeHeight(int value) {
         
@@ -15915,8 +14814,7 @@
        *返航高度(单位:米)
        * </pre>
        *
-       * <code>int32 homeHeight = 7;</code>
-       * @return This builder for chaining.
+       * <code>optional int32 homeHeight = 7;</code>
        */
       public Builder clearHomeHeight() {
         
@@ -15931,10 +14829,8 @@
        *打点飞行模式:0=节能模式【飞机直线飞到目标点,需飞机在空中并且有控制权】,1=安全模式【飞机飞行至目标点高度再平飞到目标点,飞机可以在地面】 默认为节能模式
        * </pre>
        *
-       * <code>uint32 safeLine = 8;</code>
-       * @return The safeLine.
+       * <code>optional uint32 safeLine = 8;</code>
        */
-      @java.lang.Override
       public int getSafeLine() {
         return safeLine_;
       }
@@ -15943,9 +14839,7 @@
        *打点飞行模式:0=节能模式【飞机直线飞到目标点,需飞机在空中并且有控制权】,1=安全模式【飞机飞行至目标点高度再平飞到目标点,飞机可以在地面】 默认为节能模式
        * </pre>
        *
-       * <code>uint32 safeLine = 8;</code>
-       * @param value The safeLine to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 safeLine = 8;</code>
        */
       public Builder setSafeLine(int value) {
         
@@ -15958,8 +14852,7 @@
        *打点飞行模式:0=节能模式【飞机直线飞到目标点,需飞机在空中并且有控制权】,1=安全模式【飞机飞行至目标点高度再平飞到目标点,飞机可以在地面】 默认为节能模式
        * </pre>
        *
-       * <code>uint32 safeLine = 8;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 safeLine = 8;</code>
        */
       public Builder clearSafeLine() {
         
@@ -15974,10 +14867,8 @@
        *控制权状态:0=遥控器,1=msdk,4=云盒[此控制权只针对虚拟摇杆控制权,起飞、降落、强制降落、航线操作、返航不需要此控制权,但是遥控器断连情况下,如果云盒没有控制权,飞机会执行遥控器的失联策略]
        * </pre>
        *
-       * <code>uint32 deviceStatus = 9;</code>
-       * @return The deviceStatus.
+       * <code>optional uint32 deviceStatus = 9;</code>
        */
-      @java.lang.Override
       public int getDeviceStatus() {
         return deviceStatus_;
       }
@@ -15986,9 +14877,7 @@
        *控制权状态:0=遥控器,1=msdk,4=云盒[此控制权只针对虚拟摇杆控制权,起飞、降落、强制降落、航线操作、返航不需要此控制权,但是遥控器断连情况下,如果云盒没有控制权,飞机会执行遥控器的失联策略]
        * </pre>
        *
-       * <code>uint32 deviceStatus = 9;</code>
-       * @param value The deviceStatus to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 deviceStatus = 9;</code>
        */
       public Builder setDeviceStatus(int value) {
         
@@ -16001,8 +14890,7 @@
        *控制权状态:0=遥控器,1=msdk,4=云盒[此控制权只针对虚拟摇杆控制权,起飞、降落、强制降落、航线操作、返航不需要此控制权,但是遥控器断连情况下,如果云盒没有控制权,飞机会执行遥控器的失联策略]
        * </pre>
        *
-       * <code>uint32 deviceStatus = 9;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 deviceStatus = 9;</code>
        */
       public Builder clearDeviceStatus() {
         
@@ -16017,10 +14905,8 @@
        *UWB星数(只有等于4时,才可以开启uwb精准降落模式)
        * </pre>
        *
-       * <code>uint32 uwbNodeCount = 10;</code>
-       * @return The uwbNodeCount.
+       * <code>optional uint32 uwbNodeCount = 10;</code>
        */
-      @java.lang.Override
       public int getUwbNodeCount() {
         return uwbNodeCount_;
       }
@@ -16029,9 +14915,7 @@
        *UWB星数(只有等于4时,才可以开启uwb精准降落模式)
        * </pre>
        *
-       * <code>uint32 uwbNodeCount = 10;</code>
-       * @param value The uwbNodeCount to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 uwbNodeCount = 10;</code>
        */
       public Builder setUwbNodeCount(int value) {
         
@@ -16044,8 +14928,7 @@
        *UWB星数(只有等于4时,才可以开启uwb精准降落模式)
        * </pre>
        *
-       * <code>uint32 uwbNodeCount = 10;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 uwbNodeCount = 10;</code>
        */
       public Builder clearUwbNodeCount() {
         
@@ -16057,11 +14940,10 @@
       private java.lang.Object rcMode_ = "";
       /**
        * <pre>
-       *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)    
+       *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)
        * </pre>
        *
-       * <code>string rcMode = 11;</code>
-       * @return The rcMode.
+       * <code>optional string rcMode = 11;</code>
        */
       public java.lang.String getRcMode() {
         java.lang.Object ref = rcMode_;
@@ -16077,11 +14959,10 @@
       }
       /**
        * <pre>
-       *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)    
+       *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)
        * </pre>
        *
-       * <code>string rcMode = 11;</code>
-       * @return The bytes for rcMode.
+       * <code>optional string rcMode = 11;</code>
        */
       public com.google.protobuf.ByteString
           getRcModeBytes() {
@@ -16098,12 +14979,10 @@
       }
       /**
        * <pre>
-       *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)    
+       *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)
        * </pre>
        *
-       * <code>string rcMode = 11;</code>
-       * @param value The rcMode to set.
-       * @return This builder for chaining.
+       * <code>optional string rcMode = 11;</code>
        */
       public Builder setRcMode(
           java.lang.String value) {
@@ -16117,11 +14996,10 @@
       }
       /**
        * <pre>
-       *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)    
+       *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)
        * </pre>
        *
-       * <code>string rcMode = 11;</code>
-       * @return This builder for chaining.
+       * <code>optional string rcMode = 11;</code>
        */
       public Builder clearRcMode() {
         
@@ -16131,12 +15009,10 @@
       }
       /**
        * <pre>
-       *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)    
+       *遥控器档位模式(说明:1.遥控器与飞机正常连接:(M300:T-P-S/M30:F-S-N/M3:C-N-S),2.遥控器与飞机未连接:W,3.只有在M300-P挡、M30-N挡、M3-N挡下云盒才能正常控制无人机)
        * </pre>
        *
-       * <code>string rcMode = 11;</code>
-       * @param value The bytes for rcMode to set.
-       * @return This builder for chaining.
+       * <code>optional string rcMode = 11;</code>
        */
       public Builder setRcModeBytes(
           com.google.protobuf.ByteString value) {
@@ -16156,10 +15032,8 @@
        *是否紧急制动中,0=否,1=是 【飞行器在地面限制起飞,飞行器在空中限制飞行.如果想操作飞行,请先解除紧急制动】
        * </pre>
        *
-       * <code>uint32 isEmergencyBrakeing = 12;</code>
-       * @return The isEmergencyBrakeing.
+       * <code>optional uint32 isEmergencyBrakeing = 12;</code>
        */
-      @java.lang.Override
       public int getIsEmergencyBrakeing() {
         return isEmergencyBrakeing_;
       }
@@ -16168,9 +15042,7 @@
        *是否紧急制动中,0=否,1=是 【飞行器在地面限制起飞,飞行器在空中限制飞行.如果想操作飞行,请先解除紧急制动】
        * </pre>
        *
-       * <code>uint32 isEmergencyBrakeing = 12;</code>
-       * @param value The isEmergencyBrakeing to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isEmergencyBrakeing = 12;</code>
        */
       public Builder setIsEmergencyBrakeing(int value) {
         
@@ -16183,8 +15055,7 @@
        *是否紧急制动中,0=否,1=是 【飞行器在地面限制起飞,飞行器在空中限制飞行.如果想操作飞行,请先解除紧急制动】
        * </pre>
        *
-       * <code>uint32 isEmergencyBrakeing = 12;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isEmergencyBrakeing = 12;</code>
        */
       public Builder clearIsEmergencyBrakeing() {
         
@@ -16199,10 +15070,8 @@
        *飞行器是否在所有自定义电子围栏外,0=电子围栏内 1=电子围栏外
        * </pre>
        *
-       * <code>uint32 outFlyAreaFlag = 13;</code>
-       * @return The outFlyAreaFlag.
+       * <code>optional uint32 outFlyAreaFlag = 13;</code>
        */
-      @java.lang.Override
       public int getOutFlyAreaFlag() {
         return outFlyAreaFlag_;
       }
@@ -16211,9 +15080,7 @@
        *飞行器是否在所有自定义电子围栏外,0=电子围栏内 1=电子围栏外
        * </pre>
        *
-       * <code>uint32 outFlyAreaFlag = 13;</code>
-       * @param value The outFlyAreaFlag to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 outFlyAreaFlag = 13;</code>
        */
       public Builder setOutFlyAreaFlag(int value) {
         
@@ -16226,8 +15093,7 @@
        *飞行器是否在所有自定义电子围栏外,0=电子围栏内 1=电子围栏外
        * </pre>
        *
-       * <code>uint32 outFlyAreaFlag = 13;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 outFlyAreaFlag = 13;</code>
        */
       public Builder clearOutFlyAreaFlag() {
         
@@ -16242,10 +15108,8 @@
        *飞行器是否在自定义禁飞区内,0=禁飞区外 1=禁飞区内
        * </pre>
        *
-       * <code>uint32 inNoFlyAreaFlag = 14;</code>
-       * @return The inNoFlyAreaFlag.
+       * <code>optional uint32 inNoFlyAreaFlag = 14;</code>
        */
-      @java.lang.Override
       public int getInNoFlyAreaFlag() {
         return inNoFlyAreaFlag_;
       }
@@ -16254,9 +15118,7 @@
        *飞行器是否在自定义禁飞区内,0=禁飞区外 1=禁飞区内
        * </pre>
        *
-       * <code>uint32 inNoFlyAreaFlag = 14;</code>
-       * @param value The inNoFlyAreaFlag to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 inNoFlyAreaFlag = 14;</code>
        */
       public Builder setInNoFlyAreaFlag(int value) {
         
@@ -16269,8 +15131,7 @@
        *飞行器是否在自定义禁飞区内,0=禁飞区外 1=禁飞区内
        * </pre>
        *
-       * <code>uint32 inNoFlyAreaFlag = 14;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 inNoFlyAreaFlag = 14;</code>
        */
       public Builder clearInNoFlyAreaFlag() {
         
@@ -16278,16 +15139,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -16306,12 +15165,11 @@
 
     private static final com.google.protobuf.Parser<FlightControllerState>
         PARSER = new com.google.protobuf.AbstractParser<FlightControllerState>() {
-      @java.lang.Override
       public FlightControllerState parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new FlightControllerState(input, extensionRegistry);
+          return new FlightControllerState(input, extensionRegistry);
       }
     };
 
@@ -16324,7 +15182,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.FlightControllerState getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -16340,8 +15197,7 @@
      *电池数量
      * </pre>
      *
-     * <code>uint32 batteryNum = 1;</code>
-     * @return The batteryNum.
+     * <code>optional uint32 batteryNum = 1;</code>
      */
     int getBatteryNum();
 
@@ -16350,8 +15206,7 @@
      *电池电量,多个电池以下划线分割,如:80_60
      * </pre>
      *
-     * <code>string batteryPower = 2;</code>
-     * @return The batteryPower.
+     * <code>optional string batteryPower = 2;</code>
      */
     java.lang.String getBatteryPower();
     /**
@@ -16359,8 +15214,7 @@
      *电池电量,多个电池以下划线分割,如:80_60
      * </pre>
      *
-     * <code>string batteryPower = 2;</code>
-     * @return The bytes for batteryPower.
+     * <code>optional string batteryPower = 2;</code>
      */
     com.google.protobuf.ByteString
         getBatteryPowerBytes();
@@ -16370,8 +15224,7 @@
      *电池电压,多个电池以下划线分割,如:40_30(单位:V)[注意:如果2块电池电压差大于0.7V,飞机限制起飞]
      * </pre>
      *
-     * <code>string batteryVoltage = 3;</code>
-     * @return The batteryVoltage.
+     * <code>optional string batteryVoltage = 3;</code>
      */
     java.lang.String getBatteryVoltage();
     /**
@@ -16379,8 +15232,7 @@
      *电池电压,多个电池以下划线分割,如:40_30(单位:V)[注意:如果2块电池电压差大于0.7V,飞机限制起飞]
      * </pre>
      *
-     * <code>string batteryVoltage = 3;</code>
-     * @return The bytes for batteryVoltage.
+     * <code>optional string batteryVoltage = 3;</code>
      */
     com.google.protobuf.ByteString
         getBatteryVoltageBytes();
@@ -16390,8 +15242,7 @@
      *第一块电池状态信息(安装在飞机左边电池槽)
      * </pre>
      *
-     * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
-     * @return Whether the firstBatteryInfo field is set.
+     * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
      */
     boolean hasFirstBatteryInfo();
     /**
@@ -16399,8 +15250,7 @@
      *第一块电池状态信息(安装在飞机左边电池槽)
      * </pre>
      *
-     * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
-     * @return The firstBatteryInfo.
+     * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo getFirstBatteryInfo();
     /**
@@ -16408,7 +15258,7 @@
      *第一块电池状态信息(安装在飞机左边电池槽)
      * </pre>
      *
-     * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
+     * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfoOrBuilder getFirstBatteryInfoOrBuilder();
 
@@ -16417,8 +15267,7 @@
      *第二块电池状态信息(安装在飞机右边电池槽)
      * </pre>
      *
-     * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
-     * @return Whether the secondBatteryInfo field is set.
+     * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
      */
     boolean hasSecondBatteryInfo();
     /**
@@ -16426,8 +15275,7 @@
      *第二块电池状态信息(安装在飞机右边电池槽)
      * </pre>
      *
-     * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
-     * @return The secondBatteryInfo.
+     * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo getSecondBatteryInfo();
     /**
@@ -16435,7 +15283,7 @@
      *第二块电池状态信息(安装在飞机右边电池槽)
      * </pre>
      *
-     * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
+     * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfoOrBuilder getSecondBatteryInfoOrBuilder();
   }
@@ -16446,42 +15294,31 @@
    *
    * Protobuf type {@code BatteryState}
    */
-  public static final class BatteryState extends
+  public  static final class BatteryState extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:BatteryState)
       BatteryStateOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use BatteryState.newBuilder() to construct.
     private BatteryState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private BatteryState() {
+      batteryNum_ = 0;
       batteryPower_ = "";
       batteryVoltage_ = "";
     }
 
     @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new BatteryState();
-    }
-
-    @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private BatteryState(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -16490,6 +15327,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 8: {
 
               batteryNum_ = input.readUInt32();
@@ -16533,24 +15376,14 @@
 
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -16559,7 +15392,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_BatteryState_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_BatteryState_fieldAccessorTable
@@ -16574,10 +15406,8 @@
      *电池数量
      * </pre>
      *
-     * <code>uint32 batteryNum = 1;</code>
-     * @return The batteryNum.
+     * <code>optional uint32 batteryNum = 1;</code>
      */
-    @java.lang.Override
     public int getBatteryNum() {
       return batteryNum_;
     }
@@ -16589,10 +15419,8 @@
      *电池电量,多个电池以下划线分割,如:80_60
      * </pre>
      *
-     * <code>string batteryPower = 2;</code>
-     * @return The batteryPower.
+     * <code>optional string batteryPower = 2;</code>
      */
-    @java.lang.Override
     public java.lang.String getBatteryPower() {
       java.lang.Object ref = batteryPower_;
       if (ref instanceof java.lang.String) {
@@ -16610,10 +15438,8 @@
      *电池电量,多个电池以下划线分割,如:80_60
      * </pre>
      *
-     * <code>string batteryPower = 2;</code>
-     * @return The bytes for batteryPower.
+     * <code>optional string batteryPower = 2;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getBatteryPowerBytes() {
       java.lang.Object ref = batteryPower_;
@@ -16635,10 +15461,8 @@
      *电池电压,多个电池以下划线分割,如:40_30(单位:V)[注意:如果2块电池电压差大于0.7V,飞机限制起飞]
      * </pre>
      *
-     * <code>string batteryVoltage = 3;</code>
-     * @return The batteryVoltage.
+     * <code>optional string batteryVoltage = 3;</code>
      */
-    @java.lang.Override
     public java.lang.String getBatteryVoltage() {
       java.lang.Object ref = batteryVoltage_;
       if (ref instanceof java.lang.String) {
@@ -16656,10 +15480,8 @@
      *电池电压,多个电池以下划线分割,如:40_30(单位:V)[注意:如果2块电池电压差大于0.7V,飞机限制起飞]
      * </pre>
      *
-     * <code>string batteryVoltage = 3;</code>
-     * @return The bytes for batteryVoltage.
+     * <code>optional string batteryVoltage = 3;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getBatteryVoltageBytes() {
       java.lang.Object ref = batteryVoltage_;
@@ -16681,10 +15503,8 @@
      *第一块电池状态信息(安装在飞机左边电池槽)
      * </pre>
      *
-     * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
-     * @return Whether the firstBatteryInfo field is set.
+     * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
      */
-    @java.lang.Override
     public boolean hasFirstBatteryInfo() {
       return firstBatteryInfo_ != null;
     }
@@ -16693,10 +15513,8 @@
      *第一块电池状态信息(安装在飞机左边电池槽)
      * </pre>
      *
-     * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
-     * @return The firstBatteryInfo.
+     * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo getFirstBatteryInfo() {
       return firstBatteryInfo_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo.getDefaultInstance() : firstBatteryInfo_;
     }
@@ -16705,9 +15523,8 @@
      *第一块电池状态信息(安装在飞机左边电池槽)
      * </pre>
      *
-     * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
+     * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfoOrBuilder getFirstBatteryInfoOrBuilder() {
       return getFirstBatteryInfo();
     }
@@ -16719,10 +15536,8 @@
      *第二块电池状态信息(安装在飞机右边电池槽)
      * </pre>
      *
-     * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
-     * @return Whether the secondBatteryInfo field is set.
+     * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
      */
-    @java.lang.Override
     public boolean hasSecondBatteryInfo() {
       return secondBatteryInfo_ != null;
     }
@@ -16731,10 +15546,8 @@
      *第二块电池状态信息(安装在飞机右边电池槽)
      * </pre>
      *
-     * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
-     * @return The secondBatteryInfo.
+     * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo getSecondBatteryInfo() {
       return secondBatteryInfo_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo.getDefaultInstance() : secondBatteryInfo_;
     }
@@ -16743,15 +15556,13 @@
      *第二块电池状态信息(安装在飞机右边电池槽)
      * </pre>
      *
-     * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
+     * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfoOrBuilder getSecondBatteryInfoOrBuilder() {
       return getSecondBatteryInfo();
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -16761,16 +15572,15 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       if (batteryNum_ != 0) {
         output.writeUInt32(1, batteryNum_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(batteryPower_)) {
+      if (!getBatteryPowerBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 2, batteryPower_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(batteryVoltage_)) {
+      if (!getBatteryVoltageBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 3, batteryVoltage_);
       }
       if (firstBatteryInfo_ != null) {
@@ -16779,10 +15589,8 @@
       if (secondBatteryInfo_ != null) {
         output.writeMessage(5, getSecondBatteryInfo());
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -16792,10 +15600,10 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(1, batteryNum_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(batteryPower_)) {
+      if (!getBatteryPowerBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, batteryPower_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(batteryVoltage_)) {
+      if (!getBatteryVoltageBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, batteryVoltage_);
       }
       if (firstBatteryInfo_ != null) {
@@ -16806,11 +15614,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(5, getSecondBatteryInfo());
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -16821,24 +15629,24 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState) obj;
 
-      if (getBatteryNum()
-          != other.getBatteryNum()) return false;
-      if (!getBatteryPower()
-          .equals(other.getBatteryPower())) return false;
-      if (!getBatteryVoltage()
-          .equals(other.getBatteryVoltage())) return false;
-      if (hasFirstBatteryInfo() != other.hasFirstBatteryInfo()) return false;
+      boolean result = true;
+      result = result && (getBatteryNum()
+          == other.getBatteryNum());
+      result = result && getBatteryPower()
+          .equals(other.getBatteryPower());
+      result = result && getBatteryVoltage()
+          .equals(other.getBatteryVoltage());
+      result = result && (hasFirstBatteryInfo() == other.hasFirstBatteryInfo());
       if (hasFirstBatteryInfo()) {
-        if (!getFirstBatteryInfo()
-            .equals(other.getFirstBatteryInfo())) return false;
+        result = result && getFirstBatteryInfo()
+            .equals(other.getFirstBatteryInfo());
       }
-      if (hasSecondBatteryInfo() != other.hasSecondBatteryInfo()) return false;
+      result = result && (hasSecondBatteryInfo() == other.hasSecondBatteryInfo());
       if (hasSecondBatteryInfo()) {
-        if (!getSecondBatteryInfo()
-            .equals(other.getSecondBatteryInfo())) return false;
+        result = result && getSecondBatteryInfo()
+            .equals(other.getSecondBatteryInfo());
       }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      return result;
     }
 
     @java.lang.Override
@@ -16847,7 +15655,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + BATTERYNUM_FIELD_NUMBER;
       hash = (53 * hash) + getBatteryNum();
       hash = (37 * hash) + BATTERYPOWER_FIELD_NUMBER;
@@ -16867,17 +15675,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -16937,7 +15734,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -16945,7 +15741,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -16973,7 +15768,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_BatteryState_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_BatteryState_fieldAccessorTable
@@ -16996,7 +15790,6 @@
                 .alwaysUseFieldBuilders) {
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         batteryNum_ = 0;
@@ -17020,18 +15813,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_BatteryState_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState result = buildPartial();
         if (!result.isInitialized()) {
@@ -17040,7 +15830,6 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState(this);
         result.batteryNum_ = batteryNum_;
@@ -17060,39 +15849,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState)other);
@@ -17121,17 +15903,14 @@
         if (other.hasSecondBatteryInfo()) {
           mergeSecondBatteryInfo(other.getSecondBatteryInfo());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -17156,10 +15935,8 @@
        *电池数量
        * </pre>
        *
-       * <code>uint32 batteryNum = 1;</code>
-       * @return The batteryNum.
+       * <code>optional uint32 batteryNum = 1;</code>
        */
-      @java.lang.Override
       public int getBatteryNum() {
         return batteryNum_;
       }
@@ -17168,9 +15945,7 @@
        *电池数量
        * </pre>
        *
-       * <code>uint32 batteryNum = 1;</code>
-       * @param value The batteryNum to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 batteryNum = 1;</code>
        */
       public Builder setBatteryNum(int value) {
         
@@ -17183,8 +15958,7 @@
        *电池数量
        * </pre>
        *
-       * <code>uint32 batteryNum = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 batteryNum = 1;</code>
        */
       public Builder clearBatteryNum() {
         
@@ -17199,8 +15973,7 @@
        *电池电量,多个电池以下划线分割,如:80_60
        * </pre>
        *
-       * <code>string batteryPower = 2;</code>
-       * @return The batteryPower.
+       * <code>optional string batteryPower = 2;</code>
        */
       public java.lang.String getBatteryPower() {
         java.lang.Object ref = batteryPower_;
@@ -17219,8 +15992,7 @@
        *电池电量,多个电池以下划线分割,如:80_60
        * </pre>
        *
-       * <code>string batteryPower = 2;</code>
-       * @return The bytes for batteryPower.
+       * <code>optional string batteryPower = 2;</code>
        */
       public com.google.protobuf.ByteString
           getBatteryPowerBytes() {
@@ -17240,9 +16012,7 @@
        *电池电量,多个电池以下划线分割,如:80_60
        * </pre>
        *
-       * <code>string batteryPower = 2;</code>
-       * @param value The batteryPower to set.
-       * @return This builder for chaining.
+       * <code>optional string batteryPower = 2;</code>
        */
       public Builder setBatteryPower(
           java.lang.String value) {
@@ -17259,8 +16029,7 @@
        *电池电量,多个电池以下划线分割,如:80_60
        * </pre>
        *
-       * <code>string batteryPower = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional string batteryPower = 2;</code>
        */
       public Builder clearBatteryPower() {
         
@@ -17273,9 +16042,7 @@
        *电池电量,多个电池以下划线分割,如:80_60
        * </pre>
        *
-       * <code>string batteryPower = 2;</code>
-       * @param value The bytes for batteryPower to set.
-       * @return This builder for chaining.
+       * <code>optional string batteryPower = 2;</code>
        */
       public Builder setBatteryPowerBytes(
           com.google.protobuf.ByteString value) {
@@ -17295,8 +16062,7 @@
        *电池电压,多个电池以下划线分割,如:40_30(单位:V)[注意:如果2块电池电压差大于0.7V,飞机限制起飞]
        * </pre>
        *
-       * <code>string batteryVoltage = 3;</code>
-       * @return The batteryVoltage.
+       * <code>optional string batteryVoltage = 3;</code>
        */
       public java.lang.String getBatteryVoltage() {
         java.lang.Object ref = batteryVoltage_;
@@ -17315,8 +16081,7 @@
        *电池电压,多个电池以下划线分割,如:40_30(单位:V)[注意:如果2块电池电压差大于0.7V,飞机限制起飞]
        * </pre>
        *
-       * <code>string batteryVoltage = 3;</code>
-       * @return The bytes for batteryVoltage.
+       * <code>optional string batteryVoltage = 3;</code>
        */
       public com.google.protobuf.ByteString
           getBatteryVoltageBytes() {
@@ -17336,9 +16101,7 @@
        *电池电压,多个电池以下划线分割,如:40_30(单位:V)[注意:如果2块电池电压差大于0.7V,飞机限制起飞]
        * </pre>
        *
-       * <code>string batteryVoltage = 3;</code>
-       * @param value The batteryVoltage to set.
-       * @return This builder for chaining.
+       * <code>optional string batteryVoltage = 3;</code>
        */
       public Builder setBatteryVoltage(
           java.lang.String value) {
@@ -17355,8 +16118,7 @@
        *电池电压,多个电池以下划线分割,如:40_30(单位:V)[注意:如果2块电池电压差大于0.7V,飞机限制起飞]
        * </pre>
        *
-       * <code>string batteryVoltage = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional string batteryVoltage = 3;</code>
        */
       public Builder clearBatteryVoltage() {
         
@@ -17369,9 +16131,7 @@
        *电池电压,多个电池以下划线分割,如:40_30(单位:V)[注意:如果2块电池电压差大于0.7V,飞机限制起飞]
        * </pre>
        *
-       * <code>string batteryVoltage = 3;</code>
-       * @param value The bytes for batteryVoltage to set.
-       * @return This builder for chaining.
+       * <code>optional string batteryVoltage = 3;</code>
        */
       public Builder setBatteryVoltageBytes(
           com.google.protobuf.ByteString value) {
@@ -17385,7 +16145,7 @@
         return this;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo firstBatteryInfo_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo firstBatteryInfo_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo, com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfoOrBuilder> firstBatteryInfoBuilder_;
       /**
@@ -17393,8 +16153,7 @@
        *第一块电池状态信息(安装在飞机左边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
-       * @return Whether the firstBatteryInfo field is set.
+       * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
        */
       public boolean hasFirstBatteryInfo() {
         return firstBatteryInfoBuilder_ != null || firstBatteryInfo_ != null;
@@ -17404,8 +16163,7 @@
        *第一块电池状态信息(安装在飞机左边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
-       * @return The firstBatteryInfo.
+       * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo getFirstBatteryInfo() {
         if (firstBatteryInfoBuilder_ == null) {
@@ -17419,7 +16177,7 @@
        *第一块电池状态信息(安装在飞机左边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
+       * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
        */
       public Builder setFirstBatteryInfo(com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo value) {
         if (firstBatteryInfoBuilder_ == null) {
@@ -17439,7 +16197,7 @@
        *第一块电池状态信息(安装在飞机左边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
+       * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
        */
       public Builder setFirstBatteryInfo(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo.Builder builderForValue) {
@@ -17457,7 +16215,7 @@
        *第一块电池状态信息(安装在飞机左边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
+       * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
        */
       public Builder mergeFirstBatteryInfo(com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo value) {
         if (firstBatteryInfoBuilder_ == null) {
@@ -17479,7 +16237,7 @@
        *第一块电池状态信息(安装在飞机左边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
+       * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
        */
       public Builder clearFirstBatteryInfo() {
         if (firstBatteryInfoBuilder_ == null) {
@@ -17497,7 +16255,7 @@
        *第一块电池状态信息(安装在飞机左边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
+       * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo.Builder getFirstBatteryInfoBuilder() {
         
@@ -17509,7 +16267,7 @@
        *第一块电池状态信息(安装在飞机左边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
+       * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfoOrBuilder getFirstBatteryInfoOrBuilder() {
         if (firstBatteryInfoBuilder_ != null) {
@@ -17524,7 +16282,7 @@
        *第一块电池状态信息(安装在飞机左边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo firstBatteryInfo = 4;</code>
+       * <code>optional .BatteryStateInfo firstBatteryInfo = 4;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo, com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfoOrBuilder> 
@@ -17540,7 +16298,7 @@
         return firstBatteryInfoBuilder_;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo secondBatteryInfo_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo secondBatteryInfo_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo, com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfoOrBuilder> secondBatteryInfoBuilder_;
       /**
@@ -17548,8 +16306,7 @@
        *第二块电池状态信息(安装在飞机右边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
-       * @return Whether the secondBatteryInfo field is set.
+       * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
        */
       public boolean hasSecondBatteryInfo() {
         return secondBatteryInfoBuilder_ != null || secondBatteryInfo_ != null;
@@ -17559,8 +16316,7 @@
        *第二块电池状态信息(安装在飞机右边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
-       * @return The secondBatteryInfo.
+       * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo getSecondBatteryInfo() {
         if (secondBatteryInfoBuilder_ == null) {
@@ -17574,7 +16330,7 @@
        *第二块电池状态信息(安装在飞机右边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
+       * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
        */
       public Builder setSecondBatteryInfo(com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo value) {
         if (secondBatteryInfoBuilder_ == null) {
@@ -17594,7 +16350,7 @@
        *第二块电池状态信息(安装在飞机右边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
+       * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
        */
       public Builder setSecondBatteryInfo(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo.Builder builderForValue) {
@@ -17612,7 +16368,7 @@
        *第二块电池状态信息(安装在飞机右边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
+       * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
        */
       public Builder mergeSecondBatteryInfo(com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo value) {
         if (secondBatteryInfoBuilder_ == null) {
@@ -17634,7 +16390,7 @@
        *第二块电池状态信息(安装在飞机右边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
+       * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
        */
       public Builder clearSecondBatteryInfo() {
         if (secondBatteryInfoBuilder_ == null) {
@@ -17652,7 +16408,7 @@
        *第二块电池状态信息(安装在飞机右边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
+       * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo.Builder getSecondBatteryInfoBuilder() {
         
@@ -17664,7 +16420,7 @@
        *第二块电池状态信息(安装在飞机右边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
+       * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfoOrBuilder getSecondBatteryInfoOrBuilder() {
         if (secondBatteryInfoBuilder_ != null) {
@@ -17679,7 +16435,7 @@
        *第二块电池状态信息(安装在飞机右边电池槽)
        * </pre>
        *
-       * <code>.BatteryStateInfo secondBatteryInfo = 5;</code>
+       * <code>optional .BatteryStateInfo secondBatteryInfo = 5;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo, com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfoOrBuilder> 
@@ -17694,16 +16450,14 @@
         }
         return secondBatteryInfoBuilder_;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -17722,12 +16476,11 @@
 
     private static final com.google.protobuf.Parser<BatteryState>
         PARSER = new com.google.protobuf.AbstractParser<BatteryState>() {
-      @java.lang.Override
       public BatteryState parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new BatteryState(input, extensionRegistry);
+          return new BatteryState(input, extensionRegistry);
       }
     };
 
@@ -17740,7 +16493,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryState getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -17756,8 +16508,7 @@
      *电池插入飞机状态(注意:如果未插入所有电池信息不可用):0=插入,1=未插入
      * </pre>
      *
-     * <code>uint32 isBatteryEmbed = 1;</code>
-     * @return The isBatteryEmbed.
+     * <code>optional uint32 isBatteryEmbed = 1;</code>
      */
     int getIsBatteryEmbed();
 
@@ -17766,8 +16517,7 @@
      *电池电量百分比
      * </pre>
      *
-     * <code>uint32 batteryCapacityPercent = 2;</code>
-     * @return The batteryCapacityPercent.
+     * <code>optional uint32 batteryCapacityPercent = 2;</code>
      */
     int getBatteryCapacityPercent();
 
@@ -17776,8 +16526,7 @@
      *电池电压(单位:mV)
      * </pre>
      *
-     * <code>int32 currentVoltage = 3;</code>
-     * @return The currentVoltage.
+     * <code>optional int32 currentVoltage = 3;</code>
      */
     int getCurrentVoltage();
 
@@ -17786,8 +16535,7 @@
      *当前电池电流(单位:mA)
      * </pre>
      *
-     * <code>int32 currentElectric = 4;</code>
-     * @return The currentElectric.
+     * <code>optional int32 currentElectric = 4;</code>
      */
     int getCurrentElectric();
 
@@ -17796,8 +16544,7 @@
      *满电池容量(单位:mAh)
      * </pre>
      *
-     * <code>uint32 fullCapacity = 5;</code>
-     * @return The fullCapacity.
+     * <code>optional uint32 fullCapacity = 5;</code>
      */
     int getFullCapacity();
 
@@ -17806,8 +16553,7 @@
      *剩余电池容量(单位:mAh)
      * </pre>
      *
-     * <code>uint32 remainedCapacity = 6;</code>
-     * @return The remainedCapacity.
+     * <code>optional uint32 remainedCapacity = 6;</code>
      */
     int getRemainedCapacity();
 
@@ -17816,8 +16562,7 @@
      *电池温度(单位:摄氏度)
      * </pre>
      *
-     * <code>float batteryTemperature = 7;</code>
-     * @return The batteryTemperature.
+     * <code>optional float batteryTemperature = 7;</code>
      */
     float getBatteryTemperature();
 
@@ -17826,8 +16571,7 @@
      *电池组数(电池硬件型号有关)
      * </pre>
      *
-     * <code>uint32 cellCount = 8;</code>
-     * @return The cellCount.
+     * <code>optional uint32 cellCount = 8;</code>
      */
     int getCellCount();
 
@@ -17836,18 +16580,16 @@
      *电池循环健康状态:0=正常,1=警报,2=注意安全
      * </pre>
      *
-     * <code>uint32 batSOHState = 9;</code>
-     * @return The batSOHState.
+     * <code>optional uint32 batSOHState = 9;</code>
      */
     int getBatSOHState();
 
     /**
      * <pre>
-     *相对功率百分比(Relative power percentage)	
+     *相对功率百分比(Relative power percentage)
      * </pre>
      *
-     * <code>uint32 sop = 10;</code>
-     * @return The sop.
+     * <code>optional uint32 sop = 10;</code>
      */
     int getSop();
 
@@ -17856,8 +16598,7 @@
      *电池加热状态:0=未加热,1=加热中,2=保持恒温
      * </pre>
      *
-     * <code>uint32 heatState = 11;</code>
-     * @return The heatState.
+     * <code>optional uint32 heatState = 11;</code>
      */
     int getHeatState();
 
@@ -17866,8 +16607,7 @@
      *电池SOC荷电状态: 0=SOC正常,1=SOC_ABNORMAL_HIGH,2=SOC_JUMP_DOWN,3=SOC_JUMP_UP,4=SOC_INVALID
      * </pre>
      *
-     * <code>uint32 socState = 12;</code>
-     * @return The socState.
+     * <code>optional uint32 socState = 12;</code>
      */
     int getSocState();
 
@@ -17876,8 +16616,7 @@
      *电池自检错误标志(注意:如果此值非0,就是电池损坏需要维修):0=正常,1=电池自检NTC异常,2=电池自检MOS异常,3=电池自检采样电阻异常,4=电池电芯损坏,5=电池未校准,6=电量计参数异常
      * </pre>
      *
-     * <code>uint32 selfCheckError = 13;</code>
-     * @return The selfCheckError.
+     * <code>optional uint32 selfCheckError = 13;</code>
      */
     int getSelfCheckError();
   }
@@ -17888,40 +16627,41 @@
    *
    * Protobuf type {@code BatteryStateInfo}
    */
-  public static final class BatteryStateInfo extends
+  public  static final class BatteryStateInfo extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:BatteryStateInfo)
       BatteryStateInfoOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use BatteryStateInfo.newBuilder() to construct.
     private BatteryStateInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private BatteryStateInfo() {
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new BatteryStateInfo();
+      isBatteryEmbed_ = 0;
+      batteryCapacityPercent_ = 0;
+      currentVoltage_ = 0;
+      currentElectric_ = 0;
+      fullCapacity_ = 0;
+      remainedCapacity_ = 0;
+      batteryTemperature_ = 0F;
+      cellCount_ = 0;
+      batSOHState_ = 0;
+      sop_ = 0;
+      heatState_ = 0;
+      socState_ = 0;
+      selfCheckError_ = 0;
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private BatteryStateInfo(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -17930,6 +16670,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 8: {
 
               isBatteryEmbed_ = input.readUInt32();
@@ -17995,24 +16741,14 @@
               selfCheckError_ = input.readUInt32();
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -18021,7 +16757,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_BatteryStateInfo_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_BatteryStateInfo_fieldAccessorTable
@@ -18036,10 +16771,8 @@
      *电池插入飞机状态(注意:如果未插入所有电池信息不可用):0=插入,1=未插入
      * </pre>
      *
-     * <code>uint32 isBatteryEmbed = 1;</code>
-     * @return The isBatteryEmbed.
+     * <code>optional uint32 isBatteryEmbed = 1;</code>
      */
-    @java.lang.Override
     public int getIsBatteryEmbed() {
       return isBatteryEmbed_;
     }
@@ -18051,10 +16784,8 @@
      *电池电量百分比
      * </pre>
      *
-     * <code>uint32 batteryCapacityPercent = 2;</code>
-     * @return The batteryCapacityPercent.
+     * <code>optional uint32 batteryCapacityPercent = 2;</code>
      */
-    @java.lang.Override
     public int getBatteryCapacityPercent() {
       return batteryCapacityPercent_;
     }
@@ -18066,10 +16797,8 @@
      *电池电压(单位:mV)
      * </pre>
      *
-     * <code>int32 currentVoltage = 3;</code>
-     * @return The currentVoltage.
+     * <code>optional int32 currentVoltage = 3;</code>
      */
-    @java.lang.Override
     public int getCurrentVoltage() {
       return currentVoltage_;
     }
@@ -18081,10 +16810,8 @@
      *当前电池电流(单位:mA)
      * </pre>
      *
-     * <code>int32 currentElectric = 4;</code>
-     * @return The currentElectric.
+     * <code>optional int32 currentElectric = 4;</code>
      */
-    @java.lang.Override
     public int getCurrentElectric() {
       return currentElectric_;
     }
@@ -18096,10 +16823,8 @@
      *满电池容量(单位:mAh)
      * </pre>
      *
-     * <code>uint32 fullCapacity = 5;</code>
-     * @return The fullCapacity.
+     * <code>optional uint32 fullCapacity = 5;</code>
      */
-    @java.lang.Override
     public int getFullCapacity() {
       return fullCapacity_;
     }
@@ -18111,10 +16836,8 @@
      *剩余电池容量(单位:mAh)
      * </pre>
      *
-     * <code>uint32 remainedCapacity = 6;</code>
-     * @return The remainedCapacity.
+     * <code>optional uint32 remainedCapacity = 6;</code>
      */
-    @java.lang.Override
     public int getRemainedCapacity() {
       return remainedCapacity_;
     }
@@ -18126,10 +16849,8 @@
      *电池温度(单位:摄氏度)
      * </pre>
      *
-     * <code>float batteryTemperature = 7;</code>
-     * @return The batteryTemperature.
+     * <code>optional float batteryTemperature = 7;</code>
      */
-    @java.lang.Override
     public float getBatteryTemperature() {
       return batteryTemperature_;
     }
@@ -18141,10 +16862,8 @@
      *电池组数(电池硬件型号有关)
      * </pre>
      *
-     * <code>uint32 cellCount = 8;</code>
-     * @return The cellCount.
+     * <code>optional uint32 cellCount = 8;</code>
      */
-    @java.lang.Override
     public int getCellCount() {
       return cellCount_;
     }
@@ -18156,10 +16875,8 @@
      *电池循环健康状态:0=正常,1=警报,2=注意安全
      * </pre>
      *
-     * <code>uint32 batSOHState = 9;</code>
-     * @return The batSOHState.
+     * <code>optional uint32 batSOHState = 9;</code>
      */
-    @java.lang.Override
     public int getBatSOHState() {
       return batSOHState_;
     }
@@ -18168,13 +16885,11 @@
     private int sop_;
     /**
      * <pre>
-     *相对功率百分比(Relative power percentage)	
+     *相对功率百分比(Relative power percentage)
      * </pre>
      *
-     * <code>uint32 sop = 10;</code>
-     * @return The sop.
+     * <code>optional uint32 sop = 10;</code>
      */
-    @java.lang.Override
     public int getSop() {
       return sop_;
     }
@@ -18186,10 +16901,8 @@
      *电池加热状态:0=未加热,1=加热中,2=保持恒温
      * </pre>
      *
-     * <code>uint32 heatState = 11;</code>
-     * @return The heatState.
+     * <code>optional uint32 heatState = 11;</code>
      */
-    @java.lang.Override
     public int getHeatState() {
       return heatState_;
     }
@@ -18201,10 +16914,8 @@
      *电池SOC荷电状态: 0=SOC正常,1=SOC_ABNORMAL_HIGH,2=SOC_JUMP_DOWN,3=SOC_JUMP_UP,4=SOC_INVALID
      * </pre>
      *
-     * <code>uint32 socState = 12;</code>
-     * @return The socState.
+     * <code>optional uint32 socState = 12;</code>
      */
-    @java.lang.Override
     public int getSocState() {
       return socState_;
     }
@@ -18216,16 +16927,13 @@
      *电池自检错误标志(注意:如果此值非0,就是电池损坏需要维修):0=正常,1=电池自检NTC异常,2=电池自检MOS异常,3=电池自检采样电阻异常,4=电池电芯损坏,5=电池未校准,6=电量计参数异常
      * </pre>
      *
-     * <code>uint32 selfCheckError = 13;</code>
-     * @return The selfCheckError.
+     * <code>optional uint32 selfCheckError = 13;</code>
      */
-    @java.lang.Override
     public int getSelfCheckError() {
       return selfCheckError_;
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -18235,7 +16943,6 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       if (isBatteryEmbed_ != 0) {
@@ -18256,7 +16963,7 @@
       if (remainedCapacity_ != 0) {
         output.writeUInt32(6, remainedCapacity_);
       }
-      if (java.lang.Float.floatToRawIntBits(batteryTemperature_) != 0) {
+      if (batteryTemperature_ != 0F) {
         output.writeFloat(7, batteryTemperature_);
       }
       if (cellCount_ != 0) {
@@ -18277,10 +16984,8 @@
       if (selfCheckError_ != 0) {
         output.writeUInt32(13, selfCheckError_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -18310,7 +17015,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(6, remainedCapacity_);
       }
-      if (java.lang.Float.floatToRawIntBits(batteryTemperature_) != 0) {
+      if (batteryTemperature_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(7, batteryTemperature_);
       }
@@ -18338,11 +17043,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(13, selfCheckError_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -18353,35 +17058,36 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo) obj;
 
-      if (getIsBatteryEmbed()
-          != other.getIsBatteryEmbed()) return false;
-      if (getBatteryCapacityPercent()
-          != other.getBatteryCapacityPercent()) return false;
-      if (getCurrentVoltage()
-          != other.getCurrentVoltage()) return false;
-      if (getCurrentElectric()
-          != other.getCurrentElectric()) return false;
-      if (getFullCapacity()
-          != other.getFullCapacity()) return false;
-      if (getRemainedCapacity()
-          != other.getRemainedCapacity()) return false;
-      if (java.lang.Float.floatToIntBits(getBatteryTemperature())
-          != java.lang.Float.floatToIntBits(
-              other.getBatteryTemperature())) return false;
-      if (getCellCount()
-          != other.getCellCount()) return false;
-      if (getBatSOHState()
-          != other.getBatSOHState()) return false;
-      if (getSop()
-          != other.getSop()) return false;
-      if (getHeatState()
-          != other.getHeatState()) return false;
-      if (getSocState()
-          != other.getSocState()) return false;
-      if (getSelfCheckError()
-          != other.getSelfCheckError()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && (getIsBatteryEmbed()
+          == other.getIsBatteryEmbed());
+      result = result && (getBatteryCapacityPercent()
+          == other.getBatteryCapacityPercent());
+      result = result && (getCurrentVoltage()
+          == other.getCurrentVoltage());
+      result = result && (getCurrentElectric()
+          == other.getCurrentElectric());
+      result = result && (getFullCapacity()
+          == other.getFullCapacity());
+      result = result && (getRemainedCapacity()
+          == other.getRemainedCapacity());
+      result = result && (
+          java.lang.Float.floatToIntBits(getBatteryTemperature())
+          == java.lang.Float.floatToIntBits(
+              other.getBatteryTemperature()));
+      result = result && (getCellCount()
+          == other.getCellCount());
+      result = result && (getBatSOHState()
+          == other.getBatSOHState());
+      result = result && (getSop()
+          == other.getSop());
+      result = result && (getHeatState()
+          == other.getHeatState());
+      result = result && (getSocState()
+          == other.getSocState());
+      result = result && (getSelfCheckError()
+          == other.getSelfCheckError());
+      return result;
     }
 
     @java.lang.Override
@@ -18390,7 +17096,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + ISBATTERYEMBED_FIELD_NUMBER;
       hash = (53 * hash) + getIsBatteryEmbed();
       hash = (37 * hash) + BATTERYCAPACITYPERCENT_FIELD_NUMBER;
@@ -18423,17 +17129,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -18493,7 +17188,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -18501,7 +17195,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -18529,7 +17222,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_BatteryStateInfo_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_BatteryStateInfo_fieldAccessorTable
@@ -18552,7 +17244,6 @@
                 .alwaysUseFieldBuilders) {
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         isBatteryEmbed_ = 0;
@@ -18584,18 +17275,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_BatteryStateInfo_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo result = buildPartial();
         if (!result.isInitialized()) {
@@ -18604,7 +17292,6 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo(this);
         result.isBatteryEmbed_ = isBatteryEmbed_;
@@ -18624,39 +17311,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo)other);
@@ -18707,17 +17387,14 @@
         if (other.getSelfCheckError() != 0) {
           setSelfCheckError(other.getSelfCheckError());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -18742,10 +17419,8 @@
        *电池插入飞机状态(注意:如果未插入所有电池信息不可用):0=插入,1=未插入
        * </pre>
        *
-       * <code>uint32 isBatteryEmbed = 1;</code>
-       * @return The isBatteryEmbed.
+       * <code>optional uint32 isBatteryEmbed = 1;</code>
        */
-      @java.lang.Override
       public int getIsBatteryEmbed() {
         return isBatteryEmbed_;
       }
@@ -18754,9 +17429,7 @@
        *电池插入飞机状态(注意:如果未插入所有电池信息不可用):0=插入,1=未插入
        * </pre>
        *
-       * <code>uint32 isBatteryEmbed = 1;</code>
-       * @param value The isBatteryEmbed to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isBatteryEmbed = 1;</code>
        */
       public Builder setIsBatteryEmbed(int value) {
         
@@ -18769,8 +17442,7 @@
        *电池插入飞机状态(注意:如果未插入所有电池信息不可用):0=插入,1=未插入
        * </pre>
        *
-       * <code>uint32 isBatteryEmbed = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isBatteryEmbed = 1;</code>
        */
       public Builder clearIsBatteryEmbed() {
         
@@ -18785,10 +17457,8 @@
        *电池电量百分比
        * </pre>
        *
-       * <code>uint32 batteryCapacityPercent = 2;</code>
-       * @return The batteryCapacityPercent.
+       * <code>optional uint32 batteryCapacityPercent = 2;</code>
        */
-      @java.lang.Override
       public int getBatteryCapacityPercent() {
         return batteryCapacityPercent_;
       }
@@ -18797,9 +17467,7 @@
        *电池电量百分比
        * </pre>
        *
-       * <code>uint32 batteryCapacityPercent = 2;</code>
-       * @param value The batteryCapacityPercent to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 batteryCapacityPercent = 2;</code>
        */
       public Builder setBatteryCapacityPercent(int value) {
         
@@ -18812,8 +17480,7 @@
        *电池电量百分比
        * </pre>
        *
-       * <code>uint32 batteryCapacityPercent = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 batteryCapacityPercent = 2;</code>
        */
       public Builder clearBatteryCapacityPercent() {
         
@@ -18828,10 +17495,8 @@
        *电池电压(单位:mV)
        * </pre>
        *
-       * <code>int32 currentVoltage = 3;</code>
-       * @return The currentVoltage.
+       * <code>optional int32 currentVoltage = 3;</code>
        */
-      @java.lang.Override
       public int getCurrentVoltage() {
         return currentVoltage_;
       }
@@ -18840,9 +17505,7 @@
        *电池电压(单位:mV)
        * </pre>
        *
-       * <code>int32 currentVoltage = 3;</code>
-       * @param value The currentVoltage to set.
-       * @return This builder for chaining.
+       * <code>optional int32 currentVoltage = 3;</code>
        */
       public Builder setCurrentVoltage(int value) {
         
@@ -18855,8 +17518,7 @@
        *电池电压(单位:mV)
        * </pre>
        *
-       * <code>int32 currentVoltage = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional int32 currentVoltage = 3;</code>
        */
       public Builder clearCurrentVoltage() {
         
@@ -18871,10 +17533,8 @@
        *当前电池电流(单位:mA)
        * </pre>
        *
-       * <code>int32 currentElectric = 4;</code>
-       * @return The currentElectric.
+       * <code>optional int32 currentElectric = 4;</code>
        */
-      @java.lang.Override
       public int getCurrentElectric() {
         return currentElectric_;
       }
@@ -18883,9 +17543,7 @@
        *当前电池电流(单位:mA)
        * </pre>
        *
-       * <code>int32 currentElectric = 4;</code>
-       * @param value The currentElectric to set.
-       * @return This builder for chaining.
+       * <code>optional int32 currentElectric = 4;</code>
        */
       public Builder setCurrentElectric(int value) {
         
@@ -18898,8 +17556,7 @@
        *当前电池电流(单位:mA)
        * </pre>
        *
-       * <code>int32 currentElectric = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional int32 currentElectric = 4;</code>
        */
       public Builder clearCurrentElectric() {
         
@@ -18914,10 +17571,8 @@
        *满电池容量(单位:mAh)
        * </pre>
        *
-       * <code>uint32 fullCapacity = 5;</code>
-       * @return The fullCapacity.
+       * <code>optional uint32 fullCapacity = 5;</code>
        */
-      @java.lang.Override
       public int getFullCapacity() {
         return fullCapacity_;
       }
@@ -18926,9 +17581,7 @@
        *满电池容量(单位:mAh)
        * </pre>
        *
-       * <code>uint32 fullCapacity = 5;</code>
-       * @param value The fullCapacity to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 fullCapacity = 5;</code>
        */
       public Builder setFullCapacity(int value) {
         
@@ -18941,8 +17594,7 @@
        *满电池容量(单位:mAh)
        * </pre>
        *
-       * <code>uint32 fullCapacity = 5;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 fullCapacity = 5;</code>
        */
       public Builder clearFullCapacity() {
         
@@ -18957,10 +17609,8 @@
        *剩余电池容量(单位:mAh)
        * </pre>
        *
-       * <code>uint32 remainedCapacity = 6;</code>
-       * @return The remainedCapacity.
+       * <code>optional uint32 remainedCapacity = 6;</code>
        */
-      @java.lang.Override
       public int getRemainedCapacity() {
         return remainedCapacity_;
       }
@@ -18969,9 +17619,7 @@
        *剩余电池容量(单位:mAh)
        * </pre>
        *
-       * <code>uint32 remainedCapacity = 6;</code>
-       * @param value The remainedCapacity to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 remainedCapacity = 6;</code>
        */
       public Builder setRemainedCapacity(int value) {
         
@@ -18984,8 +17632,7 @@
        *剩余电池容量(单位:mAh)
        * </pre>
        *
-       * <code>uint32 remainedCapacity = 6;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 remainedCapacity = 6;</code>
        */
       public Builder clearRemainedCapacity() {
         
@@ -19000,10 +17647,8 @@
        *电池温度(单位:摄氏度)
        * </pre>
        *
-       * <code>float batteryTemperature = 7;</code>
-       * @return The batteryTemperature.
+       * <code>optional float batteryTemperature = 7;</code>
        */
-      @java.lang.Override
       public float getBatteryTemperature() {
         return batteryTemperature_;
       }
@@ -19012,9 +17657,7 @@
        *电池温度(单位:摄氏度)
        * </pre>
        *
-       * <code>float batteryTemperature = 7;</code>
-       * @param value The batteryTemperature to set.
-       * @return This builder for chaining.
+       * <code>optional float batteryTemperature = 7;</code>
        */
       public Builder setBatteryTemperature(float value) {
         
@@ -19027,8 +17670,7 @@
        *电池温度(单位:摄氏度)
        * </pre>
        *
-       * <code>float batteryTemperature = 7;</code>
-       * @return This builder for chaining.
+       * <code>optional float batteryTemperature = 7;</code>
        */
       public Builder clearBatteryTemperature() {
         
@@ -19043,10 +17685,8 @@
        *电池组数(电池硬件型号有关)
        * </pre>
        *
-       * <code>uint32 cellCount = 8;</code>
-       * @return The cellCount.
+       * <code>optional uint32 cellCount = 8;</code>
        */
-      @java.lang.Override
       public int getCellCount() {
         return cellCount_;
       }
@@ -19055,9 +17695,7 @@
        *电池组数(电池硬件型号有关)
        * </pre>
        *
-       * <code>uint32 cellCount = 8;</code>
-       * @param value The cellCount to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 cellCount = 8;</code>
        */
       public Builder setCellCount(int value) {
         
@@ -19070,8 +17708,7 @@
        *电池组数(电池硬件型号有关)
        * </pre>
        *
-       * <code>uint32 cellCount = 8;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 cellCount = 8;</code>
        */
       public Builder clearCellCount() {
         
@@ -19086,10 +17723,8 @@
        *电池循环健康状态:0=正常,1=警报,2=注意安全
        * </pre>
        *
-       * <code>uint32 batSOHState = 9;</code>
-       * @return The batSOHState.
+       * <code>optional uint32 batSOHState = 9;</code>
        */
-      @java.lang.Override
       public int getBatSOHState() {
         return batSOHState_;
       }
@@ -19098,9 +17733,7 @@
        *电池循环健康状态:0=正常,1=警报,2=注意安全
        * </pre>
        *
-       * <code>uint32 batSOHState = 9;</code>
-       * @param value The batSOHState to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 batSOHState = 9;</code>
        */
       public Builder setBatSOHState(int value) {
         
@@ -19113,8 +17746,7 @@
        *电池循环健康状态:0=正常,1=警报,2=注意安全
        * </pre>
        *
-       * <code>uint32 batSOHState = 9;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 batSOHState = 9;</code>
        */
       public Builder clearBatSOHState() {
         
@@ -19126,24 +17758,20 @@
       private int sop_ ;
       /**
        * <pre>
-       *相对功率百分比(Relative power percentage)	
+       *相对功率百分比(Relative power percentage)
        * </pre>
        *
-       * <code>uint32 sop = 10;</code>
-       * @return The sop.
+       * <code>optional uint32 sop = 10;</code>
        */
-      @java.lang.Override
       public int getSop() {
         return sop_;
       }
       /**
        * <pre>
-       *相对功率百分比(Relative power percentage)	
+       *相对功率百分比(Relative power percentage)
        * </pre>
        *
-       * <code>uint32 sop = 10;</code>
-       * @param value The sop to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 sop = 10;</code>
        */
       public Builder setSop(int value) {
         
@@ -19153,11 +17781,10 @@
       }
       /**
        * <pre>
-       *相对功率百分比(Relative power percentage)	
+       *相对功率百分比(Relative power percentage)
        * </pre>
        *
-       * <code>uint32 sop = 10;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 sop = 10;</code>
        */
       public Builder clearSop() {
         
@@ -19172,10 +17799,8 @@
        *电池加热状态:0=未加热,1=加热中,2=保持恒温
        * </pre>
        *
-       * <code>uint32 heatState = 11;</code>
-       * @return The heatState.
+       * <code>optional uint32 heatState = 11;</code>
        */
-      @java.lang.Override
       public int getHeatState() {
         return heatState_;
       }
@@ -19184,9 +17809,7 @@
        *电池加热状态:0=未加热,1=加热中,2=保持恒温
        * </pre>
        *
-       * <code>uint32 heatState = 11;</code>
-       * @param value The heatState to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 heatState = 11;</code>
        */
       public Builder setHeatState(int value) {
         
@@ -19199,8 +17822,7 @@
        *电池加热状态:0=未加热,1=加热中,2=保持恒温
        * </pre>
        *
-       * <code>uint32 heatState = 11;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 heatState = 11;</code>
        */
       public Builder clearHeatState() {
         
@@ -19215,10 +17837,8 @@
        *电池SOC荷电状态: 0=SOC正常,1=SOC_ABNORMAL_HIGH,2=SOC_JUMP_DOWN,3=SOC_JUMP_UP,4=SOC_INVALID
        * </pre>
        *
-       * <code>uint32 socState = 12;</code>
-       * @return The socState.
+       * <code>optional uint32 socState = 12;</code>
        */
-      @java.lang.Override
       public int getSocState() {
         return socState_;
       }
@@ -19227,9 +17847,7 @@
        *电池SOC荷电状态: 0=SOC正常,1=SOC_ABNORMAL_HIGH,2=SOC_JUMP_DOWN,3=SOC_JUMP_UP,4=SOC_INVALID
        * </pre>
        *
-       * <code>uint32 socState = 12;</code>
-       * @param value The socState to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 socState = 12;</code>
        */
       public Builder setSocState(int value) {
         
@@ -19242,8 +17860,7 @@
        *电池SOC荷电状态: 0=SOC正常,1=SOC_ABNORMAL_HIGH,2=SOC_JUMP_DOWN,3=SOC_JUMP_UP,4=SOC_INVALID
        * </pre>
        *
-       * <code>uint32 socState = 12;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 socState = 12;</code>
        */
       public Builder clearSocState() {
         
@@ -19258,10 +17875,8 @@
        *电池自检错误标志(注意:如果此值非0,就是电池损坏需要维修):0=正常,1=电池自检NTC异常,2=电池自检MOS异常,3=电池自检采样电阻异常,4=电池电芯损坏,5=电池未校准,6=电量计参数异常
        * </pre>
        *
-       * <code>uint32 selfCheckError = 13;</code>
-       * @return The selfCheckError.
+       * <code>optional uint32 selfCheckError = 13;</code>
        */
-      @java.lang.Override
       public int getSelfCheckError() {
         return selfCheckError_;
       }
@@ -19270,9 +17885,7 @@
        *电池自检错误标志(注意:如果此值非0,就是电池损坏需要维修):0=正常,1=电池自检NTC异常,2=电池自检MOS异常,3=电池自检采样电阻异常,4=电池电芯损坏,5=电池未校准,6=电量计参数异常
        * </pre>
        *
-       * <code>uint32 selfCheckError = 13;</code>
-       * @param value The selfCheckError to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 selfCheckError = 13;</code>
        */
       public Builder setSelfCheckError(int value) {
         
@@ -19285,8 +17898,7 @@
        *电池自检错误标志(注意:如果此值非0,就是电池损坏需要维修):0=正常,1=电池自检NTC异常,2=电池自检MOS异常,3=电池自检采样电阻异常,4=电池电芯损坏,5=电池未校准,6=电量计参数异常
        * </pre>
        *
-       * <code>uint32 selfCheckError = 13;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 selfCheckError = 13;</code>
        */
       public Builder clearSelfCheckError() {
         
@@ -19294,16 +17906,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -19322,12 +17932,11 @@
 
     private static final com.google.protobuf.Parser<BatteryStateInfo>
         PARSER = new com.google.protobuf.AbstractParser<BatteryStateInfo>() {
-      @java.lang.Override
       public BatteryStateInfo parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new BatteryStateInfo(input, extensionRegistry);
+          return new BatteryStateInfo(input, extensionRegistry);
       }
     };
 
@@ -19340,7 +17949,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.BatteryStateInfo getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -19356,8 +17964,7 @@
      *俯仰角 范围:-120° ~ 30°
      * </pre>
      *
-     * <code>float pitch = 1;</code>
-     * @return The pitch.
+     * <code>optional float pitch = 1;</code>
      */
     float getPitch();
 
@@ -19366,8 +17973,7 @@
      *横滚角 范围:-90° ~ 60°
      * </pre>
      *
-     * <code>float roll = 2;</code>
-     * @return The roll.
+     * <code>optional float roll = 2;</code>
      */
     float getRoll();
 
@@ -19376,8 +17982,7 @@
      *偏航角  范围:-180° ~ 180°
      * </pre>
      *
-     * <code>float yaw = 3;</code>
-     * @return The yaw.
+     * <code>optional float yaw = 3;</code>
      */
     float getYaw();
 
@@ -19386,8 +17991,7 @@
      *云台模式 1=自由模式,2=跟随模式,3=FPV模式
      * </pre>
      *
-     * <code>uint32 gimbalMode = 4;</code>
-     * @return The gimbalMode.
+     * <code>optional uint32 gimbalMode = 4;</code>
      */
     int getGimbalMode();
   }
@@ -19398,40 +18002,32 @@
    *
    * Protobuf type {@code PtzState}
    */
-  public static final class PtzState extends
+  public  static final class PtzState extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:PtzState)
       PtzStateOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use PtzState.newBuilder() to construct.
     private PtzState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private PtzState() {
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new PtzState();
+      pitch_ = 0F;
+      roll_ = 0F;
+      yaw_ = 0F;
+      gimbalMode_ = 0;
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private PtzState(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -19440,6 +18036,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 13: {
 
               pitch_ = input.readFloat();
@@ -19460,24 +18062,14 @@
               gimbalMode_ = input.readUInt32();
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -19486,7 +18078,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PtzState_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PtzState_fieldAccessorTable
@@ -19501,10 +18092,8 @@
      *俯仰角 范围:-120° ~ 30°
      * </pre>
      *
-     * <code>float pitch = 1;</code>
-     * @return The pitch.
+     * <code>optional float pitch = 1;</code>
      */
-    @java.lang.Override
     public float getPitch() {
       return pitch_;
     }
@@ -19516,10 +18105,8 @@
      *横滚角 范围:-90° ~ 60°
      * </pre>
      *
-     * <code>float roll = 2;</code>
-     * @return The roll.
+     * <code>optional float roll = 2;</code>
      */
-    @java.lang.Override
     public float getRoll() {
       return roll_;
     }
@@ -19531,10 +18118,8 @@
      *偏航角  范围:-180° ~ 180°
      * </pre>
      *
-     * <code>float yaw = 3;</code>
-     * @return The yaw.
+     * <code>optional float yaw = 3;</code>
      */
-    @java.lang.Override
     public float getYaw() {
       return yaw_;
     }
@@ -19546,16 +18131,13 @@
      *云台模式 1=自由模式,2=跟随模式,3=FPV模式
      * </pre>
      *
-     * <code>uint32 gimbalMode = 4;</code>
-     * @return The gimbalMode.
+     * <code>optional uint32 gimbalMode = 4;</code>
      */
-    @java.lang.Override
     public int getGimbalMode() {
       return gimbalMode_;
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -19565,39 +18147,36 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (java.lang.Float.floatToRawIntBits(pitch_) != 0) {
+      if (pitch_ != 0F) {
         output.writeFloat(1, pitch_);
       }
-      if (java.lang.Float.floatToRawIntBits(roll_) != 0) {
+      if (roll_ != 0F) {
         output.writeFloat(2, roll_);
       }
-      if (java.lang.Float.floatToRawIntBits(yaw_) != 0) {
+      if (yaw_ != 0F) {
         output.writeFloat(3, yaw_);
       }
       if (gimbalMode_ != 0) {
         output.writeUInt32(4, gimbalMode_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
-      if (java.lang.Float.floatToRawIntBits(pitch_) != 0) {
+      if (pitch_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(1, pitch_);
       }
-      if (java.lang.Float.floatToRawIntBits(roll_) != 0) {
+      if (roll_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(2, roll_);
       }
-      if (java.lang.Float.floatToRawIntBits(yaw_) != 0) {
+      if (yaw_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(3, yaw_);
       }
@@ -19605,11 +18184,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(4, gimbalMode_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -19620,19 +18199,22 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState) obj;
 
-      if (java.lang.Float.floatToIntBits(getPitch())
-          != java.lang.Float.floatToIntBits(
-              other.getPitch())) return false;
-      if (java.lang.Float.floatToIntBits(getRoll())
-          != java.lang.Float.floatToIntBits(
-              other.getRoll())) return false;
-      if (java.lang.Float.floatToIntBits(getYaw())
-          != java.lang.Float.floatToIntBits(
-              other.getYaw())) return false;
-      if (getGimbalMode()
-          != other.getGimbalMode()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && (
+          java.lang.Float.floatToIntBits(getPitch())
+          == java.lang.Float.floatToIntBits(
+              other.getPitch()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getRoll())
+          == java.lang.Float.floatToIntBits(
+              other.getRoll()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getYaw())
+          == java.lang.Float.floatToIntBits(
+              other.getYaw()));
+      result = result && (getGimbalMode()
+          == other.getGimbalMode());
+      return result;
     }
 
     @java.lang.Override
@@ -19641,7 +18223,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + PITCH_FIELD_NUMBER;
       hash = (53 * hash) + java.lang.Float.floatToIntBits(
           getPitch());
@@ -19658,17 +18240,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -19728,7 +18299,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -19736,7 +18306,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -19764,7 +18333,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PtzState_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PtzState_fieldAccessorTable
@@ -19787,7 +18355,6 @@
                 .alwaysUseFieldBuilders) {
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         pitch_ = 0F;
@@ -19801,18 +18368,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PtzState_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState result = buildPartial();
         if (!result.isInitialized()) {
@@ -19821,7 +18385,6 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState(this);
         result.pitch_ = pitch_;
@@ -19832,39 +18395,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState)other);
@@ -19888,17 +18444,14 @@
         if (other.getGimbalMode() != 0) {
           setGimbalMode(other.getGimbalMode());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -19923,10 +18476,8 @@
        *俯仰角 范围:-120° ~ 30°
        * </pre>
        *
-       * <code>float pitch = 1;</code>
-       * @return The pitch.
+       * <code>optional float pitch = 1;</code>
        */
-      @java.lang.Override
       public float getPitch() {
         return pitch_;
       }
@@ -19935,9 +18486,7 @@
        *俯仰角 范围:-120° ~ 30°
        * </pre>
        *
-       * <code>float pitch = 1;</code>
-       * @param value The pitch to set.
-       * @return This builder for chaining.
+       * <code>optional float pitch = 1;</code>
        */
       public Builder setPitch(float value) {
         
@@ -19950,8 +18499,7 @@
        *俯仰角 范围:-120° ~ 30°
        * </pre>
        *
-       * <code>float pitch = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional float pitch = 1;</code>
        */
       public Builder clearPitch() {
         
@@ -19966,10 +18514,8 @@
        *横滚角 范围:-90° ~ 60°
        * </pre>
        *
-       * <code>float roll = 2;</code>
-       * @return The roll.
+       * <code>optional float roll = 2;</code>
        */
-      @java.lang.Override
       public float getRoll() {
         return roll_;
       }
@@ -19978,9 +18524,7 @@
        *横滚角 范围:-90° ~ 60°
        * </pre>
        *
-       * <code>float roll = 2;</code>
-       * @param value The roll to set.
-       * @return This builder for chaining.
+       * <code>optional float roll = 2;</code>
        */
       public Builder setRoll(float value) {
         
@@ -19993,8 +18537,7 @@
        *横滚角 范围:-90° ~ 60°
        * </pre>
        *
-       * <code>float roll = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional float roll = 2;</code>
        */
       public Builder clearRoll() {
         
@@ -20009,10 +18552,8 @@
        *偏航角  范围:-180° ~ 180°
        * </pre>
        *
-       * <code>float yaw = 3;</code>
-       * @return The yaw.
+       * <code>optional float yaw = 3;</code>
        */
-      @java.lang.Override
       public float getYaw() {
         return yaw_;
       }
@@ -20021,9 +18562,7 @@
        *偏航角  范围:-180° ~ 180°
        * </pre>
        *
-       * <code>float yaw = 3;</code>
-       * @param value The yaw to set.
-       * @return This builder for chaining.
+       * <code>optional float yaw = 3;</code>
        */
       public Builder setYaw(float value) {
         
@@ -20036,8 +18575,7 @@
        *偏航角  范围:-180° ~ 180°
        * </pre>
        *
-       * <code>float yaw = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional float yaw = 3;</code>
        */
       public Builder clearYaw() {
         
@@ -20052,10 +18590,8 @@
        *云台模式 1=自由模式,2=跟随模式,3=FPV模式
        * </pre>
        *
-       * <code>uint32 gimbalMode = 4;</code>
-       * @return The gimbalMode.
+       * <code>optional uint32 gimbalMode = 4;</code>
        */
-      @java.lang.Override
       public int getGimbalMode() {
         return gimbalMode_;
       }
@@ -20064,9 +18600,7 @@
        *云台模式 1=自由模式,2=跟随模式,3=FPV模式
        * </pre>
        *
-       * <code>uint32 gimbalMode = 4;</code>
-       * @param value The gimbalMode to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 gimbalMode = 4;</code>
        */
       public Builder setGimbalMode(int value) {
         
@@ -20079,8 +18613,7 @@
        *云台模式 1=自由模式,2=跟随模式,3=FPV模式
        * </pre>
        *
-       * <code>uint32 gimbalMode = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 gimbalMode = 4;</code>
        */
       public Builder clearGimbalMode() {
         
@@ -20088,16 +18621,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -20116,12 +18647,11 @@
 
     private static final com.google.protobuf.Parser<PtzState>
         PARSER = new com.google.protobuf.AbstractParser<PtzState>() {
-      @java.lang.Override
       public PtzState parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new PtzState(input, extensionRegistry);
+          return new PtzState(input, extensionRegistry);
       }
     };
 
@@ -20134,7 +18664,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PtzState getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -20150,8 +18679,7 @@
      *相机模式:1=拍照模式,2=录像模式,0=未知
      * </pre>
      *
-     * <code>uint32 mode = 1;</code>
-     * @return The mode.
+     * <code>optional uint32 mode = 1;</code>
      */
     int getMode();
 
@@ -20160,8 +18688,7 @@
      *是否录制中:1=录制中,0=未录制
      * </pre>
      *
-     * <code>uint32 isRecording = 2;</code>
-     * @return The isRecording.
+     * <code>optional uint32 isRecording = 2;</code>
      */
     int getIsRecording();
 
@@ -20170,8 +18697,7 @@
      *录制时长(单位:秒)
      * </pre>
      *
-     * <code>uint32 recordDuration = 3;</code>
-     * @return The recordDuration.
+     * <code>optional uint32 recordDuration = 3;</code>
      */
     int getRecordDuration();
 
@@ -20180,8 +18706,7 @@
      *相机视源:0=可见,1=变焦,2=红外
      * </pre>
      *
-     * <code>uint32 source = 4;</code>
-     * @return The source.
+     * <code>optional uint32 source = 4;</code>
      */
     int getSource();
 
@@ -20190,8 +18715,7 @@
      *相机: 0=FPV,1=相机(1),2=相机(2)
      * </pre>
      *
-     * <code>uint32 camera = 5;</code>
-     * @return The camera.
+     * <code>optional uint32 camera = 5;</code>
      */
     int getCamera();
 
@@ -20200,8 +18724,7 @@
      *相机当前变焦倍数
      * </pre>
      *
-     * <code>float zoomfactor = 6;</code>
-     * @return The zoomfactor.
+     * <code>optional float zoomfactor = 6;</code>
      */
     float getZoomfactor();
 
@@ -20210,8 +18733,7 @@
      *水平像素(例如:1920)
      * </pre>
      *
-     * <code>uint32 width = 7;</code>
-     * @return The width.
+     * <code>optional uint32 width = 7;</code>
      */
     int getWidth();
 
@@ -20220,8 +18742,7 @@
      *垂直像素(例如:1080)
      * </pre>
      *
-     * <code>uint32 height = 8;</code>
-     * @return The height.
+     * <code>optional uint32 height = 8;</code>
      */
     int getHeight();
 
@@ -20230,8 +18751,7 @@
      *帧率(例如:30)
      * </pre>
      *
-     * <code>uint32 frameRate = 9;</code>
-     * @return The frameRate.
+     * <code>optional uint32 frameRate = 9;</code>
      */
     int getFrameRate();
 
@@ -20240,8 +18760,7 @@
      *码率(单位:0.001)(例如:6兆设置值为6000)
      * </pre>
      *
-     * <code>uint32 bitstream = 10;</code>
-     * @return The bitstream.
+     * <code>optional uint32 bitstream = 10;</code>
      */
     int getBitstream();
 
@@ -20250,8 +18769,7 @@
      *单点测温状态:0=非单点测温中,1=单点测温中
      * </pre>
      *
-     * <code>uint32 pointThermometrying = 11;</code>
-     * @return The pointThermometrying.
+     * <code>optional uint32 pointThermometrying = 11;</code>
      */
     int getPointThermometrying();
 
@@ -20260,8 +18778,7 @@
      *区域测温状态:0=非区域测温中,1=区域测温中
      * </pre>
      *
-     * <code>uint32 areaThermometrying = 12;</code>
-     * @return The areaThermometrying.
+     * <code>optional uint32 areaThermometrying = 12;</code>
      */
     int getAreaThermometrying();
 
@@ -20270,8 +18787,7 @@
      *激光测距状态:0=非激光测距中,1=激光测距中
      * </pre>
      *
-     * <code>uint32 laserRanging = 13;</code>
-     * @return The laserRanging.
+     * <code>optional uint32 laserRanging = 13;</code>
      */
     int getLaserRanging();
   }
@@ -20282,40 +18798,41 @@
    *
    * Protobuf type {@code CameraState}
    */
-  public static final class CameraState extends
+  public  static final class CameraState extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:CameraState)
       CameraStateOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use CameraState.newBuilder() to construct.
     private CameraState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private CameraState() {
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new CameraState();
+      mode_ = 0;
+      isRecording_ = 0;
+      recordDuration_ = 0;
+      source_ = 0;
+      camera_ = 0;
+      zoomfactor_ = 0F;
+      width_ = 0;
+      height_ = 0;
+      frameRate_ = 0;
+      bitstream_ = 0;
+      pointThermometrying_ = 0;
+      areaThermometrying_ = 0;
+      laserRanging_ = 0;
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private CameraState(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -20324,6 +18841,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 8: {
 
               mode_ = input.readUInt32();
@@ -20389,24 +18912,14 @@
               laserRanging_ = input.readUInt32();
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -20415,7 +18928,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_CameraState_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_CameraState_fieldAccessorTable
@@ -20430,10 +18942,8 @@
      *相机模式:1=拍照模式,2=录像模式,0=未知
      * </pre>
      *
-     * <code>uint32 mode = 1;</code>
-     * @return The mode.
+     * <code>optional uint32 mode = 1;</code>
      */
-    @java.lang.Override
     public int getMode() {
       return mode_;
     }
@@ -20445,10 +18955,8 @@
      *是否录制中:1=录制中,0=未录制
      * </pre>
      *
-     * <code>uint32 isRecording = 2;</code>
-     * @return The isRecording.
+     * <code>optional uint32 isRecording = 2;</code>
      */
-    @java.lang.Override
     public int getIsRecording() {
       return isRecording_;
     }
@@ -20460,10 +18968,8 @@
      *录制时长(单位:秒)
      * </pre>
      *
-     * <code>uint32 recordDuration = 3;</code>
-     * @return The recordDuration.
+     * <code>optional uint32 recordDuration = 3;</code>
      */
-    @java.lang.Override
     public int getRecordDuration() {
       return recordDuration_;
     }
@@ -20475,10 +18981,8 @@
      *相机视源:0=可见,1=变焦,2=红外
      * </pre>
      *
-     * <code>uint32 source = 4;</code>
-     * @return The source.
+     * <code>optional uint32 source = 4;</code>
      */
-    @java.lang.Override
     public int getSource() {
       return source_;
     }
@@ -20490,10 +18994,8 @@
      *相机: 0=FPV,1=相机(1),2=相机(2)
      * </pre>
      *
-     * <code>uint32 camera = 5;</code>
-     * @return The camera.
+     * <code>optional uint32 camera = 5;</code>
      */
-    @java.lang.Override
     public int getCamera() {
       return camera_;
     }
@@ -20505,10 +19007,8 @@
      *相机当前变焦倍数
      * </pre>
      *
-     * <code>float zoomfactor = 6;</code>
-     * @return The zoomfactor.
+     * <code>optional float zoomfactor = 6;</code>
      */
-    @java.lang.Override
     public float getZoomfactor() {
       return zoomfactor_;
     }
@@ -20520,10 +19020,8 @@
      *水平像素(例如:1920)
      * </pre>
      *
-     * <code>uint32 width = 7;</code>
-     * @return The width.
+     * <code>optional uint32 width = 7;</code>
      */
-    @java.lang.Override
     public int getWidth() {
       return width_;
     }
@@ -20535,10 +19033,8 @@
      *垂直像素(例如:1080)
      * </pre>
      *
-     * <code>uint32 height = 8;</code>
-     * @return The height.
+     * <code>optional uint32 height = 8;</code>
      */
-    @java.lang.Override
     public int getHeight() {
       return height_;
     }
@@ -20550,10 +19046,8 @@
      *帧率(例如:30)
      * </pre>
      *
-     * <code>uint32 frameRate = 9;</code>
-     * @return The frameRate.
+     * <code>optional uint32 frameRate = 9;</code>
      */
-    @java.lang.Override
     public int getFrameRate() {
       return frameRate_;
     }
@@ -20565,10 +19059,8 @@
      *码率(单位:0.001)(例如:6兆设置值为6000)
      * </pre>
      *
-     * <code>uint32 bitstream = 10;</code>
-     * @return The bitstream.
+     * <code>optional uint32 bitstream = 10;</code>
      */
-    @java.lang.Override
     public int getBitstream() {
       return bitstream_;
     }
@@ -20580,10 +19072,8 @@
      *单点测温状态:0=非单点测温中,1=单点测温中
      * </pre>
      *
-     * <code>uint32 pointThermometrying = 11;</code>
-     * @return The pointThermometrying.
+     * <code>optional uint32 pointThermometrying = 11;</code>
      */
-    @java.lang.Override
     public int getPointThermometrying() {
       return pointThermometrying_;
     }
@@ -20595,10 +19085,8 @@
      *区域测温状态:0=非区域测温中,1=区域测温中
      * </pre>
      *
-     * <code>uint32 areaThermometrying = 12;</code>
-     * @return The areaThermometrying.
+     * <code>optional uint32 areaThermometrying = 12;</code>
      */
-    @java.lang.Override
     public int getAreaThermometrying() {
       return areaThermometrying_;
     }
@@ -20610,16 +19098,13 @@
      *激光测距状态:0=非激光测距中,1=激光测距中
      * </pre>
      *
-     * <code>uint32 laserRanging = 13;</code>
-     * @return The laserRanging.
+     * <code>optional uint32 laserRanging = 13;</code>
      */
-    @java.lang.Override
     public int getLaserRanging() {
       return laserRanging_;
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -20629,7 +19114,6 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       if (mode_ != 0) {
@@ -20647,7 +19131,7 @@
       if (camera_ != 0) {
         output.writeUInt32(5, camera_);
       }
-      if (java.lang.Float.floatToRawIntBits(zoomfactor_) != 0) {
+      if (zoomfactor_ != 0F) {
         output.writeFloat(6, zoomfactor_);
       }
       if (width_ != 0) {
@@ -20671,10 +19155,8 @@
       if (laserRanging_ != 0) {
         output.writeUInt32(13, laserRanging_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -20700,7 +19182,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(5, camera_);
       }
-      if (java.lang.Float.floatToRawIntBits(zoomfactor_) != 0) {
+      if (zoomfactor_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(6, zoomfactor_);
       }
@@ -20732,11 +19214,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(13, laserRanging_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -20747,35 +19229,36 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState) obj;
 
-      if (getMode()
-          != other.getMode()) return false;
-      if (getIsRecording()
-          != other.getIsRecording()) return false;
-      if (getRecordDuration()
-          != other.getRecordDuration()) return false;
-      if (getSource()
-          != other.getSource()) return false;
-      if (getCamera()
-          != other.getCamera()) return false;
-      if (java.lang.Float.floatToIntBits(getZoomfactor())
-          != java.lang.Float.floatToIntBits(
-              other.getZoomfactor())) return false;
-      if (getWidth()
-          != other.getWidth()) return false;
-      if (getHeight()
-          != other.getHeight()) return false;
-      if (getFrameRate()
-          != other.getFrameRate()) return false;
-      if (getBitstream()
-          != other.getBitstream()) return false;
-      if (getPointThermometrying()
-          != other.getPointThermometrying()) return false;
-      if (getAreaThermometrying()
-          != other.getAreaThermometrying()) return false;
-      if (getLaserRanging()
-          != other.getLaserRanging()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && (getMode()
+          == other.getMode());
+      result = result && (getIsRecording()
+          == other.getIsRecording());
+      result = result && (getRecordDuration()
+          == other.getRecordDuration());
+      result = result && (getSource()
+          == other.getSource());
+      result = result && (getCamera()
+          == other.getCamera());
+      result = result && (
+          java.lang.Float.floatToIntBits(getZoomfactor())
+          == java.lang.Float.floatToIntBits(
+              other.getZoomfactor()));
+      result = result && (getWidth()
+          == other.getWidth());
+      result = result && (getHeight()
+          == other.getHeight());
+      result = result && (getFrameRate()
+          == other.getFrameRate());
+      result = result && (getBitstream()
+          == other.getBitstream());
+      result = result && (getPointThermometrying()
+          == other.getPointThermometrying());
+      result = result && (getAreaThermometrying()
+          == other.getAreaThermometrying());
+      result = result && (getLaserRanging()
+          == other.getLaserRanging());
+      return result;
     }
 
     @java.lang.Override
@@ -20784,7 +19267,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + MODE_FIELD_NUMBER;
       hash = (53 * hash) + getMode();
       hash = (37 * hash) + ISRECORDING_FIELD_NUMBER;
@@ -20817,17 +19300,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -20887,7 +19359,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -20895,7 +19366,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -20923,7 +19393,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_CameraState_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_CameraState_fieldAccessorTable
@@ -20946,7 +19415,6 @@
                 .alwaysUseFieldBuilders) {
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         mode_ = 0;
@@ -20978,18 +19446,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_CameraState_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState result = buildPartial();
         if (!result.isInitialized()) {
@@ -20998,7 +19463,6 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState(this);
         result.mode_ = mode_;
@@ -21018,39 +19482,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState)other);
@@ -21101,17 +19558,14 @@
         if (other.getLaserRanging() != 0) {
           setLaserRanging(other.getLaserRanging());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -21136,10 +19590,8 @@
        *相机模式:1=拍照模式,2=录像模式,0=未知
        * </pre>
        *
-       * <code>uint32 mode = 1;</code>
-       * @return The mode.
+       * <code>optional uint32 mode = 1;</code>
        */
-      @java.lang.Override
       public int getMode() {
         return mode_;
       }
@@ -21148,9 +19600,7 @@
        *相机模式:1=拍照模式,2=录像模式,0=未知
        * </pre>
        *
-       * <code>uint32 mode = 1;</code>
-       * @param value The mode to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 mode = 1;</code>
        */
       public Builder setMode(int value) {
         
@@ -21163,8 +19613,7 @@
        *相机模式:1=拍照模式,2=录像模式,0=未知
        * </pre>
        *
-       * <code>uint32 mode = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 mode = 1;</code>
        */
       public Builder clearMode() {
         
@@ -21179,10 +19628,8 @@
        *是否录制中:1=录制中,0=未录制
        * </pre>
        *
-       * <code>uint32 isRecording = 2;</code>
-       * @return The isRecording.
+       * <code>optional uint32 isRecording = 2;</code>
        */
-      @java.lang.Override
       public int getIsRecording() {
         return isRecording_;
       }
@@ -21191,9 +19638,7 @@
        *是否录制中:1=录制中,0=未录制
        * </pre>
        *
-       * <code>uint32 isRecording = 2;</code>
-       * @param value The isRecording to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isRecording = 2;</code>
        */
       public Builder setIsRecording(int value) {
         
@@ -21206,8 +19651,7 @@
        *是否录制中:1=录制中,0=未录制
        * </pre>
        *
-       * <code>uint32 isRecording = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isRecording = 2;</code>
        */
       public Builder clearIsRecording() {
         
@@ -21222,10 +19666,8 @@
        *录制时长(单位:秒)
        * </pre>
        *
-       * <code>uint32 recordDuration = 3;</code>
-       * @return The recordDuration.
+       * <code>optional uint32 recordDuration = 3;</code>
        */
-      @java.lang.Override
       public int getRecordDuration() {
         return recordDuration_;
       }
@@ -21234,9 +19676,7 @@
        *录制时长(单位:秒)
        * </pre>
        *
-       * <code>uint32 recordDuration = 3;</code>
-       * @param value The recordDuration to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 recordDuration = 3;</code>
        */
       public Builder setRecordDuration(int value) {
         
@@ -21249,8 +19689,7 @@
        *录制时长(单位:秒)
        * </pre>
        *
-       * <code>uint32 recordDuration = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 recordDuration = 3;</code>
        */
       public Builder clearRecordDuration() {
         
@@ -21265,10 +19704,8 @@
        *相机视源:0=可见,1=变焦,2=红外
        * </pre>
        *
-       * <code>uint32 source = 4;</code>
-       * @return The source.
+       * <code>optional uint32 source = 4;</code>
        */
-      @java.lang.Override
       public int getSource() {
         return source_;
       }
@@ -21277,9 +19714,7 @@
        *相机视源:0=可见,1=变焦,2=红外
        * </pre>
        *
-       * <code>uint32 source = 4;</code>
-       * @param value The source to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 source = 4;</code>
        */
       public Builder setSource(int value) {
         
@@ -21292,8 +19727,7 @@
        *相机视源:0=可见,1=变焦,2=红外
        * </pre>
        *
-       * <code>uint32 source = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 source = 4;</code>
        */
       public Builder clearSource() {
         
@@ -21308,10 +19742,8 @@
        *相机: 0=FPV,1=相机(1),2=相机(2)
        * </pre>
        *
-       * <code>uint32 camera = 5;</code>
-       * @return The camera.
+       * <code>optional uint32 camera = 5;</code>
        */
-      @java.lang.Override
       public int getCamera() {
         return camera_;
       }
@@ -21320,9 +19752,7 @@
        *相机: 0=FPV,1=相机(1),2=相机(2)
        * </pre>
        *
-       * <code>uint32 camera = 5;</code>
-       * @param value The camera to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 camera = 5;</code>
        */
       public Builder setCamera(int value) {
         
@@ -21335,8 +19765,7 @@
        *相机: 0=FPV,1=相机(1),2=相机(2)
        * </pre>
        *
-       * <code>uint32 camera = 5;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 camera = 5;</code>
        */
       public Builder clearCamera() {
         
@@ -21351,10 +19780,8 @@
        *相机当前变焦倍数
        * </pre>
        *
-       * <code>float zoomfactor = 6;</code>
-       * @return The zoomfactor.
+       * <code>optional float zoomfactor = 6;</code>
        */
-      @java.lang.Override
       public float getZoomfactor() {
         return zoomfactor_;
       }
@@ -21363,9 +19790,7 @@
        *相机当前变焦倍数
        * </pre>
        *
-       * <code>float zoomfactor = 6;</code>
-       * @param value The zoomfactor to set.
-       * @return This builder for chaining.
+       * <code>optional float zoomfactor = 6;</code>
        */
       public Builder setZoomfactor(float value) {
         
@@ -21378,8 +19803,7 @@
        *相机当前变焦倍数
        * </pre>
        *
-       * <code>float zoomfactor = 6;</code>
-       * @return This builder for chaining.
+       * <code>optional float zoomfactor = 6;</code>
        */
       public Builder clearZoomfactor() {
         
@@ -21394,10 +19818,8 @@
        *水平像素(例如:1920)
        * </pre>
        *
-       * <code>uint32 width = 7;</code>
-       * @return The width.
+       * <code>optional uint32 width = 7;</code>
        */
-      @java.lang.Override
       public int getWidth() {
         return width_;
       }
@@ -21406,9 +19828,7 @@
        *水平像素(例如:1920)
        * </pre>
        *
-       * <code>uint32 width = 7;</code>
-       * @param value The width to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 width = 7;</code>
        */
       public Builder setWidth(int value) {
         
@@ -21421,8 +19841,7 @@
        *水平像素(例如:1920)
        * </pre>
        *
-       * <code>uint32 width = 7;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 width = 7;</code>
        */
       public Builder clearWidth() {
         
@@ -21437,10 +19856,8 @@
        *垂直像素(例如:1080)
        * </pre>
        *
-       * <code>uint32 height = 8;</code>
-       * @return The height.
+       * <code>optional uint32 height = 8;</code>
        */
-      @java.lang.Override
       public int getHeight() {
         return height_;
       }
@@ -21449,9 +19866,7 @@
        *垂直像素(例如:1080)
        * </pre>
        *
-       * <code>uint32 height = 8;</code>
-       * @param value The height to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 height = 8;</code>
        */
       public Builder setHeight(int value) {
         
@@ -21464,8 +19879,7 @@
        *垂直像素(例如:1080)
        * </pre>
        *
-       * <code>uint32 height = 8;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 height = 8;</code>
        */
       public Builder clearHeight() {
         
@@ -21480,10 +19894,8 @@
        *帧率(例如:30)
        * </pre>
        *
-       * <code>uint32 frameRate = 9;</code>
-       * @return The frameRate.
+       * <code>optional uint32 frameRate = 9;</code>
        */
-      @java.lang.Override
       public int getFrameRate() {
         return frameRate_;
       }
@@ -21492,9 +19904,7 @@
        *帧率(例如:30)
        * </pre>
        *
-       * <code>uint32 frameRate = 9;</code>
-       * @param value The frameRate to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 frameRate = 9;</code>
        */
       public Builder setFrameRate(int value) {
         
@@ -21507,8 +19917,7 @@
        *帧率(例如:30)
        * </pre>
        *
-       * <code>uint32 frameRate = 9;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 frameRate = 9;</code>
        */
       public Builder clearFrameRate() {
         
@@ -21523,10 +19932,8 @@
        *码率(单位:0.001)(例如:6兆设置值为6000)
        * </pre>
        *
-       * <code>uint32 bitstream = 10;</code>
-       * @return The bitstream.
+       * <code>optional uint32 bitstream = 10;</code>
        */
-      @java.lang.Override
       public int getBitstream() {
         return bitstream_;
       }
@@ -21535,9 +19942,7 @@
        *码率(单位:0.001)(例如:6兆设置值为6000)
        * </pre>
        *
-       * <code>uint32 bitstream = 10;</code>
-       * @param value The bitstream to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 bitstream = 10;</code>
        */
       public Builder setBitstream(int value) {
         
@@ -21550,8 +19955,7 @@
        *码率(单位:0.001)(例如:6兆设置值为6000)
        * </pre>
        *
-       * <code>uint32 bitstream = 10;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 bitstream = 10;</code>
        */
       public Builder clearBitstream() {
         
@@ -21566,10 +19970,8 @@
        *单点测温状态:0=非单点测温中,1=单点测温中
        * </pre>
        *
-       * <code>uint32 pointThermometrying = 11;</code>
-       * @return The pointThermometrying.
+       * <code>optional uint32 pointThermometrying = 11;</code>
        */
-      @java.lang.Override
       public int getPointThermometrying() {
         return pointThermometrying_;
       }
@@ -21578,9 +19980,7 @@
        *单点测温状态:0=非单点测温中,1=单点测温中
        * </pre>
        *
-       * <code>uint32 pointThermometrying = 11;</code>
-       * @param value The pointThermometrying to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 pointThermometrying = 11;</code>
        */
       public Builder setPointThermometrying(int value) {
         
@@ -21593,8 +19993,7 @@
        *单点测温状态:0=非单点测温中,1=单点测温中
        * </pre>
        *
-       * <code>uint32 pointThermometrying = 11;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 pointThermometrying = 11;</code>
        */
       public Builder clearPointThermometrying() {
         
@@ -21609,10 +20008,8 @@
        *区域测温状态:0=非区域测温中,1=区域测温中
        * </pre>
        *
-       * <code>uint32 areaThermometrying = 12;</code>
-       * @return The areaThermometrying.
+       * <code>optional uint32 areaThermometrying = 12;</code>
        */
-      @java.lang.Override
       public int getAreaThermometrying() {
         return areaThermometrying_;
       }
@@ -21621,9 +20018,7 @@
        *区域测温状态:0=非区域测温中,1=区域测温中
        * </pre>
        *
-       * <code>uint32 areaThermometrying = 12;</code>
-       * @param value The areaThermometrying to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 areaThermometrying = 12;</code>
        */
       public Builder setAreaThermometrying(int value) {
         
@@ -21636,8 +20031,7 @@
        *区域测温状态:0=非区域测温中,1=区域测温中
        * </pre>
        *
-       * <code>uint32 areaThermometrying = 12;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 areaThermometrying = 12;</code>
        */
       public Builder clearAreaThermometrying() {
         
@@ -21652,10 +20046,8 @@
        *激光测距状态:0=非激光测距中,1=激光测距中
        * </pre>
        *
-       * <code>uint32 laserRanging = 13;</code>
-       * @return The laserRanging.
+       * <code>optional uint32 laserRanging = 13;</code>
        */
-      @java.lang.Override
       public int getLaserRanging() {
         return laserRanging_;
       }
@@ -21664,9 +20056,7 @@
        *激光测距状态:0=非激光测距中,1=激光测距中
        * </pre>
        *
-       * <code>uint32 laserRanging = 13;</code>
-       * @param value The laserRanging to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 laserRanging = 13;</code>
        */
       public Builder setLaserRanging(int value) {
         
@@ -21679,8 +20069,7 @@
        *激光测距状态:0=非激光测距中,1=激光测距中
        * </pre>
        *
-       * <code>uint32 laserRanging = 13;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 laserRanging = 13;</code>
        */
       public Builder clearLaserRanging() {
         
@@ -21688,16 +20077,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -21716,12 +20103,11 @@
 
     private static final com.google.protobuf.Parser<CameraState>
         PARSER = new com.google.protobuf.AbstractParser<CameraState>() {
-      @java.lang.Override
       public CameraState parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new CameraState(input, extensionRegistry);
+          return new CameraState(input, extensionRegistry);
       }
     };
 
@@ -21734,7 +20120,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.CameraState getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -21750,8 +20135,7 @@
      *航线是否暂停中:0=未暂停,1=暂停中
      * </pre>
      *
-     * <code>uint32 isPause = 1;</code>
-     * @return The isPause.
+     * <code>optional uint32 isPause = 1;</code>
      */
     int getIsPause();
 
@@ -21760,8 +20144,7 @@
      *目标航点下标(说明:开始成功到第一个航点之间此值为0,到达第一个航点此值为1,到达第二个航点此值为2,以此类推,航线结束后此值不清空直到下一次开始航线)
      * </pre>
      *
-     * <code>uint32 targetWaypointIndex = 2;</code>
-     * @return The targetWaypointIndex.
+     * <code>optional uint32 targetWaypointIndex = 2;</code>
      */
     int getTargetWaypointIndex();
 
@@ -21770,8 +20153,7 @@
      *是否航点完成:1完成、0未完成(此值废弃)
      * </pre>
      *
-     * <code>uint32 isWaypointFinished = 3;</code>
-     * @return The isWaypointFinished.
+     * <code>optional uint32 isWaypointFinished = 3;</code>
      */
     int getIsWaypointFinished();
 
@@ -21780,8 +20162,7 @@
      *云盒是否发送视频数据:0=不发送,1=发送
      * </pre>
      *
-     * <code>uint32 pushVideo = 4;</code>
-     * @return The pushVideo.
+     * <code>optional uint32 pushVideo = 4;</code>
      */
     int getPushVideo();
 
@@ -21790,8 +20171,7 @@
      *是否锁定4G:0=不锁定,1=锁定
      * </pre>
      *
-     * <code>uint32 lock4g = 5;</code>
-     * @return The lock4g.
+     * <code>optional uint32 lock4g = 5;</code>
      */
     int getLock4G();
 
@@ -21800,8 +20180,7 @@
      *是否开通图片自动回传功能:0=未开通,1=已开通
      * </pre>
      *
-     * <code>uint32 boxModel = 6;</code>
-     * @return The boxModel.
+     * <code>optional uint32 boxModel = 6;</code>
      */
     int getBoxModel();
 
@@ -21810,8 +20189,7 @@
      *自动拍照间隔:0未开始,3~255间隔时间
      * </pre>
      *
-     * <code>uint32 mapPlay = 7;</code>
-     * @return The mapPlay.
+     * <code>optional uint32 mapPlay = 7;</code>
      */
     int getMapPlay();
 
@@ -21820,8 +20198,7 @@
      *网络失联后动作:0=返回HOME点,1=继续航线
      * </pre>
      *
-     * <code>uint32 loseAction = 8;</code>
-     * @return The loseAction.
+     * <code>optional uint32 loseAction = 8;</code>
      */
     int getLoseAction();
 
@@ -21830,8 +20207,7 @@
      *是否打点飞行控制中:0=否,1=是
      * </pre>
      *
-     * <code>uint32 isPointControl = 9;</code>
-     * @return The isPointControl.
+     * <code>optional uint32 isPointControl = 9;</code>
      */
     int getIsPointControl();
 
@@ -21840,8 +20216,7 @@
      *是否UWB精准降落中:0=不是,1=是
      * </pre>
      *
-     * <code>uint32 isUwbLanding = 10;</code>
-     * @return The isUwbLanding.
+     * <code>optional uint32 isUwbLanding = 10;</code>
      */
     int getIsUwbLanding();
 
@@ -21850,8 +20225,7 @@
      *视频是否推流中:0=不是,1=是
      * </pre>
      *
-     * <code>uint32 isPushVideoing = 11;</code>
-     * @return The isPushVideoing.
+     * <code>optional uint32 isPushVideoing = 11;</code>
      */
     int getIsPushVideoing();
 
@@ -21860,8 +20234,7 @@
      *是否二维码精准降落中:0=不是,1=是
      * </pre>
      *
-     * <code>uint32 isDLanding = 12;</code>
-     * @return The isDLanding.
+     * <code>optional uint32 isDLanding = 12;</code>
      */
     int getIsDLanding();
 
@@ -21870,8 +20243,7 @@
      *二维码精准降落模式:0=载荷降落,1=下视降落
      * </pre>
      *
-     * <code>uint32 perceptionFlag = 13;</code>
-     * @return The perceptionFlag.
+     * <code>optional uint32 perceptionFlag = 13;</code>
      */
     int getPerceptionFlag();
 
@@ -21880,8 +20252,7 @@
      *是否指定距离飞行控制中:0=否,1=是
      * </pre>
      *
-     * <code>uint32 isPositionControl = 14;</code>
-     * @return The isPositionControl.
+     * <code>optional uint32 isPositionControl = 14;</code>
      */
     int getIsPositionControl();
   }
@@ -21892,40 +20263,42 @@
    *
    * Protobuf type {@code MissionState}
    */
-  public static final class MissionState extends
+  public  static final class MissionState extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:MissionState)
       MissionStateOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use MissionState.newBuilder() to construct.
     private MissionState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private MissionState() {
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new MissionState();
+      isPause_ = 0;
+      targetWaypointIndex_ = 0;
+      isWaypointFinished_ = 0;
+      pushVideo_ = 0;
+      lock4G_ = 0;
+      boxModel_ = 0;
+      mapPlay_ = 0;
+      loseAction_ = 0;
+      isPointControl_ = 0;
+      isUwbLanding_ = 0;
+      isPushVideoing_ = 0;
+      isDLanding_ = 0;
+      perceptionFlag_ = 0;
+      isPositionControl_ = 0;
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private MissionState(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -21934,6 +20307,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 8: {
 
               isPause_ = input.readUInt32();
@@ -22004,24 +20383,14 @@
               isPositionControl_ = input.readUInt32();
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -22030,7 +20399,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_MissionState_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_MissionState_fieldAccessorTable
@@ -22045,10 +20413,8 @@
      *航线是否暂停中:0=未暂停,1=暂停中
      * </pre>
      *
-     * <code>uint32 isPause = 1;</code>
-     * @return The isPause.
+     * <code>optional uint32 isPause = 1;</code>
      */
-    @java.lang.Override
     public int getIsPause() {
       return isPause_;
     }
@@ -22060,10 +20426,8 @@
      *目标航点下标(说明:开始成功到第一个航点之间此值为0,到达第一个航点此值为1,到达第二个航点此值为2,以此类推,航线结束后此值不清空直到下一次开始航线)
      * </pre>
      *
-     * <code>uint32 targetWaypointIndex = 2;</code>
-     * @return The targetWaypointIndex.
+     * <code>optional uint32 targetWaypointIndex = 2;</code>
      */
-    @java.lang.Override
     public int getTargetWaypointIndex() {
       return targetWaypointIndex_;
     }
@@ -22075,10 +20439,8 @@
      *是否航点完成:1完成、0未完成(此值废弃)
      * </pre>
      *
-     * <code>uint32 isWaypointFinished = 3;</code>
-     * @return The isWaypointFinished.
+     * <code>optional uint32 isWaypointFinished = 3;</code>
      */
-    @java.lang.Override
     public int getIsWaypointFinished() {
       return isWaypointFinished_;
     }
@@ -22090,10 +20452,8 @@
      *云盒是否发送视频数据:0=不发送,1=发送
      * </pre>
      *
-     * <code>uint32 pushVideo = 4;</code>
-     * @return The pushVideo.
+     * <code>optional uint32 pushVideo = 4;</code>
      */
-    @java.lang.Override
     public int getPushVideo() {
       return pushVideo_;
     }
@@ -22105,10 +20465,8 @@
      *是否锁定4G:0=不锁定,1=锁定
      * </pre>
      *
-     * <code>uint32 lock4g = 5;</code>
-     * @return The lock4g.
+     * <code>optional uint32 lock4g = 5;</code>
      */
-    @java.lang.Override
     public int getLock4G() {
       return lock4G_;
     }
@@ -22120,10 +20478,8 @@
      *是否开通图片自动回传功能:0=未开通,1=已开通
      * </pre>
      *
-     * <code>uint32 boxModel = 6;</code>
-     * @return The boxModel.
+     * <code>optional uint32 boxModel = 6;</code>
      */
-    @java.lang.Override
     public int getBoxModel() {
       return boxModel_;
     }
@@ -22135,10 +20491,8 @@
      *自动拍照间隔:0未开始,3~255间隔时间
      * </pre>
      *
-     * <code>uint32 mapPlay = 7;</code>
-     * @return The mapPlay.
+     * <code>optional uint32 mapPlay = 7;</code>
      */
-    @java.lang.Override
     public int getMapPlay() {
       return mapPlay_;
     }
@@ -22150,10 +20504,8 @@
      *网络失联后动作:0=返回HOME点,1=继续航线
      * </pre>
      *
-     * <code>uint32 loseAction = 8;</code>
-     * @return The loseAction.
+     * <code>optional uint32 loseAction = 8;</code>
      */
-    @java.lang.Override
     public int getLoseAction() {
       return loseAction_;
     }
@@ -22165,10 +20517,8 @@
      *是否打点飞行控制中:0=否,1=是
      * </pre>
      *
-     * <code>uint32 isPointControl = 9;</code>
-     * @return The isPointControl.
+     * <code>optional uint32 isPointControl = 9;</code>
      */
-    @java.lang.Override
     public int getIsPointControl() {
       return isPointControl_;
     }
@@ -22180,10 +20530,8 @@
      *是否UWB精准降落中:0=不是,1=是
      * </pre>
      *
-     * <code>uint32 isUwbLanding = 10;</code>
-     * @return The isUwbLanding.
+     * <code>optional uint32 isUwbLanding = 10;</code>
      */
-    @java.lang.Override
     public int getIsUwbLanding() {
       return isUwbLanding_;
     }
@@ -22195,10 +20543,8 @@
      *视频是否推流中:0=不是,1=是
      * </pre>
      *
-     * <code>uint32 isPushVideoing = 11;</code>
-     * @return The isPushVideoing.
+     * <code>optional uint32 isPushVideoing = 11;</code>
      */
-    @java.lang.Override
     public int getIsPushVideoing() {
       return isPushVideoing_;
     }
@@ -22210,10 +20556,8 @@
      *是否二维码精准降落中:0=不是,1=是
      * </pre>
      *
-     * <code>uint32 isDLanding = 12;</code>
-     * @return The isDLanding.
+     * <code>optional uint32 isDLanding = 12;</code>
      */
-    @java.lang.Override
     public int getIsDLanding() {
       return isDLanding_;
     }
@@ -22225,10 +20569,8 @@
      *二维码精准降落模式:0=载荷降落,1=下视降落
      * </pre>
      *
-     * <code>uint32 perceptionFlag = 13;</code>
-     * @return The perceptionFlag.
+     * <code>optional uint32 perceptionFlag = 13;</code>
      */
-    @java.lang.Override
     public int getPerceptionFlag() {
       return perceptionFlag_;
     }
@@ -22240,16 +20582,13 @@
      *是否指定距离飞行控制中:0=否,1=是
      * </pre>
      *
-     * <code>uint32 isPositionControl = 14;</code>
-     * @return The isPositionControl.
+     * <code>optional uint32 isPositionControl = 14;</code>
      */
-    @java.lang.Override
     public int getIsPositionControl() {
       return isPositionControl_;
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -22259,7 +20598,6 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       if (isPause_ != 0) {
@@ -22304,10 +20642,8 @@
       if (isPositionControl_ != 0) {
         output.writeUInt32(14, isPositionControl_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -22369,11 +20705,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(14, isPositionControl_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -22384,36 +20720,36 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState) obj;
 
-      if (getIsPause()
-          != other.getIsPause()) return false;
-      if (getTargetWaypointIndex()
-          != other.getTargetWaypointIndex()) return false;
-      if (getIsWaypointFinished()
-          != other.getIsWaypointFinished()) return false;
-      if (getPushVideo()
-          != other.getPushVideo()) return false;
-      if (getLock4G()
-          != other.getLock4G()) return false;
-      if (getBoxModel()
-          != other.getBoxModel()) return false;
-      if (getMapPlay()
-          != other.getMapPlay()) return false;
-      if (getLoseAction()
-          != other.getLoseAction()) return false;
-      if (getIsPointControl()
-          != other.getIsPointControl()) return false;
-      if (getIsUwbLanding()
-          != other.getIsUwbLanding()) return false;
-      if (getIsPushVideoing()
-          != other.getIsPushVideoing()) return false;
-      if (getIsDLanding()
-          != other.getIsDLanding()) return false;
-      if (getPerceptionFlag()
-          != other.getPerceptionFlag()) return false;
-      if (getIsPositionControl()
-          != other.getIsPositionControl()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && (getIsPause()
+          == other.getIsPause());
+      result = result && (getTargetWaypointIndex()
+          == other.getTargetWaypointIndex());
+      result = result && (getIsWaypointFinished()
+          == other.getIsWaypointFinished());
+      result = result && (getPushVideo()
+          == other.getPushVideo());
+      result = result && (getLock4G()
+          == other.getLock4G());
+      result = result && (getBoxModel()
+          == other.getBoxModel());
+      result = result && (getMapPlay()
+          == other.getMapPlay());
+      result = result && (getLoseAction()
+          == other.getLoseAction());
+      result = result && (getIsPointControl()
+          == other.getIsPointControl());
+      result = result && (getIsUwbLanding()
+          == other.getIsUwbLanding());
+      result = result && (getIsPushVideoing()
+          == other.getIsPushVideoing());
+      result = result && (getIsDLanding()
+          == other.getIsDLanding());
+      result = result && (getPerceptionFlag()
+          == other.getPerceptionFlag());
+      result = result && (getIsPositionControl()
+          == other.getIsPositionControl());
+      return result;
     }
 
     @java.lang.Override
@@ -22422,7 +20758,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + ISPAUSE_FIELD_NUMBER;
       hash = (53 * hash) + getIsPause();
       hash = (37 * hash) + TARGETWAYPOINTINDEX_FIELD_NUMBER;
@@ -22456,17 +20792,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -22526,7 +20851,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -22534,7 +20858,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -22562,7 +20885,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_MissionState_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_MissionState_fieldAccessorTable
@@ -22585,7 +20907,6 @@
                 .alwaysUseFieldBuilders) {
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         isPause_ = 0;
@@ -22619,18 +20940,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_MissionState_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState result = buildPartial();
         if (!result.isInitialized()) {
@@ -22639,7 +20957,6 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState(this);
         result.isPause_ = isPause_;
@@ -22660,39 +20977,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState)other);
@@ -22746,17 +21056,14 @@
         if (other.getIsPositionControl() != 0) {
           setIsPositionControl(other.getIsPositionControl());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -22781,10 +21088,8 @@
        *航线是否暂停中:0=未暂停,1=暂停中
        * </pre>
        *
-       * <code>uint32 isPause = 1;</code>
-       * @return The isPause.
+       * <code>optional uint32 isPause = 1;</code>
        */
-      @java.lang.Override
       public int getIsPause() {
         return isPause_;
       }
@@ -22793,9 +21098,7 @@
        *航线是否暂停中:0=未暂停,1=暂停中
        * </pre>
        *
-       * <code>uint32 isPause = 1;</code>
-       * @param value The isPause to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isPause = 1;</code>
        */
       public Builder setIsPause(int value) {
         
@@ -22808,8 +21111,7 @@
        *航线是否暂停中:0=未暂停,1=暂停中
        * </pre>
        *
-       * <code>uint32 isPause = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isPause = 1;</code>
        */
       public Builder clearIsPause() {
         
@@ -22824,10 +21126,8 @@
        *目标航点下标(说明:开始成功到第一个航点之间此值为0,到达第一个航点此值为1,到达第二个航点此值为2,以此类推,航线结束后此值不清空直到下一次开始航线)
        * </pre>
        *
-       * <code>uint32 targetWaypointIndex = 2;</code>
-       * @return The targetWaypointIndex.
+       * <code>optional uint32 targetWaypointIndex = 2;</code>
        */
-      @java.lang.Override
       public int getTargetWaypointIndex() {
         return targetWaypointIndex_;
       }
@@ -22836,9 +21136,7 @@
        *目标航点下标(说明:开始成功到第一个航点之间此值为0,到达第一个航点此值为1,到达第二个航点此值为2,以此类推,航线结束后此值不清空直到下一次开始航线)
        * </pre>
        *
-       * <code>uint32 targetWaypointIndex = 2;</code>
-       * @param value The targetWaypointIndex to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 targetWaypointIndex = 2;</code>
        */
       public Builder setTargetWaypointIndex(int value) {
         
@@ -22851,8 +21149,7 @@
        *目标航点下标(说明:开始成功到第一个航点之间此值为0,到达第一个航点此值为1,到达第二个航点此值为2,以此类推,航线结束后此值不清空直到下一次开始航线)
        * </pre>
        *
-       * <code>uint32 targetWaypointIndex = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 targetWaypointIndex = 2;</code>
        */
       public Builder clearTargetWaypointIndex() {
         
@@ -22867,10 +21164,8 @@
        *是否航点完成:1完成、0未完成(此值废弃)
        * </pre>
        *
-       * <code>uint32 isWaypointFinished = 3;</code>
-       * @return The isWaypointFinished.
+       * <code>optional uint32 isWaypointFinished = 3;</code>
        */
-      @java.lang.Override
       public int getIsWaypointFinished() {
         return isWaypointFinished_;
       }
@@ -22879,9 +21174,7 @@
        *是否航点完成:1完成、0未完成(此值废弃)
        * </pre>
        *
-       * <code>uint32 isWaypointFinished = 3;</code>
-       * @param value The isWaypointFinished to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isWaypointFinished = 3;</code>
        */
       public Builder setIsWaypointFinished(int value) {
         
@@ -22894,8 +21187,7 @@
        *是否航点完成:1完成、0未完成(此值废弃)
        * </pre>
        *
-       * <code>uint32 isWaypointFinished = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isWaypointFinished = 3;</code>
        */
       public Builder clearIsWaypointFinished() {
         
@@ -22910,10 +21202,8 @@
        *云盒是否发送视频数据:0=不发送,1=发送
        * </pre>
        *
-       * <code>uint32 pushVideo = 4;</code>
-       * @return The pushVideo.
+       * <code>optional uint32 pushVideo = 4;</code>
        */
-      @java.lang.Override
       public int getPushVideo() {
         return pushVideo_;
       }
@@ -22922,9 +21212,7 @@
        *云盒是否发送视频数据:0=不发送,1=发送
        * </pre>
        *
-       * <code>uint32 pushVideo = 4;</code>
-       * @param value The pushVideo to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 pushVideo = 4;</code>
        */
       public Builder setPushVideo(int value) {
         
@@ -22937,8 +21225,7 @@
        *云盒是否发送视频数据:0=不发送,1=发送
        * </pre>
        *
-       * <code>uint32 pushVideo = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 pushVideo = 4;</code>
        */
       public Builder clearPushVideo() {
         
@@ -22953,10 +21240,8 @@
        *是否锁定4G:0=不锁定,1=锁定
        * </pre>
        *
-       * <code>uint32 lock4g = 5;</code>
-       * @return The lock4g.
+       * <code>optional uint32 lock4g = 5;</code>
        */
-      @java.lang.Override
       public int getLock4G() {
         return lock4G_;
       }
@@ -22965,9 +21250,7 @@
        *是否锁定4G:0=不锁定,1=锁定
        * </pre>
        *
-       * <code>uint32 lock4g = 5;</code>
-       * @param value The lock4g to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 lock4g = 5;</code>
        */
       public Builder setLock4G(int value) {
         
@@ -22980,8 +21263,7 @@
        *是否锁定4G:0=不锁定,1=锁定
        * </pre>
        *
-       * <code>uint32 lock4g = 5;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 lock4g = 5;</code>
        */
       public Builder clearLock4G() {
         
@@ -22996,10 +21278,8 @@
        *是否开通图片自动回传功能:0=未开通,1=已开通
        * </pre>
        *
-       * <code>uint32 boxModel = 6;</code>
-       * @return The boxModel.
+       * <code>optional uint32 boxModel = 6;</code>
        */
-      @java.lang.Override
       public int getBoxModel() {
         return boxModel_;
       }
@@ -23008,9 +21288,7 @@
        *是否开通图片自动回传功能:0=未开通,1=已开通
        * </pre>
        *
-       * <code>uint32 boxModel = 6;</code>
-       * @param value The boxModel to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 boxModel = 6;</code>
        */
       public Builder setBoxModel(int value) {
         
@@ -23023,8 +21301,7 @@
        *是否开通图片自动回传功能:0=未开通,1=已开通
        * </pre>
        *
-       * <code>uint32 boxModel = 6;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 boxModel = 6;</code>
        */
       public Builder clearBoxModel() {
         
@@ -23039,10 +21316,8 @@
        *自动拍照间隔:0未开始,3~255间隔时间
        * </pre>
        *
-       * <code>uint32 mapPlay = 7;</code>
-       * @return The mapPlay.
+       * <code>optional uint32 mapPlay = 7;</code>
        */
-      @java.lang.Override
       public int getMapPlay() {
         return mapPlay_;
       }
@@ -23051,9 +21326,7 @@
        *自动拍照间隔:0未开始,3~255间隔时间
        * </pre>
        *
-       * <code>uint32 mapPlay = 7;</code>
-       * @param value The mapPlay to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 mapPlay = 7;</code>
        */
       public Builder setMapPlay(int value) {
         
@@ -23066,8 +21339,7 @@
        *自动拍照间隔:0未开始,3~255间隔时间
        * </pre>
        *
-       * <code>uint32 mapPlay = 7;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 mapPlay = 7;</code>
        */
       public Builder clearMapPlay() {
         
@@ -23082,10 +21354,8 @@
        *网络失联后动作:0=返回HOME点,1=继续航线
        * </pre>
        *
-       * <code>uint32 loseAction = 8;</code>
-       * @return The loseAction.
+       * <code>optional uint32 loseAction = 8;</code>
        */
-      @java.lang.Override
       public int getLoseAction() {
         return loseAction_;
       }
@@ -23094,9 +21364,7 @@
        *网络失联后动作:0=返回HOME点,1=继续航线
        * </pre>
        *
-       * <code>uint32 loseAction = 8;</code>
-       * @param value The loseAction to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 loseAction = 8;</code>
        */
       public Builder setLoseAction(int value) {
         
@@ -23109,8 +21377,7 @@
        *网络失联后动作:0=返回HOME点,1=继续航线
        * </pre>
        *
-       * <code>uint32 loseAction = 8;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 loseAction = 8;</code>
        */
       public Builder clearLoseAction() {
         
@@ -23125,10 +21392,8 @@
        *是否打点飞行控制中:0=否,1=是
        * </pre>
        *
-       * <code>uint32 isPointControl = 9;</code>
-       * @return The isPointControl.
+       * <code>optional uint32 isPointControl = 9;</code>
        */
-      @java.lang.Override
       public int getIsPointControl() {
         return isPointControl_;
       }
@@ -23137,9 +21402,7 @@
        *是否打点飞行控制中:0=否,1=是
        * </pre>
        *
-       * <code>uint32 isPointControl = 9;</code>
-       * @param value The isPointControl to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isPointControl = 9;</code>
        */
       public Builder setIsPointControl(int value) {
         
@@ -23152,8 +21415,7 @@
        *是否打点飞行控制中:0=否,1=是
        * </pre>
        *
-       * <code>uint32 isPointControl = 9;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isPointControl = 9;</code>
        */
       public Builder clearIsPointControl() {
         
@@ -23168,10 +21430,8 @@
        *是否UWB精准降落中:0=不是,1=是
        * </pre>
        *
-       * <code>uint32 isUwbLanding = 10;</code>
-       * @return The isUwbLanding.
+       * <code>optional uint32 isUwbLanding = 10;</code>
        */
-      @java.lang.Override
       public int getIsUwbLanding() {
         return isUwbLanding_;
       }
@@ -23180,9 +21440,7 @@
        *是否UWB精准降落中:0=不是,1=是
        * </pre>
        *
-       * <code>uint32 isUwbLanding = 10;</code>
-       * @param value The isUwbLanding to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isUwbLanding = 10;</code>
        */
       public Builder setIsUwbLanding(int value) {
         
@@ -23195,8 +21453,7 @@
        *是否UWB精准降落中:0=不是,1=是
        * </pre>
        *
-       * <code>uint32 isUwbLanding = 10;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isUwbLanding = 10;</code>
        */
       public Builder clearIsUwbLanding() {
         
@@ -23211,10 +21468,8 @@
        *视频是否推流中:0=不是,1=是
        * </pre>
        *
-       * <code>uint32 isPushVideoing = 11;</code>
-       * @return The isPushVideoing.
+       * <code>optional uint32 isPushVideoing = 11;</code>
        */
-      @java.lang.Override
       public int getIsPushVideoing() {
         return isPushVideoing_;
       }
@@ -23223,9 +21478,7 @@
        *视频是否推流中:0=不是,1=是
        * </pre>
        *
-       * <code>uint32 isPushVideoing = 11;</code>
-       * @param value The isPushVideoing to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isPushVideoing = 11;</code>
        */
       public Builder setIsPushVideoing(int value) {
         
@@ -23238,8 +21491,7 @@
        *视频是否推流中:0=不是,1=是
        * </pre>
        *
-       * <code>uint32 isPushVideoing = 11;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isPushVideoing = 11;</code>
        */
       public Builder clearIsPushVideoing() {
         
@@ -23254,10 +21506,8 @@
        *是否二维码精准降落中:0=不是,1=是
        * </pre>
        *
-       * <code>uint32 isDLanding = 12;</code>
-       * @return The isDLanding.
+       * <code>optional uint32 isDLanding = 12;</code>
        */
-      @java.lang.Override
       public int getIsDLanding() {
         return isDLanding_;
       }
@@ -23266,9 +21516,7 @@
        *是否二维码精准降落中:0=不是,1=是
        * </pre>
        *
-       * <code>uint32 isDLanding = 12;</code>
-       * @param value The isDLanding to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isDLanding = 12;</code>
        */
       public Builder setIsDLanding(int value) {
         
@@ -23281,8 +21529,7 @@
        *是否二维码精准降落中:0=不是,1=是
        * </pre>
        *
-       * <code>uint32 isDLanding = 12;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isDLanding = 12;</code>
        */
       public Builder clearIsDLanding() {
         
@@ -23297,10 +21544,8 @@
        *二维码精准降落模式:0=载荷降落,1=下视降落
        * </pre>
        *
-       * <code>uint32 perceptionFlag = 13;</code>
-       * @return The perceptionFlag.
+       * <code>optional uint32 perceptionFlag = 13;</code>
        */
-      @java.lang.Override
       public int getPerceptionFlag() {
         return perceptionFlag_;
       }
@@ -23309,9 +21554,7 @@
        *二维码精准降落模式:0=载荷降落,1=下视降落
        * </pre>
        *
-       * <code>uint32 perceptionFlag = 13;</code>
-       * @param value The perceptionFlag to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 perceptionFlag = 13;</code>
        */
       public Builder setPerceptionFlag(int value) {
         
@@ -23324,8 +21567,7 @@
        *二维码精准降落模式:0=载荷降落,1=下视降落
        * </pre>
        *
-       * <code>uint32 perceptionFlag = 13;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 perceptionFlag = 13;</code>
        */
       public Builder clearPerceptionFlag() {
         
@@ -23340,10 +21582,8 @@
        *是否指定距离飞行控制中:0=否,1=是
        * </pre>
        *
-       * <code>uint32 isPositionControl = 14;</code>
-       * @return The isPositionControl.
+       * <code>optional uint32 isPositionControl = 14;</code>
        */
-      @java.lang.Override
       public int getIsPositionControl() {
         return isPositionControl_;
       }
@@ -23352,9 +21592,7 @@
        *是否指定距离飞行控制中:0=否,1=是
        * </pre>
        *
-       * <code>uint32 isPositionControl = 14;</code>
-       * @param value The isPositionControl to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isPositionControl = 14;</code>
        */
       public Builder setIsPositionControl(int value) {
         
@@ -23367,8 +21605,7 @@
        *是否指定距离飞行控制中:0=否,1=是
        * </pre>
        *
-       * <code>uint32 isPositionControl = 14;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isPositionControl = 14;</code>
        */
       public Builder clearIsPositionControl() {
         
@@ -23376,16 +21613,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -23404,12 +21639,11 @@
 
     private static final com.google.protobuf.Parser<MissionState>
         PARSER = new com.google.protobuf.AbstractParser<MissionState>() {
-      @java.lang.Override
       public MissionState parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new MissionState(input, extensionRegistry);
+          return new MissionState(input, extensionRegistry);
       }
     };
 
@@ -23422,7 +21656,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.MissionState getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -23434,8 +21667,7 @@
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * <code>uint32 downHealth = 1;</code>
-     * @return The downHealth.
+     * <code>optional uint32 downHealth = 1;</code>
      */
     int getDownHealth();
 
@@ -23444,30 +21676,26 @@
      *距下障碍物的距离(单位:米),downHealth为1时值有效
      * </pre>
      *
-     * <code>float down = 2;</code>
-     * @return The down.
+     * <code>optional float down = 2;</code>
      */
     float getDown();
 
     /**
-     * <code>uint32 frontHealth = 3;</code>
-     * @return The frontHealth.
+     * <code>optional uint32 frontHealth = 3;</code>
      */
     int getFrontHealth();
 
     /**
      * <pre>
-     *距前障碍物的距离(单位:米),frontHealth为1时值有效 
+     *距前障碍物的距离(单位:米),frontHealth为1时值有效
      * </pre>
      *
-     * <code>float front = 4;</code>
-     * @return The front.
+     * <code>optional float front = 4;</code>
      */
     float getFront();
 
     /**
-     * <code>uint32 rightHealth = 5;</code>
-     * @return The rightHealth.
+     * <code>optional uint32 rightHealth = 5;</code>
      */
     int getRightHealth();
 
@@ -23476,14 +21704,12 @@
      *距右障碍物的距离(单位:米),rightHealth为1时值有效
      * </pre>
      *
-     * <code>float right = 6;</code>
-     * @return The right.
+     * <code>optional float right = 6;</code>
      */
     float getRight();
 
     /**
-     * <code>uint32 backHealth = 7;</code>
-     * @return The backHealth.
+     * <code>optional uint32 backHealth = 7;</code>
      */
     int getBackHealth();
 
@@ -23492,14 +21718,12 @@
      *距后障碍物的距离(单位:米),backHealth为1时值有效
      * </pre>
      *
-     * <code>float back = 8;</code>
-     * @return The back.
+     * <code>optional float back = 8;</code>
      */
     float getBack();
 
     /**
-     * <code>uint32 leftHealth = 9;</code>
-     * @return The leftHealth.
+     * <code>optional uint32 leftHealth = 9;</code>
      */
     int getLeftHealth();
 
@@ -23508,14 +21732,12 @@
      *距左障碍物的距离(单位:米),leftHealth为1时值有效
      * </pre>
      *
-     * <code>float left = 10;</code>
-     * @return The left.
+     * <code>optional float left = 10;</code>
      */
     float getLeft();
 
     /**
-     * <code>uint32 upHealth = 11;</code>
-     * @return The upHealth.
+     * <code>optional uint32 upHealth = 11;</code>
      */
     int getUpHealth();
 
@@ -23524,8 +21746,7 @@
      *距上障碍物的距离(单位:米),upHealth为1时值有效
      * </pre>
      *
-     * <code>float up = 12;</code>
-     * @return The up.
+     * <code>optional float up = 12;</code>
      */
     float getUp();
 
@@ -23534,8 +21755,7 @@
      *下视觉避障开关状态:0-关闭 1-打开
      * </pre>
      *
-     * <code>uint32 avoidanceEnableStatusDown = 13;</code>
-     * @return The avoidanceEnableStatusDown.
+     * <code>optional uint32 avoidanceEnableStatusDown = 13;</code>
      */
     int getAvoidanceEnableStatusDown();
 
@@ -23544,8 +21764,7 @@
      *上视觉避障开关状态:0-关闭 1-打开
      * </pre>
      *
-     * <code>uint32 avoidanceEnableStatusUp = 14;</code>
-     * @return The avoidanceEnableStatusUp.
+     * <code>optional uint32 avoidanceEnableStatusUp = 14;</code>
      */
     int getAvoidanceEnableStatusUp();
 
@@ -23554,8 +21773,7 @@
      *水平视觉避障开关状态:0-关闭 1-打开
      * </pre>
      *
-     * <code>uint32 avoidanceEnableStatusHorizontal = 15;</code>
-     * @return The avoidanceEnableStatusHorizontal.
+     * <code>optional uint32 avoidanceEnableStatusHorizontal = 15;</code>
      */
     int getAvoidanceEnableStatusHorizontal();
   }
@@ -23566,40 +21784,43 @@
    *
    * Protobuf type {@code AvoidanceData}
    */
-  public static final class AvoidanceData extends
+  public  static final class AvoidanceData extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:AvoidanceData)
       AvoidanceDataOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use AvoidanceData.newBuilder() to construct.
     private AvoidanceData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private AvoidanceData() {
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new AvoidanceData();
+      downHealth_ = 0;
+      down_ = 0F;
+      frontHealth_ = 0;
+      front_ = 0F;
+      rightHealth_ = 0;
+      right_ = 0F;
+      backHealth_ = 0;
+      back_ = 0F;
+      leftHealth_ = 0;
+      left_ = 0F;
+      upHealth_ = 0;
+      up_ = 0F;
+      avoidanceEnableStatusDown_ = 0;
+      avoidanceEnableStatusUp_ = 0;
+      avoidanceEnableStatusHorizontal_ = 0;
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private AvoidanceData(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -23608,6 +21829,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 8: {
 
               downHealth_ = input.readUInt32();
@@ -23683,24 +21910,14 @@
               avoidanceEnableStatusHorizontal_ = input.readUInt32();
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -23709,7 +21926,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_AvoidanceData_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_AvoidanceData_fieldAccessorTable
@@ -23720,10 +21936,8 @@
     public static final int DOWNHEALTH_FIELD_NUMBER = 1;
     private int downHealth_;
     /**
-     * <code>uint32 downHealth = 1;</code>
-     * @return The downHealth.
+     * <code>optional uint32 downHealth = 1;</code>
      */
-    @java.lang.Override
     public int getDownHealth() {
       return downHealth_;
     }
@@ -23735,10 +21949,8 @@
      *距下障碍物的距离(单位:米),downHealth为1时值有效
      * </pre>
      *
-     * <code>float down = 2;</code>
-     * @return The down.
+     * <code>optional float down = 2;</code>
      */
-    @java.lang.Override
     public float getDown() {
       return down_;
     }
@@ -23746,10 +21958,8 @@
     public static final int FRONTHEALTH_FIELD_NUMBER = 3;
     private int frontHealth_;
     /**
-     * <code>uint32 frontHealth = 3;</code>
-     * @return The frontHealth.
+     * <code>optional uint32 frontHealth = 3;</code>
      */
-    @java.lang.Override
     public int getFrontHealth() {
       return frontHealth_;
     }
@@ -23758,13 +21968,11 @@
     private float front_;
     /**
      * <pre>
-     *距前障碍物的距离(单位:米),frontHealth为1时值有效 
+     *距前障碍物的距离(单位:米),frontHealth为1时值有效
      * </pre>
      *
-     * <code>float front = 4;</code>
-     * @return The front.
+     * <code>optional float front = 4;</code>
      */
-    @java.lang.Override
     public float getFront() {
       return front_;
     }
@@ -23772,10 +21980,8 @@
     public static final int RIGHTHEALTH_FIELD_NUMBER = 5;
     private int rightHealth_;
     /**
-     * <code>uint32 rightHealth = 5;</code>
-     * @return The rightHealth.
+     * <code>optional uint32 rightHealth = 5;</code>
      */
-    @java.lang.Override
     public int getRightHealth() {
       return rightHealth_;
     }
@@ -23787,10 +21993,8 @@
      *距右障碍物的距离(单位:米),rightHealth为1时值有效
      * </pre>
      *
-     * <code>float right = 6;</code>
-     * @return The right.
+     * <code>optional float right = 6;</code>
      */
-    @java.lang.Override
     public float getRight() {
       return right_;
     }
@@ -23798,10 +22002,8 @@
     public static final int BACKHEALTH_FIELD_NUMBER = 7;
     private int backHealth_;
     /**
-     * <code>uint32 backHealth = 7;</code>
-     * @return The backHealth.
+     * <code>optional uint32 backHealth = 7;</code>
      */
-    @java.lang.Override
     public int getBackHealth() {
       return backHealth_;
     }
@@ -23813,10 +22015,8 @@
      *距后障碍物的距离(单位:米),backHealth为1时值有效
      * </pre>
      *
-     * <code>float back = 8;</code>
-     * @return The back.
+     * <code>optional float back = 8;</code>
      */
-    @java.lang.Override
     public float getBack() {
       return back_;
     }
@@ -23824,10 +22024,8 @@
     public static final int LEFTHEALTH_FIELD_NUMBER = 9;
     private int leftHealth_;
     /**
-     * <code>uint32 leftHealth = 9;</code>
-     * @return The leftHealth.
+     * <code>optional uint32 leftHealth = 9;</code>
      */
-    @java.lang.Override
     public int getLeftHealth() {
       return leftHealth_;
     }
@@ -23839,10 +22037,8 @@
      *距左障碍物的距离(单位:米),leftHealth为1时值有效
      * </pre>
      *
-     * <code>float left = 10;</code>
-     * @return The left.
+     * <code>optional float left = 10;</code>
      */
-    @java.lang.Override
     public float getLeft() {
       return left_;
     }
@@ -23850,10 +22046,8 @@
     public static final int UPHEALTH_FIELD_NUMBER = 11;
     private int upHealth_;
     /**
-     * <code>uint32 upHealth = 11;</code>
-     * @return The upHealth.
+     * <code>optional uint32 upHealth = 11;</code>
      */
-    @java.lang.Override
     public int getUpHealth() {
       return upHealth_;
     }
@@ -23865,10 +22059,8 @@
      *距上障碍物的距离(单位:米),upHealth为1时值有效
      * </pre>
      *
-     * <code>float up = 12;</code>
-     * @return The up.
+     * <code>optional float up = 12;</code>
      */
-    @java.lang.Override
     public float getUp() {
       return up_;
     }
@@ -23880,10 +22072,8 @@
      *下视觉避障开关状态:0-关闭 1-打开
      * </pre>
      *
-     * <code>uint32 avoidanceEnableStatusDown = 13;</code>
-     * @return The avoidanceEnableStatusDown.
+     * <code>optional uint32 avoidanceEnableStatusDown = 13;</code>
      */
-    @java.lang.Override
     public int getAvoidanceEnableStatusDown() {
       return avoidanceEnableStatusDown_;
     }
@@ -23895,10 +22085,8 @@
      *上视觉避障开关状态:0-关闭 1-打开
      * </pre>
      *
-     * <code>uint32 avoidanceEnableStatusUp = 14;</code>
-     * @return The avoidanceEnableStatusUp.
+     * <code>optional uint32 avoidanceEnableStatusUp = 14;</code>
      */
-    @java.lang.Override
     public int getAvoidanceEnableStatusUp() {
       return avoidanceEnableStatusUp_;
     }
@@ -23910,16 +22098,13 @@
      *水平视觉避障开关状态:0-关闭 1-打开
      * </pre>
      *
-     * <code>uint32 avoidanceEnableStatusHorizontal = 15;</code>
-     * @return The avoidanceEnableStatusHorizontal.
+     * <code>optional uint32 avoidanceEnableStatusHorizontal = 15;</code>
      */
-    @java.lang.Override
     public int getAvoidanceEnableStatusHorizontal() {
       return avoidanceEnableStatusHorizontal_;
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -23929,43 +22114,42 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       if (downHealth_ != 0) {
         output.writeUInt32(1, downHealth_);
       }
-      if (java.lang.Float.floatToRawIntBits(down_) != 0) {
+      if (down_ != 0F) {
         output.writeFloat(2, down_);
       }
       if (frontHealth_ != 0) {
         output.writeUInt32(3, frontHealth_);
       }
-      if (java.lang.Float.floatToRawIntBits(front_) != 0) {
+      if (front_ != 0F) {
         output.writeFloat(4, front_);
       }
       if (rightHealth_ != 0) {
         output.writeUInt32(5, rightHealth_);
       }
-      if (java.lang.Float.floatToRawIntBits(right_) != 0) {
+      if (right_ != 0F) {
         output.writeFloat(6, right_);
       }
       if (backHealth_ != 0) {
         output.writeUInt32(7, backHealth_);
       }
-      if (java.lang.Float.floatToRawIntBits(back_) != 0) {
+      if (back_ != 0F) {
         output.writeFloat(8, back_);
       }
       if (leftHealth_ != 0) {
         output.writeUInt32(9, leftHealth_);
       }
-      if (java.lang.Float.floatToRawIntBits(left_) != 0) {
+      if (left_ != 0F) {
         output.writeFloat(10, left_);
       }
       if (upHealth_ != 0) {
         output.writeUInt32(11, upHealth_);
       }
-      if (java.lang.Float.floatToRawIntBits(up_) != 0) {
+      if (up_ != 0F) {
         output.writeFloat(12, up_);
       }
       if (avoidanceEnableStatusDown_ != 0) {
@@ -23977,10 +22161,8 @@
       if (avoidanceEnableStatusHorizontal_ != 0) {
         output.writeUInt32(15, avoidanceEnableStatusHorizontal_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -23990,7 +22172,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(1, downHealth_);
       }
-      if (java.lang.Float.floatToRawIntBits(down_) != 0) {
+      if (down_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(2, down_);
       }
@@ -23998,7 +22180,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(3, frontHealth_);
       }
-      if (java.lang.Float.floatToRawIntBits(front_) != 0) {
+      if (front_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(4, front_);
       }
@@ -24006,7 +22188,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(5, rightHealth_);
       }
-      if (java.lang.Float.floatToRawIntBits(right_) != 0) {
+      if (right_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(6, right_);
       }
@@ -24014,7 +22196,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(7, backHealth_);
       }
-      if (java.lang.Float.floatToRawIntBits(back_) != 0) {
+      if (back_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(8, back_);
       }
@@ -24022,7 +22204,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(9, leftHealth_);
       }
-      if (java.lang.Float.floatToRawIntBits(left_) != 0) {
+      if (left_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(10, left_);
       }
@@ -24030,7 +22212,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(11, upHealth_);
       }
-      if (java.lang.Float.floatToRawIntBits(up_) != 0) {
+      if (up_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(12, up_);
       }
@@ -24046,11 +22228,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(15, avoidanceEnableStatusHorizontal_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -24061,44 +22243,50 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData) obj;
 
-      if (getDownHealth()
-          != other.getDownHealth()) return false;
-      if (java.lang.Float.floatToIntBits(getDown())
-          != java.lang.Float.floatToIntBits(
-              other.getDown())) return false;
-      if (getFrontHealth()
-          != other.getFrontHealth()) return false;
-      if (java.lang.Float.floatToIntBits(getFront())
-          != java.lang.Float.floatToIntBits(
-              other.getFront())) return false;
-      if (getRightHealth()
-          != other.getRightHealth()) return false;
-      if (java.lang.Float.floatToIntBits(getRight())
-          != java.lang.Float.floatToIntBits(
-              other.getRight())) return false;
-      if (getBackHealth()
-          != other.getBackHealth()) return false;
-      if (java.lang.Float.floatToIntBits(getBack())
-          != java.lang.Float.floatToIntBits(
-              other.getBack())) return false;
-      if (getLeftHealth()
-          != other.getLeftHealth()) return false;
-      if (java.lang.Float.floatToIntBits(getLeft())
-          != java.lang.Float.floatToIntBits(
-              other.getLeft())) return false;
-      if (getUpHealth()
-          != other.getUpHealth()) return false;
-      if (java.lang.Float.floatToIntBits(getUp())
-          != java.lang.Float.floatToIntBits(
-              other.getUp())) return false;
-      if (getAvoidanceEnableStatusDown()
-          != other.getAvoidanceEnableStatusDown()) return false;
-      if (getAvoidanceEnableStatusUp()
-          != other.getAvoidanceEnableStatusUp()) return false;
-      if (getAvoidanceEnableStatusHorizontal()
-          != other.getAvoidanceEnableStatusHorizontal()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && (getDownHealth()
+          == other.getDownHealth());
+      result = result && (
+          java.lang.Float.floatToIntBits(getDown())
+          == java.lang.Float.floatToIntBits(
+              other.getDown()));
+      result = result && (getFrontHealth()
+          == other.getFrontHealth());
+      result = result && (
+          java.lang.Float.floatToIntBits(getFront())
+          == java.lang.Float.floatToIntBits(
+              other.getFront()));
+      result = result && (getRightHealth()
+          == other.getRightHealth());
+      result = result && (
+          java.lang.Float.floatToIntBits(getRight())
+          == java.lang.Float.floatToIntBits(
+              other.getRight()));
+      result = result && (getBackHealth()
+          == other.getBackHealth());
+      result = result && (
+          java.lang.Float.floatToIntBits(getBack())
+          == java.lang.Float.floatToIntBits(
+              other.getBack()));
+      result = result && (getLeftHealth()
+          == other.getLeftHealth());
+      result = result && (
+          java.lang.Float.floatToIntBits(getLeft())
+          == java.lang.Float.floatToIntBits(
+              other.getLeft()));
+      result = result && (getUpHealth()
+          == other.getUpHealth());
+      result = result && (
+          java.lang.Float.floatToIntBits(getUp())
+          == java.lang.Float.floatToIntBits(
+              other.getUp()));
+      result = result && (getAvoidanceEnableStatusDown()
+          == other.getAvoidanceEnableStatusDown());
+      result = result && (getAvoidanceEnableStatusUp()
+          == other.getAvoidanceEnableStatusUp());
+      result = result && (getAvoidanceEnableStatusHorizontal()
+          == other.getAvoidanceEnableStatusHorizontal());
+      return result;
     }
 
     @java.lang.Override
@@ -24107,7 +22295,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + DOWNHEALTH_FIELD_NUMBER;
       hash = (53 * hash) + getDownHealth();
       hash = (37 * hash) + DOWN_FIELD_NUMBER;
@@ -24149,17 +22337,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -24219,7 +22396,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -24227,7 +22403,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -24255,7 +22430,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_AvoidanceData_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_AvoidanceData_fieldAccessorTable
@@ -24278,7 +22452,6 @@
                 .alwaysUseFieldBuilders) {
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         downHealth_ = 0;
@@ -24314,18 +22487,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_AvoidanceData_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData result = buildPartial();
         if (!result.isInitialized()) {
@@ -24334,7 +22504,6 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData(this);
         result.downHealth_ = downHealth_;
@@ -24356,39 +22525,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData)other);
@@ -24445,17 +22607,14 @@
         if (other.getAvoidanceEnableStatusHorizontal() != 0) {
           setAvoidanceEnableStatusHorizontal(other.getAvoidanceEnableStatusHorizontal());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -24476,17 +22635,13 @@
 
       private int downHealth_ ;
       /**
-       * <code>uint32 downHealth = 1;</code>
-       * @return The downHealth.
+       * <code>optional uint32 downHealth = 1;</code>
        */
-      @java.lang.Override
       public int getDownHealth() {
         return downHealth_;
       }
       /**
-       * <code>uint32 downHealth = 1;</code>
-       * @param value The downHealth to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 downHealth = 1;</code>
        */
       public Builder setDownHealth(int value) {
         
@@ -24495,8 +22650,7 @@
         return this;
       }
       /**
-       * <code>uint32 downHealth = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 downHealth = 1;</code>
        */
       public Builder clearDownHealth() {
         
@@ -24511,10 +22665,8 @@
        *距下障碍物的距离(单位:米),downHealth为1时值有效
        * </pre>
        *
-       * <code>float down = 2;</code>
-       * @return The down.
+       * <code>optional float down = 2;</code>
        */
-      @java.lang.Override
       public float getDown() {
         return down_;
       }
@@ -24523,9 +22675,7 @@
        *距下障碍物的距离(单位:米),downHealth为1时值有效
        * </pre>
        *
-       * <code>float down = 2;</code>
-       * @param value The down to set.
-       * @return This builder for chaining.
+       * <code>optional float down = 2;</code>
        */
       public Builder setDown(float value) {
         
@@ -24538,8 +22688,7 @@
        *距下障碍物的距离(单位:米),downHealth为1时值有效
        * </pre>
        *
-       * <code>float down = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional float down = 2;</code>
        */
       public Builder clearDown() {
         
@@ -24550,17 +22699,13 @@
 
       private int frontHealth_ ;
       /**
-       * <code>uint32 frontHealth = 3;</code>
-       * @return The frontHealth.
+       * <code>optional uint32 frontHealth = 3;</code>
        */
-      @java.lang.Override
       public int getFrontHealth() {
         return frontHealth_;
       }
       /**
-       * <code>uint32 frontHealth = 3;</code>
-       * @param value The frontHealth to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 frontHealth = 3;</code>
        */
       public Builder setFrontHealth(int value) {
         
@@ -24569,8 +22714,7 @@
         return this;
       }
       /**
-       * <code>uint32 frontHealth = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 frontHealth = 3;</code>
        */
       public Builder clearFrontHealth() {
         
@@ -24582,24 +22726,20 @@
       private float front_ ;
       /**
        * <pre>
-       *距前障碍物的距离(单位:米),frontHealth为1时值有效 
+       *距前障碍物的距离(单位:米),frontHealth为1时值有效
        * </pre>
        *
-       * <code>float front = 4;</code>
-       * @return The front.
+       * <code>optional float front = 4;</code>
        */
-      @java.lang.Override
       public float getFront() {
         return front_;
       }
       /**
        * <pre>
-       *距前障碍物的距离(单位:米),frontHealth为1时值有效 
+       *距前障碍物的距离(单位:米),frontHealth为1时值有效
        * </pre>
        *
-       * <code>float front = 4;</code>
-       * @param value The front to set.
-       * @return This builder for chaining.
+       * <code>optional float front = 4;</code>
        */
       public Builder setFront(float value) {
         
@@ -24609,11 +22749,10 @@
       }
       /**
        * <pre>
-       *距前障碍物的距离(单位:米),frontHealth为1时值有效 
+       *距前障碍物的距离(单位:米),frontHealth为1时值有效
        * </pre>
        *
-       * <code>float front = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional float front = 4;</code>
        */
       public Builder clearFront() {
         
@@ -24624,17 +22763,13 @@
 
       private int rightHealth_ ;
       /**
-       * <code>uint32 rightHealth = 5;</code>
-       * @return The rightHealth.
+       * <code>optional uint32 rightHealth = 5;</code>
        */
-      @java.lang.Override
       public int getRightHealth() {
         return rightHealth_;
       }
       /**
-       * <code>uint32 rightHealth = 5;</code>
-       * @param value The rightHealth to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 rightHealth = 5;</code>
        */
       public Builder setRightHealth(int value) {
         
@@ -24643,8 +22778,7 @@
         return this;
       }
       /**
-       * <code>uint32 rightHealth = 5;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 rightHealth = 5;</code>
        */
       public Builder clearRightHealth() {
         
@@ -24659,10 +22793,8 @@
        *距右障碍物的距离(单位:米),rightHealth为1时值有效
        * </pre>
        *
-       * <code>float right = 6;</code>
-       * @return The right.
+       * <code>optional float right = 6;</code>
        */
-      @java.lang.Override
       public float getRight() {
         return right_;
       }
@@ -24671,9 +22803,7 @@
        *距右障碍物的距离(单位:米),rightHealth为1时值有效
        * </pre>
        *
-       * <code>float right = 6;</code>
-       * @param value The right to set.
-       * @return This builder for chaining.
+       * <code>optional float right = 6;</code>
        */
       public Builder setRight(float value) {
         
@@ -24686,8 +22816,7 @@
        *距右障碍物的距离(单位:米),rightHealth为1时值有效
        * </pre>
        *
-       * <code>float right = 6;</code>
-       * @return This builder for chaining.
+       * <code>optional float right = 6;</code>
        */
       public Builder clearRight() {
         
@@ -24698,17 +22827,13 @@
 
       private int backHealth_ ;
       /**
-       * <code>uint32 backHealth = 7;</code>
-       * @return The backHealth.
+       * <code>optional uint32 backHealth = 7;</code>
        */
-      @java.lang.Override
       public int getBackHealth() {
         return backHealth_;
       }
       /**
-       * <code>uint32 backHealth = 7;</code>
-       * @param value The backHealth to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 backHealth = 7;</code>
        */
       public Builder setBackHealth(int value) {
         
@@ -24717,8 +22842,7 @@
         return this;
       }
       /**
-       * <code>uint32 backHealth = 7;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 backHealth = 7;</code>
        */
       public Builder clearBackHealth() {
         
@@ -24733,10 +22857,8 @@
        *距后障碍物的距离(单位:米),backHealth为1时值有效
        * </pre>
        *
-       * <code>float back = 8;</code>
-       * @return The back.
+       * <code>optional float back = 8;</code>
        */
-      @java.lang.Override
       public float getBack() {
         return back_;
       }
@@ -24745,9 +22867,7 @@
        *距后障碍物的距离(单位:米),backHealth为1时值有效
        * </pre>
        *
-       * <code>float back = 8;</code>
-       * @param value The back to set.
-       * @return This builder for chaining.
+       * <code>optional float back = 8;</code>
        */
       public Builder setBack(float value) {
         
@@ -24760,8 +22880,7 @@
        *距后障碍物的距离(单位:米),backHealth为1时值有效
        * </pre>
        *
-       * <code>float back = 8;</code>
-       * @return This builder for chaining.
+       * <code>optional float back = 8;</code>
        */
       public Builder clearBack() {
         
@@ -24772,17 +22891,13 @@
 
       private int leftHealth_ ;
       /**
-       * <code>uint32 leftHealth = 9;</code>
-       * @return The leftHealth.
+       * <code>optional uint32 leftHealth = 9;</code>
        */
-      @java.lang.Override
       public int getLeftHealth() {
         return leftHealth_;
       }
       /**
-       * <code>uint32 leftHealth = 9;</code>
-       * @param value The leftHealth to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 leftHealth = 9;</code>
        */
       public Builder setLeftHealth(int value) {
         
@@ -24791,8 +22906,7 @@
         return this;
       }
       /**
-       * <code>uint32 leftHealth = 9;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 leftHealth = 9;</code>
        */
       public Builder clearLeftHealth() {
         
@@ -24807,10 +22921,8 @@
        *距左障碍物的距离(单位:米),leftHealth为1时值有效
        * </pre>
        *
-       * <code>float left = 10;</code>
-       * @return The left.
+       * <code>optional float left = 10;</code>
        */
-      @java.lang.Override
       public float getLeft() {
         return left_;
       }
@@ -24819,9 +22931,7 @@
        *距左障碍物的距离(单位:米),leftHealth为1时值有效
        * </pre>
        *
-       * <code>float left = 10;</code>
-       * @param value The left to set.
-       * @return This builder for chaining.
+       * <code>optional float left = 10;</code>
        */
       public Builder setLeft(float value) {
         
@@ -24834,8 +22944,7 @@
        *距左障碍物的距离(单位:米),leftHealth为1时值有效
        * </pre>
        *
-       * <code>float left = 10;</code>
-       * @return This builder for chaining.
+       * <code>optional float left = 10;</code>
        */
       public Builder clearLeft() {
         
@@ -24846,17 +22955,13 @@
 
       private int upHealth_ ;
       /**
-       * <code>uint32 upHealth = 11;</code>
-       * @return The upHealth.
+       * <code>optional uint32 upHealth = 11;</code>
        */
-      @java.lang.Override
       public int getUpHealth() {
         return upHealth_;
       }
       /**
-       * <code>uint32 upHealth = 11;</code>
-       * @param value The upHealth to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 upHealth = 11;</code>
        */
       public Builder setUpHealth(int value) {
         
@@ -24865,8 +22970,7 @@
         return this;
       }
       /**
-       * <code>uint32 upHealth = 11;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 upHealth = 11;</code>
        */
       public Builder clearUpHealth() {
         
@@ -24881,10 +22985,8 @@
        *距上障碍物的距离(单位:米),upHealth为1时值有效
        * </pre>
        *
-       * <code>float up = 12;</code>
-       * @return The up.
+       * <code>optional float up = 12;</code>
        */
-      @java.lang.Override
       public float getUp() {
         return up_;
       }
@@ -24893,9 +22995,7 @@
        *距上障碍物的距离(单位:米),upHealth为1时值有效
        * </pre>
        *
-       * <code>float up = 12;</code>
-       * @param value The up to set.
-       * @return This builder for chaining.
+       * <code>optional float up = 12;</code>
        */
       public Builder setUp(float value) {
         
@@ -24908,8 +23008,7 @@
        *距上障碍物的距离(单位:米),upHealth为1时值有效
        * </pre>
        *
-       * <code>float up = 12;</code>
-       * @return This builder for chaining.
+       * <code>optional float up = 12;</code>
        */
       public Builder clearUp() {
         
@@ -24924,10 +23023,8 @@
        *下视觉避障开关状态:0-关闭 1-打开
        * </pre>
        *
-       * <code>uint32 avoidanceEnableStatusDown = 13;</code>
-       * @return The avoidanceEnableStatusDown.
+       * <code>optional uint32 avoidanceEnableStatusDown = 13;</code>
        */
-      @java.lang.Override
       public int getAvoidanceEnableStatusDown() {
         return avoidanceEnableStatusDown_;
       }
@@ -24936,9 +23033,7 @@
        *下视觉避障开关状态:0-关闭 1-打开
        * </pre>
        *
-       * <code>uint32 avoidanceEnableStatusDown = 13;</code>
-       * @param value The avoidanceEnableStatusDown to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 avoidanceEnableStatusDown = 13;</code>
        */
       public Builder setAvoidanceEnableStatusDown(int value) {
         
@@ -24951,8 +23046,7 @@
        *下视觉避障开关状态:0-关闭 1-打开
        * </pre>
        *
-       * <code>uint32 avoidanceEnableStatusDown = 13;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 avoidanceEnableStatusDown = 13;</code>
        */
       public Builder clearAvoidanceEnableStatusDown() {
         
@@ -24967,10 +23061,8 @@
        *上视觉避障开关状态:0-关闭 1-打开
        * </pre>
        *
-       * <code>uint32 avoidanceEnableStatusUp = 14;</code>
-       * @return The avoidanceEnableStatusUp.
+       * <code>optional uint32 avoidanceEnableStatusUp = 14;</code>
        */
-      @java.lang.Override
       public int getAvoidanceEnableStatusUp() {
         return avoidanceEnableStatusUp_;
       }
@@ -24979,9 +23071,7 @@
        *上视觉避障开关状态:0-关闭 1-打开
        * </pre>
        *
-       * <code>uint32 avoidanceEnableStatusUp = 14;</code>
-       * @param value The avoidanceEnableStatusUp to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 avoidanceEnableStatusUp = 14;</code>
        */
       public Builder setAvoidanceEnableStatusUp(int value) {
         
@@ -24994,8 +23084,7 @@
        *上视觉避障开关状态:0-关闭 1-打开
        * </pre>
        *
-       * <code>uint32 avoidanceEnableStatusUp = 14;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 avoidanceEnableStatusUp = 14;</code>
        */
       public Builder clearAvoidanceEnableStatusUp() {
         
@@ -25010,10 +23099,8 @@
        *水平视觉避障开关状态:0-关闭 1-打开
        * </pre>
        *
-       * <code>uint32 avoidanceEnableStatusHorizontal = 15;</code>
-       * @return The avoidanceEnableStatusHorizontal.
+       * <code>optional uint32 avoidanceEnableStatusHorizontal = 15;</code>
        */
-      @java.lang.Override
       public int getAvoidanceEnableStatusHorizontal() {
         return avoidanceEnableStatusHorizontal_;
       }
@@ -25022,9 +23109,7 @@
        *水平视觉避障开关状态:0-关闭 1-打开
        * </pre>
        *
-       * <code>uint32 avoidanceEnableStatusHorizontal = 15;</code>
-       * @param value The avoidanceEnableStatusHorizontal to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 avoidanceEnableStatusHorizontal = 15;</code>
        */
       public Builder setAvoidanceEnableStatusHorizontal(int value) {
         
@@ -25037,8 +23122,7 @@
        *水平视觉避障开关状态:0-关闭 1-打开
        * </pre>
        *
-       * <code>uint32 avoidanceEnableStatusHorizontal = 15;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 avoidanceEnableStatusHorizontal = 15;</code>
        */
       public Builder clearAvoidanceEnableStatusHorizontal() {
         
@@ -25046,16 +23130,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -25074,12 +23156,11 @@
 
     private static final com.google.protobuf.Parser<AvoidanceData>
         PARSER = new com.google.protobuf.AbstractParser<AvoidanceData>() {
-      @java.lang.Override
       public AvoidanceData parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new AvoidanceData(input, extensionRegistry);
+          return new AvoidanceData(input, extensionRegistry);
       }
     };
 
@@ -25092,7 +23173,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.AvoidanceData getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -25108,8 +23188,7 @@
      *报警信息ID
      * </pre>
      *
-     * <code>uint32 alarmId = 1;</code>
-     * @return The alarmId.
+     * <code>optional uint32 alarmId = 1;</code>
      */
     int getAlarmId();
 
@@ -25118,8 +23197,7 @@
      *等级[1/2-警告 3/4/5-错误]
      * </pre>
      *
-     * <code>uint32 reportLevel = 2;</code>
-     * @return The reportLevel.
+     * <code>optional uint32 reportLevel = 2;</code>
      */
     int getReportLevel();
 
@@ -25128,8 +23206,7 @@
      *报警信息描述(说明:支持中文和英文版本,默认中文,如需切换请联系技术支持)
      * </pre>
      *
-     * <code>string alarmMssInfo = 3;</code>
-     * @return The alarmMssInfo.
+     * <code>optional string alarmMssInfo = 3;</code>
      */
     java.lang.String getAlarmMssInfo();
     /**
@@ -25137,8 +23214,7 @@
      *报警信息描述(说明:支持中文和英文版本,默认中文,如需切换请联系技术支持)
      * </pre>
      *
-     * <code>string alarmMssInfo = 3;</code>
-     * @return The bytes for alarmMssInfo.
+     * <code>optional string alarmMssInfo = 3;</code>
      */
     com.google.protobuf.ByteString
         getAlarmMssInfoBytes();
@@ -25150,41 +23226,31 @@
    *
    * Protobuf type {@code HmsAlarmData}
    */
-  public static final class HmsAlarmData extends
+  public  static final class HmsAlarmData extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:HmsAlarmData)
       HmsAlarmDataOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use HmsAlarmData.newBuilder() to construct.
     private HmsAlarmData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private HmsAlarmData() {
+      alarmId_ = 0;
+      reportLevel_ = 0;
       alarmMssInfo_ = "";
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new HmsAlarmData();
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private HmsAlarmData(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -25193,6 +23259,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 8: {
 
               alarmId_ = input.readUInt32();
@@ -25209,24 +23281,14 @@
               alarmMssInfo_ = s;
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -25235,7 +23297,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_HmsAlarmData_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_HmsAlarmData_fieldAccessorTable
@@ -25250,10 +23311,8 @@
      *报警信息ID
      * </pre>
      *
-     * <code>uint32 alarmId = 1;</code>
-     * @return The alarmId.
+     * <code>optional uint32 alarmId = 1;</code>
      */
-    @java.lang.Override
     public int getAlarmId() {
       return alarmId_;
     }
@@ -25265,10 +23324,8 @@
      *等级[1/2-警告 3/4/5-错误]
      * </pre>
      *
-     * <code>uint32 reportLevel = 2;</code>
-     * @return The reportLevel.
+     * <code>optional uint32 reportLevel = 2;</code>
      */
-    @java.lang.Override
     public int getReportLevel() {
       return reportLevel_;
     }
@@ -25280,10 +23337,8 @@
      *报警信息描述(说明:支持中文和英文版本,默认中文,如需切换请联系技术支持)
      * </pre>
      *
-     * <code>string alarmMssInfo = 3;</code>
-     * @return The alarmMssInfo.
+     * <code>optional string alarmMssInfo = 3;</code>
      */
-    @java.lang.Override
     public java.lang.String getAlarmMssInfo() {
       java.lang.Object ref = alarmMssInfo_;
       if (ref instanceof java.lang.String) {
@@ -25301,10 +23356,8 @@
      *报警信息描述(说明:支持中文和英文版本,默认中文,如需切换请联系技术支持)
      * </pre>
      *
-     * <code>string alarmMssInfo = 3;</code>
-     * @return The bytes for alarmMssInfo.
+     * <code>optional string alarmMssInfo = 3;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getAlarmMssInfoBytes() {
       java.lang.Object ref = alarmMssInfo_;
@@ -25320,7 +23373,6 @@
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -25330,7 +23382,6 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       if (alarmId_ != 0) {
@@ -25339,13 +23390,11 @@
       if (reportLevel_ != 0) {
         output.writeUInt32(2, reportLevel_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alarmMssInfo_)) {
+      if (!getAlarmMssInfoBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 3, alarmMssInfo_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -25359,14 +23408,14 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(2, reportLevel_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(alarmMssInfo_)) {
+      if (!getAlarmMssInfoBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, alarmMssInfo_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -25377,14 +23426,14 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData) obj;
 
-      if (getAlarmId()
-          != other.getAlarmId()) return false;
-      if (getReportLevel()
-          != other.getReportLevel()) return false;
-      if (!getAlarmMssInfo()
-          .equals(other.getAlarmMssInfo())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && (getAlarmId()
+          == other.getAlarmId());
+      result = result && (getReportLevel()
+          == other.getReportLevel());
+      result = result && getAlarmMssInfo()
+          .equals(other.getAlarmMssInfo());
+      return result;
     }
 
     @java.lang.Override
@@ -25393,7 +23442,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + ALARMID_FIELD_NUMBER;
       hash = (53 * hash) + getAlarmId();
       hash = (37 * hash) + REPORTLEVEL_FIELD_NUMBER;
@@ -25405,17 +23454,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -25475,7 +23513,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -25483,7 +23520,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -25511,7 +23547,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_HmsAlarmData_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_HmsAlarmData_fieldAccessorTable
@@ -25534,7 +23569,6 @@
                 .alwaysUseFieldBuilders) {
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         alarmId_ = 0;
@@ -25546,18 +23580,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_HmsAlarmData_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData result = buildPartial();
         if (!result.isInitialized()) {
@@ -25566,7 +23597,6 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData(this);
         result.alarmId_ = alarmId_;
@@ -25576,39 +23606,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData)other);
@@ -25630,17 +23653,14 @@
           alarmMssInfo_ = other.alarmMssInfo_;
           onChanged();
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -25665,10 +23685,8 @@
        *报警信息ID
        * </pre>
        *
-       * <code>uint32 alarmId = 1;</code>
-       * @return The alarmId.
+       * <code>optional uint32 alarmId = 1;</code>
        */
-      @java.lang.Override
       public int getAlarmId() {
         return alarmId_;
       }
@@ -25677,9 +23695,7 @@
        *报警信息ID
        * </pre>
        *
-       * <code>uint32 alarmId = 1;</code>
-       * @param value The alarmId to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 alarmId = 1;</code>
        */
       public Builder setAlarmId(int value) {
         
@@ -25692,8 +23708,7 @@
        *报警信息ID
        * </pre>
        *
-       * <code>uint32 alarmId = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 alarmId = 1;</code>
        */
       public Builder clearAlarmId() {
         
@@ -25708,10 +23723,8 @@
        *等级[1/2-警告 3/4/5-错误]
        * </pre>
        *
-       * <code>uint32 reportLevel = 2;</code>
-       * @return The reportLevel.
+       * <code>optional uint32 reportLevel = 2;</code>
        */
-      @java.lang.Override
       public int getReportLevel() {
         return reportLevel_;
       }
@@ -25720,9 +23733,7 @@
        *等级[1/2-警告 3/4/5-错误]
        * </pre>
        *
-       * <code>uint32 reportLevel = 2;</code>
-       * @param value The reportLevel to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 reportLevel = 2;</code>
        */
       public Builder setReportLevel(int value) {
         
@@ -25735,8 +23746,7 @@
        *等级[1/2-警告 3/4/5-错误]
        * </pre>
        *
-       * <code>uint32 reportLevel = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 reportLevel = 2;</code>
        */
       public Builder clearReportLevel() {
         
@@ -25751,8 +23761,7 @@
        *报警信息描述(说明:支持中文和英文版本,默认中文,如需切换请联系技术支持)
        * </pre>
        *
-       * <code>string alarmMssInfo = 3;</code>
-       * @return The alarmMssInfo.
+       * <code>optional string alarmMssInfo = 3;</code>
        */
       public java.lang.String getAlarmMssInfo() {
         java.lang.Object ref = alarmMssInfo_;
@@ -25771,8 +23780,7 @@
        *报警信息描述(说明:支持中文和英文版本,默认中文,如需切换请联系技术支持)
        * </pre>
        *
-       * <code>string alarmMssInfo = 3;</code>
-       * @return The bytes for alarmMssInfo.
+       * <code>optional string alarmMssInfo = 3;</code>
        */
       public com.google.protobuf.ByteString
           getAlarmMssInfoBytes() {
@@ -25792,9 +23800,7 @@
        *报警信息描述(说明:支持中文和英文版本,默认中文,如需切换请联系技术支持)
        * </pre>
        *
-       * <code>string alarmMssInfo = 3;</code>
-       * @param value The alarmMssInfo to set.
-       * @return This builder for chaining.
+       * <code>optional string alarmMssInfo = 3;</code>
        */
       public Builder setAlarmMssInfo(
           java.lang.String value) {
@@ -25811,8 +23817,7 @@
        *报警信息描述(说明:支持中文和英文版本,默认中文,如需切换请联系技术支持)
        * </pre>
        *
-       * <code>string alarmMssInfo = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional string alarmMssInfo = 3;</code>
        */
       public Builder clearAlarmMssInfo() {
         
@@ -25825,9 +23830,7 @@
        *报警信息描述(说明:支持中文和英文版本,默认中文,如需切换请联系技术支持)
        * </pre>
        *
-       * <code>string alarmMssInfo = 3;</code>
-       * @param value The bytes for alarmMssInfo to set.
-       * @return This builder for chaining.
+       * <code>optional string alarmMssInfo = 3;</code>
        */
       public Builder setAlarmMssInfoBytes(
           com.google.protobuf.ByteString value) {
@@ -25840,16 +23843,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -25868,12 +23869,11 @@
 
     private static final com.google.protobuf.Parser<HmsAlarmData>
         PARSER = new com.google.protobuf.AbstractParser<HmsAlarmData>() {
-      @java.lang.Override
       public HmsAlarmData parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new HmsAlarmData(input, extensionRegistry);
+          return new HmsAlarmData(input, extensionRegistry);
       }
     };
 
@@ -25886,7 +23886,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HmsAlarmData getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -25902,8 +23901,7 @@
      *结束航线后动作:1=返航,2=原地悬停,3=原地降落,4=原地绕飞[目前只osdk4.1版本支持,中心点为最后一个航点,飞机绕此点画圆飞行],5=返回至第一个航点并悬停[如果飞机到最后一个点时RC和飞机失联,飞机会在最后一个点悬停]
      * </pre>
      *
-     * <code>uint32 finishedAction = 1;</code>
-     * @return The finishedAction.
+     * <code>optional uint32 finishedAction = 1;</code>
      */
     int getFinishedAction();
 
@@ -25912,8 +23910,7 @@
      *最大飞行速度(单位:米/秒,范围0~15),默认15
      * </pre>
      *
-     * <code>float maxSpeed = 2;</code>
-     * @return The maxSpeed.
+     * <code>optional float maxSpeed = 2;</code>
      */
     float getMaxSpeed();
 
@@ -25922,8 +23919,7 @@
      *自动飞行速度(单位:米/秒,范围0~15),默认8
      * </pre>
      *
-     * <code>float autoSpeed = 3;</code>
-     * @return The autoSpeed.
+     * <code>optional float autoSpeed = 3;</code>
      */
     float getAutoSpeed();
 
@@ -25976,8 +23972,7 @@
      *网络失联后动作:0=返回HOME点,1=继续航线,默认0
      * </pre>
      *
-     * <code>uint32 loseAction = 5;</code>
-     * @return The loseAction.
+     * <code>optional uint32 loseAction = 5;</code>
      */
     int getLoseAction();
 
@@ -25986,8 +23981,7 @@
      *返航高度:(单位:米,范围20~1500),说明:此值为相对起飞点高度,如果太高会有失去网络覆盖风险。不同飞行器返航逻辑不一样,若飞行器距HOME点距离过近,可能不会升高再返航。具体逻辑请咨询大疆DJI
      * </pre>
      *
-     * <code>uint32 homeHeight = 6;</code>
-     * @return The homeHeight.
+     * <code>optional uint32 homeHeight = 6;</code>
      */
     int getHomeHeight();
 
@@ -25996,8 +23990,7 @@
      *是否开启节能模式:0=不是,1=是(说明:节能模式下,飞机沿最短直线距离由起飞点到航线第一个航点,非升高到第一个航点高度再飞往第一个航点)
      * </pre>
      *
-     * <code>uint32 isSaveEnergyMode = 7;</code>
-     * @return The isSaveEnergyMode.
+     * <code>optional uint32 isSaveEnergyMode = 7;</code>
      */
     int getIsSaveEnergyMode();
 
@@ -26006,8 +23999,7 @@
      *起飞点机库信息
      * </pre>
      *
-     * <code>.HangarPoint takePoint = 8;</code>
-     * @return Whether the takePoint field is set.
+     * <code>optional .HangarPoint takePoint = 8;</code>
      */
     boolean hasTakePoint();
     /**
@@ -26015,8 +24007,7 @@
      *起飞点机库信息
      * </pre>
      *
-     * <code>.HangarPoint takePoint = 8;</code>
-     * @return The takePoint.
+     * <code>optional .HangarPoint takePoint = 8;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint getTakePoint();
     /**
@@ -26024,7 +24015,7 @@
      *起飞点机库信息
      * </pre>
      *
-     * <code>.HangarPoint takePoint = 8;</code>
+     * <code>optional .HangarPoint takePoint = 8;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPointOrBuilder getTakePointOrBuilder();
 
@@ -26033,8 +24024,7 @@
      *降落点机库信息
      * </pre>
      *
-     * <code>.HangarPoint landPoint = 9;</code>
-     * @return Whether the landPoint field is set.
+     * <code>optional .HangarPoint landPoint = 9;</code>
      */
     boolean hasLandPoint();
     /**
@@ -26042,8 +24032,7 @@
      *降落点机库信息
      * </pre>
      *
-     * <code>.HangarPoint landPoint = 9;</code>
-     * @return The landPoint.
+     * <code>optional .HangarPoint landPoint = 9;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint getLandPoint();
     /**
@@ -26051,7 +24040,7 @@
      *降落点机库信息
      * </pre>
      *
-     * <code>.HangarPoint landPoint = 9;</code>
+     * <code>optional .HangarPoint landPoint = 9;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPointOrBuilder getLandPointOrBuilder();
 
@@ -26104,8 +24093,7 @@
      *普通建模
      * </pre>
      *
-     * <code>.NormalModel normalModel = 11;</code>
-     * @return Whether the normalModel field is set.
+     * <code>optional .NormalModel normalModel = 11;</code>
      */
     boolean hasNormalModel();
     /**
@@ -26113,8 +24101,7 @@
      *普通建模
      * </pre>
      *
-     * <code>.NormalModel normalModel = 11;</code>
-     * @return The normalModel.
+     * <code>optional .NormalModel normalModel = 11;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel getNormalModel();
     /**
@@ -26122,7 +24109,7 @@
      *普通建模
      * </pre>
      *
-     * <code>.NormalModel normalModel = 11;</code>
+     * <code>optional .NormalModel normalModel = 11;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModelOrBuilder getNormalModelOrBuilder();
 
@@ -26131,8 +24118,7 @@
      *环绕建模
      * </pre>
      *
-     * <code>.SurroundModel surroundModel = 12;</code>
-     * @return Whether the surroundModel field is set.
+     * <code>optional .SurroundModel surroundModel = 12;</code>
      */
     boolean hasSurroundModel();
     /**
@@ -26140,8 +24126,7 @@
      *环绕建模
      * </pre>
      *
-     * <code>.SurroundModel surroundModel = 12;</code>
-     * @return The surroundModel.
+     * <code>optional .SurroundModel surroundModel = 12;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel getSurroundModel();
     /**
@@ -26149,7 +24134,7 @@
      *环绕建模
      * </pre>
      *
-     * <code>.SurroundModel surroundModel = 12;</code>
+     * <code>optional .SurroundModel surroundModel = 12;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModelOrBuilder getSurroundModelOrBuilder();
 
@@ -26158,8 +24143,7 @@
      *起飞点(对象只包含经纬高)
      * </pre>
      *
-     * <code>.PointData takeOffPoint = 13;</code>
-     * @return Whether the takeOffPoint field is set.
+     * <code>optional .PointData takeOffPoint = 13;</code>
      */
     boolean hasTakeOffPoint();
     /**
@@ -26167,8 +24151,7 @@
      *起飞点(对象只包含经纬高)
      * </pre>
      *
-     * <code>.PointData takeOffPoint = 13;</code>
-     * @return The takeOffPoint.
+     * <code>optional .PointData takeOffPoint = 13;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getTakeOffPoint();
     /**
@@ -26176,7 +24159,7 @@
      *起飞点(对象只包含经纬高)
      * </pre>
      *
-     * <code>.PointData takeOffPoint = 13;</code>
+     * <code>optional .PointData takeOffPoint = 13;</code>
      */
     com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getTakeOffPointOrBuilder();
   }
@@ -26187,43 +24170,36 @@
    *
    * Protobuf type {@code PlanLineData}
    */
-  public static final class PlanLineData extends
+  public  static final class PlanLineData extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:PlanLineData)
       PlanLineDataOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use PlanLineData.newBuilder() to construct.
     private PlanLineData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private PlanLineData() {
+      finishedAction_ = 0;
+      maxSpeed_ = 0F;
+      autoSpeed_ = 0F;
       points_ = java.util.Collections.emptyList();
+      loseAction_ = 0;
+      homeHeight_ = 0;
+      isSaveEnergyMode_ = 0;
       interests_ = java.util.Collections.emptyList();
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new PlanLineData();
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private PlanLineData(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
       int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
         boolean done = false;
         while (!done) {
@@ -26232,6 +24208,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 8: {
 
               finishedAction_ = input.readUInt32();
@@ -26248,9 +24230,9 @@
               break;
             }
             case 34: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                 points_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData>();
-                mutable_bitField0_ |= 0x00000001;
+                mutable_bitField0_ |= 0x00000008;
               }
               points_.add(
                   input.readMessage(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.parser(), extensionRegistry));
@@ -26298,9 +24280,9 @@
               break;
             }
             case 82: {
-              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
+              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                 interests_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData>();
-                mutable_bitField0_ |= 0x00000002;
+                mutable_bitField0_ |= 0x00000200;
               }
               interests_.add(
                   input.readMessage(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.parser(), extensionRegistry));
@@ -26345,30 +24327,20 @@
 
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
           points_ = java.util.Collections.unmodifiableList(points_);
         }
-        if (((mutable_bitField0_ & 0x00000002) != 0)) {
+        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
           interests_ = java.util.Collections.unmodifiableList(interests_);
         }
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -26377,7 +24349,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PlanLineData_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PlanLineData_fieldAccessorTable
@@ -26385,6 +24356,7 @@
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData.class, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData.Builder.class);
     }
 
+    private int bitField0_;
     public static final int FINISHEDACTION_FIELD_NUMBER = 1;
     private int finishedAction_;
     /**
@@ -26392,10 +24364,8 @@
      *结束航线后动作:1=返航,2=原地悬停,3=原地降落,4=原地绕飞[目前只osdk4.1版本支持,中心点为最后一个航点,飞机绕此点画圆飞行],5=返回至第一个航点并悬停[如果飞机到最后一个点时RC和飞机失联,飞机会在最后一个点悬停]
      * </pre>
      *
-     * <code>uint32 finishedAction = 1;</code>
-     * @return The finishedAction.
+     * <code>optional uint32 finishedAction = 1;</code>
      */
-    @java.lang.Override
     public int getFinishedAction() {
       return finishedAction_;
     }
@@ -26407,10 +24377,8 @@
      *最大飞行速度(单位:米/秒,范围0~15),默认15
      * </pre>
      *
-     * <code>float maxSpeed = 2;</code>
-     * @return The maxSpeed.
+     * <code>optional float maxSpeed = 2;</code>
      */
-    @java.lang.Override
     public float getMaxSpeed() {
       return maxSpeed_;
     }
@@ -26422,10 +24390,8 @@
      *自动飞行速度(单位:米/秒,范围0~15),默认8
      * </pre>
      *
-     * <code>float autoSpeed = 3;</code>
-     * @return The autoSpeed.
+     * <code>optional float autoSpeed = 3;</code>
      */
-    @java.lang.Override
     public float getAutoSpeed() {
       return autoSpeed_;
     }
@@ -26439,7 +24405,6 @@
      *
      * <code>repeated .PointData points = 4;</code>
      */
-    @java.lang.Override
     public java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData> getPointsList() {
       return points_;
     }
@@ -26450,7 +24415,6 @@
      *
      * <code>repeated .PointData points = 4;</code>
      */
-    @java.lang.Override
     public java.util.List<? extends com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder> 
         getPointsOrBuilderList() {
       return points_;
@@ -26462,7 +24426,6 @@
      *
      * <code>repeated .PointData points = 4;</code>
      */
-    @java.lang.Override
     public int getPointsCount() {
       return points_.size();
     }
@@ -26473,7 +24436,6 @@
      *
      * <code>repeated .PointData points = 4;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getPoints(int index) {
       return points_.get(index);
     }
@@ -26484,7 +24446,6 @@
      *
      * <code>repeated .PointData points = 4;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getPointsOrBuilder(
         int index) {
       return points_.get(index);
@@ -26497,10 +24458,8 @@
      *网络失联后动作:0=返回HOME点,1=继续航线,默认0
      * </pre>
      *
-     * <code>uint32 loseAction = 5;</code>
-     * @return The loseAction.
+     * <code>optional uint32 loseAction = 5;</code>
      */
-    @java.lang.Override
     public int getLoseAction() {
       return loseAction_;
     }
@@ -26512,10 +24471,8 @@
      *返航高度:(单位:米,范围20~1500),说明:此值为相对起飞点高度,如果太高会有失去网络覆盖风险。不同飞行器返航逻辑不一样,若飞行器距HOME点距离过近,可能不会升高再返航。具体逻辑请咨询大疆DJI
      * </pre>
      *
-     * <code>uint32 homeHeight = 6;</code>
-     * @return The homeHeight.
+     * <code>optional uint32 homeHeight = 6;</code>
      */
-    @java.lang.Override
     public int getHomeHeight() {
       return homeHeight_;
     }
@@ -26527,10 +24484,8 @@
      *是否开启节能模式:0=不是,1=是(说明:节能模式下,飞机沿最短直线距离由起飞点到航线第一个航点,非升高到第一个航点高度再飞往第一个航点)
      * </pre>
      *
-     * <code>uint32 isSaveEnergyMode = 7;</code>
-     * @return The isSaveEnergyMode.
+     * <code>optional uint32 isSaveEnergyMode = 7;</code>
      */
-    @java.lang.Override
     public int getIsSaveEnergyMode() {
       return isSaveEnergyMode_;
     }
@@ -26542,10 +24497,8 @@
      *起飞点机库信息
      * </pre>
      *
-     * <code>.HangarPoint takePoint = 8;</code>
-     * @return Whether the takePoint field is set.
+     * <code>optional .HangarPoint takePoint = 8;</code>
      */
-    @java.lang.Override
     public boolean hasTakePoint() {
       return takePoint_ != null;
     }
@@ -26554,10 +24507,8 @@
      *起飞点机库信息
      * </pre>
      *
-     * <code>.HangarPoint takePoint = 8;</code>
-     * @return The takePoint.
+     * <code>optional .HangarPoint takePoint = 8;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint getTakePoint() {
       return takePoint_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint.getDefaultInstance() : takePoint_;
     }
@@ -26566,9 +24517,8 @@
      *起飞点机库信息
      * </pre>
      *
-     * <code>.HangarPoint takePoint = 8;</code>
+     * <code>optional .HangarPoint takePoint = 8;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPointOrBuilder getTakePointOrBuilder() {
       return getTakePoint();
     }
@@ -26580,10 +24530,8 @@
      *降落点机库信息
      * </pre>
      *
-     * <code>.HangarPoint landPoint = 9;</code>
-     * @return Whether the landPoint field is set.
+     * <code>optional .HangarPoint landPoint = 9;</code>
      */
-    @java.lang.Override
     public boolean hasLandPoint() {
       return landPoint_ != null;
     }
@@ -26592,10 +24540,8 @@
      *降落点机库信息
      * </pre>
      *
-     * <code>.HangarPoint landPoint = 9;</code>
-     * @return The landPoint.
+     * <code>optional .HangarPoint landPoint = 9;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint getLandPoint() {
       return landPoint_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint.getDefaultInstance() : landPoint_;
     }
@@ -26604,9 +24550,8 @@
      *降落点机库信息
      * </pre>
      *
-     * <code>.HangarPoint landPoint = 9;</code>
+     * <code>optional .HangarPoint landPoint = 9;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPointOrBuilder getLandPointOrBuilder() {
       return getLandPoint();
     }
@@ -26620,7 +24565,6 @@
      *
      * <code>repeated .PointData interests = 10;</code>
      */
-    @java.lang.Override
     public java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData> getInterestsList() {
       return interests_;
     }
@@ -26631,7 +24575,6 @@
      *
      * <code>repeated .PointData interests = 10;</code>
      */
-    @java.lang.Override
     public java.util.List<? extends com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder> 
         getInterestsOrBuilderList() {
       return interests_;
@@ -26643,7 +24586,6 @@
      *
      * <code>repeated .PointData interests = 10;</code>
      */
-    @java.lang.Override
     public int getInterestsCount() {
       return interests_.size();
     }
@@ -26654,7 +24596,6 @@
      *
      * <code>repeated .PointData interests = 10;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getInterests(int index) {
       return interests_.get(index);
     }
@@ -26665,7 +24606,6 @@
      *
      * <code>repeated .PointData interests = 10;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getInterestsOrBuilder(
         int index) {
       return interests_.get(index);
@@ -26678,10 +24618,8 @@
      *普通建模
      * </pre>
      *
-     * <code>.NormalModel normalModel = 11;</code>
-     * @return Whether the normalModel field is set.
+     * <code>optional .NormalModel normalModel = 11;</code>
      */
-    @java.lang.Override
     public boolean hasNormalModel() {
       return normalModel_ != null;
     }
@@ -26690,10 +24628,8 @@
      *普通建模
      * </pre>
      *
-     * <code>.NormalModel normalModel = 11;</code>
-     * @return The normalModel.
+     * <code>optional .NormalModel normalModel = 11;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel getNormalModel() {
       return normalModel_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel.getDefaultInstance() : normalModel_;
     }
@@ -26702,9 +24638,8 @@
      *普通建模
      * </pre>
      *
-     * <code>.NormalModel normalModel = 11;</code>
+     * <code>optional .NormalModel normalModel = 11;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModelOrBuilder getNormalModelOrBuilder() {
       return getNormalModel();
     }
@@ -26716,10 +24651,8 @@
      *环绕建模
      * </pre>
      *
-     * <code>.SurroundModel surroundModel = 12;</code>
-     * @return Whether the surroundModel field is set.
+     * <code>optional .SurroundModel surroundModel = 12;</code>
      */
-    @java.lang.Override
     public boolean hasSurroundModel() {
       return surroundModel_ != null;
     }
@@ -26728,10 +24661,8 @@
      *环绕建模
      * </pre>
      *
-     * <code>.SurroundModel surroundModel = 12;</code>
-     * @return The surroundModel.
+     * <code>optional .SurroundModel surroundModel = 12;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel getSurroundModel() {
       return surroundModel_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel.getDefaultInstance() : surroundModel_;
     }
@@ -26740,9 +24671,8 @@
      *环绕建模
      * </pre>
      *
-     * <code>.SurroundModel surroundModel = 12;</code>
+     * <code>optional .SurroundModel surroundModel = 12;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModelOrBuilder getSurroundModelOrBuilder() {
       return getSurroundModel();
     }
@@ -26754,10 +24684,8 @@
      *起飞点(对象只包含经纬高)
      * </pre>
      *
-     * <code>.PointData takeOffPoint = 13;</code>
-     * @return Whether the takeOffPoint field is set.
+     * <code>optional .PointData takeOffPoint = 13;</code>
      */
-    @java.lang.Override
     public boolean hasTakeOffPoint() {
       return takeOffPoint_ != null;
     }
@@ -26766,10 +24694,8 @@
      *起飞点(对象只包含经纬高)
      * </pre>
      *
-     * <code>.PointData takeOffPoint = 13;</code>
-     * @return The takeOffPoint.
+     * <code>optional .PointData takeOffPoint = 13;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getTakeOffPoint() {
       return takeOffPoint_ == null ? com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.getDefaultInstance() : takeOffPoint_;
     }
@@ -26778,15 +24704,13 @@
      *起飞点(对象只包含经纬高)
      * </pre>
      *
-     * <code>.PointData takeOffPoint = 13;</code>
+     * <code>optional .PointData takeOffPoint = 13;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getTakeOffPointOrBuilder() {
       return getTakeOffPoint();
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -26796,16 +24720,15 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       if (finishedAction_ != 0) {
         output.writeUInt32(1, finishedAction_);
       }
-      if (java.lang.Float.floatToRawIntBits(maxSpeed_) != 0) {
+      if (maxSpeed_ != 0F) {
         output.writeFloat(2, maxSpeed_);
       }
-      if (java.lang.Float.floatToRawIntBits(autoSpeed_) != 0) {
+      if (autoSpeed_ != 0F) {
         output.writeFloat(3, autoSpeed_);
       }
       for (int i = 0; i < points_.size(); i++) {
@@ -26838,10 +24761,8 @@
       if (takeOffPoint_ != null) {
         output.writeMessage(13, getTakeOffPoint());
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -26851,11 +24772,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(1, finishedAction_);
       }
-      if (java.lang.Float.floatToRawIntBits(maxSpeed_) != 0) {
+      if (maxSpeed_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(2, maxSpeed_);
       }
-      if (java.lang.Float.floatToRawIntBits(autoSpeed_) != 0) {
+      if (autoSpeed_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(3, autoSpeed_);
       }
@@ -26899,11 +24820,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(13, getTakeOffPoint());
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -26914,51 +24835,53 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData) obj;
 
-      if (getFinishedAction()
-          != other.getFinishedAction()) return false;
-      if (java.lang.Float.floatToIntBits(getMaxSpeed())
-          != java.lang.Float.floatToIntBits(
-              other.getMaxSpeed())) return false;
-      if (java.lang.Float.floatToIntBits(getAutoSpeed())
-          != java.lang.Float.floatToIntBits(
-              other.getAutoSpeed())) return false;
-      if (!getPointsList()
-          .equals(other.getPointsList())) return false;
-      if (getLoseAction()
-          != other.getLoseAction()) return false;
-      if (getHomeHeight()
-          != other.getHomeHeight()) return false;
-      if (getIsSaveEnergyMode()
-          != other.getIsSaveEnergyMode()) return false;
-      if (hasTakePoint() != other.hasTakePoint()) return false;
+      boolean result = true;
+      result = result && (getFinishedAction()
+          == other.getFinishedAction());
+      result = result && (
+          java.lang.Float.floatToIntBits(getMaxSpeed())
+          == java.lang.Float.floatToIntBits(
+              other.getMaxSpeed()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getAutoSpeed())
+          == java.lang.Float.floatToIntBits(
+              other.getAutoSpeed()));
+      result = result && getPointsList()
+          .equals(other.getPointsList());
+      result = result && (getLoseAction()
+          == other.getLoseAction());
+      result = result && (getHomeHeight()
+          == other.getHomeHeight());
+      result = result && (getIsSaveEnergyMode()
+          == other.getIsSaveEnergyMode());
+      result = result && (hasTakePoint() == other.hasTakePoint());
       if (hasTakePoint()) {
-        if (!getTakePoint()
-            .equals(other.getTakePoint())) return false;
+        result = result && getTakePoint()
+            .equals(other.getTakePoint());
       }
-      if (hasLandPoint() != other.hasLandPoint()) return false;
+      result = result && (hasLandPoint() == other.hasLandPoint());
       if (hasLandPoint()) {
-        if (!getLandPoint()
-            .equals(other.getLandPoint())) return false;
+        result = result && getLandPoint()
+            .equals(other.getLandPoint());
       }
-      if (!getInterestsList()
-          .equals(other.getInterestsList())) return false;
-      if (hasNormalModel() != other.hasNormalModel()) return false;
+      result = result && getInterestsList()
+          .equals(other.getInterestsList());
+      result = result && (hasNormalModel() == other.hasNormalModel());
       if (hasNormalModel()) {
-        if (!getNormalModel()
-            .equals(other.getNormalModel())) return false;
+        result = result && getNormalModel()
+            .equals(other.getNormalModel());
       }
-      if (hasSurroundModel() != other.hasSurroundModel()) return false;
+      result = result && (hasSurroundModel() == other.hasSurroundModel());
       if (hasSurroundModel()) {
-        if (!getSurroundModel()
-            .equals(other.getSurroundModel())) return false;
+        result = result && getSurroundModel()
+            .equals(other.getSurroundModel());
       }
-      if (hasTakeOffPoint() != other.hasTakeOffPoint()) return false;
+      result = result && (hasTakeOffPoint() == other.hasTakeOffPoint());
       if (hasTakeOffPoint()) {
-        if (!getTakeOffPoint()
-            .equals(other.getTakeOffPoint())) return false;
+        result = result && getTakeOffPoint()
+            .equals(other.getTakeOffPoint());
       }
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      return result;
     }
 
     @java.lang.Override
@@ -26967,7 +24890,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + FINISHEDACTION_FIELD_NUMBER;
       hash = (53 * hash) + getFinishedAction();
       hash = (37 * hash) + MAXSPEED_FIELD_NUMBER;
@@ -27015,17 +24938,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -27085,7 +24997,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -27093,7 +25004,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -27121,7 +25031,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PlanLineData_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PlanLineData_fieldAccessorTable
@@ -27146,7 +25055,6 @@
           getInterestsFieldBuilder();
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         finishedAction_ = 0;
@@ -27157,7 +25065,7 @@
 
         if (pointsBuilder_ == null) {
           points_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000008);
         } else {
           pointsBuilder_.clear();
         }
@@ -27181,7 +25089,7 @@
         }
         if (interestsBuilder_ == null) {
           interests_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
+          bitField0_ = (bitField0_ & ~0x00000200);
         } else {
           interestsBuilder_.clear();
         }
@@ -27206,18 +25114,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PlanLineData_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData result = buildPartial();
         if (!result.isInitialized()) {
@@ -27226,17 +25131,17 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData(this);
         int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
         result.finishedAction_ = finishedAction_;
         result.maxSpeed_ = maxSpeed_;
         result.autoSpeed_ = autoSpeed_;
         if (pointsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
+          if (((bitField0_ & 0x00000008) == 0x00000008)) {
             points_ = java.util.Collections.unmodifiableList(points_);
-            bitField0_ = (bitField0_ & ~0x00000001);
+            bitField0_ = (bitField0_ & ~0x00000008);
           }
           result.points_ = points_;
         } else {
@@ -27256,9 +25161,9 @@
           result.landPoint_ = landPointBuilder_.build();
         }
         if (interestsBuilder_ == null) {
-          if (((bitField0_ & 0x00000002) != 0)) {
+          if (((bitField0_ & 0x00000200) == 0x00000200)) {
             interests_ = java.util.Collections.unmodifiableList(interests_);
-            bitField0_ = (bitField0_ & ~0x00000002);
+            bitField0_ = (bitField0_ & ~0x00000200);
           }
           result.interests_ = interests_;
         } else {
@@ -27279,43 +25184,37 @@
         } else {
           result.takeOffPoint_ = takeOffPointBuilder_.build();
         }
+        result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData)other);
@@ -27340,7 +25239,7 @@
           if (!other.points_.isEmpty()) {
             if (points_.isEmpty()) {
               points_ = other.points_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+              bitField0_ = (bitField0_ & ~0x00000008);
             } else {
               ensurePointsIsMutable();
               points_.addAll(other.points_);
@@ -27353,7 +25252,7 @@
               pointsBuilder_.dispose();
               pointsBuilder_ = null;
               points_ = other.points_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+              bitField0_ = (bitField0_ & ~0x00000008);
               pointsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getPointsFieldBuilder() : null;
@@ -27381,7 +25280,7 @@
           if (!other.interests_.isEmpty()) {
             if (interests_.isEmpty()) {
               interests_ = other.interests_;
-              bitField0_ = (bitField0_ & ~0x00000002);
+              bitField0_ = (bitField0_ & ~0x00000200);
             } else {
               ensureInterestsIsMutable();
               interests_.addAll(other.interests_);
@@ -27394,7 +25293,7 @@
               interestsBuilder_.dispose();
               interestsBuilder_ = null;
               interests_ = other.interests_;
-              bitField0_ = (bitField0_ & ~0x00000002);
+              bitField0_ = (bitField0_ & ~0x00000200);
               interestsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getInterestsFieldBuilder() : null;
@@ -27412,17 +25311,14 @@
         if (other.hasTakeOffPoint()) {
           mergeTakeOffPoint(other.getTakeOffPoint());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -27448,10 +25344,8 @@
        *结束航线后动作:1=返航,2=原地悬停,3=原地降落,4=原地绕飞[目前只osdk4.1版本支持,中心点为最后一个航点,飞机绕此点画圆飞行],5=返回至第一个航点并悬停[如果飞机到最后一个点时RC和飞机失联,飞机会在最后一个点悬停]
        * </pre>
        *
-       * <code>uint32 finishedAction = 1;</code>
-       * @return The finishedAction.
+       * <code>optional uint32 finishedAction = 1;</code>
        */
-      @java.lang.Override
       public int getFinishedAction() {
         return finishedAction_;
       }
@@ -27460,9 +25354,7 @@
        *结束航线后动作:1=返航,2=原地悬停,3=原地降落,4=原地绕飞[目前只osdk4.1版本支持,中心点为最后一个航点,飞机绕此点画圆飞行],5=返回至第一个航点并悬停[如果飞机到最后一个点时RC和飞机失联,飞机会在最后一个点悬停]
        * </pre>
        *
-       * <code>uint32 finishedAction = 1;</code>
-       * @param value The finishedAction to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 finishedAction = 1;</code>
        */
       public Builder setFinishedAction(int value) {
         
@@ -27475,8 +25367,7 @@
        *结束航线后动作:1=返航,2=原地悬停,3=原地降落,4=原地绕飞[目前只osdk4.1版本支持,中心点为最后一个航点,飞机绕此点画圆飞行],5=返回至第一个航点并悬停[如果飞机到最后一个点时RC和飞机失联,飞机会在最后一个点悬停]
        * </pre>
        *
-       * <code>uint32 finishedAction = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 finishedAction = 1;</code>
        */
       public Builder clearFinishedAction() {
         
@@ -27491,10 +25382,8 @@
        *最大飞行速度(单位:米/秒,范围0~15),默认15
        * </pre>
        *
-       * <code>float maxSpeed = 2;</code>
-       * @return The maxSpeed.
+       * <code>optional float maxSpeed = 2;</code>
        */
-      @java.lang.Override
       public float getMaxSpeed() {
         return maxSpeed_;
       }
@@ -27503,9 +25392,7 @@
        *最大飞行速度(单位:米/秒,范围0~15),默认15
        * </pre>
        *
-       * <code>float maxSpeed = 2;</code>
-       * @param value The maxSpeed to set.
-       * @return This builder for chaining.
+       * <code>optional float maxSpeed = 2;</code>
        */
       public Builder setMaxSpeed(float value) {
         
@@ -27518,8 +25405,7 @@
        *最大飞行速度(单位:米/秒,范围0~15),默认15
        * </pre>
        *
-       * <code>float maxSpeed = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional float maxSpeed = 2;</code>
        */
       public Builder clearMaxSpeed() {
         
@@ -27534,10 +25420,8 @@
        *自动飞行速度(单位:米/秒,范围0~15),默认8
        * </pre>
        *
-       * <code>float autoSpeed = 3;</code>
-       * @return The autoSpeed.
+       * <code>optional float autoSpeed = 3;</code>
        */
-      @java.lang.Override
       public float getAutoSpeed() {
         return autoSpeed_;
       }
@@ -27546,9 +25430,7 @@
        *自动飞行速度(单位:米/秒,范围0~15),默认8
        * </pre>
        *
-       * <code>float autoSpeed = 3;</code>
-       * @param value The autoSpeed to set.
-       * @return This builder for chaining.
+       * <code>optional float autoSpeed = 3;</code>
        */
       public Builder setAutoSpeed(float value) {
         
@@ -27561,8 +25443,7 @@
        *自动飞行速度(单位:米/秒,范围0~15),默认8
        * </pre>
        *
-       * <code>float autoSpeed = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional float autoSpeed = 3;</code>
        */
       public Builder clearAutoSpeed() {
         
@@ -27574,9 +25455,9 @@
       private java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData> points_ =
         java.util.Collections.emptyList();
       private void ensurePointsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
+        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
           points_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData>(points_);
-          bitField0_ |= 0x00000001;
+          bitField0_ |= 0x00000008;
          }
       }
 
@@ -27770,7 +25651,7 @@
       public Builder clearPoints() {
         if (pointsBuilder_ == null) {
           points_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000008);
           onChanged();
         } else {
           pointsBuilder_.clear();
@@ -27875,7 +25756,7 @@
           pointsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder>(
                   points_,
-                  ((bitField0_ & 0x00000001) != 0),
+                  ((bitField0_ & 0x00000008) == 0x00000008),
                   getParentForChildren(),
                   isClean());
           points_ = null;
@@ -27889,10 +25770,8 @@
        *网络失联后动作:0=返回HOME点,1=继续航线,默认0
        * </pre>
        *
-       * <code>uint32 loseAction = 5;</code>
-       * @return The loseAction.
+       * <code>optional uint32 loseAction = 5;</code>
        */
-      @java.lang.Override
       public int getLoseAction() {
         return loseAction_;
       }
@@ -27901,9 +25780,7 @@
        *网络失联后动作:0=返回HOME点,1=继续航线,默认0
        * </pre>
        *
-       * <code>uint32 loseAction = 5;</code>
-       * @param value The loseAction to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 loseAction = 5;</code>
        */
       public Builder setLoseAction(int value) {
         
@@ -27916,8 +25793,7 @@
        *网络失联后动作:0=返回HOME点,1=继续航线,默认0
        * </pre>
        *
-       * <code>uint32 loseAction = 5;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 loseAction = 5;</code>
        */
       public Builder clearLoseAction() {
         
@@ -27932,10 +25808,8 @@
        *返航高度:(单位:米,范围20~1500),说明:此值为相对起飞点高度,如果太高会有失去网络覆盖风险。不同飞行器返航逻辑不一样,若飞行器距HOME点距离过近,可能不会升高再返航。具体逻辑请咨询大疆DJI
        * </pre>
        *
-       * <code>uint32 homeHeight = 6;</code>
-       * @return The homeHeight.
+       * <code>optional uint32 homeHeight = 6;</code>
        */
-      @java.lang.Override
       public int getHomeHeight() {
         return homeHeight_;
       }
@@ -27944,9 +25818,7 @@
        *返航高度:(单位:米,范围20~1500),说明:此值为相对起飞点高度,如果太高会有失去网络覆盖风险。不同飞行器返航逻辑不一样,若飞行器距HOME点距离过近,可能不会升高再返航。具体逻辑请咨询大疆DJI
        * </pre>
        *
-       * <code>uint32 homeHeight = 6;</code>
-       * @param value The homeHeight to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 homeHeight = 6;</code>
        */
       public Builder setHomeHeight(int value) {
         
@@ -27959,8 +25831,7 @@
        *返航高度:(单位:米,范围20~1500),说明:此值为相对起飞点高度,如果太高会有失去网络覆盖风险。不同飞行器返航逻辑不一样,若飞行器距HOME点距离过近,可能不会升高再返航。具体逻辑请咨询大疆DJI
        * </pre>
        *
-       * <code>uint32 homeHeight = 6;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 homeHeight = 6;</code>
        */
       public Builder clearHomeHeight() {
         
@@ -27975,10 +25846,8 @@
        *是否开启节能模式:0=不是,1=是(说明:节能模式下,飞机沿最短直线距离由起飞点到航线第一个航点,非升高到第一个航点高度再飞往第一个航点)
        * </pre>
        *
-       * <code>uint32 isSaveEnergyMode = 7;</code>
-       * @return The isSaveEnergyMode.
+       * <code>optional uint32 isSaveEnergyMode = 7;</code>
        */
-      @java.lang.Override
       public int getIsSaveEnergyMode() {
         return isSaveEnergyMode_;
       }
@@ -27987,9 +25856,7 @@
        *是否开启节能模式:0=不是,1=是(说明:节能模式下,飞机沿最短直线距离由起飞点到航线第一个航点,非升高到第一个航点高度再飞往第一个航点)
        * </pre>
        *
-       * <code>uint32 isSaveEnergyMode = 7;</code>
-       * @param value The isSaveEnergyMode to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isSaveEnergyMode = 7;</code>
        */
       public Builder setIsSaveEnergyMode(int value) {
         
@@ -28002,8 +25869,7 @@
        *是否开启节能模式:0=不是,1=是(说明:节能模式下,飞机沿最短直线距离由起飞点到航线第一个航点,非升高到第一个航点高度再飞往第一个航点)
        * </pre>
        *
-       * <code>uint32 isSaveEnergyMode = 7;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isSaveEnergyMode = 7;</code>
        */
       public Builder clearIsSaveEnergyMode() {
         
@@ -28012,7 +25878,7 @@
         return this;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint takePoint_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint takePoint_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint, com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPointOrBuilder> takePointBuilder_;
       /**
@@ -28020,8 +25886,7 @@
        *起飞点机库信息
        * </pre>
        *
-       * <code>.HangarPoint takePoint = 8;</code>
-       * @return Whether the takePoint field is set.
+       * <code>optional .HangarPoint takePoint = 8;</code>
        */
       public boolean hasTakePoint() {
         return takePointBuilder_ != null || takePoint_ != null;
@@ -28031,8 +25896,7 @@
        *起飞点机库信息
        * </pre>
        *
-       * <code>.HangarPoint takePoint = 8;</code>
-       * @return The takePoint.
+       * <code>optional .HangarPoint takePoint = 8;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint getTakePoint() {
         if (takePointBuilder_ == null) {
@@ -28046,7 +25910,7 @@
        *起飞点机库信息
        * </pre>
        *
-       * <code>.HangarPoint takePoint = 8;</code>
+       * <code>optional .HangarPoint takePoint = 8;</code>
        */
       public Builder setTakePoint(com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint value) {
         if (takePointBuilder_ == null) {
@@ -28066,7 +25930,7 @@
        *起飞点机库信息
        * </pre>
        *
-       * <code>.HangarPoint takePoint = 8;</code>
+       * <code>optional .HangarPoint takePoint = 8;</code>
        */
       public Builder setTakePoint(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint.Builder builderForValue) {
@@ -28084,7 +25948,7 @@
        *起飞点机库信息
        * </pre>
        *
-       * <code>.HangarPoint takePoint = 8;</code>
+       * <code>optional .HangarPoint takePoint = 8;</code>
        */
       public Builder mergeTakePoint(com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint value) {
         if (takePointBuilder_ == null) {
@@ -28106,7 +25970,7 @@
        *起飞点机库信息
        * </pre>
        *
-       * <code>.HangarPoint takePoint = 8;</code>
+       * <code>optional .HangarPoint takePoint = 8;</code>
        */
       public Builder clearTakePoint() {
         if (takePointBuilder_ == null) {
@@ -28124,7 +25988,7 @@
        *起飞点机库信息
        * </pre>
        *
-       * <code>.HangarPoint takePoint = 8;</code>
+       * <code>optional .HangarPoint takePoint = 8;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint.Builder getTakePointBuilder() {
         
@@ -28136,7 +26000,7 @@
        *起飞点机库信息
        * </pre>
        *
-       * <code>.HangarPoint takePoint = 8;</code>
+       * <code>optional .HangarPoint takePoint = 8;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPointOrBuilder getTakePointOrBuilder() {
         if (takePointBuilder_ != null) {
@@ -28151,7 +26015,7 @@
        *起飞点机库信息
        * </pre>
        *
-       * <code>.HangarPoint takePoint = 8;</code>
+       * <code>optional .HangarPoint takePoint = 8;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint, com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPointOrBuilder> 
@@ -28167,7 +26031,7 @@
         return takePointBuilder_;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint landPoint_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint landPoint_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint, com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPointOrBuilder> landPointBuilder_;
       /**
@@ -28175,8 +26039,7 @@
        *降落点机库信息
        * </pre>
        *
-       * <code>.HangarPoint landPoint = 9;</code>
-       * @return Whether the landPoint field is set.
+       * <code>optional .HangarPoint landPoint = 9;</code>
        */
       public boolean hasLandPoint() {
         return landPointBuilder_ != null || landPoint_ != null;
@@ -28186,8 +26049,7 @@
        *降落点机库信息
        * </pre>
        *
-       * <code>.HangarPoint landPoint = 9;</code>
-       * @return The landPoint.
+       * <code>optional .HangarPoint landPoint = 9;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint getLandPoint() {
         if (landPointBuilder_ == null) {
@@ -28201,7 +26063,7 @@
        *降落点机库信息
        * </pre>
        *
-       * <code>.HangarPoint landPoint = 9;</code>
+       * <code>optional .HangarPoint landPoint = 9;</code>
        */
       public Builder setLandPoint(com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint value) {
         if (landPointBuilder_ == null) {
@@ -28221,7 +26083,7 @@
        *降落点机库信息
        * </pre>
        *
-       * <code>.HangarPoint landPoint = 9;</code>
+       * <code>optional .HangarPoint landPoint = 9;</code>
        */
       public Builder setLandPoint(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint.Builder builderForValue) {
@@ -28239,7 +26101,7 @@
        *降落点机库信息
        * </pre>
        *
-       * <code>.HangarPoint landPoint = 9;</code>
+       * <code>optional .HangarPoint landPoint = 9;</code>
        */
       public Builder mergeLandPoint(com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint value) {
         if (landPointBuilder_ == null) {
@@ -28261,7 +26123,7 @@
        *降落点机库信息
        * </pre>
        *
-       * <code>.HangarPoint landPoint = 9;</code>
+       * <code>optional .HangarPoint landPoint = 9;</code>
        */
       public Builder clearLandPoint() {
         if (landPointBuilder_ == null) {
@@ -28279,7 +26141,7 @@
        *降落点机库信息
        * </pre>
        *
-       * <code>.HangarPoint landPoint = 9;</code>
+       * <code>optional .HangarPoint landPoint = 9;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint.Builder getLandPointBuilder() {
         
@@ -28291,7 +26153,7 @@
        *降落点机库信息
        * </pre>
        *
-       * <code>.HangarPoint landPoint = 9;</code>
+       * <code>optional .HangarPoint landPoint = 9;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPointOrBuilder getLandPointOrBuilder() {
         if (landPointBuilder_ != null) {
@@ -28306,7 +26168,7 @@
        *降落点机库信息
        * </pre>
        *
-       * <code>.HangarPoint landPoint = 9;</code>
+       * <code>optional .HangarPoint landPoint = 9;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint, com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPointOrBuilder> 
@@ -28325,9 +26187,9 @@
       private java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData> interests_ =
         java.util.Collections.emptyList();
       private void ensureInterestsIsMutable() {
-        if (!((bitField0_ & 0x00000002) != 0)) {
+        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
           interests_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData>(interests_);
-          bitField0_ |= 0x00000002;
+          bitField0_ |= 0x00000200;
          }
       }
 
@@ -28521,7 +26383,7 @@
       public Builder clearInterests() {
         if (interestsBuilder_ == null) {
           interests_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000002);
+          bitField0_ = (bitField0_ & ~0x00000200);
           onChanged();
         } else {
           interestsBuilder_.clear();
@@ -28626,7 +26488,7 @@
           interestsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder>(
                   interests_,
-                  ((bitField0_ & 0x00000002) != 0),
+                  ((bitField0_ & 0x00000200) == 0x00000200),
                   getParentForChildren(),
                   isClean());
           interests_ = null;
@@ -28634,7 +26496,7 @@
         return interestsBuilder_;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel normalModel_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel normalModel_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel, com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModelOrBuilder> normalModelBuilder_;
       /**
@@ -28642,8 +26504,7 @@
        *普通建模
        * </pre>
        *
-       * <code>.NormalModel normalModel = 11;</code>
-       * @return Whether the normalModel field is set.
+       * <code>optional .NormalModel normalModel = 11;</code>
        */
       public boolean hasNormalModel() {
         return normalModelBuilder_ != null || normalModel_ != null;
@@ -28653,8 +26514,7 @@
        *普通建模
        * </pre>
        *
-       * <code>.NormalModel normalModel = 11;</code>
-       * @return The normalModel.
+       * <code>optional .NormalModel normalModel = 11;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel getNormalModel() {
         if (normalModelBuilder_ == null) {
@@ -28668,7 +26528,7 @@
        *普通建模
        * </pre>
        *
-       * <code>.NormalModel normalModel = 11;</code>
+       * <code>optional .NormalModel normalModel = 11;</code>
        */
       public Builder setNormalModel(com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel value) {
         if (normalModelBuilder_ == null) {
@@ -28688,7 +26548,7 @@
        *普通建模
        * </pre>
        *
-       * <code>.NormalModel normalModel = 11;</code>
+       * <code>optional .NormalModel normalModel = 11;</code>
        */
       public Builder setNormalModel(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel.Builder builderForValue) {
@@ -28706,7 +26566,7 @@
        *普通建模
        * </pre>
        *
-       * <code>.NormalModel normalModel = 11;</code>
+       * <code>optional .NormalModel normalModel = 11;</code>
        */
       public Builder mergeNormalModel(com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel value) {
         if (normalModelBuilder_ == null) {
@@ -28728,7 +26588,7 @@
        *普通建模
        * </pre>
        *
-       * <code>.NormalModel normalModel = 11;</code>
+       * <code>optional .NormalModel normalModel = 11;</code>
        */
       public Builder clearNormalModel() {
         if (normalModelBuilder_ == null) {
@@ -28746,7 +26606,7 @@
        *普通建模
        * </pre>
        *
-       * <code>.NormalModel normalModel = 11;</code>
+       * <code>optional .NormalModel normalModel = 11;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel.Builder getNormalModelBuilder() {
         
@@ -28758,7 +26618,7 @@
        *普通建模
        * </pre>
        *
-       * <code>.NormalModel normalModel = 11;</code>
+       * <code>optional .NormalModel normalModel = 11;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModelOrBuilder getNormalModelOrBuilder() {
         if (normalModelBuilder_ != null) {
@@ -28773,7 +26633,7 @@
        *普通建模
        * </pre>
        *
-       * <code>.NormalModel normalModel = 11;</code>
+       * <code>optional .NormalModel normalModel = 11;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel, com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModelOrBuilder> 
@@ -28789,7 +26649,7 @@
         return normalModelBuilder_;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel surroundModel_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel surroundModel_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel, com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModelOrBuilder> surroundModelBuilder_;
       /**
@@ -28797,8 +26657,7 @@
        *环绕建模
        * </pre>
        *
-       * <code>.SurroundModel surroundModel = 12;</code>
-       * @return Whether the surroundModel field is set.
+       * <code>optional .SurroundModel surroundModel = 12;</code>
        */
       public boolean hasSurroundModel() {
         return surroundModelBuilder_ != null || surroundModel_ != null;
@@ -28808,8 +26667,7 @@
        *环绕建模
        * </pre>
        *
-       * <code>.SurroundModel surroundModel = 12;</code>
-       * @return The surroundModel.
+       * <code>optional .SurroundModel surroundModel = 12;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel getSurroundModel() {
         if (surroundModelBuilder_ == null) {
@@ -28823,7 +26681,7 @@
        *环绕建模
        * </pre>
        *
-       * <code>.SurroundModel surroundModel = 12;</code>
+       * <code>optional .SurroundModel surroundModel = 12;</code>
        */
       public Builder setSurroundModel(com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel value) {
         if (surroundModelBuilder_ == null) {
@@ -28843,7 +26701,7 @@
        *环绕建模
        * </pre>
        *
-       * <code>.SurroundModel surroundModel = 12;</code>
+       * <code>optional .SurroundModel surroundModel = 12;</code>
        */
       public Builder setSurroundModel(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel.Builder builderForValue) {
@@ -28861,7 +26719,7 @@
        *环绕建模
        * </pre>
        *
-       * <code>.SurroundModel surroundModel = 12;</code>
+       * <code>optional .SurroundModel surroundModel = 12;</code>
        */
       public Builder mergeSurroundModel(com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel value) {
         if (surroundModelBuilder_ == null) {
@@ -28883,7 +26741,7 @@
        *环绕建模
        * </pre>
        *
-       * <code>.SurroundModel surroundModel = 12;</code>
+       * <code>optional .SurroundModel surroundModel = 12;</code>
        */
       public Builder clearSurroundModel() {
         if (surroundModelBuilder_ == null) {
@@ -28901,7 +26759,7 @@
        *环绕建模
        * </pre>
        *
-       * <code>.SurroundModel surroundModel = 12;</code>
+       * <code>optional .SurroundModel surroundModel = 12;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel.Builder getSurroundModelBuilder() {
         
@@ -28913,7 +26771,7 @@
        *环绕建模
        * </pre>
        *
-       * <code>.SurroundModel surroundModel = 12;</code>
+       * <code>optional .SurroundModel surroundModel = 12;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModelOrBuilder getSurroundModelOrBuilder() {
         if (surroundModelBuilder_ != null) {
@@ -28928,7 +26786,7 @@
        *环绕建模
        * </pre>
        *
-       * <code>.SurroundModel surroundModel = 12;</code>
+       * <code>optional .SurroundModel surroundModel = 12;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel, com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModelOrBuilder> 
@@ -28944,7 +26802,7 @@
         return surroundModelBuilder_;
       }
 
-      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData takeOffPoint_;
+      private com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData takeOffPoint_ = null;
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder> takeOffPointBuilder_;
       /**
@@ -28952,8 +26810,7 @@
        *起飞点(对象只包含经纬高)
        * </pre>
        *
-       * <code>.PointData takeOffPoint = 13;</code>
-       * @return Whether the takeOffPoint field is set.
+       * <code>optional .PointData takeOffPoint = 13;</code>
        */
       public boolean hasTakeOffPoint() {
         return takeOffPointBuilder_ != null || takeOffPoint_ != null;
@@ -28963,8 +26820,7 @@
        *起飞点(对象只包含经纬高)
        * </pre>
        *
-       * <code>.PointData takeOffPoint = 13;</code>
-       * @return The takeOffPoint.
+       * <code>optional .PointData takeOffPoint = 13;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getTakeOffPoint() {
         if (takeOffPointBuilder_ == null) {
@@ -28978,7 +26834,7 @@
        *起飞点(对象只包含经纬高)
        * </pre>
        *
-       * <code>.PointData takeOffPoint = 13;</code>
+       * <code>optional .PointData takeOffPoint = 13;</code>
        */
       public Builder setTakeOffPoint(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData value) {
         if (takeOffPointBuilder_ == null) {
@@ -28998,7 +26854,7 @@
        *起飞点(对象只包含经纬高)
        * </pre>
        *
-       * <code>.PointData takeOffPoint = 13;</code>
+       * <code>optional .PointData takeOffPoint = 13;</code>
        */
       public Builder setTakeOffPoint(
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder builderForValue) {
@@ -29016,7 +26872,7 @@
        *起飞点(对象只包含经纬高)
        * </pre>
        *
-       * <code>.PointData takeOffPoint = 13;</code>
+       * <code>optional .PointData takeOffPoint = 13;</code>
        */
       public Builder mergeTakeOffPoint(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData value) {
         if (takeOffPointBuilder_ == null) {
@@ -29038,7 +26894,7 @@
        *起飞点(对象只包含经纬高)
        * </pre>
        *
-       * <code>.PointData takeOffPoint = 13;</code>
+       * <code>optional .PointData takeOffPoint = 13;</code>
        */
       public Builder clearTakeOffPoint() {
         if (takeOffPointBuilder_ == null) {
@@ -29056,7 +26912,7 @@
        *起飞点(对象只包含经纬高)
        * </pre>
        *
-       * <code>.PointData takeOffPoint = 13;</code>
+       * <code>optional .PointData takeOffPoint = 13;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder getTakeOffPointBuilder() {
         
@@ -29068,7 +26924,7 @@
        *起飞点(对象只包含经纬高)
        * </pre>
        *
-       * <code>.PointData takeOffPoint = 13;</code>
+       * <code>optional .PointData takeOffPoint = 13;</code>
        */
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getTakeOffPointOrBuilder() {
         if (takeOffPointBuilder_ != null) {
@@ -29083,7 +26939,7 @@
        *起飞点(对象只包含经纬高)
        * </pre>
        *
-       * <code>.PointData takeOffPoint = 13;</code>
+       * <code>optional .PointData takeOffPoint = 13;</code>
        */
       private com.google.protobuf.SingleFieldBuilderV3<
           com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder> 
@@ -29098,16 +26954,14 @@
         }
         return takeOffPointBuilder_;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -29126,12 +26980,11 @@
 
     private static final com.google.protobuf.Parser<PlanLineData>
         PARSER = new com.google.protobuf.AbstractParser<PlanLineData>() {
-      @java.lang.Override
       public PlanLineData parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new PlanLineData(input, extensionRegistry);
+          return new PlanLineData(input, extensionRegistry);
       }
     };
 
@@ -29144,7 +26997,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PlanLineData getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -29160,8 +27012,7 @@
      *经度
      * </pre>
      *
-     * <code>double lng = 1;</code>
-     * @return The lng.
+     * <code>optional double lng = 1;</code>
      */
     double getLng();
 
@@ -29170,8 +27021,7 @@
      *纬度
      * </pre>
      *
-     * <code>double lat = 2;</code>
-     * @return The lat.
+     * <code>optional double lat = 2;</code>
      */
     double getLat();
 
@@ -29180,8 +27030,7 @@
      *高度(单位:米,范围0~遥控器限高),说明:此值为相对起飞点高度,如果太高会有失去网络覆盖风险
      * </pre>
      *
-     * <code>float height = 3;</code>
-     * @return The height.
+     * <code>optional float height = 3;</code>
      */
     float getHeight();
 
@@ -29190,8 +27039,7 @@
      *速度(单位:米/秒,范围0~15),默认8
      * </pre>
      *
-     * <code>float speed = 4;</code>
-     * @return The speed.
+     * <code>optional float speed = 4;</code>
      */
     float getSpeed();
 
@@ -29244,8 +27092,7 @@
      *航线飞行模式:1=直线飞行,2=协调转弯,3=曲线飞行(停),4=曲线飞行(不停)
      * </pre>
      *
-     * <code>uint32 flightPathMode = 6;</code>
-     * @return The flightPathMode.
+     * <code>optional uint32 flightPathMode = 6;</code>
      */
     int getFlightPathMode();
 
@@ -29254,8 +27101,7 @@
      *转弯半径(仅协调转弯模式下有效),取值范围1~655.35单位:米,两点间距离要小于此值,此值要根据实际情况计算,切勿随便设此值[可能导致航线开始失败],具体计算方法可以咨询售后支持或者大疆DJI
      * </pre>
      *
-     * <code>float dampingDistance = 7;</code>
-     * @return The dampingDistance.
+     * <code>optional float dampingDistance = 7;</code>
      */
     float getDampingDistance();
 
@@ -29264,8 +27110,7 @@
      *是否为安全返航点 0=不是,1=是 (暂时未启用)
      * </pre>
      *
-     * <code>uint32 safeGohomeFlag = 8;</code>
-     * @return The safeGohomeFlag.
+     * <code>optional uint32 safeGohomeFlag = 8;</code>
      */
     int getSafeGohomeFlag();
 
@@ -29274,8 +27119,7 @@
      *偏航模式 0=自动,1=锁定,2=遥控器控制,3=云台依照航点方向旋转,4=朝向兴趣点,5=飞机和云台的偏航同时旋转
      * </pre>
      *
-     * <code>uint32 headingMode = 9;</code>
-     * @return The headingMode.
+     * <code>optional uint32 headingMode = 9;</code>
      */
     int getHeadingMode();
 
@@ -29284,8 +27128,7 @@
      *航点偏航 -180~180
      * </pre>
      *
-     * <code>float heading = 10;</code>
-     * @return The heading.
+     * <code>optional float heading = 10;</code>
      */
     float getHeading();
 
@@ -29294,8 +27137,7 @@
      *兴趣点下标,默认-1
      * </pre>
      *
-     * <code>int32 interestIndex = 11;</code>
-     * @return The interestIndex.
+     * <code>optional int32 interestIndex = 11;</code>
      */
     int getInterestIndex();
 
@@ -29304,8 +27146,7 @@
      *组下标
      * </pre>
      *
-     * <code>uint32 groupIndex = 12;</code>
-     * @return The groupIndex.
+     * <code>optional uint32 groupIndex = 12;</code>
      */
     int getGroupIndex();
   }
@@ -29316,42 +27157,40 @@
    *
    * Protobuf type {@code PointData}
    */
-  public static final class PointData extends
+  public  static final class PointData extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:PointData)
       PointDataOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use PointData.newBuilder() to construct.
     private PointData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private PointData() {
+      lng_ = 0D;
+      lat_ = 0D;
+      height_ = 0F;
+      speed_ = 0F;
       actions_ = java.util.Collections.emptyList();
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new PointData();
+      flightPathMode_ = 0;
+      dampingDistance_ = 0F;
+      safeGohomeFlag_ = 0;
+      headingMode_ = 0;
+      heading_ = 0F;
+      interestIndex_ = 0;
+      groupIndex_ = 0;
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private PointData(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
       int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
         boolean done = false;
         while (!done) {
@@ -29360,6 +27199,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 9: {
 
               lng_ = input.readDouble();
@@ -29381,9 +27226,9 @@
               break;
             }
             case 42: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                 actions_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction>();
-                mutable_bitField0_ |= 0x00000001;
+                mutable_bitField0_ |= 0x00000010;
               }
               actions_.add(
                   input.readMessage(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction.parser(), extensionRegistry));
@@ -29424,27 +27269,17 @@
               groupIndex_ = input.readUInt32();
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
           actions_ = java.util.Collections.unmodifiableList(actions_);
         }
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -29453,7 +27288,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PointData_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PointData_fieldAccessorTable
@@ -29461,6 +27295,7 @@
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.class, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder.class);
     }
 
+    private int bitField0_;
     public static final int LNG_FIELD_NUMBER = 1;
     private double lng_;
     /**
@@ -29468,10 +27303,8 @@
      *经度
      * </pre>
      *
-     * <code>double lng = 1;</code>
-     * @return The lng.
+     * <code>optional double lng = 1;</code>
      */
-    @java.lang.Override
     public double getLng() {
       return lng_;
     }
@@ -29483,10 +27316,8 @@
      *纬度
      * </pre>
      *
-     * <code>double lat = 2;</code>
-     * @return The lat.
+     * <code>optional double lat = 2;</code>
      */
-    @java.lang.Override
     public double getLat() {
       return lat_;
     }
@@ -29498,10 +27329,8 @@
      *高度(单位:米,范围0~遥控器限高),说明:此值为相对起飞点高度,如果太高会有失去网络覆盖风险
      * </pre>
      *
-     * <code>float height = 3;</code>
-     * @return The height.
+     * <code>optional float height = 3;</code>
      */
-    @java.lang.Override
     public float getHeight() {
       return height_;
     }
@@ -29513,10 +27342,8 @@
      *速度(单位:米/秒,范围0~15),默认8
      * </pre>
      *
-     * <code>float speed = 4;</code>
-     * @return The speed.
+     * <code>optional float speed = 4;</code>
      */
-    @java.lang.Override
     public float getSpeed() {
       return speed_;
     }
@@ -29530,7 +27357,6 @@
      *
      * <code>repeated .PointAction actions = 5;</code>
      */
-    @java.lang.Override
     public java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction> getActionsList() {
       return actions_;
     }
@@ -29541,7 +27367,6 @@
      *
      * <code>repeated .PointAction actions = 5;</code>
      */
-    @java.lang.Override
     public java.util.List<? extends com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointActionOrBuilder> 
         getActionsOrBuilderList() {
       return actions_;
@@ -29553,7 +27378,6 @@
      *
      * <code>repeated .PointAction actions = 5;</code>
      */
-    @java.lang.Override
     public int getActionsCount() {
       return actions_.size();
     }
@@ -29564,7 +27388,6 @@
      *
      * <code>repeated .PointAction actions = 5;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction getActions(int index) {
       return actions_.get(index);
     }
@@ -29575,7 +27398,6 @@
      *
      * <code>repeated .PointAction actions = 5;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointActionOrBuilder getActionsOrBuilder(
         int index) {
       return actions_.get(index);
@@ -29588,10 +27410,8 @@
      *航线飞行模式:1=直线飞行,2=协调转弯,3=曲线飞行(停),4=曲线飞行(不停)
      * </pre>
      *
-     * <code>uint32 flightPathMode = 6;</code>
-     * @return The flightPathMode.
+     * <code>optional uint32 flightPathMode = 6;</code>
      */
-    @java.lang.Override
     public int getFlightPathMode() {
       return flightPathMode_;
     }
@@ -29603,10 +27423,8 @@
      *转弯半径(仅协调转弯模式下有效),取值范围1~655.35单位:米,两点间距离要小于此值,此值要根据实际情况计算,切勿随便设此值[可能导致航线开始失败],具体计算方法可以咨询售后支持或者大疆DJI
      * </pre>
      *
-     * <code>float dampingDistance = 7;</code>
-     * @return The dampingDistance.
+     * <code>optional float dampingDistance = 7;</code>
      */
-    @java.lang.Override
     public float getDampingDistance() {
       return dampingDistance_;
     }
@@ -29618,10 +27436,8 @@
      *是否为安全返航点 0=不是,1=是 (暂时未启用)
      * </pre>
      *
-     * <code>uint32 safeGohomeFlag = 8;</code>
-     * @return The safeGohomeFlag.
+     * <code>optional uint32 safeGohomeFlag = 8;</code>
      */
-    @java.lang.Override
     public int getSafeGohomeFlag() {
       return safeGohomeFlag_;
     }
@@ -29633,10 +27449,8 @@
      *偏航模式 0=自动,1=锁定,2=遥控器控制,3=云台依照航点方向旋转,4=朝向兴趣点,5=飞机和云台的偏航同时旋转
      * </pre>
      *
-     * <code>uint32 headingMode = 9;</code>
-     * @return The headingMode.
+     * <code>optional uint32 headingMode = 9;</code>
      */
-    @java.lang.Override
     public int getHeadingMode() {
       return headingMode_;
     }
@@ -29648,10 +27462,8 @@
      *航点偏航 -180~180
      * </pre>
      *
-     * <code>float heading = 10;</code>
-     * @return The heading.
+     * <code>optional float heading = 10;</code>
      */
-    @java.lang.Override
     public float getHeading() {
       return heading_;
     }
@@ -29663,10 +27475,8 @@
      *兴趣点下标,默认-1
      * </pre>
      *
-     * <code>int32 interestIndex = 11;</code>
-     * @return The interestIndex.
+     * <code>optional int32 interestIndex = 11;</code>
      */
-    @java.lang.Override
     public int getInterestIndex() {
       return interestIndex_;
     }
@@ -29678,16 +27488,13 @@
      *组下标
      * </pre>
      *
-     * <code>uint32 groupIndex = 12;</code>
-     * @return The groupIndex.
+     * <code>optional uint32 groupIndex = 12;</code>
      */
-    @java.lang.Override
     public int getGroupIndex() {
       return groupIndex_;
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -29697,19 +27504,18 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (java.lang.Double.doubleToRawLongBits(lng_) != 0) {
+      if (lng_ != 0D) {
         output.writeDouble(1, lng_);
       }
-      if (java.lang.Double.doubleToRawLongBits(lat_) != 0) {
+      if (lat_ != 0D) {
         output.writeDouble(2, lat_);
       }
-      if (java.lang.Float.floatToRawIntBits(height_) != 0) {
+      if (height_ != 0F) {
         output.writeFloat(3, height_);
       }
-      if (java.lang.Float.floatToRawIntBits(speed_) != 0) {
+      if (speed_ != 0F) {
         output.writeFloat(4, speed_);
       }
       for (int i = 0; i < actions_.size(); i++) {
@@ -29718,7 +27524,7 @@
       if (flightPathMode_ != 0) {
         output.writeUInt32(6, flightPathMode_);
       }
-      if (java.lang.Float.floatToRawIntBits(dampingDistance_) != 0) {
+      if (dampingDistance_ != 0F) {
         output.writeFloat(7, dampingDistance_);
       }
       if (safeGohomeFlag_ != 0) {
@@ -29727,7 +27533,7 @@
       if (headingMode_ != 0) {
         output.writeUInt32(9, headingMode_);
       }
-      if (java.lang.Float.floatToRawIntBits(heading_) != 0) {
+      if (heading_ != 0F) {
         output.writeFloat(10, heading_);
       }
       if (interestIndex_ != 0) {
@@ -29736,28 +27542,26 @@
       if (groupIndex_ != 0) {
         output.writeUInt32(12, groupIndex_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
-      if (java.lang.Double.doubleToRawLongBits(lng_) != 0) {
+      if (lng_ != 0D) {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(1, lng_);
       }
-      if (java.lang.Double.doubleToRawLongBits(lat_) != 0) {
+      if (lat_ != 0D) {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(2, lat_);
       }
-      if (java.lang.Float.floatToRawIntBits(height_) != 0) {
+      if (height_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(3, height_);
       }
-      if (java.lang.Float.floatToRawIntBits(speed_) != 0) {
+      if (speed_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(4, speed_);
       }
@@ -29769,7 +27573,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(6, flightPathMode_);
       }
-      if (java.lang.Float.floatToRawIntBits(dampingDistance_) != 0) {
+      if (dampingDistance_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(7, dampingDistance_);
       }
@@ -29781,7 +27585,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(9, headingMode_);
       }
-      if (java.lang.Float.floatToRawIntBits(heading_) != 0) {
+      if (heading_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(10, heading_);
       }
@@ -29793,11 +27597,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(12, groupIndex_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -29808,38 +27612,44 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData) obj;
 
-      if (java.lang.Double.doubleToLongBits(getLng())
-          != java.lang.Double.doubleToLongBits(
-              other.getLng())) return false;
-      if (java.lang.Double.doubleToLongBits(getLat())
-          != java.lang.Double.doubleToLongBits(
-              other.getLat())) return false;
-      if (java.lang.Float.floatToIntBits(getHeight())
-          != java.lang.Float.floatToIntBits(
-              other.getHeight())) return false;
-      if (java.lang.Float.floatToIntBits(getSpeed())
-          != java.lang.Float.floatToIntBits(
-              other.getSpeed())) return false;
-      if (!getActionsList()
-          .equals(other.getActionsList())) return false;
-      if (getFlightPathMode()
-          != other.getFlightPathMode()) return false;
-      if (java.lang.Float.floatToIntBits(getDampingDistance())
-          != java.lang.Float.floatToIntBits(
-              other.getDampingDistance())) return false;
-      if (getSafeGohomeFlag()
-          != other.getSafeGohomeFlag()) return false;
-      if (getHeadingMode()
-          != other.getHeadingMode()) return false;
-      if (java.lang.Float.floatToIntBits(getHeading())
-          != java.lang.Float.floatToIntBits(
-              other.getHeading())) return false;
-      if (getInterestIndex()
-          != other.getInterestIndex()) return false;
-      if (getGroupIndex()
-          != other.getGroupIndex()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && (
+          java.lang.Double.doubleToLongBits(getLng())
+          == java.lang.Double.doubleToLongBits(
+              other.getLng()));
+      result = result && (
+          java.lang.Double.doubleToLongBits(getLat())
+          == java.lang.Double.doubleToLongBits(
+              other.getLat()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getHeight())
+          == java.lang.Float.floatToIntBits(
+              other.getHeight()));
+      result = result && (
+          java.lang.Float.floatToIntBits(getSpeed())
+          == java.lang.Float.floatToIntBits(
+              other.getSpeed()));
+      result = result && getActionsList()
+          .equals(other.getActionsList());
+      result = result && (getFlightPathMode()
+          == other.getFlightPathMode());
+      result = result && (
+          java.lang.Float.floatToIntBits(getDampingDistance())
+          == java.lang.Float.floatToIntBits(
+              other.getDampingDistance()));
+      result = result && (getSafeGohomeFlag()
+          == other.getSafeGohomeFlag());
+      result = result && (getHeadingMode()
+          == other.getHeadingMode());
+      result = result && (
+          java.lang.Float.floatToIntBits(getHeading())
+          == java.lang.Float.floatToIntBits(
+              other.getHeading()));
+      result = result && (getInterestIndex()
+          == other.getInterestIndex());
+      result = result && (getGroupIndex()
+          == other.getGroupIndex());
+      return result;
     }
 
     @java.lang.Override
@@ -29848,7 +27658,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + LNG_FIELD_NUMBER;
       hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
           java.lang.Double.doubleToLongBits(getLng()));
@@ -29886,17 +27696,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -29956,7 +27755,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -29964,7 +27762,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -29992,7 +27789,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PointData_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PointData_fieldAccessorTable
@@ -30016,7 +27812,6 @@
           getActionsFieldBuilder();
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         lng_ = 0D;
@@ -30029,7 +27824,7 @@
 
         if (actionsBuilder_ == null) {
           actions_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000010);
         } else {
           actionsBuilder_.clear();
         }
@@ -30050,18 +27845,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PointData_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData result = buildPartial();
         if (!result.isInitialized()) {
@@ -30070,18 +27862,18 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData(this);
         int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
         result.lng_ = lng_;
         result.lat_ = lat_;
         result.height_ = height_;
         result.speed_ = speed_;
         if (actionsBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
+          if (((bitField0_ & 0x00000010) == 0x00000010)) {
             actions_ = java.util.Collections.unmodifiableList(actions_);
-            bitField0_ = (bitField0_ & ~0x00000001);
+            bitField0_ = (bitField0_ & ~0x00000010);
           }
           result.actions_ = actions_;
         } else {
@@ -30094,43 +27886,37 @@
         result.heading_ = heading_;
         result.interestIndex_ = interestIndex_;
         result.groupIndex_ = groupIndex_;
+        result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData)other);
@@ -30158,7 +27944,7 @@
           if (!other.actions_.isEmpty()) {
             if (actions_.isEmpty()) {
               actions_ = other.actions_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+              bitField0_ = (bitField0_ & ~0x00000010);
             } else {
               ensureActionsIsMutable();
               actions_.addAll(other.actions_);
@@ -30171,7 +27957,7 @@
               actionsBuilder_.dispose();
               actionsBuilder_ = null;
               actions_ = other.actions_;
-              bitField0_ = (bitField0_ & ~0x00000001);
+              bitField0_ = (bitField0_ & ~0x00000010);
               actionsBuilder_ = 
                 com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getActionsFieldBuilder() : null;
@@ -30201,17 +27987,14 @@
         if (other.getGroupIndex() != 0) {
           setGroupIndex(other.getGroupIndex());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -30237,10 +28020,8 @@
        *经度
        * </pre>
        *
-       * <code>double lng = 1;</code>
-       * @return The lng.
+       * <code>optional double lng = 1;</code>
        */
-      @java.lang.Override
       public double getLng() {
         return lng_;
       }
@@ -30249,9 +28030,7 @@
        *经度
        * </pre>
        *
-       * <code>double lng = 1;</code>
-       * @param value The lng to set.
-       * @return This builder for chaining.
+       * <code>optional double lng = 1;</code>
        */
       public Builder setLng(double value) {
         
@@ -30264,8 +28043,7 @@
        *经度
        * </pre>
        *
-       * <code>double lng = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional double lng = 1;</code>
        */
       public Builder clearLng() {
         
@@ -30280,10 +28058,8 @@
        *纬度
        * </pre>
        *
-       * <code>double lat = 2;</code>
-       * @return The lat.
+       * <code>optional double lat = 2;</code>
        */
-      @java.lang.Override
       public double getLat() {
         return lat_;
       }
@@ -30292,9 +28068,7 @@
        *纬度
        * </pre>
        *
-       * <code>double lat = 2;</code>
-       * @param value The lat to set.
-       * @return This builder for chaining.
+       * <code>optional double lat = 2;</code>
        */
       public Builder setLat(double value) {
         
@@ -30307,8 +28081,7 @@
        *纬度
        * </pre>
        *
-       * <code>double lat = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional double lat = 2;</code>
        */
       public Builder clearLat() {
         
@@ -30323,10 +28096,8 @@
        *高度(单位:米,范围0~遥控器限高),说明:此值为相对起飞点高度,如果太高会有失去网络覆盖风险
        * </pre>
        *
-       * <code>float height = 3;</code>
-       * @return The height.
+       * <code>optional float height = 3;</code>
        */
-      @java.lang.Override
       public float getHeight() {
         return height_;
       }
@@ -30335,9 +28106,7 @@
        *高度(单位:米,范围0~遥控器限高),说明:此值为相对起飞点高度,如果太高会有失去网络覆盖风险
        * </pre>
        *
-       * <code>float height = 3;</code>
-       * @param value The height to set.
-       * @return This builder for chaining.
+       * <code>optional float height = 3;</code>
        */
       public Builder setHeight(float value) {
         
@@ -30350,8 +28119,7 @@
        *高度(单位:米,范围0~遥控器限高),说明:此值为相对起飞点高度,如果太高会有失去网络覆盖风险
        * </pre>
        *
-       * <code>float height = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional float height = 3;</code>
        */
       public Builder clearHeight() {
         
@@ -30366,10 +28134,8 @@
        *速度(单位:米/秒,范围0~15),默认8
        * </pre>
        *
-       * <code>float speed = 4;</code>
-       * @return The speed.
+       * <code>optional float speed = 4;</code>
        */
-      @java.lang.Override
       public float getSpeed() {
         return speed_;
       }
@@ -30378,9 +28144,7 @@
        *速度(单位:米/秒,范围0~15),默认8
        * </pre>
        *
-       * <code>float speed = 4;</code>
-       * @param value The speed to set.
-       * @return This builder for chaining.
+       * <code>optional float speed = 4;</code>
        */
       public Builder setSpeed(float value) {
         
@@ -30393,8 +28157,7 @@
        *速度(单位:米/秒,范围0~15),默认8
        * </pre>
        *
-       * <code>float speed = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional float speed = 4;</code>
        */
       public Builder clearSpeed() {
         
@@ -30406,9 +28169,9 @@
       private java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction> actions_ =
         java.util.Collections.emptyList();
       private void ensureActionsIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
+        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
           actions_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction>(actions_);
-          bitField0_ |= 0x00000001;
+          bitField0_ |= 0x00000010;
          }
       }
 
@@ -30602,7 +28365,7 @@
       public Builder clearActions() {
         if (actionsBuilder_ == null) {
           actions_ = java.util.Collections.emptyList();
-          bitField0_ = (bitField0_ & ~0x00000001);
+          bitField0_ = (bitField0_ & ~0x00000010);
           onChanged();
         } else {
           actionsBuilder_.clear();
@@ -30707,7 +28470,7 @@
           actionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointActionOrBuilder>(
                   actions_,
-                  ((bitField0_ & 0x00000001) != 0),
+                  ((bitField0_ & 0x00000010) == 0x00000010),
                   getParentForChildren(),
                   isClean());
           actions_ = null;
@@ -30721,10 +28484,8 @@
        *航线飞行模式:1=直线飞行,2=协调转弯,3=曲线飞行(停),4=曲线飞行(不停)
        * </pre>
        *
-       * <code>uint32 flightPathMode = 6;</code>
-       * @return The flightPathMode.
+       * <code>optional uint32 flightPathMode = 6;</code>
        */
-      @java.lang.Override
       public int getFlightPathMode() {
         return flightPathMode_;
       }
@@ -30733,9 +28494,7 @@
        *航线飞行模式:1=直线飞行,2=协调转弯,3=曲线飞行(停),4=曲线飞行(不停)
        * </pre>
        *
-       * <code>uint32 flightPathMode = 6;</code>
-       * @param value The flightPathMode to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 flightPathMode = 6;</code>
        */
       public Builder setFlightPathMode(int value) {
         
@@ -30748,8 +28507,7 @@
        *航线飞行模式:1=直线飞行,2=协调转弯,3=曲线飞行(停),4=曲线飞行(不停)
        * </pre>
        *
-       * <code>uint32 flightPathMode = 6;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 flightPathMode = 6;</code>
        */
       public Builder clearFlightPathMode() {
         
@@ -30764,10 +28522,8 @@
        *转弯半径(仅协调转弯模式下有效),取值范围1~655.35单位:米,两点间距离要小于此值,此值要根据实际情况计算,切勿随便设此值[可能导致航线开始失败],具体计算方法可以咨询售后支持或者大疆DJI
        * </pre>
        *
-       * <code>float dampingDistance = 7;</code>
-       * @return The dampingDistance.
+       * <code>optional float dampingDistance = 7;</code>
        */
-      @java.lang.Override
       public float getDampingDistance() {
         return dampingDistance_;
       }
@@ -30776,9 +28532,7 @@
        *转弯半径(仅协调转弯模式下有效),取值范围1~655.35单位:米,两点间距离要小于此值,此值要根据实际情况计算,切勿随便设此值[可能导致航线开始失败],具体计算方法可以咨询售后支持或者大疆DJI
        * </pre>
        *
-       * <code>float dampingDistance = 7;</code>
-       * @param value The dampingDistance to set.
-       * @return This builder for chaining.
+       * <code>optional float dampingDistance = 7;</code>
        */
       public Builder setDampingDistance(float value) {
         
@@ -30791,8 +28545,7 @@
        *转弯半径(仅协调转弯模式下有效),取值范围1~655.35单位:米,两点间距离要小于此值,此值要根据实际情况计算,切勿随便设此值[可能导致航线开始失败],具体计算方法可以咨询售后支持或者大疆DJI
        * </pre>
        *
-       * <code>float dampingDistance = 7;</code>
-       * @return This builder for chaining.
+       * <code>optional float dampingDistance = 7;</code>
        */
       public Builder clearDampingDistance() {
         
@@ -30807,10 +28560,8 @@
        *是否为安全返航点 0=不是,1=是 (暂时未启用)
        * </pre>
        *
-       * <code>uint32 safeGohomeFlag = 8;</code>
-       * @return The safeGohomeFlag.
+       * <code>optional uint32 safeGohomeFlag = 8;</code>
        */
-      @java.lang.Override
       public int getSafeGohomeFlag() {
         return safeGohomeFlag_;
       }
@@ -30819,9 +28570,7 @@
        *是否为安全返航点 0=不是,1=是 (暂时未启用)
        * </pre>
        *
-       * <code>uint32 safeGohomeFlag = 8;</code>
-       * @param value The safeGohomeFlag to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 safeGohomeFlag = 8;</code>
        */
       public Builder setSafeGohomeFlag(int value) {
         
@@ -30834,8 +28583,7 @@
        *是否为安全返航点 0=不是,1=是 (暂时未启用)
        * </pre>
        *
-       * <code>uint32 safeGohomeFlag = 8;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 safeGohomeFlag = 8;</code>
        */
       public Builder clearSafeGohomeFlag() {
         
@@ -30850,10 +28598,8 @@
        *偏航模式 0=自动,1=锁定,2=遥控器控制,3=云台依照航点方向旋转,4=朝向兴趣点,5=飞机和云台的偏航同时旋转
        * </pre>
        *
-       * <code>uint32 headingMode = 9;</code>
-       * @return The headingMode.
+       * <code>optional uint32 headingMode = 9;</code>
        */
-      @java.lang.Override
       public int getHeadingMode() {
         return headingMode_;
       }
@@ -30862,9 +28608,7 @@
        *偏航模式 0=自动,1=锁定,2=遥控器控制,3=云台依照航点方向旋转,4=朝向兴趣点,5=飞机和云台的偏航同时旋转
        * </pre>
        *
-       * <code>uint32 headingMode = 9;</code>
-       * @param value The headingMode to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 headingMode = 9;</code>
        */
       public Builder setHeadingMode(int value) {
         
@@ -30877,8 +28621,7 @@
        *偏航模式 0=自动,1=锁定,2=遥控器控制,3=云台依照航点方向旋转,4=朝向兴趣点,5=飞机和云台的偏航同时旋转
        * </pre>
        *
-       * <code>uint32 headingMode = 9;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 headingMode = 9;</code>
        */
       public Builder clearHeadingMode() {
         
@@ -30893,10 +28636,8 @@
        *航点偏航 -180~180
        * </pre>
        *
-       * <code>float heading = 10;</code>
-       * @return The heading.
+       * <code>optional float heading = 10;</code>
        */
-      @java.lang.Override
       public float getHeading() {
         return heading_;
       }
@@ -30905,9 +28646,7 @@
        *航点偏航 -180~180
        * </pre>
        *
-       * <code>float heading = 10;</code>
-       * @param value The heading to set.
-       * @return This builder for chaining.
+       * <code>optional float heading = 10;</code>
        */
       public Builder setHeading(float value) {
         
@@ -30920,8 +28659,7 @@
        *航点偏航 -180~180
        * </pre>
        *
-       * <code>float heading = 10;</code>
-       * @return This builder for chaining.
+       * <code>optional float heading = 10;</code>
        */
       public Builder clearHeading() {
         
@@ -30936,10 +28674,8 @@
        *兴趣点下标,默认-1
        * </pre>
        *
-       * <code>int32 interestIndex = 11;</code>
-       * @return The interestIndex.
+       * <code>optional int32 interestIndex = 11;</code>
        */
-      @java.lang.Override
       public int getInterestIndex() {
         return interestIndex_;
       }
@@ -30948,9 +28684,7 @@
        *兴趣点下标,默认-1
        * </pre>
        *
-       * <code>int32 interestIndex = 11;</code>
-       * @param value The interestIndex to set.
-       * @return This builder for chaining.
+       * <code>optional int32 interestIndex = 11;</code>
        */
       public Builder setInterestIndex(int value) {
         
@@ -30963,8 +28697,7 @@
        *兴趣点下标,默认-1
        * </pre>
        *
-       * <code>int32 interestIndex = 11;</code>
-       * @return This builder for chaining.
+       * <code>optional int32 interestIndex = 11;</code>
        */
       public Builder clearInterestIndex() {
         
@@ -30979,10 +28712,8 @@
        *组下标
        * </pre>
        *
-       * <code>uint32 groupIndex = 12;</code>
-       * @return The groupIndex.
+       * <code>optional uint32 groupIndex = 12;</code>
        */
-      @java.lang.Override
       public int getGroupIndex() {
         return groupIndex_;
       }
@@ -30991,9 +28722,7 @@
        *组下标
        * </pre>
        *
-       * <code>uint32 groupIndex = 12;</code>
-       * @param value The groupIndex to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 groupIndex = 12;</code>
        */
       public Builder setGroupIndex(int value) {
         
@@ -31006,8 +28735,7 @@
        *组下标
        * </pre>
        *
-       * <code>uint32 groupIndex = 12;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 groupIndex = 12;</code>
        */
       public Builder clearGroupIndex() {
         
@@ -31015,16 +28743,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -31043,12 +28769,11 @@
 
     private static final com.google.protobuf.Parser<PointData>
         PARSER = new com.google.protobuf.AbstractParser<PointData>() {
-      @java.lang.Override
       public PointData parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new PointData(input, extensionRegistry);
+          return new PointData(input, extensionRegistry);
       }
     };
 
@@ -31061,7 +28786,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -31077,8 +28801,7 @@
      *类型:1.变焦 2.拍照 3.录像 4.停录 5.控制飞机机头偏航 6.控制云台俯仰 7.控制云台偏航 8.控制云台横滚 9.悬停 10.等距间隔拍照 11.等时间隔拍照 12.结束间隔拍照 13.单条喊话 14.开始循环喊话 15.结束循环喊话 16.对焦
      * </pre>
      *
-     * <code>uint32 type = 1;</code>
-     * @return The type.
+     * <code>optional uint32 type = 1;</code>
      */
     int getType();
 
@@ -31087,8 +28810,7 @@
      *参数:[1.变焦]-&gt;变焦倍数(范围:2~200) 、 [5.控制飞机机头偏航(范围:-180~180)、6.控制云台俯仰(范围:-120~30)、7.控制云台偏航(范围:-180~180)、8.控制云台横滚(范围:-90~60)]-&gt;角度(按正北坐标系绝对值控制) 、[9.悬停]-&gt;时间(单位:秒,范围:1~25,如果想停留大于25秒时长,可以加多组悬停动作) [10.等距间隔拍照]-&gt;距离(单位:米,范围:1~100)  [11.等时间隔拍照]-&gt;时间(单位:秒,范围:1~30)  [13/14-&gt;喊话器俯仰角度,如果此值为0默认改成-90](范围:0~-90)
      * </pre>
      *
-     * <code>float param = 2;</code>
-     * @return The param.
+     * <code>optional float param = 2;</code>
      */
     float getParam();
 
@@ -31097,8 +28819,7 @@
      *动作触发后等待时长(单位:秒) [此值如果不需要可以不传,如需悬停可添加类型9悬停动作] [13/14-&gt;喊话器声音,如果此值不传默认50](范围:0~100)
      * </pre>
      *
-     * <code>int32 waitTime = 3;</code>
-     * @return The waitTime.
+     * <code>optional int32 waitTime = 3;</code>
      */
     int getWaitTime();
 
@@ -31107,8 +28828,7 @@
      *喊话内容[type=13和type=14时生效]
      * </pre>
      *
-     * <code>string speakInfo = 4;</code>
-     * @return The speakInfo.
+     * <code>optional string speakInfo = 4;</code>
      */
     java.lang.String getSpeakInfo();
     /**
@@ -31116,8 +28836,7 @@
      *喊话内容[type=13和type=14时生效]
      * </pre>
      *
-     * <code>string speakInfo = 4;</code>
-     * @return The bytes for speakInfo.
+     * <code>optional string speakInfo = 4;</code>
      */
     com.google.protobuf.ByteString
         getSpeakInfoBytes();
@@ -31129,41 +28848,32 @@
    *
    * Protobuf type {@code PointAction}
    */
-  public static final class PointAction extends
+  public  static final class PointAction extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:PointAction)
       PointActionOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use PointAction.newBuilder() to construct.
     private PointAction(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private PointAction() {
+      type_ = 0;
+      param_ = 0F;
+      waitTime_ = 0;
       speakInfo_ = "";
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new PointAction();
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private PointAction(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -31172,6 +28882,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 8: {
 
               type_ = input.readUInt32();
@@ -31193,24 +28909,14 @@
               speakInfo_ = s;
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -31219,7 +28925,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PointAction_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PointAction_fieldAccessorTable
@@ -31234,10 +28939,8 @@
      *类型:1.变焦 2.拍照 3.录像 4.停录 5.控制飞机机头偏航 6.控制云台俯仰 7.控制云台偏航 8.控制云台横滚 9.悬停 10.等距间隔拍照 11.等时间隔拍照 12.结束间隔拍照 13.单条喊话 14.开始循环喊话 15.结束循环喊话 16.对焦
      * </pre>
      *
-     * <code>uint32 type = 1;</code>
-     * @return The type.
+     * <code>optional uint32 type = 1;</code>
      */
-    @java.lang.Override
     public int getType() {
       return type_;
     }
@@ -31249,10 +28952,8 @@
      *参数:[1.变焦]-&gt;变焦倍数(范围:2~200) 、 [5.控制飞机机头偏航(范围:-180~180)、6.控制云台俯仰(范围:-120~30)、7.控制云台偏航(范围:-180~180)、8.控制云台横滚(范围:-90~60)]-&gt;角度(按正北坐标系绝对值控制) 、[9.悬停]-&gt;时间(单位:秒,范围:1~25,如果想停留大于25秒时长,可以加多组悬停动作) [10.等距间隔拍照]-&gt;距离(单位:米,范围:1~100)  [11.等时间隔拍照]-&gt;时间(单位:秒,范围:1~30)  [13/14-&gt;喊话器俯仰角度,如果此值为0默认改成-90](范围:0~-90)
      * </pre>
      *
-     * <code>float param = 2;</code>
-     * @return The param.
+     * <code>optional float param = 2;</code>
      */
-    @java.lang.Override
     public float getParam() {
       return param_;
     }
@@ -31264,10 +28965,8 @@
      *动作触发后等待时长(单位:秒) [此值如果不需要可以不传,如需悬停可添加类型9悬停动作] [13/14-&gt;喊话器声音,如果此值不传默认50](范围:0~100)
      * </pre>
      *
-     * <code>int32 waitTime = 3;</code>
-     * @return The waitTime.
+     * <code>optional int32 waitTime = 3;</code>
      */
-    @java.lang.Override
     public int getWaitTime() {
       return waitTime_;
     }
@@ -31279,10 +28978,8 @@
      *喊话内容[type=13和type=14时生效]
      * </pre>
      *
-     * <code>string speakInfo = 4;</code>
-     * @return The speakInfo.
+     * <code>optional string speakInfo = 4;</code>
      */
-    @java.lang.Override
     public java.lang.String getSpeakInfo() {
       java.lang.Object ref = speakInfo_;
       if (ref instanceof java.lang.String) {
@@ -31300,10 +28997,8 @@
      *喊话内容[type=13和type=14时生效]
      * </pre>
      *
-     * <code>string speakInfo = 4;</code>
-     * @return The bytes for speakInfo.
+     * <code>optional string speakInfo = 4;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getSpeakInfoBytes() {
       java.lang.Object ref = speakInfo_;
@@ -31319,7 +29014,6 @@
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -31329,25 +29023,22 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       if (type_ != 0) {
         output.writeUInt32(1, type_);
       }
-      if (java.lang.Float.floatToRawIntBits(param_) != 0) {
+      if (param_ != 0F) {
         output.writeFloat(2, param_);
       }
       if (waitTime_ != 0) {
         output.writeInt32(3, waitTime_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(speakInfo_)) {
+      if (!getSpeakInfoBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 4, speakInfo_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -31357,7 +29048,7 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(1, type_);
       }
-      if (java.lang.Float.floatToRawIntBits(param_) != 0) {
+      if (param_ != 0F) {
         size += com.google.protobuf.CodedOutputStream
           .computeFloatSize(2, param_);
       }
@@ -31365,14 +29056,14 @@
         size += com.google.protobuf.CodedOutputStream
           .computeInt32Size(3, waitTime_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(speakInfo_)) {
+      if (!getSpeakInfoBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, speakInfo_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -31383,17 +29074,18 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction) obj;
 
-      if (getType()
-          != other.getType()) return false;
-      if (java.lang.Float.floatToIntBits(getParam())
-          != java.lang.Float.floatToIntBits(
-              other.getParam())) return false;
-      if (getWaitTime()
-          != other.getWaitTime()) return false;
-      if (!getSpeakInfo()
-          .equals(other.getSpeakInfo())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && (getType()
+          == other.getType());
+      result = result && (
+          java.lang.Float.floatToIntBits(getParam())
+          == java.lang.Float.floatToIntBits(
+              other.getParam()));
+      result = result && (getWaitTime()
+          == other.getWaitTime());
+      result = result && getSpeakInfo()
+          .equals(other.getSpeakInfo());
+      return result;
     }
 
     @java.lang.Override
@@ -31402,7 +29094,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + TYPE_FIELD_NUMBER;
       hash = (53 * hash) + getType();
       hash = (37 * hash) + PARAM_FIELD_NUMBER;
@@ -31417,17 +29109,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -31487,7 +29168,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -31495,7 +29175,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -31523,7 +29202,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PointAction_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PointAction_fieldAccessorTable
@@ -31546,7 +29224,6 @@
                 .alwaysUseFieldBuilders) {
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         type_ = 0;
@@ -31560,18 +29237,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_PointAction_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction result = buildPartial();
         if (!result.isInitialized()) {
@@ -31580,7 +29254,6 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction(this);
         result.type_ = type_;
@@ -31591,39 +29264,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction)other);
@@ -31648,17 +29314,14 @@
           speakInfo_ = other.speakInfo_;
           onChanged();
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -31683,10 +29346,8 @@
        *类型:1.变焦 2.拍照 3.录像 4.停录 5.控制飞机机头偏航 6.控制云台俯仰 7.控制云台偏航 8.控制云台横滚 9.悬停 10.等距间隔拍照 11.等时间隔拍照 12.结束间隔拍照 13.单条喊话 14.开始循环喊话 15.结束循环喊话 16.对焦
        * </pre>
        *
-       * <code>uint32 type = 1;</code>
-       * @return The type.
+       * <code>optional uint32 type = 1;</code>
        */
-      @java.lang.Override
       public int getType() {
         return type_;
       }
@@ -31695,9 +29356,7 @@
        *类型:1.变焦 2.拍照 3.录像 4.停录 5.控制飞机机头偏航 6.控制云台俯仰 7.控制云台偏航 8.控制云台横滚 9.悬停 10.等距间隔拍照 11.等时间隔拍照 12.结束间隔拍照 13.单条喊话 14.开始循环喊话 15.结束循环喊话 16.对焦
        * </pre>
        *
-       * <code>uint32 type = 1;</code>
-       * @param value The type to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 type = 1;</code>
        */
       public Builder setType(int value) {
         
@@ -31710,8 +29369,7 @@
        *类型:1.变焦 2.拍照 3.录像 4.停录 5.控制飞机机头偏航 6.控制云台俯仰 7.控制云台偏航 8.控制云台横滚 9.悬停 10.等距间隔拍照 11.等时间隔拍照 12.结束间隔拍照 13.单条喊话 14.开始循环喊话 15.结束循环喊话 16.对焦
        * </pre>
        *
-       * <code>uint32 type = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 type = 1;</code>
        */
       public Builder clearType() {
         
@@ -31726,10 +29384,8 @@
        *参数:[1.变焦]-&gt;变焦倍数(范围:2~200) 、 [5.控制飞机机头偏航(范围:-180~180)、6.控制云台俯仰(范围:-120~30)、7.控制云台偏航(范围:-180~180)、8.控制云台横滚(范围:-90~60)]-&gt;角度(按正北坐标系绝对值控制) 、[9.悬停]-&gt;时间(单位:秒,范围:1~25,如果想停留大于25秒时长,可以加多组悬停动作) [10.等距间隔拍照]-&gt;距离(单位:米,范围:1~100)  [11.等时间隔拍照]-&gt;时间(单位:秒,范围:1~30)  [13/14-&gt;喊话器俯仰角度,如果此值为0默认改成-90](范围:0~-90)
        * </pre>
        *
-       * <code>float param = 2;</code>
-       * @return The param.
+       * <code>optional float param = 2;</code>
        */
-      @java.lang.Override
       public float getParam() {
         return param_;
       }
@@ -31738,9 +29394,7 @@
        *参数:[1.变焦]-&gt;变焦倍数(范围:2~200) 、 [5.控制飞机机头偏航(范围:-180~180)、6.控制云台俯仰(范围:-120~30)、7.控制云台偏航(范围:-180~180)、8.控制云台横滚(范围:-90~60)]-&gt;角度(按正北坐标系绝对值控制) 、[9.悬停]-&gt;时间(单位:秒,范围:1~25,如果想停留大于25秒时长,可以加多组悬停动作) [10.等距间隔拍照]-&gt;距离(单位:米,范围:1~100)  [11.等时间隔拍照]-&gt;时间(单位:秒,范围:1~30)  [13/14-&gt;喊话器俯仰角度,如果此值为0默认改成-90](范围:0~-90)
        * </pre>
        *
-       * <code>float param = 2;</code>
-       * @param value The param to set.
-       * @return This builder for chaining.
+       * <code>optional float param = 2;</code>
        */
       public Builder setParam(float value) {
         
@@ -31753,8 +29407,7 @@
        *参数:[1.变焦]-&gt;变焦倍数(范围:2~200) 、 [5.控制飞机机头偏航(范围:-180~180)、6.控制云台俯仰(范围:-120~30)、7.控制云台偏航(范围:-180~180)、8.控制云台横滚(范围:-90~60)]-&gt;角度(按正北坐标系绝对值控制) 、[9.悬停]-&gt;时间(单位:秒,范围:1~25,如果想停留大于25秒时长,可以加多组悬停动作) [10.等距间隔拍照]-&gt;距离(单位:米,范围:1~100)  [11.等时间隔拍照]-&gt;时间(单位:秒,范围:1~30)  [13/14-&gt;喊话器俯仰角度,如果此值为0默认改成-90](范围:0~-90)
        * </pre>
        *
-       * <code>float param = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional float param = 2;</code>
        */
       public Builder clearParam() {
         
@@ -31769,10 +29422,8 @@
        *动作触发后等待时长(单位:秒) [此值如果不需要可以不传,如需悬停可添加类型9悬停动作] [13/14-&gt;喊话器声音,如果此值不传默认50](范围:0~100)
        * </pre>
        *
-       * <code>int32 waitTime = 3;</code>
-       * @return The waitTime.
+       * <code>optional int32 waitTime = 3;</code>
        */
-      @java.lang.Override
       public int getWaitTime() {
         return waitTime_;
       }
@@ -31781,9 +29432,7 @@
        *动作触发后等待时长(单位:秒) [此值如果不需要可以不传,如需悬停可添加类型9悬停动作] [13/14-&gt;喊话器声音,如果此值不传默认50](范围:0~100)
        * </pre>
        *
-       * <code>int32 waitTime = 3;</code>
-       * @param value The waitTime to set.
-       * @return This builder for chaining.
+       * <code>optional int32 waitTime = 3;</code>
        */
       public Builder setWaitTime(int value) {
         
@@ -31796,8 +29445,7 @@
        *动作触发后等待时长(单位:秒) [此值如果不需要可以不传,如需悬停可添加类型9悬停动作] [13/14-&gt;喊话器声音,如果此值不传默认50](范围:0~100)
        * </pre>
        *
-       * <code>int32 waitTime = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional int32 waitTime = 3;</code>
        */
       public Builder clearWaitTime() {
         
@@ -31812,8 +29460,7 @@
        *喊话内容[type=13和type=14时生效]
        * </pre>
        *
-       * <code>string speakInfo = 4;</code>
-       * @return The speakInfo.
+       * <code>optional string speakInfo = 4;</code>
        */
       public java.lang.String getSpeakInfo() {
         java.lang.Object ref = speakInfo_;
@@ -31832,8 +29479,7 @@
        *喊话内容[type=13和type=14时生效]
        * </pre>
        *
-       * <code>string speakInfo = 4;</code>
-       * @return The bytes for speakInfo.
+       * <code>optional string speakInfo = 4;</code>
        */
       public com.google.protobuf.ByteString
           getSpeakInfoBytes() {
@@ -31853,9 +29499,7 @@
        *喊话内容[type=13和type=14时生效]
        * </pre>
        *
-       * <code>string speakInfo = 4;</code>
-       * @param value The speakInfo to set.
-       * @return This builder for chaining.
+       * <code>optional string speakInfo = 4;</code>
        */
       public Builder setSpeakInfo(
           java.lang.String value) {
@@ -31872,8 +29516,7 @@
        *喊话内容[type=13和type=14时生效]
        * </pre>
        *
-       * <code>string speakInfo = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional string speakInfo = 4;</code>
        */
       public Builder clearSpeakInfo() {
         
@@ -31886,9 +29529,7 @@
        *喊话内容[type=13和type=14时生效]
        * </pre>
        *
-       * <code>string speakInfo = 4;</code>
-       * @param value The bytes for speakInfo to set.
-       * @return This builder for chaining.
+       * <code>optional string speakInfo = 4;</code>
        */
       public Builder setSpeakInfoBytes(
           com.google.protobuf.ByteString value) {
@@ -31901,16 +29542,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -31929,12 +29568,11 @@
 
     private static final com.google.protobuf.Parser<PointAction>
         PARSER = new com.google.protobuf.AbstractParser<PointAction>() {
-      @java.lang.Override
       public PointAction parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new PointAction(input, extensionRegistry);
+          return new PointAction(input, extensionRegistry);
       }
     };
 
@@ -31947,7 +29585,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointAction getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -31963,8 +29600,7 @@
      *机库ID
      * </pre>
      *
-     * <code>string hangarId = 1;</code>
-     * @return The hangarId.
+     * <code>optional string hangarId = 1;</code>
      */
     java.lang.String getHangarId();
     /**
@@ -31972,8 +29608,7 @@
      *机库ID
      * </pre>
      *
-     * <code>string hangarId = 1;</code>
-     * @return The bytes for hangarId.
+     * <code>optional string hangarId = 1;</code>
      */
     com.google.protobuf.ByteString
         getHangarIdBytes();
@@ -31983,8 +29618,7 @@
      *机库经度
      * </pre>
      *
-     * <code>double hangarLng = 2;</code>
-     * @return The hangarLng.
+     * <code>optional double hangarLng = 2;</code>
      */
     double getHangarLng();
 
@@ -31993,8 +29627,7 @@
      *机库纬度
      * </pre>
      *
-     * <code>double hangarLat = 3;</code>
-     * @return The hangarLat.
+     * <code>optional double hangarLat = 3;</code>
      */
     double getHangarLat();
 
@@ -32003,8 +29636,7 @@
      *备降点经度
      * </pre>
      *
-     * <code>double alternateLng = 4;</code>
-     * @return The alternateLng.
+     * <code>optional double alternateLng = 4;</code>
      */
     double getAlternateLng();
 
@@ -32013,8 +29645,7 @@
      *备降点纬度
      * </pre>
      *
-     * <code>double alternateLat = 5;</code>
-     * @return The alternateLat.
+     * <code>optional double alternateLat = 5;</code>
      */
     double getAlternateLat();
   }
@@ -32025,41 +29656,33 @@
    *
    * Protobuf type {@code HangarPoint}
    */
-  public static final class HangarPoint extends
+  public  static final class HangarPoint extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:HangarPoint)
       HangarPointOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use HangarPoint.newBuilder() to construct.
     private HangarPoint(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private HangarPoint() {
       hangarId_ = "";
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new HangarPoint();
+      hangarLng_ = 0D;
+      hangarLat_ = 0D;
+      alternateLng_ = 0D;
+      alternateLat_ = 0D;
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private HangarPoint(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
+      int mutable_bitField0_ = 0;
       try {
         boolean done = false;
         while (!done) {
@@ -32068,6 +29691,12 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 10: {
               java.lang.String s = input.readStringRequireUtf8();
 
@@ -32094,24 +29723,14 @@
               alternateLat_ = input.readDouble();
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -32120,7 +29739,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_HangarPoint_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_HangarPoint_fieldAccessorTable
@@ -32135,10 +29753,8 @@
      *机库ID
      * </pre>
      *
-     * <code>string hangarId = 1;</code>
-     * @return The hangarId.
+     * <code>optional string hangarId = 1;</code>
      */
-    @java.lang.Override
     public java.lang.String getHangarId() {
       java.lang.Object ref = hangarId_;
       if (ref instanceof java.lang.String) {
@@ -32156,10 +29772,8 @@
      *机库ID
      * </pre>
      *
-     * <code>string hangarId = 1;</code>
-     * @return The bytes for hangarId.
+     * <code>optional string hangarId = 1;</code>
      */
-    @java.lang.Override
     public com.google.protobuf.ByteString
         getHangarIdBytes() {
       java.lang.Object ref = hangarId_;
@@ -32181,10 +29795,8 @@
      *机库经度
      * </pre>
      *
-     * <code>double hangarLng = 2;</code>
-     * @return The hangarLng.
+     * <code>optional double hangarLng = 2;</code>
      */
-    @java.lang.Override
     public double getHangarLng() {
       return hangarLng_;
     }
@@ -32196,10 +29808,8 @@
      *机库纬度
      * </pre>
      *
-     * <code>double hangarLat = 3;</code>
-     * @return The hangarLat.
+     * <code>optional double hangarLat = 3;</code>
      */
-    @java.lang.Override
     public double getHangarLat() {
       return hangarLat_;
     }
@@ -32211,10 +29821,8 @@
      *备降点经度
      * </pre>
      *
-     * <code>double alternateLng = 4;</code>
-     * @return The alternateLng.
+     * <code>optional double alternateLng = 4;</code>
      */
-    @java.lang.Override
     public double getAlternateLng() {
       return alternateLng_;
     }
@@ -32226,16 +29834,13 @@
      *备降点纬度
      * </pre>
      *
-     * <code>double alternateLat = 5;</code>
-     * @return The alternateLat.
+     * <code>optional double alternateLat = 5;</code>
      */
-    @java.lang.Override
     public double getAlternateLat() {
       return alternateLat_;
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -32245,57 +29850,54 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hangarId_)) {
+      if (!getHangarIdBytes().isEmpty()) {
         com.google.protobuf.GeneratedMessageV3.writeString(output, 1, hangarId_);
       }
-      if (java.lang.Double.doubleToRawLongBits(hangarLng_) != 0) {
+      if (hangarLng_ != 0D) {
         output.writeDouble(2, hangarLng_);
       }
-      if (java.lang.Double.doubleToRawLongBits(hangarLat_) != 0) {
+      if (hangarLat_ != 0D) {
         output.writeDouble(3, hangarLat_);
       }
-      if (java.lang.Double.doubleToRawLongBits(alternateLng_) != 0) {
+      if (alternateLng_ != 0D) {
         output.writeDouble(4, alternateLng_);
       }
-      if (java.lang.Double.doubleToRawLongBits(alternateLat_) != 0) {
+      if (alternateLat_ != 0D) {
         output.writeDouble(5, alternateLat_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(hangarId_)) {
+      if (!getHangarIdBytes().isEmpty()) {
         size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, hangarId_);
       }
-      if (java.lang.Double.doubleToRawLongBits(hangarLng_) != 0) {
+      if (hangarLng_ != 0D) {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(2, hangarLng_);
       }
-      if (java.lang.Double.doubleToRawLongBits(hangarLat_) != 0) {
+      if (hangarLat_ != 0D) {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(3, hangarLat_);
       }
-      if (java.lang.Double.doubleToRawLongBits(alternateLng_) != 0) {
+      if (alternateLng_ != 0D) {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(4, alternateLng_);
       }
-      if (java.lang.Double.doubleToRawLongBits(alternateLat_) != 0) {
+      if (alternateLat_ != 0D) {
         size += com.google.protobuf.CodedOutputStream
           .computeDoubleSize(5, alternateLat_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -32306,22 +29908,26 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint) obj;
 
-      if (!getHangarId()
-          .equals(other.getHangarId())) return false;
-      if (java.lang.Double.doubleToLongBits(getHangarLng())
-          != java.lang.Double.doubleToLongBits(
-              other.getHangarLng())) return false;
-      if (java.lang.Double.doubleToLongBits(getHangarLat())
-          != java.lang.Double.doubleToLongBits(
-              other.getHangarLat())) return false;
-      if (java.lang.Double.doubleToLongBits(getAlternateLng())
-          != java.lang.Double.doubleToLongBits(
-              other.getAlternateLng())) return false;
-      if (java.lang.Double.doubleToLongBits(getAlternateLat())
-          != java.lang.Double.doubleToLongBits(
-              other.getAlternateLat())) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && getHangarId()
+          .equals(other.getHangarId());
+      result = result && (
+          java.lang.Double.doubleToLongBits(getHangarLng())
+          == java.lang.Double.doubleToLongBits(
+              other.getHangarLng()));
+      result = result && (
+          java.lang.Double.doubleToLongBits(getHangarLat())
+          == java.lang.Double.doubleToLongBits(
+              other.getHangarLat()));
+      result = result && (
+          java.lang.Double.doubleToLongBits(getAlternateLng())
+          == java.lang.Double.doubleToLongBits(
+              other.getAlternateLng()));
+      result = result && (
+          java.lang.Double.doubleToLongBits(getAlternateLat())
+          == java.lang.Double.doubleToLongBits(
+              other.getAlternateLat()));
+      return result;
     }
 
     @java.lang.Override
@@ -32330,7 +29936,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       hash = (37 * hash) + HANGARID_FIELD_NUMBER;
       hash = (53 * hash) + getHangarId().hashCode();
       hash = (37 * hash) + HANGARLNG_FIELD_NUMBER;
@@ -32350,17 +29956,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -32420,7 +30015,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -32428,7 +30022,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -32456,7 +30049,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_HangarPoint_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_HangarPoint_fieldAccessorTable
@@ -32479,7 +30071,6 @@
                 .alwaysUseFieldBuilders) {
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         hangarId_ = "";
@@ -32495,18 +30086,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_HangarPoint_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint result = buildPartial();
         if (!result.isInitialized()) {
@@ -32515,7 +30103,6 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint(this);
         result.hangarId_ = hangarId_;
@@ -32527,39 +30114,32 @@
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint)other);
@@ -32587,17 +30167,14 @@
         if (other.getAlternateLat() != 0D) {
           setAlternateLat(other.getAlternateLat());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -32622,8 +30199,7 @@
        *机库ID
        * </pre>
        *
-       * <code>string hangarId = 1;</code>
-       * @return The hangarId.
+       * <code>optional string hangarId = 1;</code>
        */
       public java.lang.String getHangarId() {
         java.lang.Object ref = hangarId_;
@@ -32642,8 +30218,7 @@
        *机库ID
        * </pre>
        *
-       * <code>string hangarId = 1;</code>
-       * @return The bytes for hangarId.
+       * <code>optional string hangarId = 1;</code>
        */
       public com.google.protobuf.ByteString
           getHangarIdBytes() {
@@ -32663,9 +30238,7 @@
        *机库ID
        * </pre>
        *
-       * <code>string hangarId = 1;</code>
-       * @param value The hangarId to set.
-       * @return This builder for chaining.
+       * <code>optional string hangarId = 1;</code>
        */
       public Builder setHangarId(
           java.lang.String value) {
@@ -32682,8 +30255,7 @@
        *机库ID
        * </pre>
        *
-       * <code>string hangarId = 1;</code>
-       * @return This builder for chaining.
+       * <code>optional string hangarId = 1;</code>
        */
       public Builder clearHangarId() {
         
@@ -32696,9 +30268,7 @@
        *机库ID
        * </pre>
        *
-       * <code>string hangarId = 1;</code>
-       * @param value The bytes for hangarId to set.
-       * @return This builder for chaining.
+       * <code>optional string hangarId = 1;</code>
        */
       public Builder setHangarIdBytes(
           com.google.protobuf.ByteString value) {
@@ -32718,10 +30288,8 @@
        *机库经度
        * </pre>
        *
-       * <code>double hangarLng = 2;</code>
-       * @return The hangarLng.
+       * <code>optional double hangarLng = 2;</code>
        */
-      @java.lang.Override
       public double getHangarLng() {
         return hangarLng_;
       }
@@ -32730,9 +30298,7 @@
        *机库经度
        * </pre>
        *
-       * <code>double hangarLng = 2;</code>
-       * @param value The hangarLng to set.
-       * @return This builder for chaining.
+       * <code>optional double hangarLng = 2;</code>
        */
       public Builder setHangarLng(double value) {
         
@@ -32745,8 +30311,7 @@
        *机库经度
        * </pre>
        *
-       * <code>double hangarLng = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional double hangarLng = 2;</code>
        */
       public Builder clearHangarLng() {
         
@@ -32761,10 +30326,8 @@
        *机库纬度
        * </pre>
        *
-       * <code>double hangarLat = 3;</code>
-       * @return The hangarLat.
+       * <code>optional double hangarLat = 3;</code>
        */
-      @java.lang.Override
       public double getHangarLat() {
         return hangarLat_;
       }
@@ -32773,9 +30336,7 @@
        *机库纬度
        * </pre>
        *
-       * <code>double hangarLat = 3;</code>
-       * @param value The hangarLat to set.
-       * @return This builder for chaining.
+       * <code>optional double hangarLat = 3;</code>
        */
       public Builder setHangarLat(double value) {
         
@@ -32788,8 +30349,7 @@
        *机库纬度
        * </pre>
        *
-       * <code>double hangarLat = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional double hangarLat = 3;</code>
        */
       public Builder clearHangarLat() {
         
@@ -32804,10 +30364,8 @@
        *备降点经度
        * </pre>
        *
-       * <code>double alternateLng = 4;</code>
-       * @return The alternateLng.
+       * <code>optional double alternateLng = 4;</code>
        */
-      @java.lang.Override
       public double getAlternateLng() {
         return alternateLng_;
       }
@@ -32816,9 +30374,7 @@
        *备降点经度
        * </pre>
        *
-       * <code>double alternateLng = 4;</code>
-       * @param value The alternateLng to set.
-       * @return This builder for chaining.
+       * <code>optional double alternateLng = 4;</code>
        */
       public Builder setAlternateLng(double value) {
         
@@ -32831,8 +30387,7 @@
        *备降点经度
        * </pre>
        *
-       * <code>double alternateLng = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional double alternateLng = 4;</code>
        */
       public Builder clearAlternateLng() {
         
@@ -32847,10 +30402,8 @@
        *备降点纬度
        * </pre>
        *
-       * <code>double alternateLat = 5;</code>
-       * @return The alternateLat.
+       * <code>optional double alternateLat = 5;</code>
        */
-      @java.lang.Override
       public double getAlternateLat() {
         return alternateLat_;
       }
@@ -32859,9 +30412,7 @@
        *备降点纬度
        * </pre>
        *
-       * <code>double alternateLat = 5;</code>
-       * @param value The alternateLat to set.
-       * @return This builder for chaining.
+       * <code>optional double alternateLat = 5;</code>
        */
       public Builder setAlternateLat(double value) {
         
@@ -32874,8 +30425,7 @@
        *备降点纬度
        * </pre>
        *
-       * <code>double alternateLat = 5;</code>
-       * @return This builder for chaining.
+       * <code>optional double alternateLat = 5;</code>
        */
       public Builder clearAlternateLat() {
         
@@ -32883,16 +30433,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -32911,12 +30459,11 @@
 
     private static final com.google.protobuf.Parser<HangarPoint>
         PARSER = new com.google.protobuf.AbstractParser<HangarPoint>() {
-      @java.lang.Override
       public HangarPoint parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new HangarPoint(input, extensionRegistry);
+          return new HangarPoint(input, extensionRegistry);
       }
     };
 
@@ -32929,7 +30476,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.HangarPoint getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -32989,8 +30535,7 @@
      *建模平台编号:1=瞰景,2=大势,默认1
      * </pre>
      *
-     * <code>uint32 serviceId = 2;</code>
-     * @return The serviceId.
+     * <code>optional uint32 serviceId = 2;</code>
      */
     int getServiceId();
 
@@ -32999,8 +30544,7 @@
      *相机编号
      * </pre>
      *
-     * <code>uint32 cameraId = 3;</code>
-     * @return The cameraId.
+     * <code>optional uint32 cameraId = 3;</code>
      */
     int getCameraId();
 
@@ -33009,8 +30553,7 @@
      *是否实时建模:0=不,1=是
      * </pre>
      *
-     * <code>uint32 isModeling = 4;</code>
-     * @return The isModeling.
+     * <code>optional uint32 isModeling = 4;</code>
      */
     int getIsModeling();
 
@@ -33019,8 +30562,7 @@
      *作业模式:1=倾斜,2=正摄
      * </pre>
      *
-     * <code>uint32 mode = 5;</code>
-     * @return The mode.
+     * <code>optional uint32 mode = 5;</code>
      */
     int getMode();
 
@@ -33029,8 +30571,7 @@
      *横向重叠率
      * </pre>
      *
-     * <code>uint32 hOverlap = 6;</code>
-     * @return The hOverlap.
+     * <code>optional uint32 hOverlap = 6;</code>
      */
     int getHOverlap();
 
@@ -33039,8 +30580,7 @@
      *纵向重叠率
      * </pre>
      *
-     * <code>uint32 vOverlap = 7;</code>
-     * @return The vOverlap.
+     * <code>optional uint32 vOverlap = 7;</code>
      */
     int getVOverlap();
 
@@ -33049,8 +30589,7 @@
      *方向正反
      * </pre>
      *
-     * <code>uint32 mirror = 8;</code>
-     * @return The mirror.
+     * <code>optional uint32 mirror = 8;</code>
      */
     int getMirror();
   }
@@ -33061,42 +30600,36 @@
    *
    * Protobuf type {@code NormalModel}
    */
-  public static final class NormalModel extends
+  public  static final class NormalModel extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:NormalModel)
       NormalModelOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use NormalModel.newBuilder() to construct.
     private NormalModel(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private NormalModel() {
       area_ = java.util.Collections.emptyList();
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new NormalModel();
+      serviceId_ = 0;
+      cameraId_ = 0;
+      isModeling_ = 0;
+      mode_ = 0;
+      hOverlap_ = 0;
+      vOverlap_ = 0;
+      mirror_ = 0;
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private NormalModel(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
       int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
         boolean done = false;
         while (!done) {
@@ -33105,8 +30638,14 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                 area_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData>();
                 mutable_bitField0_ |= 0x00000001;
               }
@@ -33149,27 +30688,17 @@
               mirror_ = input.readUInt32();
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
           area_ = java.util.Collections.unmodifiableList(area_);
         }
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -33178,7 +30707,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_NormalModel_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_NormalModel_fieldAccessorTable
@@ -33186,6 +30714,7 @@
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel.class, com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel.Builder.class);
     }
 
+    private int bitField0_;
     public static final int AREA_FIELD_NUMBER = 1;
     private java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData> area_;
     /**
@@ -33195,7 +30724,6 @@
      *
      * <code>repeated .PointData area = 1;</code>
      */
-    @java.lang.Override
     public java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData> getAreaList() {
       return area_;
     }
@@ -33206,7 +30734,6 @@
      *
      * <code>repeated .PointData area = 1;</code>
      */
-    @java.lang.Override
     public java.util.List<? extends com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder> 
         getAreaOrBuilderList() {
       return area_;
@@ -33218,7 +30745,6 @@
      *
      * <code>repeated .PointData area = 1;</code>
      */
-    @java.lang.Override
     public int getAreaCount() {
       return area_.size();
     }
@@ -33229,7 +30755,6 @@
      *
      * <code>repeated .PointData area = 1;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getArea(int index) {
       return area_.get(index);
     }
@@ -33240,7 +30765,6 @@
      *
      * <code>repeated .PointData area = 1;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getAreaOrBuilder(
         int index) {
       return area_.get(index);
@@ -33253,10 +30777,8 @@
      *建模平台编号:1=瞰景,2=大势,默认1
      * </pre>
      *
-     * <code>uint32 serviceId = 2;</code>
-     * @return The serviceId.
+     * <code>optional uint32 serviceId = 2;</code>
      */
-    @java.lang.Override
     public int getServiceId() {
       return serviceId_;
     }
@@ -33268,10 +30790,8 @@
      *相机编号
      * </pre>
      *
-     * <code>uint32 cameraId = 3;</code>
-     * @return The cameraId.
+     * <code>optional uint32 cameraId = 3;</code>
      */
-    @java.lang.Override
     public int getCameraId() {
       return cameraId_;
     }
@@ -33283,10 +30803,8 @@
      *是否实时建模:0=不,1=是
      * </pre>
      *
-     * <code>uint32 isModeling = 4;</code>
-     * @return The isModeling.
+     * <code>optional uint32 isModeling = 4;</code>
      */
-    @java.lang.Override
     public int getIsModeling() {
       return isModeling_;
     }
@@ -33298,10 +30816,8 @@
      *作业模式:1=倾斜,2=正摄
      * </pre>
      *
-     * <code>uint32 mode = 5;</code>
-     * @return The mode.
+     * <code>optional uint32 mode = 5;</code>
      */
-    @java.lang.Override
     public int getMode() {
       return mode_;
     }
@@ -33313,10 +30829,8 @@
      *横向重叠率
      * </pre>
      *
-     * <code>uint32 hOverlap = 6;</code>
-     * @return The hOverlap.
+     * <code>optional uint32 hOverlap = 6;</code>
      */
-    @java.lang.Override
     public int getHOverlap() {
       return hOverlap_;
     }
@@ -33328,10 +30842,8 @@
      *纵向重叠率
      * </pre>
      *
-     * <code>uint32 vOverlap = 7;</code>
-     * @return The vOverlap.
+     * <code>optional uint32 vOverlap = 7;</code>
      */
-    @java.lang.Override
     public int getVOverlap() {
       return vOverlap_;
     }
@@ -33343,16 +30855,13 @@
      *方向正反
      * </pre>
      *
-     * <code>uint32 mirror = 8;</code>
-     * @return The mirror.
+     * <code>optional uint32 mirror = 8;</code>
      */
-    @java.lang.Override
     public int getMirror() {
       return mirror_;
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -33362,7 +30871,6 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       for (int i = 0; i < area_.size(); i++) {
@@ -33389,10 +30897,8 @@
       if (mirror_ != 0) {
         output.writeUInt32(8, mirror_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -33430,11 +30936,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(8, mirror_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -33445,24 +30951,24 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel) obj;
 
-      if (!getAreaList()
-          .equals(other.getAreaList())) return false;
-      if (getServiceId()
-          != other.getServiceId()) return false;
-      if (getCameraId()
-          != other.getCameraId()) return false;
-      if (getIsModeling()
-          != other.getIsModeling()) return false;
-      if (getMode()
-          != other.getMode()) return false;
-      if (getHOverlap()
-          != other.getHOverlap()) return false;
-      if (getVOverlap()
-          != other.getVOverlap()) return false;
-      if (getMirror()
-          != other.getMirror()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && getAreaList()
+          .equals(other.getAreaList());
+      result = result && (getServiceId()
+          == other.getServiceId());
+      result = result && (getCameraId()
+          == other.getCameraId());
+      result = result && (getIsModeling()
+          == other.getIsModeling());
+      result = result && (getMode()
+          == other.getMode());
+      result = result && (getHOverlap()
+          == other.getHOverlap());
+      result = result && (getVOverlap()
+          == other.getVOverlap());
+      result = result && (getMirror()
+          == other.getMirror());
+      return result;
     }
 
     @java.lang.Override
@@ -33471,7 +30977,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       if (getAreaCount() > 0) {
         hash = (37 * hash) + AREA_FIELD_NUMBER;
         hash = (53 * hash) + getAreaList().hashCode();
@@ -33495,17 +31001,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -33565,7 +31060,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -33573,7 +31067,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -33601,7 +31094,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_NormalModel_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_NormalModel_fieldAccessorTable
@@ -33625,7 +31117,6 @@
           getAreaFieldBuilder();
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         if (areaBuilder_ == null) {
@@ -33651,18 +31142,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_NormalModel_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel result = buildPartial();
         if (!result.isInitialized()) {
@@ -33671,12 +31159,12 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel(this);
         int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
         if (areaBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
             area_ = java.util.Collections.unmodifiableList(area_);
             bitField0_ = (bitField0_ & ~0x00000001);
           }
@@ -33691,43 +31179,37 @@
         result.hOverlap_ = hOverlap_;
         result.vOverlap_ = vOverlap_;
         result.mirror_ = mirror_;
+        result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel)other);
@@ -33786,17 +31268,14 @@
         if (other.getMirror() != 0) {
           setMirror(other.getMirror());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -33819,7 +31298,7 @@
       private java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData> area_ =
         java.util.Collections.emptyList();
       private void ensureAreaIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
           area_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData>(area_);
           bitField0_ |= 0x00000001;
          }
@@ -34120,7 +31599,7 @@
           areaBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder>(
                   area_,
-                  ((bitField0_ & 0x00000001) != 0),
+                  ((bitField0_ & 0x00000001) == 0x00000001),
                   getParentForChildren(),
                   isClean());
           area_ = null;
@@ -34134,10 +31613,8 @@
        *建模平台编号:1=瞰景,2=大势,默认1
        * </pre>
        *
-       * <code>uint32 serviceId = 2;</code>
-       * @return The serviceId.
+       * <code>optional uint32 serviceId = 2;</code>
        */
-      @java.lang.Override
       public int getServiceId() {
         return serviceId_;
       }
@@ -34146,9 +31623,7 @@
        *建模平台编号:1=瞰景,2=大势,默认1
        * </pre>
        *
-       * <code>uint32 serviceId = 2;</code>
-       * @param value The serviceId to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 serviceId = 2;</code>
        */
       public Builder setServiceId(int value) {
         
@@ -34161,8 +31636,7 @@
        *建模平台编号:1=瞰景,2=大势,默认1
        * </pre>
        *
-       * <code>uint32 serviceId = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 serviceId = 2;</code>
        */
       public Builder clearServiceId() {
         
@@ -34177,10 +31651,8 @@
        *相机编号
        * </pre>
        *
-       * <code>uint32 cameraId = 3;</code>
-       * @return The cameraId.
+       * <code>optional uint32 cameraId = 3;</code>
        */
-      @java.lang.Override
       public int getCameraId() {
         return cameraId_;
       }
@@ -34189,9 +31661,7 @@
        *相机编号
        * </pre>
        *
-       * <code>uint32 cameraId = 3;</code>
-       * @param value The cameraId to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 cameraId = 3;</code>
        */
       public Builder setCameraId(int value) {
         
@@ -34204,8 +31674,7 @@
        *相机编号
        * </pre>
        *
-       * <code>uint32 cameraId = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 cameraId = 3;</code>
        */
       public Builder clearCameraId() {
         
@@ -34220,10 +31689,8 @@
        *是否实时建模:0=不,1=是
        * </pre>
        *
-       * <code>uint32 isModeling = 4;</code>
-       * @return The isModeling.
+       * <code>optional uint32 isModeling = 4;</code>
        */
-      @java.lang.Override
       public int getIsModeling() {
         return isModeling_;
       }
@@ -34232,9 +31699,7 @@
        *是否实时建模:0=不,1=是
        * </pre>
        *
-       * <code>uint32 isModeling = 4;</code>
-       * @param value The isModeling to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isModeling = 4;</code>
        */
       public Builder setIsModeling(int value) {
         
@@ -34247,8 +31712,7 @@
        *是否实时建模:0=不,1=是
        * </pre>
        *
-       * <code>uint32 isModeling = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isModeling = 4;</code>
        */
       public Builder clearIsModeling() {
         
@@ -34263,10 +31727,8 @@
        *作业模式:1=倾斜,2=正摄
        * </pre>
        *
-       * <code>uint32 mode = 5;</code>
-       * @return The mode.
+       * <code>optional uint32 mode = 5;</code>
        */
-      @java.lang.Override
       public int getMode() {
         return mode_;
       }
@@ -34275,9 +31737,7 @@
        *作业模式:1=倾斜,2=正摄
        * </pre>
        *
-       * <code>uint32 mode = 5;</code>
-       * @param value The mode to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 mode = 5;</code>
        */
       public Builder setMode(int value) {
         
@@ -34290,8 +31750,7 @@
        *作业模式:1=倾斜,2=正摄
        * </pre>
        *
-       * <code>uint32 mode = 5;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 mode = 5;</code>
        */
       public Builder clearMode() {
         
@@ -34306,10 +31765,8 @@
        *横向重叠率
        * </pre>
        *
-       * <code>uint32 hOverlap = 6;</code>
-       * @return The hOverlap.
+       * <code>optional uint32 hOverlap = 6;</code>
        */
-      @java.lang.Override
       public int getHOverlap() {
         return hOverlap_;
       }
@@ -34318,9 +31775,7 @@
        *横向重叠率
        * </pre>
        *
-       * <code>uint32 hOverlap = 6;</code>
-       * @param value The hOverlap to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 hOverlap = 6;</code>
        */
       public Builder setHOverlap(int value) {
         
@@ -34333,8 +31788,7 @@
        *横向重叠率
        * </pre>
        *
-       * <code>uint32 hOverlap = 6;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 hOverlap = 6;</code>
        */
       public Builder clearHOverlap() {
         
@@ -34349,10 +31803,8 @@
        *纵向重叠率
        * </pre>
        *
-       * <code>uint32 vOverlap = 7;</code>
-       * @return The vOverlap.
+       * <code>optional uint32 vOverlap = 7;</code>
        */
-      @java.lang.Override
       public int getVOverlap() {
         return vOverlap_;
       }
@@ -34361,9 +31813,7 @@
        *纵向重叠率
        * </pre>
        *
-       * <code>uint32 vOverlap = 7;</code>
-       * @param value The vOverlap to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 vOverlap = 7;</code>
        */
       public Builder setVOverlap(int value) {
         
@@ -34376,8 +31826,7 @@
        *纵向重叠率
        * </pre>
        *
-       * <code>uint32 vOverlap = 7;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 vOverlap = 7;</code>
        */
       public Builder clearVOverlap() {
         
@@ -34392,10 +31841,8 @@
        *方向正反
        * </pre>
        *
-       * <code>uint32 mirror = 8;</code>
-       * @return The mirror.
+       * <code>optional uint32 mirror = 8;</code>
        */
-      @java.lang.Override
       public int getMirror() {
         return mirror_;
       }
@@ -34404,9 +31851,7 @@
        *方向正反
        * </pre>
        *
-       * <code>uint32 mirror = 8;</code>
-       * @param value The mirror to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 mirror = 8;</code>
        */
       public Builder setMirror(int value) {
         
@@ -34419,8 +31864,7 @@
        *方向正反
        * </pre>
        *
-       * <code>uint32 mirror = 8;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 mirror = 8;</code>
        */
       public Builder clearMirror() {
         
@@ -34428,16 +31872,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -34456,12 +31898,11 @@
 
     private static final com.google.protobuf.Parser<NormalModel>
         PARSER = new com.google.protobuf.AbstractParser<NormalModel>() {
-      @java.lang.Override
       public NormalModel parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new NormalModel(input, extensionRegistry);
+          return new NormalModel(input, extensionRegistry);
       }
     };
 
@@ -34474,7 +31915,6 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.NormalModel getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
@@ -34534,8 +31974,7 @@
      *建模平台编号:1=瞰景
      * </pre>
      *
-     * <code>uint32 serviceId = 2;</code>
-     * @return The serviceId.
+     * <code>optional uint32 serviceId = 2;</code>
      */
     int getServiceId();
 
@@ -34544,8 +31983,7 @@
      *相机编号
      * </pre>
      *
-     * <code>uint32 cameraId = 3;</code>
-     * @return The cameraId.
+     * <code>optional uint32 cameraId = 3;</code>
      */
     int getCameraId();
 
@@ -34554,8 +31992,7 @@
      *是否实时建模:0=不,1=是
      * </pre>
      *
-     * <code>uint32 isModeling = 4;</code>
-     * @return The isModeling.
+     * <code>optional uint32 isModeling = 4;</code>
      */
     int getIsModeling();
   }
@@ -34566,42 +32003,32 @@
    *
    * Protobuf type {@code SurroundModel}
    */
-  public static final class SurroundModel extends
+  public  static final class SurroundModel extends
       com.google.protobuf.GeneratedMessageV3 implements
       // @@protoc_insertion_point(message_implements:SurroundModel)
       SurroundModelOrBuilder {
-  private static final long serialVersionUID = 0L;
     // Use SurroundModel.newBuilder() to construct.
     private SurroundModel(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
       super(builder);
     }
     private SurroundModel() {
       area_ = java.util.Collections.emptyList();
-    }
-
-    @java.lang.Override
-    @SuppressWarnings({"unused"})
-    protected java.lang.Object newInstance(
-        UnusedPrivateParameter unused) {
-      return new SurroundModel();
+      serviceId_ = 0;
+      cameraId_ = 0;
+      isModeling_ = 0;
     }
 
     @java.lang.Override
     public final com.google.protobuf.UnknownFieldSet
     getUnknownFields() {
-      return this.unknownFields;
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
     }
     private SurroundModel(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       this();
-      if (extensionRegistry == null) {
-        throw new java.lang.NullPointerException();
-      }
       int mutable_bitField0_ = 0;
-      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
-          com.google.protobuf.UnknownFieldSet.newBuilder();
       try {
         boolean done = false;
         while (!done) {
@@ -34610,8 +32037,14 @@
             case 0:
               done = true;
               break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
             case 10: {
-              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                 area_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData>();
                 mutable_bitField0_ |= 0x00000001;
               }
@@ -34634,27 +32067,17 @@
               isModeling_ = input.readUInt32();
               break;
             }
-            default: {
-              if (!parseUnknownField(
-                  input, unknownFields, extensionRegistry, tag)) {
-                done = true;
-              }
-              break;
-            }
           }
         }
       } catch (com.google.protobuf.InvalidProtocolBufferException e) {
         throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
       } catch (java.io.IOException e) {
         throw new com.google.protobuf.InvalidProtocolBufferException(
             e).setUnfinishedMessage(this);
       } finally {
-        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
           area_ = java.util.Collections.unmodifiableList(area_);
         }
-        this.unknownFields = unknownFields.build();
         makeExtensionsImmutable();
       }
     }
@@ -34663,7 +32086,6 @@
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SurroundModel_descriptor;
     }
 
-    @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
       return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SurroundModel_fieldAccessorTable
@@ -34671,6 +32093,7 @@
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel.class, com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel.Builder.class);
     }
 
+    private int bitField0_;
     public static final int AREA_FIELD_NUMBER = 1;
     private java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData> area_;
     /**
@@ -34680,7 +32103,6 @@
      *
      * <code>repeated .PointData area = 1;</code>
      */
-    @java.lang.Override
     public java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData> getAreaList() {
       return area_;
     }
@@ -34691,7 +32113,6 @@
      *
      * <code>repeated .PointData area = 1;</code>
      */
-    @java.lang.Override
     public java.util.List<? extends com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder> 
         getAreaOrBuilderList() {
       return area_;
@@ -34703,7 +32124,6 @@
      *
      * <code>repeated .PointData area = 1;</code>
      */
-    @java.lang.Override
     public int getAreaCount() {
       return area_.size();
     }
@@ -34714,7 +32134,6 @@
      *
      * <code>repeated .PointData area = 1;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData getArea(int index) {
       return area_.get(index);
     }
@@ -34725,7 +32144,6 @@
      *
      * <code>repeated .PointData area = 1;</code>
      */
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder getAreaOrBuilder(
         int index) {
       return area_.get(index);
@@ -34738,10 +32156,8 @@
      *建模平台编号:1=瞰景
      * </pre>
      *
-     * <code>uint32 serviceId = 2;</code>
-     * @return The serviceId.
+     * <code>optional uint32 serviceId = 2;</code>
      */
-    @java.lang.Override
     public int getServiceId() {
       return serviceId_;
     }
@@ -34753,10 +32169,8 @@
      *相机编号
      * </pre>
      *
-     * <code>uint32 cameraId = 3;</code>
-     * @return The cameraId.
+     * <code>optional uint32 cameraId = 3;</code>
      */
-    @java.lang.Override
     public int getCameraId() {
       return cameraId_;
     }
@@ -34768,16 +32182,13 @@
      *是否实时建模:0=不,1=是
      * </pre>
      *
-     * <code>uint32 isModeling = 4;</code>
-     * @return The isModeling.
+     * <code>optional uint32 isModeling = 4;</code>
      */
-    @java.lang.Override
     public int getIsModeling() {
       return isModeling_;
     }
 
     private byte memoizedIsInitialized = -1;
-    @java.lang.Override
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized == 1) return true;
@@ -34787,7 +32198,6 @@
       return true;
     }
 
-    @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
       for (int i = 0; i < area_.size(); i++) {
@@ -34802,10 +32212,8 @@
       if (isModeling_ != 0) {
         output.writeUInt32(4, isModeling_);
       }
-      unknownFields.writeTo(output);
     }
 
-    @java.lang.Override
     public int getSerializedSize() {
       int size = memoizedSize;
       if (size != -1) return size;
@@ -34827,11 +32235,11 @@
         size += com.google.protobuf.CodedOutputStream
           .computeUInt32Size(4, isModeling_);
       }
-      size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
     }
 
+    private static final long serialVersionUID = 0L;
     @java.lang.Override
     public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
@@ -34842,16 +32250,16 @@
       }
       com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel) obj;
 
-      if (!getAreaList()
-          .equals(other.getAreaList())) return false;
-      if (getServiceId()
-          != other.getServiceId()) return false;
-      if (getCameraId()
-          != other.getCameraId()) return false;
-      if (getIsModeling()
-          != other.getIsModeling()) return false;
-      if (!unknownFields.equals(other.unknownFields)) return false;
-      return true;
+      boolean result = true;
+      result = result && getAreaList()
+          .equals(other.getAreaList());
+      result = result && (getServiceId()
+          == other.getServiceId());
+      result = result && (getCameraId()
+          == other.getCameraId());
+      result = result && (getIsModeling()
+          == other.getIsModeling());
+      return result;
     }
 
     @java.lang.Override
@@ -34860,7 +32268,7 @@
         return memoizedHashCode;
       }
       int hash = 41;
-      hash = (19 * hash) + getDescriptor().hashCode();
+      hash = (19 * hash) + getDescriptorForType().hashCode();
       if (getAreaCount() > 0) {
         hash = (37 * hash) + AREA_FIELD_NUMBER;
         hash = (53 * hash) + getAreaList().hashCode();
@@ -34876,17 +32284,6 @@
       return hash;
     }
 
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel parseFrom(
-        java.nio.ByteBuffer data)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data);
-    }
-    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel parseFrom(
-        java.nio.ByteBuffer data,
-        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
-        throws com.google.protobuf.InvalidProtocolBufferException {
-      return PARSER.parseFrom(data, extensionRegistry);
-    }
     public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -34946,7 +32343,6 @@
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
 
-    @java.lang.Override
     public Builder newBuilderForType() { return newBuilder(); }
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
@@ -34954,7 +32350,6 @@
     public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
-    @java.lang.Override
     public Builder toBuilder() {
       return this == DEFAULT_INSTANCE
           ? new Builder() : new Builder().mergeFrom(this);
@@ -34982,7 +32377,6 @@
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SurroundModel_descriptor;
       }
 
-      @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SurroundModel_fieldAccessorTable
@@ -35006,7 +32400,6 @@
           getAreaFieldBuilder();
         }
       }
-      @java.lang.Override
       public Builder clear() {
         super.clear();
         if (areaBuilder_ == null) {
@@ -35024,18 +32417,15 @@
         return this;
       }
 
-      @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_SurroundModel_descriptor;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel getDefaultInstanceForType() {
         return com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel.getDefaultInstance();
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel build() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel result = buildPartial();
         if (!result.isInitialized()) {
@@ -35044,12 +32434,12 @@
         return result;
       }
 
-      @java.lang.Override
       public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel buildPartial() {
         com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel(this);
         int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
         if (areaBuilder_ == null) {
-          if (((bitField0_ & 0x00000001) != 0)) {
+          if (((bitField0_ & 0x00000001) == 0x00000001)) {
             area_ = java.util.Collections.unmodifiableList(area_);
             bitField0_ = (bitField0_ & ~0x00000001);
           }
@@ -35060,43 +32450,37 @@
         result.serviceId_ = serviceId_;
         result.cameraId_ = cameraId_;
         result.isModeling_ = isModeling_;
+        result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
       }
 
-      @java.lang.Override
       public Builder clone() {
-        return super.clone();
+        return (Builder) super.clone();
       }
-      @java.lang.Override
       public Builder setField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.setField(field, value);
+          Object value) {
+        return (Builder) super.setField(field, value);
       }
-      @java.lang.Override
       public Builder clearField(
           com.google.protobuf.Descriptors.FieldDescriptor field) {
-        return super.clearField(field);
+        return (Builder) super.clearField(field);
       }
-      @java.lang.Override
       public Builder clearOneof(
           com.google.protobuf.Descriptors.OneofDescriptor oneof) {
-        return super.clearOneof(oneof);
+        return (Builder) super.clearOneof(oneof);
       }
-      @java.lang.Override
       public Builder setRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          int index, java.lang.Object value) {
-        return super.setRepeatedField(field, index, value);
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
       }
-      @java.lang.Override
       public Builder addRepeatedField(
           com.google.protobuf.Descriptors.FieldDescriptor field,
-          java.lang.Object value) {
-        return super.addRepeatedField(field, value);
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
       }
-      @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
         if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel) {
           return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel)other);
@@ -35143,17 +32527,14 @@
         if (other.getIsModeling() != 0) {
           setIsModeling(other.getIsModeling());
         }
-        this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
       }
 
-      @java.lang.Override
       public final boolean isInitialized() {
         return true;
       }
 
-      @java.lang.Override
       public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
@@ -35176,7 +32557,7 @@
       private java.util.List<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData> area_ =
         java.util.Collections.emptyList();
       private void ensureAreaIsMutable() {
-        if (!((bitField0_ & 0x00000001) != 0)) {
+        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
           area_ = new java.util.ArrayList<com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData>(area_);
           bitField0_ |= 0x00000001;
          }
@@ -35477,7 +32858,7 @@
           areaBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
               com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointData.Builder, com.ard.tianyu.netty.protobuf.TelemetryDataPB.PointDataOrBuilder>(
                   area_,
-                  ((bitField0_ & 0x00000001) != 0),
+                  ((bitField0_ & 0x00000001) == 0x00000001),
                   getParentForChildren(),
                   isClean());
           area_ = null;
@@ -35491,10 +32872,8 @@
        *建模平台编号:1=瞰景
        * </pre>
        *
-       * <code>uint32 serviceId = 2;</code>
-       * @return The serviceId.
+       * <code>optional uint32 serviceId = 2;</code>
        */
-      @java.lang.Override
       public int getServiceId() {
         return serviceId_;
       }
@@ -35503,9 +32882,7 @@
        *建模平台编号:1=瞰景
        * </pre>
        *
-       * <code>uint32 serviceId = 2;</code>
-       * @param value The serviceId to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 serviceId = 2;</code>
        */
       public Builder setServiceId(int value) {
         
@@ -35518,8 +32895,7 @@
        *建模平台编号:1=瞰景
        * </pre>
        *
-       * <code>uint32 serviceId = 2;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 serviceId = 2;</code>
        */
       public Builder clearServiceId() {
         
@@ -35534,10 +32910,8 @@
        *相机编号
        * </pre>
        *
-       * <code>uint32 cameraId = 3;</code>
-       * @return The cameraId.
+       * <code>optional uint32 cameraId = 3;</code>
        */
-      @java.lang.Override
       public int getCameraId() {
         return cameraId_;
       }
@@ -35546,9 +32920,7 @@
        *相机编号
        * </pre>
        *
-       * <code>uint32 cameraId = 3;</code>
-       * @param value The cameraId to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 cameraId = 3;</code>
        */
       public Builder setCameraId(int value) {
         
@@ -35561,8 +32933,7 @@
        *相机编号
        * </pre>
        *
-       * <code>uint32 cameraId = 3;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 cameraId = 3;</code>
        */
       public Builder clearCameraId() {
         
@@ -35577,10 +32948,8 @@
        *是否实时建模:0=不,1=是
        * </pre>
        *
-       * <code>uint32 isModeling = 4;</code>
-       * @return The isModeling.
+       * <code>optional uint32 isModeling = 4;</code>
        */
-      @java.lang.Override
       public int getIsModeling() {
         return isModeling_;
       }
@@ -35589,9 +32958,7 @@
        *是否实时建模:0=不,1=是
        * </pre>
        *
-       * <code>uint32 isModeling = 4;</code>
-       * @param value The isModeling to set.
-       * @return This builder for chaining.
+       * <code>optional uint32 isModeling = 4;</code>
        */
       public Builder setIsModeling(int value) {
         
@@ -35604,8 +32971,7 @@
        *是否实时建模:0=不,1=是
        * </pre>
        *
-       * <code>uint32 isModeling = 4;</code>
-       * @return This builder for chaining.
+       * <code>optional uint32 isModeling = 4;</code>
        */
       public Builder clearIsModeling() {
         
@@ -35613,16 +32979,14 @@
         onChanged();
         return this;
       }
-      @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.setUnknownFields(unknownFields);
+        return this;
       }
 
-      @java.lang.Override
       public final Builder mergeUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
-        return super.mergeUnknownFields(unknownFields);
+        return this;
       }
 
 
@@ -35641,12 +33005,11 @@
 
     private static final com.google.protobuf.Parser<SurroundModel>
         PARSER = new com.google.protobuf.AbstractParser<SurroundModel>() {
-      @java.lang.Override
       public SurroundModel parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SurroundModel(input, extensionRegistry);
+          return new SurroundModel(input, extensionRegistry);
       }
     };
 
@@ -35659,8 +33022,1502 @@
       return PARSER;
     }
 
-    @java.lang.Override
     public com.ard.tianyu.netty.protobuf.TelemetryDataPB.SurroundModel getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface UavInitInfoOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:UavInitInfo)
+      com.google.protobuf.MessageOrBuilder {
+
+    /**
+     * <pre>
+     *无人机型号
+     * </pre>
+     *
+     * <code>optional string uavModel = 1;</code>
+     */
+    java.lang.String getUavModel();
+    /**
+     * <pre>
+     *无人机型号
+     * </pre>
+     *
+     * <code>optional string uavModel = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getUavModelBytes();
+
+    /**
+     * <pre>
+     *无人机SN
+     * </pre>
+     *
+     * <code>optional string uavSn = 2;</code>
+     */
+    java.lang.String getUavSn();
+    /**
+     * <pre>
+     *无人机SN
+     * </pre>
+     *
+     * <code>optional string uavSn = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getUavSnBytes();
+
+    /**
+     * <pre>
+     *无人机固件版本号
+     * </pre>
+     *
+     * <code>optional string uavVersion = 3;</code>
+     */
+    java.lang.String getUavVersion();
+    /**
+     * <pre>
+     *无人机固件版本号
+     * </pre>
+     *
+     * <code>optional string uavVersion = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getUavVersionBytes();
+
+    /**
+     * <pre>
+     *挂载相机型号
+     * </pre>
+     *
+     * <code>optional string ptModel = 4;</code>
+     */
+    java.lang.String getPtModel();
+    /**
+     * <pre>
+     *挂载相机型号
+     * </pre>
+     *
+     * <code>optional string ptModel = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getPtModelBytes();
+
+    /**
+     * <pre>
+     *挂载相机固件版本号
+     * </pre>
+     *
+     * <code>optional string ptVersion = 5;</code>
+     */
+    java.lang.String getPtVersion();
+    /**
+     * <pre>
+     *挂载相机固件版本号
+     * </pre>
+     *
+     * <code>optional string ptVersion = 5;</code>
+     */
+    com.google.protobuf.ByteString
+        getPtVersionBytes();
+
+    /**
+     * <pre>
+     *挂载相机psdk日位置
+     * </pre>
+     *
+     * <code>optional uint32 ptPosition = 6;</code>
+     */
+    int getPtPosition();
+
+    /**
+     * <pre>
+     *模组固件版本号
+     * </pre>
+     *
+     * <code>optional string moduleVersion = 7;</code>
+     */
+    java.lang.String getModuleVersion();
+    /**
+     * <pre>
+     *模组固件版本号
+     * </pre>
+     *
+     * <code>optional string moduleVersion = 7;</code>
+     */
+    com.google.protobuf.ByteString
+        getModuleVersionBytes();
+  }
+  /**
+   * <pre>
+   *无人机初始化详情
+   * </pre>
+   *
+   * Protobuf type {@code UavInitInfo}
+   */
+  public  static final class UavInitInfo extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:UavInitInfo)
+      UavInitInfoOrBuilder {
+    // Use UavInitInfo.newBuilder() to construct.
+    private UavInitInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+      super(builder);
+    }
+    private UavInitInfo() {
+      uavModel_ = "";
+      uavSn_ = "";
+      uavVersion_ = "";
+      ptModel_ = "";
+      ptVersion_ = "";
+      ptPosition_ = 0;
+      moduleVersion_ = "";
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
+    }
+    private UavInitInfo(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      int mutable_bitField0_ = 0;
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!input.skipField(tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              uavModel_ = s;
+              break;
+            }
+            case 18: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              uavSn_ = s;
+              break;
+            }
+            case 26: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              uavVersion_ = s;
+              break;
+            }
+            case 34: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              ptModel_ = s;
+              break;
+            }
+            case 42: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              ptVersion_ = s;
+              break;
+            }
+            case 48: {
+
+              ptPosition_ = input.readUInt32();
+              break;
+            }
+            case 58: {
+              java.lang.String s = input.readStringRequireUtf8();
+
+              moduleVersion_ = s;
+              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 {
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_UavInitInfo_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_UavInitInfo_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo.class, com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo.Builder.class);
+    }
+
+    public static final int UAVMODEL_FIELD_NUMBER = 1;
+    private volatile java.lang.Object uavModel_;
+    /**
+     * <pre>
+     *无人机型号
+     * </pre>
+     *
+     * <code>optional string uavModel = 1;</code>
+     */
+    public java.lang.String getUavModel() {
+      java.lang.Object ref = uavModel_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        uavModel_ = s;
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     *无人机型号
+     * </pre>
+     *
+     * <code>optional string uavModel = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getUavModelBytes() {
+      java.lang.Object ref = uavModel_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        uavModel_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int UAVSN_FIELD_NUMBER = 2;
+    private volatile java.lang.Object uavSn_;
+    /**
+     * <pre>
+     *无人机SN
+     * </pre>
+     *
+     * <code>optional string uavSn = 2;</code>
+     */
+    public java.lang.String getUavSn() {
+      java.lang.Object ref = uavSn_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        uavSn_ = s;
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     *无人机SN
+     * </pre>
+     *
+     * <code>optional string uavSn = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getUavSnBytes() {
+      java.lang.Object ref = uavSn_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        uavSn_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int UAVVERSION_FIELD_NUMBER = 3;
+    private volatile java.lang.Object uavVersion_;
+    /**
+     * <pre>
+     *无人机固件版本号
+     * </pre>
+     *
+     * <code>optional string uavVersion = 3;</code>
+     */
+    public java.lang.String getUavVersion() {
+      java.lang.Object ref = uavVersion_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        uavVersion_ = s;
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     *无人机固件版本号
+     * </pre>
+     *
+     * <code>optional string uavVersion = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getUavVersionBytes() {
+      java.lang.Object ref = uavVersion_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        uavVersion_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int PTMODEL_FIELD_NUMBER = 4;
+    private volatile java.lang.Object ptModel_;
+    /**
+     * <pre>
+     *挂载相机型号
+     * </pre>
+     *
+     * <code>optional string ptModel = 4;</code>
+     */
+    public java.lang.String getPtModel() {
+      java.lang.Object ref = ptModel_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        ptModel_ = s;
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     *挂载相机型号
+     * </pre>
+     *
+     * <code>optional string ptModel = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPtModelBytes() {
+      java.lang.Object ref = ptModel_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        ptModel_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int PTVERSION_FIELD_NUMBER = 5;
+    private volatile java.lang.Object ptVersion_;
+    /**
+     * <pre>
+     *挂载相机固件版本号
+     * </pre>
+     *
+     * <code>optional string ptVersion = 5;</code>
+     */
+    public java.lang.String getPtVersion() {
+      java.lang.Object ref = ptVersion_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        ptVersion_ = s;
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     *挂载相机固件版本号
+     * </pre>
+     *
+     * <code>optional string ptVersion = 5;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPtVersionBytes() {
+      java.lang.Object ref = ptVersion_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        ptVersion_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    public static final int PTPOSITION_FIELD_NUMBER = 6;
+    private int ptPosition_;
+    /**
+     * <pre>
+     *挂载相机psdk日位置
+     * </pre>
+     *
+     * <code>optional uint32 ptPosition = 6;</code>
+     */
+    public int getPtPosition() {
+      return ptPosition_;
+    }
+
+    public static final int MODULEVERSION_FIELD_NUMBER = 7;
+    private volatile java.lang.Object moduleVersion_;
+    /**
+     * <pre>
+     *模组固件版本号
+     * </pre>
+     *
+     * <code>optional string moduleVersion = 7;</code>
+     */
+    public java.lang.String getModuleVersion() {
+      java.lang.Object ref = moduleVersion_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        moduleVersion_ = s;
+        return s;
+      }
+    }
+    /**
+     * <pre>
+     *模组固件版本号
+     * </pre>
+     *
+     * <code>optional string moduleVersion = 7;</code>
+     */
+    public com.google.protobuf.ByteString
+        getModuleVersionBytes() {
+      java.lang.Object ref = moduleVersion_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        moduleVersion_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      if (!getUavModelBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, uavModel_);
+      }
+      if (!getUavSnBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, uavSn_);
+      }
+      if (!getUavVersionBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, uavVersion_);
+      }
+      if (!getPtModelBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, ptModel_);
+      }
+      if (!getPtVersionBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, ptVersion_);
+      }
+      if (ptPosition_ != 0) {
+        output.writeUInt32(6, ptPosition_);
+      }
+      if (!getModuleVersionBytes().isEmpty()) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, moduleVersion_);
+      }
+    }
+
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (!getUavModelBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, uavModel_);
+      }
+      if (!getUavSnBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, uavSn_);
+      }
+      if (!getUavVersionBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, uavVersion_);
+      }
+      if (!getPtModelBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, ptModel_);
+      }
+      if (!getPtVersionBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, ptVersion_);
+      }
+      if (ptPosition_ != 0) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeUInt32Size(6, ptPosition_);
+      }
+      if (!getModuleVersionBytes().isEmpty()) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, moduleVersion_);
+      }
+      memoizedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo)) {
+        return super.equals(obj);
+      }
+      com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo other = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo) obj;
+
+      boolean result = true;
+      result = result && getUavModel()
+          .equals(other.getUavModel());
+      result = result && getUavSn()
+          .equals(other.getUavSn());
+      result = result && getUavVersion()
+          .equals(other.getUavVersion());
+      result = result && getPtModel()
+          .equals(other.getPtModel());
+      result = result && getPtVersion()
+          .equals(other.getPtVersion());
+      result = result && (getPtPosition()
+          == other.getPtPosition());
+      result = result && getModuleVersion()
+          .equals(other.getModuleVersion());
+      return result;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptorForType().hashCode();
+      hash = (37 * hash) + UAVMODEL_FIELD_NUMBER;
+      hash = (53 * hash) + getUavModel().hashCode();
+      hash = (37 * hash) + UAVSN_FIELD_NUMBER;
+      hash = (53 * hash) + getUavSn().hashCode();
+      hash = (37 * hash) + UAVVERSION_FIELD_NUMBER;
+      hash = (53 * hash) + getUavVersion().hashCode();
+      hash = (37 * hash) + PTMODEL_FIELD_NUMBER;
+      hash = (53 * hash) + getPtModel().hashCode();
+      hash = (37 * hash) + PTVERSION_FIELD_NUMBER;
+      hash = (53 * hash) + getPtVersion().hashCode();
+      hash = (37 * hash) + PTPOSITION_FIELD_NUMBER;
+      hash = (53 * hash) + getPtPosition();
+      hash = (37 * hash) + MODULEVERSION_FIELD_NUMBER;
+      hash = (53 * hash) + getModuleVersion().hashCode();
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo 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 com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo 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 com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * <pre>
+     *无人机初始化详情
+     * </pre>
+     *
+     * Protobuf type {@code UavInitInfo}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+        // @@protoc_insertion_point(builder_implements:UavInitInfo)
+        com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_UavInitInfo_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_UavInitInfo_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo.class, com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo.Builder.class);
+      }
+
+      // Construct using com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+        }
+      }
+      public Builder clear() {
+        super.clear();
+        uavModel_ = "";
+
+        uavSn_ = "";
+
+        uavVersion_ = "";
+
+        ptModel_ = "";
+
+        ptVersion_ = "";
+
+        ptPosition_ = 0;
+
+        moduleVersion_ = "";
+
+        return this;
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return com.ard.tianyu.netty.protobuf.TelemetryDataPB.internal_static_UavInitInfo_descriptor;
+      }
+
+      public com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo getDefaultInstanceForType() {
+        return com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo.getDefaultInstance();
+      }
+
+      public com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo build() {
+        com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo buildPartial() {
+        com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo result = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo(this);
+        result.uavModel_ = uavModel_;
+        result.uavSn_ = uavSn_;
+        result.uavVersion_ = uavVersion_;
+        result.ptModel_ = ptModel_;
+        result.ptVersion_ = ptVersion_;
+        result.ptPosition_ = ptPosition_;
+        result.moduleVersion_ = moduleVersion_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder clone() {
+        return (Builder) super.clone();
+      }
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          Object value) {
+        return (Builder) super.setField(field, value);
+      }
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return (Builder) super.clearField(field);
+      }
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return (Builder) super.clearOneof(oneof);
+      }
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, Object value) {
+        return (Builder) super.setRepeatedField(field, index, value);
+      }
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          Object value) {
+        return (Builder) super.addRepeatedField(field, value);
+      }
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo) {
+          return mergeFrom((com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo other) {
+        if (other == com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo.getDefaultInstance()) return this;
+        if (!other.getUavModel().isEmpty()) {
+          uavModel_ = other.uavModel_;
+          onChanged();
+        }
+        if (!other.getUavSn().isEmpty()) {
+          uavSn_ = other.uavSn_;
+          onChanged();
+        }
+        if (!other.getUavVersion().isEmpty()) {
+          uavVersion_ = other.uavVersion_;
+          onChanged();
+        }
+        if (!other.getPtModel().isEmpty()) {
+          ptModel_ = other.ptModel_;
+          onChanged();
+        }
+        if (!other.getPtVersion().isEmpty()) {
+          ptVersion_ = other.ptVersion_;
+          onChanged();
+        }
+        if (other.getPtPosition() != 0) {
+          setPtPosition(other.getPtPosition());
+        }
+        if (!other.getModuleVersion().isEmpty()) {
+          moduleVersion_ = other.moduleVersion_;
+          onChanged();
+        }
+        onChanged();
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+
+      private java.lang.Object uavModel_ = "";
+      /**
+       * <pre>
+       *无人机型号
+       * </pre>
+       *
+       * <code>optional string uavModel = 1;</code>
+       */
+      public java.lang.String getUavModel() {
+        java.lang.Object ref = uavModel_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          uavModel_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       *无人机型号
+       * </pre>
+       *
+       * <code>optional string uavModel = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getUavModelBytes() {
+        java.lang.Object ref = uavModel_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          uavModel_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       *无人机型号
+       * </pre>
+       *
+       * <code>optional string uavModel = 1;</code>
+       */
+      public Builder setUavModel(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        uavModel_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *无人机型号
+       * </pre>
+       *
+       * <code>optional string uavModel = 1;</code>
+       */
+      public Builder clearUavModel() {
+        
+        uavModel_ = getDefaultInstance().getUavModel();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *无人机型号
+       * </pre>
+       *
+       * <code>optional string uavModel = 1;</code>
+       */
+      public Builder setUavModelBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        uavModel_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object uavSn_ = "";
+      /**
+       * <pre>
+       *无人机SN
+       * </pre>
+       *
+       * <code>optional string uavSn = 2;</code>
+       */
+      public java.lang.String getUavSn() {
+        java.lang.Object ref = uavSn_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          uavSn_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       *无人机SN
+       * </pre>
+       *
+       * <code>optional string uavSn = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getUavSnBytes() {
+        java.lang.Object ref = uavSn_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          uavSn_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       *无人机SN
+       * </pre>
+       *
+       * <code>optional string uavSn = 2;</code>
+       */
+      public Builder setUavSn(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        uavSn_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *无人机SN
+       * </pre>
+       *
+       * <code>optional string uavSn = 2;</code>
+       */
+      public Builder clearUavSn() {
+        
+        uavSn_ = getDefaultInstance().getUavSn();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *无人机SN
+       * </pre>
+       *
+       * <code>optional string uavSn = 2;</code>
+       */
+      public Builder setUavSnBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        uavSn_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object uavVersion_ = "";
+      /**
+       * <pre>
+       *无人机固件版本号
+       * </pre>
+       *
+       * <code>optional string uavVersion = 3;</code>
+       */
+      public java.lang.String getUavVersion() {
+        java.lang.Object ref = uavVersion_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          uavVersion_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       *无人机固件版本号
+       * </pre>
+       *
+       * <code>optional string uavVersion = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getUavVersionBytes() {
+        java.lang.Object ref = uavVersion_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          uavVersion_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       *无人机固件版本号
+       * </pre>
+       *
+       * <code>optional string uavVersion = 3;</code>
+       */
+      public Builder setUavVersion(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        uavVersion_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *无人机固件版本号
+       * </pre>
+       *
+       * <code>optional string uavVersion = 3;</code>
+       */
+      public Builder clearUavVersion() {
+        
+        uavVersion_ = getDefaultInstance().getUavVersion();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *无人机固件版本号
+       * </pre>
+       *
+       * <code>optional string uavVersion = 3;</code>
+       */
+      public Builder setUavVersionBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        uavVersion_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object ptModel_ = "";
+      /**
+       * <pre>
+       *挂载相机型号
+       * </pre>
+       *
+       * <code>optional string ptModel = 4;</code>
+       */
+      public java.lang.String getPtModel() {
+        java.lang.Object ref = ptModel_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          ptModel_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       *挂载相机型号
+       * </pre>
+       *
+       * <code>optional string ptModel = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getPtModelBytes() {
+        java.lang.Object ref = ptModel_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          ptModel_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       *挂载相机型号
+       * </pre>
+       *
+       * <code>optional string ptModel = 4;</code>
+       */
+      public Builder setPtModel(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        ptModel_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *挂载相机型号
+       * </pre>
+       *
+       * <code>optional string ptModel = 4;</code>
+       */
+      public Builder clearPtModel() {
+        
+        ptModel_ = getDefaultInstance().getPtModel();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *挂载相机型号
+       * </pre>
+       *
+       * <code>optional string ptModel = 4;</code>
+       */
+      public Builder setPtModelBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        ptModel_ = value;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object ptVersion_ = "";
+      /**
+       * <pre>
+       *挂载相机固件版本号
+       * </pre>
+       *
+       * <code>optional string ptVersion = 5;</code>
+       */
+      public java.lang.String getPtVersion() {
+        java.lang.Object ref = ptVersion_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          ptVersion_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       *挂载相机固件版本号
+       * </pre>
+       *
+       * <code>optional string ptVersion = 5;</code>
+       */
+      public com.google.protobuf.ByteString
+          getPtVersionBytes() {
+        java.lang.Object ref = ptVersion_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          ptVersion_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       *挂载相机固件版本号
+       * </pre>
+       *
+       * <code>optional string ptVersion = 5;</code>
+       */
+      public Builder setPtVersion(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        ptVersion_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *挂载相机固件版本号
+       * </pre>
+       *
+       * <code>optional string ptVersion = 5;</code>
+       */
+      public Builder clearPtVersion() {
+        
+        ptVersion_ = getDefaultInstance().getPtVersion();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *挂载相机固件版本号
+       * </pre>
+       *
+       * <code>optional string ptVersion = 5;</code>
+       */
+      public Builder setPtVersionBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        ptVersion_ = value;
+        onChanged();
+        return this;
+      }
+
+      private int ptPosition_ ;
+      /**
+       * <pre>
+       *挂载相机psdk日位置
+       * </pre>
+       *
+       * <code>optional uint32 ptPosition = 6;</code>
+       */
+      public int getPtPosition() {
+        return ptPosition_;
+      }
+      /**
+       * <pre>
+       *挂载相机psdk日位置
+       * </pre>
+       *
+       * <code>optional uint32 ptPosition = 6;</code>
+       */
+      public Builder setPtPosition(int value) {
+        
+        ptPosition_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *挂载相机psdk日位置
+       * </pre>
+       *
+       * <code>optional uint32 ptPosition = 6;</code>
+       */
+      public Builder clearPtPosition() {
+        
+        ptPosition_ = 0;
+        onChanged();
+        return this;
+      }
+
+      private java.lang.Object moduleVersion_ = "";
+      /**
+       * <pre>
+       *模组固件版本号
+       * </pre>
+       *
+       * <code>optional string moduleVersion = 7;</code>
+       */
+      public java.lang.String getModuleVersion() {
+        java.lang.Object ref = moduleVersion_;
+        if (!(ref instanceof java.lang.String)) {
+          com.google.protobuf.ByteString bs =
+              (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          moduleVersion_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <pre>
+       *模组固件版本号
+       * </pre>
+       *
+       * <code>optional string moduleVersion = 7;</code>
+       */
+      public com.google.protobuf.ByteString
+          getModuleVersionBytes() {
+        java.lang.Object ref = moduleVersion_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          moduleVersion_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <pre>
+       *模组固件版本号
+       * </pre>
+       *
+       * <code>optional string moduleVersion = 7;</code>
+       */
+      public Builder setModuleVersion(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  
+        moduleVersion_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *模组固件版本号
+       * </pre>
+       *
+       * <code>optional string moduleVersion = 7;</code>
+       */
+      public Builder clearModuleVersion() {
+        
+        moduleVersion_ = getDefaultInstance().getModuleVersion();
+        onChanged();
+        return this;
+      }
+      /**
+       * <pre>
+       *模组固件版本号
+       * </pre>
+       *
+       * <code>optional string moduleVersion = 7;</code>
+       */
+      public Builder setModuleVersionBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  checkByteStringIsUtf8(value);
+        
+        moduleVersion_ = value;
+        onChanged();
+        return this;
+      }
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return this;
+      }
+
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return this;
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:UavInitInfo)
+    }
+
+    // @@protoc_insertion_point(class_scope:UavInitInfo)
+    private static final com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo();
+    }
+
+    public static com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser<UavInitInfo>
+        PARSER = new com.google.protobuf.AbstractParser<UavInitInfo>() {
+      public UavInitInfo parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+          return new UavInitInfo(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser<UavInitInfo> parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<UavInitInfo> getParserForType() {
+      return PARSER;
+    }
+
+    public com.ard.tianyu.netty.protobuf.TelemetryDataPB.UavInitInfo getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -35761,6 +34618,11 @@
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_SurroundModel_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_UavInitInfo_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_UavInitInfo_fieldAccessorTable;
 
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
@@ -35770,129 +34632,140 @@
       descriptor;
   static {
     java.lang.String[] descriptorData = {
-      "\n\032TelemetryDataBuf-new.proto\"\336\004\n\rTelemet" +
-      "ryData\022\013\n\003lng\030\001 \001(\001\022\013\n\003lat\030\002 \001(\001\022\020\n\010alti" +
-      "tude\030\003 \001(\002\022\022\n\nultrasonic\030\004 \001(\002\022\r\n\005pitch\030" +
-      "\005 \001(\002\022\014\n\004roll\030\006 \001(\002\022\013\n\003yaw\030\007 \001(\002\022\020\n\010airs" +
-      "peed\030\010 \001(\002\022\020\n\010velocity\030\t \001(\002\022\021\n\ttimestam" +
-      "p\030\n \001(\004\022\017\n\007ptpitch\030\013 \001(\002\022\016\n\006ptroll\030\014 \001(\002" +
-      "\022\r\n\005ptyaw\030\r \001(\002\022\022\n\nzoomfactor\030\016 \001(\002\022\r\n\005b" +
-      "oxSn\030\017 \001(\t\022\024\n\014batteryPower\030\020 \001(\t\022\026\n\016sate" +
-      "lliteCount\030\021 \001(\r\022\016\n\006taskId\030\022 \001(\004\022\016\n\006rtkL" +
-      "ng\030\023 \001(\001\022\016\n\006rtkLat\030\024 \001(\001\022\017\n\007rtkHFSL\030\025 \001(" +
-      "\002\022\027\n\017rtkPositionInfo\030\026 \001(\r\022\023\n\013airFlyTime" +
-      "s\030\027 \001(\r\022\026\n\016airFlyDistance\030\030 \001(\002\022\r\n\005uavSn" +
-      "\030\031 \001(\t\022\020\n\010uavModel\030\032 \001(\t\022\021\n\thomeRange\030\033 " +
-      "\001(\002\022\022\n\nflightMode\030\034 \001(\r\022\026\n\016targetDistanc" +
-      "e\030\035 \001(\002\022\026\n\016predictFlyTime\030\036 \001(\r\022\025\n\rultra" +
-      "sonicMax\030\037 \001(\002\022\025\n\rultrasonicMin\030  \001(\002\"6\n" +
-      "\rTelemetryList\022%\n\rtelemetryList\030\001 \003(\0132\016." +
-      "TelemetryData\"\271\004\n\nSignalInfo\022\014\n\004mode\030\001 \001" +
-      "(\t\022\013\n\003mcc\030\002 \001(\t\022\013\n\003mnc\030\003 \001(\t\022\016\n\006cellid\030\004" +
-      " \001(\t\022\014\n\004pcid\030\005 \001(\t\022\013\n\003tac\030\006 \001(\t\022\r\n\005arfcn" +
-      "\030\007 \001(\t\022\014\n\004band\030\010 \001(\t\022\027\n\017nr_dl_bandwidth\030" +
-      "\t \001(\t\022\014\n\004rsrp\030\n \001(\t\022\014\n\004rsrq\030\013 \001(\t\022\014\n\004sin" +
-      "r\030\014 \001(\t\022\020\n\010tx_power\030\r \001(\t\022\016\n\006srxlev\030\016 \001(" +
-      "\t\022\013\n\003cqi\030\017 \001(\t\022\016\n\006earfcn\030\020 \001(\t\022\025\n\rfreq_b" +
-      "and_ind\030\021 \001(\t\022\024\n\014ul_bandwidth\030\022 \001(\t\022\024\n\014d" +
-      "l_bandwidth\030\023 \001(\t\022\016\n\006is_tdd\030\024 \001(\t\022\014\n\004rss" +
-      "i\030\025 \001(\t\022\023\n\013duplex_mode\030\026 \001(\t\022\013\n\003lng\030\027 \001(" +
-      "\001\022\013\n\003lat\030\030 \001(\001\022\016\n\006height\030\031 \001(\002\022\021\n\ttimest" +
-      "amp\030\032 \001(\r\022\020\n\010boxstate\030\033 \001(\r\022\013\n\003isp\030\034 \001(\t" +
-      "\022\017\n\007tempMax\030\035 \001(\r\022\020\n\010prx_rsrp\030\036 \001(\t\022\020\n\010d" +
-      "rx_rsrp\030\037 \001(\t\022\020\n\010rx2_rsrp\030  \001(\t\022\020\n\010rx3_r" +
-      "srp\030! \001(\t\022\016\n\006box_sn\030\" \001(\t\"-\n\nSignalList\022" +
-      "\037\n\nsignalInfo\030\001 \003(\0132\013.SignalInfo\"\246\002\n\010Uav" +
-      "State\0225\n\025flightControllerState\030\001 \001(\0132\026.F" +
-      "lightControllerState\022#\n\014batteryState\030\002 \001" +
-      "(\0132\r.BatteryState\022\033\n\010ptzState\030\003 \001(\0132\t.Pt" +
-      "zState\022!\n\013cameraState\030\004 \001(\0132\014.CameraStat" +
-      "e\022#\n\014missionState\030\005 \001(\0132\r.MissionState\022\r" +
-      "\n\005boxSn\030\006 \001(\t\022%\n\ravoidanceData\030\007 \001(\0132\016.A" +
-      "voidanceData\022#\n\014hmsAlarmData\030\010 \003(\0132\r.Hms" +
-      "AlarmData\"\340\002\n\025FlightControllerState\022\026\n\016s" +
-      "atelliteCount\030\001 \001(\r\022\026\n\016gpsSignalLevel\030\002 " +
-      "\001(\r\022\022\n\nflightMode\030\003 \001(\r\022\024\n\014flightStatus\030" +
-      "\004 \001(\r\022\036\n\nstartPoint\030\005 \001(\0132\n.PointData\022\035\n" +
-      "\thomePoint\030\006 \001(\0132\n.PointData\022\022\n\nhomeHeig" +
-      "ht\030\007 \001(\005\022\020\n\010safeLine\030\010 \001(\r\022\024\n\014deviceStat" +
-      "us\030\t \001(\r\022\024\n\014uwbNodeCount\030\n \001(\r\022\016\n\006rcMode" +
-      "\030\013 \001(\t\022\033\n\023isEmergencyBrakeing\030\014 \001(\r\022\026\n\016o" +
-      "utFlyAreaFlag\030\r \001(\r\022\027\n\017inNoFlyAreaFlag\030\016" +
-      " \001(\r\"\253\001\n\014BatteryState\022\022\n\nbatteryNum\030\001 \001(" +
-      "\r\022\024\n\014batteryPower\030\002 \001(\t\022\026\n\016batteryVoltag" +
-      "e\030\003 \001(\t\022+\n\020firstBatteryInfo\030\004 \001(\0132\021.Batt" +
-      "eryStateInfo\022,\n\021secondBatteryInfo\030\005 \001(\0132" +
-      "\021.BatteryStateInfo\"\271\002\n\020BatteryStateInfo\022" +
-      "\026\n\016isBatteryEmbed\030\001 \001(\r\022\036\n\026batteryCapaci" +
-      "tyPercent\030\002 \001(\r\022\026\n\016currentVoltage\030\003 \001(\005\022" +
-      "\027\n\017currentElectric\030\004 \001(\005\022\024\n\014fullCapacity" +
-      "\030\005 \001(\r\022\030\n\020remainedCapacity\030\006 \001(\r\022\032\n\022batt" +
-      "eryTemperature\030\007 \001(\002\022\021\n\tcellCount\030\010 \001(\r\022" +
-      "\023\n\013batSOHState\030\t \001(\r\022\013\n\003sop\030\n \001(\r\022\021\n\thea" +
-      "tState\030\013 \001(\r\022\020\n\010socState\030\014 \001(\r\022\026\n\016selfCh" +
-      "eckError\030\r \001(\r\"H\n\010PtzState\022\r\n\005pitch\030\001 \001(" +
-      "\002\022\014\n\004roll\030\002 \001(\002\022\013\n\003yaw\030\003 \001(\002\022\022\n\ngimbalMo" +
-      "de\030\004 \001(\r\"\220\002\n\013CameraState\022\014\n\004mode\030\001 \001(\r\022\023" +
-      "\n\013isRecording\030\002 \001(\r\022\026\n\016recordDuration\030\003 " +
-      "\001(\r\022\016\n\006source\030\004 \001(\r\022\016\n\006camera\030\005 \001(\r\022\022\n\nz" +
-      "oomfactor\030\006 \001(\002\022\r\n\005width\030\007 \001(\r\022\016\n\006height" +
-      "\030\010 \001(\r\022\021\n\tframeRate\030\t \001(\r\022\021\n\tbitstream\030\n" +
-      " \001(\r\022\033\n\023pointThermometrying\030\013 \001(\r\022\032\n\022are" +
-      "aThermometrying\030\014 \001(\r\022\024\n\014laserRanging\030\r " +
-      "\001(\r\"\277\002\n\014MissionState\022\017\n\007isPause\030\001 \001(\r\022\033\n" +
-      "\023targetWaypointIndex\030\002 \001(\r\022\032\n\022isWaypoint" +
-      "Finished\030\003 \001(\r\022\021\n\tpushVideo\030\004 \001(\r\022\016\n\006loc" +
-      "k4g\030\005 \001(\r\022\020\n\010boxModel\030\006 \001(\r\022\017\n\007mapPlay\030\007" +
-      " \001(\r\022\022\n\nloseAction\030\010 \001(\r\022\026\n\016isPointContr" +
-      "ol\030\t \001(\r\022\024\n\014isUwbLanding\030\n \001(\r\022\026\n\016isPush" +
-      "Videoing\030\013 \001(\r\022\022\n\nisDLanding\030\014 \001(\r\022\026\n\016pe" +
-      "rceptionFlag\030\r \001(\r\022\031\n\021isPositionControl\030" +
-      "\016 \001(\r\"\310\002\n\rAvoidanceData\022\022\n\ndownHealth\030\001 " +
-      "\001(\r\022\014\n\004down\030\002 \001(\002\022\023\n\013frontHealth\030\003 \001(\r\022\r" +
-      "\n\005front\030\004 \001(\002\022\023\n\013rightHealth\030\005 \001(\r\022\r\n\005ri" +
-      "ght\030\006 \001(\002\022\022\n\nbackHealth\030\007 \001(\r\022\014\n\004back\030\010 " +
-      "\001(\002\022\022\n\nleftHealth\030\t \001(\r\022\014\n\004left\030\n \001(\002\022\020\n" +
-      "\010upHealth\030\013 \001(\r\022\n\n\002up\030\014 \001(\002\022!\n\031avoidance" +
-      "EnableStatusDown\030\r \001(\r\022\037\n\027avoidanceEnabl" +
-      "eStatusUp\030\016 \001(\r\022\'\n\037avoidanceEnableStatus" +
-      "Horizontal\030\017 \001(\r\"J\n\014HmsAlarmData\022\017\n\007alar" +
-      "mId\030\001 \001(\r\022\023\n\013reportLevel\030\002 \001(\r\022\024\n\014alarmM" +
-      "ssInfo\030\003 \001(\t\"\366\002\n\014PlanLineData\022\026\n\016finishe" +
-      "dAction\030\001 \001(\r\022\020\n\010maxSpeed\030\002 \001(\002\022\021\n\tautoS" +
-      "peed\030\003 \001(\002\022\032\n\006points\030\004 \003(\0132\n.PointData\022\022" +
-      "\n\nloseAction\030\005 \001(\r\022\022\n\nhomeHeight\030\006 \001(\r\022\030" +
-      "\n\020isSaveEnergyMode\030\007 \001(\r\022\037\n\ttakePoint\030\010 " +
-      "\001(\0132\014.HangarPoint\022\037\n\tlandPoint\030\t \001(\0132\014.H" +
-      "angarPoint\022\035\n\tinterests\030\n \003(\0132\n.PointDat" +
-      "a\022!\n\013normalModel\030\013 \001(\0132\014.NormalModel\022%\n\r" +
-      "surroundModel\030\014 \001(\0132\016.SurroundModel\022 \n\014t" +
-      "akeOffPoint\030\r \001(\0132\n.PointData\"\375\001\n\tPointD" +
-      "ata\022\013\n\003lng\030\001 \001(\001\022\013\n\003lat\030\002 \001(\001\022\016\n\006height\030" +
-      "\003 \001(\002\022\r\n\005speed\030\004 \001(\002\022\035\n\007actions\030\005 \003(\0132\014." +
-      "PointAction\022\026\n\016flightPathMode\030\006 \001(\r\022\027\n\017d" +
-      "ampingDistance\030\007 \001(\002\022\026\n\016safeGohomeFlag\030\010" +
-      " \001(\r\022\023\n\013headingMode\030\t \001(\r\022\017\n\007heading\030\n \001" +
-      "(\002\022\025\n\rinterestIndex\030\013 \001(\005\022\022\n\ngroupIndex\030" +
-      "\014 \001(\r\"O\n\013PointAction\022\014\n\004type\030\001 \001(\r\022\r\n\005pa" +
-      "ram\030\002 \001(\002\022\020\n\010waitTime\030\003 \001(\005\022\021\n\tspeakInfo" +
-      "\030\004 \001(\t\"q\n\013HangarPoint\022\020\n\010hangarId\030\001 \001(\t\022" +
-      "\021\n\thangarLng\030\002 \001(\001\022\021\n\thangarLat\030\003 \001(\001\022\024\n" +
-      "\014alternateLng\030\004 \001(\001\022\024\n\014alternateLat\030\005 \001(" +
-      "\001\"\242\001\n\013NormalModel\022\030\n\004area\030\001 \003(\0132\n.PointD" +
-      "ata\022\021\n\tserviceId\030\002 \001(\r\022\020\n\010cameraId\030\003 \001(\r" +
-      "\022\022\n\nisModeling\030\004 \001(\r\022\014\n\004mode\030\005 \001(\r\022\020\n\010hO" +
-      "verlap\030\006 \001(\r\022\020\n\010vOverlap\030\007 \001(\r\022\016\n\006mirror" +
-      "\030\010 \001(\r\"b\n\rSurroundModel\022\030\n\004area\030\001 \003(\0132\n." +
-      "PointData\022\021\n\tserviceId\030\002 \001(\r\022\020\n\010cameraId" +
-      "\030\003 \001(\r\022\022\n\nisModeling\030\004 \001(\rB.\n\033com.dji.ar" +
-      "d.tianyu.protobufB\017TelemetryDataPBb\006prot" +
-      "o3"
+      "\n\026TelemetryDataBuf.proto\"\336\004\n\rTelemetryDa" +
+      "ta\022\013\n\003lng\030\001 \001(\001\022\013\n\003lat\030\002 \001(\001\022\020\n\010altitude" +
+      "\030\003 \001(\002\022\022\n\nultrasonic\030\004 \001(\002\022\r\n\005pitch\030\005 \001(" +
+      "\002\022\014\n\004roll\030\006 \001(\002\022\013\n\003yaw\030\007 \001(\002\022\020\n\010airspeed" +
+      "\030\010 \001(\002\022\020\n\010velocity\030\t \001(\002\022\021\n\ttimestamp\030\n " +
+      "\001(\004\022\017\n\007ptpitch\030\013 \001(\002\022\016\n\006ptroll\030\014 \001(\002\022\r\n\005" +
+      "ptyaw\030\r \001(\002\022\022\n\nzoomfactor\030\016 \001(\002\022\r\n\005boxSn" +
+      "\030\017 \001(\t\022\024\n\014batteryPower\030\020 \001(\t\022\026\n\016satellit" +
+      "eCount\030\021 \001(\r\022\016\n\006taskId\030\022 \001(\004\022\016\n\006rtkLng\030\023" +
+      " \001(\001\022\016\n\006rtkLat\030\024 \001(\001\022\017\n\007rtkHFSL\030\025 \001(\002\022\027\n",
+      "\017rtkPositionInfo\030\026 \001(\r\022\023\n\013airFlyTimes\030\027 " +
+      "\001(\r\022\026\n\016airFlyDistance\030\030 \001(\002\022\r\n\005uavSn\030\031 \001" +
+      "(\t\022\020\n\010uavModel\030\032 \001(\t\022\021\n\thomeRange\030\033 \001(\002\022" +
+      "\022\n\nflightMode\030\034 \001(\r\022\026\n\016targetDistance\030\035 " +
+      "\001(\002\022\026\n\016predictFlyTime\030\036 \001(\r\022\025\n\rultrasoni" +
+      "cMax\030\037 \001(\002\022\025\n\rultrasonicMin\030  \001(\002\"6\n\rTel" +
+      "emetryList\022%\n\rtelemetryList\030\001 \003(\0132\016.Tele" +
+      "metryData\"\271\004\n\nSignalInfo\022\014\n\004mode\030\001 \001(\t\022\013" +
+      "\n\003mcc\030\002 \001(\t\022\013\n\003mnc\030\003 \001(\t\022\016\n\006cellid\030\004 \001(\t" +
+      "\022\014\n\004pcid\030\005 \001(\t\022\013\n\003tac\030\006 \001(\t\022\r\n\005arfcn\030\007 \001",
+      "(\t\022\014\n\004band\030\010 \001(\t\022\027\n\017nr_dl_bandwidth\030\t \001(" +
+      "\t\022\014\n\004rsrp\030\n \001(\t\022\014\n\004rsrq\030\013 \001(\t\022\014\n\004sinr\030\014 " +
+      "\001(\t\022\020\n\010tx_power\030\r \001(\t\022\016\n\006srxlev\030\016 \001(\t\022\013\n" +
+      "\003cqi\030\017 \001(\t\022\016\n\006earfcn\030\020 \001(\t\022\025\n\rfreq_band_" +
+      "ind\030\021 \001(\t\022\024\n\014ul_bandwidth\030\022 \001(\t\022\024\n\014dl_ba" +
+      "ndwidth\030\023 \001(\t\022\016\n\006is_tdd\030\024 \001(\t\022\014\n\004rssi\030\025 " +
+      "\001(\t\022\023\n\013duplex_mode\030\026 \001(\t\022\013\n\003lng\030\027 \001(\001\022\013\n" +
+      "\003lat\030\030 \001(\001\022\016\n\006height\030\031 \001(\002\022\021\n\ttimestamp\030" +
+      "\032 \001(\r\022\020\n\010boxstate\030\033 \001(\r\022\013\n\003isp\030\034 \001(\t\022\017\n\007" +
+      "tempMax\030\035 \001(\r\022\020\n\010prx_rsrp\030\036 \001(\t\022\020\n\010drx_r",
+      "srp\030\037 \001(\t\022\020\n\010rx2_rsrp\030  \001(\t\022\020\n\010rx3_rsrp\030" +
+      "! \001(\t\022\016\n\006box_sn\030\" \001(\t\"-\n\nSignalList\022\037\n\ns" +
+      "ignalInfo\030\001 \003(\0132\013.SignalInfo\"\246\002\n\010UavStat" +
+      "e\0225\n\025flightControllerState\030\001 \001(\0132\026.Fligh" +
+      "tControllerState\022#\n\014batteryState\030\002 \001(\0132\r" +
+      ".BatteryState\022\033\n\010ptzState\030\003 \001(\0132\t.PtzSta" +
+      "te\022!\n\013cameraState\030\004 \001(\0132\014.CameraState\022#\n" +
+      "\014missionState\030\005 \001(\0132\r.MissionState\022\r\n\005bo" +
+      "xSn\030\006 \001(\t\022%\n\ravoidanceData\030\007 \001(\0132\016.Avoid" +
+      "anceData\022#\n\014hmsAlarmData\030\010 \003(\0132\r.HmsAlar",
+      "mData\"\340\002\n\025FlightControllerState\022\026\n\016satel" +
+      "liteCount\030\001 \001(\r\022\026\n\016gpsSignalLevel\030\002 \001(\r\022" +
+      "\022\n\nflightMode\030\003 \001(\r\022\024\n\014flightStatus\030\004 \001(" +
+      "\r\022\036\n\nstartPoint\030\005 \001(\0132\n.PointData\022\035\n\thom" +
+      "ePoint\030\006 \001(\0132\n.PointData\022\022\n\nhomeHeight\030\007" +
+      " \001(\005\022\020\n\010safeLine\030\010 \001(\r\022\024\n\014deviceStatus\030\t" +
+      " \001(\r\022\024\n\014uwbNodeCount\030\n \001(\r\022\016\n\006rcMode\030\013 \001" +
+      "(\t\022\033\n\023isEmergencyBrakeing\030\014 \001(\r\022\026\n\016outFl" +
+      "yAreaFlag\030\r \001(\r\022\027\n\017inNoFlyAreaFlag\030\016 \001(\r" +
+      "\"\253\001\n\014BatteryState\022\022\n\nbatteryNum\030\001 \001(\r\022\024\n",
+      "\014batteryPower\030\002 \001(\t\022\026\n\016batteryVoltage\030\003 " +
+      "\001(\t\022+\n\020firstBatteryInfo\030\004 \001(\0132\021.BatteryS" +
+      "tateInfo\022,\n\021secondBatteryInfo\030\005 \001(\0132\021.Ba" +
+      "tteryStateInfo\"\271\002\n\020BatteryStateInfo\022\026\n\016i" +
+      "sBatteryEmbed\030\001 \001(\r\022\036\n\026batteryCapacityPe" +
+      "rcent\030\002 \001(\r\022\026\n\016currentVoltage\030\003 \001(\005\022\027\n\017c" +
+      "urrentElectric\030\004 \001(\005\022\024\n\014fullCapacity\030\005 \001" +
+      "(\r\022\030\n\020remainedCapacity\030\006 \001(\r\022\032\n\022batteryT" +
+      "emperature\030\007 \001(\002\022\021\n\tcellCount\030\010 \001(\r\022\023\n\013b" +
+      "atSOHState\030\t \001(\r\022\013\n\003sop\030\n \001(\r\022\021\n\theatSta",
+      "te\030\013 \001(\r\022\020\n\010socState\030\014 \001(\r\022\026\n\016selfCheckE" +
+      "rror\030\r \001(\r\"H\n\010PtzState\022\r\n\005pitch\030\001 \001(\002\022\014\n" +
+      "\004roll\030\002 \001(\002\022\013\n\003yaw\030\003 \001(\002\022\022\n\ngimbalMode\030\004" +
+      " \001(\r\"\220\002\n\013CameraState\022\014\n\004mode\030\001 \001(\r\022\023\n\013is" +
+      "Recording\030\002 \001(\r\022\026\n\016recordDuration\030\003 \001(\r\022" +
+      "\016\n\006source\030\004 \001(\r\022\016\n\006camera\030\005 \001(\r\022\022\n\nzoomf" +
+      "actor\030\006 \001(\002\022\r\n\005width\030\007 \001(\r\022\016\n\006height\030\010 \001" +
+      "(\r\022\021\n\tframeRate\030\t \001(\r\022\021\n\tbitstream\030\n \001(\r" +
+      "\022\033\n\023pointThermometrying\030\013 \001(\r\022\032\n\022areaThe" +
+      "rmometrying\030\014 \001(\r\022\024\n\014laserRanging\030\r \001(\r\"",
+      "\277\002\n\014MissionState\022\017\n\007isPause\030\001 \001(\r\022\033\n\023tar" +
+      "getWaypointIndex\030\002 \001(\r\022\032\n\022isWaypointFini" +
+      "shed\030\003 \001(\r\022\021\n\tpushVideo\030\004 \001(\r\022\016\n\006lock4g\030" +
+      "\005 \001(\r\022\020\n\010boxModel\030\006 \001(\r\022\017\n\007mapPlay\030\007 \001(\r" +
+      "\022\022\n\nloseAction\030\010 \001(\r\022\026\n\016isPointControl\030\t" +
+      " \001(\r\022\024\n\014isUwbLanding\030\n \001(\r\022\026\n\016isPushVide" +
+      "oing\030\013 \001(\r\022\022\n\nisDLanding\030\014 \001(\r\022\026\n\016percep" +
+      "tionFlag\030\r \001(\r\022\031\n\021isPositionControl\030\016 \001(" +
+      "\r\"\310\002\n\rAvoidanceData\022\022\n\ndownHealth\030\001 \001(\r\022" +
+      "\014\n\004down\030\002 \001(\002\022\023\n\013frontHealth\030\003 \001(\r\022\r\n\005fr",
+      "ont\030\004 \001(\002\022\023\n\013rightHealth\030\005 \001(\r\022\r\n\005right\030" +
+      "\006 \001(\002\022\022\n\nbackHealth\030\007 \001(\r\022\014\n\004back\030\010 \001(\002\022" +
+      "\022\n\nleftHealth\030\t \001(\r\022\014\n\004left\030\n \001(\002\022\020\n\010upH" +
+      "ealth\030\013 \001(\r\022\n\n\002up\030\014 \001(\002\022!\n\031avoidanceEnab" +
+      "leStatusDown\030\r \001(\r\022\037\n\027avoidanceEnableSta" +
+      "tusUp\030\016 \001(\r\022\'\n\037avoidanceEnableStatusHori" +
+      "zontal\030\017 \001(\r\"J\n\014HmsAlarmData\022\017\n\007alarmId\030" +
+      "\001 \001(\r\022\023\n\013reportLevel\030\002 \001(\r\022\024\n\014alarmMssIn" +
+      "fo\030\003 \001(\t\"\366\002\n\014PlanLineData\022\026\n\016finishedAct" +
+      "ion\030\001 \001(\r\022\020\n\010maxSpeed\030\002 \001(\002\022\021\n\tautoSpeed",
+      "\030\003 \001(\002\022\032\n\006points\030\004 \003(\0132\n.PointData\022\022\n\nlo" +
+      "seAction\030\005 \001(\r\022\022\n\nhomeHeight\030\006 \001(\r\022\030\n\020is" +
+      "SaveEnergyMode\030\007 \001(\r\022\037\n\ttakePoint\030\010 \001(\0132" +
+      "\014.HangarPoint\022\037\n\tlandPoint\030\t \001(\0132\014.Hanga" +
+      "rPoint\022\035\n\tinterests\030\n \003(\0132\n.PointData\022!\n" +
+      "\013normalModel\030\013 \001(\0132\014.NormalModel\022%\n\rsurr" +
+      "oundModel\030\014 \001(\0132\016.SurroundModel\022 \n\014takeO" +
+      "ffPoint\030\r \001(\0132\n.PointData\"\375\001\n\tPointData\022" +
+      "\013\n\003lng\030\001 \001(\001\022\013\n\003lat\030\002 \001(\001\022\016\n\006height\030\003 \001(" +
+      "\002\022\r\n\005speed\030\004 \001(\002\022\035\n\007actions\030\005 \003(\0132\014.Poin",
+      "tAction\022\026\n\016flightPathMode\030\006 \001(\r\022\027\n\017dampi" +
+      "ngDistance\030\007 \001(\002\022\026\n\016safeGohomeFlag\030\010 \001(\r" +
+      "\022\023\n\013headingMode\030\t \001(\r\022\017\n\007heading\030\n \001(\002\022\025" +
+      "\n\rinterestIndex\030\013 \001(\005\022\022\n\ngroupIndex\030\014 \001(" +
+      "\r\"O\n\013PointAction\022\014\n\004type\030\001 \001(\r\022\r\n\005param\030" +
+      "\002 \001(\002\022\020\n\010waitTime\030\003 \001(\005\022\021\n\tspeakInfo\030\004 \001" +
+      "(\t\"q\n\013HangarPoint\022\020\n\010hangarId\030\001 \001(\t\022\021\n\th" +
+      "angarLng\030\002 \001(\001\022\021\n\thangarLat\030\003 \001(\001\022\024\n\014alt" +
+      "ernateLng\030\004 \001(\001\022\024\n\014alternateLat\030\005 \001(\001\"\242\001" +
+      "\n\013NormalModel\022\030\n\004area\030\001 \003(\0132\n.PointData\022",
+      "\021\n\tserviceId\030\002 \001(\r\022\020\n\010cameraId\030\003 \001(\r\022\022\n\n" +
+      "isModeling\030\004 \001(\r\022\014\n\004mode\030\005 \001(\r\022\020\n\010hOverl" +
+      "ap\030\006 \001(\r\022\020\n\010vOverlap\030\007 \001(\r\022\016\n\006mirror\030\010 \001" +
+      "(\r\"b\n\rSurroundModel\022\030\n\004area\030\001 \003(\0132\n.Poin" +
+      "tData\022\021\n\tserviceId\030\002 \001(\r\022\020\n\010cameraId\030\003 \001" +
+      "(\r\022\022\n\nisModeling\030\004 \001(\r\"\221\001\n\013UavInitInfo\022\020" +
+      "\n\010uavModel\030\001 \001(\t\022\r\n\005uavSn\030\002 \001(\t\022\022\n\nuavVe" +
+      "rsion\030\003 \001(\t\022\017\n\007ptModel\030\004 \001(\t\022\021\n\tptVersio" +
+      "n\030\005 \001(\t\022\022\n\nptPosition\030\006 \001(\r\022\025\n\rmoduleVer" +
+      "sion\030\007 \001(\tB0\n\035com.ard.tianyu.netty.proto",
+      "bufB\017TelemetryDataPBb\006proto3"
     };
-    descriptor = com.google.protobuf.Descriptors.FileDescriptor
+    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_TelemetryData_descriptor =
       getDescriptor().getMessageTypes().get(0);
     internal_static_TelemetryData_fieldAccessorTable = new
@@ -36007,6 +34880,12 @@
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_SurroundModel_descriptor,
         new java.lang.String[] { "Area", "ServiceId", "CameraId", "IsModeling", });
+    internal_static_UavInitInfo_descriptor =
+      getDescriptor().getMessageTypes().get(19);
+    internal_static_UavInitInfo_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_UavInitInfo_descriptor,
+        new java.lang.String[] { "UavModel", "UavSn", "UavVersion", "PtModel", "PtVersion", "PtPosition", "ModuleVersion", });
   }
 
   // @@protoc_insertion_point(outer_class_scope)

--
Gitblit v1.9.3