فهرست منبع

20210701, 调度 稳定版 2楼交接空间锁

huli 4 سال پیش
والد
کامیت
929cb2e692
7فایلهای تغییر یافته به همراه751 افزوده شده و 367 حذف شده
  1. 1 1
      dispatch/dispatch_coordinates.h
  2. 0 12
      dispatch/dispatch_device_base.cpp
  3. 72 47
      dispatch/dispatch_process.cpp
  4. 13 0
      main.cpp
  5. 422 236
      message/dispatch_message.pb.cc
  6. 232 66
      message/dispatch_message.pb.h
  7. 11 5
      message/dispatch_message.proto

+ 1 - 1
dispatch/dispatch_coordinates.h

@@ -130,7 +130,7 @@ public://member variable
 
 
 	//搬运器在2~4楼交界处 的坐标 1201~1206 1301~1306 1401~1406
 	//搬运器在2~4楼交界处 的坐标 1201~1206 1301~1306 1401~1406
 	//搬运器在电梯井的坐标 2101~2112 2201~2212
 	//搬运器在电梯井的坐标 2101~2112 2201~2212
-	//机器手在一楼出入口的坐标 1100 和 1107
+	//搬运器在一楼出入口的坐标 1100 和 1107
 	std::map<int, Point3D_tool::Point3D>	m_carrier_coordinates_map;
 	std::map<int, Point3D_tool::Point3D>	m_carrier_coordinates_map;
 
 
 	//机器手在2~4楼交界处 的坐标 1201~1206 1301~1306 1401~1406
 	//机器手在2~4楼交界处 的坐标 1201~1206 1301~1306 1401~1406

+ 0 - 12
dispatch/dispatch_device_base.cpp

@@ -791,18 +791,6 @@ void Dispatch_device_base::execute_thread_fun()
 			std::unique_lock<std::mutex> t_lock(m_lock);
 			std::unique_lock<std::mutex> t_lock(m_lock);
 
 
 
 
-//#ifdef TIME_TEST
-////			std::this_thread::sleep_for(std::chrono::seconds(1));
-//			std::this_thread::sleep_for(std::chrono::milliseconds(10));
-//
-//			if ( m_device_id == 2)
-//			{
-//				std::cout << " huli test :::: " << "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa m_dispatch_device_status = " << m_dispatch_device_status << std::endl;
-////				std::cout << " huli test :::: " << " m_device_id = " << m_device_id << std::endl;
-//			}
-//#endif
-
-
 			switch ( (Dispatch_device_status)m_dispatch_device_status )
 			switch ( (Dispatch_device_status)m_dispatch_device_status )
 			{
 			{
 				//核心任务, (三级任务)
 				//核心任务, (三级任务)

+ 72 - 47
dispatch/dispatch_process.cpp

@@ -274,14 +274,14 @@ void Dispatch_process::Main()
 	{
 	{
 		std::this_thread::sleep_for(std::chrono::microseconds(1));
 		std::this_thread::sleep_for(std::chrono::microseconds(1));
 		std::this_thread::sleep_for(std::chrono::milliseconds(1));
 		std::this_thread::sleep_for(std::chrono::milliseconds(1));
-		std::this_thread::sleep_for(std::chrono::milliseconds(100));
+//		std::this_thread::sleep_for(std::chrono::milliseconds(100));
 
 
 #ifdef TIME_TEST
 #ifdef TIME_TEST
 		if ( mcarrier == m_dispatch_carrier_node.m_dispatch_control_status && mcatcher == m_dispatch_catcher_node.m_dispatch_control_status )
 		if ( mcarrier == m_dispatch_carrier_node.m_dispatch_control_status && mcatcher == m_dispatch_catcher_node.m_dispatch_control_status )
 		{
 		{
 			std::this_thread::sleep_for(std::chrono::milliseconds(100));
 			std::this_thread::sleep_for(std::chrono::milliseconds(100));
-			std::this_thread::sleep_for(std::chrono::seconds(1));
-
+//			std::this_thread::sleep_for(std::chrono::seconds(1));
+			Dispatch_coordinates::get_instance_references().cout_space_lock();
 		}
 		}
 		else
 		else
 		{
 		{
@@ -296,9 +296,7 @@ void Dispatch_process::Main()
 //		std::cout << " huli test :::: " << " Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_one_level_command_key = " << Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_one_level_command_key << std::endl;
 //		std::cout << " huli test :::: " << " Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_one_level_command_key = " << Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_one_level_command_key << std::endl;
 //		std::cout << " huli test :::: " << " Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_two_level_command_key = " << Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_two_level_command_key << std::endl;
 //		std::cout << " huli test :::: " << " Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_two_level_command_key = " << Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_two_level_command_key << std::endl;
 //		std::cout << " huli test :::: " << " Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_three_level_command_key = " << Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_three_level_command_key << std::endl;
 //		std::cout << " huli test :::: " << " Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_three_level_command_key = " << Dispatch_manager::get_instance_references().m_carrier_map[2]->m_device_three_level_command_key << std::endl;
-#ifdef TIME_TEST
-//		Dispatch_coordinates::get_instance_references().cout_space_lock();
-#endif
+
 		switch ( (Dispatch_process_status)m_dispatch_process_status )
 		switch ( (Dispatch_process_status)m_dispatch_process_status )
 		{
 		{
 			case DISPATCH_PROCESS_CREATED://流程创建,
 			case DISPATCH_PROCESS_CREATED://流程创建,
@@ -1399,8 +1397,8 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 				{
 				{
 					float t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_destination].x;
 					float t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_destination].x;
 					int t_terminal = m_dispatch_destination - PASSAGEWAY_ID_BASE;
 					int t_terminal = m_dispatch_destination - PASSAGEWAY_ID_BASE;
-					int t_temp = (t_terminal-1)%2;
-					int t_column = 4 + ((t_terminal-1)/2)*3 + t_temp*2 -1;
+					int t_parity_flag = (t_terminal-1)%2;
+					int t_column = 4 + ((t_terminal-1)/2)*3 + t_parity_flag*2 -1;
 
 
 					if ( Common_data::approximate_difference(tp_main_carrier->m_actual_x, t_x, DISPATCH_DEFAULT_DIFFERENCE) )
 					if ( Common_data::approximate_difference(tp_main_carrier->m_actual_x, t_x, DISPATCH_DEFAULT_DIFFERENCE) )
 					{
 					{
@@ -1413,12 +1411,12 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 						if ( tp_main_carrier->get_device_id() == 0 && t_column <13-1)
 						if ( tp_main_carrier->get_device_id() == 0 && t_column <13-1)
 						{
 						{
 							m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_try_space_lock(tp_main_carrier->m_actual_coordinates_rows, 0,
 							m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_try_space_lock(tp_main_carrier->m_actual_coordinates_rows, 0,
-																											  tp_main_carrier->m_actual_coordinates_rows, t_column+1,
+																											  tp_main_carrier->m_actual_coordinates_rows, t_column+1-t_parity_flag,
 																											  tp_main_carrier->get_device_id(), t_avoid_catcher_id);
 																											  tp_main_carrier->get_device_id(), t_avoid_catcher_id);
 						}
 						}
 						else if ( tp_main_carrier->get_device_id() == 1 && t_column >3-1)
 						else if ( tp_main_carrier->get_device_id() == 1 && t_column >3-1)
 						{
 						{
-							m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_try_space_lock(tp_main_carrier->m_actual_coordinates_rows, t_column-1,
+							m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_try_space_lock(tp_main_carrier->m_actual_coordinates_rows, t_column-t_parity_flag,
 																											  tp_main_carrier->m_actual_coordinates_rows, tp_dispatch_coordinates->m_space_lock_columns-1,
 																											  tp_main_carrier->m_actual_coordinates_rows, tp_dispatch_coordinates->m_space_lock_columns-1,
 																											  tp_main_carrier->get_device_id(), t_avoid_catcher_id);
 																											  tp_main_carrier->get_device_id(), t_avoid_catcher_id);
 						}
 						}
@@ -1478,6 +1476,10 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 		case DISPATCH_CARRIER_PICKUP_47:
 		case DISPATCH_CARRIER_PICKUP_47:
 		{
 		{
 			m_dispatch_carrier_node.m_error = check_task_status(m_dispatch_carrier_node.mp_main_carrier_task, m_dispatch_carrier_node.m_dispatch_control_status);
 			m_dispatch_carrier_node.m_error = check_task_status(m_dispatch_carrier_node.mp_main_carrier_task, m_dispatch_carrier_node.m_dispatch_control_status);
+			if ( m_dispatch_carrier_node.m_error == Error_code::SUCCESS )
+			{
+				m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_space_unlock(tp_main_carrier->get_device_id());
+			}
 			break;
 			break;
 		}
 		}
 		case DISPATCH_CARRIER_PICKUP_48://中跑车 x轴移动, 进行x轴路径检查, 加空间锁失败就 只能无限等待
 		case DISPATCH_CARRIER_PICKUP_48://中跑车 x轴移动, 进行x轴路径检查, 加空间锁失败就 只能无限等待
@@ -1487,8 +1489,8 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 			{
 			{
 				float t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_destination].x;
 				float t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_destination].x;
 				int t_terminal = m_dispatch_destination - PASSAGEWAY_ID_BASE;
 				int t_terminal = m_dispatch_destination - PASSAGEWAY_ID_BASE;
-				int t_temp = (t_terminal - 1) % 2;
-				int t_column = 4 + ((t_terminal - 1) / 2) * 3 + t_temp * 2 - 1;
+				int t_parity_flag = (t_terminal - 1) % 2;
+				int t_column = 4 + ((t_terminal - 1) / 2) * 3 + t_parity_flag * 2 - 1;
 
 
 				if (Common_data::approximate_difference(tp_main_carrier->m_actual_x, t_x, DISPATCH_DEFAULT_DIFFERENCE))
 				if (Common_data::approximate_difference(tp_main_carrier->m_actual_x, t_x, DISPATCH_DEFAULT_DIFFERENCE))
 				{
 				{
@@ -1502,13 +1504,13 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 					{
 					{
 						m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_try_space_lock(
 						m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_try_space_lock(
 						tp_main_carrier->m_actual_coordinates_rows, 0,
 						tp_main_carrier->m_actual_coordinates_rows, 0,
-						tp_main_carrier->m_actual_coordinates_rows, t_column + 1,
+						tp_main_carrier->m_actual_coordinates_rows, t_column + 1 -t_parity_flag,
 						tp_main_carrier->get_device_id(), t_avoid_catcher_id);
 						tp_main_carrier->get_device_id(), t_avoid_catcher_id);
 					}
 					}
 					else if (tp_main_carrier->get_device_id() == 1 && t_column > 3 - 1)
 					else if (tp_main_carrier->get_device_id() == 1 && t_column > 3 - 1)
 					{
 					{
 						m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_try_space_lock(
 						m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_try_space_lock(
-						tp_main_carrier->m_actual_coordinates_rows, t_column - 1,
+						tp_main_carrier->m_actual_coordinates_rows, t_column - t_parity_flag,
 						tp_main_carrier->m_actual_coordinates_rows, tp_dispatch_coordinates->m_space_lock_columns - 1,
 						tp_main_carrier->m_actual_coordinates_rows, tp_dispatch_coordinates->m_space_lock_columns - 1,
 						tp_main_carrier->get_device_id(), t_avoid_catcher_id);
 						tp_main_carrier->get_device_id(), t_avoid_catcher_id);
 					}
 					}
@@ -2039,8 +2041,8 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 			if ( m_dispatch_catcher_node.m_following_flag )
 			if ( m_dispatch_catcher_node.m_following_flag )
 			{
 			{
 				int t_terminal = m_dispatch_destination - 1100;
 				int t_terminal = m_dispatch_destination - 1100;
-				int temp = (t_terminal-1)%2;
-				t_column = 4 + ((t_terminal-1)/2)*3 + temp*2 -1;
+				int t_parity_flag = (t_terminal-1)%2;
+				t_column = 4 + ((t_terminal-1)/2)*3 + t_parity_flag*2 -1;
 			}
 			}
 			else
 			else
 			{
 			{
@@ -2177,10 +2179,10 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 				if ( m_dispatch_catcher_node.m_following_flag )//去3楼取车不用加锁
 				if ( m_dispatch_catcher_node.m_following_flag )//去3楼取车不用加锁
 				{
 				{
 					int t_terminal = m_dispatch_destination - 1100;
 					int t_terminal = m_dispatch_destination - 1100;
-					int temp = (t_terminal-1)%2;
-					int t_column = 4 + ((t_terminal-1)/2)*3 + temp*2 -1;
-					m_dispatch_catcher_node.m_error = tp_dispatch_coordinates->catcher_force_space_lock(0, t_column-1,
-																										2, t_column+1,
+					int t_parity_flag = (t_terminal-1)%2;
+					int t_column = 4 + ((t_terminal-1)/2)*3 + t_parity_flag*2 -1;
+					m_dispatch_catcher_node.m_error = tp_dispatch_coordinates->catcher_force_space_lock(0, t_column-t_parity_flag,
+																										2, t_column+1-t_parity_flag,
 																										tp_main_catcher->get_device_id());
 																										tp_main_catcher->get_device_id());
 				}
 				}
 				m_dispatch_catcher_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_catcher_node.m_dispatch_control_status+1);
 				m_dispatch_catcher_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_catcher_node.m_dispatch_control_status+1);
@@ -2193,10 +2195,10 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 					if ( m_dispatch_catcher_node.m_following_flag )//去3楼取车不用加锁
 					if ( m_dispatch_catcher_node.m_following_flag )//去3楼取车不用加锁
 					{
 					{
 						int t_terminal = m_dispatch_destination - 1100;
 						int t_terminal = m_dispatch_destination - 1100;
-						int temp = (t_terminal-1)%2;
-						int t_column = 4 + ((t_terminal-1)/2)*3 + temp*2 -1;
-						m_dispatch_catcher_node.m_error = tp_dispatch_coordinates->catcher_force_space_lock(0, t_column-1,
-																											2, t_column+1,
+						int t_parity_flag = (t_terminal-1)%2;
+						int t_column = 4 + ((t_terminal-1)/2)*3 + t_parity_flag*2 -1;
+						m_dispatch_catcher_node.m_error = tp_dispatch_coordinates->catcher_force_space_lock(0, t_column-t_parity_flag,
+																											2, t_column+1-t_parity_flag,
 																											tp_main_catcher->get_device_id());
 																											tp_main_catcher->get_device_id());
 					}
 					}
 					m_dispatch_catcher_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_catcher_node.m_dispatch_control_status+1);
 					m_dispatch_catcher_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_catcher_node.m_dispatch_control_status+1);
@@ -2299,8 +2301,8 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 		case DISPATCH_CATCHER_PICKUP_25://3楼机器人移动前加锁
 		case DISPATCH_CATCHER_PICKUP_25://3楼机器人移动前加锁
 		{
 		{
 			int t_terminal = m_dispatch_destination - 1100;
 			int t_terminal = m_dispatch_destination - 1100;
-			int temp = (t_terminal-1)%2;
-			int t_column = 4 + ((t_terminal-1)/2)*3 + temp*2 -1;
+			int t_parity_flag = (t_terminal-1)%2;
+			int t_column = 4 + ((t_terminal-1)/2)*3 + t_parity_flag*2 -1;
 
 
 			if ( tp_main_catcher->m_actual_coordinates_columns < t_column )
 			if ( tp_main_catcher->m_actual_coordinates_columns < t_column )
 			{
 			{
@@ -2378,10 +2380,10 @@ Error_manager Dispatch_process::dispatch_control_motion_pickup()
 			else
 			else
 			{
 			{
 				int t_terminal = m_dispatch_destination - 1100;
 				int t_terminal = m_dispatch_destination - 1100;
-				int temp = (t_terminal-1)%2;
-				int t_column = 4 + ((t_terminal-1)/2)*3 + temp*2 -1;
-				m_dispatch_catcher_node.m_error = tp_dispatch_coordinates->catcher_try_space_lock(0, t_column-1,
-																								  2, t_column+1,
+				int t_parity_flag = (t_terminal-1)%2;
+				int t_column = 4 + ((t_terminal-1)/2)*3 + t_parity_flag*2 -1;
+				m_dispatch_catcher_node.m_error = tp_dispatch_coordinates->catcher_try_space_lock(0, t_column-t_parity_flag,
+																								  2, t_column+1-t_parity_flag,
 																								  tp_main_catcher->get_device_id());
 																								  tp_main_catcher->get_device_id());
 
 
 				//判断结果
 				//判断结果
@@ -2927,8 +2929,8 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 				{
 				{
 					float t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source].x;
 					float t_x = tp_dispatch_coordinates->m_carrier_coordinates_map[m_dispatch_source].x;
 					int t_terminal = m_dispatch_source - PASSAGEWAY_ID_BASE;
 					int t_terminal = m_dispatch_source - PASSAGEWAY_ID_BASE;
-					int t_temp = (t_terminal-1)%2;
-					int t_column = 4 + ((t_terminal-1)/2)*3 + t_temp*2 -1;
+					int t_parity_flag = (t_terminal-1)%2;
+					int t_column = 4 + ((t_terminal-1)/2)*3 + t_parity_flag*2 -1;
 					//注意了:待机点在入口旁边一个大车位, 空间锁判断时, 距离2个小车位即可.
 					//注意了:待机点在入口旁边一个大车位, 空间锁判断时, 距离2个小车位即可.
 
 
 					int t_avoid_catcher_id = -1;	//需要避让的机器人
 					int t_avoid_catcher_id = -1;	//需要避让的机器人
@@ -3055,18 +3057,18 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 			if ( tp_main_carrier->get_device_id() == 0 )
 			if ( tp_main_carrier->get_device_id() == 0 )
 			{
 			{
 				int t_terminal = m_dispatch_source - 1100;
 				int t_terminal = m_dispatch_source - 1100;
-				int temp = (t_terminal-1)%2;
-				int t_column = 4 + ((t_terminal-1)/2)*3 + temp*2 -1;
+				int t_parity_flag = (t_terminal-1)%2;
+				int t_column = 4 + ((t_terminal-1)/2)*3 + t_parity_flag*2 -1;
 				m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_force_space_lock(0, 0,
 				m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_force_space_lock(0, 0,
-																									0, t_column+1,
+																									0, t_column+1-t_parity_flag,
 																									tp_main_carrier->get_device_id());
 																									tp_main_carrier->get_device_id());
 			}
 			}
 			else if ( tp_main_carrier->get_device_id() == 1 )
 			else if ( tp_main_carrier->get_device_id() == 1 )
 			{
 			{
 				int t_terminal = m_dispatch_source - 1100;
 				int t_terminal = m_dispatch_source - 1100;
-				int temp = (t_terminal-1)%2;
-				int t_column = 4 + ((t_terminal-1)/2)*3 + temp*2 -1;
-				m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_force_space_lock(0, t_column-1,
+				int t_parity_flag = (t_terminal-1)%2;
+				int t_column = 4 + ((t_terminal-1)/2)*3 + t_parity_flag*2 -1;
+				m_dispatch_carrier_node.m_error = tp_dispatch_coordinates->carrier_force_space_lock(0, t_column-t_parity_flag,
 																									0, tp_dispatch_coordinates->m_space_lock_columns-1,
 																									0, tp_dispatch_coordinates->m_space_lock_columns-1,
 																									tp_main_carrier->get_device_id());
 																									tp_main_carrier->get_device_id());
 			}
 			}
@@ -3492,6 +3494,26 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 			{
 			{
 				//3楼的流程 到此结束了
 				//3楼的流程 到此结束了
 				m_dispatch_carrier_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status::DISPATCH_CARRIER_STORE_54);
 				m_dispatch_carrier_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status::DISPATCH_CARRIER_STORE_54);
+			}
+			//2楼和4楼  必须回电梯井
+			else if ( tp_main_carrier->m_actual_coordinates_rows == 0 || tp_main_carrier->m_actual_coordinates_rows == 2 )
+			{
+				if ( tp_main_carrier->get_device_id() == 0 )
+				{
+					carrier_move_x(get_dispatch_control_command_key(m_dispatch_carrier_node), tp_main_carrier, tp_main_carrier_task, tp_dispatch_coordinates, tp_dispatch_coordinates->m_carrier_default_x_left);
+					m_dispatch_carrier_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_carrier_node.m_dispatch_control_status+1);
+				}
+				else if ( tp_main_carrier->get_device_id() == 1 )
+				{
+					carrier_move_x(get_dispatch_control_command_key(m_dispatch_carrier_node), tp_main_carrier, tp_main_carrier_task, tp_dispatch_coordinates, tp_dispatch_coordinates->m_carrier_default_x_right);
+					m_dispatch_carrier_node.m_dispatch_control_status = (Dispatch_process::Dispatch_control_status)(m_dispatch_carrier_node.m_dispatch_control_status+1);
+				}
+				else
+				{
+					m_dispatch_carrier_node.m_dispatch_control_status = Dispatch_process::Dispatch_control_status::DISPATCH_CONTROL_FAULT;
+					m_dispatch_carrier_node.m_error = Error_manager(Error_code::CARRIER_CONRTOL_PARAMETER_ERROR, Error_level::MINOR_ERROR,
+																	"DISPATCH_CARRIER_STORE_50 tp_main_carrier->get_device_id() PARAMRTER ERROR ");
+				}
 			}
 			}
 				//如果后面有一级存车任务, 那么就跳过, 否则让中跑车回到电梯井
 				//如果后面有一级存车任务, 那么就跳过, 否则让中跑车回到电梯井
 			else if ( tp_main_carrier->is_has_appoint_task(Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_ONE_LEVEL) ||
 			else if ( tp_main_carrier->is_has_appoint_task(Dispatch_device_base::Dispatch_task_level::DISPATCH_TASK_ONE_LEVEL) ||
@@ -3821,8 +3843,8 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 		case DISPATCH_CATCHER_STORE_12://机器人 x轴移动之前, 判断空间锁.
 		case DISPATCH_CATCHER_STORE_12://机器人 x轴移动之前, 判断空间锁.
 		{
 		{
 			int t_terminal = m_dispatch_source - 1100;
 			int t_terminal = m_dispatch_source - 1100;
-			int temp = (t_terminal-1)%2;
-			int t_column = 4 + ((t_terminal-1)/2)*3 + temp*2 -1;
+			int t_parity_flag = (t_terminal-1)%2;
+			int t_column = 4 + ((t_terminal-1)/2)*3 + t_parity_flag*2 -1;
 
 
 			if ( tp_main_catcher->m_actual_coordinates_columns < t_column )
 			if ( tp_main_catcher->m_actual_coordinates_columns < t_column )
 			{
 			{
@@ -3954,10 +3976,10 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 		case DISPATCH_CATCHER_STORE_16://机器手 z轴下降, 空间加锁
 		case DISPATCH_CATCHER_STORE_16://机器手 z轴下降, 空间加锁
 		{
 		{
 			int t_terminal = m_dispatch_source - 1100;
 			int t_terminal = m_dispatch_source - 1100;
-			int temp = (t_terminal-1)%2;
-			int t_column = 4 + ((t_terminal-1)/2)*3 + temp*2 -1;
-			m_dispatch_catcher_node.m_error = tp_dispatch_coordinates->catcher_try_space_lock(0, t_column-1,
-																							  2, t_column+1,
+			int t_parity_flag = (t_terminal-1)%2;
+			int t_column = 4 + ((t_terminal-1)/2)*3 + t_parity_flag*2 -1;
+			m_dispatch_catcher_node.m_error = tp_dispatch_coordinates->catcher_try_space_lock(0, t_column-t_parity_flag,
+																							  2, t_column+1-t_parity_flag,
 																							  tp_main_catcher->get_device_id());
 																							  tp_main_catcher->get_device_id());
 			//判断结果
 			//判断结果
 			if ( m_dispatch_catcher_node.m_error == Error_code::SUCCESS )
 			if ( m_dispatch_catcher_node.m_error == Error_code::SUCCESS )
@@ -4040,8 +4062,8 @@ Error_manager Dispatch_process::dispatch_control_motion_store()
 			if ( m_dispatch_catcher_node.m_following_flag )
 			if ( m_dispatch_catcher_node.m_following_flag )
 			{
 			{
 				int t_terminal = m_dispatch_source - 1100;
 				int t_terminal = m_dispatch_source - 1100;
-				int temp = (t_terminal-1)%2;
-				t_column = 4 + ((t_terminal-1)/2)*3 + temp*2 -1;
+				int t_parity_flag = (t_terminal-1)%2;
+				t_column = 4 + ((t_terminal-1)/2)*3 + t_parity_flag*2 -1;
 			}
 			}
 			else
 			else
 			{
 			{
@@ -4931,7 +4953,10 @@ Error_manager Dispatch_process::send_dispatch_response_msg()
 	m_dispatch_response_msg.mutable_base_info()->set_receiver(message::Communicator::eMain);
 	m_dispatch_response_msg.mutable_base_info()->set_receiver(message::Communicator::eMain);
 	m_dispatch_response_msg.set_command_key(m_dispatch_request_msg.command_key());
 	m_dispatch_response_msg.set_command_key(m_dispatch_request_msg.command_key());
 
 
-	m_dispatch_response_msg.mutable_error_manager()->CopyFrom(m_dispatch_plan_response_msg.error_manager());
+	m_dispatch_response_msg.mutable_error_manager()->set_error_code(m_result.get_error_code());
+	m_dispatch_response_msg.mutable_error_manager()->set_error_level((message::Error_level)m_result.get_error_level());
+	m_dispatch_response_msg.mutable_error_manager()->set_error_description(m_result.get_error_description());
+
 
 
 	std::string t_msg = m_dispatch_response_msg.SerializeAsString();
 	std::string t_msg = m_dispatch_response_msg.SerializeAsString();
 	System_communication::get_instance_references().encapsulate_msg(t_msg);
 	System_communication::get_instance_references().encapsulate_msg(t_msg);

+ 13 - 0
main.cpp

@@ -69,6 +69,19 @@ public:
 
 
 int main(int argc,char* argv[])
 int main(int argc,char* argv[])
 {
 {
+//	char buf[4];
+//	sprintf(buf, "ads");
+//	std::cout << " huli test :::: " << " buf = " << buf << std::endl;
+//	std::string str = buf;
+//	std::cout << " huli test :::: " << " str = " << str << std::endl;
+//	std::cout << " huli test :::: " << " str.size() = " << str.size() << std::endl;
+//
+//	return 0;
+
+
+
+
+
 	Error_manager t_error;
 	Error_manager t_error;
 
 
 	const char* logPath = "./";
 	const char* logPath = "./";

+ 422 - 236
message/dispatch_message.pb.cc

@@ -117,8 +117,9 @@ void InitDefaultsDispatch_response_msgImpl() {
   ::google::protobuf::internal::InitProtobufDefaults();
   ::google::protobuf::internal::InitProtobufDefaults();
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
 #endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
   protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
   protobuf_message_5fbase_2eproto::InitDefaultsBase_info();
-  protobuf_message_5fbase_2eproto::InitDefaultsError_manager();
   protobuf_message_5fbase_2eproto::InitDefaultsParkspace_info();
   protobuf_message_5fbase_2eproto::InitDefaultsParkspace_info();
+  protobuf_message_5fbase_2eproto::InitDefaultsLocate_information();
+  protobuf_message_5fbase_2eproto::InitDefaultsError_manager();
   {
   {
     void* ptr = &::message::_Dispatch_response_msg_default_instance_;
     void* ptr = &::message::_Dispatch_response_msg_default_instance_;
     new (ptr) ::message::Dispatch_response_msg();
     new (ptr) ::message::Dispatch_response_msg();
@@ -286,14 +287,22 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
   ~0u,  // no _weak_field_map_
   ~0u,  // no _weak_field_map_
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, base_info_),
   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, command_key_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, error_manager_),
+  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, parkspace_info_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Dispatch_response_msg, parkspace_info_),
+  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, 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,
   1,
   0,
   0,
+  5,
+  6,
   2,
   2,
   3,
   3,
   ~0u,
   ~0u,
+  7,
+  4,
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Catcher_data, _has_bits_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Catcher_data, _has_bits_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Catcher_data, _internal_metadata_),
   GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::message::Catcher_data, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _extensions_
@@ -445,12 +454,12 @@ const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUT
 static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
 static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
   { 0, 9, sizeof(::message::Dispatch_terminal_status_msg)},
   { 0, 9, sizeof(::message::Dispatch_terminal_status_msg)},
   { 13, 26, sizeof(::message::Dispatch_request_msg)},
   { 13, 26, sizeof(::message::Dispatch_request_msg)},
-  { 34, 44, sizeof(::message::Dispatch_response_msg)},
-  { 49, 73, sizeof(::message::Catcher_data)},
-  { 92, 116, sizeof(::message::Carrier_data)},
-  { 135, 157, sizeof(::message::Passageway_data)},
-  { 174, 185, sizeof(::message::Dispatch_manager_status_msg)},
-  { 191, 196, sizeof(::message::Dispatch_manager_data_msg)},
+  { 34, 48, sizeof(::message::Dispatch_response_msg)},
+  { 57, 81, sizeof(::message::Catcher_data)},
+  { 100, 124, sizeof(::message::Carrier_data)},
+  { 143, 165, sizeof(::message::Passageway_data)},
+  { 182, 193, sizeof(::message::Dispatch_manager_status_msg)},
+  { 199, 204, sizeof(::message::Dispatch_manager_data_msg)},
 };
 };
 
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -495,138 +504,143 @@ void AddDescriptorsImpl() {
       "ssageway_direction\"\361\002\n\024Dispatch_request_"
       "ssageway_direction\"\361\002\n\024Dispatch_request_"
       "msg\022%\n\tbase_info\030\001 \002(\0132\022.message.Base_in"
       "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"
       "fo\022\023\n\013command_key\030\002 \002(\t\022E\n\031dispatch_moti"
-      "on_direction\030\003 \002(\0162\".message.Dispatch_mo"
-      "tion_direction\022\023\n\013terminal_id\030\004 \002(\005\022/\n\016p"
+      "on_direction\030\003 \001(\0162\".message.Dispatch_mo"
+      "tion_direction\022\023\n\013terminal_id\030\004 \001(\005\022/\n\016p"
       "arkspace_info\030\005 \001(\0132\027.message.Parkspace_"
       "arkspace_info\030\005 \001(\0132\027.message.Parkspace_"
       "info\0227\n\022locate_information\030\006 \001(\0132\033.messa"
       "info\0227\n\022locate_information\030\006 \001(\0132\033.messa"
       "ge.Locate_information\0222\n\021parkspace_info_"
       "ge.Locate_information\0222\n\021parkspace_info_"
       "ex\030\007 \003(\0132\027.message.Parkspace_info\022#\n\010car"
       "ex\030\007 \003(\0132\027.message.Parkspace_info\022#\n\010car"
-      "_type\030\010 \001(\0162\021.message.Car_type\"\347\001\n\025Dispa"
+      "_type\030\010 \001(\0162\021.message.Car_type\"\241\003\n\025Dispa"
       "tch_response_msg\022%\n\tbase_info\030\001 \002(\0132\022.me"
       "tch_response_msg\022%\n\tbase_info\030\001 \002(\0132\022.me"
-      "ssage.Base_info\022\023\n\013command_key\030\002 \002(\t\022-\n\r"
-      "error_manager\030\003 \002(\0132\026.message.Error_mana"
-      "ger\022/\n\016parkspace_info\030\004 \001(\0132\027.message.Pa"
-      "rkspace_info\0222\n\021parkspace_info_ex\030\005 \003(\0132"
-      "\027.message.Parkspace_info\"\313\005\n\014Catcher_dat"
-      "a\022;\n\024dispatch_device_type\030\001 \002(\0162\035.messag"
-      "e.Dispatch_device_type\022\?\n\026dispatch_devic"
-      "e_status\030\002 \002(\0162\037.message.Dispatch_device"
-      "_status\022\021\n\tdevice_id\030\003 \002(\005\022=\n\024actual_dev"
-      "ice_status\030\004 \001(\0162\037.message.Hardware_devi"
-      "ce_status\0220\n\022actual_load_status\030\005 \001(\0162\024."
-      "message.Load_status\022\035\n\025actual_coordinate"
-      "s_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_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.message"
-      ".Clamp_motion\0223\n\024actual_clamp_motion2\030\016 "
-      "\001(\0162\025.message.Clamp_motion\0223\n\024actual_cla"
-      "mp_motion3\030\017 \001(\0162\025.message.Clamp_motion\022"
-      "3\n\024actual_clamp_motion4\030\020 \001(\0162\025.message."
-      "Clamp_motion\022\031\n\021actual_error_code\030\021 \001(\t\022"
-      "\033\n\023actual_warning_code\030\022 \001(\t\022 \n\030actual_e"
-      "rror_description\030\023 \001(\t\"\207\006\n\014Carrier_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_s"
-      "tatus\022\021\n\tdevice_id\030\003 \002(\005\022=\n\024actual_devic"
-      "e_status\030\004 \001(\0162\037.message.Hardware_device"
-      "_status\0220\n\022actual_load_status\030\005 \001(\0162\024.me"
-      "ssage.Load_status\022\035\n\025actual_coordinates_"
-      "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_mot"
-      "ion1\030\014 \001(\0162\025.message.Clamp_motion\0223\n\024act"
-      "ual_clamp_motion2\030\r \001(\0162\025.message.Clamp_"
-      "motion\022H\n\036actual_small_sports_car_motion"
-      "\030\016 \001(\0162 .message.Small_sports_car_motion"
-      "\0225\n\026actual_joint_motion_x1\030\017 \001(\0162\025.messa"
-      "ge.Joint_motion\0225\n\026actual_joint_motion_x"
-      "2\030\020 \001(\0162\025.message.Joint_motion\022\031\n\021actual"
-      "_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_device_"
-      "type\030\001 \002(\0162\035.message.Dispatch_device_typ"
-      "e\022\?\n\026dispatch_device_status\030\002 \002(\0162\037.mess"
-      "age.Dispatch_device_status\022\021\n\tdevice_id\030"
-      "\003 \002(\005\022=\n\024actual_device_status\030\004 \001(\0162\037.me"
-      "ssage.Hardware_device_status\0227\n\031actual_i"
-      "nside_load_status\030\005 \001(\0162\024.message.Load_s"
-      "tatus\0228\n\032actual_outside_load_status\030\006 \001("
-      "\0162\024.message.Load_status\022J\n\"actual_front_"
-      "overstep_the_boundary\030\007 \001(\0162\036.message.Ov"
-      "erstep_the_boundary\022I\n!actual_back_overs"
-      "tep_the_boundary\030\010 \001(\0162\036.message.Overste"
-      "p_the_boundary\022K\n#actual_height_overstep"
-      "_the_boundary\030\t \001(\0162\036.message.Overstep_t"
-      "he_boundary\0228\n\032actual_outside_door_senso"
-      "r\030\n \001(\0162\024.message.Load_status\0227\n\031actual_"
-      "inside_door_motion\030\013 \001(\0162\024.message.Door_"
-      "motion\0228\n\032actual_outside_door_motion\030\014 \001"
-      "(\0162\024.message.Door_motion\022:\n\034actual_turnt"
-      "able_load_status\030\r \001(\0162\024.message.Load_st"
-      "atus\022@\n\032actual_turntable_direction\030\016 \001(\016"
-      "2\034.message.Turntable_direction\022\031\n\021actual"
-      "_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\tbase"
-      "_info\030\001 \002(\0132\022.message.Base_info\022\023\n\013dispa"
-      "tch_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.message.Catc"
-      "her_data\022/\n\020carrier_data_map\030\005 \003(\0132\025.mes"
-      "sage.Carrier_data\0225\n\023passageway_data_map"
-      "\030\006 \003(\0132\030.message.Passageway_data\"\033\n\031Disp"
-      "atch_manager_data_msg*\201\001\n\017Terminal_statu"
-      "s\022\025\n\021E_TERMINAL_UNKNOW\020\000\022\024\n\020E_TERMINAL_R"
-      "EADY\020\001\022\024\n\020E_TERMINAL_STORE\020\002\022\025\n\021E_TERMIN"
-      "AL_PICKUP\020\003\022\024\n\020E_TERMINAL_FAULT\020\n*B\n\024Pas"
-      "sageway_direction\022\013\n\007E_INLET\020\000\022\014\n\010E_OUTL"
-      "ET\020\001\022\017\n\013E_BILATERAL\020\002*>\n\031Dispatch_motion"
-      "_direction\022\017\n\013E_STORE_CAR\020\000\022\020\n\014E_PICKUP_"
-      "CAR\020\001*\261\001\n\027Dispatch_manager_status\022\035\n\031E_D"
-      "ISPATCH_MANAGER_UNKNOW\020\000\022\034\n\030E_DISPATCH_M"
-      "ANAGER_READY\020\001\022\034\n\030E_DISPATCH_MANAGER_STO"
-      "RE\020\002\022\035\n\031E_DISPATCH_MANAGER_PICKUP\020\003\022\034\n\030E"
-      "_DISPATCH_MANAGER_FAULT\020d*\200\003\n\026Dispatch_d"
-      "evice_status\022\032\n\026DISPATCH_DEVICE_UNKNOW\020\000"
-      "\022\031\n\025DISPATCH_DEVICE_READY\020\001\022\030\n\024DISPATCH_"
-      "DEVICE_BUSY\020\002\022\"\n\036DISPATCH_DEVICE_ONE_LEV"
-      "EL_OVER\020\003\022\"\n\036DISPATCH_DEVICE_ONE_LEVEL_W"
-      "ORK\020\004\022\"\n\036DISPATCH_DEVICE_TWO_LEVEL_OVER\020"
-      "\005\022\"\n\036DISPATCH_DEVICE_TWO_LEVEL_WORK\020\006\022$\n"
-      " DISPATCH_DEVICE_THREE_LEVEL_OVER\020\007\022$\n D"
-      "ISPATCH_DEVICE_THREE_LEVEL_WORK\020\010\022\031\n\025DIS"
-      "PATCH_DEVICE_FAULT\020d\022\036\n\032DISPATCH_DEVICE_"
-      "DISCONNECT\020e*n\n\023Dispatch_task_level\022\033\n\027D"
-      "ISPATCH_TASK_ONE_LEVEL\020\001\022\033\n\027DISPATCH_TAS"
-      "K_TWO_LEVEL\020\002\022\035\n\031DISPATCH_TASK_THREE_LEV"
-      "EL\020\003*K\n\014Clamp_motion\022\025\n\021E_CLAMP_NO_ACTIO"
-      "N\020\000\022\021\n\rE_CLAMP_TIGHT\020\001\022\021\n\rE_CLAMP_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_JOINT_TAKE_B"
-      "ACK\020\002*y\n\027Small_sports_car_motion\022\034\n\030E_SM"
-      "ALL_SPORTS_NO_ACTION\020\000\022\037\n\033E_SMALL_SPORTS"
-      "_CAR_GET_AWAY\020\001\022\037\n\033E_SMALL_SPORTS_CAR_GE"
-      "T_BACK\020\002*l\n\016Respons_status\022\023\n\017RESPONS_WO"
-      "RKING\020\000\022\020\n\014RESPONS_OVER\020\001\022\027\n\023RESPONS_MIN"
-      "OR_ERROR\020d\022\032\n\026RESPONS_CRITICAL_ERROR\020e*\252"
-      "\001\n\026Hardware_device_status\022\022\n\016DEVICE_UNKN"
-      "OWN\020\000\022\020\n\014DEVICE_READY\020\001\022\022\n\016DEVICE_WORKIN"
-      "G\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\014DEV"
-      "ICE_FAULT\020\006*9\n\013Load_status\022\020\n\014LOAD_UNKNO"
-      "WN\020\000\022\014\n\010HAVE_CAR\020\001\022\n\n\006NO_CAR\020\002*w\n\023Turnta"
-      "ble_direction\022\037\n\033TURNTABLE_DIRECTION_UNK"
-      "NOWN\020\000\022\036\n\032TURNTABLE_DIRECTION_INSIDE\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\025Overs"
-      "tep_the_boundary\022\023\n\017BOUNDARY_NORMAL\020\000\022\025\n"
-      "\021BOUNDARY_OVERSTEP\020\001"
+      "ssage.Base_info\022\023\n\013command_key\030\002 \002(\t\022E\n\031"
+      "dispatch_motion_direction\030\003 \001(\0162\".messag"
+      "e.Dispatch_motion_direction\022\023\n\013terminal_"
+      "id\030\004 \001(\005\022/\n\016parkspace_info\030\005 \001(\0132\027.messa"
+      "ge.Parkspace_info\0227\n\022locate_information\030"
+      "\006 \001(\0132\033.message.Locate_information\0222\n\021pa"
+      "rkspace_info_ex\030\007 \003(\0132\027.message.Parkspac"
+      "e_info\022#\n\010car_type\030\010 \001(\0162\021.message.Car_t"
+      "ype\022-\n\rerror_manager\030\t \001(\0132\026.message.Err"
+      "or_manager\"\313\005\n\014Catcher_data\022;\n\024dispatch_"
+      "device_type\030\001 \002(\0162\035.message.Dispatch_dev"
+      "ice_type\022\?\n\026dispatch_device_status\030\002 \002(\016"
+      "2\037.message.Dispatch_device_status\022\021\n\tdev"
+      "ice_id\030\003 \002(\005\022=\n\024actual_device_status\030\004 \001"
+      "(\0162\037.message.Hardware_device_status\0220\n\022a"
+      "ctual_load_status\030\005 \001(\0162\024.message.Load_s"
+      "tatus\022\035\n\025actual_coordinates_id\030\006 \001(\005\022\020\n\010"
+      "actual_x\030\007 \001(\002\022\020\n\010actual_y\030\010 \001(\002\022\020\n\010actu"
+      "al_b\030\t \001(\002\022\020\n\010actual_z\030\n \001(\002\022\021\n\tactual_d"
+      "1\030\013 \001(\002\022\021\n\tactual_d2\030\014 \001(\002\0223\n\024actual_cla"
+      "mp_motion1\030\r \001(\0162\025.message.Clamp_motion\022"
+      "3\n\024actual_clamp_motion2\030\016 \001(\0162\025.message."
+      "Clamp_motion\0223\n\024actual_clamp_motion3\030\017 \001"
+      "(\0162\025.message.Clamp_motion\0223\n\024actual_clam"
+      "p_motion4\030\020 \001(\0162\025.message.Clamp_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\"\207\006\n\014Carrier_data\022;\n\024dispatch_de"
+      "vice_type\030\001 \002(\0162\035.message.Dispatch_devic"
+      "e_type\022\?\n\026dispatch_device_status\030\002 \002(\0162\037"
+      ".message.Dispatch_device_status\022\021\n\tdevic"
+      "e_id\030\003 \002(\005\022=\n\024actual_device_status\030\004 \001(\016"
+      "2\037.message.Hardware_device_status\0220\n\022act"
+      "ual_load_status\030\005 \001(\0162\024.message.Load_sta"
+      "tus\022\035\n\025actual_coordinates_id\030\006 \001(\005\022\020\n\010ac"
+      "tual_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.m"
+      "essage.Clamp_motion\0223\n\024actual_clamp_moti"
+      "on2\030\r \001(\0162\025.message.Clamp_motion\022H\n\036actu"
+      "al_small_sports_car_motion\030\016 \001(\0162 .messa"
+      "ge.Small_sports_car_motion\0225\n\026actual_joi"
+      "nt_motion_x1\030\017 \001(\0162\025.message.Joint_motio"
+      "n\0225\n\026actual_joint_motion_x2\030\020 \001(\0162\025.mess"
+      "age.Joint_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\"\275\007\n\017Passagewa"
+      "y_data\022;\n\024dispatch_device_type\030\001 \002(\0162\035.m"
+      "essage.Dispatch_device_type\022\?\n\026dispatch_"
+      "device_status\030\002 \002(\0162\037.message.Dispatch_d"
+      "evice_status\022\021\n\tdevice_id\030\003 \002(\005\022=\n\024actua"
+      "l_device_status\030\004 \001(\0162\037.message.Hardware"
+      "_device_status\0227\n\031actual_inside_load_sta"
+      "tus\030\005 \001(\0162\024.message.Load_status\0228\n\032actua"
+      "l_outside_load_status\030\006 \001(\0162\024.message.Lo"
+      "ad_status\022J\n\"actual_front_overstep_the_b"
+      "oundary\030\007 \001(\0162\036.message.Overstep_the_bou"
+      "ndary\022I\n!actual_back_overstep_the_bounda"
+      "ry\030\010 \001(\0162\036.message.Overstep_the_boundary"
+      "\022K\n#actual_height_overstep_the_boundary\030"
+      "\t \001(\0162\036.message.Overstep_the_boundary\0228\n"
+      "\032actual_outside_door_sensor\030\n \001(\0162\024.mess"
+      "age.Load_status\0227\n\031actual_inside_door_mo"
+      "tion\030\013 \001(\0162\024.message.Door_motion\0228\n\032actu"
+      "al_outside_door_motion\030\014 \001(\0162\024.message.D"
+      "oor_motion\022:\n\034actual_turntable_load_stat"
+      "us\030\r \001(\0162\024.message.Load_status\022@\n\032actual"
+      "_turntable_direction\030\016 \001(\0162\034.message.Tur"
+      "ntable_direction\022\031\n\021actual_error_code\030\017 "
+      "\001(\t\022\033\n\023actual_warning_code\030\020 \001(\t\022 \n\030actu"
+      "al_error_description\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 .messag"
+      "e.Dispatch_manager_status\022/\n\020catcher_dat"
+      "a_map\030\004 \003(\0132\025.message.Catcher_data\022/\n\020ca"
+      "rrier_data_map\030\005 \003(\0132\025.message.Carrier_d"
+      "ata\0225\n\023passageway_data_map\030\006 \003(\0132\030.messa"
+      "ge.Passageway_data\"\033\n\031Dispatch_manager_d"
+      "ata_msg*\201\001\n\017Terminal_status\022\025\n\021E_TERMINA"
+      "L_UNKNOW\020\000\022\024\n\020E_TERMINAL_READY\020\001\022\024\n\020E_TE"
+      "RMINAL_STORE\020\002\022\025\n\021E_TERMINAL_PICKUP\020\003\022\024\n"
+      "\020E_TERMINAL_FAULT\020\n*B\n\024Passageway_direct"
+      "ion\022\013\n\007E_INLET\020\000\022\014\n\010E_OUTLET\020\001\022\017\n\013E_BILA"
+      "TERAL\020\002*>\n\031Dispatch_motion_direction\022\017\n\013"
+      "E_STORE_CAR\020\000\022\020\n\014E_PICKUP_CAR\020\001*\261\001\n\027Disp"
+      "atch_manager_status\022\035\n\031E_DISPATCH_MANAGE"
+      "R_UNKNOW\020\000\022\034\n\030E_DISPATCH_MANAGER_READY\020\001"
+      "\022\034\n\030E_DISPATCH_MANAGER_STORE\020\002\022\035\n\031E_DISP"
+      "ATCH_MANAGER_PICKUP\020\003\022\034\n\030E_DISPATCH_MANA"
+      "GER_FAULT\020d*\200\003\n\026Dispatch_device_status\022\032"
+      "\n\026DISPATCH_DEVICE_UNKNOW\020\000\022\031\n\025DISPATCH_D"
+      "EVICE_READY\020\001\022\030\n\024DISPATCH_DEVICE_BUSY\020\002\022"
+      "\"\n\036DISPATCH_DEVICE_ONE_LEVEL_OVER\020\003\022\"\n\036D"
+      "ISPATCH_DEVICE_ONE_LEVEL_WORK\020\004\022\"\n\036DISPA"
+      "TCH_DEVICE_TWO_LEVEL_OVER\020\005\022\"\n\036DISPATCH_"
+      "DEVICE_TWO_LEVEL_WORK\020\006\022$\n DISPATCH_DEVI"
+      "CE_THREE_LEVEL_OVER\020\007\022$\n DISPATCH_DEVICE"
+      "_THREE_LEVEL_WORK\020\010\022\031\n\025DISPATCH_DEVICE_F"
+      "AULT\020d\022\036\n\032DISPATCH_DEVICE_DISCONNECT\020e*n"
+      "\n\023Dispatch_task_level\022\033\n\027DISPATCH_TASK_O"
+      "NE_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_ACTION\020\000\022\021\n\rE_CLAMP"
+      "_TIGHT\020\001\022\021\n\rE_CLAMP_LOOSE\020\002*R\n\014Joint_mot"
+      "ion\022\025\n\021E_JOINT_NO_ACTION\020\000\022\024\n\020E_JOINT_HO"
+      "LD_OUT\020\001\022\025\n\021E_JOINT_TAKE_BACK\020\002*y\n\027Small"
+      "_sports_car_motion\022\034\n\030E_SMALL_SPORTS_NO_"
+      "ACTION\020\000\022\037\n\033E_SMALL_SPORTS_CAR_GET_AWAY\020"
+      "\001\022\037\n\033E_SMALL_SPORTS_CAR_GET_BACK\020\002*l\n\016Re"
+      "spons_status\022\023\n\017RESPONS_WORKING\020\000\022\020\n\014RES"
+      "PONS_OVER\020\001\022\027\n\023RESPONS_MINOR_ERROR\020d\022\032\n\026"
+      "RESPONS_CRITICAL_ERROR\020e*\252\001\n\026Hardware_de"
+      "vice_status\022\022\n\016DEVICE_UNKNOWN\020\000\022\020\n\014DEVIC"
+      "E_READY\020\001\022\022\n\016DEVICE_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\014LOAD_UNKNOWN\020\000\022\014\n\010HAVE_C"
+      "AR\020\001\022\n\n\006NO_CAR\020\002*w\n\023Turntable_direction\022"
+      "\037\n\033TURNTABLE_DIRECTION_UNKNOWN\020\000\022\036\n\032TURN"
+      "TABLE_DIRECTION_INSIDE\020\001\022\037\n\033TURNTABLE_DI"
+      "RECTION_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_bounda"
+      "ry\022\023\n\017BOUNDARY_NORMAL\020\000\022\025\n\021BOUNDARY_OVER"
+      "STEP\020\001"
   };
   };
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
   ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 5500);
+      descriptor, 5686);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "dispatch_message.proto", &protobuf_RegisterTypes);
     "dispatch_message.proto", &protobuf_RegisterTypes);
   ::protobuf_message_5fbase_2eproto::AddDescriptors();
   ::protobuf_message_5fbase_2eproto::AddDescriptors();
@@ -1505,7 +1519,7 @@ bool Dispatch_request_msg::MergePartialFromCodedStream(
         break;
         break;
       }
       }
 
 
-      // required .message.Dispatch_motion_direction dispatch_motion_direction = 3;
+      // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
       case 3: {
       case 3: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
             static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
@@ -1525,7 +1539,7 @@ bool Dispatch_request_msg::MergePartialFromCodedStream(
         break;
         break;
       }
       }
 
 
-      // required int32 terminal_id = 4;
+      // optional int32 terminal_id = 4;
       case 4: {
       case 4: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
             static_cast< ::google::protobuf::uint8>(32u /* 32 & 0xFF */)) {
@@ -1637,13 +1651,13 @@ void Dispatch_request_msg::SerializeWithCachedSizes(
       2, this->command_key(), output);
       2, this->command_key(), output);
   }
   }
 
 
-  // required .message.Dispatch_motion_direction dispatch_motion_direction = 3;
+  // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
   if (cached_has_bits & 0x00000010u) {
   if (cached_has_bits & 0x00000010u) {
     ::google::protobuf::internal::WireFormatLite::WriteEnum(
     ::google::protobuf::internal::WireFormatLite::WriteEnum(
       3, this->dispatch_motion_direction(), output);
       3, this->dispatch_motion_direction(), output);
   }
   }
 
 
-  // required int32 terminal_id = 4;
+  // optional int32 terminal_id = 4;
   if (cached_has_bits & 0x00000020u) {
   if (cached_has_bits & 0x00000020u) {
     ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->terminal_id(), output);
     ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->terminal_id(), output);
   }
   }
@@ -1706,13 +1720,13 @@ void Dispatch_request_msg::SerializeWithCachedSizes(
         2, this->command_key(), target);
         2, this->command_key(), target);
   }
   }
 
 
-  // required .message.Dispatch_motion_direction dispatch_motion_direction = 3;
+  // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
   if (cached_has_bits & 0x00000010u) {
   if (cached_has_bits & 0x00000010u) {
     target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
     target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
       3, this->dispatch_motion_direction(), target);
       3, this->dispatch_motion_direction(), target);
   }
   }
 
 
-  // required int32 terminal_id = 4;
+  // optional int32 terminal_id = 4;
   if (cached_has_bits & 0x00000020u) {
   if (cached_has_bits & 0x00000020u) {
     target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->terminal_id(), target);
     target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->terminal_id(), target);
   }
   }
@@ -1771,19 +1785,6 @@ size_t Dispatch_request_msg::RequiredFieldsByteSizeFallback() const {
         *this->base_info_);
         *this->base_info_);
   }
   }
 
 
-  if (has_dispatch_motion_direction()) {
-    // required .message.Dispatch_motion_direction dispatch_motion_direction = 3;
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::EnumSize(this->dispatch_motion_direction());
-  }
-
-  if (has_terminal_id()) {
-    // required int32 terminal_id = 4;
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::Int32Size(
-        this->terminal_id());
-  }
-
   return total_size;
   return total_size;
 }
 }
 size_t Dispatch_request_msg::ByteSizeLong() const {
 size_t Dispatch_request_msg::ByteSizeLong() const {
@@ -1795,7 +1796,7 @@ size_t Dispatch_request_msg::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         _internal_metadata_.unknown_fields());
         _internal_metadata_.unknown_fields());
   }
   }
-  if (((_has_bits_[0] & 0x00000033) ^ 0x00000033) == 0) {  // All required fields are present.
+  if (((_has_bits_[0] & 0x00000003) ^ 0x00000003) == 0) {  // All required fields are present.
     // required string command_key = 2;
     // required string command_key = 2;
     total_size += 1 +
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::StringSize(
       ::google::protobuf::internal::WireFormatLite::StringSize(
@@ -1806,15 +1807,6 @@ size_t Dispatch_request_msg::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormatLite::MessageSize(
       ::google::protobuf::internal::WireFormatLite::MessageSize(
         *this->base_info_);
         *this->base_info_);
 
 
-    // required .message.Dispatch_motion_direction dispatch_motion_direction = 3;
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::EnumSize(this->dispatch_motion_direction());
-
-    // required int32 terminal_id = 4;
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::Int32Size(
-        this->terminal_id());
-
   } else {
   } else {
     total_size += RequiredFieldsByteSizeFallback();
     total_size += RequiredFieldsByteSizeFallback();
   }
   }
@@ -1829,7 +1821,7 @@ size_t Dispatch_request_msg::ByteSizeLong() const {
     }
     }
   }
   }
 
 
-  if (_has_bits_[0 / 32] & 12u) {
+  if (_has_bits_[0 / 32] & 124u) {
     // optional .message.Parkspace_info parkspace_info = 5;
     // optional .message.Parkspace_info parkspace_info = 5;
     if (has_parkspace_info()) {
     if (has_parkspace_info()) {
       total_size += 1 +
       total_size += 1 +
@@ -1844,13 +1836,26 @@ size_t Dispatch_request_msg::ByteSizeLong() const {
           *this->locate_information_);
           *this->locate_information_);
     }
     }
 
 
-  }
-  // optional .message.Car_type car_type = 8;
-  if (has_car_type()) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::EnumSize(this->car_type());
-  }
+    // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
+    if (has_dispatch_motion_direction()) {
+      total_size += 1 +
+        ::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 = 8;
+    if (has_car_type()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::EnumSize(this->car_type());
+    }
 
 
+  }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
   _cached_size_ = cached_size;
@@ -1924,7 +1929,7 @@ void Dispatch_request_msg::CopyFrom(const Dispatch_request_msg& from) {
 }
 }
 
 
 bool Dispatch_request_msg::IsInitialized() const {
 bool Dispatch_request_msg::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000033) != 0x00000033) return false;
+  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
   if (has_base_info()) {
   if (has_base_info()) {
     if (!this->base_info_->IsInitialized()) return false;
     if (!this->base_info_->IsInitialized()) return false;
   }
   }
@@ -1961,32 +1966,42 @@ void Dispatch_request_msg::InternalSwap(Dispatch_request_msg* other) {
 void Dispatch_response_msg::InitAsDefaultInstance() {
 void Dispatch_response_msg::InitAsDefaultInstance() {
   ::message::_Dispatch_response_msg_default_instance_._instance.get_mutable()->base_info_ = const_cast< ::message::Base_info*>(
   ::message::_Dispatch_response_msg_default_instance_._instance.get_mutable()->base_info_ = const_cast< ::message::Base_info*>(
       ::message::Base_info::internal_default_instance());
       ::message::Base_info::internal_default_instance());
-  ::message::_Dispatch_response_msg_default_instance_._instance.get_mutable()->error_manager_ = const_cast< ::message::Error_manager*>(
-      ::message::Error_manager::internal_default_instance());
   ::message::_Dispatch_response_msg_default_instance_._instance.get_mutable()->parkspace_info_ = const_cast< ::message::Parkspace_info*>(
   ::message::_Dispatch_response_msg_default_instance_._instance.get_mutable()->parkspace_info_ = const_cast< ::message::Parkspace_info*>(
       ::message::Parkspace_info::internal_default_instance());
       ::message::Parkspace_info::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*>(
+      ::message::Error_manager::internal_default_instance());
 }
 }
 void Dispatch_response_msg::clear_base_info() {
 void Dispatch_response_msg::clear_base_info() {
   if (base_info_ != NULL) base_info_->Clear();
   if (base_info_ != NULL) base_info_->Clear();
   clear_has_base_info();
   clear_has_base_info();
 }
 }
-void Dispatch_response_msg::clear_error_manager() {
-  if (error_manager_ != NULL) error_manager_->Clear();
-  clear_has_error_manager();
-}
 void Dispatch_response_msg::clear_parkspace_info() {
 void Dispatch_response_msg::clear_parkspace_info() {
   if (parkspace_info_ != NULL) parkspace_info_->Clear();
   if (parkspace_info_ != NULL) parkspace_info_->Clear();
   clear_has_parkspace_info();
   clear_has_parkspace_info();
 }
 }
+void Dispatch_response_msg::clear_locate_information() {
+  if (locate_information_ != NULL) locate_information_->Clear();
+  clear_has_locate_information();
+}
 void Dispatch_response_msg::clear_parkspace_info_ex() {
 void Dispatch_response_msg::clear_parkspace_info_ex() {
   parkspace_info_ex_.Clear();
   parkspace_info_ex_.Clear();
 }
 }
+void Dispatch_response_msg::clear_error_manager() {
+  if (error_manager_ != NULL) error_manager_->Clear();
+  clear_has_error_manager();
+}
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int Dispatch_response_msg::kBaseInfoFieldNumber;
 const int Dispatch_response_msg::kBaseInfoFieldNumber;
 const int Dispatch_response_msg::kCommandKeyFieldNumber;
 const int Dispatch_response_msg::kCommandKeyFieldNumber;
-const int Dispatch_response_msg::kErrorManagerFieldNumber;
+const int Dispatch_response_msg::kDispatchMotionDirectionFieldNumber;
+const int Dispatch_response_msg::kTerminalIdFieldNumber;
 const int Dispatch_response_msg::kParkspaceInfoFieldNumber;
 const int Dispatch_response_msg::kParkspaceInfoFieldNumber;
+const int Dispatch_response_msg::kLocateInformationFieldNumber;
 const int Dispatch_response_msg::kParkspaceInfoExFieldNumber;
 const int Dispatch_response_msg::kParkspaceInfoExFieldNumber;
+const int Dispatch_response_msg::kCarTypeFieldNumber;
+const int Dispatch_response_msg::kErrorManagerFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 
 Dispatch_response_msg::Dispatch_response_msg()
 Dispatch_response_msg::Dispatch_response_msg()
@@ -2013,16 +2028,24 @@ Dispatch_response_msg::Dispatch_response_msg(const Dispatch_response_msg& from)
   } else {
   } else {
     base_info_ = NULL;
     base_info_ = NULL;
   }
   }
-  if (from.has_error_manager()) {
-    error_manager_ = new ::message::Error_manager(*from.error_manager_);
-  } else {
-    error_manager_ = NULL;
-  }
   if (from.has_parkspace_info()) {
   if (from.has_parkspace_info()) {
     parkspace_info_ = new ::message::Parkspace_info(*from.parkspace_info_);
     parkspace_info_ = new ::message::Parkspace_info(*from.parkspace_info_);
   } else {
   } else {
     parkspace_info_ = NULL;
     parkspace_info_ = NULL;
   }
   }
+  if (from.has_locate_information()) {
+    locate_information_ = new ::message::Locate_information(*from.locate_information_);
+  } else {
+    locate_information_ = NULL;
+  }
+  if (from.has_error_manager()) {
+    error_manager_ = new ::message::Error_manager(*from.error_manager_);
+  } else {
+    error_manager_ = NULL;
+  }
+  ::memcpy(&dispatch_motion_direction_, &from.dispatch_motion_direction_,
+    static_cast<size_t>(reinterpret_cast<char*>(&car_type_) -
+    reinterpret_cast<char*>(&dispatch_motion_direction_)) + sizeof(car_type_));
   // @@protoc_insertion_point(copy_constructor:message.Dispatch_response_msg)
   // @@protoc_insertion_point(copy_constructor:message.Dispatch_response_msg)
 }
 }
 
 
@@ -2030,8 +2053,8 @@ void Dispatch_response_msg::SharedCtor() {
   _cached_size_ = 0;
   _cached_size_ = 0;
   command_key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   command_key_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   ::memset(&base_info_, 0, static_cast<size_t>(
   ::memset(&base_info_, 0, static_cast<size_t>(
-      reinterpret_cast<char*>(&parkspace_info_) -
-      reinterpret_cast<char*>(&base_info_)) + sizeof(parkspace_info_));
+      reinterpret_cast<char*>(&car_type_) -
+      reinterpret_cast<char*>(&base_info_)) + sizeof(car_type_));
 }
 }
 
 
 Dispatch_response_msg::~Dispatch_response_msg() {
 Dispatch_response_msg::~Dispatch_response_msg() {
@@ -2042,8 +2065,9 @@ Dispatch_response_msg::~Dispatch_response_msg() {
 void Dispatch_response_msg::SharedDtor() {
 void Dispatch_response_msg::SharedDtor() {
   command_key_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   command_key_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
   if (this != internal_default_instance()) delete base_info_;
   if (this != internal_default_instance()) delete base_info_;
-  if (this != internal_default_instance()) delete error_manager_;
   if (this != internal_default_instance()) delete parkspace_info_;
   if (this != internal_default_instance()) delete parkspace_info_;
+  if (this != internal_default_instance()) delete locate_information_;
+  if (this != internal_default_instance()) delete error_manager_;
 }
 }
 
 
 void Dispatch_response_msg::SetCachedSize(int size) const {
 void Dispatch_response_msg::SetCachedSize(int size) const {
@@ -2077,7 +2101,7 @@ void Dispatch_response_msg::Clear() {
 
 
   parkspace_info_ex_.Clear();
   parkspace_info_ex_.Clear();
   cached_has_bits = _has_bits_[0];
   cached_has_bits = _has_bits_[0];
-  if (cached_has_bits & 15u) {
+  if (cached_has_bits & 31u) {
     if (cached_has_bits & 0x00000001u) {
     if (cached_has_bits & 0x00000001u) {
       GOOGLE_DCHECK(!command_key_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
       GOOGLE_DCHECK(!command_key_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
       (*command_key_.UnsafeRawStringPointer())->clear();
       (*command_key_.UnsafeRawStringPointer())->clear();
@@ -2087,13 +2111,22 @@ void Dispatch_response_msg::Clear() {
       base_info_->Clear();
       base_info_->Clear();
     }
     }
     if (cached_has_bits & 0x00000004u) {
     if (cached_has_bits & 0x00000004u) {
-      GOOGLE_DCHECK(error_manager_ != NULL);
-      error_manager_->Clear();
-    }
-    if (cached_has_bits & 0x00000008u) {
       GOOGLE_DCHECK(parkspace_info_ != NULL);
       GOOGLE_DCHECK(parkspace_info_ != NULL);
       parkspace_info_->Clear();
       parkspace_info_->Clear();
     }
     }
+    if (cached_has_bits & 0x00000008u) {
+      GOOGLE_DCHECK(locate_information_ != NULL);
+      locate_information_->Clear();
+    }
+    if (cached_has_bits & 0x00000010u) {
+      GOOGLE_DCHECK(error_manager_ != NULL);
+      error_manager_->Clear();
+    }
+  }
+  if (cached_has_bits & 224u) {
+    ::memset(&dispatch_motion_direction_, 0, static_cast<size_t>(
+        reinterpret_cast<char*>(&car_type_) -
+        reinterpret_cast<char*>(&dispatch_motion_direction_)) + sizeof(car_type_));
   }
   }
   _has_bits_.Clear();
   _has_bits_.Clear();
   _internal_metadata_.Clear();
   _internal_metadata_.Clear();
@@ -2137,34 +2170,68 @@ bool Dispatch_response_msg::MergePartialFromCodedStream(
         break;
         break;
       }
       }
 
 
-      // required .message.Error_manager error_manager = 3;
+      // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
       case 3: {
       case 3: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_error_manager()));
+            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::Dispatch_motion_direction_IsValid(value)) {
+            set_dispatch_motion_direction(static_cast< ::message::Dispatch_motion_direction >(value));
+          } else {
+            mutable_unknown_fields()->AddVarint(
+                3, static_cast< ::google::protobuf::uint64>(value));
+          }
         } else {
         } else {
           goto handle_unusual;
           goto handle_unusual;
         }
         }
         break;
         break;
       }
       }
 
 
-      // optional .message.Parkspace_info parkspace_info = 4;
+      // optional int32 terminal_id = 4;
       case 4: {
       case 4: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
         if (static_cast< ::google::protobuf::uint8>(tag) ==
-            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
-          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
-               input, mutable_parkspace_info()));
+            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_)));
         } else {
         } else {
           goto handle_unusual;
           goto handle_unusual;
         }
         }
         break;
         break;
       }
       }
 
 
-      // repeated .message.Parkspace_info parkspace_info_ex = 5;
+      // optional .message.Parkspace_info parkspace_info = 5;
       case 5: {
       case 5: {
         if (static_cast< ::google::protobuf::uint8>(tag) ==
         if (static_cast< ::google::protobuf::uint8>(tag) ==
             static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
             static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_parkspace_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // optional .message.Locate_information locate_information = 6;
+      case 6: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_locate_information()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // repeated .message.Parkspace_info parkspace_info_ex = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_parkspace_info_ex()));
           DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_parkspace_info_ex()));
         } else {
         } else {
           goto handle_unusual;
           goto handle_unusual;
@@ -2172,6 +2239,38 @@ bool Dispatch_response_msg::MergePartialFromCodedStream(
         break;
         break;
       }
       }
 
 
+      // optional .message.Car_type car_type = 8;
+      case 8: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(64u /* 64 & 0xFF */)) {
+          int value;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          if (::message::Car_type_IsValid(value)) {
+            set_car_type(static_cast< ::message::Car_type >(value));
+          } else {
+            mutable_unknown_fields()->AddVarint(
+                8, static_cast< ::google::protobuf::uint64>(value));
+          }
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // optional .message.Error_manager error_manager = 9;
+      case 9: {
+        if (static_cast< ::google::protobuf::uint8>(tag) ==
+            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_error_manager()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       default: {
       handle_unusual:
       handle_unusual:
         if (tag == 0) {
         if (tag == 0) {
@@ -2215,23 +2314,46 @@ void Dispatch_response_msg::SerializeWithCachedSizes(
       2, this->command_key(), output);
       2, this->command_key(), output);
   }
   }
 
 
-  // required .message.Error_manager error_manager = 3;
+  // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
+  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 & 0x00000040u) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->terminal_id(), output);
+  }
+
+  // optional .message.Parkspace_info parkspace_info = 5;
   if (cached_has_bits & 0x00000004u) {
   if (cached_has_bits & 0x00000004u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      3, *this->error_manager_, output);
+      5, *this->parkspace_info_, output);
   }
   }
 
 
-  // optional .message.Parkspace_info parkspace_info = 4;
+  // optional .message.Locate_information locate_information = 6;
   if (cached_has_bits & 0x00000008u) {
   if (cached_has_bits & 0x00000008u) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      4, *this->parkspace_info_, output);
+      6, *this->locate_information_, output);
   }
   }
 
 
-  // repeated .message.Parkspace_info parkspace_info_ex = 5;
+  // repeated .message.Parkspace_info parkspace_info_ex = 7;
   for (unsigned int i = 0,
   for (unsigned int i = 0,
       n = static_cast<unsigned int>(this->parkspace_info_ex_size()); i < n; i++) {
       n = static_cast<unsigned int>(this->parkspace_info_ex_size()); i < n; i++) {
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
     ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
-      5, this->parkspace_info_ex(static_cast<int>(i)), output);
+      7, this->parkspace_info_ex(static_cast<int>(i)), output);
+  }
+
+  // optional .message.Car_type car_type = 8;
+  if (cached_has_bits & 0x00000080u) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      8, this->car_type(), output);
+  }
+
+  // optional .message.Error_manager error_manager = 9;
+  if (cached_has_bits & 0x00000010u) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      9, *this->error_manager_, output);
   }
   }
 
 
   if (_internal_metadata_.have_unknown_fields()) {
   if (_internal_metadata_.have_unknown_fields()) {
@@ -2267,26 +2389,50 @@ void Dispatch_response_msg::SerializeWithCachedSizes(
         2, this->command_key(), target);
         2, this->command_key(), target);
   }
   }
 
 
-  // required .message.Error_manager error_manager = 3;
+  // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
+  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 & 0x00000040u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->terminal_id(), target);
+  }
+
+  // optional .message.Parkspace_info parkspace_info = 5;
   if (cached_has_bits & 0x00000004u) {
   if (cached_has_bits & 0x00000004u) {
     target = ::google::protobuf::internal::WireFormatLite::
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
       InternalWriteMessageToArray(
-        3, *this->error_manager_, deterministic, target);
+        5, *this->parkspace_info_, deterministic, target);
   }
   }
 
 
-  // optional .message.Parkspace_info parkspace_info = 4;
+  // optional .message.Locate_information locate_information = 6;
   if (cached_has_bits & 0x00000008u) {
   if (cached_has_bits & 0x00000008u) {
     target = ::google::protobuf::internal::WireFormatLite::
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
       InternalWriteMessageToArray(
-        4, *this->parkspace_info_, deterministic, target);
+        6, *this->locate_information_, deterministic, target);
   }
   }
 
 
-  // repeated .message.Parkspace_info parkspace_info_ex = 5;
+  // repeated .message.Parkspace_info parkspace_info_ex = 7;
   for (unsigned int i = 0,
   for (unsigned int i = 0,
       n = static_cast<unsigned int>(this->parkspace_info_ex_size()); i < n; i++) {
       n = static_cast<unsigned int>(this->parkspace_info_ex_size()); i < n; i++) {
     target = ::google::protobuf::internal::WireFormatLite::
     target = ::google::protobuf::internal::WireFormatLite::
       InternalWriteMessageToArray(
       InternalWriteMessageToArray(
-        5, this->parkspace_info_ex(static_cast<int>(i)), deterministic, target);
+        7, this->parkspace_info_ex(static_cast<int>(i)), deterministic, target);
+  }
+
+  // optional .message.Car_type car_type = 8;
+  if (cached_has_bits & 0x00000080u) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      8, this->car_type(), target);
+  }
+
+  // optional .message.Error_manager error_manager = 9;
+  if (cached_has_bits & 0x00000010u) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        9, *this->error_manager_, deterministic, target);
   }
   }
 
 
   if (_internal_metadata_.have_unknown_fields()) {
   if (_internal_metadata_.have_unknown_fields()) {
@@ -2315,13 +2461,6 @@ size_t Dispatch_response_msg::RequiredFieldsByteSizeFallback() const {
         *this->base_info_);
         *this->base_info_);
   }
   }
 
 
-  if (has_error_manager()) {
-    // required .message.Error_manager error_manager = 3;
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->error_manager_);
-  }
-
   return total_size;
   return total_size;
 }
 }
 size_t Dispatch_response_msg::ByteSizeLong() const {
 size_t Dispatch_response_msg::ByteSizeLong() const {
@@ -2333,7 +2472,7 @@ size_t Dispatch_response_msg::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
       ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
         _internal_metadata_.unknown_fields());
         _internal_metadata_.unknown_fields());
   }
   }
-  if (((_has_bits_[0] & 0x00000007) ^ 0x00000007) == 0) {  // All required fields are present.
+  if (((_has_bits_[0] & 0x00000003) ^ 0x00000003) == 0) {  // All required fields are present.
     // required string command_key = 2;
     // required string command_key = 2;
     total_size += 1 +
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::StringSize(
       ::google::protobuf::internal::WireFormatLite::StringSize(
@@ -2344,15 +2483,10 @@ size_t Dispatch_response_msg::ByteSizeLong() const {
       ::google::protobuf::internal::WireFormatLite::MessageSize(
       ::google::protobuf::internal::WireFormatLite::MessageSize(
         *this->base_info_);
         *this->base_info_);
 
 
-    // required .message.Error_manager error_manager = 3;
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->error_manager_);
-
   } else {
   } else {
     total_size += RequiredFieldsByteSizeFallback();
     total_size += RequiredFieldsByteSizeFallback();
   }
   }
-  // repeated .message.Parkspace_info parkspace_info_ex = 5;
+  // repeated .message.Parkspace_info parkspace_info_ex = 7;
   {
   {
     unsigned int count = static_cast<unsigned int>(this->parkspace_info_ex_size());
     unsigned int count = static_cast<unsigned int>(this->parkspace_info_ex_size());
     total_size += 1UL * count;
     total_size += 1UL * count;
@@ -2363,13 +2497,48 @@ size_t Dispatch_response_msg::ByteSizeLong() const {
     }
     }
   }
   }
 
 
-  // optional .message.Parkspace_info parkspace_info = 4;
-  if (has_parkspace_info()) {
-    total_size += 1 +
-      ::google::protobuf::internal::WireFormatLite::MessageSize(
-        *this->parkspace_info_);
-  }
+  if (_has_bits_[0 / 32] & 252u) {
+    // optional .message.Parkspace_info parkspace_info = 5;
+    if (has_parkspace_info()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *this->parkspace_info_);
+    }
+
+    // optional .message.Locate_information locate_information = 6;
+    if (has_locate_information()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *this->locate_information_);
+    }
+
+    // optional .message.Error_manager error_manager = 9;
+    if (has_error_manager()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSize(
+          *this->error_manager_);
+    }
+
+    // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
+    if (has_dispatch_motion_direction()) {
+      total_size += 1 +
+        ::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 = 8;
+    if (has_car_type()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::EnumSize(this->car_type());
+    }
 
 
+  }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
   _cached_size_ = cached_size;
@@ -2401,7 +2570,7 @@ void Dispatch_response_msg::MergeFrom(const Dispatch_response_msg& from) {
 
 
   parkspace_info_ex_.MergeFrom(from.parkspace_info_ex_);
   parkspace_info_ex_.MergeFrom(from.parkspace_info_ex_);
   cached_has_bits = from._has_bits_[0];
   cached_has_bits = from._has_bits_[0];
-  if (cached_has_bits & 15u) {
+  if (cached_has_bits & 255u) {
     if (cached_has_bits & 0x00000001u) {
     if (cached_has_bits & 0x00000001u) {
       set_has_command_key();
       set_has_command_key();
       command_key_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.command_key_);
       command_key_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.command_key_);
@@ -2410,11 +2579,24 @@ void Dispatch_response_msg::MergeFrom(const Dispatch_response_msg& from) {
       mutable_base_info()->::message::Base_info::MergeFrom(from.base_info());
       mutable_base_info()->::message::Base_info::MergeFrom(from.base_info());
     }
     }
     if (cached_has_bits & 0x00000004u) {
     if (cached_has_bits & 0x00000004u) {
-      mutable_error_manager()->::message::Error_manager::MergeFrom(from.error_manager());
+      mutable_parkspace_info()->::message::Parkspace_info::MergeFrom(from.parkspace_info());
     }
     }
     if (cached_has_bits & 0x00000008u) {
     if (cached_has_bits & 0x00000008u) {
-      mutable_parkspace_info()->::message::Parkspace_info::MergeFrom(from.parkspace_info());
+      mutable_locate_information()->::message::Locate_information::MergeFrom(from.locate_information());
+    }
+    if (cached_has_bits & 0x00000010u) {
+      mutable_error_manager()->::message::Error_manager::MergeFrom(from.error_manager());
+    }
+    if (cached_has_bits & 0x00000020u) {
+      dispatch_motion_direction_ = from.dispatch_motion_direction_;
+    }
+    if (cached_has_bits & 0x00000040u) {
+      terminal_id_ = from.terminal_id_;
+    }
+    if (cached_has_bits & 0x00000080u) {
+      car_type_ = from.car_type_;
     }
     }
+    _has_bits_[0] |= cached_has_bits;
   }
   }
 }
 }
 
 
@@ -2433,7 +2615,7 @@ void Dispatch_response_msg::CopyFrom(const Dispatch_response_msg& from) {
 }
 }
 
 
 bool Dispatch_response_msg::IsInitialized() const {
 bool Dispatch_response_msg::IsInitialized() const {
-  if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
+  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
   if (has_base_info()) {
   if (has_base_info()) {
     if (!this->base_info_->IsInitialized()) return false;
     if (!this->base_info_->IsInitialized()) return false;
   }
   }
@@ -2452,8 +2634,12 @@ void Dispatch_response_msg::InternalSwap(Dispatch_response_msg* other) {
   parkspace_info_ex_.InternalSwap(&other->parkspace_info_ex_);
   parkspace_info_ex_.InternalSwap(&other->parkspace_info_ex_);
   command_key_.Swap(&other->command_key_);
   command_key_.Swap(&other->command_key_);
   swap(base_info_, other->base_info_);
   swap(base_info_, other->base_info_);
-  swap(error_manager_, other->error_manager_);
   swap(parkspace_info_, other->parkspace_info_);
   swap(parkspace_info_, other->parkspace_info_);
+  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]);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
   swap(_cached_size_, other->_cached_size_);

+ 232 - 66
message/dispatch_message.pb.h

@@ -705,14 +705,14 @@ class Dispatch_request_msg : public ::google::protobuf::Message /* @@protoc_inse
   ::message::Locate_information* mutable_locate_information();
   ::message::Locate_information* mutable_locate_information();
   void set_allocated_locate_information(::message::Locate_information* locate_information);
   void set_allocated_locate_information(::message::Locate_information* locate_information);
 
 
-  // required .message.Dispatch_motion_direction dispatch_motion_direction = 3;
+  // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
   bool has_dispatch_motion_direction() const;
   bool has_dispatch_motion_direction() const;
   void clear_dispatch_motion_direction();
   void clear_dispatch_motion_direction();
   static const int kDispatchMotionDirectionFieldNumber = 3;
   static const int kDispatchMotionDirectionFieldNumber = 3;
   ::message::Dispatch_motion_direction dispatch_motion_direction() const;
   ::message::Dispatch_motion_direction dispatch_motion_direction() const;
   void set_dispatch_motion_direction(::message::Dispatch_motion_direction value);
   void set_dispatch_motion_direction(::message::Dispatch_motion_direction value);
 
 
-  // required int32 terminal_id = 4;
+  // optional int32 terminal_id = 4;
   bool has_terminal_id() const;
   bool has_terminal_id() const;
   void clear_terminal_id();
   void clear_terminal_id();
   static const int kTerminalIdFieldNumber = 4;
   static const int kTerminalIdFieldNumber = 4;
@@ -851,10 +851,10 @@ class Dispatch_response_msg : public ::google::protobuf::Message /* @@protoc_ins
 
 
   // accessors -------------------------------------------------------
   // accessors -------------------------------------------------------
 
 
-  // repeated .message.Parkspace_info parkspace_info_ex = 5;
+  // repeated .message.Parkspace_info parkspace_info_ex = 7;
   int parkspace_info_ex_size() const;
   int parkspace_info_ex_size() const;
   void clear_parkspace_info_ex();
   void clear_parkspace_info_ex();
-  static const int kParkspaceInfoExFieldNumber = 5;
+  static const int kParkspaceInfoExFieldNumber = 7;
   const ::message::Parkspace_info& parkspace_info_ex(int index) const;
   const ::message::Parkspace_info& parkspace_info_ex(int index) const;
   ::message::Parkspace_info* mutable_parkspace_info_ex(int index);
   ::message::Parkspace_info* mutable_parkspace_info_ex(int index);
   ::message::Parkspace_info* add_parkspace_info_ex();
   ::message::Parkspace_info* add_parkspace_info_ex();
@@ -887,23 +887,53 @@ class Dispatch_response_msg : public ::google::protobuf::Message /* @@protoc_ins
   ::message::Base_info* mutable_base_info();
   ::message::Base_info* mutable_base_info();
   void set_allocated_base_info(::message::Base_info* base_info);
   void set_allocated_base_info(::message::Base_info* base_info);
 
 
-  // required .message.Error_manager error_manager = 3;
+  // optional .message.Parkspace_info parkspace_info = 5;
+  bool has_parkspace_info() const;
+  void clear_parkspace_info();
+  static const int kParkspaceInfoFieldNumber = 5;
+  const ::message::Parkspace_info& parkspace_info() const;
+  ::message::Parkspace_info* release_parkspace_info();
+  ::message::Parkspace_info* mutable_parkspace_info();
+  void set_allocated_parkspace_info(::message::Parkspace_info* parkspace_info);
+
+  // optional .message.Locate_information locate_information = 6;
+  bool has_locate_information() const;
+  void clear_locate_information();
+  static const int kLocateInformationFieldNumber = 6;
+  const ::message::Locate_information& locate_information() const;
+  ::message::Locate_information* release_locate_information();
+  ::message::Locate_information* mutable_locate_information();
+  void set_allocated_locate_information(::message::Locate_information* locate_information);
+
+  // optional .message.Error_manager error_manager = 9;
   bool has_error_manager() const;
   bool has_error_manager() const;
   void clear_error_manager();
   void clear_error_manager();
-  static const int kErrorManagerFieldNumber = 3;
+  static const int kErrorManagerFieldNumber = 9;
   const ::message::Error_manager& error_manager() const;
   const ::message::Error_manager& error_manager() const;
   ::message::Error_manager* release_error_manager();
   ::message::Error_manager* release_error_manager();
   ::message::Error_manager* mutable_error_manager();
   ::message::Error_manager* mutable_error_manager();
   void set_allocated_error_manager(::message::Error_manager* error_manager);
   void set_allocated_error_manager(::message::Error_manager* error_manager);
 
 
-  // optional .message.Parkspace_info parkspace_info = 4;
-  bool has_parkspace_info() const;
-  void clear_parkspace_info();
-  static const int kParkspaceInfoFieldNumber = 4;
-  const ::message::Parkspace_info& parkspace_info() const;
-  ::message::Parkspace_info* release_parkspace_info();
-  ::message::Parkspace_info* mutable_parkspace_info();
-  void set_allocated_parkspace_info(::message::Parkspace_info* parkspace_info);
+  // optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
+  bool has_dispatch_motion_direction() const;
+  void clear_dispatch_motion_direction();
+  static const int kDispatchMotionDirectionFieldNumber = 3;
+  ::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 = 8;
+  bool has_car_type() const;
+  void clear_car_type();
+  static const int kCarTypeFieldNumber = 8;
+  ::message::Car_type car_type() const;
+  void set_car_type(::message::Car_type value);
 
 
   // @@protoc_insertion_point(class_scope:message.Dispatch_response_msg)
   // @@protoc_insertion_point(class_scope:message.Dispatch_response_msg)
  private:
  private:
@@ -911,10 +941,18 @@ class Dispatch_response_msg : public ::google::protobuf::Message /* @@protoc_ins
   void clear_has_base_info();
   void clear_has_base_info();
   void set_has_command_key();
   void set_has_command_key();
   void clear_has_command_key();
   void clear_has_command_key();
-  void set_has_error_manager();
-  void clear_has_error_manager();
+  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_parkspace_info();
   void set_has_parkspace_info();
   void clear_has_parkspace_info();
   void clear_has_parkspace_info();
+  void set_has_locate_information();
+  void clear_has_locate_information();
+  void set_has_car_type();
+  void clear_has_car_type();
+  void set_has_error_manager();
+  void clear_has_error_manager();
 
 
   // helper for ByteSizeLong()
   // helper for ByteSizeLong()
   size_t RequiredFieldsByteSizeFallback() const;
   size_t RequiredFieldsByteSizeFallback() const;
@@ -925,8 +963,12 @@ class Dispatch_response_msg : public ::google::protobuf::Message /* @@protoc_ins
   ::google::protobuf::RepeatedPtrField< ::message::Parkspace_info > parkspace_info_ex_;
   ::google::protobuf::RepeatedPtrField< ::message::Parkspace_info > parkspace_info_ex_;
   ::google::protobuf::internal::ArenaStringPtr command_key_;
   ::google::protobuf::internal::ArenaStringPtr command_key_;
   ::message::Base_info* base_info_;
   ::message::Base_info* base_info_;
-  ::message::Error_manager* error_manager_;
   ::message::Parkspace_info* parkspace_info_;
   ::message::Parkspace_info* parkspace_info_;
+  ::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 struct ::protobuf_dispatch_5fmessage_2eproto::TableStruct;
   friend void ::protobuf_dispatch_5fmessage_2eproto::InitDefaultsDispatch_response_msgImpl();
   friend void ::protobuf_dispatch_5fmessage_2eproto::InitDefaultsDispatch_response_msgImpl();
 };
 };
@@ -2387,7 +2429,7 @@ inline void Dispatch_request_msg::set_allocated_command_key(::std::string* comma
   // @@protoc_insertion_point(field_set_allocated:message.Dispatch_request_msg.command_key)
   // @@protoc_insertion_point(field_set_allocated:message.Dispatch_request_msg.command_key)
 }
 }
 
 
-// required .message.Dispatch_motion_direction dispatch_motion_direction = 3;
+// optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
 inline bool Dispatch_request_msg::has_dispatch_motion_direction() const {
 inline bool Dispatch_request_msg::has_dispatch_motion_direction() const {
   return (_has_bits_[0] & 0x00000010u) != 0;
   return (_has_bits_[0] & 0x00000010u) != 0;
 }
 }
@@ -2412,7 +2454,7 @@ inline void Dispatch_request_msg::set_dispatch_motion_direction(::message::Dispa
   // @@protoc_insertion_point(field_set:message.Dispatch_request_msg.dispatch_motion_direction)
   // @@protoc_insertion_point(field_set:message.Dispatch_request_msg.dispatch_motion_direction)
 }
 }
 
 
-// required int32 terminal_id = 4;
+// optional int32 terminal_id = 4;
 inline bool Dispatch_request_msg::has_terminal_id() const {
 inline bool Dispatch_request_msg::has_terminal_id() const {
   return (_has_bits_[0] & 0x00000020u) != 0;
   return (_has_bits_[0] & 0x00000020u) != 0;
 }
 }
@@ -2705,65 +2747,64 @@ inline void Dispatch_response_msg::set_allocated_command_key(::std::string* comm
   // @@protoc_insertion_point(field_set_allocated:message.Dispatch_response_msg.command_key)
   // @@protoc_insertion_point(field_set_allocated:message.Dispatch_response_msg.command_key)
 }
 }
 
 
-// required .message.Error_manager error_manager = 3;
-inline bool Dispatch_response_msg::has_error_manager() const {
-  return (_has_bits_[0] & 0x00000004u) != 0;
+// optional .message.Dispatch_motion_direction dispatch_motion_direction = 3;
+inline bool Dispatch_response_msg::has_dispatch_motion_direction() const {
+  return (_has_bits_[0] & 0x00000020u) != 0;
 }
 }
-inline void Dispatch_response_msg::set_has_error_manager() {
-  _has_bits_[0] |= 0x00000004u;
+inline void Dispatch_response_msg::set_has_dispatch_motion_direction() {
+  _has_bits_[0] |= 0x00000020u;
 }
 }
-inline void Dispatch_response_msg::clear_has_error_manager() {
-  _has_bits_[0] &= ~0x00000004u;
+inline void Dispatch_response_msg::clear_has_dispatch_motion_direction() {
+  _has_bits_[0] &= ~0x00000020u;
 }
 }
-inline const ::message::Error_manager& Dispatch_response_msg::error_manager() const {
-  const ::message::Error_manager* p = error_manager_;
-  // @@protoc_insertion_point(field_get:message.Dispatch_response_msg.error_manager)
-  return p != NULL ? *p : *reinterpret_cast<const ::message::Error_manager*>(
-      &::message::_Error_manager_default_instance_);
+inline void Dispatch_response_msg::clear_dispatch_motion_direction() {
+  dispatch_motion_direction_ = 0;
+  clear_has_dispatch_motion_direction();
 }
 }
-inline ::message::Error_manager* Dispatch_response_msg::release_error_manager() {
-  // @@protoc_insertion_point(field_release:message.Dispatch_response_msg.error_manager)
-  clear_has_error_manager();
-  ::message::Error_manager* temp = error_manager_;
-  error_manager_ = NULL;
-  return temp;
+inline ::message::Dispatch_motion_direction Dispatch_response_msg::dispatch_motion_direction() const {
+  // @@protoc_insertion_point(field_get:message.Dispatch_response_msg.dispatch_motion_direction)
+  return static_cast< ::message::Dispatch_motion_direction >(dispatch_motion_direction_);
 }
 }
-inline ::message::Error_manager* Dispatch_response_msg::mutable_error_manager() {
-  set_has_error_manager();
-  if (error_manager_ == NULL) {
-    error_manager_ = new ::message::Error_manager;
-  }
-  // @@protoc_insertion_point(field_mutable:message.Dispatch_response_msg.error_manager)
-  return error_manager_;
+inline void Dispatch_response_msg::set_dispatch_motion_direction(::message::Dispatch_motion_direction value) {
+  assert(::message::Dispatch_motion_direction_IsValid(value));
+  set_has_dispatch_motion_direction();
+  dispatch_motion_direction_ = value;
+  // @@protoc_insertion_point(field_set:message.Dispatch_response_msg.dispatch_motion_direction)
 }
 }
-inline void Dispatch_response_msg::set_allocated_error_manager(::message::Error_manager* error_manager) {
-  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
-  if (message_arena == NULL) {
-    delete reinterpret_cast< ::google::protobuf::MessageLite*>(error_manager_);
-  }
-  if (error_manager) {
-    ::google::protobuf::Arena* submessage_arena = NULL;
-    if (message_arena != submessage_arena) {
-      error_manager = ::google::protobuf::internal::GetOwnedMessage(
-          message_arena, error_manager, submessage_arena);
-    }
-    set_has_error_manager();
-  } else {
-    clear_has_error_manager();
-  }
-  error_manager_ = error_manager;
-  // @@protoc_insertion_point(field_set_allocated:message.Dispatch_response_msg.error_manager)
+
+// optional int32 terminal_id = 4;
+inline bool Dispatch_response_msg::has_terminal_id() const {
+  return (_has_bits_[0] & 0x00000040u) != 0;
+}
+inline void Dispatch_response_msg::set_has_terminal_id() {
+  _has_bits_[0] |= 0x00000040u;
+}
+inline void Dispatch_response_msg::clear_has_terminal_id() {
+  _has_bits_[0] &= ~0x00000040u;
+}
+inline void Dispatch_response_msg::clear_terminal_id() {
+  terminal_id_ = 0;
+  clear_has_terminal_id();
+}
+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 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)
 }
 }
 
 
-// optional .message.Parkspace_info parkspace_info = 4;
+// optional .message.Parkspace_info parkspace_info = 5;
 inline bool Dispatch_response_msg::has_parkspace_info() const {
 inline bool Dispatch_response_msg::has_parkspace_info() const {
-  return (_has_bits_[0] & 0x00000008u) != 0;
+  return (_has_bits_[0] & 0x00000004u) != 0;
 }
 }
 inline void Dispatch_response_msg::set_has_parkspace_info() {
 inline void Dispatch_response_msg::set_has_parkspace_info() {
-  _has_bits_[0] |= 0x00000008u;
+  _has_bits_[0] |= 0x00000004u;
 }
 }
 inline void Dispatch_response_msg::clear_has_parkspace_info() {
 inline void Dispatch_response_msg::clear_has_parkspace_info() {
-  _has_bits_[0] &= ~0x00000008u;
+  _has_bits_[0] &= ~0x00000004u;
 }
 }
 inline const ::message::Parkspace_info& Dispatch_response_msg::parkspace_info() const {
 inline const ::message::Parkspace_info& Dispatch_response_msg::parkspace_info() const {
   const ::message::Parkspace_info* p = parkspace_info_;
   const ::message::Parkspace_info* p = parkspace_info_;
@@ -2805,7 +2846,57 @@ inline void Dispatch_response_msg::set_allocated_parkspace_info(::message::Parks
   // @@protoc_insertion_point(field_set_allocated:message.Dispatch_response_msg.parkspace_info)
   // @@protoc_insertion_point(field_set_allocated:message.Dispatch_response_msg.parkspace_info)
 }
 }
 
 
-// repeated .message.Parkspace_info parkspace_info_ex = 5;
+// optional .message.Locate_information locate_information = 6;
+inline bool Dispatch_response_msg::has_locate_information() const {
+  return (_has_bits_[0] & 0x00000008u) != 0;
+}
+inline void Dispatch_response_msg::set_has_locate_information() {
+  _has_bits_[0] |= 0x00000008u;
+}
+inline void Dispatch_response_msg::clear_has_locate_information() {
+  _has_bits_[0] &= ~0x00000008u;
+}
+inline const ::message::Locate_information& Dispatch_response_msg::locate_information() const {
+  const ::message::Locate_information* p = locate_information_;
+  // @@protoc_insertion_point(field_get:message.Dispatch_response_msg.locate_information)
+  return p != NULL ? *p : *reinterpret_cast<const ::message::Locate_information*>(
+      &::message::_Locate_information_default_instance_);
+}
+inline ::message::Locate_information* Dispatch_response_msg::release_locate_information() {
+  // @@protoc_insertion_point(field_release:message.Dispatch_response_msg.locate_information)
+  clear_has_locate_information();
+  ::message::Locate_information* temp = locate_information_;
+  locate_information_ = NULL;
+  return temp;
+}
+inline ::message::Locate_information* Dispatch_response_msg::mutable_locate_information() {
+  set_has_locate_information();
+  if (locate_information_ == NULL) {
+    locate_information_ = new ::message::Locate_information;
+  }
+  // @@protoc_insertion_point(field_mutable:message.Dispatch_response_msg.locate_information)
+  return locate_information_;
+}
+inline void Dispatch_response_msg::set_allocated_locate_information(::message::Locate_information* locate_information) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(locate_information_);
+  }
+  if (locate_information) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      locate_information = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, locate_information, submessage_arena);
+    }
+    set_has_locate_information();
+  } else {
+    clear_has_locate_information();
+  }
+  locate_information_ = locate_information;
+  // @@protoc_insertion_point(field_set_allocated:message.Dispatch_response_msg.locate_information)
+}
+
+// repeated .message.Parkspace_info parkspace_info_ex = 7;
 inline int Dispatch_response_msg::parkspace_info_ex_size() const {
 inline int Dispatch_response_msg::parkspace_info_ex_size() const {
   return parkspace_info_ex_.size();
   return parkspace_info_ex_.size();
 }
 }
@@ -2832,6 +2923,81 @@ Dispatch_response_msg::parkspace_info_ex() const {
   return parkspace_info_ex_;
   return parkspace_info_ex_;
 }
 }
 
 
+// optional .message.Car_type car_type = 8;
+inline bool Dispatch_response_msg::has_car_type() const {
+  return (_has_bits_[0] & 0x00000080u) != 0;
+}
+inline void Dispatch_response_msg::set_has_car_type() {
+  _has_bits_[0] |= 0x00000080u;
+}
+inline void Dispatch_response_msg::clear_has_car_type() {
+  _has_bits_[0] &= ~0x00000080u;
+}
+inline void Dispatch_response_msg::clear_car_type() {
+  car_type_ = 0;
+  clear_has_car_type();
+}
+inline ::message::Car_type Dispatch_response_msg::car_type() const {
+  // @@protoc_insertion_point(field_get:message.Dispatch_response_msg.car_type)
+  return static_cast< ::message::Car_type >(car_type_);
+}
+inline void Dispatch_response_msg::set_car_type(::message::Car_type value) {
+  assert(::message::Car_type_IsValid(value));
+  set_has_car_type();
+  car_type_ = value;
+  // @@protoc_insertion_point(field_set:message.Dispatch_response_msg.car_type)
+}
+
+// optional .message.Error_manager error_manager = 9;
+inline bool Dispatch_response_msg::has_error_manager() const {
+  return (_has_bits_[0] & 0x00000010u) != 0;
+}
+inline void Dispatch_response_msg::set_has_error_manager() {
+  _has_bits_[0] |= 0x00000010u;
+}
+inline void Dispatch_response_msg::clear_has_error_manager() {
+  _has_bits_[0] &= ~0x00000010u;
+}
+inline const ::message::Error_manager& Dispatch_response_msg::error_manager() const {
+  const ::message::Error_manager* p = error_manager_;
+  // @@protoc_insertion_point(field_get:message.Dispatch_response_msg.error_manager)
+  return p != NULL ? *p : *reinterpret_cast<const ::message::Error_manager*>(
+      &::message::_Error_manager_default_instance_);
+}
+inline ::message::Error_manager* Dispatch_response_msg::release_error_manager() {
+  // @@protoc_insertion_point(field_release:message.Dispatch_response_msg.error_manager)
+  clear_has_error_manager();
+  ::message::Error_manager* temp = error_manager_;
+  error_manager_ = NULL;
+  return temp;
+}
+inline ::message::Error_manager* Dispatch_response_msg::mutable_error_manager() {
+  set_has_error_manager();
+  if (error_manager_ == NULL) {
+    error_manager_ = new ::message::Error_manager;
+  }
+  // @@protoc_insertion_point(field_mutable:message.Dispatch_response_msg.error_manager)
+  return error_manager_;
+}
+inline void Dispatch_response_msg::set_allocated_error_manager(::message::Error_manager* error_manager) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == NULL) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(error_manager_);
+  }
+  if (error_manager) {
+    ::google::protobuf::Arena* submessage_arena = NULL;
+    if (message_arena != submessage_arena) {
+      error_manager = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, error_manager, submessage_arena);
+    }
+    set_has_error_manager();
+  } else {
+    clear_has_error_manager();
+  }
+  error_manager_ = error_manager;
+  // @@protoc_insertion_point(field_set_allocated:message.Dispatch_response_msg.error_manager)
+}
+
 // -------------------------------------------------------------------
 // -------------------------------------------------------------------
 
 
 // Catcher_data
 // Catcher_data

+ 11 - 5
message/dispatch_message.proto

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