Selaa lähdekoodia

20211126, base communication

huli 3 vuotta sitten
vanhempi
commit
515f77893f

+ 8 - 5
dispatch/dispatch_plc.cpp

@@ -276,17 +276,18 @@ Error_manager Dispatch_plc::encapsulate_dispatch_request_to_plc(int outlet_id)
 	//把m_dispatch_request_msg的信息传给本地的数据缓存.
 	std::unique_lock<std::mutex> t_lock(m_lock);
 	m_request_key = m_dispatch_request_msg.command_key();
+	m_request_status = 1;
 	if ( m_dispatch_request_msg.dispatch_motion_direction() == message::Dispatch_motion_direction::E_STORE_CAR )
 	{
 		m_request_dispatch_motion_direction = Common_data::Dispatch_motion_direction::DISPATCH_MOTION_DIRECTION_STORE;
 		m_request_passageway_direction = Common_data::Passageway_direction::PASSAGEWAY_DIRECTION_INLET;
-		m_request_passageway_id = m_dispatch_request_msg.terminal_id()+1;//0~5入口终端号改为1~6
+		m_request_passageway_id = m_dispatch_request_msg.mutable_id_struct()->terminal_id()+1;//0~5入口终端号改为1~6
 	}
 	else if( m_dispatch_request_msg.dispatch_motion_direction() == message::Dispatch_motion_direction::E_PICKUP_CAR )
 	{
 		m_request_dispatch_motion_direction = Common_data::Dispatch_motion_direction::DISPATCH_MOTION_DIRECTION_PICKUP;
 		m_request_passageway_direction = Common_data::Passageway_direction::PASSAGEWAY_DIRECTION_OUTLET;
-		m_request_passageway_id = m_dispatch_request_msg.terminal_id()*2+outlet_id+1;//0~2出口单元号改为1~6
+		m_request_passageway_id = m_dispatch_request_msg.mutable_id_struct()->unit_id()*2+outlet_id+1;//0~2出口单元号改为1~6
 
 	}
 	else
@@ -410,7 +411,7 @@ Error_manager Dispatch_plc::update_dispatch_plc_communication()
 	memset(m_dispatch_request_from_manager_to_plc_for_key->m_request_key, 0, 50);
 	int t_size1 = m_request_key.size()<=50 ? m_request_key.size() : 50 ;
 	memcpy(m_dispatch_request_from_manager_to_plc_for_key->m_request_key, m_request_key.c_str(), t_size1);
-	tp_dispatch_request_from_manager_to_plc_for_data->m_request_status = 1;
+	tp_dispatch_request_from_manager_to_plc_for_data->m_request_status = m_request_status;
 	tp_dispatch_request_from_manager_to_plc_for_data->m_request_dispatch_motion_direction = m_request_dispatch_motion_direction;
 	tp_dispatch_request_from_manager_to_plc_for_data->m_request_passageway_id = m_request_passageway_id;
 	tp_dispatch_request_from_manager_to_plc_for_data->m_request_passageway_direction = m_request_passageway_direction;
@@ -573,12 +574,14 @@ Error_manager Dispatch_plc::send_dispatch_response_to_main_control()
 	//need,need
 	if ( m_dispatch_request_msg.dispatch_motion_direction() == message::Dispatch_motion_direction::E_STORE_CAR )
 	{
-		m_dispatch_response_msg.set_terminal_id(m_dispatch_request_msg.terminal_id());
+		m_dispatch_response_msg.mutable_id_struct()->set_terminal_id(m_dispatch_request_msg.mutable_id_struct()->terminal_id());
+		m_dispatch_response_msg.mutable_id_struct()->set_unit_id(m_dispatch_request_msg.mutable_id_struct()->terminal_id()/2);
 
 	}
 	else if( m_dispatch_request_msg.dispatch_motion_direction() == message::Dispatch_motion_direction::E_PICKUP_CAR )
 	{
-		m_dispatch_response_msg.set_terminal_id(m_dispatch_request_msg.terminal_id()*2+m_outlet_id);
+		m_dispatch_response_msg.mutable_id_struct()->set_terminal_id(m_dispatch_request_msg.mutable_id_struct()->unit_id()*2+m_outlet_id);
+		m_dispatch_response_msg.mutable_id_struct()->set_unit_id(m_dispatch_request_msg.mutable_id_struct()->unit_id());
 	}
 
 //	m_dispatch_response_msg.set_terminal_id(m_dispatch_request_msg.terminal_id());

+ 1 - 0
dispatch/dispatch_plc.h

@@ -109,6 +109,7 @@ protected://member variable
 	//数据缓存
 	//调度管理给plc发送调度指令
 	std::string										m_request_key;				//请求唯一码, 用作识别
+	unsigned int									m_request_status = 0;			//请求确认标志
 	// 调度指令的起点,终点,方向
 	Common_data::Dispatch_motion_direction			m_request_dispatch_motion_direction ;		//调度方向	0=未知,1=存车,2=取车
 	unsigned int									m_request_passageway_id = 0;					//出入口id	6个入口和6个出口

+ 2 - 1
main.cpp

@@ -128,7 +128,8 @@ int main(int argc,char* argv[])
 			dispatch_request_msg.set_command_key("12345678901234567890123456789012");
 
 			dispatch_request_msg.set_dispatch_motion_direction(message::Dispatch_motion_direction::E_STORE_CAR);
-			dispatch_request_msg.set_terminal_id(4);
+			dispatch_request_msg.mutable_id_struct()->set_terminal_id(4);
+			dispatch_request_msg.mutable_id_struct()->set_unit_id(2);
 			message::Locate_information t_locate_information;
 			t_locate_information.set_locate_x(-1.901);
 			t_locate_information.set_locate_y(-5.829);

+ 235 - 198
message/dispatch_message.pb.cc

@@ -93,6 +93,7 @@ void InitDefaultsDispatch_request_msgImpl() {
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
+  protobuf_message_5fbase_2eproto::InitDefaultsId_struct();
   protobuf_message_5fbase_2eproto::InitDefaultsLocate_information();
   protobuf_message_5fbase_2eproto::InitDefaultsParkspace_info();
   {
@@ -117,6 +118,7 @@ void InitDefaultsDispatch_response_msgImpl() {
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
+  protobuf_message_5fbase_2eproto::InitDefaultsId_struct();
   protobuf_message_5fbase_2eproto::InitDefaultsLocate_information();
   protobuf_message_5fbase_2eproto::InitDefaultsParkspace_info();
   protobuf_message_5fbase_2eproto::InitDefaultsError_manager();
@@ -267,15 +269,15 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_request_msg, base_info_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_request_msg, command_key_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_request_msg, dispatch_motion_direction_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_request_msg, terminal_id_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_request_msg, id_struct_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_request_msg, locate_information_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_request_msg, parkspace_info_ex_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_request_msg, car_type_),
   1,
   0,
-  3,
   4,
   2,
+  3,
   ~0u,
   5,
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, _has_bits_),
@@ -286,19 +288,19 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, base_info_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, command_key_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, dispatch_motion_direction_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, terminal_id_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, id_struct_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, locate_information_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, parkspace_info_ex_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, car_type_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, error_manager_),
   1,
   0,
-  4,
   5,
   2,
+  3,
   ~0u,
   6,
-  3,
+  4,
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Catcher_data, _has_bits_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Catcher_data, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -497,143 +499,144 @@ void AddDescriptorsImpl() {
       "_info\022\023\n\013terminal_id\030\002 \002(\005\0221\n\017terminal_s"
       "tatus\030\003 \002(\0162\030.message.Terminal_status\022;\n"
       "\024passageway_direction\030\004 \002(\0162\035.message.Pa"
-      "ssageway_direction\"\300\002\n\024Dispatch_request_"
+      "ssageway_direction\"\322\002\n\024Dispatch_request_"
       "msg\022%\n\tbase_info\030\001 \002(\0132\022.message.Base_in"
       "fo\022\023\n\013command_key\030\002 \002(\t\022E\n\031dispatch_moti"
       "on_direction\030\003 \001(\0162\".message.Dispatch_mo"
-      "tion_direction\022\023\n\013terminal_id\030\004 \001(\005\0227\n\022l"
+      "tion_direction\022%\n\tid_struct\030\004 \001(\0132\022.mess"
+      "age.Id_struct\0227\n\022locate_information\030\005 \001("
+      "\0132\033.message.Locate_information\0222\n\021parksp"
+      "ace_info_ex\030\006 \003(\0132\027.message.Parkspace_in"
+      "fo\022#\n\010car_type\030\007 \001(\0162\021.message.Car_type\""
+      "\202\003\n\025Dispatch_response_msg\022%\n\tbase_info\030\001"
+      " \002(\0132\022.message.Base_info\022\023\n\013command_key\030"
+      "\002 \002(\t\022E\n\031dispatch_motion_direction\030\003 \001(\016"
+      "2\".message.Dispatch_motion_direction\022%\n\t"
+      "id_struct\030\004 \001(\0132\022.message.Id_struct\0227\n\022l"
       "ocate_information\030\005 \001(\0132\033.message.Locate"
       "_information\0222\n\021parkspace_info_ex\030\006 \003(\0132"
       "\027.message.Parkspace_info\022#\n\010car_type\030\007 \001"
-      "(\0162\021.message.Car_type\"\360\002\n\025Dispatch_respo"
-      "nse_msg\022%\n\tbase_info\030\001 \002(\0132\022.message.Bas"
-      "e_info\022\023\n\013command_key\030\002 \002(\t\022E\n\031dispatch_"
-      "motion_direction\030\003 \001(\0162\".message.Dispatc"
-      "h_motion_direction\022\023\n\013terminal_id\030\004 \001(\005\022"
-      "7\n\022locate_information\030\005 \001(\0132\033.message.Lo"
-      "cate_information\0222\n\021parkspace_info_ex\030\006 "
-      "\003(\0132\027.message.Parkspace_info\022#\n\010car_type"
-      "\030\007 \001(\0162\021.message.Car_type\022-\n\rerror_manag"
-      "er\030\010 \001(\0132\026.message.Error_manager\"\313\005\n\014Cat"
-      "cher_data\022;\n\024dispatch_device_type\030\001 \002(\0162"
-      "\035.message.Dispatch_device_type\022\?\n\026dispat"
-      "ch_device_status\030\002 \002(\0162\037.message.Dispatc"
-      "h_device_status\022\021\n\tdevice_id\030\003 \002(\005\022=\n\024ac"
-      "tual_device_status\030\004 \001(\0162\037.message.Hardw"
-      "are_device_status\0220\n\022actual_load_status\030"
-      "\005 \001(\0162\024.message.Load_status\022\035\n\025actual_co"
-      "ordinates_id\030\006 \001(\005\022\020\n\010actual_x\030\007 \001(\002\022\020\n\010"
-      "actual_y\030\010 \001(\002\022\020\n\010actual_b\030\t \001(\002\022\020\n\010actu"
-      "al_z\030\n \001(\002\022\021\n\tactual_d1\030\013 \001(\002\022\021\n\tactual_"
-      "d2\030\014 \001(\002\0223\n\024actual_clamp_motion1\030\r \001(\0162\025"
-      ".message.Clamp_motion\0223\n\024actual_clamp_mo"
-      "tion2\030\016 \001(\0162\025.message.Clamp_motion\0223\n\024ac"
-      "tual_clamp_motion3\030\017 \001(\0162\025.message.Clamp"
-      "_motion\0223\n\024actual_clamp_motion4\030\020 \001(\0162\025."
-      "message.Clamp_motion\022\031\n\021actual_error_cod"
-      "e\030\021 \001(\t\022\033\n\023actual_warning_code\030\022 \001(\t\022 \n\030"
-      "actual_error_description\030\023 \001(\t\"\207\006\n\014Carri"
-      "er_data\022;\n\024dispatch_device_type\030\001 \002(\0162\035."
-      "message.Dispatch_device_type\022\?\n\026dispatch"
-      "_device_status\030\002 \002(\0162\037.message.Dispatch_"
-      "device_status\022\021\n\tdevice_id\030\003 \002(\005\022=\n\024actu"
-      "al_device_status\030\004 \001(\0162\037.message.Hardwar"
-      "e_device_status\0220\n\022actual_load_status\030\005 "
-      "\001(\0162\024.message.Load_status\022\035\n\025actual_coor"
-      "dinates_id\030\006 \001(\005\022\020\n\010actual_x\030\007 \001(\002\022\020\n\010ac"
-      "tual_y\030\010 \001(\002\022\020\n\010actual_z\030\t \001(\002\022\021\n\tactual"
-      "_y1\030\n \001(\002\022\021\n\tactual_y2\030\013 \001(\002\0223\n\024actual_c"
-      "lamp_motion1\030\014 \001(\0162\025.message.Clamp_motio"
-      "n\0223\n\024actual_clamp_motion2\030\r \001(\0162\025.messag"
-      "e.Clamp_motion\022H\n\036actual_small_sports_ca"
-      "r_motion\030\016 \001(\0162 .message.Small_sports_ca"
-      "r_motion\0225\n\026actual_joint_motion_x1\030\017 \001(\016"
-      "2\025.message.Joint_motion\0225\n\026actual_joint_"
-      "motion_x2\030\020 \001(\0162\025.message.Joint_motion\022\031"
-      "\n\021actual_error_code\030\021 \001(\t\022\033\n\023actual_warn"
-      "ing_code\030\022 \001(\t\022 \n\030actual_error_descripti"
-      "on\030\023 \001(\t\"\275\007\n\017Passageway_data\022;\n\024dispatch"
-      "_device_type\030\001 \002(\0162\035.message.Dispatch_de"
-      "vice_type\022\?\n\026dispatch_device_status\030\002 \002("
-      "\0162\037.message.Dispatch_device_status\022\021\n\tde"
-      "vice_id\030\003 \002(\005\022=\n\024actual_device_status\030\004 "
-      "\001(\0162\037.message.Hardware_device_status\0227\n\031"
-      "actual_inside_load_status\030\005 \001(\0162\024.messag"
-      "e.Load_status\0228\n\032actual_outside_load_sta"
-      "tus\030\006 \001(\0162\024.message.Load_status\022J\n\"actua"
-      "l_front_overstep_the_boundary\030\007 \001(\0162\036.me"
-      "ssage.Overstep_the_boundary\022I\n!actual_ba"
-      "ck_overstep_the_boundary\030\010 \001(\0162\036.message"
-      ".Overstep_the_boundary\022K\n#actual_height_"
-      "overstep_the_boundary\030\t \001(\0162\036.message.Ov"
-      "erstep_the_boundary\0228\n\032actual_outside_do"
-      "or_sensor\030\n \001(\0162\024.message.Load_status\0227\n"
-      "\031actual_inside_door_motion\030\013 \001(\0162\024.messa"
-      "ge.Door_motion\0228\n\032actual_outside_door_mo"
-      "tion\030\014 \001(\0162\024.message.Door_motion\022:\n\034actu"
-      "al_turntable_load_status\030\r \001(\0162\024.message"
-      ".Load_status\022@\n\032actual_turntable_directi"
-      "on\030\016 \001(\0162\034.message.Turntable_direction\022\031"
-      "\n\021actual_error_code\030\017 \001(\t\022\033\n\023actual_warn"
-      "ing_code\030\020 \001(\t\022 \n\030actual_error_descripti"
-      "on\030\021 \001(\t\"\265\002\n\033Dispatch_manager_status_msg"
-      "\022%\n\tbase_info\030\001 \002(\0132\022.message.Base_info\022"
-      "\023\n\013dispatch_id\030\002 \002(\005\022A\n\027dispatch_manager"
-      "_status\030\003 \002(\0162 .message.Dispatch_manager"
-      "_status\022/\n\020catcher_data_map\030\004 \003(\0132\025.mess"
-      "age.Catcher_data\022/\n\020carrier_data_map\030\005 \003"
-      "(\0132\025.message.Carrier_data\0225\n\023passageway_"
-      "data_map\030\006 \003(\0132\030.message.Passageway_data"
-      "\"\033\n\031Dispatch_manager_data_msg*\201\001\n\017Termin"
-      "al_status\022\025\n\021E_TERMINAL_UNKNOW\020\000\022\024\n\020E_TE"
-      "RMINAL_READY\020\001\022\024\n\020E_TERMINAL_STORE\020\002\022\025\n\021"
-      "E_TERMINAL_PICKUP\020\003\022\024\n\020E_TERMINAL_FAULT\020"
-      "\n*B\n\024Passageway_direction\022\013\n\007E_INLET\020\000\022\014"
-      "\n\010E_OUTLET\020\001\022\017\n\013E_BILATERAL\020\002*>\n\031Dispatc"
-      "h_motion_direction\022\017\n\013E_STORE_CAR\020\000\022\020\n\014E"
-      "_PICKUP_CAR\020\001*\261\001\n\027Dispatch_manager_statu"
-      "s\022\035\n\031E_DISPATCH_MANAGER_UNKNOW\020\000\022\034\n\030E_DI"
-      "SPATCH_MANAGER_READY\020\001\022\034\n\030E_DISPATCH_MAN"
-      "AGER_STORE\020\002\022\035\n\031E_DISPATCH_MANAGER_PICKU"
-      "P\020\003\022\034\n\030E_DISPATCH_MANAGER_FAULT\020d*\200\003\n\026Di"
-      "spatch_device_status\022\032\n\026DISPATCH_DEVICE_"
-      "UNKNOW\020\000\022\031\n\025DISPATCH_DEVICE_READY\020\001\022\030\n\024D"
-      "ISPATCH_DEVICE_BUSY\020\002\022\"\n\036DISPATCH_DEVICE"
-      "_ONE_LEVEL_OVER\020\003\022\"\n\036DISPATCH_DEVICE_ONE"
-      "_LEVEL_WORK\020\004\022\"\n\036DISPATCH_DEVICE_TWO_LEV"
-      "EL_OVER\020\005\022\"\n\036DISPATCH_DEVICE_TWO_LEVEL_W"
-      "ORK\020\006\022$\n DISPATCH_DEVICE_THREE_LEVEL_OVE"
-      "R\020\007\022$\n DISPATCH_DEVICE_THREE_LEVEL_WORK\020"
-      "\010\022\031\n\025DISPATCH_DEVICE_FAULT\020d\022\036\n\032DISPATCH"
-      "_DEVICE_DISCONNECT\020e*n\n\023Dispatch_task_le"
-      "vel\022\033\n\027DISPATCH_TASK_ONE_LEVEL\020\001\022\033\n\027DISP"
-      "ATCH_TASK_TWO_LEVEL\020\002\022\035\n\031DISPATCH_TASK_T"
-      "HREE_LEVEL\020\003*K\n\014Clamp_motion\022\025\n\021E_CLAMP_"
-      "NO_ACTION\020\000\022\021\n\rE_CLAMP_TIGHT\020\001\022\021\n\rE_CLAM"
-      "P_LOOSE\020\002*R\n\014Joint_motion\022\025\n\021E_JOINT_NO_"
-      "ACTION\020\000\022\024\n\020E_JOINT_HOLD_OUT\020\001\022\025\n\021E_JOIN"
-      "T_TAKE_BACK\020\002*y\n\027Small_sports_car_motion"
-      "\022\034\n\030E_SMALL_SPORTS_NO_ACTION\020\000\022\037\n\033E_SMAL"
-      "L_SPORTS_CAR_GET_AWAY\020\001\022\037\n\033E_SMALL_SPORT"
-      "S_CAR_GET_BACK\020\002*l\n\016Respons_status\022\023\n\017RE"
-      "SPONS_WORKING\020\000\022\020\n\014RESPONS_OVER\020\001\022\027\n\023RES"
-      "PONS_MINOR_ERROR\020d\022\032\n\026RESPONS_CRITICAL_E"
-      "RROR\020e*\252\001\n\026Hardware_device_status\022\022\n\016DEV"
-      "ICE_UNKNOWN\020\000\022\020\n\014DEVICE_READY\020\001\022\022\n\016DEVIC"
-      "E_WORKING\020\002\022\031\n\025DEVICE_EMERGENCY_STOP\020\003\022\023"
-      "\n\017DEVICE_UNSAFETY\020\004\022\024\n\020DEVICE_COLLISION\020"
-      "\005\022\020\n\014DEVICE_FAULT\020\006*9\n\013Load_status\022\020\n\014LO"
-      "AD_UNKNOWN\020\000\022\014\n\010HAVE_CAR\020\001\022\n\n\006NO_CAR\020\002*w"
-      "\n\023Turntable_direction\022\037\n\033TURNTABLE_DIREC"
-      "TION_UNKNOWN\020\000\022\036\n\032TURNTABLE_DIRECTION_IN"
-      "SIDE\020\001\022\037\n\033TURNTABLE_DIRECTION_OUTSIDE\020\002*"
-      "N\n\013Door_motion\022\020\n\014DOOR_UNKNOWN\020\000\022\r\n\tDOOR"
-      "_OPEN\020\001\022\016\n\nDOOR_CLOSE\020\002\022\016\n\nDOOR_ERROR\020\003*"
-      "C\n\025Overstep_the_boundary\022\023\n\017BOUNDARY_NOR"
-      "MAL\020\000\022\025\n\021BOUNDARY_OVERSTEP\020\001"
+      "(\0162\021.message.Car_type\022-\n\rerror_manager\030\010"
+      " \001(\0132\026.message.Error_manager\"\313\005\n\014Catcher"
+      "_data\022;\n\024dispatch_device_type\030\001 \002(\0162\035.me"
+      "ssage.Dispatch_device_type\022\?\n\026dispatch_d"
+      "evice_status\030\002 \002(\0162\037.message.Dispatch_de"
+      "vice_status\022\021\n\tdevice_id\030\003 \002(\005\022=\n\024actual"
+      "_device_status\030\004 \001(\0162\037.message.Hardware_"
+      "device_status\0220\n\022actual_load_status\030\005 \001("
+      "\0162\024.message.Load_status\022\035\n\025actual_coordi"
+      "nates_id\030\006 \001(\005\022\020\n\010actual_x\030\007 \001(\002\022\020\n\010actu"
+      "al_y\030\010 \001(\002\022\020\n\010actual_b\030\t \001(\002\022\020\n\010actual_z"
+      "\030\n \001(\002\022\021\n\tactual_d1\030\013 \001(\002\022\021\n\tactual_d2\030\014"
+      " \001(\002\0223\n\024actual_clamp_motion1\030\r \001(\0162\025.mes"
+      "sage.Clamp_motion\0223\n\024actual_clamp_motion"
+      "2\030\016 \001(\0162\025.message.Clamp_motion\0223\n\024actual"
+      "_clamp_motion3\030\017 \001(\0162\025.message.Clamp_mot"
+      "ion\0223\n\024actual_clamp_motion4\030\020 \001(\0162\025.mess"
+      "age.Clamp_motion\022\031\n\021actual_error_code\030\021 "
+      "\001(\t\022\033\n\023actual_warning_code\030\022 \001(\t\022 \n\030actu"
+      "al_error_description\030\023 \001(\t\"\207\006\n\014Carrier_d"
+      "ata\022;\n\024dispatch_device_type\030\001 \002(\0162\035.mess"
+      "age.Dispatch_device_type\022\?\n\026dispatch_dev"
+      "ice_status\030\002 \002(\0162\037.message.Dispatch_devi"
+      "ce_status\022\021\n\tdevice_id\030\003 \002(\005\022=\n\024actual_d"
+      "evice_status\030\004 \001(\0162\037.message.Hardware_de"
+      "vice_status\0220\n\022actual_load_status\030\005 \001(\0162"
+      "\024.message.Load_status\022\035\n\025actual_coordina"
+      "tes_id\030\006 \001(\005\022\020\n\010actual_x\030\007 \001(\002\022\020\n\010actual"
+      "_y\030\010 \001(\002\022\020\n\010actual_z\030\t \001(\002\022\021\n\tactual_y1\030"
+      "\n \001(\002\022\021\n\tactual_y2\030\013 \001(\002\0223\n\024actual_clamp"
+      "_motion1\030\014 \001(\0162\025.message.Clamp_motion\0223\n"
+      "\024actual_clamp_motion2\030\r \001(\0162\025.message.Cl"
+      "amp_motion\022H\n\036actual_small_sports_car_mo"
+      "tion\030\016 \001(\0162 .message.Small_sports_car_mo"
+      "tion\0225\n\026actual_joint_motion_x1\030\017 \001(\0162\025.m"
+      "essage.Joint_motion\0225\n\026actual_joint_moti"
+      "on_x2\030\020 \001(\0162\025.message.Joint_motion\022\031\n\021ac"
+      "tual_error_code\030\021 \001(\t\022\033\n\023actual_warning_"
+      "code\030\022 \001(\t\022 \n\030actual_error_description\030\023"
+      " \001(\t\"\275\007\n\017Passageway_data\022;\n\024dispatch_dev"
+      "ice_type\030\001 \002(\0162\035.message.Dispatch_device"
+      "_type\022\?\n\026dispatch_device_status\030\002 \002(\0162\037."
+      "message.Dispatch_device_status\022\021\n\tdevice"
+      "_id\030\003 \002(\005\022=\n\024actual_device_status\030\004 \001(\0162"
+      "\037.message.Hardware_device_status\0227\n\031actu"
+      "al_inside_load_status\030\005 \001(\0162\024.message.Lo"
+      "ad_status\0228\n\032actual_outside_load_status\030"
+      "\006 \001(\0162\024.message.Load_status\022J\n\"actual_fr"
+      "ont_overstep_the_boundary\030\007 \001(\0162\036.messag"
+      "e.Overstep_the_boundary\022I\n!actual_back_o"
+      "verstep_the_boundary\030\010 \001(\0162\036.message.Ove"
+      "rstep_the_boundary\022K\n#actual_height_over"
+      "step_the_boundary\030\t \001(\0162\036.message.Overst"
+      "ep_the_boundary\0228\n\032actual_outside_door_s"
+      "ensor\030\n \001(\0162\024.message.Load_status\0227\n\031act"
+      "ual_inside_door_motion\030\013 \001(\0162\024.message.D"
+      "oor_motion\0228\n\032actual_outside_door_motion"
+      "\030\014 \001(\0162\024.message.Door_motion\022:\n\034actual_t"
+      "urntable_load_status\030\r \001(\0162\024.message.Loa"
+      "d_status\022@\n\032actual_turntable_direction\030\016"
+      " \001(\0162\034.message.Turntable_direction\022\031\n\021ac"
+      "tual_error_code\030\017 \001(\t\022\033\n\023actual_warning_"
+      "code\030\020 \001(\t\022 \n\030actual_error_description\030\021"
+      " \001(\t\"\265\002\n\033Dispatch_manager_status_msg\022%\n\t"
+      "base_info\030\001 \002(\0132\022.message.Base_info\022\023\n\013d"
+      "ispatch_id\030\002 \002(\005\022A\n\027dispatch_manager_sta"
+      "tus\030\003 \002(\0162 .message.Dispatch_manager_sta"
+      "tus\022/\n\020catcher_data_map\030\004 \003(\0132\025.message."
+      "Catcher_data\022/\n\020carrier_data_map\030\005 \003(\0132\025"
+      ".message.Carrier_data\0225\n\023passageway_data"
+      "_map\030\006 \003(\0132\030.message.Passageway_data\"\033\n\031"
+      "Dispatch_manager_data_msg*\201\001\n\017Terminal_s"
+      "tatus\022\025\n\021E_TERMINAL_UNKNOW\020\000\022\024\n\020E_TERMIN"
+      "AL_READY\020\001\022\024\n\020E_TERMINAL_STORE\020\002\022\025\n\021E_TE"
+      "RMINAL_PICKUP\020\003\022\024\n\020E_TERMINAL_FAULT\020\n*B\n"
+      "\024Passageway_direction\022\013\n\007E_INLET\020\000\022\014\n\010E_"
+      "OUTLET\020\001\022\017\n\013E_BILATERAL\020\002*>\n\031Dispatch_mo"
+      "tion_direction\022\017\n\013E_STORE_CAR\020\000\022\020\n\014E_PIC"
+      "KUP_CAR\020\001*\261\001\n\027Dispatch_manager_status\022\035\n"
+      "\031E_DISPATCH_MANAGER_UNKNOW\020\000\022\034\n\030E_DISPAT"
+      "CH_MANAGER_READY\020\001\022\034\n\030E_DISPATCH_MANAGER"
+      "_STORE\020\002\022\035\n\031E_DISPATCH_MANAGER_PICKUP\020\003\022"
+      "\034\n\030E_DISPATCH_MANAGER_FAULT\020d*\200\003\n\026Dispat"
+      "ch_device_status\022\032\n\026DISPATCH_DEVICE_UNKN"
+      "OW\020\000\022\031\n\025DISPATCH_DEVICE_READY\020\001\022\030\n\024DISPA"
+      "TCH_DEVICE_BUSY\020\002\022\"\n\036DISPATCH_DEVICE_ONE"
+      "_LEVEL_OVER\020\003\022\"\n\036DISPATCH_DEVICE_ONE_LEV"
+      "EL_WORK\020\004\022\"\n\036DISPATCH_DEVICE_TWO_LEVEL_O"
+      "VER\020\005\022\"\n\036DISPATCH_DEVICE_TWO_LEVEL_WORK\020"
+      "\006\022$\n DISPATCH_DEVICE_THREE_LEVEL_OVER\020\007\022"
+      "$\n DISPATCH_DEVICE_THREE_LEVEL_WORK\020\010\022\031\n"
+      "\025DISPATCH_DEVICE_FAULT\020d\022\036\n\032DISPATCH_DEV"
+      "ICE_DISCONNECT\020e*n\n\023Dispatch_task_level\022"
+      "\033\n\027DISPATCH_TASK_ONE_LEVEL\020\001\022\033\n\027DISPATCH"
+      "_TASK_TWO_LEVEL\020\002\022\035\n\031DISPATCH_TASK_THREE"
+      "_LEVEL\020\003*K\n\014Clamp_motion\022\025\n\021E_CLAMP_NO_A"
+      "CTION\020\000\022\021\n\rE_CLAMP_TIGHT\020\001\022\021\n\rE_CLAMP_LO"
+      "OSE\020\002*R\n\014Joint_motion\022\025\n\021E_JOINT_NO_ACTI"
+      "ON\020\000\022\024\n\020E_JOINT_HOLD_OUT\020\001\022\025\n\021E_JOINT_TA"
+      "KE_BACK\020\002*y\n\027Small_sports_car_motion\022\034\n\030"
+      "E_SMALL_SPORTS_NO_ACTION\020\000\022\037\n\033E_SMALL_SP"
+      "ORTS_CAR_GET_AWAY\020\001\022\037\n\033E_SMALL_SPORTS_CA"
+      "R_GET_BACK\020\002*l\n\016Respons_status\022\023\n\017RESPON"
+      "S_WORKING\020\000\022\020\n\014RESPONS_OVER\020\001\022\027\n\023RESPONS"
+      "_MINOR_ERROR\020d\022\032\n\026RESPONS_CRITICAL_ERROR"
+      "\020e*\252\001\n\026Hardware_device_status\022\022\n\016DEVICE_"
+      "UNKNOWN\020\000\022\020\n\014DEVICE_READY\020\001\022\022\n\016DEVICE_WO"
+      "RKING\020\002\022\031\n\025DEVICE_EMERGENCY_STOP\020\003\022\023\n\017DE"
+      "VICE_UNSAFETY\020\004\022\024\n\020DEVICE_COLLISION\020\005\022\020\n"
+      "\014DEVICE_FAULT\020\006*9\n\013Load_status\022\020\n\014LOAD_U"
+      "NKNOWN\020\000\022\014\n\010HAVE_CAR\020\001\022\n\n\006NO_CAR\020\002*w\n\023Tu"
+      "rntable_direction\022\037\n\033TURNTABLE_DIRECTION"
+      "_UNKNOWN\020\000\022\036\n\032TURNTABLE_DIRECTION_INSIDE"
+      "\020\001\022\037\n\033TURNTABLE_DIRECTION_OUTSIDE\020\002*N\n\013D"
+      "oor_motion\022\020\n\014DOOR_UNKNOWN\020\000\022\r\n\tDOOR_OPE"
+      "N\020\001\022\016\n\nDOOR_CLOSE\020\002\022\016\n\nDOOR_ERROR\020\003*C\n\025O"
+      "verstep_the_boundary\022\023\n\017BOUNDARY_NORMAL\020"
+      "\000\022\025\n\021BOUNDARY_OVERSTEP\020\001"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 5588);
+      descriptor, 5624);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "dispatch_message.proto", &protobuf_RegisterTypes);
   ::protobuf_message_5fbase_2eproto::AddDescriptors();
@@ -1325,6 +1328,8 @@ void Dispatch_terminal_status_msg::InternalSwap(Dispatch_terminal_status_msg* ot
 void Dispatch_request_msg::InitAsDefaultInstance() {
   ::message::_Dispatch_request_msg_default_instance_._instance.get_mutable()->base_info_ = const_cast< ::message::Base_info*>(
       ::message::Base_info::internal_default_instance());
+  ::message::_Dispatch_request_msg_default_instance_._instance.get_mutable()->id_struct_ = const_cast< ::message::Id_struct*>(
+      ::message::Id_struct::internal_default_instance());
   ::message::_Dispatch_request_msg_default_instance_._instance.get_mutable()->locate_information_ = const_cast< ::message::Locate_information*>(
       ::message::Locate_information::internal_default_instance());
 }
@@ -1332,6 +1337,10 @@ void Dispatch_request_msg::clear_base_info() {
   if (base_info_ != NULL) base_info_->Clear();
   clear_has_base_info();
 }
+void Dispatch_request_msg::clear_id_struct() {
+  if (id_struct_ != NULL) id_struct_->Clear();
+  clear_has_id_struct();
+}
 void Dispatch_request_msg::clear_locate_information() {
   if (locate_information_ != NULL) locate_information_->Clear();
   clear_has_locate_information();
@@ -1343,7 +1352,7 @@ void Dispatch_request_msg::clear_parkspace_info_ex() {
 const int Dispatch_request_msg::kBaseInfoFieldNumber;
 const int Dispatch_request_msg::kCommandKeyFieldNumber;
 const int Dispatch_request_msg::kDispatchMotionDirectionFieldNumber;
-const int Dispatch_request_msg::kTerminalIdFieldNumber;
+const int Dispatch_request_msg::kIdStructFieldNumber;
 const int Dispatch_request_msg::kLocateInformationFieldNumber;
 const int Dispatch_request_msg::kParkspaceInfoExFieldNumber;
 const int Dispatch_request_msg::kCarTypeFieldNumber;
@@ -1373,6 +1382,11 @@ Dispatch_request_msg::Dispatch_request_msg(const Dispatch_request_msg& from)
   } else {
     base_info_ = NULL;
   }
+  if (from.has_id_struct()) {
+    id_struct_ = new ::message::Id_struct(*from.id_struct_);
+  } else {
+    id_struct_ = NULL;
+  }
   if (from.has_locate_information()) {
     locate_information_ = new ::message::Locate_information(*from.locate_information_);
   } else {
@@ -1400,6 +1414,7 @@ Dispatch_request_msg::~Dispatch_request_msg() {
 void Dispatch_request_msg::SharedDtor() {
   command_key_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (this != internal_default_instance()) delete base_info_;
+  if (this != internal_default_instance()) delete id_struct_;
   if (this != internal_default_instance()) delete locate_information_;
 }
 
@@ -1434,7 +1449,7 @@ void Dispatch_request_msg::Clear() {
 
   parkspace_info_ex_.Clear();
   cached_has_bits = _has_bits_[0];
-  if (cached_has_bits & 7u) {
+  if (cached_has_bits & 15u) {
     if (cached_has_bits & 0x00000001u) {
       GOOGLE_DCHECK(!command_key_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
       (*command_key_.UnsafeRawStringPointer())->clear();
@@ -1444,11 +1459,15 @@ void Dispatch_request_msg::Clear() {
       base_info_->Clear();
     }
     if (cached_has_bits & 0x00000004u) {
+      GOOGLE_DCHECK(id_struct_ != NULL);
+      id_struct_->Clear();
+    }
+    if (cached_has_bits & 0x00000008u) {
       GOOGLE_DCHECK(locate_information_ != NULL);
       locate_information_->Clear();
     }
   }
-  if (cached_has_bits & 56u) {
+  if (cached_has_bits & 48u) {
     ::memset(&dispatch_motion_direction_, 0, static_cast<size_t>(
         reinterpret_cast<char*>(&car_type_) -
         reinterpret_cast<char*>(&dispatch_motion_direction_)) + sizeof(car_type_));
@@ -1515,14 +1534,12 @@ bool Dispatch_request_msg::MergePartialFromCodedStream(
         break;
       }
 
-      // optional int32 terminal_id = 4;
+      // optional .message.Id_struct id_struct = 4;
       case 4: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
-          set_has_terminal_id();
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &terminal_id_)));
+            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_id_struct()));
         } else {
           goto handle_unusual;
         }
@@ -1616,18 +1633,19 @@ void Dispatch_request_msg::SerializeWithCachedSizes(
   }
 
   // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
-  if (cached_has_bits & 0x00000008u) {
+  if (cached_has_bits & 0x00000010u) {
     ::google::protobuf::internal::WireFormatLite::WriteEnum(
       3, this->dispatch_motion_direction(), output);
   }
 
-  // optional int32 terminal_id = 4;
-  if (cached_has_bits & 0x00000010u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->terminal_id(), output);
+  // optional .message.Id_struct id_struct = 4;
+  if (cached_has_bits & 0x00000004u) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, *this->id_struct_, output);
   }
 
   // optional .message.Locate_information locate_information = 5;
-  if (cached_has_bits & 0x00000004u) {
+  if (cached_has_bits & 0x00000008u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
       5, *this->locate_information_, output);
   }
@@ -1679,18 +1697,20 @@ void Dispatch_request_msg::SerializeWithCachedSizes(
   }
 
   // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
-  if (cached_has_bits & 0x00000008u) {
+  if (cached_has_bits & 0x00000010u) {
     target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
       3, this->dispatch_motion_direction(), target);
   }
 
-  // optional int32 terminal_id = 4;
-  if (cached_has_bits & 0x00000010u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->terminal_id(), target);
+  // optional .message.Id_struct id_struct = 4;
+  if (cached_has_bits & 0x00000004u) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, *this->id_struct_, deterministic, target);
   }
 
   // optional .message.Locate_information locate_information = 5;
-  if (cached_has_bits & 0x00000004u) {
+  if (cached_has_bits & 0x00000008u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
         5, *this->locate_information_, deterministic, target);
@@ -1773,6 +1793,13 @@ size_t Dispatch_request_msg::ByteSizeLong() const {
   }
 
   if (_has_bits_[0 / 32] & 60u) {
+    // optional .message.Id_struct id_struct = 4;
+    if (has_id_struct()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *this->id_struct_);
+    }
+
     // optional .message.Locate_information locate_information = 5;
     if (has_locate_information()) {
       total_size += 1 +
@@ -1786,13 +1813,6 @@ size_t Dispatch_request_msg::ByteSizeLong() const {
         ::google::protobuf::internal::WireFormatLite::EnumSize(this->dispatch_motion_direction());
     }
 
-    // optional int32 terminal_id = 4;
-    if (has_terminal_id()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::Int32Size(
-          this->terminal_id());
-    }
-
     // optional .message.Car_type car_type = 7;
     if (has_car_type()) {
       total_size += 1 +
@@ -1840,13 +1860,13 @@ void Dispatch_request_msg::MergeFrom(const Dispatch_request_msg& from) {
       mutable_base_info()->::message::Base_info::MergeFrom(from.base_info());
     }
     if (cached_has_bits & 0x00000004u) {
-      mutable_locate_information()->::message::Locate_information::MergeFrom(from.locate_information());
+      mutable_id_struct()->::message::Id_struct::MergeFrom(from.id_struct());
     }
     if (cached_has_bits & 0x00000008u) {
-      dispatch_motion_direction_ = from.dispatch_motion_direction_;
+      mutable_locate_information()->::message::Locate_information::MergeFrom(from.locate_information());
     }
     if (cached_has_bits & 0x00000010u) {
-      terminal_id_ = from.terminal_id_;
+      dispatch_motion_direction_ = from.dispatch_motion_direction_;
     }
     if (cached_has_bits & 0x00000020u) {
       car_type_ = from.car_type_;
@@ -1886,9 +1906,9 @@ void Dispatch_request_msg::InternalSwap(Dispatch_request_msg* other) {
   parkspace_info_ex_.InternalSwap(&other->parkspace_info_ex_);
   command_key_.Swap(&other->command_key_);
   swap(base_info_, other->base_info_);
+  swap(id_struct_, other->id_struct_);
   swap(locate_information_, other->locate_information_);
   swap(dispatch_motion_direction_, other->dispatch_motion_direction_);
-  swap(terminal_id_, other->terminal_id_);
   swap(car_type_, other->car_type_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
@@ -1906,6 +1926,8 @@ void Dispatch_request_msg::InternalSwap(Dispatch_request_msg* other) {
 void Dispatch_response_msg::InitAsDefaultInstance() {
   ::message::_Dispatch_response_msg_default_instance_._instance.get_mutable()->base_info_ = const_cast< ::message::Base_info*>(
       ::message::Base_info::internal_default_instance());
+  ::message::_Dispatch_response_msg_default_instance_._instance.get_mutable()->id_struct_ = const_cast< ::message::Id_struct*>(
+      ::message::Id_struct::internal_default_instance());
   ::message::_Dispatch_response_msg_default_instance_._instance.get_mutable()->locate_information_ = const_cast< ::message::Locate_information*>(
       ::message::Locate_information::internal_default_instance());
   ::message::_Dispatch_response_msg_default_instance_._instance.get_mutable()->error_manager_ = const_cast< ::message::Error_manager*>(
@@ -1915,6 +1937,10 @@ void Dispatch_response_msg::clear_base_info() {
   if (base_info_ != NULL) base_info_->Clear();
   clear_has_base_info();
 }
+void Dispatch_response_msg::clear_id_struct() {
+  if (id_struct_ != NULL) id_struct_->Clear();
+  clear_has_id_struct();
+}
 void Dispatch_response_msg::clear_locate_information() {
   if (locate_information_ != NULL) locate_information_->Clear();
   clear_has_locate_information();
@@ -1930,7 +1956,7 @@ void Dispatch_response_msg::clear_error_manager() {
 const int Dispatch_response_msg::kBaseInfoFieldNumber;
 const int Dispatch_response_msg::kCommandKeyFieldNumber;
 const int Dispatch_response_msg::kDispatchMotionDirectionFieldNumber;
-const int Dispatch_response_msg::kTerminalIdFieldNumber;
+const int Dispatch_response_msg::kIdStructFieldNumber;
 const int Dispatch_response_msg::kLocateInformationFieldNumber;
 const int Dispatch_response_msg::kParkspaceInfoExFieldNumber;
 const int Dispatch_response_msg::kCarTypeFieldNumber;
@@ -1961,6 +1987,11 @@ Dispatch_response_msg::Dispatch_response_msg(const Dispatch_response_msg& from)
   } else {
     base_info_ = NULL;
   }
+  if (from.has_id_struct()) {
+    id_struct_ = new ::message::Id_struct(*from.id_struct_);
+  } else {
+    id_struct_ = NULL;
+  }
   if (from.has_locate_information()) {
     locate_information_ = new ::message::Locate_information(*from.locate_information_);
   } else {
@@ -1993,6 +2024,7 @@ Dispatch_response_msg::~Dispatch_response_msg() {
 void Dispatch_response_msg::SharedDtor() {
   command_key_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (this != internal_default_instance()) delete base_info_;
+  if (this != internal_default_instance()) delete id_struct_;
   if (this != internal_default_instance()) delete locate_information_;
   if (this != internal_default_instance()) delete error_manager_;
 }
@@ -2028,7 +2060,7 @@ void Dispatch_response_msg::Clear() {
 
   parkspace_info_ex_.Clear();
   cached_has_bits = _has_bits_[0];
-  if (cached_has_bits & 15u) {
+  if (cached_has_bits & 31u) {
     if (cached_has_bits & 0x00000001u) {
       GOOGLE_DCHECK(!command_key_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
       (*command_key_.UnsafeRawStringPointer())->clear();
@@ -2038,15 +2070,19 @@ void Dispatch_response_msg::Clear() {
       base_info_->Clear();
     }
     if (cached_has_bits & 0x00000004u) {
+      GOOGLE_DCHECK(id_struct_ != NULL);
+      id_struct_->Clear();
+    }
+    if (cached_has_bits & 0x00000008u) {
       GOOGLE_DCHECK(locate_information_ != NULL);
       locate_information_->Clear();
     }
-    if (cached_has_bits & 0x00000008u) {
+    if (cached_has_bits & 0x00000010u) {
       GOOGLE_DCHECK(error_manager_ != NULL);
       error_manager_->Clear();
     }
   }
-  if (cached_has_bits & 112u) {
+  if (cached_has_bits & 96u) {
     ::memset(&dispatch_motion_direction_, 0, static_cast<size_t>(
         reinterpret_cast<char*>(&car_type_) -
         reinterpret_cast<char*>(&dispatch_motion_direction_)) + sizeof(car_type_));
@@ -2113,14 +2149,12 @@ bool Dispatch_response_msg::MergePartialFromCodedStream(
         break;
       }
 
-      // optional int32 terminal_id = 4;
+      // optional .message.Id_struct id_struct = 4;
       case 4: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
-          set_has_terminal_id();
-          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
-                 input, &terminal_id_)));
+            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_id_struct()));
         } else {
           goto handle_unusual;
         }
@@ -2226,18 +2260,19 @@ void Dispatch_response_msg::SerializeWithCachedSizes(
   }
 
   // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
-  if (cached_has_bits & 0x00000010u) {
+  if (cached_has_bits & 0x00000020u) {
     ::google::protobuf::internal::WireFormatLite::WriteEnum(
       3, this->dispatch_motion_direction(), output);
   }
 
-  // optional int32 terminal_id = 4;
-  if (cached_has_bits & 0x00000020u) {
-    ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->terminal_id(), output);
+  // optional .message.Id_struct id_struct = 4;
+  if (cached_has_bits & 0x00000004u) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, *this->id_struct_, output);
   }
 
   // optional .message.Locate_information locate_information = 5;
-  if (cached_has_bits & 0x00000004u) {
+  if (cached_has_bits & 0x00000008u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
       5, *this->locate_information_, output);
   }
@@ -2256,7 +2291,7 @@ void Dispatch_response_msg::SerializeWithCachedSizes(
   }
 
   // optional .message.Error_manager error_manager = 8;
-  if (cached_has_bits & 0x00000008u) {
+  if (cached_has_bits & 0x00000010u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
       8, *this->error_manager_, output);
   }
@@ -2295,18 +2330,20 @@ void Dispatch_response_msg::SerializeWithCachedSizes(
   }
 
   // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
-  if (cached_has_bits & 0x00000010u) {
+  if (cached_has_bits & 0x00000020u) {
     target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
       3, this->dispatch_motion_direction(), target);
   }
 
-  // optional int32 terminal_id = 4;
-  if (cached_has_bits & 0x00000020u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->terminal_id(), target);
+  // optional .message.Id_struct id_struct = 4;
+  if (cached_has_bits & 0x00000004u) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, *this->id_struct_, deterministic, target);
   }
 
   // optional .message.Locate_information locate_information = 5;
-  if (cached_has_bits & 0x00000004u) {
+  if (cached_has_bits & 0x00000008u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
         5, *this->locate_information_, deterministic, target);
@@ -2327,7 +2364,7 @@ void Dispatch_response_msg::SerializeWithCachedSizes(
   }
 
   // optional .message.Error_manager error_manager = 8;
-  if (cached_has_bits & 0x00000008u) {
+  if (cached_has_bits & 0x00000010u) {
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
         8, *this->error_manager_, deterministic, target);
@@ -2396,6 +2433,13 @@ size_t Dispatch_response_msg::ByteSizeLong() const {
   }
 
   if (_has_bits_[0 / 32] & 124u) {
+    // optional .message.Id_struct id_struct = 4;
+    if (has_id_struct()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *this->id_struct_);
+    }
+
     // optional .message.Locate_information locate_information = 5;
     if (has_locate_information()) {
       total_size += 1 +
@@ -2416,13 +2460,6 @@ size_t Dispatch_response_msg::ByteSizeLong() const {
         ::google::protobuf::internal::WireFormatLite::EnumSize(this->dispatch_motion_direction());
     }
 
-    // optional int32 terminal_id = 4;
-    if (has_terminal_id()) {
-      total_size += 1 +
-        ::google::protobuf::internal::WireFormatLite::Int32Size(
-          this->terminal_id());
-    }
-
     // optional .message.Car_type car_type = 7;
     if (has_car_type()) {
       total_size += 1 +
@@ -2470,16 +2507,16 @@ void Dispatch_response_msg::MergeFrom(const Dispatch_response_msg& from) {
       mutable_base_info()->::message::Base_info::MergeFrom(from.base_info());
     }
     if (cached_has_bits & 0x00000004u) {
-      mutable_locate_information()->::message::Locate_information::MergeFrom(from.locate_information());
+      mutable_id_struct()->::message::Id_struct::MergeFrom(from.id_struct());
     }
     if (cached_has_bits & 0x00000008u) {
-      mutable_error_manager()->::message::Error_manager::MergeFrom(from.error_manager());
+      mutable_locate_information()->::message::Locate_information::MergeFrom(from.locate_information());
     }
     if (cached_has_bits & 0x00000010u) {
-      dispatch_motion_direction_ = from.dispatch_motion_direction_;
+      mutable_error_manager()->::message::Error_manager::MergeFrom(from.error_manager());
     }
     if (cached_has_bits & 0x00000020u) {
-      terminal_id_ = from.terminal_id_;
+      dispatch_motion_direction_ = from.dispatch_motion_direction_;
     }
     if (cached_has_bits & 0x00000040u) {
       car_type_ = from.car_type_;
@@ -2522,10 +2559,10 @@ void Dispatch_response_msg::InternalSwap(Dispatch_response_msg* other) {
   parkspace_info_ex_.InternalSwap(&other->parkspace_info_ex_);
   command_key_.Swap(&other->command_key_);
   swap(base_info_, other->base_info_);
+  swap(id_struct_, other->id_struct_);
   swap(locate_information_, other->locate_information_);
   swap(error_manager_, other->error_manager_);
   swap(dispatch_motion_direction_, other->dispatch_motion_direction_);
-  swap(terminal_id_, other->terminal_id_);
   swap(car_type_, other->car_type_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);

+ 125 - 69
message/dispatch_message.pb.h

@@ -687,6 +687,15 @@ class Dispatch_request_msg : public ::google::protobuf::Message /* @@protoc_inse
   ::message::Base_info* mutable_base_info();
   void set_allocated_base_info(::message::Base_info* base_info);
 
+  // optional .message.Id_struct id_struct = 4;
+  bool has_id_struct() const;
+  void clear_id_struct();
+  static const int kIdStructFieldNumber = 4;
+  const ::message::Id_struct& id_struct() const;
+  ::message::Id_struct* release_id_struct();
+  ::message::Id_struct* mutable_id_struct();
+  void set_allocated_id_struct(::message::Id_struct* id_struct);
+
   // optional .message.Locate_information locate_information = 5;
   bool has_locate_information() const;
   void clear_locate_information();
@@ -703,13 +712,6 @@ class Dispatch_request_msg : public ::google::protobuf::Message /* @@protoc_inse
   ::message::Dispatch_motion_direction dispatch_motion_direction() const;
   void set_dispatch_motion_direction(::message::Dispatch_motion_direction value);
 
-  // optional int32 terminal_id = 4;
-  bool has_terminal_id() const;
-  void clear_terminal_id();
-  static const int kTerminalIdFieldNumber = 4;
-  ::google::protobuf::int32 terminal_id() const;
-  void set_terminal_id(::google::protobuf::int32 value);
-
   // optional .message.Car_type car_type = 7;
   bool has_car_type() const;
   void clear_car_type();
@@ -725,8 +727,8 @@ class Dispatch_request_msg : public ::google::protobuf::Message /* @@protoc_inse
   void clear_has_command_key();
   void set_has_dispatch_motion_direction();
   void clear_has_dispatch_motion_direction();
-  void set_has_terminal_id();
-  void clear_has_terminal_id();
+  void set_has_id_struct();
+  void clear_has_id_struct();
   void set_has_locate_information();
   void clear_has_locate_information();
   void set_has_car_type();
@@ -741,9 +743,9 @@ class Dispatch_request_msg : public ::google::protobuf::Message /* @@protoc_inse
   ::google::protobuf::RepeatedPtrField< ::message::Parkspace_info > parkspace_info_ex_;
   ::google::protobuf::internal::ArenaStringPtr command_key_;
   ::message::Base_info* base_info_;
+  ::message::Id_struct* id_struct_;
   ::message::Locate_information* locate_information_;
   int dispatch_motion_direction_;
-  ::google::protobuf::int32 terminal_id_;
   int car_type_;
   friend struct ::protobuf_dispatch_5fmessage_2eproto::TableStruct;
   friend void ::protobuf_dispatch_5fmessage_2eproto::InitDefaultsDispatch_request_msgImpl();
@@ -875,6 +877,15 @@ class Dispatch_response_msg : public ::google::protobuf::Message /* @@protoc_ins
   ::message::Base_info* mutable_base_info();
   void set_allocated_base_info(::message::Base_info* base_info);
 
+  // optional .message.Id_struct id_struct = 4;
+  bool has_id_struct() const;
+  void clear_id_struct();
+  static const int kIdStructFieldNumber = 4;
+  const ::message::Id_struct& id_struct() const;
+  ::message::Id_struct* release_id_struct();
+  ::message::Id_struct* mutable_id_struct();
+  void set_allocated_id_struct(::message::Id_struct* id_struct);
+
   // optional .message.Locate_information locate_information = 5;
   bool has_locate_information() const;
   void clear_locate_information();
@@ -900,13 +911,6 @@ class Dispatch_response_msg : public ::google::protobuf::Message /* @@protoc_ins
   ::message::Dispatch_motion_direction dispatch_motion_direction() const;
   void set_dispatch_motion_direction(::message::Dispatch_motion_direction value);
 
-  // optional int32 terminal_id = 4;
-  bool has_terminal_id() const;
-  void clear_terminal_id();
-  static const int kTerminalIdFieldNumber = 4;
-  ::google::protobuf::int32 terminal_id() const;
-  void set_terminal_id(::google::protobuf::int32 value);
-
   // optional .message.Car_type car_type = 7;
   bool has_car_type() const;
   void clear_car_type();
@@ -922,8 +926,8 @@ class Dispatch_response_msg : public ::google::protobuf::Message /* @@protoc_ins
   void clear_has_command_key();
   void set_has_dispatch_motion_direction();
   void clear_has_dispatch_motion_direction();
-  void set_has_terminal_id();
-  void clear_has_terminal_id();
+  void set_has_id_struct();
+  void clear_has_id_struct();
   void set_has_locate_information();
   void clear_has_locate_information();
   void set_has_car_type();
@@ -940,10 +944,10 @@ class Dispatch_response_msg : public ::google::protobuf::Message /* @@protoc_ins
   ::google::protobuf::RepeatedPtrField< ::message::Parkspace_info > parkspace_info_ex_;
   ::google::protobuf::internal::ArenaStringPtr command_key_;
   ::message::Base_info* base_info_;
+  ::message::Id_struct* id_struct_;
   ::message::Locate_information* locate_information_;
   ::message::Error_manager* error_manager_;
   int dispatch_motion_direction_;
-  ::google::protobuf::int32 terminal_id_;
   int car_type_;
   friend struct ::protobuf_dispatch_5fmessage_2eproto::TableStruct;
   friend void ::protobuf_dispatch_5fmessage_2eproto::InitDefaultsDispatch_response_msgImpl();
@@ -2407,13 +2411,13 @@ inline void Dispatch_request_msg::set_allocated_command_key(::std::string* comma
 
 // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
 inline bool Dispatch_request_msg::has_dispatch_motion_direction() const {
-  return (_has_bits_[0] & 0x00000008u) != 0;
+  return (_has_bits_[0] & 0x00000010u) != 0;
 }
 inline void Dispatch_request_msg::set_has_dispatch_motion_direction() {
-  _has_bits_[0] |= 0x00000008u;
+  _has_bits_[0] |= 0x00000010u;
 }
 inline void Dispatch_request_msg::clear_has_dispatch_motion_direction() {
-  _has_bits_[0] &= ~0x00000008u;
+  _has_bits_[0] &= ~0x00000010u;
 }
 inline void Dispatch_request_msg::clear_dispatch_motion_direction() {
   dispatch_motion_direction_ = 0;
@@ -2430,39 +2434,65 @@ inline void Dispatch_request_msg::set_dispatch_motion_direction(::message::Dispa
   // @@protoc_insertion_point(field_set:message.Dispatch_request_msg.dispatch_motion_direction)
 }
 
-// optional int32 terminal_id = 4;
-inline bool Dispatch_request_msg::has_terminal_id() const {
-  return (_has_bits_[0] & 0x00000010u) != 0;
+// optional .message.Id_struct id_struct = 4;
+inline bool Dispatch_request_msg::has_id_struct() const {
+  return (_has_bits_[0] & 0x00000004u) != 0;
 }
-inline void Dispatch_request_msg::set_has_terminal_id() {
-  _has_bits_[0] |= 0x00000010u;
+inline void Dispatch_request_msg::set_has_id_struct() {
+  _has_bits_[0] |= 0x00000004u;
 }
-inline void Dispatch_request_msg::clear_has_terminal_id() {
-  _has_bits_[0] &= ~0x00000010u;
+inline void Dispatch_request_msg::clear_has_id_struct() {
+  _has_bits_[0] &= ~0x00000004u;
 }
-inline void Dispatch_request_msg::clear_terminal_id() {
-  terminal_id_ = 0;
-  clear_has_terminal_id();
+inline const ::message::Id_struct& Dispatch_request_msg::id_struct() const {
+  const ::message::Id_struct* p = id_struct_;
+  // @@protoc_insertion_point(field_get:message.Dispatch_request_msg.id_struct)
+  return p != NULL ? *p : *reinterpret_cast<const ::message::Id_struct*>(
+      &::message::_Id_struct_default_instance_);
+}
+inline ::message::Id_struct* Dispatch_request_msg::release_id_struct() {
+  // @@protoc_insertion_point(field_release:message.Dispatch_request_msg.id_struct)
+  clear_has_id_struct();
+  ::message::Id_struct* temp = id_struct_;
+  id_struct_ = NULL;
+  return temp;
 }
-inline ::google::protobuf::int32 Dispatch_request_msg::terminal_id() const {
-  // @@protoc_insertion_point(field_get:message.Dispatch_request_msg.terminal_id)
-  return terminal_id_;
+inline ::message::Id_struct* Dispatch_request_msg::mutable_id_struct() {
+  set_has_id_struct();
+  if (id_struct_ == NULL) {
+    id_struct_ = new ::message::Id_struct;
+  }
+  // @@protoc_insertion_point(field_mutable:message.Dispatch_request_msg.id_struct)
+  return id_struct_;
 }
-inline void Dispatch_request_msg::set_terminal_id(::google::protobuf::int32 value) {
-  set_has_terminal_id();
-  terminal_id_ = value;
-  // @@protoc_insertion_point(field_set:message.Dispatch_request_msg.terminal_id)
+inline void Dispatch_request_msg::set_allocated_id_struct(::message::Id_struct* id_struct) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(id_struct_);
+  }
+  if (id_struct) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      id_struct = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, id_struct, submessage_arena);
+    }
+    set_has_id_struct();
+  } else {
+    clear_has_id_struct();
+  }
+  id_struct_ = id_struct;
+  // @@protoc_insertion_point(field_set_allocated:message.Dispatch_request_msg.id_struct)
 }
 
 // optional .message.Locate_information locate_information = 5;
 inline bool Dispatch_request_msg::has_locate_information() const {
-  return (_has_bits_[0] & 0x00000004u) != 0;
+  return (_has_bits_[0] & 0x00000008u) != 0;
 }
 inline void Dispatch_request_msg::set_has_locate_information() {
-  _has_bits_[0] |= 0x00000004u;
+  _has_bits_[0] |= 0x00000008u;
 }
 inline void Dispatch_request_msg::clear_has_locate_information() {
-  _has_bits_[0] &= ~0x00000004u;
+  _has_bits_[0] &= ~0x00000008u;
 }
 inline const ::message::Locate_information& Dispatch_request_msg::locate_information() const {
   const ::message::Locate_information* p = locate_information_;
@@ -2675,13 +2705,13 @@ inline void Dispatch_response_msg::set_allocated_command_key(::std::string* comm
 
 // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
 inline bool Dispatch_response_msg::has_dispatch_motion_direction() const {
-  return (_has_bits_[0] & 0x00000010u) != 0;
+  return (_has_bits_[0] & 0x00000020u) != 0;
 }
 inline void Dispatch_response_msg::set_has_dispatch_motion_direction() {
-  _has_bits_[0] |= 0x00000010u;
+  _has_bits_[0] |= 0x00000020u;
 }
 inline void Dispatch_response_msg::clear_has_dispatch_motion_direction() {
-  _has_bits_[0] &= ~0x00000010u;
+  _has_bits_[0] &= ~0x00000020u;
 }
 inline void Dispatch_response_msg::clear_dispatch_motion_direction() {
   dispatch_motion_direction_ = 0;
@@ -2698,39 +2728,65 @@ inline void Dispatch_response_msg::set_dispatch_motion_direction(::message::Disp
   // @@protoc_insertion_point(field_set:message.Dispatch_response_msg.dispatch_motion_direction)
 }
 
-// optional int32 terminal_id = 4;
-inline bool Dispatch_response_msg::has_terminal_id() const {
-  return (_has_bits_[0] & 0x00000020u) != 0;
+// optional .message.Id_struct id_struct = 4;
+inline bool Dispatch_response_msg::has_id_struct() const {
+  return (_has_bits_[0] & 0x00000004u) != 0;
 }
-inline void Dispatch_response_msg::set_has_terminal_id() {
-  _has_bits_[0] |= 0x00000020u;
+inline void Dispatch_response_msg::set_has_id_struct() {
+  _has_bits_[0] |= 0x00000004u;
 }
-inline void Dispatch_response_msg::clear_has_terminal_id() {
-  _has_bits_[0] &= ~0x00000020u;
+inline void Dispatch_response_msg::clear_has_id_struct() {
+  _has_bits_[0] &= ~0x00000004u;
 }
-inline void Dispatch_response_msg::clear_terminal_id() {
-  terminal_id_ = 0;
-  clear_has_terminal_id();
+inline const ::message::Id_struct& Dispatch_response_msg::id_struct() const {
+  const ::message::Id_struct* p = id_struct_;
+  // @@protoc_insertion_point(field_get:message.Dispatch_response_msg.id_struct)
+  return p != NULL ? *p : *reinterpret_cast<const ::message::Id_struct*>(
+      &::message::_Id_struct_default_instance_);
+}
+inline ::message::Id_struct* Dispatch_response_msg::release_id_struct() {
+  // @@protoc_insertion_point(field_release:message.Dispatch_response_msg.id_struct)
+  clear_has_id_struct();
+  ::message::Id_struct* temp = id_struct_;
+  id_struct_ = NULL;
+  return temp;
 }
-inline ::google::protobuf::int32 Dispatch_response_msg::terminal_id() const {
-  // @@protoc_insertion_point(field_get:message.Dispatch_response_msg.terminal_id)
-  return terminal_id_;
+inline ::message::Id_struct* Dispatch_response_msg::mutable_id_struct() {
+  set_has_id_struct();
+  if (id_struct_ == NULL) {
+    id_struct_ = new ::message::Id_struct;
+  }
+  // @@protoc_insertion_point(field_mutable:message.Dispatch_response_msg.id_struct)
+  return id_struct_;
 }
-inline void Dispatch_response_msg::set_terminal_id(::google::protobuf::int32 value) {
-  set_has_terminal_id();
-  terminal_id_ = value;
-  // @@protoc_insertion_point(field_set:message.Dispatch_response_msg.terminal_id)
+inline void Dispatch_response_msg::set_allocated_id_struct(::message::Id_struct* id_struct) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(id_struct_);
+  }
+  if (id_struct) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      id_struct = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, id_struct, submessage_arena);
+    }
+    set_has_id_struct();
+  } else {
+    clear_has_id_struct();
+  }
+  id_struct_ = id_struct;
+  // @@protoc_insertion_point(field_set_allocated:message.Dispatch_response_msg.id_struct)
 }
 
 // optional .message.Locate_information locate_information = 5;
 inline bool Dispatch_response_msg::has_locate_information() const {
-  return (_has_bits_[0] & 0x00000004u) != 0;
+  return (_has_bits_[0] & 0x00000008u) != 0;
 }
 inline void Dispatch_response_msg::set_has_locate_information() {
-  _has_bits_[0] |= 0x00000004u;
+  _has_bits_[0] |= 0x00000008u;
 }
 inline void Dispatch_response_msg::clear_has_locate_information() {
-  _has_bits_[0] &= ~0x00000004u;
+  _has_bits_[0] &= ~0x00000008u;
 }
 inline const ::message::Locate_information& Dispatch_response_msg::locate_information() const {
   const ::message::Locate_information* p = locate_information_;
@@ -2826,13 +2882,13 @@ inline void Dispatch_response_msg::set_car_type(::message::Car_type value) {
 
 // optional .message.Error_manager error_manager = 8;
 inline bool Dispatch_response_msg::has_error_manager() const {
-  return (_has_bits_[0] & 0x00000008u) != 0;
+  return (_has_bits_[0] & 0x00000010u) != 0;
 }
 inline void Dispatch_response_msg::set_has_error_manager() {
-  _has_bits_[0] |= 0x00000008u;
+  _has_bits_[0] |= 0x00000010u;
 }
 inline void Dispatch_response_msg::clear_has_error_manager() {
-  _has_bits_[0] &= ~0x00000008u;
+  _has_bits_[0] &= ~0x00000010u;
 }
 inline const ::message::Error_manager& Dispatch_response_msg::error_manager() const {
   const ::message::Error_manager* p = error_manager_;

+ 2 - 3
message/dispatch_message.proto

@@ -48,7 +48,7 @@ message Dispatch_request_msg
     required string                     command_key=2;                   //指令唯一标识符id
 
     optional Dispatch_motion_direction  dispatch_motion_direction=3;            //调度方向, 停车取车
-    optional int32                      terminal_id=4;                          //终端id, 出入口
+    optional Id_struct                  id_struct=4;                              //id
     optional Locate_information         locate_information=5;                   //汽车测量信息, 只有停车时有数据, 取车时没有数据.
 
     repeated Parkspace_info             parkspace_info_ex=6;                         //车位编号, 停车位(B方案, 分配3个停车位)
@@ -61,9 +61,8 @@ message Dispatch_response_msg
     required Base_info                  base_info=1;                    //消息类型
     required string                     command_key=2;                   //指令唯一标识符id
 
-
     optional Dispatch_motion_direction  dispatch_motion_direction=3;            //调度方向, 停车取车
-    optional int32                      terminal_id=4;                          //终端id, 出入口
+    optional Id_struct                  id_struct=4;                              //id
     optional Locate_information         locate_information=5;                   //汽车测量信息, 只有停车时有数据, 取车时没有数据.
 
     repeated Parkspace_info             parkspace_info_ex=6;                         //车位编号, 停车位(B方案, 分配3个停车位)

+ 524 - 83
message/message_base.pb.cc

@@ -50,6 +50,11 @@ class Parkspace_infoDefaultTypeInternal {
   ::google::protobuf::internal::ExplicitlyConstructed<Parkspace_info>
       _instance;
 } _Parkspace_info_default_instance_;
+class Id_structDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<Id_struct>
+      _instance;
+} _Id_struct_default_instance_;
 }  // namespace message
 namespace protobuf_message_5fbase_2eproto {
 void InitDefaultsBase_infoImpl() {
@@ -180,7 +185,28 @@ void InitDefaultsParkspace_info() {
   ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsParkspace_infoImpl);
 }
 
-::google::protobuf::Metadata file_level_metadata[6];
+void InitDefaultsId_structImpl() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
+#else
+  ::google::protobuf::internal::InitProtobufDefaults();
+#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
+  {
+    void* ptr = &::message::_Id_struct_default_instance_;
+    new (ptr) ::message::Id_struct();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::message::Id_struct::InitAsDefaultInstance();
+}
+
+void InitDefaultsId_struct() {
+  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
+  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsId_structImpl);
+}
+
+::google::protobuf::Metadata file_level_metadata[7];
 const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors[12];
 
 const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
@@ -302,6 +328,19 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   14,
   15,
   16,
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Id_struct, _has_bits_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Id_struct, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Id_struct, terminal_id_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Id_struct, unit_id_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Id_struct, direction_),
+  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Id_struct, ip_address_),
+  1,
+  2,
+  3,
+  0,
 };
 static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
   { 0, 9, sizeof(::message::Base_info)},
@@ -310,6 +349,7 @@ static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROT
   { 31, 48, sizeof(::message::Locate_information)},
   { 60, 72, sizeof(::message::Car_info)},
   { 79, 101, sizeof(::message::Parkspace_info)},
+  { 118, 127, sizeof(::message::Id_struct)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -319,6 +359,7 @@ static ::google::protobuf::Message const * const file_default_instances[] = {
   reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Locate_information_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Car_info_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Parkspace_info_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::message::_Id_struct_default_instance_),
 };
 
 void protobuf_AssignDescriptors() {
@@ -337,7 +378,7 @@ 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, 6);
+  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 7);
 }
 
 void AddDescriptorsImpl() {
@@ -381,89 +422,92 @@ void AddDescriptorsImpl() {
       "message.Parkspace_path\022\032\n\022path_estimate_"
       "time\030\017 \001(\002\022:\n\027parkspace_status_target\030\020 "
       "\001(\0162\031.message.Parkspace_status\022#\n\010car_ty"
-      "pe\030\021 \001(\0162\021.message.Car_type*\307\014\n\014Message_"
-      "type\022\r\n\teBase_msg\020\000\022\020\n\014eCommand_msg\020\001\022\026\n"
-      "\022eLocate_status_msg\020\021\022\027\n\023eLocate_request"
-      "_msg\020\022\022\030\n\024eLocate_response_msg\020\023\022\034\n\030eLoc"
-      "ate_sift_request_msg\020\024\022\035\n\031eLocate_sift_r"
-      "esponse_msg\020\025\022\030\n\024eDispatch_status_msg\020!\022"
-      "\031\n\025eDispatch_request_msg\020\"\022\032\n\026eDispatch_"
-      "response_msg\020#\022$\n eParkspace_allocation_"
-      "status_msg\0201\022%\n!eParkspace_allocation_re"
-      "quest_msg\0202\022&\n\"eParkspace_allocation_res"
-      "ponse_msg\0203\022!\n\035eParkspace_search_request"
-      "_msg\0204\022\"\n\036eParkspace_search_response_msg"
-      "\0205\022\"\n\036eParkspace_release_request_msg\0206\022#"
-      "\n\037eParkspace_release_response_msg\0207\022\'\n#e"
-      "Parkspace_force_update_request_msg\0208\022(\n$"
-      "eParkspace_force_update_response_msg\0209\022("
-      "\n$eParkspace_confirm_alloc_request_msg\020:"
-      "\022)\n%eParkspace_confirm_alloc_response_ms"
-      "g\020;\022\"\n\036eParkspace_allocation_data_msg\020<\022"
-      "+\n\'eParkspace_allocation_data_response_m"
-      "sg\020=\022(\n$eParkspace_manual_search_request"
-      "_msg\020>\022)\n%eParkspace_manual_search_respo"
-      "nse_msg\020\?\022\036\n\032eStore_command_request_msg\020"
-      "A\022\037\n\033eStore_command_response_msg\020B\022\037\n\033eP"
-      "ickup_command_request_msg\020C\022 \n\034ePickup_c"
-      "ommand_response_msg\020D\022\030\n\024eTerminal_statu"
-      "s_msg\020P\022\037\n\032eStoring_process_statu_msg\020\220\001"
-      "\022\037\n\032ePicking_process_statu_msg\020\221\001\022\"\n\035eCe"
-      "ntral_controller_statu_msg\020\240\001\022#\n\036eEntran"
-      "ce_manual_operation_msg\020\260\001\022\"\n\035eProcess_m"
-      "anual_operation_msg\020\261\001\022\030\n\023eNotify_reques"
-      "t_msg\020\300\001\022\031\n\024eNotify_response_msg\020\301\001\022\027\n\022e"
-      "Notify_status_msg\020\302\001\022#\n\036eUnNormalized_mo"
-      "dule_statu_msg\020\320\001\022\037\n\032eDispatch_plan_requ"
-      "est_msg\020\340\001\022 \n\033eDispatch_plan_response_ms"
-      "g\020\341\001\022\"\n\035eDispatch_control_request_msg\020\342\001"
-      "\022#\n\036eDispatch_control_response_msg\020\343\001\022!\n"
-      "\034eDispatch_manager_status_msg\020\352\001\022\037\n\032eDis"
-      "patch_manager_data_msg\020\353\001\022\037\n\032eGround_det"
-      "ect_request_msg\020\360\001\022 \n\033eGround_detect_res"
-      "ponse_msg\020\361\001\022\027\n\022eGround_status_msg\020\362\001*\307\001"
-      "\n\014Communicator\022\n\n\006eEmpty\020\000\022\t\n\005eMain\020\001\022\016\n"
-      "\teTerminor\020\200\002\022\017\n\neParkspace\020\200\004\022\016\n\teMeasu"
-      "rer\020\200\006\022\032\n\025eMeasurer_sift_server\020\201\006\022\026\n\021eD"
-      "ispatch_manager\020\200\010\022\026\n\021eDispatch_control\020"
-      "\201\010\022\014\n\007eNotify\020\201\n\022\025\n\020eGround_measurer\020\200\036*"
-      "*\n\014Process_type\022\014\n\010eStoring\020\001\022\014\n\010ePickin"
-      "g\020\002*e\n\013Error_level\022\n\n\006NORMAL\020\000\022\024\n\020NEGLIG"
-      "IBLE_ERROR\020\001\022\017\n\013MINOR_ERROR\020\002\022\017\n\013MAJOR_E"
-      "RROR\020\003\022\022\n\016CRITICAL_ERROR\020\004*\245\001\n\020Parkspace"
-      "_status\022\034\n\030eParkspace_status_unknow\020\000\022\024\n"
-      "\020eParkspace_empty\020\001\022\027\n\023eParkspace_occupi"
-      "ed\020\002\022\027\n\023eParkspace_reserved\020\003\022\025\n\021eParksp"
-      "ace_locked\020\004\022\024\n\020eParkspace_error\020\005*\?\n\tDi"
-      "rection\022\025\n\021eDirection_unknow\020\000\022\014\n\010eForwa"
-      "rd\020\001\022\r\n\teBackward\020\002*l\n\016Parkspace_path\022\017\n"
-      "\013UNKNOW_PATH\020\000\022\020\n\014OPTIMAL_PATH\020\001\022\r\n\tLEFT"
-      "_PATH\020\002\022\016\n\nRIGHT_PATH\020\003\022\030\n\024TEMPORARY_CAC"
-      "HE_PATH\020\004*m\n\016Parkspace_type\022\031\n\025UNKNOW_PA"
-      "RKSPACE_TYPE\020\000\022\024\n\020MIN_PARKINGSPACE\020\001\022\024\n\020"
-      "MID_PARKINGSPACE\020\002\022\024\n\020BIG_PARKINGSPACE\020\003"
-      "*F\n\010Car_type\022\023\n\017UNKNOW_CAR_TYPE\020\000\022\013\n\007MIN"
-      "_CAR\020\001\022\013\n\007MID_CAR\020\002\022\013\n\007BIG_CAR\020\003*\335\002\n\tSte"
-      "p_type\022\017\n\013eAlloc_step\020\000\022\021\n\reMeasure_step"
-      "\020\001\022\021\n\reCompare_step\020\002\022\022\n\016eDispatch_step\020"
-      "\003\022\021\n\reConfirm_step\020\004\022\020\n\014eSearch_step\020\005\022\016"
-      "\n\neWait_step\020\006\022\021\n\reRelease_step\020\007\022\r\n\teCo"
-      "mplete\020\010\022\025\n\021eBackConfirm_step\020\t\022\026\n\022eBack"
-      "_compare_step\020\n\022\025\n\021eBackMeasure_step\020\013\022\023"
-      "\n\017eBackAlloc_step\020\014\022\022\n\016eBackWait_step\020\r\022"
-      "\026\n\022eBackDispatch_step\020\016\022\024\n\020eBackSearch_s"
-      "tep\020\017\022\021\n\reBackComplete\020\020*C\n\nStep_statu\022\014"
-      "\n\010eWaiting\020\000\022\014\n\010eWorking\020\001\022\n\n\006eError\020\002\022\r"
-      "\n\teFinished\020\003*\370\001\n\024Dispatch_device_type\022\013"
-      "\n\007ROBOT_1\020e\022\013\n\007ROBOT_2\020f\022\016\n\tCARRIER_1\020\310\001"
-      "\022\016\n\tCARRIER_2\020\317\001\022\016\n\tCARRIER_3\020\313\001\022\021\n\014PASS"
-      "AGEWAY_0\020\254\002\022\021\n\014PASSAGEWAY_1\020\255\002\022\021\n\014PASSAG"
-      "EWAY_2\020\256\002\022\021\n\014PASSAGEWAY_3\020\257\002\022\021\n\014PASSAGEW"
-      "AY_4\020\260\002\022\021\n\014PASSAGEWAY_5\020\261\002\022\021\n\014PASSAGEWAY"
-      "_6\020\262\002\022\021\n\014PASSAGEWAY_7\020\263\002"
+      "pe\030\021 \001(\0162\021.message.Car_type\"l\n\tId_struct"
+      "\022\023\n\013terminal_id\030\001 \001(\005\022\017\n\007unit_id\030\002 \001(\005\022%"
+      "\n\tdirection\030\003 \001(\0162\022.message.Direction\022\022\n"
+      "\nip_address\030\004 \001(\t*\307\014\n\014Message_type\022\r\n\teB"
+      "ase_msg\020\000\022\020\n\014eCommand_msg\020\001\022\026\n\022eLocate_s"
+      "tatus_msg\020\021\022\027\n\023eLocate_request_msg\020\022\022\030\n\024"
+      "eLocate_response_msg\020\023\022\034\n\030eLocate_sift_r"
+      "equest_msg\020\024\022\035\n\031eLocate_sift_response_ms"
+      "g\020\025\022\030\n\024eDispatch_status_msg\020!\022\031\n\025eDispat"
+      "ch_request_msg\020\"\022\032\n\026eDispatch_response_m"
+      "sg\020#\022$\n eParkspace_allocation_status_msg"
+      "\0201\022%\n!eParkspace_allocation_request_msg\020"
+      "2\022&\n\"eParkspace_allocation_response_msg\020"
+      "3\022!\n\035eParkspace_search_request_msg\0204\022\"\n\036"
+      "eParkspace_search_response_msg\0205\022\"\n\036ePar"
+      "kspace_release_request_msg\0206\022#\n\037eParkspa"
+      "ce_release_response_msg\0207\022\'\n#eParkspace_"
+      "force_update_request_msg\0208\022(\n$eParkspace"
+      "_force_update_response_msg\0209\022(\n$eParkspa"
+      "ce_confirm_alloc_request_msg\020:\022)\n%eParks"
+      "pace_confirm_alloc_response_msg\020;\022\"\n\036ePa"
+      "rkspace_allocation_data_msg\020<\022+\n\'eParksp"
+      "ace_allocation_data_response_msg\020=\022(\n$eP"
+      "arkspace_manual_search_request_msg\020>\022)\n%"
+      "eParkspace_manual_search_response_msg\020\?\022"
+      "\036\n\032eStore_command_request_msg\020A\022\037\n\033eStor"
+      "e_command_response_msg\020B\022\037\n\033ePickup_comm"
+      "and_request_msg\020C\022 \n\034ePickup_command_res"
+      "ponse_msg\020D\022\030\n\024eTerminal_status_msg\020P\022\037\n"
+      "\032eStoring_process_statu_msg\020\220\001\022\037\n\032ePicki"
+      "ng_process_statu_msg\020\221\001\022\"\n\035eCentral_cont"
+      "roller_statu_msg\020\240\001\022#\n\036eEntrance_manual_"
+      "operation_msg\020\260\001\022\"\n\035eProcess_manual_oper"
+      "ation_msg\020\261\001\022\030\n\023eNotify_request_msg\020\300\001\022\031"
+      "\n\024eNotify_response_msg\020\301\001\022\027\n\022eNotify_sta"
+      "tus_msg\020\302\001\022#\n\036eUnNormalized_module_statu"
+      "_msg\020\320\001\022\037\n\032eDispatch_plan_request_msg\020\340\001"
+      "\022 \n\033eDispatch_plan_response_msg\020\341\001\022\"\n\035eD"
+      "ispatch_control_request_msg\020\342\001\022#\n\036eDispa"
+      "tch_control_response_msg\020\343\001\022!\n\034eDispatch"
+      "_manager_status_msg\020\352\001\022\037\n\032eDispatch_mana"
+      "ger_data_msg\020\353\001\022\037\n\032eGround_detect_reques"
+      "t_msg\020\360\001\022 \n\033eGround_detect_response_msg\020"
+      "\361\001\022\027\n\022eGround_status_msg\020\362\001*\307\001\n\014Communic"
+      "ator\022\n\n\006eEmpty\020\000\022\t\n\005eMain\020\001\022\016\n\teTerminor"
+      "\020\200\002\022\017\n\neParkspace\020\200\004\022\016\n\teMeasurer\020\200\006\022\032\n\025"
+      "eMeasurer_sift_server\020\201\006\022\026\n\021eDispatch_ma"
+      "nager\020\200\010\022\026\n\021eDispatch_control\020\201\010\022\014\n\007eNot"
+      "ify\020\201\n\022\025\n\020eGround_measurer\020\200\036**\n\014Process"
+      "_type\022\014\n\010eStoring\020\001\022\014\n\010ePicking\020\002*e\n\013Err"
+      "or_level\022\n\n\006NORMAL\020\000\022\024\n\020NEGLIGIBLE_ERROR"
+      "\020\001\022\017\n\013MINOR_ERROR\020\002\022\017\n\013MAJOR_ERROR\020\003\022\022\n\016"
+      "CRITICAL_ERROR\020\004*\245\001\n\020Parkspace_status\022\034\n"
+      "\030eParkspace_status_unknow\020\000\022\024\n\020eParkspac"
+      "e_empty\020\001\022\027\n\023eParkspace_occupied\020\002\022\027\n\023eP"
+      "arkspace_reserved\020\003\022\025\n\021eParkspace_locked"
+      "\020\004\022\024\n\020eParkspace_error\020\005*\?\n\tDirection\022\025\n"
+      "\021eDirection_unknow\020\000\022\014\n\010eForward\020\001\022\r\n\teB"
+      "ackward\020\002*l\n\016Parkspace_path\022\017\n\013UNKNOW_PA"
+      "TH\020\000\022\020\n\014OPTIMAL_PATH\020\001\022\r\n\tLEFT_PATH\020\002\022\016\n"
+      "\nRIGHT_PATH\020\003\022\030\n\024TEMPORARY_CACHE_PATH\020\004*"
+      "m\n\016Parkspace_type\022\031\n\025UNKNOW_PARKSPACE_TY"
+      "PE\020\000\022\024\n\020MIN_PARKINGSPACE\020\001\022\024\n\020MID_PARKIN"
+      "GSPACE\020\002\022\024\n\020BIG_PARKINGSPACE\020\003*F\n\010Car_ty"
+      "pe\022\023\n\017UNKNOW_CAR_TYPE\020\000\022\013\n\007MIN_CAR\020\001\022\013\n\007"
+      "MID_CAR\020\002\022\013\n\007BIG_CAR\020\003*\335\002\n\tStep_type\022\017\n\013"
+      "eAlloc_step\020\000\022\021\n\reMeasure_step\020\001\022\021\n\reCom"
+      "pare_step\020\002\022\022\n\016eDispatch_step\020\003\022\021\n\reConf"
+      "irm_step\020\004\022\020\n\014eSearch_step\020\005\022\016\n\neWait_st"
+      "ep\020\006\022\021\n\reRelease_step\020\007\022\r\n\teComplete\020\010\022\025"
+      "\n\021eBackConfirm_step\020\t\022\026\n\022eBack_compare_s"
+      "tep\020\n\022\025\n\021eBackMeasure_step\020\013\022\023\n\017eBackAll"
+      "oc_step\020\014\022\022\n\016eBackWait_step\020\r\022\026\n\022eBackDi"
+      "spatch_step\020\016\022\024\n\020eBackSearch_step\020\017\022\021\n\re"
+      "BackComplete\020\020*C\n\nStep_statu\022\014\n\010eWaiting"
+      "\020\000\022\014\n\010eWorking\020\001\022\n\n\006eError\020\002\022\r\n\teFinishe"
+      "d\020\003*\370\001\n\024Dispatch_device_type\022\013\n\007ROBOT_1\020"
+      "e\022\013\n\007ROBOT_2\020f\022\016\n\tCARRIER_1\020\310\001\022\016\n\tCARRIE"
+      "R_2\020\317\001\022\016\n\tCARRIER_3\020\313\001\022\021\n\014PASSAGEWAY_0\020\254"
+      "\002\022\021\n\014PASSAGEWAY_1\020\255\002\022\021\n\014PASSAGEWAY_2\020\256\002\022"
+      "\021\n\014PASSAGEWAY_3\020\257\002\022\021\n\014PASSAGEWAY_4\020\260\002\022\021\n"
+      "\014PASSAGEWAY_5\020\261\002\022\021\n\014PASSAGEWAY_6\020\262\002\022\021\n\014P"
+      "ASSAGEWAY_7\020\263\002"
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 4704);
+      descriptor, 4814);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "message_base.proto", &protobuf_RegisterTypes);
 }
@@ -3869,6 +3913,403 @@ void Parkspace_info::InternalSwap(Parkspace_info* other) {
 }
 
 
+// ===================================================================
+
+void Id_struct::InitAsDefaultInstance() {
+}
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int Id_struct::kTerminalIdFieldNumber;
+const int Id_struct::kUnitIdFieldNumber;
+const int Id_struct::kDirectionFieldNumber;
+const int Id_struct::kIpAddressFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+Id_struct::Id_struct()
+  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
+    ::protobuf_message_5fbase_2eproto::InitDefaultsId_struct();
+  }
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:message.Id_struct)
+}
+Id_struct::Id_struct(const Id_struct& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(NULL),
+      _has_bits_(from._has_bits_),
+      _cached_size_(0) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ip_address_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.has_ip_address()) {
+    ip_address_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.ip_address_);
+  }
+  ::memcpy(&terminal_id_, &from.terminal_id_,
+    static_cast<size_t>(reinterpret_cast<char*>(&direction_) -
+    reinterpret_cast<char*>(&terminal_id_)) + sizeof(direction_));
+  // @@protoc_insertion_point(copy_constructor:message.Id_struct)
+}
+
+void Id_struct::SharedCtor() {
+  _cached_size_ = 0;
+  ip_address_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  ::memset(&terminal_id_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&direction_) -
+      reinterpret_cast<char*>(&terminal_id_)) + sizeof(direction_));
+}
+
+Id_struct::~Id_struct() {
+  // @@protoc_insertion_point(destructor:message.Id_struct)
+  SharedDtor();
+}
+
+void Id_struct::SharedDtor() {
+  ip_address_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void Id_struct::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* Id_struct::descriptor() {
+  ::protobuf_message_5fbase_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_message_5fbase_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
+}
+
+const Id_struct& Id_struct::default_instance() {
+  ::protobuf_message_5fbase_2eproto::InitDefaultsId_struct();
+  return *internal_default_instance();
+}
+
+Id_struct* Id_struct::New(::google::protobuf::Arena* arena) const {
+  Id_struct* n = new Id_struct;
+  if (arena != NULL) {
+    arena->Own(n);
+  }
+  return n;
+}
+
+void Id_struct::Clear() {
+// @@protoc_insertion_point(message_clear_start:message.Id_struct)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  cached_has_bits = _has_bits_[0];
+  if (cached_has_bits & 0x00000001u) {
+    GOOGLE_DCHECK(!ip_address_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
+    (*ip_address_.UnsafeRawStringPointer())->clear();
+  }
+  if (cached_has_bits & 14u) {
+    ::memset(&terminal_id_, 0, static_cast<size_t>(
+        reinterpret_cast<char*>(&direction_) -
+        reinterpret_cast<char*>(&terminal_id_)) + sizeof(direction_));
+  }
+  _has_bits_.Clear();
+  _internal_metadata_.Clear();
+}
+
+bool Id_struct::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:message.Id_struct)
+  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)) {
+      // optional int32 terminal_id = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(8u /* 8 & 0xFF */)) {
+          set_has_terminal_id();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &terminal_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // optional int32 unit_id = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
+          set_has_unit_id();
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &unit_id_)));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // optional .message.Direction direction = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
+          int value;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          if (::message::Direction_IsValid(value)) {
+            set_direction(static_cast< ::message::Direction >(value));
+          } else {
+            mutable_unknown_fields()->AddVarint(
+                3, static_cast< ::google::protobuf::uint64>(value));
+          }
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // optional string ip_address = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_ip_address()));
+          ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
+            this->ip_address().data(), static_cast<int>(this->ip_address().length()),
+            ::google::protobuf::internal::WireFormat::PARSE,
+            "message.Id_struct.ip_address");
+        } 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:message.Id_struct)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:message.Id_struct)
+  return false;
+#undef DO_
+}
+
+void Id_struct::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:message.Id_struct)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  cached_has_bits = _has_bits_[0];
+  // optional int32 terminal_id = 1;
+  if (cached_has_bits & 0x00000002u) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->terminal_id(), output);
+  }
+
+  // optional int32 unit_id = 2;
+  if (cached_has_bits & 0x00000004u) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->unit_id(), output);
+  }
+
+  // optional .message.Direction direction = 3;
+  if (cached_has_bits & 0x00000008u) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      3, this->direction(), output);
+  }
+
+  // optional string ip_address = 4;
+  if (cached_has_bits & 0x00000001u) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
+      this->ip_address().data(), static_cast<int>(this->ip_address().length()),
+      ::google::protobuf::internal::WireFormat::SERIALIZE,
+      "message.Id_struct.ip_address");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      4, this->ip_address(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:message.Id_struct)
+}
+
+::google::protobuf::uint8* Id_struct::InternalSerializeWithCachedSizesToArray(
+    bool deterministic, ::google::protobuf::uint8* target) const {
+  (void)deterministic; // Unused
+  // @@protoc_insertion_point(serialize_to_array_start:message.Id_struct)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  cached_has_bits = _has_bits_[0];
+  // optional int32 terminal_id = 1;
+  if (cached_has_bits & 0x00000002u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->terminal_id(), target);
+  }
+
+  // optional int32 unit_id = 2;
+  if (cached_has_bits & 0x00000004u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->unit_id(), target);
+  }
+
+  // optional .message.Direction direction = 3;
+  if (cached_has_bits & 0x00000008u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      3, this->direction(), target);
+  }
+
+  // optional string ip_address = 4;
+  if (cached_has_bits & 0x00000001u) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
+      this->ip_address().data(), static_cast<int>(this->ip_address().length()),
+      ::google::protobuf::internal::WireFormat::SERIALIZE,
+      "message.Id_struct.ip_address");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        4, this->ip_address(), 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:message.Id_struct)
+  return target;
+}
+
+size_t Id_struct::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:message.Id_struct)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  if (_has_bits_[0 / 32] & 15u) {
+    // optional string ip_address = 4;
+    if (has_ip_address()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::StringSize(
+          this->ip_address());
+    }
+
+    // optional int32 terminal_id = 1;
+    if (has_terminal_id()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->terminal_id());
+    }
+
+    // optional int32 unit_id = 2;
+    if (has_unit_id()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->unit_id());
+    }
+
+    // optional .message.Direction direction = 3;
+    if (has_direction()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::EnumSize(this->direction());
+    }
+
+  }
+  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 Id_struct::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:message.Id_struct)
+  GOOGLE_DCHECK_NE(&from, this);
+  const Id_struct* source =
+      ::google::protobuf::internal::DynamicCastToGenerated<const Id_struct>(
+          &from);
+  if (source == NULL) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:message.Id_struct)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:message.Id_struct)
+    MergeFrom(*source);
+  }
+}
+
+void Id_struct::MergeFrom(const Id_struct& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:message.Id_struct)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  cached_has_bits = from._has_bits_[0];
+  if (cached_has_bits & 15u) {
+    if (cached_has_bits & 0x00000001u) {
+      set_has_ip_address();
+      ip_address_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.ip_address_);
+    }
+    if (cached_has_bits & 0x00000002u) {
+      terminal_id_ = from.terminal_id_;
+    }
+    if (cached_has_bits & 0x00000004u) {
+      unit_id_ = from.unit_id_;
+    }
+    if (cached_has_bits & 0x00000008u) {
+      direction_ = from.direction_;
+    }
+    _has_bits_[0] |= cached_has_bits;
+  }
+}
+
+void Id_struct::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:message.Id_struct)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void Id_struct::CopyFrom(const Id_struct& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:message.Id_struct)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool Id_struct::IsInitialized() const {
+  return true;
+}
+
+void Id_struct::Swap(Id_struct* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void Id_struct::InternalSwap(Id_struct* other) {
+  using std::swap;
+  ip_address_.Swap(&other->ip_address_);
+  swap(terminal_id_, other->terminal_id_);
+  swap(unit_id_, other->unit_id_);
+  swap(direction_, other->direction_);
+  swap(_has_bits_[0], other->_has_bits_[0]);
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  swap(_cached_size_, other->_cached_size_);
+}
+
+::google::protobuf::Metadata Id_struct::GetMetadata() const {
+  protobuf_message_5fbase_2eproto::protobuf_AssignDescriptorsOnce();
+  return ::protobuf_message_5fbase_2eproto::file_level_metadata[kIndexInFileMessages];
+}
+
+
 // @@protoc_insertion_point(namespace_scope)
 }  // namespace message
 

+ 297 - 1
message/message_base.pb.h

@@ -37,7 +37,7 @@ namespace protobuf_message_5fbase_2eproto {
 struct TableStruct {
   static const ::google::protobuf::internal::ParseTableField entries[];
   static const ::google::protobuf::internal::AuxillaryParseTableField aux[];
-  static const ::google::protobuf::internal::ParseTable schema[6];
+  static const ::google::protobuf::internal::ParseTable schema[7];
   static const ::google::protobuf::internal::FieldMetadata field_metadata[];
   static const ::google::protobuf::internal::SerializationTable serialization_table[];
   static const ::google::protobuf::uint32 offsets[];
@@ -55,6 +55,8 @@ void InitDefaultsCar_infoImpl();
 void InitDefaultsCar_info();
 void InitDefaultsParkspace_infoImpl();
 void InitDefaultsParkspace_info();
+void InitDefaultsId_structImpl();
+void InitDefaultsId_struct();
 inline void InitDefaults() {
   InitDefaultsBase_info();
   InitDefaultsBase_msg();
@@ -62,6 +64,7 @@ inline void InitDefaults() {
   InitDefaultsLocate_information();
   InitDefaultsCar_info();
   InitDefaultsParkspace_info();
+  InitDefaultsId_struct();
 }
 }  // namespace protobuf_message_5fbase_2eproto
 namespace message {
@@ -77,6 +80,9 @@ extern Car_infoDefaultTypeInternal _Car_info_default_instance_;
 class Error_manager;
 class Error_managerDefaultTypeInternal;
 extern Error_managerDefaultTypeInternal _Error_manager_default_instance_;
+class Id_struct;
+class Id_structDefaultTypeInternal;
+extern Id_structDefaultTypeInternal _Id_struct_default_instance_;
 class Locate_information;
 class Locate_informationDefaultTypeInternal;
 extern Locate_informationDefaultTypeInternal _Locate_information_default_instance_;
@@ -1498,6 +1504,154 @@ class Parkspace_info : public ::google::protobuf::Message /* @@protoc_insertion_
   friend struct ::protobuf_message_5fbase_2eproto::TableStruct;
   friend void ::protobuf_message_5fbase_2eproto::InitDefaultsParkspace_infoImpl();
 };
+// -------------------------------------------------------------------
+
+class Id_struct : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:message.Id_struct) */ {
+ public:
+  Id_struct();
+  virtual ~Id_struct();
+
+  Id_struct(const Id_struct& from);
+
+  inline Id_struct& operator=(const Id_struct& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  Id_struct(Id_struct&& from) noexcept
+    : Id_struct() {
+    *this = ::std::move(from);
+  }
+
+  inline Id_struct& operator=(Id_struct&& 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 Id_struct& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const Id_struct* internal_default_instance() {
+    return reinterpret_cast<const Id_struct*>(
+               &_Id_struct_default_instance_);
+  }
+  static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
+    6;
+
+  void Swap(Id_struct* other);
+  friend void swap(Id_struct& a, Id_struct& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline Id_struct* New() const PROTOBUF_FINAL { return New(NULL); }
+
+  Id_struct* 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 Id_struct& from);
+  void MergeFrom(const Id_struct& 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(Id_struct* 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 -------------------------------------------------------
+
+  // optional string ip_address = 4;
+  bool has_ip_address() const;
+  void clear_ip_address();
+  static const int kIpAddressFieldNumber = 4;
+  const ::std::string& ip_address() const;
+  void set_ip_address(const ::std::string& value);
+  #if LANG_CXX11
+  void set_ip_address(::std::string&& value);
+  #endif
+  void set_ip_address(const char* value);
+  void set_ip_address(const char* value, size_t size);
+  ::std::string* mutable_ip_address();
+  ::std::string* release_ip_address();
+  void set_allocated_ip_address(::std::string* ip_address);
+
+  // optional int32 terminal_id = 1;
+  bool has_terminal_id() const;
+  void clear_terminal_id();
+  static const int kTerminalIdFieldNumber = 1;
+  ::google::protobuf::int32 terminal_id() const;
+  void set_terminal_id(::google::protobuf::int32 value);
+
+  // optional int32 unit_id = 2;
+  bool has_unit_id() const;
+  void clear_unit_id();
+  static const int kUnitIdFieldNumber = 2;
+  ::google::protobuf::int32 unit_id() const;
+  void set_unit_id(::google::protobuf::int32 value);
+
+  // optional .message.Direction direction = 3;
+  bool has_direction() const;
+  void clear_direction();
+  static const int kDirectionFieldNumber = 3;
+  ::message::Direction direction() const;
+  void set_direction(::message::Direction value);
+
+  // @@protoc_insertion_point(class_scope:message.Id_struct)
+ private:
+  void set_has_terminal_id();
+  void clear_has_terminal_id();
+  void set_has_unit_id();
+  void clear_has_unit_id();
+  void set_has_direction();
+  void clear_has_direction();
+  void set_has_ip_address();
+  void clear_has_ip_address();
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::HasBits<1> _has_bits_;
+  mutable int _cached_size_;
+  ::google::protobuf::internal::ArenaStringPtr ip_address_;
+  ::google::protobuf::int32 terminal_id_;
+  ::google::protobuf::int32 unit_id_;
+  int direction_;
+  friend struct ::protobuf_message_5fbase_2eproto::TableStruct;
+  friend void ::protobuf_message_5fbase_2eproto::InitDefaultsId_structImpl();
+};
 // ===================================================================
 
 
@@ -2850,6 +3004,146 @@ inline void Parkspace_info::set_car_type(::message::Car_type value) {
   // @@protoc_insertion_point(field_set:message.Parkspace_info.car_type)
 }
 
+// -------------------------------------------------------------------
+
+// Id_struct
+
+// optional int32 terminal_id = 1;
+inline bool Id_struct::has_terminal_id() const {
+  return (_has_bits_[0] & 0x00000002u) != 0;
+}
+inline void Id_struct::set_has_terminal_id() {
+  _has_bits_[0] |= 0x00000002u;
+}
+inline void Id_struct::clear_has_terminal_id() {
+  _has_bits_[0] &= ~0x00000002u;
+}
+inline void Id_struct::clear_terminal_id() {
+  terminal_id_ = 0;
+  clear_has_terminal_id();
+}
+inline ::google::protobuf::int32 Id_struct::terminal_id() const {
+  // @@protoc_insertion_point(field_get:message.Id_struct.terminal_id)
+  return terminal_id_;
+}
+inline void Id_struct::set_terminal_id(::google::protobuf::int32 value) {
+  set_has_terminal_id();
+  terminal_id_ = value;
+  // @@protoc_insertion_point(field_set:message.Id_struct.terminal_id)
+}
+
+// optional int32 unit_id = 2;
+inline bool Id_struct::has_unit_id() const {
+  return (_has_bits_[0] & 0x00000004u) != 0;
+}
+inline void Id_struct::set_has_unit_id() {
+  _has_bits_[0] |= 0x00000004u;
+}
+inline void Id_struct::clear_has_unit_id() {
+  _has_bits_[0] &= ~0x00000004u;
+}
+inline void Id_struct::clear_unit_id() {
+  unit_id_ = 0;
+  clear_has_unit_id();
+}
+inline ::google::protobuf::int32 Id_struct::unit_id() const {
+  // @@protoc_insertion_point(field_get:message.Id_struct.unit_id)
+  return unit_id_;
+}
+inline void Id_struct::set_unit_id(::google::protobuf::int32 value) {
+  set_has_unit_id();
+  unit_id_ = value;
+  // @@protoc_insertion_point(field_set:message.Id_struct.unit_id)
+}
+
+// optional .message.Direction direction = 3;
+inline bool Id_struct::has_direction() const {
+  return (_has_bits_[0] & 0x00000008u) != 0;
+}
+inline void Id_struct::set_has_direction() {
+  _has_bits_[0] |= 0x00000008u;
+}
+inline void Id_struct::clear_has_direction() {
+  _has_bits_[0] &= ~0x00000008u;
+}
+inline void Id_struct::clear_direction() {
+  direction_ = 0;
+  clear_has_direction();
+}
+inline ::message::Direction Id_struct::direction() const {
+  // @@protoc_insertion_point(field_get:message.Id_struct.direction)
+  return static_cast< ::message::Direction >(direction_);
+}
+inline void Id_struct::set_direction(::message::Direction value) {
+  assert(::message::Direction_IsValid(value));
+  set_has_direction();
+  direction_ = value;
+  // @@protoc_insertion_point(field_set:message.Id_struct.direction)
+}
+
+// optional string ip_address = 4;
+inline bool Id_struct::has_ip_address() const {
+  return (_has_bits_[0] & 0x00000001u) != 0;
+}
+inline void Id_struct::set_has_ip_address() {
+  _has_bits_[0] |= 0x00000001u;
+}
+inline void Id_struct::clear_has_ip_address() {
+  _has_bits_[0] &= ~0x00000001u;
+}
+inline void Id_struct::clear_ip_address() {
+  ip_address_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  clear_has_ip_address();
+}
+inline const ::std::string& Id_struct::ip_address() const {
+  // @@protoc_insertion_point(field_get:message.Id_struct.ip_address)
+  return ip_address_.GetNoArena();
+}
+inline void Id_struct::set_ip_address(const ::std::string& value) {
+  set_has_ip_address();
+  ip_address_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:message.Id_struct.ip_address)
+}
+#if LANG_CXX11
+inline void Id_struct::set_ip_address(::std::string&& value) {
+  set_has_ip_address();
+  ip_address_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:message.Id_struct.ip_address)
+}
+#endif
+inline void Id_struct::set_ip_address(const char* value) {
+  GOOGLE_DCHECK(value != NULL);
+  set_has_ip_address();
+  ip_address_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:message.Id_struct.ip_address)
+}
+inline void Id_struct::set_ip_address(const char* value, size_t size) {
+  set_has_ip_address();
+  ip_address_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:message.Id_struct.ip_address)
+}
+inline ::std::string* Id_struct::mutable_ip_address() {
+  set_has_ip_address();
+  // @@protoc_insertion_point(field_mutable:message.Id_struct.ip_address)
+  return ip_address_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* Id_struct::release_ip_address() {
+  // @@protoc_insertion_point(field_release:message.Id_struct.ip_address)
+  clear_has_ip_address();
+  return ip_address_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void Id_struct::set_allocated_ip_address(::std::string* ip_address) {
+  if (ip_address != NULL) {
+    set_has_ip_address();
+  } else {
+    clear_has_ip_address();
+  }
+  ip_address_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ip_address);
+  // @@protoc_insertion_point(field_set_allocated:message.Id_struct.ip_address)
+}
+
 #ifdef __GNUC__
   #pragma GCC diagnostic pop
 #endif  // __GNUC__
@@ -2863,6 +3157,8 @@ inline void Parkspace_info::set_car_type(::message::Car_type value) {
 
 // -------------------------------------------------------------------
 
+// -------------------------------------------------------------------
+
 
 // @@protoc_insertion_point(namespace_scope)
 

+ 12 - 4
message/message_base.proto

@@ -182,12 +182,12 @@ enum Parkspace_status
     eParkspace_error            = 5;         //车位机械结构或硬件故障
 }
 
-//车位朝向, 小号朝前朝南, 大号朝后朝北
+//车位朝向, 0:未知, 1:小号朝前朝南, 也指入口, 2:大号朝后朝北, 也指出口,
 enum Direction
 {
     eDirection_unknow = 0;
-    eForward = 1;                   //小号朝前朝南
-    eBackward = 2;                  //大号朝后朝北
+    eForward = 1;                   //小号朝前朝南, 也指入口
+    eBackward = 2;                  //大号朝后朝北, 也指出口
 }
 
 //车位分配路线(根据中跑车的路线来定)
@@ -300,4 +300,12 @@ enum Dispatch_device_type
     PASSAGEWAY_5                            = 305;      //5号出入口
     PASSAGEWAY_6                            = 306;      //6号出入口
     PASSAGEWAY_7                            = 307;      //7号出口(在右侧电梯井, 只能取车)
-}
+}
+
+//id结构体
+message Id_struct
+{
+    optional int32              terminal_id = 1;            //终端ID
+    optional int32              unit_id =  2;               //单元号
+}
+

+ 3 - 3
system/system_executor.cpp

@@ -54,15 +54,15 @@ Error_manager System_executor::check_msg(Communication_message* p_msg)
 				{
 					if ( t_dispatch_request_msg.dispatch_motion_direction() == message::Dispatch_motion_direction::E_STORE_CAR )
 					{
-						if ( t_dispatch_request_msg.terminal_id() == Dispatch_manager::get_instance_references().get_dispatch_manager_id()*2 ||
-							 t_dispatch_request_msg.terminal_id() == Dispatch_manager::get_instance_references().get_dispatch_manager_id()*2+1)
+						if ( t_dispatch_request_msg.mutable_id_struct()->terminal_id() == Dispatch_manager::get_instance_references().get_dispatch_manager_id()*2 ||
+							 t_dispatch_request_msg.mutable_id_struct()->terminal_id() == Dispatch_manager::get_instance_references().get_dispatch_manager_id()*2+1)
 						{
 							return Error_code::SUCCESS;
 						}
 					}
 					else if ( t_dispatch_request_msg.dispatch_motion_direction() == message::Dispatch_motion_direction::E_PICKUP_CAR )
 					{
-						if ( t_dispatch_request_msg.terminal_id() == Dispatch_manager::get_instance_references().get_dispatch_manager_id() )
+						if ( t_dispatch_request_msg.mutable_id_struct()->unit_id() == Dispatch_manager::get_instance_references().get_dispatch_manager_id() )
 						{
 							return Error_code::SUCCESS;
 						}