Pārlūkot izejas kodu

修改消息格式,适应新版调度

zx 4 gadi atpakaļ
vecāks
revīzija
c80f532ed1

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 4010 - 1088
message/dispatch_message.pb.cc


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 5031 - 1381
message/dispatch_message.pb.h


+ 266 - 84
message/dispatch_message.proto

@@ -2,60 +2,7 @@ syntax = "proto2";
 package message;
 import "message_base.proto";
 
-//调度管理 的状态
-enum Dispatch_manager_status
-{
-    E_DISPATCH_MANAGER_UNKNOW               = 0;    //未知
-    E_DISPATCH_MANAGER_READY                = 1;    //准备,待机
-    E_DISPATCH_MANAGER_STORE                = 2;    //正在存车
-    E_DISPATCH_MANAGER_PICKUP               = 3;    //正在取车
 
-    E_DISPATCH_MANAGER_FAULT               = 10;    //故障
-}
-
-//抓车器状态, 楚天项目就是AGV系统
-enum Catcher_status
-{
-    E_CATCHER_UNKNOW               = 0;     //未知
-    E_CATCHER_READY                = 1;     //准备,待机
-    E_CATCHER_STORE                = 2;	    //正在存车
-    E_CATCHER_PICKUP               = 3;	    //正在取车
-
-    E_CATCHER_FAULT                = 10;     //故障
-}
-
-//搬运器状态, 楚天项目就是中跑车
-enum Carrier_status
-{
-    E_CARRIER_UNKNOW               = 0;     //未知
-    E_CARRIER_READY                = 1;     //准备,待机
-    E_CARRIER_STORE                = 2;	    //正在存车
-    E_CARRIER_PICKUP               = 3;	    //正在取车
-
-    E_CARRIER_FAULT                = 10;     //故障
-}
-
-//升降机状态, 楚天项目就是电梯
-enum Elevator_status
-{
-    E_ELEVATOR_UNKNOW               = 0;     //未知
-    E_ELEVATOR_READY                = 1;     //准备,待机
-    E_ELEVATOR_STORE                = 2;	    //正在存车
-    E_ELEVATOR_PICKUP               = 3;	    //正在取车
-
-    E_ELEVATOR_FAULT                = 10;     //故障
-}
-
-//通道口状态, 楚天项目就是一楼的出入口
-enum Passageway_status
-{
-    E_PASSAGEWAY_UNKNOW               = 0;     //未知
-    E_PASSAGEWAY_READY                = 1;     //准备,待机
-    E_PASSAGEWAY_STORE                = 2;	    //正在存车
-    E_PASSAGEWAY_PICKUP               = 3;	    //正在取车
-
-    E_PASSAGEWAY_FAULT                = 10;     //故障
-}
 
 //终端流程状态, 表示这个出入口到楼上停车位之间的所有设备总状态
 enum Terminal_status
@@ -76,12 +23,13 @@ enum Passageway_direction
     E_BILATERAL         =2;         //双向口
 }
 
-//设备坐标
-message Device_position
+//调度模块终端出入口的状态
+message Dispatch_terminal_status_msg
 {
-    required float x=1;             //X轴坐标
-    required float y=2;             //Y轴坐标
-    required float z=3;             //Z轴坐标, 楚天AGV和电梯一一对应,所以Z轴就用电梯高度表示
+    required Base_info                  base_info=1;                    //消息类型
+    required int32                      terminal_id=2;                  //终端id
+    required Terminal_status            terminal_status = 3;            //终端流程状态, 表示这个出入口到楼上停车位之间的所有设备总状态
+    required Passageway_direction       passageway_direction = 4;       //通道口属性, 出入口的方向属性, 表示这个通道允许停车或者取车
 }
 
 //调度方向, 停车取车, 表示正在执行的动作
@@ -91,43 +39,277 @@ enum Dispatch_motion_direction
     E_PICKUP_CAR            =1;         //取车, 停车位 -> 出入口
 }
 
-//调度管理总管理的状态
-message Dispatch_manager_status_msg
+
+
+//执行搬运请求(主控->调度管理)
+message Dispatch_request_msg
 {
-    required Base_info                  base_info=1;                    //消息类型
-    required int32                      dispatch_id=2;                  //调度管理模块 id
-    required Dispatch_manager_status    dispatch_manager_status = 3;    //调度管理模块 状态
-    repeated Catcher_status             catcher_status = 4;             //抓车器状态, 楚天项目就是AGV系统
-    repeated Carrier_status             carrier_status = 5;             //搬运器状态, 楚天项目就是中跑车
-    repeated Elevator_status            elevator_status = 6;            //升降机状态, 楚天项目就是电梯
-    repeated Passageway_status          passageway_status = 7;          //通道口状态, 楚天项目就是一楼的出入口
+    required Base_info                  base_info=1;                            //消息类型
+    required string                     command_key=2;                   //指令唯一标识符id
+
+    optional Dispatch_motion_direction  dispatch_motion_direction=3;            //调度方向, 停车取车
+    optional int32                      terminal_id=4;                          //终端id, 出入口
+    optional Locate_information         locate_information=5;                   //汽车测量信息, 只有停车时有数据, 取车时没有数据.
+
+    repeated Parkspace_info             parkspace_info_ex=6;                         //车位编号, 停车位(B方案, 分配3个停车位)
+    optional Car_type                   car_type=7;                             //汽车大小
 }
 
-//调度模块终端出入口的状态
-message Dispatch_terminal_status_msg
+//搬运动作执行完成后反馈结果(调度管理->主控)
+message Dispatch_response_msg
 {
     required Base_info                  base_info=1;                    //消息类型
-    required int32                      terminal_id=2;                  //终端id
-    required Terminal_status            terminal_status = 3;            //终端流程状态, 表示这个出入口到楼上停车位之间的所有设备总状态
-    required Passageway_direction       passageway_direction = 4;       //通道口属性, 出入口的方向属性, 表示这个通道允许停车或者取车
+    required string                     command_key=2;                   //指令唯一标识符id
+
+
+    optional Dispatch_motion_direction  dispatch_motion_direction=3;            //调度方向, 停车取车
+    optional int32                      terminal_id=4;                          //终端id, 出入口
+    optional Locate_information         locate_information=5;                   //汽车测量信息, 只有停车时有数据, 取车时没有数据.
+
+    repeated Parkspace_info             parkspace_info_ex=6;                         //车位编号, 停车位(B方案, 分配3个停车位)
+    optional Car_type                   car_type=7;                             //汽车大小
+
+    optional Error_manager              error_manager = 8;
 }
 
 
-//执行搬运请求
-message Dispatch_request_msg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//调度管理 的状态
+enum Dispatch_manager_status
 {
-    required Base_info                  base_info=1;                            //消息类型
-    required string                     command_key=2;                   //指令唯一标识符id
-    required Dispatch_motion_direction  dispatch_motion_direction=3;            //调度方向, 停车取车
-    required int32                      terminal_id=4;                          //终端id, 出入口
-    required int32                      parkspace_id=5;                         //车位编号, 停车位
-    optional Locate_information         locate_information=6;                   //汽车测量信息, 只有停车时有数据, 取车时没有数据.
+    E_DISPATCH_MANAGER_UNKNOW               = 0;    //未知
+    E_DISPATCH_MANAGER_READY                = 1;    //准备,待机
+    E_DISPATCH_MANAGER_STORE                = 2;    //正在存
+    E_DISPATCH_MANAGER_PICKUP               = 3;    //正在取车
+
+    E_DISPATCH_MANAGER_FAULT               = 100;    //故障
 }
 
-//搬运动作执行完成后反馈结果
-message Dispatch_response_msg
+//设备状态,这个类的总状态,这里指工作任务流程
+	enum Dispatch_device_status
+	{
+	    DISPATCH_DEVICE_UNKNOW               	= 0;    //未知
+    	DISPATCH_DEVICE_READY               	= 1;    //准备,待机
+    	DISPATCH_DEVICE_BUSY					= 2; 	//工作正忙
+
+    	DISPATCH_DEVICE_ONE_LEVEL_OVER		= 3; 	//一级工作完成;
+    	DISPATCH_DEVICE_ONE_LEVEL_WORK		= 4;	//一级工作状态; 就是普通的移动任务
+    	DISPATCH_DEVICE_TWO_LEVEL_OVER		= 5; 	//一级工作完成;
+    	DISPATCH_DEVICE_TWO_LEVEL_WORK		= 6;	//二级工作状态; 就是紧急避让; 插队任务(会在执行一级任务的过程中; 插队并优先执行二级任务)
+    	DISPATCH_DEVICE_THREE_LEVEL_OVER		= 7; 	//一级工作完成;
+    	DISPATCH_DEVICE_THREE_LEVEL_WORK		= 8;	//三级工作任务; 就是锁定硬件资源; 不让插队; (除非急停或者取消任务)
+
+       	DISPATCH_DEVICE_FAULT					= 100;	//故障
+    	DISPATCH_DEVICE_DISCONNECT			= 101; 	//通信故障
+	};
+
+	//调度任务的等级
+	enum Dispatch_task_level
+	{
+//	    DISPATCH_TASK_UNKNOW_LEVEL          = 0;    //无效任务
+		DISPATCH_TASK_ONE_LEVEL             = 1;    //一级任务
+		DISPATCH_TASK_TWO_LEVEL				= 2;	//二级任务
+		DISPATCH_TASK_THREE_LEVEL			= 3;	//三级任务
+	};
+
+	//抓车的夹杆
+	enum Clamp_motion
+	{
+		E_CLAMP_NO_ACTION            	= 0;    //无动作.
+		E_CLAMP_TIGHT               	= 1;    //夹紧夹杆
+		E_CLAMP_LOOSE					= 2;	//松开夹杆
+	};
+
+	//中跑车和平层轨道的对接
+	enum Joint_motion
+	{
+		E_JOINT_NO_ACTION            	= 0;    //无动作.
+		E_JOINT_HOLD_OUT               	= 1;    //伸出对接,之后中跑车可以x轴移动,电梯不能Z轴移动
+		E_JOINT_TAKE_BACK				= 2;	//收回对接,之后中跑车固定在电梯上不能X轴移动,电梯可以Z轴移动
+	};
+
+	//小跑车的位置,是否在中跑车上面
+	enum Small_sports_car_motion
+	{
+		E_SMALL_SPORTS_NO_ACTION		= 0;    //无动作.
+		E_SMALL_SPORTS_CAR_GET_AWAY 	= 1;    //小跑车离开中跑车
+		E_SMALL_SPORTS_CAR_GET_BACK		= 2;	//小跑车返回中跑车
+	};
+
+
+	//指令完成状态, 设备答复指令, 返回任务完成的情况
+	enum Respons_status
+	{
+		RESPONS_WORKING            	= 0;    //任务进行中
+		RESPONS_OVER               	= 1;    //任务完成
+		RESPONS_MINOR_ERROR			= 100;	//一般故障, 可恢复
+		RESPONS_CRITICAL_ERROR		= 101;	//致命故障,不可恢复
+	};
+
+	//设备的硬件设备状态
+	enum Hardware_device_status
+	{
+		DEVICE_UNKNOWN              = 0;    //设备未知
+		DEVICE_READY                = 1;    //设备空闲(可以接受新的指令任务)
+		DEVICE_WORKING				= 2;	//设备工作中
+		DEVICE_EMERGENCY_STOP		= 3;	//设备急停
+		DEVICE_UNSAFETY				= 4;	//设备不安全(暂时不考虑是否处于安全位置)
+		DEVICE_COLLISION			= 5;	//设备发生碰撞
+		DEVICE_FAULT				= 6;	//设备故障
+	};
+
+	//设备的负载状态, 小跑车上面是否有车.
+	enum Load_status
+	{
+		LOAD_UNKNOWN				= 0;	//负载未知
+		HAVE_CAR               		= 1;    //有车
+		NO_CAR            			= 2;    //没车
+	};
+
+	//7号出口 转台方向
+	enum Turntable_direction
+	{
+		TURNTABLE_DIRECTION_UNKNOWN				= 0;	//方向未知,
+		TURNTABLE_DIRECTION_INSIDE 				= 1;    //方向朝里,对接内门的小跑车
+		TURNTABLE_DIRECTION_OUTSIDE  			= 2;    //没车朝外,对接外门的出口
+	};
+
+	//出入口 门的开关状态
+	enum Door_motion
+	{
+		DOOR_UNKNOWN            = 0;    //门的开关状态 未知, 或者工作到一半,正在工作中.
+	    DOOR_OPEN               = 1;    //开门
+		DOOR_CLOSE				= 2;	//关门
+		DOOR_ERROR				= 3;	//
+	};
+
+	//边界判断,是否超界
+	enum Overstep_the_boundary
+	{
+		BOUNDARY_NORMAL			= 0;	//边界 正常
+		BOUNDARY_OVERSTEP       = 1;    //超界
+	};
+
+
+
+
+//抓取器的状态(机器手)
+message Catcher_data
+{
+    required Dispatch_device_type               dispatch_device_type=1;         //调度设备的类型
+    required Dispatch_device_status             dispatch_device_status=2;       //设备总状态, 控制任务流程(长流程)
+
+    required int32                              device_id=3;                    //设备id,
+	optional Hardware_device_status				actual_device_status=4;			//机器人的硬件设备状态(短流程)
+	optional Load_status						actual_load_status=5;	        //机器人的负载状态, 机器人上面是否有车.
+
+    optional int32 								actual_coordinates_id=6;		//机器人真实 空间位置的id.
+	optional float 								actual_x=7;					    //机器人坐标x轴,
+	optional float 								actual_y=8;					    //机器人坐标y轴,
+	optional float 								actual_b=9;					    //机器人坐标b轴, 旋转范围80~280
+	optional float 								actual_z=10;				    //机器人坐标z轴,
+	optional float 								actual_d1=11;				    //机器人坐标d1轴, 机器人抓车杆纵向移动(前轮抓杆)
+	optional float 								actual_d2=12;				    //机器人坐标d2轴, 机器人抓车杆纵向移动(后轮抓杆)
+	optional Clamp_motion						actual_clamp_motion1=13;		//机器人夹车杆. 0=无动作,1=夹紧,2=松开
+	optional Clamp_motion						actual_clamp_motion2=14;		//机器人夹车杆. 0=无动作,1=夹紧,2=松开
+	optional Clamp_motion						actual_clamp_motion3=15;		//机器人夹车杆. 0=无动作,1=夹紧,2=松开
+	optional Clamp_motion						actual_clamp_motion4=16;		//机器人夹车杆. 0=无动作,1=夹紧,2=松开
+
+    optional string                             actual_error_code=17;	        //机器人设备的故障信息位
+    optional string                             actual_warning_code=18;     	//机器人设备的警告信息位
+    optional string							    actual_error_description=19;    //机器人设备的错误描述
+}
+
+//搬运器的状态
+message Carrier_data
+{
+    required Dispatch_device_type               dispatch_device_type=1;         //调度设备的类型
+    required Dispatch_device_status             dispatch_device_status=2;       //设备总状态, 控制任务流程(长流程)
+
+    required int32                              device_id=3;                    //设备id,
+	optional Hardware_device_status				actual_device_status=4;			//搬运器的硬件设备状态(短流程)
+	optional Load_status						actual_load_status=5;	        //搬运器的负载状态, 小跑车上面是否有车.
+
+    optional int32 								actual_coordinates_id=6;	    //搬运器真实 空间位置的id.
+	optional float 								actual_x=7;					    //搬运器坐标x轴, 中跑车控制横向移动
+	optional float 								actual_y=8;					    //搬运器坐标y轴, 小跑车控制纵向移动
+	optional float 								actual_z=9;					    //搬运器坐标z轴, 电梯控制上下移动
+	optional float 								actual_y1=10;				        //搬运器坐标y1轴, 小跑车控制纵向移动(前轮抓杆)
+	optional float 								actual_y2=11;				        //搬运器坐标y2轴, 小跑车控制纵向移动(后轮抓杆)
+	optional Clamp_motion						actual_clamp_motion1=12;		    //小跑车夹车杆. 0=无动作,1=夹紧,2=松开
+	optional Clamp_motion						actual_clamp_motion2=13;		    //小跑车夹车杆. 0=无动作,1=夹紧,2=松开
+	optional Small_sports_car_motion			actual_small_sports_car_motion=14;	//小跑车的位置,是否在中跑车上面, 0=无动作,1=出发到位,2=返回到位
+	optional Joint_motion						actual_joint_motion_x1=15;		    //电梯与X轴的横向轨道对接,0=无动作,1=伸出到位,2=收回到位
+	optional Joint_motion						actual_joint_motion_x2=16;		    //电梯与X轴的横向轨道对接,0=无动作,1=伸出到位,2=收回到位
+
+    optional string                             actual_error_code=17;	        //搬运器设备的故障信息位
+    optional string                             actual_warning_code=18;	        //搬运器设备的警告信息位
+    optional string							    actual_error_description=19;    //搬运器设备的错误描述
+}
+
+//出入口的状态
+message Passageway_data
+{
+    required Dispatch_device_type               dispatch_device_type=1;         //调度设备的类型
+    required Dispatch_device_status             dispatch_device_status=2;       //设备总状态, 控制任务流程(长流程)
+
+    required int32                              device_id=3;                    //设备id,
+    //通道口的设备状态数据,
+	optional Hardware_device_status				actual_device_status=4;			//通道口的硬件设备状态(短流程)
+	optional Load_status						actual_inside_load_status=5;	        //通道口的内部负载状态, 门内地感是否有车.
+	optional Load_status						actual_outside_load_status=6;	        //通道口的外部负载状态, 门外地感是否有车.
+	optional Overstep_the_boundary				actual_front_overstep_the_boundary=7;	//通道口 汽车前边界
+	optional Overstep_the_boundary				actual_back_overstep_the_boundary=8;	//通道口 汽车后边界
+	optional Overstep_the_boundary				actual_height_overstep_the_boundary=9;	//通道口 车辆是否超高
+	optional Load_status						actual_outside_door_sensor=10;	//通道口 的外门处的传感器, 判断是否有车经过外门
+	//通道口的真实状态, 可能是路径中间的坐标
+    optional Door_motion						actual_inside_door_motion=11;	//通道口 内门动作
+	optional Door_motion						actual_outside_door_motion=12;	//通道口 外门动作
+	optional Load_status						actual_turntable_load_status=13;	//通道口 转盘负载状态, 是否有车.
+	optional Turntable_direction				actual_turntable_direction=14;	//通道口 转台方向
+
+    optional string                             actual_error_code=15;	        //通道口设备的故障信息位
+    optional string                             actual_warning_code=16;	        //通道口设备的警告信息位
+    optional string							    actual_error_description=17;    //通道口设备的错误描述
+}
+
+
+//调度管理总管理的状态
+message Dispatch_manager_status_msg
 {
     required Base_info                  base_info=1;                    //消息类型
-    required string                     command_key=2;                   //指令唯一标识符id
-    required Error_manager              error_manager = 3;
+
+    required int32                      dispatch_id=2;                  //调度管理模块 id
+    required Dispatch_manager_status    dispatch_manager_status = 3;    //调度管理模块 状态
+
+    repeated Catcher_data               catcher_data_map = 4;           //机器手的数据
+    repeated Carrier_data               carrier_data_map = 5;           //搬运器的数据
+    repeated Passageway_data            passageway_data_map = 6;           //出入口的数据
+
+}
+
+
+
+
+
+//调度管理的设备详细的数据信息
+message Dispatch_manager_data_msg
+{
+    //后续再加
 }
+
+
+

+ 2 - 2
message/log_process.pb.cc

@@ -14,8 +14,8 @@
 #include <google/protobuf/wire_format.h>
 // @@protoc_insertion_point(includes)
 #include <google/protobuf/port_def.inc>
-extern PROTOBUF_INTERNAL_EXPORT_dispatch_5fmessage_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_Dispatch_request_msg_dispatch_5fmessage_2eproto;
-extern PROTOBUF_INTERNAL_EXPORT_dispatch_5fmessage_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_Dispatch_response_msg_dispatch_5fmessage_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dispatch_5fmessage_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<3> scc_info_Dispatch_request_msg_dispatch_5fmessage_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dispatch_5fmessage_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<4> scc_info_Dispatch_response_msg_dispatch_5fmessage_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_log_5fprocess_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_Log_data_log_5fprocess_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_log_5fprocess_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_Manual_operation_log_log_5fprocess_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_measure_5fmessage_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_Measure_request_msg_measure_5fmessage_2eproto;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 624 - 289
message/message_base.pb.cc


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 729 - 283
message/message_base.pb.h


+ 114 - 40
message/message_base.proto

@@ -12,6 +12,8 @@ enum Message_type
     eLocate_request_msg=0x12;               //定位请求消息
     eLocate_response_msg=0x13;              //定位反馈消息
 
+    eLocate_sift_request_msg = 0x14;            //预测算法请求消息
+    eLocate_sift_response_msg = 0x15;           //预测算法反馈消息
 
     eDispatch_status_msg=0x21;                //调度模块硬件状态消息
     eDispatch_request_msg=0x22;              //请求调度消息
@@ -28,8 +30,7 @@ enum Message_type
     eParkspace_force_update_response_msg = 0x39;//手动修改车位反馈消息
     eParkspace_confirm_alloc_request_msg = 0x3A;//确认分配车位请求消息
     eParkspace_confirm_alloc_response_msg = 0x3B;//确认分配车位反馈消息
-    eParkspace_refresh_request_msg=0x3C;        //请求更新车位数据
-    eParkspace_allocation_data_msg=0x3D;        //车位数据消息
+    eParkspace_allocation_data_msg = 0x3C;     //车位分配模块车位数据消息
 
 
     eStore_command_request_msg=0x41;        //终端停车请求消息
@@ -49,6 +50,12 @@ enum Message_type
     eEntrance_manual_operation_msg=0xb0;            //针对出入口状态操作的手动消息
     eProcess_manual_operation_msg=0xb1;             //针对流程的手动消息
 
+    eDispatch_plan_request_msg          = 0xe0;     //调度总规划的请求(用于启动整个调度算法)(调度管理->调度算法)
+    eDispatch_plan_response_msg         = 0xe1;     //调度总规划的答复(调度算法->调度管理)
+    eDispatch_control_request_msg       = 0xe2;     //调度控制的任务请求(调度算法->调度管理)
+    eDispatch_control_response_msg      = 0xe3;     //调度控制的任务答复(调度管理->调度算法)
+    eDispatch_manager_status_msg        = 0xea;     //调度管理的设备状态消息(调度底下所有硬件设备状态的汇总)
+    eDispatch_manager_data_msg          = 0xeb;     //调度管理的设备详细的数据信息
 
 }
 
@@ -63,8 +70,12 @@ enum Communicator
     eParkspace=0x0200;
     //测量单元
     eMeasurer=0x0300;
+    //测量单元的服务器
+    eMeasurer_sift_server=0x0301;
     //调度机构
-    eDispatch=0x0400;
+    eDispatch_manager=0x0400;
+    //调度机构
+    eDispatch_control=0x0401;
     //...
 
 
@@ -72,10 +83,10 @@ enum Communicator
 ////base message 用于解析未知类型的消息
 message Base_info
 {
-    required Message_type               msg_type=1;
-    optional int32                      timeout_ms=2;
-    required Communicator               sender=3;                       //发送者
-    required Communicator               receiver=4;                     //接收者
+    required Message_type               msg_type=1[default = eBase_msg];
+    optional int32                      timeout_ms=2[default = 0];
+    required Communicator               sender=3[default = eEmpty];                       //发送者
+    required Communicator               receiver=4[default = eEmpty];                     //接收者
 }
 
 // 事件,停车或者取车
@@ -108,63 +119,106 @@ enum Error_level
 
 message Error_manager
 {
-    required int32                      error_code = 1;
-    optional Error_level                error_level = 2;
-    optional string                     error_description = 3;
+    required int32                      error_code = 1[default = 0];
+    optional Error_level                error_level = 2[default = NORMAL];
+    optional string                     error_description = 3[default = ""];
 }
 
 //测量结果结构体
 message Locate_information
-{    
-    optional float locate_x = 1;				//整车的中心点x值; 四轮的中心
-    optional float locate_y = 2;				//整车的中心点y值; 四轮的中心
-    optional float locate_angle = 3;			//整车的旋转角; 四轮的旋转角
-    optional float locate_length = 4;		    //整车的长度; 用于规避碰撞
-    optional float locate_width = 5;			//整车的宽度; 用于规避碰撞
-    optional float locate_height = 6;		    //整车的高度; 用于规避碰撞
-    optional float locate_wheel_base = 7;	    //整车的轮距; 前后轮的距离; 用于机器人或agv的抓车
-    optional float locate_wheel_width = 8;	    //整车的轮距; 左右轮的距离; 用于机器人或agv的抓车
-    optional bool locate_correct = 9;		    //整车的校准标记位
+{
+    optional float locate_x = 1[default = 0];				//整车的中心点x值; 四轮的中心
+    optional float locate_y = 2[default = 0];				//整车的中心点y值; 四轮的中心
+    optional float locate_angle = 3[default = 0];			//整车的旋转角; 四轮的旋转角
+    optional float locate_length = 4[default = 0];		    //整车的长度; 用于规避碰撞
+    optional float locate_width = 5[default = 0];			//整车的宽度; 用于规避碰撞
+    optional float locate_height = 6[default = 0];		    //整车的高度; 用于规避碰撞
+    optional float locate_wheel_base = 7[default = 0];	    //整车的轮距; 前后轮的距离; 用于机器人或agv的抓车
+    optional float locate_wheel_width = 8[default = 0];	    //整车的轮距; 左右轮的距离; 用于机器人或agv的抓车
+    optional bool locate_correct = 9[default = false];		    //整车的校准标记位
+
+    optional float locate_front_theta = 10[default = 0];	    //整车的前轮的旋转角
 }
 
 //车辆基本信息
 message Car_info
 {
-    optional float                      car_length=1;           //车长
-    optional float                      car_width=2;            //车宽
-    optional float                      car_height=3;           //车高
-    optional string                     license=4;              //车辆凭证号
+    optional float                      car_length=1[default = 0];           //车长
+    optional float                      car_width=2[default = 0];            //车宽
+    optional float                      car_height=3[default = 0];           //车高
+    optional string                     license=4[default = ""];              //车辆凭证号
+    optional float                      car_wheel_base = 5[default = 0];	    //整车的轮距; 前后轮的距离; 用于机器人或agv的抓车
+    optional float                      car_wheel_width = 6[default = 0];	//整车的轮距; 左右轮的距离; 用于机器人或agv的抓车
 }
 
 //车位状态枚举
 enum Parkspace_status
 {
-    eParkspace_empty            = 0;         //空闲,可分配
-    eParkspace_occupied         = 1;         //被占用,不可分配
-    eParkspace_reserverd        = 2;         //被预约,预约车辆可分配
-    eParkspace_error            = 3;         //车位机械结构或硬件故障
+    eParkspace_status_unknow    = 0;
+    eParkspace_empty            = 1;         //空闲,可分配
+    eParkspace_occupied         = 2;         //被占用,不可分配
+    eParkspace_reserved         = 3;         //被预约,预约车辆可分配
+    eParkspace_locked           = 4;         //临时锁定,不可分配
+    eParkspace_error            = 5;         //车位机械结构或硬件故障
 }
 
 enum Direction
 {
+    eDirection_unknow = 0;
     eForward = 1;
     eBackward = 2;
 }
 
+//车位分配路线(根据中跑车的路线来定)
+enum Parkspace_path
+{
+	UNKNOW_PATH = 0;
+    OPTIMAL_PATH = 1;
+    LEFT_PATH = 2;
+    RIGHT_PATH = 3;
+    TEMPORARY_CACHE_PATH = 4;
+}
+
+//车位类型
+enum Parkspace_type
+{
+    UNKNOW_PARKSPACE_TYPE = 0;
+    MIN_PARKINGSPACE = 1;//小车位
+    MID_PARKINGSPACE = 2;//中车位
+    BIG_PARKINGSPACE = 3;//大车位
+}
+
+//汽车类型
+enum Car_type
+{
+    UNKNOW_CAR_TYPE = 0;
+    MIN_CAR = 1;//小车
+    MID_CAR = 2;//中车
+    BIG_CAR = 3;//大车
+}
+
 //单个车位基本信息与状态信息,车位信息以及车位上的车辆信息
 message Parkspace_info
 {
-    optional int32              parkspace_id=1;         //车位编号
-    optional int32              index=2;                //同层编号
-    optional Direction          direction=3;            //前后
-    optional int32              floor=4;                //楼层
-    optional float              length=5;               //车位长
-    optional float              width=6;                //车位宽
-    optional float              height=7;               //车位高
-    optional Parkspace_status   parkspace_status=8;     //车位当前状态
-    optional Car_info           car_info=9;              //当前车位存入车辆的凭证号
-    optional string             entry_time=10;          //入场时间
-    optional string             leave_time=11;          //离场时间
+    optional int32              parkingspace_index_id = 1;            //车位ID
+    optional Parkspace_type     parkingspace_type = 2;                //车位类型
+    optional int32              parkingspace_unit_id = 3;            //车位单元号
+    optional int32              parkingspace_room_id = 4;             //同层编号
+    optional Direction          parkingspace_direction = 5;           //前后
+    optional int32              parkingspace_floor_id = 6;            //楼层
+    optional float              parkingspace_width = 7;               //车位宽
+    optional float              parkingspace_height = 8;              //车位高
+    optional Parkspace_status   parkingspace_status = 9;              //车位当前状态
+    optional Car_info           car_info = 10;                        //当前车位存入车辆的凭证号
+    optional string             entry_time = 11;                      //入场时间
+    optional string             leave_time = 12;                      //离场时间
+
+
+
+    optional Parkspace_path     parkspace_path = 13;            // 车位分配路线
+    optional float              path_estimate_time = 14;        //车位分配路线 time(s)
+    optional Parkspace_status   parkspace_status_target=15;     //车位目标状态
+
 }
 
 /*
@@ -198,8 +252,28 @@ enum Step_type
 //步骤状态,每个步骤有四中可能状态 ,等待中-执行中-完成或者错误  四个状态
 enum Step_statu
 {
-    eWaiting=0;               //空闲
+    eWaiting=0;               //完成/空闲
     eWorking=1;
     eError=2;
     eFinished=3;
 }
+
+//调度设备的类型
+enum Dispatch_device_type
+{
+    ROBOT_1                                 = 101;      //一号出口的专用机器手(只能负责1号出口的取车)(目前没有安装,暂时不考虑)
+    ROBOT_2                                 = 102;      //中间的大型机器手   (可以负责1~6号出入口的停车和取车)
+
+    CARRIER_1                               = 200;      //左侧0号电梯井的搬运器(升降电梯 中跑车 小跑车 三合一为搬运器)
+    CARRIER_2                               = 207;      //右侧7号电梯井的搬运器(升降电梯 中跑车 小跑车 三合一为搬运器)
+    CARRIER_3                               = 203;      //中间3楼的搬运器(中跑车 小跑车 二合一为搬运器)(没有电梯, 只能在3楼活动)
+
+    PASSAGEWAY_0                            = 300;      //0号出口(在左侧电梯井, 只能取车)(暂时不存在)
+    PASSAGEWAY_1                            = 301;      //1号出入口
+    PASSAGEWAY_2                            = 302;      //2号出入口
+    PASSAGEWAY_3                            = 303;      //3号出入口
+    PASSAGEWAY_4                            = 304;      //4号出入口
+    PASSAGEWAY_5                            = 305;      //5号出入口
+    PASSAGEWAY_6                            = 306;      //6号出入口
+    PASSAGEWAY_7                            = 307;      //7号出口(在右侧电梯井, 只能取车)
+}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1621 - 455
message/parkspace_allocation_message.pb.cc


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 2373 - 1201
message/parkspace_allocation_message.pb.h


+ 85 - 24
message/parkspace_allocation_message.proto

@@ -2,11 +2,45 @@ syntax = "proto2";
 package message;
 import "message_base.proto";
 
+// 请求
+// 1.分配车位
+// 2.查询车辆位置
+// 3.解锁车位
+// 4.手动操作修改车位状态
+// 5.临时锁定车位
+
+//车辆状态枚举
+enum Vehicle_status
+{
+    eVehicle_unknown        = 0;         //未知状态
+    eVehicle_idle           = 1;         //车辆空闲
+    eVehicle_in_garage      = 2;         //车辆已入库
+    eVehicle_parking        = 3;         //车辆停车中
+    eVehicle_fetching       = 4;         //车辆取车中
+    eVehicle_reserved       = 5;         //已预约未停入
+}
+
+//数据库状态
+enum Database_controller_status
+{
+	    E_UNKNOWN               = 0;    //默认未知
+	    E_READY               	= 1;    //正常待机
+		E_DISCONNECT			= 2;	//断连
+	    E_FAULT					= 3;	//故障
+}
+//车位管理状态
+enum Parkspace_manager_satus
+{
+    eParkspace_manager_unknown      =0;//位置
+    eParkspace_manager_normal       =1;//正常
+    eParkspace_manager_fault        =2;//故障
+};
+
 //1.分配车位请求
 message Parkspace_allocation_request_msg
 {
     required Base_info                  base_info=1;            //消息类型
-    required string                     command_key=2;                   //指令唯一标识符id
+    required string                     command_key=2;           //指令唯一标识符id
     required Car_info                   car_info=3;
     required int32                      terminal_id=4;          //终端id,优化车位分配用
 }
@@ -15,16 +49,17 @@ message Parkspace_allocation_request_msg
 message Parkspace_allocation_response_msg
 {
     required Base_info                  base_info=1;            //消息类型
-    required string                     command_key=2;                   //指令唯一标识符id
+    required string                     command_key=2;           //指令唯一标识符id
     required Error_manager              error_manager=3;        //分配成功与否标志
-    required Parkspace_info             allocated_space_info=4; //分配车位信息
+    repeated Parkspace_info             allocated_parkspace_info_ex = 4;    //分配车位信息
+    optional Car_type                   car_type = 5;//汽车类型
 }
 
 //2.查询车辆位置请求
 message Parkspace_search_request_msg
 {
     required Base_info                  base_info=1;            //消息类型
-    required string                     command_key=2;                   //指令唯一标识符id
+    required string                     command_key=2;           //指令唯一标识符id
     required Car_info                   car_info=3;              //车辆凭证或号牌
 }
 
@@ -32,50 +67,76 @@ message Parkspace_search_request_msg
 message Parkspace_search_response_msg
 {
     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             car_position=4;         //待查询车辆存放位置
+    repeated Parkspace_info             query_parkspace_info_ex=4;         //待查询车辆存放位置
 }
 
-//3.解锁车位请求
+//3.释放车位请求
 message Parkspace_release_request_msg
 {
     required Base_info                  base_info=1;            //消息类型
-    required string                     command_key=2;                   //指令唯一标识符id
-    required Parkspace_info             release_space_info=3;   //待释放车位信息
+    required string                     command_key=2;           //指令唯一标识符id
+    repeated Parkspace_info             release_parkspace_info_ex=3;   //待释放车位信息
 }
 
-//查询车辆位置反馈
+//释放车位请求
 message Parkspace_release_response_msg
 {
     required Base_info                  base_info=1;            //消息类型
-    required string                     command_key=2;                   //指令唯一标识符id
+    required string                     command_key=2;           //指令唯一标识符id
     required Error_manager              error_manager=3;        //分配成功与否标志
-    required Parkspace_info             release_space_info=4;   //待释放车位信息
+    repeated Parkspace_info             release_parkspace_info_ex=4;   //待释放车位信息
+}
+
+// 4.手动操作修改车位状态
+message Parkspace_force_update_request_msg
+{
+    required Base_info                  base_info=1;            //消息类型
+    required string                     command_key=2;           //指令唯一标识符id
+    repeated Parkspace_info             manual_parkspace_info_ex=3;    //待手动修改车位信息,通过id定位
 }
 
-// 5.确定占用车位请求消息
+//手动操作反馈
+message Parkspace_force_update_response_msg
+{
+    required Base_info                  base_info=1;            //消息类型
+    required string                     command_key=2;           //指令唯一标识符id
+    required Error_manager              error_manager=3;        //分配成功与否标志
+    repeated Parkspace_info             manual_parkspace_info_ex=4;    //已修改后的车位信息
+}
+
+// 4.确认分配车位
 message Parkspace_confirm_alloc_request_msg
 {
     required Base_info                  base_info=1;            //消息类型
-    required string                     command_key=2;                   //指令唯一标识符id
-    required Parkspace_info             confirm_space_info=3;    //已修改后的车位信息
+    required string                     command_key=2;           //指令唯一标识符id
+    repeated Parkspace_info             confirm_parkspace_info_ex = 3;    //分配车位信息
+    optional Car_type                   car_type = 4;//汽车类型
+
 }
-//确定占用车位反馈消息
+//确认分配车位反馈
 message Parkspace_confirm_alloc_response_msg
 {
     required Base_info                  base_info=1;            //消息类型
-    required string                     command_key=2;                   //指令唯一标识符id
+    required string                     command_key=2;           //指令唯一标识符id
     required Error_manager              error_manager=3;        //分配成功与否标志
-    required Parkspace_info             confirm_alloc_space_info=4;    //已修改后的车位信息
+    repeated Parkspace_info             confirm_parkspace_info_ex = 4;    //已修改后的车位信息
+    optional Car_type                   car_type = 5;//汽车类型
+
 }
 
 // 车位心跳状态信息
 message Parkspace_allocation_status_msg
 {
-    required Base_info                  base_info=1;            //消息类型
-    required Error_manager              error_manager=2;
-    repeated Parkspace_info             parkspace_info=3;       //车位状态
+    required Base_info                      base_info=1;            //消息类型
+    required Error_manager                  error_manager=2;
+    required Database_controller_status     database_controller_status=3;           //数据库的状态
+    required Parkspace_manager_satus        parkspace_manager_satus=4;              //车位管理状态
+    required int32                          small_parkspace_remaining_number=5;    //小型车位剩余数量
+    required int32                          medium_parkspace_remaining_number=6;   //中型车位剩余数量
+    required int32                          large_parkspace_remaining_number=7;    //大型车位剩余数量
+    required int32                          total_parkspace_remaining_number=8;    //所有车位剩余数量
 }
 
 //更新车位数据请求
@@ -87,6 +148,6 @@ message Parkspace_refresh_request_msg
 message Parkspace_allocation_data_msg
 {
     required Base_info                  base_info=1;            //消息类型
-    repeated Parkspace_info             parkspace_info=2;
-}
-
+    required Error_manager              error_manager=2;
+    repeated Parkspace_info             parkspace_info_ex=3;
+}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 484 - 693
message/process_message.pb.cc


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 490 - 920
message/process_message.pb.h


+ 10 - 10
message/process_message.proto

@@ -12,7 +12,7 @@ message Alloc_space_step_statu
 message Back_alloc_space_step_statu
 {
     optional Step_statu                 step_statu=1 [default=eWaiting];       //状态
-    optional Parkspace_info             space_info=2;       //当前状态附带信息
+    repeated Parkspace_info             allocated_parkspace_info_ex=2;       //当前状态附带信息
     optional string                     description=3;      //状态说明/错误说明
 }
 
@@ -20,7 +20,7 @@ message Back_alloc_space_step_statu
 message Search_space_step_statu
 {
     optional Step_statu                 step_statu=1 [default=eWaiting];       //状态
-    optional Parkspace_info             space_info=2;       //当前状态附带信息
+    repeated Parkspace_info             search_parkspace_info_ex=2;       //当前状态附带信息
     optional string                     description=3;      //状态说明/错误说明
 }
 message Back_search_space_step_statu
@@ -34,13 +34,13 @@ message Back_search_space_step_statu
 message Confirm_space_step_statu
 {
     optional Step_statu                 step_statu=1 [default=eWaiting];       //状态
-    optional Parkspace_info             space_info=2;       //当前状态附带信息
+    repeated Parkspace_info             confirm_parkspace_info_ex=2;       //当前状态附带信息
     optional string                     description=3;      //状态说明/错误说明
 }
 message Back_confirm_space_step_statu
 {
     optional Step_statu                 step_statu=1 [default=eWaiting];       //状态
-    optional Parkspace_info             space_info=2;       //当前状态附带信息
+    repeated Parkspace_info             confirm_parkspace_info_ex=2;       //当前状态附带信息
     optional string                     description=3;      //状态说明/错误说明
 }
 
@@ -48,13 +48,13 @@ message Back_confirm_space_step_statu
 message Release_space_step_statu
 {
     optional Step_statu                 step_statu=1 [default=eWaiting];       //状态
-    optional Parkspace_info             space_info=2;       //当前状态附带信息
+    repeated Parkspace_info             release_parkspace_info_ex=2;       //当前状态附带信息
     optional string                     description=3;      //状态说明/错误说明
 }
 message Back_release_space_step_statu
 {
     optional Step_statu                 step_statu=1 [default=eWaiting];       //状态
-    optional Parkspace_info             space_info=2;       //当前状态附带信息
+    repeated Parkspace_info             release_parkspace_info_ex=2;       //当前状态附带信息
     optional string                     description=3;      //状态说明/错误说明
 }
 
@@ -92,14 +92,14 @@ message Dispatch_store_step_statu
 {
     optional Step_statu                 step_statu=1 [default=eWaiting];       //状态
     optional Locate_information         locate_info=2;      //定位结果
-    optional Parkspace_info             space_info=3;       //目标车位
+    repeated Parkspace_info             allocated_parkspace_info_ex=3;//目标车位
     optional string                     description=4;      //状态说明/错误说明
 }
 message Back_dispatch_store_step_statu
 {
     optional Step_statu                 step_statu=1 [default=eWaiting];       //状态
     optional Locate_information         locate_info=2;      //定位结果
-    optional Parkspace_info             space_info=3;       //目标车位
+    repeated Parkspace_info             allocated_parkspace_info_ex=3;//目标车位
     optional string                     description=4;      //状态说明/错误说明
 }
 
@@ -107,13 +107,13 @@ message Back_dispatch_store_step_statu
 message Dispatch_pick_step_statu
 {
     optional Step_statu                 step_statu=1 [default=eWaiting];       //状态
-    optional Parkspace_info             space_info=2;       //目标车位
+    repeated Parkspace_info             search_parkspace_info_ex=2;//目标车位
     optional string                     description=3;      //状态说明/错误说明
 }
 message Back_dispatch_pick_step_statu
 {
     optional Step_statu                 step_statu=1 [default=eWaiting];       //状态
-    optional Parkspace_info             space_info=2;       //目标车位
+    repeated Parkspace_info             search_parkspace_info_ex=2;       //目标车位
     optional string                     description=3;      //状态说明/错误说明
 }
 

+ 19 - 20
system/PickupProcessTask.cpp

@@ -206,19 +206,19 @@ void PickupProcessTask::Main()
             usleep(1000*500);
             code!=SUCCESS?updata_step_statu(message::eError):updata_step_statu(message::eFinished);
             LOG_IF(ERROR, code != SUCCESS) << "-------  取  -------取车调度失败,取车终端:"<<m_terminor_id
-                                           <<", 车位id:"<<m_search_response_msg.car_position().parkspace_id()
-                                           <<", 车位楼层:"<<m_search_response_msg.car_position().floor()
-                                           <<", 车位序号:"<<m_search_response_msg.car_position().index()
+                                           <<", 车位id:"<<m_search_response_msg.query_parkspace_info_ex(0).parkingspace_room_id()
+                                           <<", 车位楼层:"<<m_search_response_msg.query_parkspace_info_ex(0).parkingspace_floor_id()
+                                           <<", 车位序号:"<<m_search_response_msg.query_parkspace_info_ex(0).parkingspace_index_id()
                                            <<", 车牌号:"<<m_car_info.license()
-                                           <<", 库内车牌号:"<<m_search_response_msg.car_position().car_info().license()
+                                           <<", 库内车牌号:"<<m_search_response_msg.query_parkspace_info_ex(0).car_info().license()
                                            <<code.get_error_description();
             ALOG_IF(ERROR, code != SUCCESS) << "-------  取  -------取车调度失败,取车终端:"<<m_terminor_id
-                                           <<", 车位id:"<<m_search_response_msg.car_position().parkspace_id()
-                                           <<", 车位楼层:"<<m_search_response_msg.car_position().floor()
-                                           <<", 车位序号:"<<m_search_response_msg.car_position().index()
-                                           <<", 车牌号:"<<m_car_info.license()
-                                           <<", 库内车牌号:"<<m_search_response_msg.car_position().car_info().license()
-                                           <<code.get_error_description();
+                    <<", 车位id:"<<m_search_response_msg.query_parkspace_info_ex(0).parkingspace_room_id()
+                    <<", 车位楼层:"<<m_search_response_msg.query_parkspace_info_ex(0).parkingspace_floor_id()
+                    <<", 车位序号:"<<m_search_response_msg.query_parkspace_info_ex(0).parkingspace_index_id()
+                    <<", 车牌号:"<<m_car_info.license()
+                    <<", 库内车牌号:"<<m_search_response_msg.query_parkspace_info_ex(0).car_info().license()
+                    <<code.get_error_description();
         }
         if(m_current_step_type== message::eWait_step)
         {
@@ -346,7 +346,7 @@ Error_manager PickupProcessTask::dispatch_step()
     /*
   * 检查是否曾经分配过车位
   */
-    if(m_search_response_msg.has_car_position()==false)
+    if(m_search_response_msg.query_parkspace_info_ex_size()==0)
     {
         return Error_manager(FAILED,MINOR_ERROR," 取车流程释放车位请求缺少车位信息");
     }
@@ -359,13 +359,13 @@ Error_manager PickupProcessTask::dispatch_step()
     message::Base_info base_info;
     base_info.set_msg_type(message::eDispatch_request_msg);
     base_info.set_sender(message::eMain);
-    base_info.set_receiver(message::eDispatch);
+    base_info.set_receiver(message::eDispatch_manager);
     base_info.set_timeout_ms(1000*300); //测量超时300s
     m_dispatch_request_msg.mutable_base_info()->CopyFrom(base_info);
 
-    message::Parkspace_info space_info=m_search_response_msg.car_position();
+
     m_dispatch_request_msg.set_dispatch_motion_direction(message::E_PICKUP_CAR);
-    m_dispatch_request_msg.set_parkspace_id(space_info.parkspace_id());
+    m_dispatch_request_msg.mutable_parkspace_info_ex()->CopyFrom(m_search_response_msg.query_parkspace_info_ex());
     m_dispatch_request_msg.set_terminal_id(m_terminor_id);
 
     code=Dispatch_excutor::get_instance_pointer()->dispatch_request(m_dispatch_request_msg,m_dispatch_response_msg,m_cancel_condition);
@@ -432,7 +432,7 @@ Error_manager PickupProcessTask::release_space_step()
     /*
    * 检查是否曾经分配过车位
    */
-    if(m_search_response_msg.has_car_position()==false)
+    if(m_search_response_msg.query_parkspace_info_ex_size()==0)
     {
         return Error_manager(FAILED,MINOR_ERROR," 取车流程释放车位请求缺少车位信息");
     }
@@ -450,8 +450,7 @@ Error_manager PickupProcessTask::release_space_step()
     base_info.set_timeout_ms(5000); //测量超时1s
     m_release_request_msg.mutable_base_info()->CopyFrom(base_info);
 
-    message::Parkspace_info space_info=m_search_response_msg.car_position();
-    m_release_request_msg.mutable_release_space_info()->CopyFrom(space_info);
+    m_release_request_msg.mutable_release_parkspace_info_ex()->CopyFrom(m_search_response_msg.query_parkspace_info_ex());
 
     code=Parkspace_excutor::get_instance_pointer()->release_request(m_release_request_msg,m_release_response_msg,m_cancel_condition);
     message::Node_log node_log;
@@ -497,7 +496,7 @@ void PickupProcessTask::updata_step_statu(message::Step_statu statu)
         case message::eDispatch_step: {
             message::Dispatch_pick_step_statu dispatch_step_statu;
             dispatch_step_statu.set_step_statu(statu);
-            dispatch_step_statu.mutable_space_info()->CopyFrom(m_search_response_msg.car_position());
+            dispatch_step_statu.mutable_search_parkspace_info_ex()->CopyFrom(m_search_response_msg.query_parkspace_info_ex());
             m_process_msg.mutable_dispatch_step()->CopyFrom(dispatch_step_statu);
             break;
         }
@@ -512,7 +511,7 @@ void PickupProcessTask::updata_step_statu(message::Step_statu statu)
         case  message::eRelease_step: {
             message::Release_space_step_statu           release_step_statu;
             release_step_statu.set_step_statu(statu);
-            release_step_statu.mutable_space_info()->CopyFrom(m_search_response_msg.car_position());
+            release_step_statu.mutable_release_parkspace_info_ex()->CopyFrom(m_search_response_msg.query_parkspace_info_ex());
             m_process_msg.mutable_release_space_step()->CopyFrom(release_step_statu);
             break;
         }
@@ -530,7 +529,7 @@ void PickupProcessTask::updata_step_statu(message::Step_statu statu)
         case  message::eBackDispatch_step: {
             message::Back_dispatch_pick_step_statu   back_dispatch_step_statu;
             back_dispatch_step_statu.set_step_statu(statu);
-            back_dispatch_step_statu.mutable_space_info()->CopyFrom(m_search_response_msg.car_position());
+            back_dispatch_step_statu.mutable_search_parkspace_info_ex()->CopyFrom(m_search_response_msg.query_parkspace_info_ex());
             m_process_msg.mutable_back_dispatch_step()->CopyFrom(back_dispatch_step_statu);
             break;
         }

+ 29 - 24
system/StoreProcessTask.cpp

@@ -131,7 +131,7 @@ Error_manager StoreProcessTask::dispatch_step()
     if(m_measure_response_msg.has_base_info()== false
         ||m_measure_response_msg.has_locate_information()==false
         ||m_parcspace_alloc_response_msg.has_base_info()== false
-        ||m_parcspace_alloc_response_msg.has_allocated_space_info()==false)
+        ||m_parcspace_alloc_response_msg.allocated_parkspace_info_ex_size()==0)
     {
         return Error_manager(ERROR,MAJOR_ERROR,"调度所需的前置数据(测量,车位)不存在");
     }
@@ -144,13 +144,13 @@ Error_manager StoreProcessTask::dispatch_step()
     message::Base_info base_info;
     base_info.set_msg_type(message::eDispatch_request_msg);
     base_info.set_sender(message::eMain);
-    base_info.set_receiver(message::eDispatch);
+    base_info.set_receiver(message::eDispatch_manager);
     base_info.set_timeout_ms(1000*15); //超时15s
     m_dispatch_request_msg.mutable_base_info()->CopyFrom(base_info);
 
     m_dispatch_request_msg.set_terminal_id(m_terminor_id);
     m_dispatch_request_msg.set_dispatch_motion_direction(message::E_STORE_CAR);
-    m_dispatch_request_msg.set_parkspace_id(m_parcspace_alloc_response_msg.allocated_space_info().parkspace_id());
+    m_dispatch_response_msg.mutable_parkspace_info_ex()->CopyFrom(m_parcspace_alloc_response_msg.allocated_parkspace_info_ex());
 
     code=Dispatch_excutor::get_instance_pointer()->dispatch_request(m_dispatch_request_msg,
             m_dispatch_response_msg,m_cancel_condition);
@@ -259,11 +259,19 @@ Error_manager StoreProcessTask::alloc_space_step()
 
     if(m_parcspace_alloc_response_msg.error_manager().error_code()==0)
     {
-        message::Car_info alloc_car_info=m_parcspace_alloc_response_msg.allocated_space_info().car_info();
-        if(alloc_car_info.license()!=m_car_info.license())
+        if(m_parcspace_alloc_response_msg.allocated_parkspace_info_ex_size()==0)
         {
-            return Error_manager(ERROR,MINOR_ERROR,"分配车位反馈的车辆信息不匹配");
+            return Error_manager(ERROR,MINOR_ERROR,"分配车位0");
         }
+        for(int i=0;i<m_parcspace_alloc_response_msg.allocated_parkspace_info_ex_size();++i)
+        {
+            message::Car_info alloc_car_info=m_parcspace_alloc_response_msg.allocated_parkspace_info_ex(i).car_info();
+            if(alloc_car_info.license()!=m_car_info.license())
+            {
+                return Error_manager(ERROR,MINOR_ERROR,"分配车位反馈的车辆信息不匹配");
+            }
+        }
+
         return SUCCESS;
     }
     else
@@ -295,8 +303,8 @@ Error_manager StoreProcessTask::confirm_space_step()
     base_info.set_timeout_ms(5000); //测量超时1s
     request.mutable_base_info()->CopyFrom(base_info);
 
-    message::Parkspace_info space_info=m_parcspace_alloc_response_msg.allocated_space_info();
-    request.mutable_confirm_space_info()->CopyFrom(space_info);
+
+    request.mutable_confirm_parkspace_info_ex()->CopyFrom(m_dispatch_response_msg.parkspace_info_ex());
     request.set_command_key(create_key());
 
     message::Parkspace_confirm_alloc_response_msg confirm_response;
@@ -310,11 +318,11 @@ Error_manager StoreProcessTask::confirm_space_step()
     if(code!=SUCCESS)
         return code;
 
-    if(m_parcspace_alloc_response_msg.allocated_space_info().parkspace_id()!=
+    /*if(m_parcspace_alloc_response_msg.allocated_space_info().parkspace_id()!=
             confirm_response.confirm_alloc_space_info().parkspace_id())
     {
         return Error_manager(ERROR,MINOR_ERROR,"占用车位与分配车位不一致");
-    }
+    }*/
 
     if(confirm_response.error_manager().error_code()==0) {
         /*LOG(INFO)<<"停车流程正常,确认占用车位成功,停车终端:"<<m_terminor_id
@@ -341,7 +349,7 @@ Error_manager StoreProcessTask::back_alloc_space_step()
     /*
     * 检查是否曾经分配过车位
     */
-    if(m_parcspace_alloc_response_msg.has_allocated_space_info()==false)
+    if(m_parcspace_alloc_response_msg.allocated_parkspace_info_ex_size()==0)
     {
         return Error_manager(FAILED,MAJOR_ERROR," parkspace release request without space info");
     }
@@ -361,8 +369,7 @@ Error_manager StoreProcessTask::back_alloc_space_step()
     base_info.set_timeout_ms(5000); //测量超时1s
     request.mutable_base_info()->CopyFrom(base_info);
 
-    message::Parkspace_info space_info=m_parcspace_alloc_response_msg.allocated_space_info();
-    request.mutable_release_space_info()->CopyFrom(space_info);
+    request.mutable_release_parkspace_info_ex()->CopyFrom(m_parcspace_alloc_response_msg.allocated_parkspace_info_ex());
 
     message::Parkspace_release_response_msg release_response;
     code=Parkspace_excutor::get_instance_pointer()->release_request(request,release_response,m_cancel_condition);
@@ -509,13 +516,11 @@ void StoreProcessTask::Main()
             updata_step_statu(message::eWorking);
             code = confirm_space_step();
             usleep(1000 * 200);
-            ALOG_IF(WARNING, code != SUCCESS) << "------  停  ------- 占据车位失败,终端号:" << m_terminor_id << "停车流程:" << code.get_error_description() <<
-                                           " 车位id :"
-                                           << m_parcspace_alloc_response_msg.allocated_space_info().parkspace_id()
-                                           << ",车牌:" << m_car_info.license()<<code.to_string();
-            LOG_IF(WARNING, code != SUCCESS) << "------  停  ------- 占据车位失败,终端号:" << m_terminor_id << "停车流程:" << code.get_error_description() <<
-                                              " 车位id :"
-                                              << m_parcspace_alloc_response_msg.allocated_space_info().parkspace_id()
+            ALOG_IF(WARNING, code != SUCCESS) << "------  停  ------- 占据车位失败,终端号:" << m_terminor_id
+                                                << "停车流程:"<<code.get_error_description() <<",车牌:" << m_car_info.license()<<code.to_string();
+
+            LOG_IF(WARNING, code != SUCCESS) << "------  停  ------- 占据车位失败,终端号:" << m_terminor_id
+                                                << "停车流程:" << code.get_error_description()
                                               << ",车牌:" << m_car_info.license()<<code.to_string();
         }
         //完成,退出循环
@@ -684,14 +689,14 @@ void StoreProcessTask::updata_step_statu(message::Step_statu statu)
             message::Dispatch_store_step_statu          dispatch_step_statu;
             dispatch_step_statu.set_step_statu(statu);
             dispatch_step_statu.mutable_locate_info()->CopyFrom(m_locate_info);
-            dispatch_step_statu.mutable_space_info()->CopyFrom(m_parcspace_alloc_response_msg.allocated_space_info());
+            dispatch_step_statu.mutable_allocated_parkspace_info_ex()->CopyFrom(m_dispatch_response_msg.parkspace_info_ex());
             m_process_msg.mutable_dispatch_step()->CopyFrom(dispatch_step_statu);
             break;
         }
         case  message::eConfirm_step: {
             message::Confirm_space_step_statu           confirm_step_type;
             confirm_step_type.set_step_statu(statu);
-            confirm_step_type.mutable_space_info()->CopyFrom(m_parcspace_alloc_response_msg.allocated_space_info());
+            confirm_step_type.mutable_confirm_parkspace_info_ex()->CopyFrom(m_dispatch_response_msg.parkspace_info_ex());
             m_process_msg.mutable_confirm_space_step()->CopyFrom(confirm_step_type);
             break;
         }
@@ -708,7 +713,7 @@ void StoreProcessTask::updata_step_statu(message::Step_statu statu)
         case  message::eBackDispatch_step: {
             message::Back_dispatch_store_step_statu   back_dispatch_step_statu;
             back_dispatch_step_statu.set_step_statu(statu);
-            back_dispatch_step_statu.mutable_space_info()->CopyFrom(m_parcspace_alloc_response_msg.allocated_space_info());
+            back_dispatch_step_statu.mutable_allocated_parkspace_info_ex()->CopyFrom(m_dispatch_response_msg.parkspace_info_ex());
             back_dispatch_step_statu.mutable_locate_info()->CopyFrom(m_compare_location_data);
             m_process_msg.mutable_back_dispatch_step()->CopyFrom(back_dispatch_step_statu);
             break;
@@ -731,7 +736,7 @@ void StoreProcessTask::updata_step_statu(message::Step_statu statu)
         case  message::eBackAlloc_step: {
             message::Back_alloc_space_step_statu    back_alloc_step_statu;
             back_alloc_step_statu.set_step_statu(statu);
-            back_alloc_step_statu.mutable_space_info()->CopyFrom(m_parcspace_alloc_response_msg.allocated_space_info());
+            back_alloc_step_statu.mutable_allocated_parkspace_info_ex()->CopyFrom(m_parcspace_alloc_response_msg.allocated_parkspace_info_ex());
             m_process_msg.mutable_back_alloc_space_step()->CopyFrom(back_alloc_step_statu);
             break;
         }