
syntax = "proto2";
package Dispatch_proto;

message Catcher_parameter
{
    required int32                  id = 1;
    required int32                  key = 2;
}

message Carrier_parameter
{
    required int32                  id = 1;
    required int32                  key = 2;
}

message Passageway_parameter
{
    required int32                  id = 1;
    required int32                  key = 2;
}



message Dispatch_device_parameter_all
{
    required int32                  catcher_size=1;
    repeated Catcher_parameter      catcher_parameters=2;
    required int32                  carrier_size=3;
    repeated Carrier_parameter      carrier_parameters=4;
    required int32                  passageway_size=5;
    repeated Passageway_parameter   passageway_parameters=6;

}








/*
        Packspace_coordinates   id 的表示含义

        1~165           2楼~12楼的停车位

        1100            0号出口(在一楼)(目前没有)
        1101~1106       1~6号出入口 (在一楼)
        1107            7号出口(在一楼)
        1201~1206       1~6号出入口上方2楼处
        1301~1306       1~6号出入口上方3楼处
        1401~1406       1~6号出入口上方4楼处

        2101~2112       左侧电梯井(1楼~12楼)(一号搬运器的待机点)
        2201~2212       右侧电梯井(1楼~12楼)(二号搬运器的待机点)

(由于工程问题, 每一个车位的x值略有不同, 不是等比数列)
*/

//楼上车位的坐标 1~165
message Packspace_coordinates_parameter
{
    optional int32                  id = 1[default = 0];
    optional int32                  x = 2[default = 0];
    optional int32                  y = 3[default = 0];
    optional int32                  z = 4[default = 0];
}
//一楼出入口的坐标 1100~1107
message Passageway_coordinates_parameter
{
    optional int32                  id = 1[default = 0];
    optional int32                  x = 2[default = 0];
    optional int32                  y = 3[default = 0];
    optional int32                  z = 4[default = 0];
}

//搬运器在2~4楼交界处 的坐标 1201~1206 1301~1306 1401~1406
//搬运器在电梯井的坐标 2101~2112 2201~2212
//机器手在一楼出入口的坐标 1100 和 1107
message Carrier_coordinates_parameter
{
    optional int32                  id = 1[default = 0];
    optional int32                  x = 2[default = 0];
    optional int32                  y = 3[default = 0];
    optional int32                  z = 4[default = 0];
}

//机器手在2~4楼交界处 的坐标 1201~1206 1301~1306 1401~1406
//机器手在一楼出入口的坐标 1101~1106
message Catcher_coordinates_parameter
{
    optional int32                  id = 1[default = 0];
    optional int32                  x = 2[default = 0];
    optional int32                  y = 3[default = 0];
    optional int32                  z = 4[default = 0];
}
//注意了, 搬运器和机器手在同层的z轴坐标是不同的, 机器手比搬运器高一点.
//x轴和y必须相同,
//搬运器和机器手交接时 使用汽车前轮对齐, 搬运器的Y1固定不同, 所以其他的3个夹杆需要根须轴距来计算.


//搬运器 限定范围
message Carrier_box_parameter
{
    optional int32                  x_min = 1[default = -1000000];
    optional int32                  x_max = 2[default = 1000000];
    optional int32                  y_min = 3[default = -1000000];
    optional int32                  y_max = 4[default = 1000000];
    optional int32                  z_min = 5[default = -1000000];
    optional int32                  z_max = 6[default = 1000000];
}


//机器手 限定范围
message Catcher_box_parameter
{
    optional int32                  x_min = 1[default = -1000000];
    optional int32                  x_max = 2[default = 1000000];
    optional int32                  y_min = 3[default = -1000000];
    optional int32                  y_max = 4[default = 1000000];
    optional int32                  z_min = 5[default = -1000000];
    optional int32                  z_max = 6[default = 1000000];
}

message Axis_range_parameter
{
    optional int32                  min = 1[default = -1000000];
    optional int32                  max = 2[default = 1000000];
}

//出入口的功能模式
enum Passageway_functioning_pattern
{
    PASSAGEWAY_FUNCTIONING_PATTERN_UNKNOWN          = 0;    //未知
    PASSAGEWAY_FUNCTIONING_PATTERN_INLET            = 1;    //单向入口
    PASSAGEWAY_FUNCTIONING_PATTERN_OUTLET           = 2;    //单向出口
    PASSAGEWAY_FUNCTIONING_PATTERN_BIDIRECTION      = 3;    //双向口
}

message Parkspace_number
{
    required int32                  rows = 1;
    required int32                  columns = 2;
    required int32                  total = 3;
    required int32                  liftway_width = 4;
}

message Dispatch_coordinates_parameter_all
{
    repeated Packspace_coordinates_parameter            packspace_coordinates_parameters = 1;
    repeated Passageway_coordinates_parameter           passageway_coordinates_parameters = 2;
    repeated Carrier_coordinates_parameter              carrier_coordinates_parameters = 3;
    repeated Catcher_coordinates_parameter              catcher_coordinates_parameters = 4;


    optional Carrier_box_parameter                      carrier_box_parameters = 5;

    optional Catcher_box_parameter                      catcher_box_parameters = 6;
    optional int32                                      catcher_b_min = 7;
    optional int32                                      catcher_b_max = 8;
    optional int32                                      catcher_d1_min = 9;
    optional int32                                      catcher_d1_max = 10;
    optional int32                                      catcher_d2_min = 11;
    optional int32                                      catcher_d2_max = 12;


    optional int32                                      default_wheelbase = 13;

    optional int32                                      catcher_1th_floor_z = 14;
    optional int32                                      catcher_2th_floor_z = 15;
    optional int32                                      catcher_3th_floor_z = 16;
    optional int32                                      catcher_4th_floor_z = 17;

    optional int32                                      carrier_1th_floor_z = 18;
    optional int32                                      carrier_2th_floor_z = 19;
    optional int32                                      carrier_3th_floor_z = 20;
    optional int32                                      carrier_4th_floor_z = 21;

    optional int32                                      catcher_d1_d2_distance = 22;
    optional int32                                      catcher_wheel_base_limit = 23;

    optional int32                                      carrier_y_y1_distance = 24;
    optional int32                                      carrier_default_y1_back = 25;
    optional int32                                      carrier_default_y1_leave = 26;
    optional int32                                      carrier_default_y_back = 27;
    optional int32                                      carrier_default_y_leave = 28;

    optional int32                                      carrier_default_x_left = 29;
    optional int32                                      carrier_default_x_right = 30;

    optional int32                                      passageway_terminal_id_min = 31;
    optional int32                                      passageway_terminal_id_max = 32;
    optional int32                                      passageway_terminal_number = 33;
    repeated Passageway_functioning_pattern             passageway_functioning_patterns = 34;

    optional int32                                      parkspace_id_min = 35;
    optional int32                                      parkspace_id_max = 36;
    optional int32                                      parkspace_id_total = 37;

    optional int32                                      third_floor_parkspace_id_min = 38;
    optional int32                                      third_floor_parkspace_id_max = 39;
    optional int32                                      third_floor_parkspace_id_total = 40;

    optional int32                                      car_wheel_base_min = 41;
    optional int32                                      car_wheel_base_max = 42;

    required Parkspace_number                           parkspace_number=43;

    optional int32                                      m_separated_distance_z=44;
    optional int32                                      m_separated_distance_x=45;


}