package com.example.math.entity.dto;

import com.example.math.entity.dto.BreakPoint;
import com.example.math.entity.dto.ExecutableConditions;
import com.example.math.entity.dto.FileDto;
import com.example.math.entity.dto.ReadyConditions;
import com.example.math.entity.dto.SimulateMission;
import lombok.Data;

/**
 * 下发任务对象
 */
@Data
public class FlightTask {

    /**
     * 航线文件对象
     */
    private FileDto file;

    /**
     * 任务就绪条件
     */
    private ReadyConditions ready_conditions;

    /**
     * 任务执行条件
     */
    private ExecutableConditions executable_conditions;


    /**
     * 航线断点信息
     */
    private BreakPoint break_point;

    /**
     * 是否在模拟器中执行任务
     */
    private SimulateMission simulate_mission;

    /**
     * 计划 ID
     */
    private String flight_id;

    /**
     * 开始执行时间
     * 任务开始执行时间毫秒时间戳。可选字段。当 task_type 为 0 或 1 时必填，为 2 时非必填。
     */
    private long execute_time;

    /**
     * 任务类型
     * {"0":"立即任务","1":"定时任务","2":"条件任务"}
     * 立即任务和定时任务均由 execute_time 指定执行时间。条件任务支持 ready_conditions 字段指定任务就绪条件。任务可在指定时间段内满足一定条件后即可执行。立即任务媒体上传优先级最高，定时任务和条件任务媒体上传优先级相同。
     */
    private int task_type;

    /** 返航高度 **/
    private int rth_altitude;

    /** 返航高度模式
     * {"0":"智能高度","1":"设定高度"}
     * **/
    private int rth_mode;

    /** 遥控器失控动作 {"0":"返航","1":"悬停","2":"降落"} **/
    private int out_of_control_action;

    /** 航线失控动作 {"0":"继续执行航线任务","1":"退出航线任务，执行遥控器失控动作"} **/
    private int exit_wayline_when_rc_lost;

    /** 航线精度类型 {"0":"GPS 任务","1":"高精度 RTK 任务"} **/
    private int wayline_precision_type;

}
