浏览代码

完成teminor流程,修改配置命名空间,完成main函数流程

zx 5 年之前
父节点
当前提交
2ed5c7722b

+ 4 - 2
CMakeLists.txt

@@ -36,8 +36,10 @@ aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/terminor TERMINOR_SRC )
 aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/task TASK_MANAGER_SRC )
 
 #add_executable(LidarMeasure ./main.cpp ${LASER_SRC} ${PLC_SRC} ${TERMINOR_SRC} ${LOCATE_SRC} ${TASK_MANAGER_SRC})
-add_executable(LocateSample  ${LOCATE_SRC} ${TASK_MANAGER_SRC})
-target_link_libraries(LocateSample ${OpenCV_LIBS}
+#
+
+add_executable(locate  main.cpp ${LOCATE_SRC} ${PLC_SRC} ${TERMINOR_SRC} ${TASK_MANAGER_SRC} ${LASER_SRC})
+target_link_libraries(locate ${OpenCV_LIBS}
         ${GLOG_LIBRARIES} ${PCL_LIBRARIES} ${PROTOBUF_LIBRARIES} ipopt libtensorflow_cc.so
         tf_3dcnn_api.so pointSIFT_API.so dark.so /usr/local/lib/libmodbus.so /usr/local/lib/libglog.a
         /usr/local/lib/libgflags.a /usr/local/lib/liblivox_sdk_static.a /usr/local/apr/lib/libapr-1.a nnxx nanomsg)

+ 10 - 1
error.h

@@ -60,7 +60,16 @@ PLC_NOT_ENOUGH_DATA_ERROR,
     LOCATER_3DCNN_VERIFY_RECT_FAILED_4,
     LOCATER_3DCNN_KMEANS_FAILED,
     LOCATER_3DCNN_IIU_FAILED,
-    LOCATER_3DCNN_INPUT_CLOUD_EMPTY
+    LOCATER_3DCNN_INPUT_CLOUD_EMPTY,
+
+    //terminor error from 0x04010000-0x0401FFFF
+
+    //terminor_command_executor.cpp from 0x04010200-0x040102FF
+    TERMINOR_NOT_READY=0x04010200,
+    TERMINOR_INPUT_LASER_NULL,
+    TERMINOR_INPUT_PLC_NULL,
+    TERMINOR_INPUT_LOCATER_NULL,
+    TERMINOR_CREATE_WORKING_THREAD_FAILED
 };
 
 #endif

+ 19 - 0
laser/laser.cpp

@@ -0,0 +1,19 @@
+//
+// Created by zx on 2020/1/2.
+//
+
+#include "laser.h"
+
+Laser_base::Laser_base()
+{
+
+}
+
+Laser_base::~Laser_base()
+{
+
+}
+ERROR_CODE Laser_base::get_error()
+{
+    return SUCCESS;
+}

+ 18 - 0
laser/laser.h

@@ -0,0 +1,18 @@
+//
+// Created by zx on 2020/1/2.
+//
+
+#ifndef LASER_H
+#define LASER_H
+#include "../error.h"
+
+class Laser_base
+{
+public:
+    Laser_base();
+    ~Laser_base();
+    ERROR_CODE get_error();
+};
+
+
+#endif //LASER_H

+ 0 - 111
locate/locate_sample.cpp

@@ -1,111 +0,0 @@
-//
-// Created by zx on 2019/12/30.
-//
-/*
- * locater 模块测试例子
- */
-#include <fcntl.h>
-#include "locate_task.h"
-#include "locater.h"
-#include <glog/logging.h>
-#include <google/protobuf/io/coded_stream.h>
-#include <google/protobuf/io/zero_copy_stream_impl.h>
-#include <google/protobuf/text_format.h>
-using google::protobuf::io::FileInputStream;
-using google::protobuf::io::FileOutputStream;
-using google::protobuf::io::ZeroCopyInputStream;
-using google::protobuf::io::CodedInputStream;
-using google::protobuf::io::ZeroCopyOutputStream;
-using google::protobuf::io::CodedOutputStream;
-using google::protobuf::Message;
-
-bool read_proto_param(std::string path, ::google::protobuf::Message& param)
-{
-    int fd = open(path.c_str(), O_RDONLY);
-    if (fd == -1) return false;
-    FileInputStream* input = new FileInputStream(fd);
-    bool success = google::protobuf::TextFormat::Parse(input, &param);
-    delete input;
-    close(fd);
-    return success;
-}
-bool string2point(std::string str,pcl::PointXYZ& point)
-{
-    std::istringstream iss;
-    iss.str(str);
-    float value;
-    float data[3]={0};
-    for(int i=0;i<3;++i)
-    {
-        if(iss>>value)
-        {
-            data[i]=value;
-        }
-        else
-        {
-            return false;
-        }
-    }
-    point.x=data[0];
-    point.y=data[1];
-    point.z=data[2];
-    return true;
-}
-
-pcl::PointCloud<pcl::PointXYZ>::Ptr ReadTxtCloud(std::string file)
-{
-    std::ifstream fin(file.c_str());
-    const int line_length=64;
-    char str[line_length]={0};
-    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
-    while(fin.getline(str,line_length))
-    {
-        pcl::PointXYZ point;
-        if(string2point(str,point))
-        {
-            cloud->push_back(point);
-        }
-    }
-    return cloud;
-}
-
-int main(int argc,char* argv[])
-{
-    std::string input_file="20191217-215217.txt";
-    std::string out_path="./test";
-    if(argc>2)
-    {
-        input_file=argv[1];
-        input_file+=".txt";
-    }
-    if(argc>3)
-    {
-        out_path=argv[2];
-    }
-    ERROR_CODE  code;
-    Locater* locater=new Locater();
-    LidarMeasure::LocateParameter parameter;
-    if(false==read_proto_param("./setting/locate.prototxt",parameter))
-    {
-        std::cout<<" read parameter failed..."<<std::endl;
-    }
-    locater->init(parameter);
-    Locate_task* task=new Locate_task();
-
-    std::string cloud_path="/home/zx/zzw/code/Detection_src/LidarCppAD/extract/black_car_sample/";
-    cloud_path+=input_file;
-    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud;
-
-    cloud=ReadTxtCloud(cloud_path);
-    code=task->set_locate_cloud(cloud);
-    if(SUCCESS!=code)
-    {
-        return 0;
-    }
-    task->set_save_path(out_path);
-    if(SUCCESS==locater->execute_task(task,5))
-    {
-        LOG(INFO)<<" LOCATE SUCCESS";
-    }
-    return 0;
-}

+ 11 - 4
locate/locater.cpp

@@ -12,7 +12,12 @@ Locater::Locater():mp_yolo_detector(0),mp_point_sift(0),mp_cnn3d(0)
 Locater::~Locater()
 {}
 
-ERROR_CODE Locater::init(LidarMeasure::LocateParameter parameter)
+ERROR_CODE Locater::get_error()
+{
+    return SUCCESS;
+}
+
+ERROR_CODE Locater::init(Locate::LocateParameter parameter)
 {
     ERROR_CODE  code;
     {
@@ -21,7 +26,7 @@ ERROR_CODE Locater::init(LidarMeasure::LocateParameter parameter)
         double freq = parameter.seg_parameter().freq();
         std::string graph = parameter.seg_parameter().graph();
         std::string cpkt = parameter.seg_parameter().cpkt();
-        LidarMeasure::Area3d area = parameter.seg_parameter().area();
+        Locate::Area3d area = parameter.seg_parameter().area();
         pcl::PointXYZ minp(area.x_min(), area.y_min(), area.z_min());
         pcl::PointXYZ maxp(area.x_max(), area.y_max(), area.z_max());
 
@@ -87,6 +92,7 @@ ERROR_CODE Locater::execute_task(Task_Base* task,double time_out)
         return  LOCATER_TASK_ERROR;
     }
     Locate_task* locate_task=(Locate_task*)task;
+    locate_task->update_statu(TASK_SIGNED);
     ERROR_CODE code;
     ///第一步,获取task中input点云,文件保存路径
     pcl::PointCloud<pcl::PointXYZ>::Ptr t_cloud_input=locate_task->get_locate_cloud();
@@ -97,7 +103,9 @@ ERROR_CODE Locater::execute_task(Task_Base* task,double time_out)
         locate_task->update_statu(TASK_OVER,"Task set cloud is uninit");
         return LOCATER_INPUT_CLOUD_UNINIT;
     }
-    //第二步,调用locate
+    //第二步,加锁,更新task状态,调用locate,进入测量中
+    std::lock_guard<std::mutex> t_lock(m_mutex_lock);
+    locate_task->update_statu(TASK_WORKING);
     code=locate(t_cloud_input,locate_information,save_path);
     if(SUCCESS!=code)
     {
@@ -295,7 +303,6 @@ ERROR_CODE Locater::locate(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in,
     //置初始结果为错误
     locate_information.locate_correct=false;
     ERROR_CODE code;
-    std::lock_guard<std::mutex> t_lock(m_mutex_lock);
     //第一步 yolo定位车辆外接矩形
     std::vector<YoloBox> t_yolo_boxes;
     code=locate_yolo(cloud_in,t_yolo_boxes,work_dir);

+ 5 - 4
locate/locater.h

@@ -19,9 +19,10 @@ public:
     Locater();
     ~Locater();
     //初始化测量算法参数
-    ERROR_CODE init(LidarMeasure::LocateParameter parameter);
-
-    //执行任务
+    ERROR_CODE init(Locate::LocateParameter parameter);
+    //获取测量模块状态(错误码);返回是否能执行任务,以及不能执行任务的原因
+    ERROR_CODE get_error();
+    //执行任务,
     //task:测量任务
     //time_out:超时时间,单位秒
     ERROR_CODE execute_task(Task_Base* task,double time_out=5);
@@ -52,7 +53,7 @@ protected:
     //cloud_car:车辆点云
     ERROR_CODE measure_height(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_car,float& height);
 private:
-    LidarMeasure::LocateParameter           m_locate_parameter;
+    Locate::LocateParameter           m_locate_parameter;
     Point_sift_segmentation*                mp_point_sift;
     YoloDetector*                           mp_yolo_detector;
     Cnn3d_segmentation*                     mp_cnn3d;

文件差异内容过多而无法显示
+ 266 - 267
locate/locater_parameter.pb.cc


文件差异内容过多而无法显示
+ 216 - 216
locate/locater_parameter.pb.h


+ 1 - 1
locate/locater_parameter.proto

@@ -1,5 +1,5 @@
 syntax = "proto2";
-package LidarMeasure;
+package Locate;
 
 message Area3d
 {

+ 92 - 0
main.cpp

@@ -1,13 +1,105 @@
 //
 // Created by zx on 2019/12/28.
 //
+#include <fcntl.h>
 #include <iostream>
 #include "plc/plc_communicator.h"
+#include "laser/laser.h"
+#include "plc/plc_communicator.h"
+#include "locate/locater.h"
+#include "terminor/terminal_command_executor.h"
+#include <glog/logging.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/io/zero_copy_stream_impl.h>
+#include <google/protobuf/text_format.h>
+using google::protobuf::io::FileInputStream;
+using google::protobuf::io::FileOutputStream;
+using google::protobuf::io::ZeroCopyInputStream;
+using google::protobuf::io::CodedInputStream;
+using google::protobuf::io::ZeroCopyOutputStream;
+using google::protobuf::io::CodedOutputStream;
+using google::protobuf::Message;
 
+bool read_proto_param(std::string path, ::google::protobuf::Message& param)
+{
+    int fd = open(path.c_str(), O_RDONLY);
+    if (fd == -1) return false;
+    FileInputStream* input = new FileInputStream(fd);
+    bool success = google::protobuf::TextFormat::Parse(input, &param);
+    delete input;
+    close(fd);
+    return success;
+}
 
 int main(int argc,char* argv[])
 {
+    ERROR_CODE code;
+    //第一步,读取各个模块的配置
+    //读取laser配置,根据配置创建laser
+
+    //读取locate配置
+    Locate::LocateParameter locater_parameter;
+    if(!read_proto_param("",locater_parameter))
+    {
+        LOG(ERROR)<<"read locate parameter failed";
+        return -1;
+    }
+    //读取terminor配置
+    Terminal::Terminor_parameter_all terminor_parameter_all;
+    if(!read_proto_param("",terminor_parameter_all))
+    {
+        LOG(ERROR)<<"read terminors parameter failed";
+        return -1;
+    }
+    //第二步,根据配置,创建各个模块
+    //创建雷达
+    //创建plc
+    Plc_Communicator* plc=0;//new Plc_Communicator()
+    //创建测量模块
+    Locater* p_locater=new Locater();
+    code=p_locater->init(locater_parameter);
+    if(code!=SUCCESS)
+    {
+        LOG(ERROR)<<"locater init failed code:"<<code;
+        return -1;
+    }
+    //创建terminor
+    int terminor_count=terminor_parameter_all.terminor_parameters_size();
+    if(terminor_count<=0)
+    {
+        LOG(ERROR)<<"parameter error terminor num is 0";
+        return -1;
+    }
+    Terminor_Command_Executor** p_terminor_executors=0;
+    p_terminor_executors=new Terminor_Command_Executor*[terminor_count];
+    for(int i=0;i<terminor_count;++i)
+    {
+        p_terminor_executors[i]=new Terminor_Command_Executor(terminor_parameter_all.terminor_parameters(i));
+    }
+    //检查laser ,plc ,locater模块状态
+
+    //plc模块设置指令回调函数回调
+
 
     getchar();
+
+
+
+
+
+    /////释放对象,先释放terminor,再释放plc,locater ,laser
+    for(int i=0;i<terminor_count;++i)
+    {
+        if(p_terminor_executors[i]!=0)
+        {
+            delete p_terminor_executors[i];
+            p_terminor_executors[i]=0;
+        }
+    }
+    delete[] p_terminor_executors;
+
+
+
+
     return 0;
 }

+ 5 - 0
plc/plc_communicator.cpp

@@ -39,6 +39,11 @@ Plc_Communicator::~Plc_Communicator()
     disconnect();
 }
 
+ERROR_CODE Plc_Communicator::get_error()
+{
+    return SUCCESS;
+}
+
 // ××××××××××× getters setters ×××××××××××
 bool Plc_Communicator::get_connection()
 {

+ 1 - 1
plc/plc_communicator.h

@@ -43,7 +43,7 @@ public:
     // get set 方法
     bool get_initialize_status();
     bool get_connection();
-
+    ERROR_CODE get_error();
     // 设置plc检测到指令后外部回调函数
     ERROR_CODE set_plc_callback(Command_Callback callback, void * p_owner);
     // 执行任务单

+ 2 - 2
plc/plc_task.h

@@ -2,10 +2,10 @@
 #define PLC_TASK_HH
 #include <string.h>
 
-#include "task_command_manager.h"
+#include "../task/task_command_manager.h"
 #include "../error.h"
 
-class Plc_Task : Task_Base
+class Plc_Task : public Task_Base
 {
 public:
     virtual int init();

+ 0 - 57
terminor/TerminorComandExecutor.h

@@ -1,57 +0,0 @@
-//
-// Created by zx on 2019/12/27.
-//
-
-#ifndef TERMINOR_H
-#define TERMINOR_H
-
-#include "Laser.h"
-#include "ModbusPlc.h"
-#include "Terminor_parameter.pb.h"
-/*
- * 终端指令执行状态,枚举
- * 列举终端指令从进入流程到测量完成过程中的进度状态
- */
-enum TerminorStatu
-{
-    TERMINOR_READY=0,           //终端空闲
-    TERMINOR_WAIT_LASER,        //终端收到指令,等待雷达资源
-    TERMINOR_SCANNING,          //终端指令一启动扫描,扫描中
-    TERMINOR_WAIT_MEASURE,      //终端指令扫描完成,指令进入等待测量中
-    TERMINOR_MEASURING,         //终端指令进入测量中
-    TERMINOR_UNKNOW             //未知状态
-};
-
-/*
- * 终端指令执行类,执行指令,监控指令执行进度
- * 输入雷达数组,plc对象,测量算法对象,执行扫描测量任务
- */
-class TerminorCommandExecutor
-{
-public:
-    /*
-     * 构造函数
-     * parameter:该终端指令配置参数(待定)
-     */
-    TerminorCommandExecutor(LidarMeasure::Terminor_parameter parameter);
-    /*
-     * 获取终端进度状态
-     */
-    int get_statu(TerminorStatu& statu);
-    /*
-     * 执行扫描,测量任务,阻塞知道任务完成或超时(单位秒)
-     *lasers:需要启动的雷达
-     * plc:上传结果工具
-     * locater:测量算法对象
-     */
-    int execute_command(std::vector<Laser*> lasers,ModbusPlc* plc,
-        Locater* locater,int timeout=15);
-    /*
-     * 强制正在执行的中断指令
-     */
-    int force_stop_command();
-protected:
-
-};
-
-#endif //TERMINOR_H

+ 433 - 83
terminor/Terminor_parameter.pb.cc

@@ -19,7 +19,7 @@
 #include "third_party/protobuf/version.h"
 #endif
 // @@protoc_insertion_point(includes)
-namespace LidarMeasure {
+namespace Terminal {
 class Area3dDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<Area3d>
@@ -30,7 +30,12 @@ class Terminor_parameterDefaultTypeInternal {
   ::google::protobuf::internal::ExplicitlyConstructed<Terminor_parameter>
       _instance;
 } _Terminor_parameter_default_instance_;
-}  // namespace LidarMeasure
+class Terminor_parameter_allDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<Terminor_parameter_all>
+      _instance;
+} _Terminor_parameter_all_default_instance_;
+}  // namespace Terminal
 namespace protobuf_Terminor_5fparameter_2eproto {
 void InitDefaultsArea3dImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
@@ -41,11 +46,11 @@ void InitDefaultsArea3dImpl() {
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   {
-    void* ptr = &::LidarMeasure::_Area3d_default_instance_;
-    new (ptr) ::LidarMeasure::Area3d();
+    void* ptr = &::Terminal::_Area3d_default_instance_;
+    new (ptr) ::Terminal::Area3d();
     ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
   }
-  ::LidarMeasure::Area3d::InitAsDefaultInstance();
+  ::Terminal::Area3d::InitAsDefaultInstance();
 }
 
 void InitDefaultsArea3d() {
@@ -63,11 +68,11 @@ void InitDefaultsTerminor_parameterImpl() {
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   protobuf_Terminor_5fparameter_2eproto::InitDefaultsArea3d();
   {
-    void* ptr = &::LidarMeasure::_Terminor_parameter_default_instance_;
-    new (ptr) ::LidarMeasure::Terminor_parameter();
+    void* ptr = &::Terminal::_Terminor_parameter_default_instance_;
+    new (ptr) ::Terminal::Terminor_parameter();
     ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
   }
-  ::LidarMeasure::Terminor_parameter::InitAsDefaultInstance();
+  ::Terminal::Terminor_parameter::InitAsDefaultInstance();
 }
 
 void InitDefaultsTerminor_parameter() {
@@ -75,42 +80,75 @@ void InitDefaultsTerminor_parameter() {
   ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsTerminor_parameterImpl);
 }
 
-::google::protobuf::Metadata file_level_metadata[2];
+void InitDefaultsTerminor_parameter_allImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  protobuf_Terminor_5fparameter_2eproto::InitDefaultsTerminor_parameter();
+  {
+    void* ptr = &::Terminal::_Terminor_parameter_all_default_instance_;
+    new (ptr) ::Terminal::Terminor_parameter_all();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::Terminal::Terminor_parameter_all::InitAsDefaultInstance();
+}
+
+void InitDefaultsTerminor_parameter_all() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsTerminor_parameter_allImpl);
+}
+
+::google::protobuf::Metadata file_level_metadata[3];
 
 const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::LidarMeasure::Area3d, _has_bits_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::LidarMeasure::Area3d, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Area3d, _has_bits_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Area3d, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::LidarMeasure::Area3d, min_x_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::LidarMeasure::Area3d, max_x_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::LidarMeasure::Area3d, min_y_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::LidarMeasure::Area3d, max_y_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::LidarMeasure::Area3d, min_z_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::LidarMeasure::Area3d, max_z_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Area3d, min_x_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Area3d, max_x_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Area3d, min_y_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Area3d, max_y_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Area3d, min_z_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Area3d, max_z_),
   0,
   1,
   2,
   3,
   4,
   5,
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::LidarMeasure::Terminor_parameter, _has_bits_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::LidarMeasure::Terminor_parameter, _internal_metadata_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Terminor_parameter, _has_bits_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Terminor_parameter, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::LidarMeasure::Terminor_parameter, area_3d_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Terminor_parameter, area_3d_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Terminor_parameter, id_),
   0,
+  1,
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Terminor_parameter_all, _has_bits_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Terminor_parameter_all, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Terminal::Terminor_parameter_all, terminor_parameters_),
+  ~0u,
 };
 static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
-  { 0, 11, sizeof(::LidarMeasure::Area3d)},
-  { 17, 23, sizeof(::LidarMeasure::Terminor_parameter)},
+  { 0, 11, sizeof(::Terminal::Area3d)},
+  { 17, 24, sizeof(::Terminal::Terminor_parameter)},
+  { 26, 32, sizeof(::Terminal::Terminor_parameter_all)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
-  reinterpret_cast<const ::google::protobuf::Message*>(&::LidarMeasure::_Area3d_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&::LidarMeasure::_Terminor_parameter_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::Terminal::_Area3d_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::Terminal::_Terminor_parameter_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::Terminal::_Terminor_parameter_all_default_instance_),
 };
 
 void protobuf_AssignDescriptors() {
@@ -129,21 +167,23 @@ void protobuf_AssignDescriptorsOnce() {
 void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
 void protobuf_RegisterTypes(const ::std::string&) {
   protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 2);
+  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 3);
 }
 
 void AddDescriptorsImpl() {
   InitDefaults();
   static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
-      "\n\030Terminor_parameter.proto\022\014LidarMeasure"
-      "\"b\n\006Area3d\022\r\n\005min_x\030\001 \002(\002\022\r\n\005max_x\030\002 \002(\002"
-      "\022\r\n\005min_y\030\003 \002(\002\022\r\n\005max_y\030\004 \002(\002\022\r\n\005min_z\030"
-      "\005 \002(\002\022\r\n\005max_z\030\006 \002(\002\";\n\022Terminor_paramet"
-      "er\022%\n\007area_3d\030\001 \002(\0132\024.LidarMeasure.Area3"
-      "d"
+      "\n\030Terminor_parameter.proto\022\010Terminal\"b\n\006"
+      "Area3d\022\r\n\005min_x\030\001 \002(\002\022\r\n\005max_x\030\002 \002(\002\022\r\n\005"
+      "min_y\030\003 \002(\002\022\r\n\005max_y\030\004 \002(\002\022\r\n\005min_z\030\005 \002("
+      "\002\022\r\n\005max_z\030\006 \002(\002\"C\n\022Terminor_parameter\022!"
+      "\n\007area_3d\030\001 \002(\0132\020.Terminal.Area3d\022\n\n\002id\030"
+      "\002 \002(\003\"S\n\026Terminor_parameter_all\0229\n\023termi"
+      "nor_parameters\030\001 \003(\0132\034.Terminal.Terminor"
+      "_parameter"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 201);
+      descriptor, 290);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "Terminor_parameter.proto", &protobuf_RegisterTypes);
 }
@@ -159,7 +199,7 @@ struct StaticDescriptorInitializer {
   }
 } static_descriptor_initializer;
 }  // namespace protobuf_Terminor_5fparameter_2eproto
-namespace LidarMeasure {
+namespace Terminal {
 
 // ===================================================================
 
@@ -180,7 +220,7 @@ Area3d::Area3d()
     ::protobuf_Terminor_5fparameter_2eproto::InitDefaultsArea3d();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(constructor:Terminal.Area3d)
 }
 Area3d::Area3d(const Area3d& from)
   : ::google::protobuf::Message(),
@@ -191,7 +231,7 @@ Area3d::Area3d(const Area3d& from)
   ::memcpy(&min_x_, &from.min_x_,
     static_cast<size_t>(reinterpret_cast<char*>(&max_z_) -
     reinterpret_cast<char*>(&min_x_)) + sizeof(max_z_));
-  // @@protoc_insertion_point(copy_constructor:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(copy_constructor:Terminal.Area3d)
 }
 
 void Area3d::SharedCtor() {
@@ -202,7 +242,7 @@ void Area3d::SharedCtor() {
 }
 
 Area3d::~Area3d() {
-  // @@protoc_insertion_point(destructor:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(destructor:Terminal.Area3d)
   SharedDtor();
 }
 
@@ -233,7 +273,7 @@ Area3d* Area3d::New(::google::protobuf::Arena* arena) const {
 }
 
 void Area3d::Clear() {
-// @@protoc_insertion_point(message_clear_start:LidarMeasure.Area3d)
+// @@protoc_insertion_point(message_clear_start:Terminal.Area3d)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
@@ -252,7 +292,7 @@ bool Area3d::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(parse_start:Terminal.Area3d)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
@@ -354,17 +394,17 @@ bool Area3d::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(parse_success:Terminal.Area3d)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(parse_failure:Terminal.Area3d)
   return false;
 #undef DO_
 }
 
 void Area3d::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(serialize_start:Terminal.Area3d)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -403,13 +443,13 @@ void Area3d::SerializeWithCachedSizes(
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
   }
-  // @@protoc_insertion_point(serialize_end:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(serialize_end:Terminal.Area3d)
 }
 
 ::google::protobuf::uint8* Area3d::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(serialize_to_array_start:Terminal.Area3d)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -448,12 +488,12 @@ void Area3d::SerializeWithCachedSizes(
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(serialize_to_array_end:Terminal.Area3d)
   return target;
 }
 
 size_t Area3d::RequiredFieldsByteSizeFallback() const {
-// @@protoc_insertion_point(required_fields_byte_size_fallback_start:LidarMeasure.Area3d)
+// @@protoc_insertion_point(required_fields_byte_size_fallback_start:Terminal.Area3d)
   size_t total_size = 0;
 
   if (has_min_x()) {
@@ -489,7 +529,7 @@ size_t Area3d::RequiredFieldsByteSizeFallback() const {
   return total_size;
 }
 size_t Area3d::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:LidarMeasure.Area3d)
+// @@protoc_insertion_point(message_byte_size_start:Terminal.Area3d)
   size_t total_size = 0;
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -527,22 +567,22 @@ size_t Area3d::ByteSizeLong() const {
 }
 
 void Area3d::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:LidarMeasure.Area3d)
+// @@protoc_insertion_point(generalized_merge_from_start:Terminal.Area3d)
   GOOGLE_DCHECK_NE(&from, this);
   const Area3d* source =
       ::google::protobuf::internal::DynamicCastToGenerated<const Area3d>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Terminal.Area3d)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:Terminal.Area3d)
     MergeFrom(*source);
   }
 }
 
 void Area3d::MergeFrom(const Area3d& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:LidarMeasure.Area3d)
+// @@protoc_insertion_point(class_specific_merge_from_start:Terminal.Area3d)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
@@ -573,14 +613,14 @@ void Area3d::MergeFrom(const Area3d& from) {
 }
 
 void Area3d::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:LidarMeasure.Area3d)
+// @@protoc_insertion_point(generalized_copy_from_start:Terminal.Area3d)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
 void Area3d::CopyFrom(const Area3d& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:LidarMeasure.Area3d)
+// @@protoc_insertion_point(class_specific_copy_from_start:Terminal.Area3d)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
@@ -617,11 +657,12 @@ void Area3d::InternalSwap(Area3d* other) {
 // ===================================================================
 
 void Terminor_parameter::InitAsDefaultInstance() {
-  ::LidarMeasure::_Terminor_parameter_default_instance_._instance.get_mutable()->area_3d_ = const_cast< ::LidarMeasure::Area3d*>(
-      ::LidarMeasure::Area3d::internal_default_instance());
+  ::Terminal::_Terminor_parameter_default_instance_._instance.get_mutable()->area_3d_ = const_cast< ::Terminal::Area3d*>(
+      ::Terminal::Area3d::internal_default_instance());
 }
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int Terminor_parameter::kArea3DFieldNumber;
+const int Terminor_parameter::kIdFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Terminor_parameter::Terminor_parameter()
@@ -630,7 +671,7 @@ Terminor_parameter::Terminor_parameter()
     ::protobuf_Terminor_5fparameter_2eproto::InitDefaultsTerminor_parameter();
   }
   SharedCtor();
-  // @@protoc_insertion_point(constructor:LidarMeasure.Terminor_parameter)
+  // @@protoc_insertion_point(constructor:Terminal.Terminor_parameter)
 }
 Terminor_parameter::Terminor_parameter(const Terminor_parameter& from)
   : ::google::protobuf::Message(),
@@ -639,20 +680,23 @@ Terminor_parameter::Terminor_parameter(const Terminor_parameter& from)
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   if (from.has_area_3d()) {
-    area_3d_ = new ::LidarMeasure::Area3d(*from.area_3d_);
+    area_3d_ = new ::Terminal::Area3d(*from.area_3d_);
   } else {
     area_3d_ = NULL;
   }
-  // @@protoc_insertion_point(copy_constructor:LidarMeasure.Terminor_parameter)
+  id_ = from.id_;
+  // @@protoc_insertion_point(copy_constructor:Terminal.Terminor_parameter)
 }
 
 void Terminor_parameter::SharedCtor() {
   _cached_size_ = 0;
-  area_3d_ = NULL;
+  ::memset(&area_3d_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&id_) -
+      reinterpret_cast<char*>(&area_3d_)) + sizeof(id_));
 }
 
 Terminor_parameter::~Terminor_parameter() {
-  // @@protoc_insertion_point(destructor:LidarMeasure.Terminor_parameter)
+  // @@protoc_insertion_point(destructor:Terminal.Terminor_parameter)
   SharedDtor();
 }
 
@@ -684,7 +728,7 @@ Terminor_parameter* Terminor_parameter::New(::google::protobuf::Arena* arena) co
 }
 
 void Terminor_parameter::Clear() {
-// @@protoc_insertion_point(message_clear_start:LidarMeasure.Terminor_parameter)
+// @@protoc_insertion_point(message_clear_start:Terminal.Terminor_parameter)
   ::google::protobuf::uint32 cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
@@ -694,6 +738,7 @@ void Terminor_parameter::Clear() {
     GOOGLE_DCHECK(area_3d_ != NULL);
     area_3d_->Clear();
   }
+  id_ = GOOGLE_LONGLONG(0);
   _has_bits_.Clear();
   _internal_metadata_.Clear();
 }
@@ -702,13 +747,13 @@ bool Terminor_parameter::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
-  // @@protoc_insertion_point(parse_start:LidarMeasure.Terminor_parameter)
+  // @@protoc_insertion_point(parse_start:Terminal.Terminor_parameter)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
-      // required .LidarMeasure.Area3d area_3d = 1;
+      // required .Terminal.Area3d area_3d = 1;
       case 1: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
@@ -720,6 +765,20 @@ bool Terminor_parameter::MergePartialFromCodedStream(
         break;
       }
 
+      // required int64 id = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
+          set_has_id();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
+                 input, &id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -732,59 +791,89 @@ bool Terminor_parameter::MergePartialFromCodedStream(
     }
   }
 success:
-  // @@protoc_insertion_point(parse_success:LidarMeasure.Terminor_parameter)
+  // @@protoc_insertion_point(parse_success:Terminal.Terminor_parameter)
   return true;
 failure:
-  // @@protoc_insertion_point(parse_failure:LidarMeasure.Terminor_parameter)
+  // @@protoc_insertion_point(parse_failure:Terminal.Terminor_parameter)
   return false;
 #undef DO_
 }
 
 void Terminor_parameter::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
-  // @@protoc_insertion_point(serialize_start:LidarMeasure.Terminor_parameter)
+  // @@protoc_insertion_point(serialize_start:Terminal.Terminor_parameter)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  // required .LidarMeasure.Area3d area_3d = 1;
+  // required .Terminal.Area3d area_3d = 1;
   if (cached_has_bits & 0x00000001u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
       1, *this->area_3d_, output);
   }
 
+  // required int64 id = 2;
+  if (cached_has_bits & 0x00000002u) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->id(), output);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
   }
-  // @@protoc_insertion_point(serialize_end:LidarMeasure.Terminor_parameter)
+  // @@protoc_insertion_point(serialize_end:Terminal.Terminor_parameter)
 }
 
 ::google::protobuf::uint8* Terminor_parameter::InternalSerializeWithCachedSizesToArray(
     bool deterministic, ::google::protobuf::uint8* target) const {
   (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:LidarMeasure.Terminor_parameter)
+  // @@protoc_insertion_point(serialize_to_array_start:Terminal.Terminor_parameter)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
-  // required .LidarMeasure.Area3d area_3d = 1;
+  // required .Terminal.Area3d area_3d = 1;
   if (cached_has_bits & 0x00000001u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
         1, *this->area_3d_, deterministic, target);
   }
 
+  // required int64 id = 2;
+  if (cached_has_bits & 0x00000002u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->id(), target);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:LidarMeasure.Terminor_parameter)
+  // @@protoc_insertion_point(serialize_to_array_end:Terminal.Terminor_parameter)
   return target;
 }
 
+size_t Terminor_parameter::RequiredFieldsByteSizeFallback() const {
+// @@protoc_insertion_point(required_fields_byte_size_fallback_start:Terminal.Terminor_parameter)
+  size_t total_size = 0;
+
+  if (has_area_3d()) {
+    // required .Terminal.Area3d area_3d = 1;
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *this->area_3d_);
+  }
+
+  if (has_id()) {
+    // required int64 id = 2;
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->id());
+  }
+
+  return total_size;
+}
 size_t Terminor_parameter::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:LidarMeasure.Terminor_parameter)
+// @@protoc_insertion_point(message_byte_size_start:Terminal.Terminor_parameter)
   size_t total_size = 0;
 
   if (_internal_metadata_.have_unknown_fields()) {
@@ -792,11 +881,19 @@ size_t Terminor_parameter::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         _internal_metadata_.unknown_fields());
   }
-  // required .LidarMeasure.Area3d area_3d = 1;
-  if (has_area_3d()) {
+  if (((_has_bits_[0] & 0x00000003) ^ 0x00000003) == 0) {  // All required fields are present.
+    // required .Terminal.Area3d area_3d = 1;
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::MessageSize(
         *this->area_3d_);
+
+    // required int64 id = 2;
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::Int64Size(
+        this->id());
+
+  } else {
+    total_size += RequiredFieldsByteSizeFallback();
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
@@ -806,48 +903,55 @@ size_t Terminor_parameter::ByteSizeLong() const {
 }
 
 void Terminor_parameter::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:LidarMeasure.Terminor_parameter)
+// @@protoc_insertion_point(generalized_merge_from_start:Terminal.Terminor_parameter)
   GOOGLE_DCHECK_NE(&from, this);
   const Terminor_parameter* source =
       ::google::protobuf::internal::DynamicCastToGenerated<const Terminor_parameter>(
           &from);
   if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:LidarMeasure.Terminor_parameter)
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Terminal.Terminor_parameter)
     ::google::protobuf::internal::ReflectionOps::Merge(from, this);
   } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:LidarMeasure.Terminor_parameter)
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:Terminal.Terminor_parameter)
     MergeFrom(*source);
   }
 }
 
 void Terminor_parameter::MergeFrom(const Terminor_parameter& from) {
-// @@protoc_insertion_point(class_specific_merge_from_start:LidarMeasure.Terminor_parameter)
+// @@protoc_insertion_point(class_specific_merge_from_start:Terminal.Terminor_parameter)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (from.has_area_3d()) {
-    mutable_area_3d()->::LidarMeasure::Area3d::MergeFrom(from.area_3d());
+  cached_has_bits = from._has_bits_[0];
+  if (cached_has_bits & 3u) {
+    if (cached_has_bits & 0x00000001u) {
+      mutable_area_3d()->::Terminal::Area3d::MergeFrom(from.area_3d());
+    }
+    if (cached_has_bits & 0x00000002u) {
+      id_ = from.id_;
+    }
+    _has_bits_[0] |= cached_has_bits;
   }
 }
 
 void Terminor_parameter::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:LidarMeasure.Terminor_parameter)
+// @@protoc_insertion_point(generalized_copy_from_start:Terminal.Terminor_parameter)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
 void Terminor_parameter::CopyFrom(const Terminor_parameter& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:LidarMeasure.Terminor_parameter)
+// @@protoc_insertion_point(class_specific_copy_from_start:Terminal.Terminor_parameter)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
 bool Terminor_parameter::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
+  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
   if (has_area_3d()) {
     if (!this->area_3d_->IsInitialized()) return false;
   }
@@ -861,6 +965,7 @@ void Terminor_parameter::Swap(Terminor_parameter* other) {
 void Terminor_parameter::InternalSwap(Terminor_parameter* other) {
   using std::swap;
   swap(area_3d_, other->area_3d_);
+  swap(id_, other->id_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
@@ -872,7 +977,252 @@ void Terminor_parameter::InternalSwap(Terminor_parameter* other) {
 }
 
 
+// ===================================================================
+
+void Terminor_parameter_all::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int Terminor_parameter_all::kTerminorParametersFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+Terminor_parameter_all::Terminor_parameter_all()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_Terminor_5fparameter_2eproto::InitDefaultsTerminor_parameter_all();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:Terminal.Terminor_parameter_all)
+}
+Terminor_parameter_all::Terminor_parameter_all(const Terminor_parameter_all& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      _has_bits_(from._has_bits_),
+      _cached_size_(0),
+      terminor_parameters_(from.terminor_parameters_) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:Terminal.Terminor_parameter_all)
+}
+
+void Terminor_parameter_all::SharedCtor() {
+  _cached_size_ = 0;
+}
+
+Terminor_parameter_all::~Terminor_parameter_all() {
+  // @@protoc_insertion_point(destructor:Terminal.Terminor_parameter_all)
+  SharedDtor();
+}
+
+void Terminor_parameter_all::SharedDtor() {
+}
+
+void Terminor_parameter_all::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* Terminor_parameter_all::descriptor() {
+  ::protobuf_Terminor_5fparameter_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_Terminor_5fparameter_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const Terminor_parameter_all& Terminor_parameter_all::default_instance() {
+  ::protobuf_Terminor_5fparameter_2eproto::InitDefaultsTerminor_parameter_all();
+  return *internal_default_instance();
+}
+
+Terminor_parameter_all* Terminor_parameter_all::New(::google::protobuf::Arena* arena) const {
+  Terminor_parameter_all* n = new Terminor_parameter_all;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void Terminor_parameter_all::Clear() {
+// @@protoc_insertion_point(message_clear_start:Terminal.Terminor_parameter_all)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  terminor_parameters_.Clear();
+  _has_bits_.Clear();
+  _internal_metadata_.Clear();
+}
+
+bool Terminor_parameter_all::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:Terminal.Terminor_parameter_all)
+  for (;;) {
+    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated .Terminal.Terminor_parameter terminor_parameters = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_terminor_parameters()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:Terminal.Terminor_parameter_all)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:Terminal.Terminor_parameter_all)
+  return false;
+#undef DO_
+}
+
+void Terminor_parameter_all::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:Terminal.Terminor_parameter_all)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .Terminal.Terminor_parameter terminor_parameters = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->terminor_parameters_size()); i < n; i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, this->terminor_parameters(static_cast<int>(i)), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:Terminal.Terminor_parameter_all)
+}
+
+::google::protobuf::uint8* Terminor_parameter_all::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:Terminal.Terminor_parameter_all)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .Terminal.Terminor_parameter terminor_parameters = 1;
+  for (unsigned int i = 0,
+      n = static_cast<unsigned int>(this->terminor_parameters_size()); i < n; i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        1, this->terminor_parameters(static_cast<int>(i)), deterministic, target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:Terminal.Terminor_parameter_all)
+  return target;
+}
+
+size_t Terminor_parameter_all::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:Terminal.Terminor_parameter_all)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  // repeated .Terminal.Terminor_parameter terminor_parameters = 1;
+  {
+    unsigned int count = static_cast<unsigned int>(this->terminor_parameters_size());
+    total_size += 1UL * count;
+    for (unsigned int i = 0; i < count; i++) {
+      total_size +=
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          this->terminor_parameters(static_cast<int>(i)));
+    }
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = cached_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void Terminor_parameter_all::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:Terminal.Terminor_parameter_all)
+  GOOGLE_DCHECK_NE(&from, this);
+  const Terminor_parameter_all* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const Terminor_parameter_all>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Terminal.Terminor_parameter_all)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:Terminal.Terminor_parameter_all)
+    MergeFrom(*source);
+  }
+}
+
+void Terminor_parameter_all::MergeFrom(const Terminor_parameter_all& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:Terminal.Terminor_parameter_all)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  terminor_parameters_.MergeFrom(from.terminor_parameters_);
+}
+
+void Terminor_parameter_all::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:Terminal.Terminor_parameter_all)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void Terminor_parameter_all::CopyFrom(const Terminor_parameter_all& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:Terminal.Terminor_parameter_all)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool Terminor_parameter_all::IsInitialized() const {
+  if (!::google::protobuf::internal::AllAreInitialized(this->terminor_parameters())) return false;
+  return true;
+}
+
+void Terminor_parameter_all::Swap(Terminor_parameter_all* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void Terminor_parameter_all::InternalSwap(Terminor_parameter_all* other) {
+  using std::swap;
+  terminor_parameters_.InternalSwap(&other->terminor_parameters_);
+  swap(_has_bits_[0], other->_has_bits_[0]);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata Terminor_parameter_all::GetMetadata() const {
+  protobuf_Terminor_5fparameter_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_Terminor_5fparameter_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
 // @@protoc_insertion_point(namespace_scope)
-}  // namespace LidarMeasure
+}  // namespace Terminal
 
 // @@protoc_insertion_point(global_scope)

+ 234 - 42
terminor/Terminor_parameter.pb.h

@@ -36,7 +36,7 @@ namespace protobuf_Terminor_5fparameter_2eproto {
 struct TableStruct {
   static const ::google::protobuf::internal::ParseTableField entries[];
   static const ::google::protobuf::internal::AuxillaryParseTableField aux[];
-  static const ::google::protobuf::internal::ParseTable schema[2];
+  static const ::google::protobuf::internal::ParseTable schema[3];
   static const ::google::protobuf::internal::FieldMetadata field_metadata[];
   static const ::google::protobuf::internal::SerializationTable serialization_table[];
   static const ::google::protobuf::uint32 offsets[];
@@ -46,24 +46,30 @@ void InitDefaultsArea3dImpl();
 void InitDefaultsArea3d();
 void InitDefaultsTerminor_parameterImpl();
 void InitDefaultsTerminor_parameter();
+void InitDefaultsTerminor_parameter_allImpl();
+void InitDefaultsTerminor_parameter_all();
 inline void InitDefaults() {
   InitDefaultsArea3d();
   InitDefaultsTerminor_parameter();
+  InitDefaultsTerminor_parameter_all();
 }
 }  // namespace protobuf_Terminor_5fparameter_2eproto
-namespace LidarMeasure {
+namespace Terminal {
 class Area3d;
 class Area3dDefaultTypeInternal;
 extern Area3dDefaultTypeInternal _Area3d_default_instance_;
 class Terminor_parameter;
 class Terminor_parameterDefaultTypeInternal;
 extern Terminor_parameterDefaultTypeInternal _Terminor_parameter_default_instance_;
-}  // namespace LidarMeasure
-namespace LidarMeasure {
+class Terminor_parameter_all;
+class Terminor_parameter_allDefaultTypeInternal;
+extern Terminor_parameter_allDefaultTypeInternal _Terminor_parameter_all_default_instance_;
+}  // namespace Terminal
+namespace Terminal {
 
 // ===================================================================
 
-class Area3d : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:LidarMeasure.Area3d) */ {
+class Area3d : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:Terminal.Area3d) */ {
  public:
   Area3d();
   virtual ~Area3d();
@@ -194,7 +200,7 @@ class Area3d : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
   float max_z() const;
   void set_max_z(float value);
 
-  // @@protoc_insertion_point(class_scope:LidarMeasure.Area3d)
+  // @@protoc_insertion_point(class_scope:Terminal.Area3d)
  private:
   void set_has_min_x();
   void clear_has_min_x();
@@ -226,7 +232,7 @@ class Area3d : public ::google::protobuf::Message /* @@protoc_insertion_point(cl
 };
 // -------------------------------------------------------------------
 
-class Terminor_parameter : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:LidarMeasure.Terminor_parameter) */ {
+class Terminor_parameter : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:Terminal.Terminor_parameter) */ {
  public:
   Terminor_parameter();
   virtual ~Terminor_parameter();
@@ -315,27 +321,153 @@ class Terminor_parameter : public ::google::protobuf::Message /* @@protoc_insert
 
   // accessors -------------------------------------------------------
 
-  // required .LidarMeasure.Area3d area_3d = 1;
+  // required .Terminal.Area3d area_3d = 1;
   bool has_area_3d() const;
   void clear_area_3d();
   static const int kArea3DFieldNumber = 1;
-  const ::LidarMeasure::Area3d& area_3d() const;
-  ::LidarMeasure::Area3d* release_area_3d();
-  ::LidarMeasure::Area3d* mutable_area_3d();
-  void set_allocated_area_3d(::LidarMeasure::Area3d* area_3d);
-
-  // @@protoc_insertion_point(class_scope:LidarMeasure.Terminor_parameter)
+  const ::Terminal::Area3d& area_3d() const;
+  ::Terminal::Area3d* release_area_3d();
+  ::Terminal::Area3d* mutable_area_3d();
+  void set_allocated_area_3d(::Terminal::Area3d* area_3d);
+
+  // required int64 id = 2;
+  bool has_id() const;
+  void clear_id();
+  static const int kIdFieldNumber = 2;
+  ::google::protobuf::int64 id() const;
+  void set_id(::google::protobuf::int64 value);
+
+  // @@protoc_insertion_point(class_scope:Terminal.Terminor_parameter)
  private:
   void set_has_area_3d();
   void clear_has_area_3d();
+  void set_has_id();
+  void clear_has_id();
+
+  // helper for ByteSizeLong()
+  size_t RequiredFieldsByteSizeFallback() const;
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
-  ::LidarMeasure::Area3d* area_3d_;
+  ::Terminal::Area3d* area_3d_;
+  ::google::protobuf::int64 id_;
   friend struct ::protobuf_Terminor_5fparameter_2eproto::TableStruct;
   friend void ::protobuf_Terminor_5fparameter_2eproto::InitDefaultsTerminor_parameterImpl();
 };
+// -------------------------------------------------------------------
+
+class Terminor_parameter_all : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:Terminal.Terminor_parameter_all) */ {
+ public:
+  Terminor_parameter_all();
+  virtual ~Terminor_parameter_all();
+
+  Terminor_parameter_all(const Terminor_parameter_all& from);
+
+  inline Terminor_parameter_all& operator=(const Terminor_parameter_all& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  Terminor_parameter_all(Terminor_parameter_all&& from) noexcept
+    : Terminor_parameter_all() {
+    *this = ::std::move(from);
+  }
+
+  inline Terminor_parameter_all& operator=(Terminor_parameter_all&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+    return _internal_metadata_.unknown_fields();
+  }
+  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+    return _internal_metadata_.mutable_unknown_fields();
+  }
+
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const Terminor_parameter_all& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const Terminor_parameter_all* internal_default_instance() {
+    return reinterpret_cast<const Terminor_parameter_all*>(
+               &_Terminor_parameter_all_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    2;
+
+  void Swap(Terminor_parameter_all* other);
+  friend void swap(Terminor_parameter_all& a, Terminor_parameter_all& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline Terminor_parameter_all* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  Terminor_parameter_all* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
+  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CopyFrom(const Terminor_parameter_all& from);
+  void MergeFrom(const Terminor_parameter_all& from);
+  void Clear() PROTOBUF_FINAL;
+  bool IsInitialized() const PROTOBUF_FINAL;
+
+  size_t ByteSizeLong() const PROTOBUF_FINAL;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void InternalSwap(Terminor_parameter_all* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return NULL;
+  }
+  inline void* MaybeArenaPtr() const {
+    return NULL;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
+  // repeated .Terminal.Terminor_parameter terminor_parameters = 1;
+  int terminor_parameters_size() const;
+  void clear_terminor_parameters();
+  static const int kTerminorParametersFieldNumber = 1;
+  const ::Terminal::Terminor_parameter& terminor_parameters(int index) const;
+  ::Terminal::Terminor_parameter* mutable_terminor_parameters(int index);
+  ::Terminal::Terminor_parameter* add_terminor_parameters();
+  ::google::protobuf::RepeatedPtrField< ::Terminal::Terminor_parameter >*
+      mutable_terminor_parameters();
+  const ::google::protobuf::RepeatedPtrField< ::Terminal::Terminor_parameter >&
+      terminor_parameters() const;
+
+  // @@protoc_insertion_point(class_scope:Terminal.Terminor_parameter_all)
+ private:
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::HasBits<1> _has_bits_;
+  mutable int _cached_size_;
+  ::google::protobuf::RepeatedPtrField< ::Terminal::Terminor_parameter > terminor_parameters_;
+  friend struct ::protobuf_Terminor_5fparameter_2eproto::TableStruct;
+  friend void ::protobuf_Terminor_5fparameter_2eproto::InitDefaultsTerminor_parameter_allImpl();
+};
 // ===================================================================
 
 
@@ -362,13 +494,13 @@ inline void Area3d::clear_min_x() {
   clear_has_min_x();
 }
 inline float Area3d::min_x() const {
-  // @@protoc_insertion_point(field_get:LidarMeasure.Area3d.min_x)
+  // @@protoc_insertion_point(field_get:Terminal.Area3d.min_x)
   return min_x_;
 }
 inline void Area3d::set_min_x(float value) {
   set_has_min_x();
   min_x_ = value;
-  // @@protoc_insertion_point(field_set:LidarMeasure.Area3d.min_x)
+  // @@protoc_insertion_point(field_set:Terminal.Area3d.min_x)
 }
 
 // required float max_x = 2;
@@ -386,13 +518,13 @@ inline void Area3d::clear_max_x() {
   clear_has_max_x();
 }
 inline float Area3d::max_x() const {
-  // @@protoc_insertion_point(field_get:LidarMeasure.Area3d.max_x)
+  // @@protoc_insertion_point(field_get:Terminal.Area3d.max_x)
   return max_x_;
 }
 inline void Area3d::set_max_x(float value) {
   set_has_max_x();
   max_x_ = value;
-  // @@protoc_insertion_point(field_set:LidarMeasure.Area3d.max_x)
+  // @@protoc_insertion_point(field_set:Terminal.Area3d.max_x)
 }
 
 // required float min_y = 3;
@@ -410,13 +542,13 @@ inline void Area3d::clear_min_y() {
   clear_has_min_y();
 }
 inline float Area3d::min_y() const {
-  // @@protoc_insertion_point(field_get:LidarMeasure.Area3d.min_y)
+  // @@protoc_insertion_point(field_get:Terminal.Area3d.min_y)
   return min_y_;
 }
 inline void Area3d::set_min_y(float value) {
   set_has_min_y();
   min_y_ = value;
-  // @@protoc_insertion_point(field_set:LidarMeasure.Area3d.min_y)
+  // @@protoc_insertion_point(field_set:Terminal.Area3d.min_y)
 }
 
 // required float max_y = 4;
@@ -434,13 +566,13 @@ inline void Area3d::clear_max_y() {
   clear_has_max_y();
 }
 inline float Area3d::max_y() const {
-  // @@protoc_insertion_point(field_get:LidarMeasure.Area3d.max_y)
+  // @@protoc_insertion_point(field_get:Terminal.Area3d.max_y)
   return max_y_;
 }
 inline void Area3d::set_max_y(float value) {
   set_has_max_y();
   max_y_ = value;
-  // @@protoc_insertion_point(field_set:LidarMeasure.Area3d.max_y)
+  // @@protoc_insertion_point(field_set:Terminal.Area3d.max_y)
 }
 
 // required float min_z = 5;
@@ -458,13 +590,13 @@ inline void Area3d::clear_min_z() {
   clear_has_min_z();
 }
 inline float Area3d::min_z() const {
-  // @@protoc_insertion_point(field_get:LidarMeasure.Area3d.min_z)
+  // @@protoc_insertion_point(field_get:Terminal.Area3d.min_z)
   return min_z_;
 }
 inline void Area3d::set_min_z(float value) {
   set_has_min_z();
   min_z_ = value;
-  // @@protoc_insertion_point(field_set:LidarMeasure.Area3d.min_z)
+  // @@protoc_insertion_point(field_set:Terminal.Area3d.min_z)
 }
 
 // required float max_z = 6;
@@ -482,20 +614,20 @@ inline void Area3d::clear_max_z() {
   clear_has_max_z();
 }
 inline float Area3d::max_z() const {
-  // @@protoc_insertion_point(field_get:LidarMeasure.Area3d.max_z)
+  // @@protoc_insertion_point(field_get:Terminal.Area3d.max_z)
   return max_z_;
 }
 inline void Area3d::set_max_z(float value) {
   set_has_max_z();
   max_z_ = value;
-  // @@protoc_insertion_point(field_set:LidarMeasure.Area3d.max_z)
+  // @@protoc_insertion_point(field_set:Terminal.Area3d.max_z)
 }
 
 // -------------------------------------------------------------------
 
 // Terminor_parameter
 
-// required .LidarMeasure.Area3d area_3d = 1;
+// required .Terminal.Area3d area_3d = 1;
 inline bool Terminor_parameter::has_area_3d() const {
   return (_has_bits_[0] & 0x00000001u) != 0;
 }
@@ -509,28 +641,28 @@ inline void Terminor_parameter::clear_area_3d() {
   if (area_3d_ != NULL) area_3d_->Clear();
   clear_has_area_3d();
 }
-inline const ::LidarMeasure::Area3d& Terminor_parameter::area_3d() const {
-  const ::LidarMeasure::Area3d* p = area_3d_;
-  // @@protoc_insertion_point(field_get:LidarMeasure.Terminor_parameter.area_3d)
-  return p != NULL ? *p : *reinterpret_cast<const ::LidarMeasure::Area3d*>(
-      &::LidarMeasure::_Area3d_default_instance_);
+inline const ::Terminal::Area3d& Terminor_parameter::area_3d() const {
+  const ::Terminal::Area3d* p = area_3d_;
+  // @@protoc_insertion_point(field_get:Terminal.Terminor_parameter.area_3d)
+  return p != NULL ? *p : *reinterpret_cast<const ::Terminal::Area3d*>(
+      &::Terminal::_Area3d_default_instance_);
 }
-inline ::LidarMeasure::Area3d* Terminor_parameter::release_area_3d() {
-  // @@protoc_insertion_point(field_release:LidarMeasure.Terminor_parameter.area_3d)
+inline ::Terminal::Area3d* Terminor_parameter::release_area_3d() {
+  // @@protoc_insertion_point(field_release:Terminal.Terminor_parameter.area_3d)
   clear_has_area_3d();
-  ::LidarMeasure::Area3d* temp = area_3d_;
+  ::Terminal::Area3d* temp = area_3d_;
   area_3d_ = NULL;
   return temp;
 }
-inline ::LidarMeasure::Area3d* Terminor_parameter::mutable_area_3d() {
+inline ::Terminal::Area3d* Terminor_parameter::mutable_area_3d() {
   set_has_area_3d();
   if (area_3d_ == NULL) {
-    area_3d_ = new ::LidarMeasure::Area3d;
+    area_3d_ = new ::Terminal::Area3d;
   }
-  // @@protoc_insertion_point(field_mutable:LidarMeasure.Terminor_parameter.area_3d)
+  // @@protoc_insertion_point(field_mutable:Terminal.Terminor_parameter.area_3d)
   return area_3d_;
 }
-inline void Terminor_parameter::set_allocated_area_3d(::LidarMeasure::Area3d* area_3d) {
+inline void Terminor_parameter::set_allocated_area_3d(::Terminal::Area3d* area_3d) {
   ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
   if (message_arena == NULL) {
     delete area_3d_;
@@ -546,7 +678,65 @@ inline void Terminor_parameter::set_allocated_area_3d(::LidarMeasure::Area3d* ar
     clear_has_area_3d();
   }
   area_3d_ = area_3d;
-  // @@protoc_insertion_point(field_set_allocated:LidarMeasure.Terminor_parameter.area_3d)
+  // @@protoc_insertion_point(field_set_allocated:Terminal.Terminor_parameter.area_3d)
+}
+
+// required int64 id = 2;
+inline bool Terminor_parameter::has_id() const {
+  return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void Terminor_parameter::set_has_id() {
+  _has_bits_[0] |= 0x00000002u;
+}
+inline void Terminor_parameter::clear_has_id() {
+  _has_bits_[0] &= ~0x00000002u;
+}
+inline void Terminor_parameter::clear_id() {
+  id_ = GOOGLE_LONGLONG(0);
+  clear_has_id();
+}
+inline ::google::protobuf::int64 Terminor_parameter::id() const {
+  // @@protoc_insertion_point(field_get:Terminal.Terminor_parameter.id)
+  return id_;
+}
+inline void Terminor_parameter::set_id(::google::protobuf::int64 value) {
+  set_has_id();
+  id_ = value;
+  // @@protoc_insertion_point(field_set:Terminal.Terminor_parameter.id)
+}
+
+// -------------------------------------------------------------------
+
+// Terminor_parameter_all
+
+// repeated .Terminal.Terminor_parameter terminor_parameters = 1;
+inline int Terminor_parameter_all::terminor_parameters_size() const {
+  return terminor_parameters_.size();
+}
+inline void Terminor_parameter_all::clear_terminor_parameters() {
+  terminor_parameters_.Clear();
+}
+inline const ::Terminal::Terminor_parameter& Terminor_parameter_all::terminor_parameters(int index) const {
+  // @@protoc_insertion_point(field_get:Terminal.Terminor_parameter_all.terminor_parameters)
+  return terminor_parameters_.Get(index);
+}
+inline ::Terminal::Terminor_parameter* Terminor_parameter_all::mutable_terminor_parameters(int index) {
+  // @@protoc_insertion_point(field_mutable:Terminal.Terminor_parameter_all.terminor_parameters)
+  return terminor_parameters_.Mutable(index);
+}
+inline ::Terminal::Terminor_parameter* Terminor_parameter_all::add_terminor_parameters() {
+  // @@protoc_insertion_point(field_add:Terminal.Terminor_parameter_all.terminor_parameters)
+  return terminor_parameters_.Add();
+}
+inline ::google::protobuf::RepeatedPtrField< ::Terminal::Terminor_parameter >*
+Terminor_parameter_all::mutable_terminor_parameters() {
+  // @@protoc_insertion_point(field_mutable_list:Terminal.Terminor_parameter_all.terminor_parameters)
+  return &terminor_parameters_;
+}
+inline const ::google::protobuf::RepeatedPtrField< ::Terminal::Terminor_parameter >&
+Terminor_parameter_all::terminor_parameters() const {
+  // @@protoc_insertion_point(field_list:Terminal.Terminor_parameter_all.terminor_parameters)
+  return terminor_parameters_;
 }
 
 #ifdef __GNUC__
@@ -554,10 +744,12 @@ inline void Terminor_parameter::set_allocated_area_3d(::LidarMeasure::Area3d* ar
 #endif  // __GNUC__
 // -------------------------------------------------------------------
 
+// -------------------------------------------------------------------
+
 
 // @@protoc_insertion_point(namespace_scope)
 
-}  // namespace LidarMeasure
+}  // namespace Terminal
 
 // @@protoc_insertion_point(global_scope)
 

+ 7 - 1
terminor/Terminor_parameter.proto

@@ -1,5 +1,5 @@
 syntax="proto2";
-package LidarMeasure;
+package Terminal;
 
 message Area3d
 {
@@ -13,4 +13,10 @@ message Area3d
 message Terminor_parameter
 {
     required Area3d area_3d=1;
+    required int64 id=2;
+}
+
+message Terminor_parameter_all
+{
+    repeated Terminor_parameter terminor_parameters=1;
 }