package com.multictrl.modules.business.q20.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * Q20批量参数设置（set_params）
 * 所有字段均可选，null字段不发送给设备
 *
 * @author 938693313@qq.com
 * @since 1.0.0 2026/5/20
 */
@Data
@Schema(name = "Q20批量参数")
public class Q20ParamsDTO {

    @Schema(description = "低电阈值（比例，如0.3=30%）")
    private Float batteryLowThreshold;

    @Schema(description = "严重低电阈值（比例）")
    private Float batteryCriticalThreshold;

    @Schema(description = "紧急低电阈值（比例）")
    private Float batteryEmergencyThreshold;

    @Schema(description = "低电动作: warning(警告) / landing(降落) / goBackCritAndLandEmerg(低电返航·紧急降落)")
    private String lowBatteryAction;

    @Schema(description = "高度限制(m)，0=无限制")
    private Float heightLimit;

    @Schema(description = "距离限制(m)，0=无限制")
    private Float distanceLimit;

    @Schema(description = "围栏动作: goContinue/warning/hover/goBack/terminate/landing")
    private String geofenceAction;

    @Schema(description = "返航高度(m)，相对home点高度")
    private Float returnHeight;

    @Schema(description = "返航速度(m/s)")
    private Float returnSpeed;

    @Schema(description = "返航类型: directReturn(直接返航) / originalReturn(原路返航)")
    private String returnType;

    @Schema(description = "避障开关: 0=关闭 1=开启")
    private Integer obstacleAvoidanceEnable;

    @Schema(description = "避障距离(m)")
    private Float obstacleAvoidanceDistance;

    @Schema(description = "视觉传感器开关: 0=关闭 1=开启")
    private Integer visualSensorEnable;

    @Schema(description = "精准降落二维码标识")
    private Integer aprilTagId;

    @Schema(description = "精准降落模式: noPrecisionLanding / opportunisticPrecisionLanding / requiredPrecisionLanding")
    private String precisionLandMode;

    @Schema(description = "数据链路丢失动作: goContinue/hover/goBack/landing/terminate/disarm")
    private String dataLinkLossAction;

    @Schema(description = "RC信号丢失动作: goContinue/hover/goBack/landing/terminate/disarm")
    private String rcLossAction;

    @Schema(description = "降落伞安全开关: 0=关闭 1=开启")
    private Integer parachuteSafetyEnable;
}
