package com.multictrl.modules.business.service;

import cn.hutool.json.JSONObject;
import com.multictrl.modules.business.dto.LatLonDTO;

/**
 * 大疆基础服务
 *
 * @author Sdy
 * @since 1.0.0 2026/4/24
 */
public interface DJIBaseService {

    //获取payload
    JSONObject getPayload(String method, JSONObject data);

    //发送命令并等待
    JSONObject sendWaitReply(String topic, JSONObject payload);

    //发送命令并等待判断结果
    String sendWaitReplyJudgeResult(String topic, JSONObject payload);

    //执行命令并返回结果
    String executeAndReturnResult(String dockSn, String method);

    //执行命令并返回结果
    String executeAndReturnResult(String dockSn, String method, JSONObject data);

    //执行命令
    String executeOnly(String dockSn, String method);

    //执行命令
    String executeOnly(String dockSn, String method, JSONObject data);

    //执行命令并返回结果
    String executeDrcAndReturnResult(String dockSn, String method);

    //执行命令并返回结果
    String executeDrcAndReturnResult(String dockSn, String method, JSONObject data);

    //获取机场椭球高
    Double getDockEllipsoidHeight(String dockSn);

    //获取机场模式
    Integer getDockModeCode(String dockSn);

    //获取机场备降点
    LatLonDTO getDockAlternateLandPoint(String dockSn);

    //机场是否在线
    Boolean isDockOnline(String dockSn);

    // 获取当前待回复命令信息（测试/模拟用）
    JSONObject getPendingCmd(String deviceSn);

    // 注入模拟MQTT回复（测试/模拟用），replyData 为完整回复 JSON（含 result/output 等字段）
    void injectMockReply(String deviceSn, JSONObject replyData);
}
