syntax = "proto3";
package JetStream;
message RequestCmd
{
  int32 Id=1;  // 对于获取对应id的相机数据。1,2,3,4,其他表示所有
  //对于打开视频流
}
message Response{
  string info=2;
}
message Image{
  int32 width=1;
  int32 height=2;
  int32 channel=3;
  bool encode = 4;
  bytes data= 5;
}
message PointCloud{
  int32 size=1;
  bytes data=2;
}
message LabelImage{
  int32 label=1;
  Image ir=2;
}
message Line{
  int32 begin=1;
  int32 end=2;
}
message SegBox{
  float confidence = 1;
  repeated Line lines= 2;
}
message LabelYolo{
  int32 label=1;
  repeated SegBox boxes=2;
}
message ResImage{
  Image img1=1;
  Image img2=2;
  Image img3=3;
  Image img4=4;
}
message ResCloud{
  PointCloud cloud1=1;
  PointCloud cloud2=2;
  PointCloud cloud3=3;
  PointCloud cloud4=4;
}
message MeasureInfo {
  optional float x=1;
  optional float y=2;
  optional float trans_x=3;
  optional float trans_y=4;
  optional float theta=5;
  optional float width=6;
  optional float wheelbase=7;
  optional float ftheta=8;
  // 超界说明，此参数没有表示正常。
  // 1:超宽，2：轴距超长，
  // 3：前超界，4：后超界，5：左，6：右，7：左倾角过大，8：右倾角过大，9：前轮角过大
  optional int32 border_plc=9;
  optional int32 border_display=10;
  optional string error=11;
}
message ResFrame{
  ResImage images=1;
  ResCloud clouds=2;
  MeasureInfo measure_info=3;
}
service StreamServer{
  rpc OpenImageStream(RequestCmd) returns(stream ResImage){}
  rpc OpenMeasureDataStream(RequestCmd) returns(stream MeasureInfo){}
  rpc CloseImageStream(RequestCmd) returns(Response){}
  rpc CloseMeasureDataStream(RequestCmd) returns(Response){}
  rpc GetCloud(RequestCmd) returns(ResCloud){}
  rpc GetImage(RequestCmd) returns(ResImage){}
}
message Boundary{
  float radius=1; //转台半径
  float left=2;
  float right=3;
  float buttom=4;
  float minAngle=5;
  float maxAngle=6;
  float fwheelAngle=7;
}
message Limit{
  Boundary plc_limit=1;
  Boundary display_limit=2;
  float maxWidth=3;
  float maxWheelBase=4;
}