syntax = "proto3";

option go_package = "../protogo";

package satllite.protobuf.agi;

// 后端请求：六要素计算双根数
message CalcTleReq {
    int32 noradID = 1;            //卫星编号
    string noradName = 2;        //卫星名称
    int32 year = 3;            //星历时间(年)
    int32 month = 4;            //星历时间(月)
    int32 day = 5;            //星历时间(日)
    int32 hour = 6;            //星历时间(时)
    int32 minute = 7;            //星历时间(分)
    int32 second = 8;            //星历时间(秒)
    float a = 9;                //轨道半轴长
    float ee = 10;                //偏心率
    float I = 11;                //轨道倾角
    float raan = 12;            //升交点赤经
    float arc = 13;            //近地点幅角
    float m = 14;                //平近点角
}
//AGI返回：六要素计算双根数
message CalcTleRet {
    string line0 = 1;            //标准双根数第0行
    string line1 = 2;            //标准双根数第1行
    string line2 = 3;            //标准双根数第2行
}
//后端请求：任务预报计算
message CalcReportReq {
    string startDateTime = 1;        //开始时间UTC
    string endDateTime = 2;        //结束时间UTC
    double latitude = 3;            //站点纬度
    double longitude = 4;        //站点经度
    double altitude = 5;            //站点海拔
    double slice = 6;            //点位间隔
    double minAzi = 7;            //最小方位角
    double maxAzi = 8;            //最大方位角
    double minEle = 9;            //最低仰角
    double maxEle = 10;        //最高仰角
    double minDist = 11;        //最小距离
    double maxDist = 12;        //最大距离
    double pointSlice = 13;        //星下点计算间隔
    int32 pointCollect = 14;        //星下点采集间隔
    string line0 = 15;            //标准TLE第0行
    string line1 = 16;            //标准TLE第1行
    string line2 = 17;            //标准TLE第2行
}
//AGI返回：任务预报report
message CalcReportRet {
    repeated Xxd xxds = 1;        //星下点
    repeated Task tasks = 2;        //任务预报信息
    string norad = 3;            //卫星编号
}
//星下点
message Xxd {
    string dt = 1;                //时间
    double lon = 2;            //经度
    double lat = 3;            //纬度
    double height = 4;            //高度
}
//单圈次任务预报
message Task {
    string start = 1;            //开始时间
    string end = 2;            //结束时间
    double startAzi = 3;            //开始方位角
    double endAzi = 4;            //结束方位角
    double startEle = 5;            //开始俯仰角
    double maxEle = 6;            //最大俯仰角
    double minDist = 7;        //最短距离
    double maxDist = 8;        //最大距离
    repeated Obs obss = 9;        //方位角俯仰角信息
}
//dat文件俯仰角方位角
message Obs {
    string dt = 1;                //时间
    double azi = 2;            //方位角
    double ele = 3;            //俯仰角
    double range = 4;            //距离
}