() {},
+ gateway.getGatewaySn(),
+ DebugMethodEnum.ESIM_OPERATOR_SWITCH.getMethod(),
+ request);
+ }
+
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AirConditioner.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AirConditioner.java
new file mode 100644
index 0000000..a24b10d
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AirConditioner.java
@@ -0,0 +1,42 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public class AirConditioner {
+
+ private AirConditionerStateEnum airConditionerState;
+
+ private Integer switchTime;
+
+ public AirConditioner() {
+ }
+
+ @Override
+ public String toString() {
+ return "AirConditioner{" +
+ "airConditionerState=" + airConditionerState +
+ ", switchTime=" + switchTime +
+ '}';
+ }
+
+ public AirConditionerStateEnum getAirConditionerState() {
+ return airConditionerState;
+ }
+
+ public AirConditioner setAirConditionerState(AirConditionerStateEnum airConditionerState) {
+ this.airConditionerState = airConditionerState;
+ return this;
+ }
+
+ public Integer getSwitchTime() {
+ return switchTime;
+ }
+
+ public AirConditioner setSwitchTime(Integer switchTime) {
+ this.switchTime = switchTime;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AirConditionerStateEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AirConditionerStateEnum.java
new file mode 100644
index 0000000..0ea9558
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AirConditionerStateEnum.java
@@ -0,0 +1,56 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum AirConditionerStateEnum {
+
+ IDLE(0),
+
+ COOL(1),
+
+ HEAT(2),
+
+ DEHUMIDIFICATION(3),
+
+ COOLING_EXIT(4),
+
+ HEATING_EXIT(5),
+
+ DEHUMIDIFICATION_EXIT(6),
+
+ COOLING_PREPARATION(7),
+
+ HEATING_PREPARATION(8),
+
+ DEHUMIDIFICATION_PREPARATION(9),
+
+ DISCONNECTED(32767),
+ ;
+
+ private final int state;
+
+ AirConditionerStateEnum(int state) {
+ this.state = state;
+ }
+
+ @JsonValue
+ public int getState() {
+ return state;
+ }
+
+ @JsonCreator
+ public static AirConditionerStateEnum find(int state) {
+ return Arrays.stream(values()).filter(stateEnum -> stateEnum.state == state).findAny()
+ .orElseThrow(() -> new CloudSDKException(AirConditionerStateEnum.class, state));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AlternateLandPoint.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AlternateLandPoint.java
new file mode 100644
index 0000000..6996f1b
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/AlternateLandPoint.java
@@ -0,0 +1,69 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * @author sean
+ * @version 1.0
+ * @date 2022/5/11
+ */
+public class AlternateLandPoint {
+
+ private Float latitude;
+
+ private Float longitude;
+
+ private Float safeLandHeight;
+
+ @JsonProperty("is_configured")
+ private Boolean configured;
+
+ public AlternateLandPoint() {
+ }
+
+ @Override
+ public String toString() {
+ return "AlternateLandPoint{" +
+ "latitude=" + latitude +
+ ", longitude=" + longitude +
+ ", safeLandHeight=" + safeLandHeight +
+ ", configured=" + configured +
+ '}';
+ }
+
+ public Float getLatitude() {
+ return latitude;
+ }
+
+ public AlternateLandPoint setLatitude(Float latitude) {
+ this.latitude = latitude;
+ return this;
+ }
+
+ public Float getLongitude() {
+ return longitude;
+ }
+
+ public AlternateLandPoint setLongitude(Float longitude) {
+ this.longitude = longitude;
+ return this;
+ }
+
+ public Float getSafeLandHeight() {
+ return safeLandHeight;
+ }
+
+ public AlternateLandPoint setSafeLandHeight(Float safeLandHeight) {
+ this.safeLandHeight = safeLandHeight;
+ return this;
+ }
+
+ public Boolean getConfigured() {
+ return configured;
+ }
+
+ public AlternateLandPoint setConfigured(Boolean configured) {
+ this.configured = configured;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/BackupBattery.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/BackupBattery.java
new file mode 100644
index 0000000..31d2d82
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/BackupBattery.java
@@ -0,0 +1,57 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * @author sean
+ * @version 1.3
+ * @date 2022/11/3
+ */
+public class BackupBattery {
+
+ private Integer voltage;
+
+ private Float temperature;
+
+ @JsonProperty("switch")
+ private Boolean batterySwitch;
+
+ public BackupBattery() {
+ }
+
+ @Override
+ public String toString() {
+ return "BackupBattery{" +
+ "voltage=" + voltage +
+ ", temperature=" + temperature +
+ ", batterySwitch=" + batterySwitch +
+ '}';
+ }
+
+ public Integer getVoltage() {
+ return voltage;
+ }
+
+ public BackupBattery setVoltage(Integer voltage) {
+ this.voltage = voltage;
+ return this;
+ }
+
+ public Float getTemperature() {
+ return temperature;
+ }
+
+ public BackupBattery setTemperature(Float temperature) {
+ this.temperature = temperature;
+ return this;
+ }
+
+ public Boolean getBatterySwitch() {
+ return batterySwitch;
+ }
+
+ public BackupBattery setBatterySwitch(Boolean batterySwitch) {
+ this.batterySwitch = batterySwitch;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/Battery.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/Battery.java
new file mode 100644
index 0000000..5f83c18
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/Battery.java
@@ -0,0 +1,138 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean.zhou
+ * @version 0.1
+ * @date 2021/11/24
+ */
+public class Battery {
+
+ private String firmwareVersion;
+
+ private BatteryIndexEnum index;
+
+ private Integer loopTimes;
+
+ private Integer capacityPercent;
+
+ private String sn;
+
+ private Integer subType;
+
+ private Float temperature;
+
+ private Integer type;
+
+ private Integer voltage;
+
+ private Integer highVoltageStorageDays;
+
+ public Battery() {
+ }
+
+ @Override
+ public String toString() {
+ return "Battery{" +
+ "firmwareVersion='" + firmwareVersion + '\'' +
+ ", index=" + index +
+ ", loopTimes=" + loopTimes +
+ ", capacityPercent=" + capacityPercent +
+ ", sn='" + sn + '\'' +
+ ", subType=" + subType +
+ ", temperature=" + temperature +
+ ", type=" + type +
+ ", voltage=" + voltage +
+ ", highVoltageStorageDays=" + highVoltageStorageDays +
+ '}';
+ }
+
+ public String getFirmwareVersion() {
+ return firmwareVersion;
+ }
+
+ public Battery setFirmwareVersion(String firmwareVersion) {
+ this.firmwareVersion = firmwareVersion;
+ return this;
+ }
+
+ public BatteryIndexEnum getIndex() {
+ return index;
+ }
+
+ public Battery setIndex(BatteryIndexEnum index) {
+ this.index = index;
+ return this;
+ }
+
+ public Integer getLoopTimes() {
+ return loopTimes;
+ }
+
+ public Battery setLoopTimes(Integer loopTimes) {
+ this.loopTimes = loopTimes;
+ return this;
+ }
+
+ public Integer getCapacityPercent() {
+ return capacityPercent;
+ }
+
+ public Battery setCapacityPercent(Integer capacityPercent) {
+ this.capacityPercent = capacityPercent;
+ return this;
+ }
+
+ public String getSn() {
+ return sn;
+ }
+
+ public Battery setSn(String sn) {
+ this.sn = sn;
+ return this;
+ }
+
+ public Integer getSubType() {
+ return subType;
+ }
+
+ public Battery setSubType(Integer subType) {
+ this.subType = subType;
+ return this;
+ }
+
+ public Float getTemperature() {
+ return temperature;
+ }
+
+ public Battery setTemperature(Float temperature) {
+ this.temperature = temperature;
+ return this;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public Battery setType(Integer type) {
+ this.type = type;
+ return this;
+ }
+
+ public Integer getVoltage() {
+ return voltage;
+ }
+
+ public Battery setVoltage(Integer voltage) {
+ this.voltage = voltage;
+ return this;
+ }
+
+ public Integer getHighVoltageStorageDays() {
+ return highVoltageStorageDays;
+ }
+
+ public Battery setHighVoltageStorageDays(Integer highVoltageStorageDays) {
+ this.highVoltageStorageDays = highVoltageStorageDays;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/BatteryIndexEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/BatteryIndexEnum.java
new file mode 100644
index 0000000..d028f9b
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/BatteryIndexEnum.java
@@ -0,0 +1,37 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum BatteryIndexEnum {
+
+ LEFT(0),
+
+ RIGHT(1);
+
+ private final int index;
+
+ BatteryIndexEnum(int index) {
+ this.index = index;
+ }
+
+ @JsonValue
+ public int getIndex() {
+ return index;
+ }
+
+ @JsonCreator
+ public static BatteryIndexEnum find(int index) {
+ return Arrays.stream(values()).filter(indexEnum -> indexEnum.index == index).findAny()
+ .orElseThrow(() -> new CloudSDKException(BatteryIndexEnum.class, index));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/BatteryStoreModeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/BatteryStoreModeEnum.java
new file mode 100644
index 0000000..d11a91b
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/BatteryStoreModeEnum.java
@@ -0,0 +1,36 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.3
+ * @date 2022/11/14
+ */
+public enum BatteryStoreModeEnum {
+
+ PLAN(1),
+
+ EMERGENCY(2);
+
+ private final int mode;
+
+ BatteryStoreModeEnum(int mode) {
+ this.mode = mode;
+ }
+
+ @JsonValue
+ public int getMode() {
+ return mode;
+ }
+
+ @JsonCreator
+ public static BatteryStoreModeEnum find(int mode) {
+ return Arrays.stream(BatteryStoreModeEnum.values()).filter(modeEnum -> modeEnum.mode == mode).findAny()
+ .orElseThrow(() -> new CloudSDKException(BatteryStoreModeEnum.class, mode));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/CameraIsoEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/CameraIsoEnum.java
new file mode 100644
index 0000000..3d4840e
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/CameraIsoEnum.java
@@ -0,0 +1,61 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/12/12
+ */
+public enum CameraIsoEnum {
+
+ AUTO(0),
+
+ AUTO_HIGH_SENSE(1),
+
+ _50(2),
+
+ _100(3),
+
+ _200(4),
+
+ _400(5),
+
+ _800(6),
+
+ _1600(7),
+
+ _3200(8),
+
+ _6400(9),
+
+ _12800(10),
+
+ _25600(11),
+
+ FIXED(255),
+
+ ;
+
+ private final int iso;
+
+ CameraIsoEnum(int iso) {
+ this.iso = iso;
+ }
+
+ @JsonValue
+ public int getIso() {
+ return iso;
+ }
+
+ @JsonCreator
+ public static CameraIsoEnum find(int iso) {
+ return Arrays.stream(values()).filter(isoEnum -> isoEnum.iso == iso).findAny()
+ .orElseThrow(() -> new CloudSDKException(CameraIsoEnum.class, iso));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/CameraModeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/CameraModeEnum.java
new file mode 100644
index 0000000..df438f8
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/CameraModeEnum.java
@@ -0,0 +1,44 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2023/3/3
+ */
+public enum CameraModeEnum {
+
+ PHOTO(0),
+
+ VIDEO(1),
+
+ LOW_LIGHT_INTELLIGENCE(2),
+
+ PANORAMA(3),
+
+ UNSUPPORTED(-1),
+
+ ;
+
+ private final int mode;
+
+ CameraModeEnum(int mode) {
+ this.mode = mode;
+ }
+
+ @JsonValue
+ public int getMode() {
+ return mode;
+ }
+
+ @JsonCreator
+ public static CameraModeEnum find(int mode) {
+ return Arrays.stream(values()).filter(modeEnum -> modeEnum.mode == mode).findAny()
+ .orElseThrow(() -> new CloudSDKException(CameraModeEnum.class, mode));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/CameraStateEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/CameraStateEnum.java
new file mode 100644
index 0000000..ed7abd3
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/CameraStateEnum.java
@@ -0,0 +1,37 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2023/4/23
+ */
+public enum CameraStateEnum {
+
+ IDLE(0),
+
+ WORKING(1),
+ ;
+
+ private final int state;
+
+ CameraStateEnum(int state) {
+ this.state = state;
+ }
+
+ @JsonValue
+ public int getState() {
+ return state;
+ }
+
+ @JsonCreator
+ public static CameraStateEnum find(int state) {
+ return Arrays.stream(values()).filter(stateEnum -> stateEnum.state == state).findAny()
+ .orElseThrow(() -> new CloudSDKException(CameraStateEnum.class, state));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ControlSourceEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ControlSourceEnum.java
new file mode 100644
index 0000000..4b03cf1
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ControlSourceEnum.java
@@ -0,0 +1,38 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2023/3/16
+ */
+public enum ControlSourceEnum {
+
+ A("A"),
+
+ B("B"),
+
+ UNKNOWN("");
+
+ private final String controlSource;
+
+ ControlSourceEnum(String controlSource) {
+ this.controlSource = controlSource;
+ }
+
+ @JsonValue
+ public String getControlSource() {
+ return controlSource;
+ }
+
+ @JsonCreator
+ public static ControlSourceEnum find(String controlSource) {
+ return Arrays.stream(values()).filter(controlSourceEnum -> controlSourceEnum.controlSource.equals(controlSource)).findAny()
+ .orElseThrow(() -> new CloudSDKException(ControlSourceEnum.class, controlSource));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/CoverStateEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/CoverStateEnum.java
new file mode 100644
index 0000000..1111e9a
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/CoverStateEnum.java
@@ -0,0 +1,42 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum CoverStateEnum {
+
+ CLOSED(0),
+
+ OPENED(1),
+
+ HALF_OPEN(2),
+
+ ABNORMAL(3),
+ ;
+
+ private final int state;
+
+ CoverStateEnum(int state) {
+ this.state = state;
+ }
+
+ @JsonValue
+ public int getState() {
+ return state;
+ }
+
+ @JsonCreator
+ public static CoverStateEnum find(int state) {
+ return Arrays.stream(values()).filter(stateEnum -> stateEnum.state == state).findAny()
+ .orElseThrow(() -> new CloudSDKException(CoverStateEnum.class, state));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceDomainEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceDomainEnum.java
new file mode 100644
index 0000000..be9d5da
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceDomainEnum.java
@@ -0,0 +1,45 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import io.swagger.v3.oas.annotations.media.Schema;
+
+import java.util.Arrays;
+
+/**
+ *
+ * @author sean.zhou
+ * @date 2021/11/15
+ * @version 0.1
+ */
+@Schema(description = "device domain", enumAsRef = true)
+public enum DeviceDomainEnum {
+
+ DRONE(0),
+
+ PAYLOAD(1),
+
+ REMOTER_CONTROL(2),
+
+ DOCK (3),
+
+ ;
+
+ private final int domain;
+
+ DeviceDomainEnum(int domain) {
+ this.domain = domain;
+ }
+
+ @JsonCreator
+ public static DeviceDomainEnum find(int domain) {
+ return Arrays.stream(values()).filter(domainEnum -> domainEnum.domain == domain).findAny()
+ .orElseThrow(() -> new CloudSDKException(DeviceDomainEnum.class, domain));
+ }
+
+ @JsonValue
+ public int getDomain() {
+ return domain;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java
new file mode 100644
index 0000000..c56f4cd
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceEnum.java
@@ -0,0 +1,129 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import io.swagger.v3.oas.annotations.media.Schema;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/5/19
+ */
+@Schema(description = "device model key.", format = "domain-type-subType", enumAsRef = true, example = "0-89-0")
+public enum DeviceEnum {
+
+ M350(DeviceDomainEnum.DRONE, DeviceTypeEnum.M350, DeviceSubTypeEnum.ZERO),
+
+ M300(DeviceDomainEnum.DRONE, DeviceTypeEnum.M300, DeviceSubTypeEnum.ZERO),
+
+ M30(DeviceDomainEnum.DRONE, DeviceTypeEnum.M30_OR_M3T_CAMERA, DeviceSubTypeEnum.ZERO),
+
+ M30T(DeviceDomainEnum.DRONE, DeviceTypeEnum.M30_OR_M3T_CAMERA, DeviceSubTypeEnum.ONE),
+
+ M3E(DeviceDomainEnum.DRONE, DeviceTypeEnum.M3E, DeviceSubTypeEnum.ZERO),
+
+ M3T(DeviceDomainEnum.DRONE, DeviceTypeEnum.M3E, DeviceSubTypeEnum.ONE),
+
+ M3M(DeviceDomainEnum.DRONE, DeviceTypeEnum.M3E, DeviceSubTypeEnum.TWO),
+
+ Z30(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.Z30, DeviceSubTypeEnum.ZERO),
+
+ XT2(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.XT2, DeviceSubTypeEnum.ZERO),
+
+ FPV(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.FPV, DeviceSubTypeEnum.ZERO),
+
+ XTS(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.XTS, DeviceSubTypeEnum.ZERO),
+
+ H20(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.H20, DeviceSubTypeEnum.ZERO),
+
+ H20T(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.H20T, DeviceSubTypeEnum.ZERO),
+
+ P1(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.P1, DeviceSubTypeEnum._65535),
+
+ M30_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M30_CAMERA, DeviceSubTypeEnum.ZERO),
+
+ M30T_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M30T_CAMERA, DeviceSubTypeEnum.ZERO),
+
+ H20N(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.H20N, DeviceSubTypeEnum.ZERO),
+
+ DOCK_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.DOCK_CAMERA, DeviceSubTypeEnum.ZERO),
+
+ L1(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.L1, DeviceSubTypeEnum.ZERO),
+
+ M3E_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M3E_CAMERA, DeviceSubTypeEnum.ZERO),
+
+ M3T_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M30_OR_M3T_CAMERA, DeviceSubTypeEnum.ZERO),
+
+ M3M_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M3M_CAMERA, DeviceSubTypeEnum.ZERO),
+
+ RC(DeviceDomainEnum.REMOTER_CONTROL, DeviceTypeEnum.RC, DeviceSubTypeEnum.ZERO),
+
+ RC_PLUS(DeviceDomainEnum.REMOTER_CONTROL, DeviceTypeEnum.RC_PLUS, DeviceSubTypeEnum.ZERO),
+
+ RC_PRO(DeviceDomainEnum.REMOTER_CONTROL, DeviceTypeEnum.RC_PRO, DeviceSubTypeEnum.ZERO),
+
+ DOCK(DeviceDomainEnum.DOCK, DeviceTypeEnum.DOCK, DeviceSubTypeEnum.ZERO),
+
+ DOCK2(DeviceDomainEnum.DOCK, DeviceTypeEnum.DOCK2, DeviceSubTypeEnum.ZERO),
+
+ M3D(DeviceDomainEnum.DRONE, DeviceTypeEnum.M3D, DeviceSubTypeEnum.ZERO),
+
+ M3TD(DeviceDomainEnum.DRONE, DeviceTypeEnum.M3D, DeviceSubTypeEnum.ONE),
+
+ M3D_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M3D_CAMERA, DeviceSubTypeEnum.ZERO),
+
+ M3TD_CAMERA(DeviceDomainEnum.PAYLOAD, DeviceTypeEnum.M3TD_CAMERA, DeviceSubTypeEnum.ZERO),
+ ;
+
+ @Schema(enumAsRef = true)
+ private final DeviceDomainEnum domain;
+
+ @Schema(enumAsRef = true)
+ private final DeviceTypeEnum type;
+
+ @Schema(enumAsRef = true)
+ private final DeviceSubTypeEnum subType;
+
+ DeviceEnum(DeviceDomainEnum domain, DeviceTypeEnum type, DeviceSubTypeEnum subType) {
+ this.domain = domain;
+ this.type = type;
+ this.subType = subType;
+ }
+
+ public DeviceDomainEnum getDomain() {
+ return domain;
+ }
+
+ public DeviceTypeEnum getType() {
+ return type;
+ }
+
+ public DeviceSubTypeEnum getSubType() {
+ return subType;
+ }
+
+ @JsonValue
+ public String getDevice() {
+ return String.format("%s-%s-%s", domain.getDomain(), type.getType(), subType.getSubType());
+ }
+
+ public static DeviceEnum find(DeviceDomainEnum domain, DeviceTypeEnum type, DeviceSubTypeEnum subType) {
+ return DeviceEnum.find(domain.getDomain(), type.getType(), subType.getSubType());
+ }
+
+ public static DeviceEnum find(int domain, int type, int subType) {
+ return Arrays.stream(values()).filter(device -> device.domain.getDomain() == domain &&
+ device.type.getType() == type && device.subType.getSubType() == subType)
+ .findAny().orElseThrow(() -> new CloudSDKException(DeviceEnum.class,
+ String.format("%s-%s-%s", domain, type, subType)));
+ }
+
+ @JsonCreator
+ public static DeviceEnum find(String key) {
+ return Arrays.stream(values()).filter(device -> device.getDevice().equals(key))
+ .findAny().orElseThrow(() -> new CloudSDKException(DeviceEnum.class, key));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceModelEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceModelEnum.java
new file mode 100644
index 0000000..8b0fc50
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceModelEnum.java
@@ -0,0 +1,11 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/5/29
+ */
+public enum DeviceModelEnum {
+
+ RC, DOCK, DRONE;
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceOsdHost.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceOsdHost.java
new file mode 100644
index 0000000..7139d44
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceOsdHost.java
@@ -0,0 +1,124 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+
+
+/**
+ * @author sean
+ * @version 0.2
+ * @date 2021/12/8
+ */
+public class DeviceOsdHost {
+
+ @Schema(description = "device latitude")
+ @NotNull
+ private Float latitude;
+
+ @Schema(description = "device longitude")
+ @NotNull
+ private Float longitude;
+
+ @Schema(description = "device ellipsoid height")
+ @NotNull
+ private Float height;
+
+ @Schema(description = "device head facing angle")
+ @NotNull
+ @JsonProperty("attitude_head")
+ private Float attitudeHead;
+
+ @Schema(description = "height relative to the takeoff point")
+ @NotNull
+ private Float elevation;
+
+ @Schema(description = "horizontal speed")
+ @NotNull
+ @JsonProperty("horizontal_speed")
+ private Float horizontalSpeed;
+
+ @Schema(description = "vertical speed")
+ @NotNull
+ @JsonProperty("vertical_speed")
+ private Float verticalSpeed;
+
+ public DeviceOsdHost() {
+ }
+
+ @Override
+ public String toString() {
+ return "DeviceOsdHost{" +
+ "latitude=" + latitude +
+ ", longitude=" + longitude +
+ ", height=" + height +
+ ", attitudeHead=" + attitudeHead +
+ ", elevation=" + elevation +
+ ", horizontalSpeed=" + horizontalSpeed +
+ ", verticalSpeed=" + verticalSpeed +
+ '}';
+ }
+
+ public Float getLatitude() {
+ return latitude;
+ }
+
+ public DeviceOsdHost setLatitude(Float latitude) {
+ this.latitude = latitude;
+ return this;
+ }
+
+ public Float getLongitude() {
+ return longitude;
+ }
+
+ public DeviceOsdHost setLongitude(Float longitude) {
+ this.longitude = longitude;
+ return this;
+ }
+
+ public Float getHeight() {
+ return height;
+ }
+
+ public DeviceOsdHost setHeight(Float height) {
+ this.height = height;
+ return this;
+ }
+
+ public Float getAttitudeHead() {
+ return attitudeHead;
+ }
+
+ public DeviceOsdHost setAttitudeHead(Float attitudeHead) {
+ this.attitudeHead = attitudeHead;
+ return this;
+ }
+
+ public Float getElevation() {
+ return elevation;
+ }
+
+ public DeviceOsdHost setElevation(Float elevation) {
+ this.elevation = elevation;
+ return this;
+ }
+
+ public Float getHorizontalSpeed() {
+ return horizontalSpeed;
+ }
+
+ public DeviceOsdHost setHorizontalSpeed(Float horizontalSpeed) {
+ this.horizontalSpeed = horizontalSpeed;
+ return this;
+ }
+
+ public Float getVerticalSpeed() {
+ return verticalSpeed;
+ }
+
+ public DeviceOsdHost setVerticalSpeed(Float verticalSpeed) {
+ this.verticalSpeed = verticalSpeed;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceOsdWsResponse.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceOsdWsResponse.java
new file mode 100644
index 0000000..1abf20d
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceOsdWsResponse.java
@@ -0,0 +1,53 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.common.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
+
+
+/**
+ * @author sean
+ * @version 0.2
+ * @date 2021/12/8
+ */
+@Schema(name = "DeviceOsdWsResponse", description = "BizCode: device_osd.Websocket response data when device topology changes.
")
+public class DeviceOsdWsResponse extends BaseModel {
+
+ @NotNull
+ @Schema(description = "drone sn", example = "1AD3CA2VL3LAD6")
+ private String sn;
+
+ @NotNull
+ @Valid
+ private DeviceOsdHost host;
+
+ public DeviceOsdWsResponse() {
+ }
+
+ @Override
+ public String toString() {
+ return "DeviceOsdWsResponse{" +
+ "sn='" + sn + '\'' +
+ ", host=" + host +
+ '}';
+ }
+
+ public String getSn() {
+ return sn;
+ }
+
+ public DeviceOsdWsResponse setSn(String sn) {
+ this.sn = sn;
+ return this;
+ }
+
+ public DeviceOsdHost getHost() {
+ return host;
+ }
+
+ public DeviceOsdWsResponse setHost(DeviceOsdHost host) {
+ this.host = host;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceSubTypeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceSubTypeEnum.java
new file mode 100644
index 0000000..cd798f3
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceSubTypeEnum.java
@@ -0,0 +1,42 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import io.swagger.v3.oas.annotations.media.Schema;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/5/26
+ */
+@Schema(description = "device subType", enumAsRef = true)
+public enum DeviceSubTypeEnum {
+
+ ZERO(0),
+
+ ONE(1),
+
+ TWO(2),
+
+ _65535(65535);
+
+ private final int subType;
+
+ DeviceSubTypeEnum(int subType) {
+ this.subType = subType;
+ }
+
+ @JsonValue
+ public int getSubType() {
+ return subType;
+ }
+
+ @JsonCreator
+ public static DeviceSubTypeEnum find(int subType) {
+ return Arrays.stream(values()).filter(typeEnum -> typeEnum.subType == subType).findAny()
+ .orElseThrow(() -> new CloudSDKException(DeviceSubTypeEnum.class, subType));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceTypeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceTypeEnum.java
new file mode 100644
index 0000000..49bd0db
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DeviceTypeEnum.java
@@ -0,0 +1,87 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import io.swagger.v3.oas.annotations.media.Schema;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/5/26
+ */
+@Schema(description = "device type", enumAsRef = true)
+public enum DeviceTypeEnum {
+
+ M350(89),
+
+ M300(60),
+
+ M30_OR_M3T_CAMERA(67),
+
+ M3E(77),
+
+ Z30(20),
+
+ XT2(26),
+
+ FPV(39),
+
+ XTS(41),
+
+ H20(42),
+
+ H20T(43),
+
+ P1(50),
+
+ M30_CAMERA(52),
+
+ M30T_CAMERA(53),
+
+ H20N(61),
+
+ DOCK_CAMERA(165),
+
+ L1(90742),
+
+ M3E_CAMERA(66),
+
+ M3M_CAMERA(68),
+
+ RC(56),
+
+ RC_PLUS(119),
+
+ RC_PRO(144),
+
+ DOCK(1),
+
+ DOCK2(2),
+
+ M3D(91),
+
+ M3D_CAMERA(80),
+
+ M3TD_CAMERA(81),
+ ;
+
+ private final int type;
+
+ DeviceTypeEnum(int type) {
+ this.type = type;
+ }
+
+ @JsonValue
+ public int getType() {
+ return type;
+ }
+
+ @JsonCreator
+ public static DeviceTypeEnum find(int type) {
+ return Arrays.stream(values()).filter(typeEnum -> typeEnum.type == type).findAny()
+ .orElseThrow(() -> new CloudSDKException(DeviceTypeEnum.class, type));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDistanceLimitStatus.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDistanceLimitStatus.java
new file mode 100644
index 0000000..4804177
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDistanceLimitStatus.java
@@ -0,0 +1,58 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The state of the drone's limited distance
+ * @author sean
+ * @version 1.3
+ * @date 2022/10/27
+ */
+public class DockDistanceLimitStatus {
+
+ private SwitchActionEnum state;
+
+ private Integer distanceLimit;
+
+ @JsonProperty("is_near_distance_limit")
+ private Boolean nearDistanceLimit;
+
+ public DockDistanceLimitStatus() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockDistanceLimitStatusSet{" +
+ "state=" + state +
+ ", distanceLimit=" + distanceLimit +
+ ", nearDistanceLimit=" + nearDistanceLimit +
+ '}';
+ }
+
+ public SwitchActionEnum getState() {
+ return state;
+ }
+
+ public DockDistanceLimitStatus setState(SwitchActionEnum state) {
+ this.state = state;
+ return this;
+ }
+
+ public Integer getDistanceLimit() {
+ return distanceLimit;
+ }
+
+ public DockDistanceLimitStatus setDistanceLimit(Integer distanceLimit) {
+ this.distanceLimit = distanceLimit;
+ return this;
+ }
+
+ public Boolean getNearDistanceLimit() {
+ return nearDistanceLimit;
+ }
+
+ public DockDistanceLimitStatus setNearDistanceLimit(Boolean nearDistanceLimit) {
+ this.nearDistanceLimit = nearDistanceLimit;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneControlSource.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneControlSource.java
new file mode 100644
index 0000000..a4c647e
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneControlSource.java
@@ -0,0 +1,116 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.List;
+
+/**
+ * @author sean.zhou
+ * @date 2021/11/18
+ * @version 0.1
+ */
+public class DockDroneControlSource {
+
+ private ControlSourceEnum controlSource;
+
+ private Float homeLatitude;
+
+ private Float homeLongitude;
+
+ private Integer lowBatteryWarningThreshold;
+
+ private Integer seriousLowBatteryWarningThreshold;
+
+ private List payloads;
+
+ private Boolean locked;
+
+ private ModeCodeReasonEnum modeCodeReason;
+
+ public DockDroneControlSource() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockDroneControlSource{" +
+ "controlSource=" + controlSource +
+ ", homeLatitude=" + homeLatitude +
+ ", homeLongitude=" + homeLongitude +
+ ", lowBatteryWarningThreshold=" + lowBatteryWarningThreshold +
+ ", seriousLowBatteryWarningThreshold=" + seriousLowBatteryWarningThreshold +
+ ", payloads=" + payloads +
+ ", locked=" + locked +
+ ", modeCodeReason=" + modeCodeReason +
+ '}';
+ }
+
+ public ControlSourceEnum getControlSource() {
+ return controlSource;
+ }
+
+ public DockDroneControlSource setControlSource(ControlSourceEnum controlSource) {
+ this.controlSource = controlSource;
+ return this;
+ }
+
+ public Float getHomeLatitude() {
+ return homeLatitude;
+ }
+
+ public DockDroneControlSource setHomeLatitude(Float homeLatitude) {
+ this.homeLatitude = homeLatitude;
+ return this;
+ }
+
+ public Float getHomeLongitude() {
+ return homeLongitude;
+ }
+
+ public DockDroneControlSource setHomeLongitude(Float homeLongitude) {
+ this.homeLongitude = homeLongitude;
+ return this;
+ }
+
+ public Integer getLowBatteryWarningThreshold() {
+ return lowBatteryWarningThreshold;
+ }
+
+ public DockDroneControlSource setLowBatteryWarningThreshold(Integer lowBatteryWarningThreshold) {
+ this.lowBatteryWarningThreshold = lowBatteryWarningThreshold;
+ return this;
+ }
+
+ public Integer getSeriousLowBatteryWarningThreshold() {
+ return seriousLowBatteryWarningThreshold;
+ }
+
+ public DockDroneControlSource setSeriousLowBatteryWarningThreshold(Integer seriousLowBatteryWarningThreshold) {
+ this.seriousLowBatteryWarningThreshold = seriousLowBatteryWarningThreshold;
+ return this;
+ }
+
+ public List getPayloads() {
+ return payloads;
+ }
+
+ public DockDroneControlSource setPayloads(List payloads) {
+ this.payloads = payloads;
+ return this;
+ }
+
+ public Boolean getLocked() {
+ return locked;
+ }
+
+ public DockDroneControlSource setLocked(Boolean locked) {
+ this.locked = locked;
+ return this;
+ }
+
+ public ModeCodeReasonEnum getModeCodeReason() {
+ return modeCodeReason;
+ }
+
+ public DockDroneControlSource setModeCodeReason(ModeCodeReasonEnum modeCodeReason) {
+ this.modeCodeReason = modeCodeReason;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneCurrentCommanderFlightMode.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneCurrentCommanderFlightMode.java
new file mode 100644
index 0000000..619f63b
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneCurrentCommanderFlightMode.java
@@ -0,0 +1,34 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.cloudapi.control.CommanderFlightModeEnum;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/20
+ */
+public class DockDroneCurrentCommanderFlightMode {
+
+ @JsonProperty("current_commander_flight_mode")
+ private CommanderFlightModeEnum currentCommanderFlightMode;
+
+ public DockDroneCurrentCommanderFlightMode() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockDroneCurrentCommanderFlightMode{" +
+ "currentCommanderFlightMode=" + currentCommanderFlightMode +
+ '}';
+ }
+
+ public CommanderFlightModeEnum getCurrentCommanderFlightMode() {
+ return currentCommanderFlightMode;
+ }
+
+ public DockDroneCurrentCommanderFlightMode setCurrentCommanderFlightMode(CommanderFlightModeEnum currentCommanderFlightMode) {
+ this.currentCommanderFlightMode = currentCommanderFlightMode;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneCurrentRthMode.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneCurrentRthMode.java
new file mode 100644
index 0000000..095a483
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneCurrentRthMode.java
@@ -0,0 +1,40 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.cloudapi.wayline.RthModeEnum;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.NotNull;
+
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/11
+ */
+public class DockDroneCurrentRthMode {
+
+ /**
+ * Current RTH height mode
+ */
+ @JsonProperty("current_rth_mode")
+ @NotNull
+ private RthModeEnum currentRthMode;
+
+ public DockDroneCurrentRthMode() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockDroneCurrentRthMode{" +
+ "currentRthMode=" + currentRthMode +
+ '}';
+ }
+
+ public RthModeEnum getCurrentRthMode() {
+ return currentRthMode;
+ }
+
+ public DockDroneCurrentRthMode setCurrentRthMode(RthModeEnum currentRthMode) {
+ this.currentRthMode = currentRthMode;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneModeCodeReason.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneModeCodeReason.java
new file mode 100644
index 0000000..5bdbd98
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneModeCodeReason.java
@@ -0,0 +1,30 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/20
+ */
+public class DockDroneModeCodeReason {
+
+ private ModeCodeReasonEnum modeCodeReason;
+
+ public DockDroneModeCodeReason() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockDroneModeCodeReason{" +
+ "modeCodeReason=" + modeCodeReason +
+ '}';
+ }
+
+ public ModeCodeReasonEnum getModeCodeReason() {
+ return modeCodeReason;
+ }
+
+ public DockDroneModeCodeReason setModeCodeReason(ModeCodeReasonEnum modeCodeReason) {
+ this.modeCodeReason = modeCodeReason;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDronePayload.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDronePayload.java
new file mode 100644
index 0000000..a61de89
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDronePayload.java
@@ -0,0 +1,252 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.annotations.CloudSDKVersion;
+import org.dromara.common.sdk.config.version.GatewayTypeEnum;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.0
+ * @date 2022/5/6
+ */
+public class DockDronePayload {
+
+ private PayloadIndex payloadIndex;
+
+ private Float gimbalPitch;
+
+ private Float gimbalRoll;
+
+ private Float gimbalYaw;
+
+ private Float measureTargetAltitude;
+
+ private Float measureTargetDistance;
+
+ private Float measureTargetLatitude;
+
+ private Float measureTargetLongitude;
+
+ private MeasureTargetStateEnum measureTargetErrorState;
+
+ private Integer version;
+
+ private ThermalPaletteStyleEnum thermalCurrentPaletteStyle;
+
+ private ThermalGainModeEnum thermalGainMode;
+
+ private Float thermalGlobalTemperatureMax;
+
+ private Float thermalGlobalTemperatureMin;
+
+ private Integer thermalIsothermLowerLimit;
+
+ private SwitchActionEnum thermalIsothermState;
+
+ private Integer thermalIsothermUpperLimit;
+
+ private List smartTrackPoint;
+
+ @CloudSDKVersion(include = GatewayTypeEnum.DOCK2)
+ private Float zoomFactor;
+
+ public DockDronePayload() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockDronePayload{" +
+ "payloadIndex=" + payloadIndex +
+ ", gimbalPitch=" + gimbalPitch +
+ ", gimbalRoll=" + gimbalRoll +
+ ", gimbalYaw=" + gimbalYaw +
+ ", measureTargetAltitude=" + measureTargetAltitude +
+ ", measureTargetDistance=" + measureTargetDistance +
+ ", measureTargetLatitude=" + measureTargetLatitude +
+ ", measureTargetLongitude=" + measureTargetLongitude +
+ ", measureTargetErrorState=" + measureTargetErrorState +
+ ", version=" + version +
+ ", thermalCurrentPaletteStyle=" + thermalCurrentPaletteStyle +
+ ", thermalGainMode=" + thermalGainMode +
+ ", thermalGlobalTemperatureMax=" + thermalGlobalTemperatureMax +
+ ", thermalGlobalTemperatureMin=" + thermalGlobalTemperatureMin +
+ ", thermalIsothermLowerLimit=" + thermalIsothermLowerLimit +
+ ", thermalIsothermState=" + thermalIsothermState +
+ ", thermalIsothermUpperLimit=" + thermalIsothermUpperLimit +
+ ", smartTrackPoint=" + smartTrackPoint +
+ ", zoomFactor=" + zoomFactor +
+ '}';
+ }
+
+ public PayloadIndex getPayloadIndex() {
+ return payloadIndex;
+ }
+
+ public DockDronePayload setPayloadIndex(PayloadIndex payloadIndex) {
+ this.payloadIndex = payloadIndex;
+ return this;
+ }
+
+ public Float getGimbalPitch() {
+ return gimbalPitch;
+ }
+
+ public DockDronePayload setGimbalPitch(Float gimbalPitch) {
+ this.gimbalPitch = gimbalPitch;
+ return this;
+ }
+
+ public Float getGimbalRoll() {
+ return gimbalRoll;
+ }
+
+ public DockDronePayload setGimbalRoll(Float gimbalRoll) {
+ this.gimbalRoll = gimbalRoll;
+ return this;
+ }
+
+ public Float getGimbalYaw() {
+ return gimbalYaw;
+ }
+
+ public DockDronePayload setGimbalYaw(Float gimbalYaw) {
+ this.gimbalYaw = gimbalYaw;
+ return this;
+ }
+
+ public Float getMeasureTargetAltitude() {
+ return measureTargetAltitude;
+ }
+
+ public DockDronePayload setMeasureTargetAltitude(Float measureTargetAltitude) {
+ this.measureTargetAltitude = measureTargetAltitude;
+ return this;
+ }
+
+ public Float getMeasureTargetDistance() {
+ return measureTargetDistance;
+ }
+
+ public DockDronePayload setMeasureTargetDistance(Float measureTargetDistance) {
+ this.measureTargetDistance = measureTargetDistance;
+ return this;
+ }
+
+ public Float getMeasureTargetLatitude() {
+ return measureTargetLatitude;
+ }
+
+ public DockDronePayload setMeasureTargetLatitude(Float measureTargetLatitude) {
+ this.measureTargetLatitude = measureTargetLatitude;
+ return this;
+ }
+
+ public Float getMeasureTargetLongitude() {
+ return measureTargetLongitude;
+ }
+
+ public DockDronePayload setMeasureTargetLongitude(Float measureTargetLongitude) {
+ this.measureTargetLongitude = measureTargetLongitude;
+ return this;
+ }
+
+ public MeasureTargetStateEnum getMeasureTargetErrorState() {
+ return measureTargetErrorState;
+ }
+
+ public DockDronePayload setMeasureTargetErrorState(MeasureTargetStateEnum measureTargetErrorState) {
+ this.measureTargetErrorState = measureTargetErrorState;
+ return this;
+ }
+
+ public Integer getVersion() {
+ return version;
+ }
+
+ public DockDronePayload setVersion(Integer version) {
+ this.version = version;
+ return this;
+ }
+
+ public ThermalPaletteStyleEnum getThermalCurrentPaletteStyle() {
+ return thermalCurrentPaletteStyle;
+ }
+
+ public DockDronePayload setThermalCurrentPaletteStyle(ThermalPaletteStyleEnum thermalCurrentPaletteStyle) {
+ this.thermalCurrentPaletteStyle = thermalCurrentPaletteStyle;
+ return this;
+ }
+
+ public ThermalGainModeEnum getThermalGainMode() {
+ return thermalGainMode;
+ }
+
+ public DockDronePayload setThermalGainMode(ThermalGainModeEnum thermalGainMode) {
+ this.thermalGainMode = thermalGainMode;
+ return this;
+ }
+
+ public Float getThermalGlobalTemperatureMax() {
+ return thermalGlobalTemperatureMax;
+ }
+
+ public DockDronePayload setThermalGlobalTemperatureMax(Float thermalGlobalTemperatureMax) {
+ this.thermalGlobalTemperatureMax = thermalGlobalTemperatureMax;
+ return this;
+ }
+
+ public Float getThermalGlobalTemperatureMin() {
+ return thermalGlobalTemperatureMin;
+ }
+
+ public DockDronePayload setThermalGlobalTemperatureMin(Float thermalGlobalTemperatureMin) {
+ this.thermalGlobalTemperatureMin = thermalGlobalTemperatureMin;
+ return this;
+ }
+
+ public Integer getThermalIsothermLowerLimit() {
+ return thermalIsothermLowerLimit;
+ }
+
+ public DockDronePayload setThermalIsothermLowerLimit(Integer thermalIsothermLowerLimit) {
+ this.thermalIsothermLowerLimit = thermalIsothermLowerLimit;
+ return this;
+ }
+
+ public SwitchActionEnum getThermalIsothermState() {
+ return thermalIsothermState;
+ }
+
+ public DockDronePayload setThermalIsothermState(SwitchActionEnum thermalIsothermState) {
+ this.thermalIsothermState = thermalIsothermState;
+ return this;
+ }
+
+ public Integer getThermalIsothermUpperLimit() {
+ return thermalIsothermUpperLimit;
+ }
+
+ public DockDronePayload setThermalIsothermUpperLimit(Integer thermalIsothermUpperLimit) {
+ this.thermalIsothermUpperLimit = thermalIsothermUpperLimit;
+ return this;
+ }
+
+ public List getSmartTrackPoint() {
+ return smartTrackPoint;
+ }
+
+ public DockDronePayload setSmartTrackPoint(List smartTrackPoint) {
+ this.smartTrackPoint = smartTrackPoint;
+ return this;
+ }
+
+ public Float getZoomFactor() {
+ return zoomFactor;
+ }
+
+ public DockDronePayload setZoomFactor(Float zoomFactor) {
+ this.zoomFactor = zoomFactor;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneThermalSupportedPaletteStyle.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneThermalSupportedPaletteStyle.java
new file mode 100644
index 0000000..e1f1fef
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneThermalSupportedPaletteStyle.java
@@ -0,0 +1,56 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/5/23
+ */
+public class DockDroneThermalSupportedPaletteStyle {
+
+ private PayloadIndex payloadIndex;
+
+ private ThermalPaletteStyleEnum[] thermalSupportedPaletteStyles;
+
+ private Integer version;
+
+ public DockDroneThermalSupportedPaletteStyle() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockDroneThermalSupportedPaletteStyle{" +
+ "payloadIndex=" + payloadIndex +
+ ", thermalSupportedPaletteStyles=" + Arrays.toString(thermalSupportedPaletteStyles) +
+ ", version=" + version +
+ '}';
+ }
+
+ public PayloadIndex getPayloadIndex() {
+ return payloadIndex;
+ }
+
+ public DockDroneThermalSupportedPaletteStyle setPayloadIndex(PayloadIndex payloadIndex) {
+ this.payloadIndex = payloadIndex;
+ return this;
+ }
+
+ public ThermalPaletteStyleEnum[] getThermalSupportedPaletteStyles() {
+ return thermalSupportedPaletteStyles;
+ }
+
+ public DockDroneThermalSupportedPaletteStyle setThermalSupportedPaletteStyles(ThermalPaletteStyleEnum[] thermalSupportedPaletteStyles) {
+ this.thermalSupportedPaletteStyles = thermalSupportedPaletteStyles;
+ return this;
+ }
+
+ public Integer getVersion() {
+ return version;
+ }
+
+ public DockDroneThermalSupportedPaletteStyle setVersion(Integer version) {
+ this.version = version;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneWpmzVersion.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneWpmzVersion.java
new file mode 100644
index 0000000..e3b9e41
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockDroneWpmzVersion.java
@@ -0,0 +1,30 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/5/23
+ */
+public class DockDroneWpmzVersion {
+
+ private String wpmzVersion;
+
+ public DockDroneWpmzVersion() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockDroneWpmzVersion{" +
+ "wpmzVersion='" + wpmzVersion + '\'' +
+ '}';
+ }
+
+ public String getWpmzVersion() {
+ return wpmzVersion;
+ }
+
+ public DockDroneWpmzVersion setWpmzVersion(String wpmzVersion) {
+ this.wpmzVersion = wpmzVersion;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockFirmwareVersion.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockFirmwareVersion.java
new file mode 100644
index 0000000..d51a8ab
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockFirmwareVersion.java
@@ -0,0 +1,57 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * @author sean
+ * @version 1.0
+ * @date 2022/4/28
+ */
+public class DockFirmwareVersion {
+
+ private String firmwareVersion;
+
+ @JsonProperty("compatible_status")
+ private Boolean needCompatibleStatus;
+
+ private Boolean firmwareUpgradeStatus;
+
+ public DockFirmwareVersion() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockFirmwareVersion{" +
+ "firmwareVersion='" + firmwareVersion + '\'' +
+ ", compatibleStatus=" + needCompatibleStatus +
+ ", firmwareUpgradeStatus=" + firmwareUpgradeStatus +
+ '}';
+ }
+
+ public String getFirmwareVersion() {
+ return firmwareVersion;
+ }
+
+ public DockFirmwareVersion setFirmwareVersion(String firmwareVersion) {
+ this.firmwareVersion = firmwareVersion;
+ return this;
+ }
+
+ public Boolean getNeedCompatibleStatus() {
+ return needCompatibleStatus;
+ }
+
+ public DockFirmwareVersion setNeedCompatibleStatus(Boolean needCompatibleStatus) {
+ this.needCompatibleStatus = needCompatibleStatus;
+ return this;
+ }
+
+ public Boolean getFirmwareUpgradeStatus() {
+ return firmwareUpgradeStatus;
+ }
+
+ public DockFirmwareVersion setFirmwareUpgradeStatus(Boolean firmwareUpgradeStatus) {
+ this.firmwareUpgradeStatus = firmwareUpgradeStatus;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockLiveErrorStatus.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockLiveErrorStatus.java
new file mode 100644
index 0000000..dbf757b
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockLiveErrorStatus.java
@@ -0,0 +1,51 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.cloudapi.livestream.LiveErrorCodeEnum;
+import org.dromara.common.sdk.common.ErrorCodeSourceEnum;
+import org.dromara.common.sdk.mqtt.MqttReply;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * @author sean.zhou
+ * @version 0.1
+ * @date 2021/11/23
+ */
+public class DockLiveErrorStatus {
+
+ private static final int MOD = 100_000;
+
+ private ErrorCodeSourceEnum source = ErrorCodeSourceEnum.DOCK;
+
+ private LiveErrorCodeEnum errorCode;
+
+ private boolean success;
+
+ @Override
+ public String toString() {
+ return "{" +
+ "errorCode=" + getCode() +
+ ", errorMsg=" + getMessage() +
+ '}';
+ }
+
+ @JsonCreator
+ public DockLiveErrorStatus(int code) {
+ this.success = MqttReply.CODE_SUCCESS == code;
+ this.source = ErrorCodeSourceEnum.find(code / MOD);
+ this.errorCode = LiveErrorCodeEnum.find(code % MOD);
+ }
+
+ public String getMessage() {
+ return errorCode.getMessage();
+ }
+
+ @JsonValue
+ public Integer getCode() {
+ return source.getSource() * MOD + errorCode.getCode();
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockLiveStatus.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockLiveStatus.java
new file mode 100644
index 0000000..c3372cf
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockLiveStatus.java
@@ -0,0 +1,32 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.List;
+
+/**
+ * @author sean.zhou
+ * @version 0.1
+ * @date 2021/11/23
+ */
+public class DockLiveStatus {
+
+ private List liveStatus;
+
+ public DockLiveStatus() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockLiveStatus{" +
+ "liveStatus=" + liveStatus +
+ '}';
+ }
+
+ public List getLiveStatus() {
+ return liveStatus;
+ }
+
+ public DockLiveStatus setLiveStatus(List liveStatus) {
+ this.liveStatus = liveStatus;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockLiveStatusData.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockLiveStatusData.java
new file mode 100644
index 0000000..5e8e151
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockLiveStatusData.java
@@ -0,0 +1,81 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.cloudapi.livestream.VideoQualityEnum;
+import org.dromara.common.sdk.cloudapi.livestream.VideoTypeEnum;
+
+/**
+ * @author sean.zhou
+ * @version 0.1
+ * @date 2021/11/23
+ */
+public class DockLiveStatusData {
+
+ private Boolean status;
+
+ private VideoId videoId;
+
+ private VideoQualityEnum videoQuality;
+
+ private VideoTypeEnum videoType;
+
+ private DockLiveErrorStatus errorStatus;
+
+ public DockLiveStatusData() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockLiveStatusData{" +
+ "status=" + status +
+ ", videoId=" + videoId +
+ ", videoQuality=" + videoQuality +
+ ", videoType=" + videoType +
+ ", errorStatus=" + errorStatus +
+ '}';
+ }
+
+ public Boolean getStatus() {
+ return status;
+ }
+
+ public DockLiveStatusData setStatus(Boolean status) {
+ this.status = status;
+ return this;
+ }
+
+ public VideoId getVideoId() {
+ return videoId;
+ }
+
+ public DockLiveStatusData setVideoId(VideoId videoId) {
+ this.videoId = videoId;
+ return this;
+ }
+
+ public VideoQualityEnum getVideoQuality() {
+ return videoQuality;
+ }
+
+ public DockLiveStatusData setVideoQuality(VideoQualityEnum videoQuality) {
+ this.videoQuality = videoQuality;
+ return this;
+ }
+
+ public VideoTypeEnum getVideoType() {
+ return videoType;
+ }
+
+ public DockLiveStatusData setVideoType(VideoTypeEnum videoType) {
+ this.videoType = videoType;
+ return this;
+ }
+
+ public DockLiveErrorStatus getErrorStatus() {
+ return errorStatus;
+ }
+
+ public DockLiveStatusData setErrorStatus(DockLiveErrorStatus errorStatus) {
+ this.errorStatus = errorStatus;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockMaintainStatus.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockMaintainStatus.java
new file mode 100644
index 0000000..9a4ec40
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockMaintainStatus.java
@@ -0,0 +1,66 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public class DockMaintainStatus {
+
+ private Integer lastMaintainFlightSorties;
+
+ private Long lastMaintainTime;
+
+ private MaintainTypeEnum lastMaintainType;
+
+ private Boolean state;
+
+ public DockMaintainStatus() {
+ }
+
+ @Override
+ public String toString() {
+ return "DroneMaintainStatus{" +
+ "lastMaintainFlightSorties=" + lastMaintainFlightSorties +
+ ", lastMaintainTime=" + lastMaintainTime +
+ ", lastMaintainType=" + lastMaintainType +
+ ", state=" + state +
+ '}';
+ }
+
+ public Integer getLastMaintainFlightSorties() {
+ return lastMaintainFlightSorties;
+ }
+
+ public DockMaintainStatus setLastMaintainFlightSorties(Integer lastMaintainFlightSorties) {
+ this.lastMaintainFlightSorties = lastMaintainFlightSorties;
+ return this;
+ }
+
+ public Long getLastMaintainTime() {
+ return lastMaintainTime;
+ }
+
+ public DockMaintainStatus setLastMaintainTime(Long lastMaintainTime) {
+ this.lastMaintainTime = lastMaintainTime;
+ return this;
+ }
+
+ public MaintainTypeEnum getLastMaintainType() {
+ return lastMaintainType;
+ }
+
+ public DockMaintainStatus setLastMaintainType(MaintainTypeEnum lastMaintainType) {
+ this.lastMaintainType = lastMaintainType;
+ return this;
+ }
+
+ public Boolean getState() {
+ return state;
+ }
+
+ public DockMaintainStatus setState(Boolean state) {
+ this.state = state;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockModeCodeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockModeCodeEnum.java
new file mode 100644
index 0000000..a85a279
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockModeCodeEnum.java
@@ -0,0 +1,42 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2023/2/28
+ */
+public enum DockModeCodeEnum {
+
+ IDLE(0),
+
+ DEBUGGING(1),
+
+ REMOTE_DEBUGGING(2),
+
+ UPGRADING(3),
+
+ WORKING(4);
+
+ private final int code;
+
+ DockModeCodeEnum(int code) {
+ this.code = code;
+ }
+
+ @JsonValue
+ public int getCode() {
+ return code;
+ }
+
+ @JsonCreator
+ public static DockModeCodeEnum find(int code) {
+ return Arrays.stream(values()).filter(modeCode -> modeCode.code == code).findAny()
+ .orElseThrow(() -> new CloudSDKException(DockModeCodeEnum.class, code));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockPayloadControlSource.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockPayloadControlSource.java
new file mode 100644
index 0000000..d23d42c
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockPayloadControlSource.java
@@ -0,0 +1,55 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean.zhou
+ * @date 2021/11/18
+ * @version 0.1
+ */
+public class DockPayloadControlSource {
+
+ private ControlSourceEnum controlSource;
+
+ private PayloadIndex payloadIndex;
+
+ private String sn;
+
+ public DockPayloadControlSource() {
+ }
+
+ @Override
+ public String toString() {
+ return "RcPayloadControlSource{" +
+ "controlSource=" + controlSource +
+ ", payloadIndex=" + payloadIndex +
+ ", sn='" + sn + '\'' +
+ '}';
+ }
+
+ public ControlSourceEnum getControlSource() {
+ return controlSource;
+ }
+
+ public DockPayloadControlSource setControlSource(ControlSourceEnum controlSource) {
+ this.controlSource = controlSource;
+ return this;
+ }
+
+ public PayloadIndex getPayloadIndex() {
+ return payloadIndex;
+ }
+
+ public DockPayloadControlSource setPayloadIndex(PayloadIndex payloadIndex) {
+ this.payloadIndex = payloadIndex;
+ return this;
+ }
+
+ public String getSn() {
+ return sn;
+ }
+
+ public DockPayloadControlSource setSn(String sn) {
+ this.sn = sn;
+ return this;
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockPositionState.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockPositionState.java
new file mode 100644
index 0000000..75f13ab
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockPositionState.java
@@ -0,0 +1,81 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * @author sean
+ * @version 0.3
+ * @date 2022/1/27
+ */
+public class DockPositionState {
+
+ @JsonProperty("is_calibration")
+ private Boolean calibration;
+
+ private Integer gpsNumber;
+
+ private PositionFixedEnum isFixed;
+
+ private Integer quality;
+
+ private Integer rtkNumber;
+
+ public DockPositionState() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockPositionState{" +
+ "Calibration=" + calibration +
+ ", gpsNumber=" + gpsNumber +
+ ", isFixed=" + isFixed +
+ ", quality=" + quality +
+ ", rtkNumber=" + rtkNumber +
+ '}';
+ }
+
+ public Boolean getCalibration() {
+ return calibration;
+ }
+
+ public DockPositionState setCalibration(Boolean calibration) {
+ this.calibration = calibration;
+ return this;
+ }
+
+ public Integer getGpsNumber() {
+ return gpsNumber;
+ }
+
+ public DockPositionState setGpsNumber(Integer gpsNumber) {
+ this.gpsNumber = gpsNumber;
+ return this;
+ }
+
+ public PositionFixedEnum getIsFixed() {
+ return isFixed;
+ }
+
+ public DockPositionState setIsFixed(PositionFixedEnum isFixed) {
+ this.isFixed = isFixed;
+ return this;
+ }
+
+ public Integer getQuality() {
+ return quality;
+ }
+
+ public DockPositionState setQuality(Integer quality) {
+ this.quality = quality;
+ return this;
+ }
+
+ public Integer getRtkNumber() {
+ return rtkNumber;
+ }
+
+ public DockPositionState setRtkNumber(Integer rtkNumber) {
+ this.rtkNumber = rtkNumber;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockSilentMode.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockSilentMode.java
new file mode 100644
index 0000000..0d6ef0a
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockSilentMode.java
@@ -0,0 +1,38 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.cloudapi.property.SilentModeEnum;
+import org.dromara.common.sdk.common.BaseModel;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.NotNull;
+
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/12/12
+ */
+public class DockSilentMode extends BaseModel {
+
+ @NotNull
+ @JsonProperty("silent_mode")
+ private SilentModeEnum silentMode;
+
+ public DockSilentMode() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockSilentMode{" +
+ "silentMode=" + silentMode +
+ '}';
+ }
+
+ public SilentModeEnum getSilentMode() {
+ return silentMode;
+ }
+
+ public DockSilentMode setSilentMode(SilentModeEnum silentMode) {
+ this.silentMode = silentMode;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockSubDevice.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockSubDevice.java
new file mode 100644
index 0000000..37f6b62
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DockSubDevice.java
@@ -0,0 +1,66 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.0
+ * @date 2022/5/11
+ */
+public class DockSubDevice {
+
+ private String deviceSn;
+
+ private Boolean deviceOnlineStatus;
+
+ private Boolean devicePaired;
+
+ private DeviceEnum deviceModelKey;
+
+ public DockSubDevice() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockSubDevice{" +
+ "deviceSn='" + deviceSn + '\'' +
+ ", deviceOnlineStatus=" + deviceOnlineStatus +
+ ", devicePaired=" + devicePaired +
+ ", deviceModelKey=" + deviceModelKey +
+ '}';
+ }
+
+ public String getDeviceSn() {
+ return deviceSn;
+ }
+
+ public DockSubDevice setDeviceSn(String deviceSn) {
+ this.deviceSn = deviceSn;
+ return this;
+ }
+
+ public Boolean getDeviceOnlineStatus() {
+ return deviceOnlineStatus;
+ }
+
+ public DockSubDevice setDeviceOnlineStatus(Boolean deviceOnlineStatus) {
+ this.deviceOnlineStatus = deviceOnlineStatus;
+ return this;
+ }
+
+ public Boolean getDevicePaired() {
+ return devicePaired;
+ }
+
+ public DockSubDevice setDevicePaired(Boolean devicePaired) {
+ this.devicePaired = devicePaired;
+ return this;
+ }
+
+ public DeviceEnum getDeviceModelKey() {
+ return deviceModelKey;
+ }
+
+ public DockSubDevice setDeviceModelKey(DeviceEnum deviceModelKey) {
+ this.deviceModelKey = deviceModelKey;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DongleInfo.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DongleInfo.java
new file mode 100644
index 0000000..6f1b5e1
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DongleInfo.java
@@ -0,0 +1,140 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/19
+ */
+public class DongleInfo {
+
+ /**
+ * Dongle’s unique identification mark
+ */
+ private String imei;
+
+ /**
+ * dongle type
+ */
+ private DongleTypeEnum dongleType;
+
+ /**
+ * The unique identification mark of eSIM is used for public account query packages and purchase services.
+ */
+ private String eid;
+
+ /**
+ * esim activation status
+ */
+ private EsimActivateStateEnum esimActivateState;
+
+ /**
+ * The status of the physical sim card in the dongle.
+ */
+ private SimCardStateEnum simCardState;
+
+ /**
+ * Identifies the sim card slot currently being used by the dongle.
+ */
+ private SimSlotEnum simSlot;
+
+ /**
+ * esim information
+ */
+ private List esimInfos;
+
+ /**
+ * Physical sim card information that can be inserted into the dongle.
+ */
+ private SimInfo simInfo;
+
+ public DongleInfo() {
+ }
+
+ @Override
+ public String toString() {
+ return "DongleInfo{" +
+ "imei='" + imei + '\'' +
+ ", dongleType=" + dongleType +
+ ", eid='" + eid + '\'' +
+ ", esimActivateState=" + esimActivateState +
+ ", simCardState=" + simCardState +
+ ", simSlot=" + simSlot +
+ ", esimInfos=" + esimInfos +
+ ", simInfo=" + simInfo +
+ '}';
+ }
+
+ public String getImei() {
+ return imei;
+ }
+
+ public DongleInfo setImei(String imei) {
+ this.imei = imei;
+ return this;
+ }
+
+ public DongleTypeEnum getDongleType() {
+ return dongleType;
+ }
+
+ public DongleInfo setDongleType(DongleTypeEnum dongleType) {
+ this.dongleType = dongleType;
+ return this;
+ }
+
+ public String getEid() {
+ return eid;
+ }
+
+ public DongleInfo setEid(String eid) {
+ this.eid = eid;
+ return this;
+ }
+
+ public EsimActivateStateEnum getEsimActivateState() {
+ return esimActivateState;
+ }
+
+ public DongleInfo setEsimActivateState(EsimActivateStateEnum esimActivateState) {
+ this.esimActivateState = esimActivateState;
+ return this;
+ }
+
+ public SimCardStateEnum getSimCardState() {
+ return simCardState;
+ }
+
+ public DongleInfo setSimCardState(SimCardStateEnum simCardState) {
+ this.simCardState = simCardState;
+ return this;
+ }
+
+ public SimSlotEnum getSimSlot() {
+ return simSlot;
+ }
+
+ public DongleInfo setSimSlot(SimSlotEnum simSlot) {
+ this.simSlot = simSlot;
+ return this;
+ }
+
+ public List getEsimInfos() {
+ return esimInfos;
+ }
+
+ public DongleInfo setEsimInfos(List esimInfos) {
+ this.esimInfos = esimInfos;
+ return this;
+ }
+
+ public SimInfo getSimInfo() {
+ return simInfo;
+ }
+
+ public DongleInfo setSimInfo(SimInfo simInfo) {
+ this.simInfo = simInfo;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DongleInfos.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DongleInfos.java
new file mode 100644
index 0000000..c0a82e9
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DongleInfos.java
@@ -0,0 +1,32 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/20
+ */
+public class DongleInfos {
+
+ private List dongleInfos;
+
+ public DongleInfos() {
+ }
+
+ @Override
+ public String toString() {
+ return "DongleInfos{" +
+ "dongleInfos=" + dongleInfos +
+ '}';
+ }
+
+ public List getDongleInfos() {
+ return dongleInfos;
+ }
+
+ public DongleInfos setDongleInfos(List dongleInfos) {
+ this.dongleInfos = dongleInfos;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DongleTypeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DongleTypeEnum.java
new file mode 100644
index 0000000..3a5cef4
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DongleTypeEnum.java
@@ -0,0 +1,39 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/20
+ */
+public enum DongleTypeEnum {
+
+ OLD_DONGLE(6),
+
+ SUPPORTED_ESIM(10),
+
+ ;
+
+ private final int type;
+
+ DongleTypeEnum(int type) {
+ this.type = type;
+ }
+
+ @JsonValue
+ public int getType() {
+ return type;
+ }
+
+ @JsonCreator
+ public static DongleTypeEnum find(int type) {
+ return Arrays.stream(values()).filter(typeEnum -> typeEnum.type == type).findAny()
+ .orElseThrow(() -> new CloudSDKException(DongleTypeEnum.class, type));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DrcStateEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DrcStateEnum.java
new file mode 100644
index 0000000..c2e8b50
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DrcStateEnum.java
@@ -0,0 +1,38 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2023/2/28
+ */
+public enum DrcStateEnum {
+
+ DISCONNECTED(0),
+
+ CONNECTING(1),
+
+ CONNECTED(2);
+
+ private final int state;
+
+ DrcStateEnum(int state) {
+ this.state = state;
+ }
+
+ @JsonValue
+ public int getState() {
+ return state;
+ }
+
+ @JsonCreator
+ public static DrcStateEnum find(int state) {
+ return Arrays.stream(values()).filter(drcState -> drcState.state == state).findAny()
+ .orElseThrow(() -> new CloudSDKException(DrcStateEnum.class, state));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneBattery.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneBattery.java
new file mode 100644
index 0000000..b493866
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneBattery.java
@@ -0,0 +1,80 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 0.3
+ * @date 2022/1/27
+ */
+public class DroneBattery {
+
+ private List batteries;
+
+ private Integer capacityPercent;
+
+ private Integer landingPower;
+
+ private Integer remainFlightTime;
+
+ private Integer returnHomePower;
+
+ public DroneBattery() {
+ }
+
+ @Override
+ public String toString() {
+ return "DroneBattery{" +
+ "batteries=" + batteries +
+ ", capacityPercent=" + capacityPercent +
+ ", landingPower=" + landingPower +
+ ", remainFlightTime=" + remainFlightTime +
+ ", returnHomePower=" + returnHomePower +
+ '}';
+ }
+
+ public List getBatteries() {
+ return batteries;
+ }
+
+ public DroneBattery setBatteries(List batteries) {
+ this.batteries = batteries;
+ return this;
+ }
+
+ public Integer getCapacityPercent() {
+ return capacityPercent;
+ }
+
+ public DroneBattery setCapacityPercent(Integer capacityPercent) {
+ this.capacityPercent = capacityPercent;
+ return this;
+ }
+
+ public Integer getLandingPower() {
+ return landingPower;
+ }
+
+ public DroneBattery setLandingPower(Integer landingPower) {
+ this.landingPower = landingPower;
+ return this;
+ }
+
+ public Integer getRemainFlightTime() {
+ return remainFlightTime;
+ }
+
+ public DroneBattery setRemainFlightTime(Integer remainFlightTime) {
+ this.remainFlightTime = remainFlightTime;
+ return this;
+ }
+
+ public Integer getReturnHomePower() {
+ return returnHomePower;
+ }
+
+ public DroneBattery setReturnHomePower(Integer returnHomePower) {
+ this.returnHomePower = returnHomePower;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneBatteryMaintenance.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneBatteryMaintenance.java
new file mode 100644
index 0000000..df01386
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneBatteryMaintenance.java
@@ -0,0 +1,66 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public class DroneBatteryMaintenance {
+
+ private BatteryIndexEnum index;
+
+ private Integer capacityPercent;
+
+ private Integer voltage;
+
+ private Float temperature;
+
+ public DroneBatteryMaintenance() {
+ }
+
+ @Override
+ public String toString() {
+ return "DroneBatteryMaintenance{" +
+ "index=" + index +
+ ", capacityPercent=" + capacityPercent +
+ ", voltage=" + voltage +
+ ", temperature=" + temperature +
+ '}';
+ }
+
+ public BatteryIndexEnum getIndex() {
+ return index;
+ }
+
+ public DroneBatteryMaintenance setIndex(BatteryIndexEnum index) {
+ this.index = index;
+ return this;
+ }
+
+ public Integer getCapacityPercent() {
+ return capacityPercent;
+ }
+
+ public DroneBatteryMaintenance setCapacityPercent(Integer capacityPercent) {
+ this.capacityPercent = capacityPercent;
+ return this;
+ }
+
+ public Integer getVoltage() {
+ return voltage;
+ }
+
+ public DroneBatteryMaintenance setVoltage(Integer voltage) {
+ this.voltage = voltage;
+ return this;
+ }
+
+ public Float getTemperature() {
+ return temperature;
+ }
+
+ public DroneBatteryMaintenance setTemperature(Float temperature) {
+ this.temperature = temperature;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneBatteryMaintenanceInfo.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneBatteryMaintenanceInfo.java
new file mode 100644
index 0000000..1512cb5
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneBatteryMaintenanceInfo.java
@@ -0,0 +1,76 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2022/11/3
+ */
+public class DroneBatteryMaintenanceInfo {
+
+ private List batteries;
+
+ private MaintenanceStateEnum maintenanceState;
+
+ /**
+ * Remaining time of battery maintenance
+ * Round down
+ * unit: hour
+ */
+ private Integer maintenanceTimeLeft;
+
+ /**
+ * When the drone is powered off in the dock, this property will report the heating and insulation information of the drone battery.
+ */
+ private HeatStateEnum heatState;
+
+ public DroneBatteryMaintenanceInfo() {
+ }
+
+ @Override
+ public String toString() {
+ return "DroneBatteryMaintenanceInfo{" +
+ "batteries=" + batteries +
+ ", maintenanceState=" + maintenanceState +
+ ", maintenanceTimeLeft=" + maintenanceTimeLeft +
+ ", heatState=" + heatState +
+ '}';
+ }
+
+ public List getBatteries() {
+ return batteries;
+ }
+
+ public DroneBatteryMaintenanceInfo setBatteries(List batteries) {
+ this.batteries = batteries;
+ return this;
+ }
+
+ public MaintenanceStateEnum getMaintenanceState() {
+ return maintenanceState;
+ }
+
+ public DroneBatteryMaintenanceInfo setMaintenanceState(MaintenanceStateEnum maintenanceState) {
+ this.maintenanceState = maintenanceState;
+ return this;
+ }
+
+ public Integer getMaintenanceTimeLeft() {
+ return maintenanceTimeLeft;
+ }
+
+ public DroneBatteryMaintenanceInfo setMaintenanceTimeLeft(Integer maintenanceTimeLeft) {
+ this.maintenanceTimeLeft = maintenanceTimeLeft;
+ return this;
+ }
+
+ public HeatStateEnum getHeatState() {
+ return heatState;
+ }
+
+ public DroneBatteryMaintenanceInfo setHeatState(HeatStateEnum heatState) {
+ this.heatState = heatState;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneChargeState.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneChargeState.java
new file mode 100644
index 0000000..d109e02
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneChargeState.java
@@ -0,0 +1,42 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.0
+ * @date 2022/5/11
+ */
+public class DroneChargeState {
+
+ private Boolean state;
+
+ private Integer capacityPercent;
+
+ public DroneChargeState() {
+ }
+
+ @Override
+ public String toString() {
+ return "DroneChargeState{" +
+ "state=" + state +
+ ", capacityPercent=" + capacityPercent +
+ '}';
+ }
+
+ public Boolean getState() {
+ return state;
+ }
+
+ public DroneChargeState setState(Boolean state) {
+ this.state = state;
+ return this;
+ }
+
+ public Integer getCapacityPercent() {
+ return capacityPercent;
+ }
+
+ public DroneChargeState setCapacityPercent(Integer capacityPercent) {
+ this.capacityPercent = capacityPercent;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneMaintainStatus.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneMaintainStatus.java
new file mode 100644
index 0000000..4400aeb
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneMaintainStatus.java
@@ -0,0 +1,78 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public class DroneMaintainStatus {
+
+ private Integer lastMaintainFlightSorties;
+
+ private Integer lastMaintainFlightTime;
+
+ private Long lastMaintainTime;
+
+ private MaintainTypeEnum lastMaintainType;
+
+ private Boolean state;
+
+ public DroneMaintainStatus() {
+ }
+
+ @Override
+ public String toString() {
+ return "DroneMaintainStatus{" +
+ "lastMaintainFlightSorties=" + lastMaintainFlightSorties +
+ ", lastMaintainFlightTime=" + lastMaintainFlightTime +
+ ", lastMaintainTime=" + lastMaintainTime +
+ ", lastMaintainType=" + lastMaintainType +
+ ", state=" + state +
+ '}';
+ }
+
+ public Integer getLastMaintainFlightSorties() {
+ return lastMaintainFlightSorties;
+ }
+
+ public DroneMaintainStatus setLastMaintainFlightSorties(Integer lastMaintainFlightSorties) {
+ this.lastMaintainFlightSorties = lastMaintainFlightSorties;
+ return this;
+ }
+
+ public Integer getLastMaintainFlightTime() {
+ return lastMaintainFlightTime;
+ }
+
+ public DroneMaintainStatus setLastMaintainFlightTime(Integer lastMaintainFlightTime) {
+ this.lastMaintainFlightTime = lastMaintainFlightTime;
+ return this;
+ }
+
+ public Long getLastMaintainTime() {
+ return lastMaintainTime;
+ }
+
+ public DroneMaintainStatus setLastMaintainTime(Long lastMaintainTime) {
+ this.lastMaintainTime = lastMaintainTime;
+ return this;
+ }
+
+ public MaintainTypeEnum getLastMaintainType() {
+ return lastMaintainType;
+ }
+
+ public DroneMaintainStatus setLastMaintainType(MaintainTypeEnum lastMaintainType) {
+ this.lastMaintainType = lastMaintainType;
+ return this;
+ }
+
+ public Boolean getState() {
+ return state;
+ }
+
+ public DroneMaintainStatus setState(Boolean state) {
+ this.state = state;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneModeCodeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneModeCodeEnum.java
new file mode 100644
index 0000000..b32a8e8
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DroneModeCodeEnum.java
@@ -0,0 +1,76 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2023/3/9
+ */
+public enum DroneModeCodeEnum {
+
+ IDLE(0),
+
+ TAKEOFF_PREPARE(1),
+
+ TAKEOFF_FINISHED(2),
+
+ MANUAL(3),
+
+ TAKEOFF_AUTO(4),
+
+ WAYLINE(5),
+
+ PANORAMIC_SHOT(6),
+
+ ACTIVE_TRACK(7),
+
+ ADS_B_AVOIDANCE(8),
+
+ RETURN_AUTO(9),
+
+ LANDING_AUTO(10),
+
+ LANDING_FORCED(11),
+
+ LANDING_THREE_PROPELLER(12),
+
+ UPGRADING(13),
+
+ DISCONNECTED(14),
+
+ APAS(15),
+
+ VIRTUAL_JOYSTICK(16),
+
+ LIVE_FLIGHT_CONTROLS(17),
+
+ AERIAL_RTK_FIXED(18),
+
+ DOCK_SITE_EVALUATION(19),
+
+ POI(20),
+
+ ;
+
+ private final int code;
+
+ DroneModeCodeEnum(int code) {
+ this.code = code;
+ }
+
+ @JsonValue
+ public int getCode() {
+ return code;
+ }
+
+ @JsonCreator
+ public static DroneModeCodeEnum find(int code) {
+ return Arrays.stream(values()).filter(modeCodeEnum -> modeCodeEnum.ordinal() == code).findAny()
+ .orElseThrow(() -> new CloudSDKException(DroneModeCodeEnum.class, code));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DronePositionState.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DronePositionState.java
new file mode 100644
index 0000000..55e9c50
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/DronePositionState.java
@@ -0,0 +1,66 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 0.3
+ * @date 2022/1/27
+ */
+public class DronePositionState {
+
+ private Integer gpsNumber;
+
+ private PositionFixedEnum isFixed;
+
+ private Integer quality;
+
+ private Integer rtkNumber;
+
+ public DronePositionState() {
+ }
+
+ @Override
+ public String toString() {
+ return "DronePositionState{" +
+ "gpsNumber=" + gpsNumber +
+ ", isFixed=" + isFixed +
+ ", quality=" + quality +
+ ", rtkNumber=" + rtkNumber +
+ '}';
+ }
+
+ public Integer getGpsNumber() {
+ return gpsNumber;
+ }
+
+ public DronePositionState setGpsNumber(Integer gpsNumber) {
+ this.gpsNumber = gpsNumber;
+ return this;
+ }
+
+ public PositionFixedEnum getIsFixed() {
+ return isFixed;
+ }
+
+ public DronePositionState setIsFixed(PositionFixedEnum isFixed) {
+ this.isFixed = isFixed;
+ return this;
+ }
+
+ public Integer getQuality() {
+ return quality;
+ }
+
+ public DronePositionState setQuality(Integer quality) {
+ this.quality = quality;
+ return this;
+ }
+
+ public Integer getRtkNumber() {
+ return rtkNumber;
+ }
+
+ public DronePositionState setRtkNumber(Integer rtkNumber) {
+ this.rtkNumber = rtkNumber;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/EsimActivateStateEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/EsimActivateStateEnum.java
new file mode 100644
index 0000000..12f5133
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/EsimActivateStateEnum.java
@@ -0,0 +1,39 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/20
+ */
+public enum EsimActivateStateEnum {
+
+ INACTIVATED(0),
+
+ ACTIVATED(1),
+
+ ;
+
+ private final int state;
+
+ EsimActivateStateEnum(int state) {
+ this.state = state;
+ }
+
+ @JsonValue
+ public int getState() {
+ return state;
+ }
+
+ @JsonCreator
+ public static EsimActivateStateEnum find(int state) {
+ return Arrays.stream(values()).filter(stateEnum -> stateEnum.state == state).findAny()
+ .orElseThrow(() -> new CloudSDKException(EsimActivateStateEnum.class, state));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/EsimInfo.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/EsimInfo.java
new file mode 100644
index 0000000..d47b45b
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/EsimInfo.java
@@ -0,0 +1,63 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/20
+ */
+public class EsimInfo {
+
+ /**
+ * esim supported operators
+ */
+ private TelecomOperatorEnum telecomOperator;
+
+ /**
+ * In esim infos, only one esim can be enabled at the same time.
+ */
+ private Boolean enabled;
+
+ /**
+ * The unique identification mark of the sim card can be used to purchase physical sim card packages.
+ */
+ private String iccid;
+
+ public EsimInfo() {
+ }
+
+ @Override
+ public String toString() {
+ return "EsimInfo{" +
+ "telecomOperator=" + telecomOperator +
+ ", enabled=" + enabled +
+ ", iccid='" + iccid + '\'' +
+ '}';
+ }
+
+ public TelecomOperatorEnum getTelecomOperator() {
+ return telecomOperator;
+ }
+
+ public EsimInfo setTelecomOperator(TelecomOperatorEnum telecomOperator) {
+ this.telecomOperator = telecomOperator;
+ return this;
+ }
+
+ public Boolean getEnabled() {
+ return enabled;
+ }
+
+ public EsimInfo setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ return this;
+ }
+
+ public String getIccid() {
+ return iccid;
+ }
+
+ public EsimInfo setIccid(String iccid) {
+ this.iccid = iccid;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ExitWaylineWhenRcLostEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ExitWaylineWhenRcLostEnum.java
new file mode 100644
index 0000000..067bd13
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ExitWaylineWhenRcLostEnum.java
@@ -0,0 +1,36 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/6
+ */
+public enum ExitWaylineWhenRcLostEnum {
+
+ CONTINUE(0),
+
+ EXECUTE_RC_LOST_ACTION(1);
+
+ private final int action;
+
+ ExitWaylineWhenRcLostEnum(int action) {
+ this.action = action;
+ }
+
+ @JsonValue
+ public int getAction() {
+ return action;
+ }
+
+ @JsonCreator
+ public static ExitWaylineWhenRcLostEnum find(int action) {
+ return Arrays.stream(values()).filter(actionEnum -> actionEnum.action == action).findAny()
+ .orElseThrow(() -> new CloudSDKException(ExitWaylineWhenRcLostEnum.class, action));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/FirmwareVersion.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/FirmwareVersion.java
new file mode 100644
index 0000000..b4151fe
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/FirmwareVersion.java
@@ -0,0 +1,31 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.0
+ * @date 2022/4/28
+ */
+public class FirmwareVersion {
+
+ private String firmwareVersion;
+
+ public FirmwareVersion() {
+ }
+
+ @Override
+ public String toString() {
+ return "FirmwareVersion{" +
+ "firmwareVersion='" + firmwareVersion + '\'' +
+ '}';
+ }
+
+ public String getFirmwareVersion() {
+ return firmwareVersion;
+ }
+
+ public FirmwareVersion setFirmwareVersion(String firmwareVersion) {
+ this.firmwareVersion = firmwareVersion;
+ return this;
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/FlighttaskStepCodeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/FlighttaskStepCodeEnum.java
new file mode 100644
index 0000000..32e6ab0
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/FlighttaskStepCodeEnum.java
@@ -0,0 +1,50 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum FlighttaskStepCodeEnum {
+
+ TASK_PREPARING(0),
+
+ TASK_OPERATING(1),
+
+ STATE_RECOVERING(2),
+
+ CUSTOM_FLIGHT_AREA_UPDATING(3),
+
+ OFFLINE_MAP_UPDATING(4),
+
+ IDLE(5),
+
+ UNKNOWN1(255),
+
+ UNKNOWN2(256),
+ ;
+
+ private final int code;
+
+ FlighttaskStepCodeEnum(int code) {
+ this.code = code;
+ }
+
+ @JsonValue
+ public int getCode() {
+ return code;
+ }
+
+ @JsonCreator
+ public static FlighttaskStepCodeEnum find(int code) {
+ return Arrays.stream(values()).filter(codeEnum -> codeEnum.code == code).findAny()
+ .orElseThrow(() -> new CloudSDKException(FlighttaskStepCodeEnum.class, code));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/FocusStateEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/FocusStateEnum.java
new file mode 100644
index 0000000..eac0a7c
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/FocusStateEnum.java
@@ -0,0 +1,43 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/12/12
+ */
+public enum FocusStateEnum {
+
+ IDLE(0),
+
+ FOCUSING(1),
+
+ SUCCESS(2),
+
+ FAILED(3),
+
+ ;
+
+ private final int state;
+
+ FocusStateEnum(int state) {
+ this.state = state;
+ }
+
+ @JsonValue
+ public int getState() {
+ return state;
+ }
+
+ @JsonCreator
+ public static FocusStateEnum find(int state) {
+ return Arrays.stream(values()).filter(stateEnum -> stateEnum.state == state).findAny()
+ .orElseThrow(() -> new CloudSDKException(FocusStateEnum.class, state));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/GearEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/GearEnum.java
new file mode 100644
index 0000000..d5eb6cc
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/GearEnum.java
@@ -0,0 +1,54 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum GearEnum {
+
+ A(0),
+
+ P(1),
+
+ NAV(2),
+
+ FPV(3),
+
+ FARM(4),
+
+ S(5),
+
+ F(6),
+
+ M(7),
+
+ G(8),
+
+ T(9),
+ ;
+
+ private final int gear;
+
+ GearEnum(int gear) {
+ this.gear = gear;
+ }
+
+ @JsonValue
+ public int getGear() {
+ return gear;
+ }
+
+ @JsonCreator
+ public static GearEnum find(int gear) {
+ return Arrays.stream(values()).filter(gearEnum -> gearEnum.gear == gear).findAny()
+ .orElseThrow(() -> new CloudSDKException(GearEnum.class, gear));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/HeatStateEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/HeatStateEnum.java
new file mode 100644
index 0000000..6f4d466
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/HeatStateEnum.java
@@ -0,0 +1,41 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2022/11/3
+ */
+public enum HeatStateEnum {
+
+ DISABLED(0),
+
+ HEATING(1),
+
+ INSULATION(2),
+
+ ;
+
+ private final int state;
+
+ HeatStateEnum(int state) {
+ this.state = state;
+ }
+
+ @JsonValue
+ public int getState() {
+ return state;
+ }
+
+ @JsonCreator
+ public static HeatStateEnum find(int state) {
+ return Arrays.stream(values()).filter(stateEnum -> stateEnum.state == state).findAny()
+ .orElseThrow(() -> new CloudSDKException(HeatStateEnum.class, state));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/IrMeteringArea.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/IrMeteringArea.java
new file mode 100644
index 0000000..0cd2c93
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/IrMeteringArea.java
@@ -0,0 +1,114 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/12/12
+ */
+public class IrMeteringArea {
+
+ private Float x;
+
+ private Float y;
+
+ private Float temperature;
+
+ private Float width;
+
+ private Float height;
+
+ private Float averTemperature;
+
+ private IrMeteringPoint minTemperaturePoint;
+
+ private IrMeteringPoint maxTemperaturePoint;
+
+ public IrMeteringArea() {
+ }
+
+ @Override
+ public String toString() {
+ return "IrMeteringArea{" +
+ "x=" + x +
+ ", y=" + y +
+ ", temperature=" + temperature +
+ ", width=" + width +
+ ", height=" + height +
+ ", averTemperature=" + averTemperature +
+ ", minTemperaturePoint=" + minTemperaturePoint +
+ ", maxTemperaturePoint=" + maxTemperaturePoint +
+ '}';
+ }
+
+ public Float getX() {
+ return x;
+ }
+
+ public IrMeteringArea setX(Float x) {
+ this.x = x;
+ return this;
+ }
+
+ public Float getY() {
+ return y;
+ }
+
+ public IrMeteringArea setY(Float y) {
+ this.y = y;
+ return this;
+ }
+
+ public Float getTemperature() {
+ return temperature;
+ }
+
+ public IrMeteringArea setTemperature(Float temperature) {
+ this.temperature = temperature;
+ return this;
+ }
+
+ public Float getWidth() {
+ return width;
+ }
+
+ public IrMeteringArea setWidth(Float width) {
+ this.width = width;
+ return this;
+ }
+
+ public Float getHeight() {
+ return height;
+ }
+
+ public IrMeteringArea setHeight(Float height) {
+ this.height = height;
+ return this;
+ }
+
+ public Float getAverTemperature() {
+ return averTemperature;
+ }
+
+ public IrMeteringArea setAverTemperature(Float averTemperature) {
+ this.averTemperature = averTemperature;
+ return this;
+ }
+
+ public IrMeteringPoint getMinTemperaturePoint() {
+ return minTemperaturePoint;
+ }
+
+ public IrMeteringArea setMinTemperaturePoint(IrMeteringPoint minTemperaturePoint) {
+ this.minTemperaturePoint = minTemperaturePoint;
+ return this;
+ }
+
+ public IrMeteringPoint getMaxTemperaturePoint() {
+ return maxTemperaturePoint;
+ }
+
+ public IrMeteringArea setMaxTemperaturePoint(IrMeteringPoint maxTemperaturePoint) {
+ this.maxTemperaturePoint = maxTemperaturePoint;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/IrMeteringPoint.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/IrMeteringPoint.java
new file mode 100644
index 0000000..c71e1a0
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/IrMeteringPoint.java
@@ -0,0 +1,54 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/12/12
+ */
+public class IrMeteringPoint {
+
+ private Float x;
+
+ private Float y;
+
+ private Float temperature;
+
+ public IrMeteringPoint() {
+ }
+
+ @Override
+ public String toString() {
+ return "IrMeteringPoint{" +
+ "x=" + x +
+ ", y=" + y +
+ ", temperature=" + temperature +
+ '}';
+ }
+
+ public Float getX() {
+ return x;
+ }
+
+ public IrMeteringPoint setX(Float x) {
+ this.x = x;
+ return this;
+ }
+
+ public Float getY() {
+ return y;
+ }
+
+ public IrMeteringPoint setY(Float y) {
+ this.y = y;
+ return this;
+ }
+
+ public Float getTemperature() {
+ return temperature;
+ }
+
+ public IrMeteringPoint setTemperature(Float temperature) {
+ this.temperature = temperature;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/LinkWorkModeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/LinkWorkModeEnum.java
new file mode 100644
index 0000000..aae7515
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/LinkWorkModeEnum.java
@@ -0,0 +1,36 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.3
+ * @date 2022/11/25
+ */
+public enum LinkWorkModeEnum {
+
+ SDR_ONLY(0),
+
+ SDR_WITH_4G(1);
+
+ private final int mode;
+
+ LinkWorkModeEnum(int mode) {
+ this.mode = mode;
+ }
+
+ @JsonValue
+ public int getMode() {
+ return mode;
+ }
+
+ @JsonCreator
+ public static LinkWorkModeEnum find(int mode) {
+ return Arrays.stream(LinkWorkModeEnum.values()).filter(modeEnum -> modeEnum.mode == mode).findAny()
+ .orElseThrow(() -> new CloudSDKException(LinkWorkModeEnum.class, mode));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/LiveviewWorldRegion.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/LiveviewWorldRegion.java
new file mode 100644
index 0000000..0859f2d
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/LiveviewWorldRegion.java
@@ -0,0 +1,66 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2023/3/8
+ */
+public class LiveviewWorldRegion {
+
+ private Float bottom;
+
+ private Float left;
+
+ private Float right;
+
+ private Float top;
+
+ public LiveviewWorldRegion() {
+ }
+
+ @Override
+ public String toString() {
+ return "LiveviewWorldRegion{" +
+ "bottom=" + bottom +
+ ", left=" + left +
+ ", right=" + right +
+ ", top=" + top +
+ '}';
+ }
+
+ public Float getBottom() {
+ return bottom;
+ }
+
+ public LiveviewWorldRegion setBottom(Float bottom) {
+ this.bottom = bottom;
+ return this;
+ }
+
+ public Float getLeft() {
+ return left;
+ }
+
+ public LiveviewWorldRegion setLeft(Float left) {
+ this.left = left;
+ return this;
+ }
+
+ public Float getRight() {
+ return right;
+ }
+
+ public LiveviewWorldRegion setRight(Float right) {
+ this.right = right;
+ return this;
+ }
+
+ public Float getTop() {
+ return top;
+ }
+
+ public LiveviewWorldRegion setTop(Float top) {
+ this.top = top;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/MaintainTypeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/MaintainTypeEnum.java
new file mode 100644
index 0000000..a6d8614
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/MaintainTypeEnum.java
@@ -0,0 +1,46 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum MaintainTypeEnum {
+
+ NO(0),
+
+ DRONE_BASIC(1),
+
+ DRONE_ROUTINE(2),
+
+ DRONE_DEEP(3),
+
+ DOCK_ROUTINE(17),
+
+ DOCK_DEEP(18),
+ ;
+
+ private final int type;
+
+ MaintainTypeEnum(int type) {
+ this.type = type;
+ }
+
+ @JsonValue
+ public int getType() {
+ return type;
+ }
+
+ @JsonCreator
+ public static MaintainTypeEnum find(int type) {
+ return Arrays.stream(values()).filter(typeEnum -> typeEnum.type == type).findAny()
+ .orElseThrow(() -> new CloudSDKException(MaintainTypeEnum.class, type));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/MaintenanceStateEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/MaintenanceStateEnum.java
new file mode 100644
index 0000000..8cc9c8d
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/MaintenanceStateEnum.java
@@ -0,0 +1,41 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2022/11/3
+ */
+public enum MaintenanceStateEnum {
+
+ NO_NEED_TO_MAINTENANCE(0),
+
+ NEED_MAINTENANCE(1),
+
+ UNDER_MAINTENANCE(2),
+
+ ;
+
+ private final int state;
+
+ MaintenanceStateEnum(int state) {
+ this.state = state;
+ }
+
+ @JsonValue
+ public int getState() {
+ return state;
+ }
+
+ @JsonCreator
+ public static MaintenanceStateEnum find(int state) {
+ return Arrays.stream(values()).filter(stateEnum -> stateEnum.state == state).findAny()
+ .orElseThrow(() -> new CloudSDKException(MaintenanceStateEnum.class, state));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/MeasureTargetStateEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/MeasureTargetStateEnum.java
new file mode 100644
index 0000000..2cc1b8b
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/MeasureTargetStateEnum.java
@@ -0,0 +1,42 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum MeasureTargetStateEnum {
+
+ NORMAL(0),
+
+ TOO_CLOSE(1),
+
+ TOO_FAR(2),
+
+ NO_SIGNAL(3),
+ ;
+
+ private final int state;
+
+ MeasureTargetStateEnum(int state) {
+ this.state = state;
+ }
+
+ @JsonValue
+ public int getState() {
+ return state;
+ }
+
+ @JsonCreator
+ public static MeasureTargetStateEnum find(int state) {
+ return Arrays.stream(values()).filter(stateEnum -> stateEnum.state == state).findAny()
+ .orElseThrow(() -> new CloudSDKException(MeasureTargetStateEnum.class, state));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/MediaFileDetail.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/MediaFileDetail.java
new file mode 100644
index 0000000..3de4135
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/MediaFileDetail.java
@@ -0,0 +1,30 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.1
+ * @date 2022/6/17
+ */
+public class MediaFileDetail {
+
+ private Integer remainUpload;
+
+ public MediaFileDetail() {
+ }
+
+ @Override
+ public String toString() {
+ return "MediaFileDetail{" +
+ "remainUpload=" + remainUpload +
+ '}';
+ }
+
+ public Integer getRemainUpload() {
+ return remainUpload;
+ }
+
+ public MediaFileDetail setRemainUpload(Integer remainUpload) {
+ this.remainUpload = remainUpload;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ModeCodeReasonEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ModeCodeReasonEnum.java
new file mode 100644
index 0000000..2653d41
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ModeCodeReasonEnum.java
@@ -0,0 +1,82 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2023/2/28
+ */
+public enum ModeCodeReasonEnum {
+
+ NO_MEANING(0),
+
+ LOW_POWER(1),
+
+ LOW_VOLTAGE(2),
+
+ SERIOUS_LOW_VOLTAGE(3),
+
+ RC_CONTROL(4),
+
+ APP_CONTROL(5),
+
+ RC_SIGNAL_LOST(6),
+
+ EXTERNAL_DEVICE_TRIGGERED(7),
+
+ GEO_ZONE(8),
+
+ HOME_POINT_TOO_CLOSED(9),
+
+ HOME_POINT_TOO_FAR(10),
+
+ EXECUTING_WAYPOINT_MISSION(11),
+
+ ARRIVE_HOME_POINT(12),
+
+ SECOND_LIMIT_LANDING(13),
+
+ APP_FORCIBLY_BREAK_PROTECTION(14),
+
+ PLANES_PASSING_NEARBY(15),
+
+ HEIGHT_CONTROL_FAILED(16),
+
+ LOW_POWER_RTH(17),
+
+ AP_CONTROL(18),
+
+ HARDWARE_ABNORMAL(19),
+
+ TOUCHDOWN_AVOIDANCE_PROTECTION(20),
+
+ CANCEL_RTH(21),
+
+ RTH_OBSTACLE_AVOIDANCE(22),
+
+ RTH_STRONG_GALE(23),
+
+ ;
+
+ private final int reason;
+
+ ModeCodeReasonEnum(int reason) {
+ this.reason = reason;
+ }
+
+ @JsonValue
+ public int getReason() {
+ return reason;
+ }
+
+ @JsonCreator
+ public static ModeCodeReasonEnum find(int reason) {
+ return Arrays.stream(values()).filter(reasonEnum -> reasonEnum.reason == reason).findAny()
+ .orElseThrow(() -> new CloudSDKException(ModeCodeReasonEnum.class, reason));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/NetworkState.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/NetworkState.java
new file mode 100644
index 0000000..0667055
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/NetworkState.java
@@ -0,0 +1,54 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.0
+ * @date 2022/5/11
+ */
+public class NetworkState {
+
+ private NetworkStateTypeEnum type;
+
+ private NetworkStateQualityEnum quality;
+
+ private Float rate;
+
+ public NetworkState() {
+ }
+
+ @Override
+ public String toString() {
+ return "NetworkState{" +
+ "type=" + type +
+ ", quality=" + quality +
+ ", rate=" + rate +
+ '}';
+ }
+
+ public NetworkStateTypeEnum getType() {
+ return type;
+ }
+
+ public NetworkState setType(NetworkStateTypeEnum type) {
+ this.type = type;
+ return this;
+ }
+
+ public NetworkStateQualityEnum getQuality() {
+ return quality;
+ }
+
+ public NetworkState setQuality(NetworkStateQualityEnum quality) {
+ this.quality = quality;
+ return this;
+ }
+
+ public Float getRate() {
+ return rate;
+ }
+
+ public NetworkState setRate(Float rate) {
+ this.rate = rate;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/NetworkStateQualityEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/NetworkStateQualityEnum.java
new file mode 100644
index 0000000..988fb07
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/NetworkStateQualityEnum.java
@@ -0,0 +1,46 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum NetworkStateQualityEnum {
+
+ NO_SIGNAL(0),
+
+ BAD(1),
+
+ POOR(2),
+
+ FAIR(3),
+
+ GOOD(4),
+
+ EXCELLENT(5),
+ ;
+
+ private final int quality;
+
+ NetworkStateQualityEnum(int quality) {
+ this.quality = quality;
+ }
+
+ @JsonValue
+ public int getQuality() {
+ return quality;
+ }
+
+ @JsonCreator
+ public static NetworkStateQualityEnum find(int quality) {
+ return Arrays.stream(values()).filter(qualityEnum -> qualityEnum.quality == quality).findAny()
+ .orElseThrow(() -> new CloudSDKException(NetworkStateQualityEnum.class, quality));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/NetworkStateTypeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/NetworkStateTypeEnum.java
new file mode 100644
index 0000000..9276a43
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/NetworkStateTypeEnum.java
@@ -0,0 +1,38 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum NetworkStateTypeEnum {
+
+ FOURTH_GENERATION(1),
+
+ ETHERNET(2),
+ ;
+
+ private final int type;
+
+ NetworkStateTypeEnum(int type) {
+ this.type = type;
+ }
+
+ @JsonValue
+ public int getType() {
+ return type;
+ }
+
+ @JsonCreator
+ public static NetworkStateTypeEnum find(int type) {
+ return Arrays.stream(values()).filter(typeEnum -> typeEnum.type == type).findAny()
+ .orElseThrow(() -> new CloudSDKException(NetworkStateTypeEnum.class, type));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ObstacleAvoidance.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ObstacleAvoidance.java
new file mode 100644
index 0000000..3b4c2a8
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ObstacleAvoidance.java
@@ -0,0 +1,54 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.3
+ * @date 2022/10/27
+ */
+public class ObstacleAvoidance {
+
+ private SwitchActionEnum horizon;
+
+ private SwitchActionEnum upside;
+
+ private SwitchActionEnum downside;
+
+ public ObstacleAvoidance() {
+ }
+
+ @Override
+ public String toString() {
+ return "ObstacleAvoidanceSet{" +
+ "horizon=" + horizon +
+ ", upside=" + upside +
+ ", downside=" + downside +
+ '}';
+ }
+
+ public SwitchActionEnum getHorizon() {
+ return horizon;
+ }
+
+ public ObstacleAvoidance setHorizon(SwitchActionEnum horizon) {
+ this.horizon = horizon;
+ return this;
+ }
+
+ public SwitchActionEnum getUpside() {
+ return upside;
+ }
+
+ public ObstacleAvoidance setUpside(SwitchActionEnum upside) {
+ this.upside = upside;
+ return this;
+ }
+
+ public SwitchActionEnum getDownside() {
+ return downside;
+ }
+
+ public ObstacleAvoidance setDownside(SwitchActionEnum downside) {
+ this.downside = downside;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdCamera.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdCamera.java
new file mode 100644
index 0000000..4a76c07
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdCamera.java
@@ -0,0 +1,417 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.annotations.CloudSDKVersion;
+import org.dromara.common.sdk.cloudapi.control.*;
+import org.dromara.common.sdk.config.version.CloudSDKVersionEnum;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2023/3/8
+ */
+public class OsdCamera {
+
+ private CameraModeEnum cameraMode;
+
+ private LiveviewWorldRegion liveviewWorldRegion;
+
+ private PayloadIndex payloadIndex;
+
+ private CameraStateEnum photoState;
+
+ private Integer recordTime;
+
+ private CameraStateEnum recordingState;
+
+ private Long remainPhotoNum;
+
+ private Integer remainRecordDuration;
+
+ private Float zoomFactor;
+
+ private Float irZoomFactor;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ private Boolean screenSplitEnable;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ private List photoStorageSettings;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ private List videoStorageSettings;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private ExposureModeEnum wideExposureMode;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private CameraIsoEnum wideIso;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private ShutterSpeedEnum wideShutterSpeed;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private ExposureValueEnum wideExposureValue;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private ExposureModeEnum zoomExposureMode;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private CameraIsoEnum zoomIso;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private ShutterSpeedEnum zoomShutterSpeed;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private ExposureValueEnum zoomExposureValue;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private FocusModeEnum zoomFocusMode;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private Integer zoomFocusValue;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private Integer zoomMaxFocusValue;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private Integer zoomMinFocusValue;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private MeteringModeEnum irMeteringMode;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private IrMeteringPoint irMeteringPoint;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private IrMeteringArea irMeteringArea;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private Integer zoomCalibrateFarthestFocusValue;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private Integer zoomCalibrateNearestFocusValue;
+
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2)
+ private FocusStateEnum zoomFocusState;
+
+ public OsdCamera() {
+ }
+
+ @Override
+ public String toString() {
+ return "OsdCamera{" +
+ "cameraMode=" + cameraMode +
+ ", liveviewWorldRegion=" + liveviewWorldRegion +
+ ", payloadIndex=" + payloadIndex +
+ ", photoState=" + photoState +
+ ", recordTime=" + recordTime +
+ ", recordingState=" + recordingState +
+ ", remainPhotoNum=" + remainPhotoNum +
+ ", remainRecordDuration=" + remainRecordDuration +
+ ", zoomFactor=" + zoomFactor +
+ ", irZoomFactor=" + irZoomFactor +
+ ", screenSplitEnable=" + screenSplitEnable +
+ ", photoStorageSettings=" + photoStorageSettings +
+ ", videoStorageSettings=" + videoStorageSettings +
+ ", wideExposureMode=" + wideExposureMode +
+ ", wideIso=" + wideIso +
+ ", wideShutterSpeed=" + wideShutterSpeed +
+ ", wideExposureValue=" + wideExposureValue +
+ ", zoomExposureMode=" + zoomExposureMode +
+ ", zoomIso=" + zoomIso +
+ ", zoomShutterSpeed=" + zoomShutterSpeed +
+ ", zoomExposureValue=" + zoomExposureValue +
+ ", zoomFocusMode=" + zoomFocusMode +
+ ", zoomFocusValue=" + zoomFocusValue +
+ ", zoomMaxFocusValue=" + zoomMaxFocusValue +
+ ", zoomMinFocusValue=" + zoomMinFocusValue +
+ ", irMeteringMode=" + irMeteringMode +
+ ", irMeteringPoint=" + irMeteringPoint +
+ ", irMeteringArea=" + irMeteringArea +
+ ", zoomCalibrateFarthestFocusValue=" + zoomCalibrateFarthestFocusValue +
+ ", zoomCalibrateNearestFocusValue=" + zoomCalibrateNearestFocusValue +
+ ", zoomFocusState=" + zoomFocusState +
+ '}';
+ }
+
+ public CameraModeEnum getCameraMode() {
+ return cameraMode;
+ }
+
+ public OsdCamera setCameraMode(CameraModeEnum cameraMode) {
+ this.cameraMode = cameraMode;
+ return this;
+ }
+
+ public LiveviewWorldRegion getLiveviewWorldRegion() {
+ return liveviewWorldRegion;
+ }
+
+ public OsdCamera setLiveviewWorldRegion(LiveviewWorldRegion liveviewWorldRegion) {
+ this.liveviewWorldRegion = liveviewWorldRegion;
+ return this;
+ }
+
+ public PayloadIndex getPayloadIndex() {
+ return payloadIndex;
+ }
+
+ public OsdCamera setPayloadIndex(PayloadIndex payloadIndex) {
+ this.payloadIndex = payloadIndex;
+ return this;
+ }
+
+ public CameraStateEnum getPhotoState() {
+ return photoState;
+ }
+
+ public OsdCamera setPhotoState(CameraStateEnum photoState) {
+ this.photoState = photoState;
+ return this;
+ }
+
+ public Integer getRecordTime() {
+ return recordTime;
+ }
+
+ public OsdCamera setRecordTime(Integer recordTime) {
+ this.recordTime = recordTime;
+ return this;
+ }
+
+ public CameraStateEnum getRecordingState() {
+ return recordingState;
+ }
+
+ public OsdCamera setRecordingState(CameraStateEnum recordingState) {
+ this.recordingState = recordingState;
+ return this;
+ }
+
+ public Long getRemainPhotoNum() {
+ return remainPhotoNum;
+ }
+
+ public OsdCamera setRemainPhotoNum(Long remainPhotoNum) {
+ this.remainPhotoNum = remainPhotoNum;
+ return this;
+ }
+
+ public Integer getRemainRecordDuration() {
+ return remainRecordDuration;
+ }
+
+ public OsdCamera setRemainRecordDuration(Integer remainRecordDuration) {
+ this.remainRecordDuration = remainRecordDuration;
+ return this;
+ }
+
+ public Float getZoomFactor() {
+ return zoomFactor;
+ }
+
+ public OsdCamera setZoomFactor(Float zoomFactor) {
+ this.zoomFactor = zoomFactor;
+ return this;
+ }
+
+ public Float getIrZoomFactor() {
+ return irZoomFactor;
+ }
+
+ public OsdCamera setIrZoomFactor(Float irZoomFactor) {
+ this.irZoomFactor = irZoomFactor;
+ return this;
+ }
+
+ public Boolean getScreenSplitEnable() {
+ return screenSplitEnable;
+ }
+
+ public OsdCamera setScreenSplitEnable(Boolean screenSplitEnable) {
+ this.screenSplitEnable = screenSplitEnable;
+ return this;
+ }
+
+ public List getPhotoStorageSettings() {
+ return photoStorageSettings;
+ }
+
+ public OsdCamera setPhotoStorageSettings(List photoStorageSettings) {
+ this.photoStorageSettings = photoStorageSettings;
+ return this;
+ }
+
+ public List getVideoStorageSettings() {
+ return videoStorageSettings;
+ }
+
+ public OsdCamera setVideoStorageSettings(List videoStorageSettings) {
+ this.videoStorageSettings = videoStorageSettings;
+ return this;
+ }
+
+ public ExposureModeEnum getWideExposureMode() {
+ return wideExposureMode;
+ }
+
+ public OsdCamera setWideExposureMode(ExposureModeEnum wideExposureMode) {
+ this.wideExposureMode = wideExposureMode;
+ return this;
+ }
+
+ public CameraIsoEnum getWideIso() {
+ return wideIso;
+ }
+
+ public OsdCamera setWideIso(CameraIsoEnum wideIso) {
+ this.wideIso = wideIso;
+ return this;
+ }
+
+ public ShutterSpeedEnum getWideShutterSpeed() {
+ return wideShutterSpeed;
+ }
+
+ public OsdCamera setWideShutterSpeed(ShutterSpeedEnum wideShutterSpeed) {
+ this.wideShutterSpeed = wideShutterSpeed;
+ return this;
+ }
+
+ public ExposureValueEnum getWideExposureValue() {
+ return wideExposureValue;
+ }
+
+ public OsdCamera setWideExposureValue(ExposureValueEnum wideExposureValue) {
+ this.wideExposureValue = wideExposureValue;
+ return this;
+ }
+
+ public ExposureModeEnum getZoomExposureMode() {
+ return zoomExposureMode;
+ }
+
+ public OsdCamera setZoomExposureMode(ExposureModeEnum zoomExposureMode) {
+ this.zoomExposureMode = zoomExposureMode;
+ return this;
+ }
+
+ public CameraIsoEnum getZoomIso() {
+ return zoomIso;
+ }
+
+ public OsdCamera setZoomIso(CameraIsoEnum zoomIso) {
+ this.zoomIso = zoomIso;
+ return this;
+ }
+
+ public ShutterSpeedEnum getZoomShutterSpeed() {
+ return zoomShutterSpeed;
+ }
+
+ public OsdCamera setZoomShutterSpeed(ShutterSpeedEnum zoomShutterSpeed) {
+ this.zoomShutterSpeed = zoomShutterSpeed;
+ return this;
+ }
+
+ public ExposureValueEnum getZoomExposureValue() {
+ return zoomExposureValue;
+ }
+
+ public OsdCamera setZoomExposureValue(ExposureValueEnum zoomExposureValue) {
+ this.zoomExposureValue = zoomExposureValue;
+ return this;
+ }
+
+ public FocusModeEnum getZoomFocusMode() {
+ return zoomFocusMode;
+ }
+
+ public OsdCamera setZoomFocusMode(FocusModeEnum zoomFocusMode) {
+ this.zoomFocusMode = zoomFocusMode;
+ return this;
+ }
+
+ public Integer getZoomFocusValue() {
+ return zoomFocusValue;
+ }
+
+ public OsdCamera setZoomFocusValue(Integer zoomFocusValue) {
+ this.zoomFocusValue = zoomFocusValue;
+ return this;
+ }
+
+ public Integer getZoomMaxFocusValue() {
+ return zoomMaxFocusValue;
+ }
+
+ public OsdCamera setZoomMaxFocusValue(Integer zoomMaxFocusValue) {
+ this.zoomMaxFocusValue = zoomMaxFocusValue;
+ return this;
+ }
+
+ public Integer getZoomMinFocusValue() {
+ return zoomMinFocusValue;
+ }
+
+ public OsdCamera setZoomMinFocusValue(Integer zoomMinFocusValue) {
+ this.zoomMinFocusValue = zoomMinFocusValue;
+ return this;
+ }
+
+ public MeteringModeEnum getIrMeteringMode() {
+ return irMeteringMode;
+ }
+
+ public OsdCamera setIrMeteringMode(MeteringModeEnum irMeteringMode) {
+ this.irMeteringMode = irMeteringMode;
+ return this;
+ }
+
+ public IrMeteringPoint getIrMeteringPoint() {
+ return irMeteringPoint;
+ }
+
+ public OsdCamera setIrMeteringPoint(IrMeteringPoint irMeteringPoint) {
+ this.irMeteringPoint = irMeteringPoint;
+ return this;
+ }
+
+ public IrMeteringArea getIrMeteringArea() {
+ return irMeteringArea;
+ }
+
+ public OsdCamera setIrMeteringArea(IrMeteringArea irMeteringArea) {
+ this.irMeteringArea = irMeteringArea;
+ return this;
+ }
+
+ public Integer getZoomCalibrateFarthestFocusValue() {
+ return zoomCalibrateFarthestFocusValue;
+ }
+
+ public OsdCamera setZoomCalibrateFarthestFocusValue(Integer zoomCalibrateFarthestFocusValue) {
+ this.zoomCalibrateFarthestFocusValue = zoomCalibrateFarthestFocusValue;
+ return this;
+ }
+
+ public Integer getZoomCalibrateNearestFocusValue() {
+ return zoomCalibrateNearestFocusValue;
+ }
+
+ public OsdCamera setZoomCalibrateNearestFocusValue(Integer zoomCalibrateNearestFocusValue) {
+ this.zoomCalibrateNearestFocusValue = zoomCalibrateNearestFocusValue;
+ return this;
+ }
+
+ public FocusStateEnum getZoomFocusState() {
+ return zoomFocusState;
+ }
+
+ public OsdCamera setZoomFocusState(FocusStateEnum zoomFocusState) {
+ this.zoomFocusState = zoomFocusState;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDock.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDock.java
new file mode 100644
index 0000000..42b5e8d
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDock.java
@@ -0,0 +1,493 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.annotations.CloudSDKVersion;
+import org.dromara.common.sdk.config.version.CloudSDKVersionEnum;
+
+/**
+ * @author sean
+ * @version 1.3
+ * @date 2022/11/3
+ */
+public class OsdDock {
+
+ private NetworkState networkState;
+
+ private Boolean droneInDock;
+
+ private DroneChargeState droneChargeState;
+
+ private RainfallEnum rainfall;
+
+ private Float windSpeed;
+
+ private Float environmentTemperature;
+
+ private Float temperature;
+
+ private Integer humidity;
+
+ private Float latitude;
+
+ private Float longitude;
+
+ private Float height;
+
+ private AlternateLandPoint alternateLandPoint;
+
+ private Long firstPowerOn;
+
+ private DockPositionState positionState;
+
+ private Storage storage;
+
+ private DockModeCodeEnum modeCode;
+
+ private CoverStateEnum coverState;
+
+ private Boolean supplementLightState;
+
+ private Boolean emergencyStopState;
+
+ private AirConditioner airConditioner;
+
+ private BatteryStoreModeEnum batteryStoreMode;
+
+ private Boolean alarmState;
+
+ private PutterStateEnum putterState;
+
+ private DockSubDevice subDevice;
+
+ private Integer jobNumber;
+
+ private Long accTime;
+
+ private Long activationTime;
+
+ private OsdDockMaintainStatus maintainStatus;
+
+ private Integer electricSupplyVoltage;
+
+ private Integer workingVoltage;
+
+ private Integer workingCurrent;
+
+ private BackupBattery backupBattery;
+
+ private DroneBatteryMaintenanceInfo droneBatteryMaintenanceInfo;
+
+ private FlighttaskStepCodeEnum flighttaskStepCode;
+
+ private Integer flighttaskPrepareCapacity;
+
+ private MediaFileDetail mediaFileDetail;
+
+ private WirelessLink wirelessLink;
+
+ private DrcStateEnum drcState;
+
+ /**
+ * User experience improvement program
+ */
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ private UserExperienceImprovementEnum userExperienceImprovement;
+
+ public OsdDock() {
+ }
+
+ @Override
+ public String toString() {
+ return "OsdDock{" +
+ "networkState=" + networkState +
+ ", droneInDock=" + droneInDock +
+ ", droneChargeState=" + droneChargeState +
+ ", rainfall=" + rainfall +
+ ", windSpeed=" + windSpeed +
+ ", environmentTemperature=" + environmentTemperature +
+ ", temperature=" + temperature +
+ ", humidity=" + humidity +
+ ", latitude=" + latitude +
+ ", longitude=" + longitude +
+ ", height=" + height +
+ ", alternateLandPoint=" + alternateLandPoint +
+ ", firstPowerOn=" + firstPowerOn +
+ ", positionState=" + positionState +
+ ", storage=" + storage +
+ ", modeCode=" + modeCode +
+ ", coverState=" + coverState +
+ ", supplementLightState=" + supplementLightState +
+ ", emergencyStopState=" + emergencyStopState +
+ ", airConditioner=" + airConditioner +
+ ", batteryStoreMode=" + batteryStoreMode +
+ ", alarmState=" + alarmState +
+ ", putterState=" + putterState +
+ ", subDevice=" + subDevice +
+ ", jobNumber=" + jobNumber +
+ ", accTime=" + accTime +
+ ", activationTime=" + activationTime +
+ ", maintainStatus=" + maintainStatus +
+ ", electricSupplyVoltage=" + electricSupplyVoltage +
+ ", workingVoltage=" + workingVoltage +
+ ", workingCurrent=" + workingCurrent +
+ ", backupBattery=" + backupBattery +
+ ", droneBatteryMaintenanceInfo=" + droneBatteryMaintenanceInfo +
+ ", flighttaskStepCode=" + flighttaskStepCode +
+ ", flighttaskPrepareCapacity=" + flighttaskPrepareCapacity +
+ ", mediaFileDetail=" + mediaFileDetail +
+ ", wirelessLink=" + wirelessLink +
+ ", drcState=" + drcState +
+ ", userExperienceImprovement=" + userExperienceImprovement +
+ '}';
+ }
+
+ public NetworkState getNetworkState() {
+ return networkState;
+ }
+
+ public OsdDock setNetworkState(NetworkState networkState) {
+ this.networkState = networkState;
+ return this;
+ }
+
+ public Boolean getDroneInDock() {
+ return droneInDock;
+ }
+
+ public OsdDock setDroneInDock(Boolean droneInDock) {
+ this.droneInDock = droneInDock;
+ return this;
+ }
+
+ public DroneChargeState getDroneChargeState() {
+ return droneChargeState;
+ }
+
+ public OsdDock setDroneChargeState(DroneChargeState droneChargeState) {
+ this.droneChargeState = droneChargeState;
+ return this;
+ }
+
+ public RainfallEnum getRainfall() {
+ return rainfall;
+ }
+
+ public OsdDock setRainfall(RainfallEnum rainfall) {
+ this.rainfall = rainfall;
+ return this;
+ }
+
+ public Float getWindSpeed() {
+ return windSpeed;
+ }
+
+ public OsdDock setWindSpeed(Float windSpeed) {
+ this.windSpeed = windSpeed;
+ return this;
+ }
+
+ public Float getEnvironmentTemperature() {
+ return environmentTemperature;
+ }
+
+ public OsdDock setEnvironmentTemperature(Float environmentTemperature) {
+ this.environmentTemperature = environmentTemperature;
+ return this;
+ }
+
+ public Float getTemperature() {
+ return temperature;
+ }
+
+ public OsdDock setTemperature(Float temperature) {
+ this.temperature = temperature;
+ return this;
+ }
+
+ public Integer getHumidity() {
+ return humidity;
+ }
+
+ public OsdDock setHumidity(Integer humidity) {
+ this.humidity = humidity;
+ return this;
+ }
+
+ public Float getLatitude() {
+ return latitude;
+ }
+
+ public OsdDock setLatitude(Float latitude) {
+ this.latitude = latitude;
+ return this;
+ }
+
+ public Float getLongitude() {
+ return longitude;
+ }
+
+ public OsdDock setLongitude(Float longitude) {
+ this.longitude = longitude;
+ return this;
+ }
+
+ public Float getHeight() {
+ return height;
+ }
+
+ public OsdDock setHeight(Float height) {
+ this.height = height;
+ return this;
+ }
+
+ public AlternateLandPoint getAlternateLandPoint() {
+ return alternateLandPoint;
+ }
+
+ public OsdDock setAlternateLandPoint(AlternateLandPoint alternateLandPoint) {
+ this.alternateLandPoint = alternateLandPoint;
+ return this;
+ }
+
+ public Long getFirstPowerOn() {
+ return firstPowerOn;
+ }
+
+ public OsdDock setFirstPowerOn(Long firstPowerOn) {
+ this.firstPowerOn = firstPowerOn;
+ return this;
+ }
+
+ public DockPositionState getPositionState() {
+ return positionState;
+ }
+
+ public OsdDock setPositionState(DockPositionState positionState) {
+ this.positionState = positionState;
+ return this;
+ }
+
+ public Storage getStorage() {
+ return storage;
+ }
+
+ public OsdDock setStorage(Storage storage) {
+ this.storage = storage;
+ return this;
+ }
+
+ public DockModeCodeEnum getModeCode() {
+ return modeCode;
+ }
+
+ public OsdDock setModeCode(DockModeCodeEnum modeCode) {
+ this.modeCode = modeCode;
+ return this;
+ }
+
+ public CoverStateEnum getCoverState() {
+ return coverState;
+ }
+
+ public OsdDock setCoverState(CoverStateEnum coverState) {
+ this.coverState = coverState;
+ return this;
+ }
+
+ public Boolean getSupplementLightState() {
+ return supplementLightState;
+ }
+
+ public OsdDock setSupplementLightState(Boolean supplementLightState) {
+ this.supplementLightState = supplementLightState;
+ return this;
+ }
+
+ public Boolean getEmergencyStopState() {
+ return emergencyStopState;
+ }
+
+ public OsdDock setEmergencyStopState(Boolean emergencyStopState) {
+ this.emergencyStopState = emergencyStopState;
+ return this;
+ }
+
+ public AirConditioner getAirConditioner() {
+ return airConditioner;
+ }
+
+ public OsdDock setAirConditioner(AirConditioner airConditioner) {
+ this.airConditioner = airConditioner;
+ return this;
+ }
+
+ public BatteryStoreModeEnum getBatteryStoreMode() {
+ return batteryStoreMode;
+ }
+
+ public OsdDock setBatteryStoreMode(BatteryStoreModeEnum batteryStoreMode) {
+ this.batteryStoreMode = batteryStoreMode;
+ return this;
+ }
+
+ public Boolean getAlarmState() {
+ return alarmState;
+ }
+
+ public OsdDock setAlarmState(Boolean alarmState) {
+ this.alarmState = alarmState;
+ return this;
+ }
+
+ public PutterStateEnum getPutterState() {
+ return putterState;
+ }
+
+ public OsdDock setPutterState(PutterStateEnum putterState) {
+ this.putterState = putterState;
+ return this;
+ }
+
+ public DockSubDevice getSubDevice() {
+ return subDevice;
+ }
+
+ public OsdDock setSubDevice(DockSubDevice subDevice) {
+ this.subDevice = subDevice;
+ return this;
+ }
+
+ public Integer getJobNumber() {
+ return jobNumber;
+ }
+
+ public OsdDock setJobNumber(Integer jobNumber) {
+ this.jobNumber = jobNumber;
+ return this;
+ }
+
+ public Long getAccTime() {
+ return accTime;
+ }
+
+ public OsdDock setAccTime(Long accTime) {
+ this.accTime = accTime;
+ return this;
+ }
+
+ public Long getActivationTime() {
+ return activationTime;
+ }
+
+ public OsdDock setActivationTime(Long activationTime) {
+ this.activationTime = activationTime;
+ return this;
+ }
+
+ public OsdDockMaintainStatus getMaintainStatus() {
+ return maintainStatus;
+ }
+
+ public OsdDock setMaintainStatus(OsdDockMaintainStatus maintainStatus) {
+ this.maintainStatus = maintainStatus;
+ return this;
+ }
+
+ public Integer getElectricSupplyVoltage() {
+ return electricSupplyVoltage;
+ }
+
+ public OsdDock setElectricSupplyVoltage(Integer electricSupplyVoltage) {
+ this.electricSupplyVoltage = electricSupplyVoltage;
+ return this;
+ }
+
+ public Integer getWorkingVoltage() {
+ return workingVoltage;
+ }
+
+ public OsdDock setWorkingVoltage(Integer workingVoltage) {
+ this.workingVoltage = workingVoltage;
+ return this;
+ }
+
+ public Integer getWorkingCurrent() {
+ return workingCurrent;
+ }
+
+ public OsdDock setWorkingCurrent(Integer workingCurrent) {
+ this.workingCurrent = workingCurrent;
+ return this;
+ }
+
+ public BackupBattery getBackupBattery() {
+ return backupBattery;
+ }
+
+ public OsdDock setBackupBattery(BackupBattery backupBattery) {
+ this.backupBattery = backupBattery;
+ return this;
+ }
+
+ public DroneBatteryMaintenanceInfo getDroneBatteryMaintenanceInfo() {
+ return droneBatteryMaintenanceInfo;
+ }
+
+ public OsdDock setDroneBatteryMaintenanceInfo(DroneBatteryMaintenanceInfo droneBatteryMaintenanceInfo) {
+ this.droneBatteryMaintenanceInfo = droneBatteryMaintenanceInfo;
+ return this;
+ }
+
+ public FlighttaskStepCodeEnum getFlighttaskStepCode() {
+ return flighttaskStepCode;
+ }
+
+ public OsdDock setFlighttaskStepCode(FlighttaskStepCodeEnum flighttaskStepCode) {
+ this.flighttaskStepCode = flighttaskStepCode;
+ return this;
+ }
+
+ public Integer getFlighttaskPrepareCapacity() {
+ return flighttaskPrepareCapacity;
+ }
+
+ public OsdDock setFlighttaskPrepareCapacity(Integer flighttaskPrepareCapacity) {
+ this.flighttaskPrepareCapacity = flighttaskPrepareCapacity;
+ return this;
+ }
+
+ public MediaFileDetail getMediaFileDetail() {
+ return mediaFileDetail;
+ }
+
+ public OsdDock setMediaFileDetail(MediaFileDetail mediaFileDetail) {
+ this.mediaFileDetail = mediaFileDetail;
+ return this;
+ }
+
+ public WirelessLink getWirelessLink() {
+ return wirelessLink;
+ }
+
+ public OsdDock setWirelessLink(WirelessLink wirelessLink) {
+ this.wirelessLink = wirelessLink;
+ return this;
+ }
+
+ public DrcStateEnum getDrcState() {
+ return drcState;
+ }
+
+ public OsdDock setDrcState(DrcStateEnum drcState) {
+ this.drcState = drcState;
+ return this;
+ }
+
+ public UserExperienceImprovementEnum getUserExperienceImprovement() {
+ return userExperienceImprovement;
+ }
+
+ public OsdDock setUserExperienceImprovement(UserExperienceImprovementEnum userExperienceImprovement) {
+ this.userExperienceImprovement = userExperienceImprovement;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDockDrone.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDockDrone.java
new file mode 100644
index 0000000..2d059f6
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDockDrone.java
@@ -0,0 +1,472 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.annotations.CloudSDKVersion;
+import org.dromara.common.sdk.config.version.CloudSDKVersionEnum;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+
+/**
+ * @author sean.zhou
+ * @version 0.1
+ * @date 2021/11/23
+ */
+public class OsdDockDrone {
+
+ private Float attitudeHead;
+
+ private Double attitudePitch;
+
+ private Double attitudeRoll;
+
+ private Float elevation;
+
+ private DroneBattery battery;
+
+ private String firmwareVersion;
+
+ private GearEnum gear;
+
+ private Float height;
+
+ private Float homeDistance;
+
+ private Float horizontalSpeed;
+
+ private Float latitude;
+
+ private Float longitude;
+
+ private DroneModeCodeEnum modeCode;
+
+ private Double totalFlightDistance;
+
+ private Float totalFlightTime;
+
+ private Float verticalSpeed;
+
+ private WindDirectionEnum windDirection;
+
+ private Float windSpeed;
+
+ private DronePositionState positionState;
+
+ @JsonProperty(PayloadModelConst.PAYLOAD_KEY)
+ private List payloads;
+
+ private Storage storage;
+
+ private SwitchActionEnum nightLightsState;
+
+ private Integer heightLimit;
+
+ private DockDistanceLimitStatus distanceLimitStatus;
+
+ private ObstacleAvoidance obstacleAvoidance;
+
+ private Long activationTime;
+
+ private List cameras;
+
+ private RcLostActionEnum rcLostAction;
+
+ private Integer rthAltitude;
+
+ private Integer totalFlightSorties;
+
+ @CloudSDKVersion(deprecated = CloudSDKVersionEnum.V1_0_0)
+ private ExitWaylineWhenRcLostEnum exitWaylineWhenRcLost;
+
+ private String country;
+
+ private Boolean ridState;
+
+ @JsonProperty("is_near_area_limit")
+ private Boolean nearAreaLimit;
+
+ @JsonProperty("is_near_height_limit")
+ private Boolean nearHeightLimit;
+
+ private OsdDroneMaintainStatus maintainStatus;
+
+ private String trackId;
+
+ public OsdDockDrone() {
+ }
+
+ @Override
+ public String toString() {
+ return "OsdDockDrone{" +
+ "attitudeHead=" + attitudeHead +
+ ", attitudePitch=" + attitudePitch +
+ ", attitudeRoll=" + attitudeRoll +
+ ", elevation=" + elevation +
+ ", battery=" + battery +
+ ", firmwareVersion='" + firmwareVersion + '\'' +
+ ", gear=" + gear +
+ ", height=" + height +
+ ", homeDistance=" + homeDistance +
+ ", horizontalSpeed=" + horizontalSpeed +
+ ", latitude=" + latitude +
+ ", longitude=" + longitude +
+ ", modeCode=" + modeCode +
+ ", totalFlightDistance=" + totalFlightDistance +
+ ", totalFlightTime=" + totalFlightTime +
+ ", verticalSpeed=" + verticalSpeed +
+ ", windDirection=" + windDirection +
+ ", windSpeed=" + windSpeed +
+ ", positionState=" + positionState +
+ ", payloads=" + payloads +
+ ", storage=" + storage +
+ ", nightLightsState=" + nightLightsState +
+ ", heightLimit=" + heightLimit +
+ ", distanceLimitStatus=" + distanceLimitStatus +
+ ", obstacleAvoidance=" + obstacleAvoidance +
+ ", activationTime=" + activationTime +
+ ", cameras=" + cameras +
+ ", rcLostAction=" + rcLostAction +
+ ", rthAltitude=" + rthAltitude +
+ ", totalFlightSorties=" + totalFlightSorties +
+ ", exitWaylineWhenRcLost=" + exitWaylineWhenRcLost +
+ ", country='" + country + '\'' +
+ ", ridState=" + ridState +
+ ", nearAreaLimit=" + nearAreaLimit +
+ ", nearHeightLimit=" + nearHeightLimit +
+ ", maintainStatus=" + maintainStatus +
+ ", trackId='" + trackId + '\'' +
+ '}';
+ }
+
+ public Float getAttitudeHead() {
+ return attitudeHead;
+ }
+
+ public OsdDockDrone setAttitudeHead(Float attitudeHead) {
+ this.attitudeHead = attitudeHead;
+ return this;
+ }
+
+ public Double getAttitudePitch() {
+ return attitudePitch;
+ }
+
+ public OsdDockDrone setAttitudePitch(Double attitudePitch) {
+ this.attitudePitch = attitudePitch;
+ return this;
+ }
+
+ public Double getAttitudeRoll() {
+ return attitudeRoll;
+ }
+
+ public OsdDockDrone setAttitudeRoll(Double attitudeRoll) {
+ this.attitudeRoll = attitudeRoll;
+ return this;
+ }
+
+ public Float getElevation() {
+ return elevation;
+ }
+
+ public OsdDockDrone setElevation(Float elevation) {
+ this.elevation = elevation;
+ return this;
+ }
+
+ public DroneBattery getBattery() {
+ return battery;
+ }
+
+ public OsdDockDrone setBattery(DroneBattery battery) {
+ this.battery = battery;
+ return this;
+ }
+
+ public String getFirmwareVersion() {
+ return firmwareVersion;
+ }
+
+ public OsdDockDrone setFirmwareVersion(String firmwareVersion) {
+ this.firmwareVersion = firmwareVersion;
+ return this;
+ }
+
+ public GearEnum getGear() {
+ return gear;
+ }
+
+ public OsdDockDrone setGear(GearEnum gear) {
+ this.gear = gear;
+ return this;
+ }
+
+ public Float getHeight() {
+ return height;
+ }
+
+ public OsdDockDrone setHeight(Float height) {
+ this.height = height;
+ return this;
+ }
+
+ public Float getHomeDistance() {
+ return homeDistance;
+ }
+
+ public OsdDockDrone setHomeDistance(Float homeDistance) {
+ this.homeDistance = homeDistance;
+ return this;
+ }
+
+ public Float getHorizontalSpeed() {
+ return horizontalSpeed;
+ }
+
+ public OsdDockDrone setHorizontalSpeed(Float horizontalSpeed) {
+ this.horizontalSpeed = horizontalSpeed;
+ return this;
+ }
+
+ public Float getLatitude() {
+ return latitude;
+ }
+
+ public OsdDockDrone setLatitude(Float latitude) {
+ this.latitude = latitude;
+ return this;
+ }
+
+ public Float getLongitude() {
+ return longitude;
+ }
+
+ public OsdDockDrone setLongitude(Float longitude) {
+ this.longitude = longitude;
+ return this;
+ }
+
+ public DroneModeCodeEnum getModeCode() {
+ return modeCode;
+ }
+
+ public OsdDockDrone setModeCode(DroneModeCodeEnum modeCode) {
+ this.modeCode = modeCode;
+ return this;
+ }
+
+ public Double getTotalFlightDistance() {
+ return totalFlightDistance;
+ }
+
+ public OsdDockDrone setTotalFlightDistance(Double totalFlightDistance) {
+ this.totalFlightDistance = totalFlightDistance;
+ return this;
+ }
+
+ public Float getTotalFlightTime() {
+ return totalFlightTime;
+ }
+
+ public OsdDockDrone setTotalFlightTime(Float totalFlightTime) {
+ this.totalFlightTime = totalFlightTime;
+ return this;
+ }
+
+ public Float getVerticalSpeed() {
+ return verticalSpeed;
+ }
+
+ public OsdDockDrone setVerticalSpeed(Float verticalSpeed) {
+ this.verticalSpeed = verticalSpeed;
+ return this;
+ }
+
+ public WindDirectionEnum getWindDirection() {
+ return windDirection;
+ }
+
+ public OsdDockDrone setWindDirection(WindDirectionEnum windDirection) {
+ this.windDirection = windDirection;
+ return this;
+ }
+
+ public Float getWindSpeed() {
+ return windSpeed;
+ }
+
+ public OsdDockDrone setWindSpeed(Float windSpeed) {
+ this.windSpeed = windSpeed;
+ return this;
+ }
+
+ public DronePositionState getPositionState() {
+ return positionState;
+ }
+
+ public OsdDockDrone setPositionState(DronePositionState positionState) {
+ this.positionState = positionState;
+ return this;
+ }
+
+ public List getPayloads() {
+ return payloads;
+ }
+
+ public OsdDockDrone setPayloads(List payloads) {
+ this.payloads = payloads;
+ return this;
+ }
+
+ public Storage getStorage() {
+ return storage;
+ }
+
+ public OsdDockDrone setStorage(Storage storage) {
+ this.storage = storage;
+ return this;
+ }
+
+ public SwitchActionEnum getNightLightsState() {
+ return nightLightsState;
+ }
+
+ public OsdDockDrone setNightLightsState(SwitchActionEnum nightLightsState) {
+ this.nightLightsState = nightLightsState;
+ return this;
+ }
+
+ public Integer getHeightLimit() {
+ return heightLimit;
+ }
+
+ public OsdDockDrone setHeightLimit(Integer heightLimit) {
+ this.heightLimit = heightLimit;
+ return this;
+ }
+
+ public DockDistanceLimitStatus getDistanceLimitStatus() {
+ return distanceLimitStatus;
+ }
+
+ public OsdDockDrone setDistanceLimitStatus(DockDistanceLimitStatus distanceLimitStatus) {
+ this.distanceLimitStatus = distanceLimitStatus;
+ return this;
+ }
+
+ public ObstacleAvoidance getObstacleAvoidance() {
+ return obstacleAvoidance;
+ }
+
+ public OsdDockDrone setObstacleAvoidance(ObstacleAvoidance obstacleAvoidance) {
+ this.obstacleAvoidance = obstacleAvoidance;
+ return this;
+ }
+
+ public Long getActivationTime() {
+ return activationTime;
+ }
+
+ public OsdDockDrone setActivationTime(Long activationTime) {
+ this.activationTime = activationTime;
+ return this;
+ }
+
+ public List getCameras() {
+ return cameras;
+ }
+
+ public OsdDockDrone setCameras(List cameras) {
+ this.cameras = cameras;
+ return this;
+ }
+
+ public RcLostActionEnum getRcLostAction() {
+ return rcLostAction;
+ }
+
+ public OsdDockDrone setRcLostAction(RcLostActionEnum rcLostAction) {
+ this.rcLostAction = rcLostAction;
+ return this;
+ }
+
+ public Integer getRthAltitude() {
+ return rthAltitude;
+ }
+
+ public OsdDockDrone setRthAltitude(Integer rthAltitude) {
+ this.rthAltitude = rthAltitude;
+ return this;
+ }
+
+ public Integer getTotalFlightSorties() {
+ return totalFlightSorties;
+ }
+
+ public OsdDockDrone setTotalFlightSorties(Integer totalFlightSorties) {
+ this.totalFlightSorties = totalFlightSorties;
+ return this;
+ }
+
+ public ExitWaylineWhenRcLostEnum getExitWaylineWhenRcLost() {
+ return exitWaylineWhenRcLost;
+ }
+
+ public OsdDockDrone setExitWaylineWhenRcLost(ExitWaylineWhenRcLostEnum exitWaylineWhenRcLost) {
+ this.exitWaylineWhenRcLost = exitWaylineWhenRcLost;
+ return this;
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public OsdDockDrone setCountry(String country) {
+ this.country = country;
+ return this;
+ }
+
+ public Boolean getRidState() {
+ return ridState;
+ }
+
+ public OsdDockDrone setRidState(Boolean ridState) {
+ this.ridState = ridState;
+ return this;
+ }
+
+ public Boolean getNearAreaLimit() {
+ return nearAreaLimit;
+ }
+
+ public OsdDockDrone setNearAreaLimit(Boolean nearAreaLimit) {
+ this.nearAreaLimit = nearAreaLimit;
+ return this;
+ }
+
+ public Boolean getNearHeightLimit() {
+ return nearHeightLimit;
+ }
+
+ public OsdDockDrone setNearHeightLimit(Boolean nearHeightLimit) {
+ this.nearHeightLimit = nearHeightLimit;
+ return this;
+ }
+
+ public OsdDroneMaintainStatus getMaintainStatus() {
+ return maintainStatus;
+ }
+
+ public OsdDockDrone setMaintainStatus(OsdDroneMaintainStatus maintainStatus) {
+ this.maintainStatus = maintainStatus;
+ return this;
+ }
+
+ public String getTrackId() {
+ return trackId;
+ }
+
+ public OsdDockDrone setTrackId(String trackId) {
+ this.trackId = trackId;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDockMaintainStatus.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDockMaintainStatus.java
new file mode 100644
index 0000000..d4e9659
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDockMaintainStatus.java
@@ -0,0 +1,32 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public class OsdDockMaintainStatus {
+
+ private List maintainStatusArray;
+
+ public OsdDockMaintainStatus() {
+ }
+
+ @Override
+ public String toString() {
+ return "OsdDroneMaintainStatus{" +
+ "maintainStatusArray=" + maintainStatusArray +
+ '}';
+ }
+
+ public List getMaintainStatusArray() {
+ return maintainStatusArray;
+ }
+
+ public OsdDockMaintainStatus setMaintainStatusArray(List maintainStatusArray) {
+ this.maintainStatusArray = maintainStatusArray;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDroneMaintainStatus.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDroneMaintainStatus.java
new file mode 100644
index 0000000..12136e3
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdDroneMaintainStatus.java
@@ -0,0 +1,32 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public class OsdDroneMaintainStatus {
+
+ private List maintainStatusArray;
+
+ public OsdDroneMaintainStatus() {
+ }
+
+ @Override
+ public String toString() {
+ return "OsdDroneMaintainStatus{" +
+ "maintainStatusArray=" + maintainStatusArray +
+ '}';
+ }
+
+ public List getMaintainStatusArray() {
+ return maintainStatusArray;
+ }
+
+ public OsdDroneMaintainStatus setMaintainStatusArray(List maintainStatusArray) {
+ this.maintainStatusArray = maintainStatusArray;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdRcDrone.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdRcDrone.java
new file mode 100644
index 0000000..a358ff9
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdRcDrone.java
@@ -0,0 +1,311 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.util.List;
+
+/**
+ * @author sean.zhou
+ * @version 0.1
+ * @date 2021/11/23
+ */
+public class OsdRcDrone {
+
+ private Float attitudeHead;
+
+ private Double attitudePitch;
+
+ private Double attitudeRoll;
+
+ private Float elevation;
+
+ private DroneBattery battery;
+
+ private String firmwareVersion;
+
+ private GearEnum gear;
+
+ private Float height;
+
+ private Float homeDistance;
+
+ private Float horizontalSpeed;
+
+ private Float latitude;
+
+ private Float longitude;
+
+ private DroneModeCodeEnum modeCode;
+
+ private Double totalFlightDistance;
+
+ private Float totalFlightTime;
+
+ private Float verticalSpeed;
+
+ private WindDirectionEnum windDirection;
+
+ private Float windSpeed;
+
+ private DronePositionState positionState;
+
+ @JsonProperty(PayloadModelConst.PAYLOAD_KEY)
+ private List payloads;
+
+ private Storage storage;
+
+ private Integer heightLimit;
+
+ private RcDistanceLimitStatus distanceLimitStatus;
+
+ private String trackId;
+
+ public OsdRcDrone() {
+ }
+
+ @Override
+ public String toString() {
+ return "OsdRcDrone{" +
+ "attitudeHead=" + attitudeHead +
+ ", attitudePitch=" + attitudePitch +
+ ", attitudeRoll=" + attitudeRoll +
+ ", elevation=" + elevation +
+ ", battery=" + battery +
+ ", firmwareVersion='" + firmwareVersion + '\'' +
+ ", gear=" + gear +
+ ", height=" + height +
+ ", homeDistance=" + homeDistance +
+ ", horizontalSpeed=" + horizontalSpeed +
+ ", latitude=" + latitude +
+ ", longitude=" + longitude +
+ ", modeCode=" + modeCode +
+ ", totalFlightDistance=" + totalFlightDistance +
+ ", totalFlightTime=" + totalFlightTime +
+ ", verticalSpeed=" + verticalSpeed +
+ ", windDirection=" + windDirection +
+ ", windSpeed=" + windSpeed +
+ ", positionState=" + positionState +
+ ", payloads=" + payloads +
+ ", storage=" + storage +
+ ", heightLimit=" + heightLimit +
+ ", distanceLimitStatus=" + distanceLimitStatus +
+ ", trackId='" + trackId + '\'' +
+ '}';
+ }
+
+ public Float getAttitudeHead() {
+ return attitudeHead;
+ }
+
+ public OsdRcDrone setAttitudeHead(Float attitudeHead) {
+ this.attitudeHead = attitudeHead;
+ return this;
+ }
+
+ public Double getAttitudePitch() {
+ return attitudePitch;
+ }
+
+ public OsdRcDrone setAttitudePitch(Double attitudePitch) {
+ this.attitudePitch = attitudePitch;
+ return this;
+ }
+
+ public Double getAttitudeRoll() {
+ return attitudeRoll;
+ }
+
+ public OsdRcDrone setAttitudeRoll(Double attitudeRoll) {
+ this.attitudeRoll = attitudeRoll;
+ return this;
+ }
+
+ public Float getElevation() {
+ return elevation;
+ }
+
+ public OsdRcDrone setElevation(Float elevation) {
+ this.elevation = elevation;
+ return this;
+ }
+
+ public DroneBattery getBattery() {
+ return battery;
+ }
+
+ public OsdRcDrone setBattery(DroneBattery battery) {
+ this.battery = battery;
+ return this;
+ }
+
+ public String getFirmwareVersion() {
+ return firmwareVersion;
+ }
+
+ public OsdRcDrone setFirmwareVersion(String firmwareVersion) {
+ this.firmwareVersion = firmwareVersion;
+ return this;
+ }
+
+ public GearEnum getGear() {
+ return gear;
+ }
+
+ public OsdRcDrone setGear(GearEnum gear) {
+ this.gear = gear;
+ return this;
+ }
+
+ public Float getHeight() {
+ return height;
+ }
+
+ public OsdRcDrone setHeight(Float height) {
+ this.height = height;
+ return this;
+ }
+
+ public Float getHomeDistance() {
+ return homeDistance;
+ }
+
+ public OsdRcDrone setHomeDistance(Float homeDistance) {
+ this.homeDistance = homeDistance;
+ return this;
+ }
+
+ public Float getHorizontalSpeed() {
+ return horizontalSpeed;
+ }
+
+ public OsdRcDrone setHorizontalSpeed(Float horizontalSpeed) {
+ this.horizontalSpeed = horizontalSpeed;
+ return this;
+ }
+
+ public Float getLatitude() {
+ return latitude;
+ }
+
+ public OsdRcDrone setLatitude(Float latitude) {
+ this.latitude = latitude;
+ return this;
+ }
+
+ public Float getLongitude() {
+ return longitude;
+ }
+
+ public OsdRcDrone setLongitude(Float longitude) {
+ this.longitude = longitude;
+ return this;
+ }
+
+ public DroneModeCodeEnum getModeCode() {
+ return modeCode;
+ }
+
+ public OsdRcDrone setModeCode(DroneModeCodeEnum modeCode) {
+ this.modeCode = modeCode;
+ return this;
+ }
+
+ public Double getTotalFlightDistance() {
+ return totalFlightDistance;
+ }
+
+ public OsdRcDrone setTotalFlightDistance(Double totalFlightDistance) {
+ this.totalFlightDistance = totalFlightDistance;
+ return this;
+ }
+
+ public Float getTotalFlightTime() {
+ return totalFlightTime;
+ }
+
+ public OsdRcDrone setTotalFlightTime(Float totalFlightTime) {
+ this.totalFlightTime = totalFlightTime;
+ return this;
+ }
+
+ public Float getVerticalSpeed() {
+ return verticalSpeed;
+ }
+
+ public OsdRcDrone setVerticalSpeed(Float verticalSpeed) {
+ this.verticalSpeed = verticalSpeed;
+ return this;
+ }
+
+ public WindDirectionEnum getWindDirection() {
+ return windDirection;
+ }
+
+ public OsdRcDrone setWindDirection(WindDirectionEnum windDirection) {
+ this.windDirection = windDirection;
+ return this;
+ }
+
+ public Float getWindSpeed() {
+ return windSpeed;
+ }
+
+ public OsdRcDrone setWindSpeed(Float windSpeed) {
+ this.windSpeed = windSpeed;
+ return this;
+ }
+
+ public DronePositionState getPositionState() {
+ return positionState;
+ }
+
+ public OsdRcDrone setPositionState(DronePositionState positionState) {
+ this.positionState = positionState;
+ return this;
+ }
+
+ public List getPayloads() {
+ return payloads;
+ }
+
+ public OsdRcDrone setPayloads(List payloads) {
+ this.payloads = payloads;
+ return this;
+ }
+
+ public Storage getStorage() {
+ return storage;
+ }
+
+ public OsdRcDrone setStorage(Storage storage) {
+ this.storage = storage;
+ return this;
+ }
+
+ public Integer getHeightLimit() {
+ return heightLimit;
+ }
+
+ public OsdRcDrone setHeightLimit(Integer heightLimit) {
+ this.heightLimit = heightLimit;
+ return this;
+ }
+
+ public RcDistanceLimitStatus getDistanceLimitStatus() {
+ return distanceLimitStatus;
+ }
+
+ public OsdRcDrone setDistanceLimitStatus(RcDistanceLimitStatus distanceLimitStatus) {
+ this.distanceLimitStatus = distanceLimitStatus;
+ return this;
+ }
+
+ public String getTrackId() {
+ return trackId;
+ }
+
+ public OsdRcDrone setTrackId(String trackId) {
+ this.trackId = trackId;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdRemoteControl.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdRemoteControl.java
new file mode 100644
index 0000000..5fe950e
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/OsdRemoteControl.java
@@ -0,0 +1,78 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean.zhou
+ * @version 0.1
+ * @date 2021/11/23
+ */
+public class OsdRemoteControl {
+
+ private Float latitude;
+
+ private Float longitude;
+
+ private Float height;
+
+ private Integer capacityPercent;
+
+ private WirelessLink wirelessLink;
+
+ public OsdRemoteControl() {
+ }
+
+ @Override
+ public String toString() {
+ return "OsdRemoteControl{" +
+ "latitude=" + latitude +
+ ", longitude=" + longitude +
+ ", height=" + height +
+ ", capacityPercent=" + capacityPercent +
+ ", wirelessLink=" + wirelessLink +
+ '}';
+ }
+
+ public Float getLatitude() {
+ return latitude;
+ }
+
+ public OsdRemoteControl setLatitude(Float latitude) {
+ this.latitude = latitude;
+ return this;
+ }
+
+ public Float getLongitude() {
+ return longitude;
+ }
+
+ public OsdRemoteControl setLongitude(Float longitude) {
+ this.longitude = longitude;
+ return this;
+ }
+
+ public Float getHeight() {
+ return height;
+ }
+
+ public OsdRemoteControl setHeight(Float height) {
+ this.height = height;
+ return this;
+ }
+
+ public Integer getCapacityPercent() {
+ return capacityPercent;
+ }
+
+ public OsdRemoteControl setCapacityPercent(Integer capacityPercent) {
+ this.capacityPercent = capacityPercent;
+ return this;
+ }
+
+ public WirelessLink getWirelessLink() {
+ return wirelessLink;
+ }
+
+ public OsdRemoteControl setWirelessLink(WirelessLink wirelessLink) {
+ this.wirelessLink = wirelessLink;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PayloadFirmwareVersion.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PayloadFirmwareVersion.java
new file mode 100644
index 0000000..ab15bee
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PayloadFirmwareVersion.java
@@ -0,0 +1,53 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+
+import java.util.Map;
+
+/**
+ * @author sean
+ * @version 1.0
+ * @date 2022/4/28
+ */
+public class PayloadFirmwareVersion {
+
+ private PayloadPositionEnum position;
+
+ private String firmwareVersion;
+
+ public PayloadFirmwareVersion() {
+ }
+
+ @JsonCreator
+ public PayloadFirmwareVersion(Map map) {
+ Map.Entry entry = (Map.Entry) map.entrySet().toArray()[0];
+ this.position = PayloadPositionEnum.find(Integer.parseInt(entry.getKey().split("-")[1]));
+ this.firmwareVersion = ((Map) entry.getValue()).values().toArray(String[]::new)[0];
+ }
+
+ @Override
+ public String toString() {
+ return "PayloadFirmwareVersion{" +
+ "position=" + position +
+ ", firmwareVersion='" + firmwareVersion + '\'' +
+ '}';
+ }
+
+ public PayloadPositionEnum getPosition() {
+ return position;
+ }
+
+ public PayloadFirmwareVersion setPosition(PayloadPositionEnum position) {
+ this.position = position;
+ return this;
+ }
+
+ public String getFirmwareVersion() {
+ return firmwareVersion;
+ }
+
+ public PayloadFirmwareVersion setFirmwareVersion(String firmwareVersion) {
+ this.firmwareVersion = firmwareVersion;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PayloadIndex.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PayloadIndex.java
new file mode 100644
index 0000000..16154aa
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PayloadIndex.java
@@ -0,0 +1,75 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKErrorEnum;
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import jakarta.validation.constraints.NotNull;
+
+import java.util.Arrays;
+import java.util.Objects;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/29
+ */
+public class PayloadIndex {
+
+ @NotNull
+ private DeviceTypeEnum type;
+
+ @NotNull
+ private DeviceSubTypeEnum subType;
+
+ @NotNull
+ private PayloadPositionEnum position;
+
+ public PayloadIndex() {
+ }
+
+ @JsonCreator
+ public PayloadIndex(String payloadIndex) {
+ Objects.requireNonNull(payloadIndex);
+ int[] payloadIndexArr = Arrays.stream(payloadIndex.split("-")).mapToInt(Integer::parseInt).toArray();
+ if (payloadIndexArr.length != 3) {
+ throw new CloudSDKException(CloudSDKErrorEnum.INVALID_PARAMETER);
+ }
+ this.type = DeviceTypeEnum.find(payloadIndexArr[0]);
+ this.subType = DeviceSubTypeEnum.find(payloadIndexArr[1]);
+ this.position = PayloadPositionEnum.find(payloadIndexArr[2]);
+ }
+
+ @Override
+ @JsonValue
+ public String toString() {
+ return String.format("%s-%s-%s", type.getType(), subType.getSubType(), position.getPosition());
+ }
+
+ public DeviceTypeEnum getType() {
+ return type;
+ }
+
+ public PayloadIndex setType(DeviceTypeEnum type) {
+ this.type = type;
+ return this;
+ }
+
+ public DeviceSubTypeEnum getSubType() {
+ return subType;
+ }
+
+ public PayloadIndex setSubType(DeviceSubTypeEnum subType) {
+ this.subType = subType;
+ return this;
+ }
+
+ public PayloadPositionEnum getPosition() {
+ return position;
+ }
+
+ public PayloadIndex setPosition(PayloadPositionEnum position) {
+ this.position = position;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PayloadModelConst.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PayloadModelConst.java
new file mode 100644
index 0000000..69d3be6
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PayloadModelConst.java
@@ -0,0 +1,35 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @author sean
+ * @version 1.0
+ * @date 2022/4/29
+ */
+public class PayloadModelConst {
+
+ private PayloadModelConst() {
+ }
+
+ public static final String PAYLOAD_KEY = "payload";
+
+ public static Set getAllModelWithPosition() {
+ Set position = Arrays.stream(PayloadPositionEnum.values()).map(PayloadPositionEnum::getPosition)
+ .map(String::valueOf).collect(Collectors.toSet());
+ return Arrays.stream(DeviceEnum.values()).filter(device -> DeviceDomainEnum.PAYLOAD == device.getDomain())
+ .map(Enum::name).map(name -> name.replace("_CAMERA", ""))
+ .flatMap(m -> position.stream().map(p -> m.concat("-").concat(p))).collect(Collectors.toSet());
+ }
+
+ public static Set getAllIndexWithPosition() {
+ Set position = Arrays.stream(PayloadPositionEnum.values()).map(PayloadPositionEnum::getPosition)
+ .map(String::valueOf).collect(Collectors.toSet());
+ return Arrays.stream(DeviceEnum.values()).filter(device -> DeviceDomainEnum.PAYLOAD == device.getDomain())
+ .map(device -> String.format("%d-%d", device.getType().getType(), device.getSubType().getSubType()))
+ .flatMap(m -> position.stream().map(p -> m.concat("-").concat(p))).collect(Collectors.toSet());
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PayloadPositionEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PayloadPositionEnum.java
new file mode 100644
index 0000000..14cd95e
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PayloadPositionEnum.java
@@ -0,0 +1,40 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/25
+ */
+public enum PayloadPositionEnum {
+
+ FRONT_LEFT(0),
+
+ FRONT_RIGHT(1),
+
+ TOP(2),
+
+ FPV(7);
+
+ private final int position;
+
+ PayloadPositionEnum(int position) {
+ this.position = position;
+ }
+
+ @JsonValue
+ public int getPosition() {
+ return position;
+ }
+
+ @JsonCreator
+ public static PayloadPositionEnum find(int position) {
+ return Arrays.stream(values()).filter(positionEnum -> positionEnum.position == position).findAny()
+ .orElseThrow(() -> new CloudSDKException(PayloadPositionEnum.class, position));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PositionFixedEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PositionFixedEnum.java
new file mode 100644
index 0000000..471e103
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PositionFixedEnum.java
@@ -0,0 +1,42 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum PositionFixedEnum {
+
+ NOT_START(0),
+
+ FIXING(1),
+
+ SUCCESSFUL(2),
+
+ FAILED(3),
+ ;
+
+ private final int fixed;
+
+ PositionFixedEnum(int fixed) {
+ this.fixed = fixed;
+ }
+
+ @JsonValue
+ public int getFixed() {
+ return fixed;
+ }
+
+ @JsonCreator
+ public static PositionFixedEnum find(int fixed) {
+ return Arrays.stream(values()).filter(fixedEnum -> fixedEnum.fixed == fixed).findAny()
+ .orElseThrow(() -> new CloudSDKException(PositionFixedEnum.class, fixed));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PutterStateEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PutterStateEnum.java
new file mode 100644
index 0000000..b82926f
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/PutterStateEnum.java
@@ -0,0 +1,42 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum PutterStateEnum {
+
+ CLOSED(0),
+
+ OPENED(1),
+
+ HALF_OPEN(2),
+
+ ABNORMAL(3),
+ ;
+
+ private final int state;
+
+ PutterStateEnum(int state) {
+ this.state = state;
+ }
+
+ @JsonValue
+ public int getState() {
+ return state;
+ }
+
+ @JsonCreator
+ public static PutterStateEnum find(int state) {
+ return Arrays.stream(values()).filter(stateEnum -> stateEnum.state == state).findAny()
+ .orElseThrow(() -> new CloudSDKException(PutterStateEnum.class, state));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RainfallEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RainfallEnum.java
new file mode 100644
index 0000000..c97c596
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RainfallEnum.java
@@ -0,0 +1,42 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum RainfallEnum {
+
+ NO(0),
+
+ LIGHT(1),
+
+ MODERATE(2),
+
+ HEAVY(3),
+ ;
+
+ private final int rain;
+
+ RainfallEnum(int rain) {
+ this.rain = rain;
+ }
+
+ @JsonValue
+ public int getRain() {
+ return rain;
+ }
+
+ @JsonCreator
+ public static RainfallEnum find(int rain) {
+ return Arrays.stream(values()).filter(rainEnum -> rainEnum.rain == rain).findAny()
+ .orElseThrow(() -> new CloudSDKException(RainfallEnum.class, rain));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcDistanceLimitStatus.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcDistanceLimitStatus.java
new file mode 100644
index 0000000..e794ae6
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcDistanceLimitStatus.java
@@ -0,0 +1,43 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * The state of the drone's limited distance
+ * @author sean
+ * @version 1.3
+ * @date 2022/10/27
+ */
+public class RcDistanceLimitStatus {
+
+ private Integer state;
+
+ private Integer distanceLimit;
+
+ public RcDistanceLimitStatus() {
+ }
+
+ @Override
+ public String toString() {
+ return "RcDistanceLimitStatusSet{" +
+ "state=" + state +
+ ", distanceLimit=" + distanceLimit +
+ '}';
+ }
+
+ public Integer getState() {
+ return state;
+ }
+
+ public RcDistanceLimitStatus setState(Integer state) {
+ this.state = state;
+ return this;
+ }
+
+ public Integer getDistanceLimit() {
+ return distanceLimit;
+ }
+
+ public RcDistanceLimitStatus setDistanceLimit(Integer distanceLimit) {
+ this.distanceLimit = distanceLimit;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcDroneControlSource.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcDroneControlSource.java
new file mode 100644
index 0000000..8c5490d
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcDroneControlSource.java
@@ -0,0 +1,92 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.List;
+
+/**
+ * @author sean.zhou
+ * @date 2021/11/18
+ * @version 0.1
+ */
+public class RcDroneControlSource {
+
+ private ControlSourceEnum controlSource;
+
+ private Float homeLatitude;
+
+ private Float homeLongitude;
+
+ private Integer lowBatteryWarningThreshold;
+
+ private Integer seriousLowBatteryWarningThreshold;
+
+ private List payloads;
+
+ public RcDroneControlSource() {
+ }
+
+ @Override
+ public String toString() {
+ return "RcDroneControlSource{" +
+ "controlSource=" + controlSource +
+ ", homeLatitude=" + homeLatitude +
+ ", homeLongitude=" + homeLongitude +
+ ", lowBatteryWarningThreshold=" + lowBatteryWarningThreshold +
+ ", seriousLowBatteryWarningThreshold=" + seriousLowBatteryWarningThreshold +
+ ", payloads=" + payloads +
+ '}';
+ }
+
+ public ControlSourceEnum getControlSource() {
+ return controlSource;
+ }
+
+ public RcDroneControlSource setControlSource(ControlSourceEnum controlSource) {
+ this.controlSource = controlSource;
+ return this;
+ }
+
+ public Float getHomeLatitude() {
+ return homeLatitude;
+ }
+
+ public RcDroneControlSource setHomeLatitude(Float homeLatitude) {
+ this.homeLatitude = homeLatitude;
+ return this;
+ }
+
+ public Float getHomeLongitude() {
+ return homeLongitude;
+ }
+
+ public RcDroneControlSource setHomeLongitude(Float homeLongitude) {
+ this.homeLongitude = homeLongitude;
+ return this;
+ }
+
+ public Integer getLowBatteryWarningThreshold() {
+ return lowBatteryWarningThreshold;
+ }
+
+ public RcDroneControlSource setLowBatteryWarningThreshold(Integer lowBatteryWarningThreshold) {
+ this.lowBatteryWarningThreshold = lowBatteryWarningThreshold;
+ return this;
+ }
+
+ public Integer getSeriousLowBatteryWarningThreshold() {
+ return seriousLowBatteryWarningThreshold;
+ }
+
+ public RcDroneControlSource setSeriousLowBatteryWarningThreshold(Integer seriousLowBatteryWarningThreshold) {
+ this.seriousLowBatteryWarningThreshold = seriousLowBatteryWarningThreshold;
+ return this;
+ }
+
+ public List getPayloads() {
+ return payloads;
+ }
+
+ public RcDroneControlSource setPayloads(List payloads) {
+ this.payloads = payloads;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcDronePayload.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcDronePayload.java
new file mode 100644
index 0000000..ed0db2b
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcDronePayload.java
@@ -0,0 +1,140 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.0
+ * @date 2022/5/6
+ */
+public class RcDronePayload {
+
+ private PayloadIndex payloadIndex;
+
+ private Float gimbalPitch;
+
+ private Float gimbalRoll;
+
+ private Float gimbalYaw;
+
+ private Float measureTargetAltitude;
+
+ private Float measureTargetDistance;
+
+ private Float measureTargetLatitude;
+
+ private Float measureTargetLongitude;
+
+ private MeasureTargetStateEnum measureTargetErrorState;
+
+ private List smartTrackPoint;
+
+ public RcDronePayload() {
+ }
+
+ @Override
+ public String toString() {
+ return "RcDronePayload{" +
+ "payloadIndex=" + payloadIndex +
+ ", gimbalPitch=" + gimbalPitch +
+ ", gimbalRoll=" + gimbalRoll +
+ ", gimbalYaw=" + gimbalYaw +
+ ", measureTargetAltitude=" + measureTargetAltitude +
+ ", measureTargetDistance=" + measureTargetDistance +
+ ", measureTargetLatitude=" + measureTargetLatitude +
+ ", measureTargetLongitude=" + measureTargetLongitude +
+ ", measureTargetErrorState=" + measureTargetErrorState +
+ ", smartTrackPoint=" + smartTrackPoint +
+ '}';
+ }
+
+ public PayloadIndex getPayloadIndex() {
+ return payloadIndex;
+ }
+
+ public RcDronePayload setPayloadIndex(PayloadIndex payloadIndex) {
+ this.payloadIndex = payloadIndex;
+ return this;
+ }
+
+ public Float getGimbalPitch() {
+ return gimbalPitch;
+ }
+
+ public RcDronePayload setGimbalPitch(Float gimbalPitch) {
+ this.gimbalPitch = gimbalPitch;
+ return this;
+ }
+
+ public Float getGimbalRoll() {
+ return gimbalRoll;
+ }
+
+ public RcDronePayload setGimbalRoll(Float gimbalRoll) {
+ this.gimbalRoll = gimbalRoll;
+ return this;
+ }
+
+ public Float getGimbalYaw() {
+ return gimbalYaw;
+ }
+
+ public RcDronePayload setGimbalYaw(Float gimbalYaw) {
+ this.gimbalYaw = gimbalYaw;
+ return this;
+ }
+
+ public Float getMeasureTargetAltitude() {
+ return measureTargetAltitude;
+ }
+
+ public RcDronePayload setMeasureTargetAltitude(Float measureTargetAltitude) {
+ this.measureTargetAltitude = measureTargetAltitude;
+ return this;
+ }
+
+ public Float getMeasureTargetDistance() {
+ return measureTargetDistance;
+ }
+
+ public RcDronePayload setMeasureTargetDistance(Float measureTargetDistance) {
+ this.measureTargetDistance = measureTargetDistance;
+ return this;
+ }
+
+ public Float getMeasureTargetLatitude() {
+ return measureTargetLatitude;
+ }
+
+ public RcDronePayload setMeasureTargetLatitude(Float measureTargetLatitude) {
+ this.measureTargetLatitude = measureTargetLatitude;
+ return this;
+ }
+
+ public Float getMeasureTargetLongitude() {
+ return measureTargetLongitude;
+ }
+
+ public RcDronePayload setMeasureTargetLongitude(Float measureTargetLongitude) {
+ this.measureTargetLongitude = measureTargetLongitude;
+ return this;
+ }
+
+ public MeasureTargetStateEnum getMeasureTargetErrorState() {
+ return measureTargetErrorState;
+ }
+
+ public RcDronePayload setMeasureTargetErrorState(MeasureTargetStateEnum measureTargetErrorState) {
+ this.measureTargetErrorState = measureTargetErrorState;
+ return this;
+ }
+
+ public List getSmartTrackPoint() {
+ return smartTrackPoint;
+ }
+
+ public RcDronePayload setSmartTrackPoint(List smartTrackPoint) {
+ this.smartTrackPoint = smartTrackPoint;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcLiveStatus.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcLiveStatus.java
new file mode 100644
index 0000000..e39324d
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcLiveStatus.java
@@ -0,0 +1,32 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import java.util.List;
+
+/**
+ * @author sean.zhou
+ * @version 0.1
+ * @date 2021/11/23
+ */
+public class RcLiveStatus {
+
+ private List liveStatus;
+
+ public RcLiveStatus() {
+ }
+
+ @Override
+ public String toString() {
+ return "RcLiveStatus{" +
+ "liveStatus=" + liveStatus +
+ '}';
+ }
+
+ public List getLiveStatus() {
+ return liveStatus;
+ }
+
+ public RcLiveStatus setLiveStatus(List liveStatus) {
+ this.liveStatus = liveStatus;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcLiveStatusData.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcLiveStatusData.java
new file mode 100644
index 0000000..336a2ee
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcLiveStatusData.java
@@ -0,0 +1,56 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.cloudapi.livestream.VideoQualityEnum;
+
+/**
+ * @author sean.zhou
+ * @version 0.1
+ * @date 2021/11/23
+ */
+public class RcLiveStatusData {
+
+ private Boolean status;
+
+ private VideoId videoId;
+
+ private VideoQualityEnum videoQuality;
+
+ public RcLiveStatusData() {
+ }
+
+ @Override
+ public String toString() {
+ return "RcLiveStatusData{" +
+ "status=" + status +
+ ", videoId=" + videoId +
+ ", videoQuality=" + videoQuality +
+ '}';
+ }
+
+ public Boolean getStatus() {
+ return status;
+ }
+
+ public RcLiveStatusData setStatus(Boolean status) {
+ this.status = status;
+ return this;
+ }
+
+ public VideoId getVideoId() {
+ return videoId;
+ }
+
+ public RcLiveStatusData setVideoId(VideoId videoId) {
+ this.videoId = videoId;
+ return this;
+ }
+
+ public VideoQualityEnum getVideoQuality() {
+ return videoQuality;
+ }
+
+ public RcLiveStatusData setVideoQuality(VideoQualityEnum videoQuality) {
+ this.videoQuality = videoQuality;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcLostActionEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcLostActionEnum.java
new file mode 100644
index 0000000..11095a5
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcLostActionEnum.java
@@ -0,0 +1,38 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2023/3/1
+ */
+public enum RcLostActionEnum {
+
+ HOVER(0),
+
+ LAND(1),
+
+ RETURN_HOME(2);
+
+ private final int action;
+
+ RcLostActionEnum(int action) {
+ this.action = action;
+ }
+
+ @JsonValue
+ public int getAction() {
+ return action;
+ }
+
+ @JsonCreator
+ public static RcLostActionEnum find(int action) {
+ return Arrays.stream(values()).filter(actionEnum -> actionEnum.ordinal() == action).findAny()
+ .orElseThrow(() -> new CloudSDKException(RcLostActionEnum.class, action));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcPayloadControlSource.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcPayloadControlSource.java
new file mode 100644
index 0000000..0a9ff5e
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/RcPayloadControlSource.java
@@ -0,0 +1,66 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean.zhou
+ * @date 2021/11/18
+ * @version 0.1
+ */
+public class RcPayloadControlSource {
+
+ private ControlSourceEnum controlSource;
+
+ private PayloadIndex payloadIndex;
+
+ private String sn;
+
+ private String firmwareVersion;
+
+ public RcPayloadControlSource() {
+ }
+
+ @Override
+ public String toString() {
+ return "RcPayloadControlSource{" +
+ "controlSource=" + controlSource +
+ ", payloadIndex=" + payloadIndex +
+ ", sn='" + sn + '\'' +
+ ", firmwareVersion='" + firmwareVersion + '\'' +
+ '}';
+ }
+
+ public ControlSourceEnum getControlSource() {
+ return controlSource;
+ }
+
+ public RcPayloadControlSource setControlSource(ControlSourceEnum controlSource) {
+ this.controlSource = controlSource;
+ return this;
+ }
+
+ public PayloadIndex getPayloadIndex() {
+ return payloadIndex;
+ }
+
+ public RcPayloadControlSource setPayloadIndex(PayloadIndex payloadIndex) {
+ this.payloadIndex = payloadIndex;
+ return this;
+ }
+
+ public String getSn() {
+ return sn;
+ }
+
+ public RcPayloadControlSource setSn(String sn) {
+ this.sn = sn;
+ return this;
+ }
+
+ public String getFirmwareVersion() {
+ return firmwareVersion;
+ }
+
+ public RcPayloadControlSource setFirmwareVersion(String firmwareVersion) {
+ this.firmwareVersion = firmwareVersion;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ShutterSpeedEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ShutterSpeedEnum.java
new file mode 100644
index 0000000..7df8ff2
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ShutterSpeedEnum.java
@@ -0,0 +1,169 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/12/12
+ */
+public enum ShutterSpeedEnum {
+
+ /**
+ * 1/8000 s
+ */
+ _1_8000TH_S(0),
+
+ _1_6400TH_S(1),
+
+ _1_6000TH_S(2),
+
+ _1_5000TH_S(3),
+
+ _1_4000TH_S(4),
+
+ _1_3200TH_S(5),
+
+ _1_3000TH_S(6),
+
+ _1_2500TH_S(7),
+
+ _1_2000TH_S(8),
+
+ _1_1600TH_S(9),
+
+ _1_1500TH_S(10),
+
+ _1_1250TH_S(11),
+
+ _1_1000TH_S(12),
+
+ _1_800TH_S(13),
+
+ _1_725TH_S(14),
+
+ _1_640TH_S(15),
+
+ _1_500TH_S(16),
+
+ _1_400TH_S(17),
+
+ _1_350TH_S(18),
+
+ _1_320TH_S(19),
+
+ _1_250TH_S(20),
+
+ _1_240TH_S(21),
+
+ _1_200TH_S(22),
+
+ _1_180TH_S(23),
+
+ _1_160TH_S(24),
+
+ _1_125TH_S(25),
+
+ _1_120TH_S(26),
+
+ _1_100TH_S(27),
+
+ _1_90TH_S(28),
+
+ _1_80TH_S(29),
+
+ _1_60TH_S(30),
+
+ _1_50TH_S(31),
+
+ _1_40TH_S(32),
+
+ _1_30TH_S(33),
+
+ _1_25TH_S(34),
+
+ _1_20TH_S(35),
+
+ _1_15TH_S(36),
+
+ _2_25THS_S(37),
+
+ _1_10TH_S(38),
+
+ _1_8TH_S(39),
+
+ _4_25THS_S(40),
+
+ _1_5TH_S(41),
+
+ _1_4TH_S(42),
+
+ _1_3TH_S(43),
+
+ _2_5THS_S(44),
+
+ _1_2TH_S(45),
+
+ /**
+ * 3/5 s
+ */
+ _3_5THS_S(46),
+
+ _4_5TH_S(47),
+
+ /**
+ * 1 s
+ */
+ _1S(48),
+
+ /**
+ * 1.3 s
+ */
+ _1_DOT_3S(49),
+
+ _1_DOT_6_S(50),
+
+ _2_S(51),
+
+ _2_DOT_5_S(52),
+
+ _3_DOT_S(53),
+
+ _3_DOT_2_S(54),
+
+ _4_DOT_S(55),
+
+ _5_DOT_S(56),
+
+ _6_DOT_S(57),
+
+ _7_DOT_S(58),
+
+ _8_DOT_S(59),
+
+ AUTO(65534),
+
+ ;
+
+ private final int speed;
+
+ ShutterSpeedEnum(int speed) {
+ this.speed = speed;
+ }
+
+ @JsonValue
+ public int getSpeed() {
+ return speed;
+ }
+
+ @JsonCreator
+ public static ShutterSpeedEnum find(int speed) {
+ return Arrays.stream(values()).filter(speedEnum -> speedEnum.speed == speed).findAny()
+ .orElseThrow(() -> new CloudSDKException(ShutterSpeedEnum.class, speed));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SimCardStateEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SimCardStateEnum.java
new file mode 100644
index 0000000..d7d4e35
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SimCardStateEnum.java
@@ -0,0 +1,39 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/20
+ */
+public enum SimCardStateEnum {
+
+ NO_CARD(0),
+
+ INSERTED(1),
+
+ ;
+
+ private final int state;
+
+ SimCardStateEnum(int state) {
+ this.state = state;
+ }
+
+ @JsonValue
+ public int getState() {
+ return state;
+ }
+
+ @JsonCreator
+ public static SimCardStateEnum find(int state) {
+ return Arrays.stream(values()).filter(stateEnum -> stateEnum.state == state).findAny()
+ .orElseThrow(() -> new CloudSDKException(SimCardStateEnum.class, state));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SimInfo.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SimInfo.java
new file mode 100644
index 0000000..bae7582
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SimInfo.java
@@ -0,0 +1,63 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/20
+ */
+public class SimInfo {
+
+ /**
+ * sim supported operators
+ */
+ private TelecomOperatorEnum telecomOperator;
+
+ /**
+ * Type of physical sim card
+ */
+ private SimTypeEnum simType;
+
+ /**
+ * The unique identification mark of the sim card can be used to purchase physical sim card packages.
+ */
+ private String iccid;
+
+ public SimInfo() {
+ }
+
+ @Override
+ public String toString() {
+ return "SimInfo{" +
+ "telecomOperator=" + telecomOperator +
+ ", simType=" + simType +
+ ", iccid='" + iccid + '\'' +
+ '}';
+ }
+
+ public TelecomOperatorEnum getTelecomOperator() {
+ return telecomOperator;
+ }
+
+ public SimInfo setTelecomOperator(TelecomOperatorEnum telecomOperator) {
+ this.telecomOperator = telecomOperator;
+ return this;
+ }
+
+ public SimTypeEnum getSimType() {
+ return simType;
+ }
+
+ public SimInfo setSimType(SimTypeEnum simType) {
+ this.simType = simType;
+ return this;
+ }
+
+ public String getIccid() {
+ return iccid;
+ }
+
+ public SimInfo setIccid(String iccid) {
+ this.iccid = iccid;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SimSlotEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SimSlotEnum.java
new file mode 100644
index 0000000..c0fcddb
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SimSlotEnum.java
@@ -0,0 +1,41 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/20
+ */
+public enum SimSlotEnum {
+
+ UNKNOWN(0),
+
+ SIM(1),
+
+ ESIM(2),
+
+ ;
+
+ private final int slot;
+
+ SimSlotEnum(int slot) {
+ this.slot = slot;
+ }
+
+ @JsonValue
+ public int getSlot() {
+ return slot;
+ }
+
+ @JsonCreator
+ public static SimSlotEnum find(int slot) {
+ return Arrays.stream(values()).filter(slotEnum -> slotEnum.slot == slot).findAny()
+ .orElseThrow(() -> new CloudSDKException(SimSlotEnum.class, slot));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SimTypeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SimTypeEnum.java
new file mode 100644
index 0000000..87ac825
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SimTypeEnum.java
@@ -0,0 +1,41 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/20
+ */
+public enum SimTypeEnum {
+
+ UNKNOWN(0),
+
+ ORDINARY(1),
+
+ THREE_NETWORK_MODES(2),
+
+ ;
+
+ private final int type;
+
+ SimTypeEnum(int type) {
+ this.type = type;
+ }
+
+ @JsonValue
+ public int getType() {
+ return type;
+ }
+
+ @JsonCreator
+ public static SimTypeEnum find(int type) {
+ return Arrays.stream(values()).filter(typeEnum -> typeEnum.type == type).findAny()
+ .orElseThrow(() -> new CloudSDKException(SimTypeEnum.class, type));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SmartTrackPoint.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SmartTrackPoint.java
new file mode 100644
index 0000000..8787de5
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SmartTrackPoint.java
@@ -0,0 +1,66 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public class SmartTrackPoint {
+
+ private TrackTargetModeEnum trackTargetMode;
+
+ private Float trackLatitude;
+
+ private Float trackLongitude;
+
+ private Float trackAltitude;
+
+ public SmartTrackPoint() {
+ }
+
+ @Override
+ public String toString() {
+ return "SmartTrackPoint{" +
+ "trackTargetMode=" + trackTargetMode +
+ ", trackLatitude=" + trackLatitude +
+ ", trackLongitude=" + trackLongitude +
+ ", trackAltitude=" + trackAltitude +
+ '}';
+ }
+
+ public TrackTargetModeEnum getTrackTargetMode() {
+ return trackTargetMode;
+ }
+
+ public SmartTrackPoint setTrackTargetMode(TrackTargetModeEnum trackTargetMode) {
+ this.trackTargetMode = trackTargetMode;
+ return this;
+ }
+
+ public Float getTrackLatitude() {
+ return trackLatitude;
+ }
+
+ public SmartTrackPoint setTrackLatitude(Float trackLatitude) {
+ this.trackLatitude = trackLatitude;
+ return this;
+ }
+
+ public Float getTrackLongitude() {
+ return trackLongitude;
+ }
+
+ public SmartTrackPoint setTrackLongitude(Float trackLongitude) {
+ this.trackLongitude = trackLongitude;
+ return this;
+ }
+
+ public Float getTrackAltitude() {
+ return trackAltitude;
+ }
+
+ public SmartTrackPoint setTrackAltitude(Float trackAltitude) {
+ this.trackAltitude = trackAltitude;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/Storage.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/Storage.java
new file mode 100644
index 0000000..c68a6cd
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/Storage.java
@@ -0,0 +1,42 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.0
+ * @date 2022/5/11
+ */
+public class Storage {
+
+ private Long total;
+
+ private Long used;
+
+ public Storage() {
+ }
+
+ @Override
+ public String toString() {
+ return "Storage{" +
+ "total=" + total +
+ ", used=" + used +
+ '}';
+ }
+
+ public Long getTotal() {
+ return total;
+ }
+
+ public Storage setTotal(Long total) {
+ this.total = total;
+ return this;
+ }
+
+ public Long getUsed() {
+ return used;
+ }
+
+ public Storage setUsed(Long used) {
+ this.used = used;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SwitchActionEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SwitchActionEnum.java
new file mode 100644
index 0000000..3b57d1e
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/SwitchActionEnum.java
@@ -0,0 +1,36 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.3
+ * @date 2022/10/28
+ */
+public enum SwitchActionEnum {
+
+ DISABLE(0),
+
+ ENABLE(1);
+
+ private final int action;
+
+ SwitchActionEnum(int action) {
+ this.action = action;
+ }
+
+ @JsonValue
+ public int getAction() {
+ return action;
+ }
+
+ @JsonCreator
+ public static SwitchActionEnum find(int action) {
+ return Arrays.stream(values()).filter(actionEnum -> actionEnum.action == action).findAny()
+ .orElseThrow(() -> new CloudSDKException(SwitchActionEnum.class, action));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/TelecomOperatorEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/TelecomOperatorEnum.java
new file mode 100644
index 0000000..dbb1b05
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/TelecomOperatorEnum.java
@@ -0,0 +1,43 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/20
+ */
+public enum TelecomOperatorEnum {
+
+ UNKNOWN(0),
+
+ CHINA_MOBILE(1),
+
+ CHINA_UNICOM(2),
+
+ CHINA_TELECOM(3),
+
+ ;
+
+ private final int operator;
+
+ TelecomOperatorEnum(int operator) {
+ this.operator = operator;
+ }
+
+ @JsonValue
+ public int getOperator() {
+ return operator;
+ }
+
+ @JsonCreator
+ public static TelecomOperatorEnum find(int operator) {
+ return Arrays.stream(values()).filter(operatorEnum -> operatorEnum.operator == operator).findAny()
+ .orElseThrow(() -> new CloudSDKException(TelecomOperatorEnum.class, operator));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ThermalGainModeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ThermalGainModeEnum.java
new file mode 100644
index 0000000..3ce1d28
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ThermalGainModeEnum.java
@@ -0,0 +1,40 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum ThermalGainModeEnum {
+
+ AUTOMATIC(0),
+
+ LOW(1),
+
+ HIGH(2),
+ ;
+
+ private final int mode;
+
+ ThermalGainModeEnum(int mode) {
+ this.mode = mode;
+ }
+
+ @JsonValue
+ public int getMode() {
+ return mode;
+ }
+
+ @JsonCreator
+ public static ThermalGainModeEnum find(int mode) {
+ return Arrays.stream(values()).filter(modeEnum -> modeEnum.mode == mode).findAny()
+ .orElseThrow(() -> new CloudSDKException(ThermalGainModeEnum.class, mode));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ThermalPaletteStyleEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ThermalPaletteStyleEnum.java
new file mode 100644
index 0000000..c7a5144
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/ThermalPaletteStyleEnum.java
@@ -0,0 +1,72 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum ThermalPaletteStyleEnum {
+
+ WHITE_HOT(0),
+
+ BLACK_HOT(1),
+
+ RED_HOT(2),
+
+ GREEN_HOT(3),
+
+ FUSION(4),
+
+ RAINBOW(5),
+
+ IRONBOW1(6),
+
+ IRONBOW2(7),
+
+ ICE_FIRE(8),
+
+ SEPIA(9),
+
+ GLOWBOW(10),
+
+ COLOR1(11),
+
+ COLOR2(12),
+
+ RAIN(13),
+
+ HOT_SPOT(14),
+
+ RAINBOW2(15),
+
+ GRAY(16),
+
+ METAL(17),
+
+ COLD_SPOT(18),
+ ;
+
+ private final int style;
+
+ ThermalPaletteStyleEnum(int style) {
+ this.style = style;
+ }
+
+ @JsonValue
+ public int getStyle() {
+ return style;
+ }
+
+ @JsonCreator
+ public static ThermalPaletteStyleEnum find(int style) {
+ return Arrays.stream(values()).filter(styleEnum -> styleEnum.style == style).findAny()
+ .orElseThrow(() -> new CloudSDKException(ThermalPaletteStyleEnum.class, style));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/TrackTargetModeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/TrackTargetModeEnum.java
new file mode 100644
index 0000000..b222b38
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/TrackTargetModeEnum.java
@@ -0,0 +1,39 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum TrackTargetModeEnum {
+
+ NORMAL(1),
+
+ LOW_CREDIBILITY(2),
+
+ PREDICTED(3),
+ ;
+ private final int mode;
+
+ TrackTargetModeEnum(int mode) {
+ this.mode = mode;
+ }
+
+ @JsonValue
+ public int getMode() {
+ return mode;
+ }
+
+ @JsonCreator
+ public static TrackTargetModeEnum find(int mode) {
+ return Arrays.stream(values()).filter(modeEnum -> modeEnum.mode == mode).findAny()
+ .orElseThrow(() -> new CloudSDKException(TrackTargetModeEnum.class, mode));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/UpdateTopo.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/UpdateTopo.java
new file mode 100644
index 0000000..87ea84d
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/UpdateTopo.java
@@ -0,0 +1,105 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/5/26
+ */
+public class UpdateTopo {
+
+ private DeviceDomainEnum domain;
+
+ private DeviceTypeEnum type;
+
+ private DeviceSubTypeEnum subType;
+
+ private String deviceSecret;
+
+ private String nonce;
+
+ private String thingVersion;
+
+ private List subDevices;
+
+ public UpdateTopo() {
+ }
+
+ @Override
+ public String toString() {
+ return "UpdateTopo{" +
+ "domain=" + domain +
+ ", type=" + type +
+ ", subType=" + subType +
+ ", deviceSecret='" + deviceSecret + '\'' +
+ ", nonce='" + nonce + '\'' +
+ ", thingVersion=" + thingVersion +
+ ", subDevices=" + subDevices +
+ '}';
+ }
+
+ public DeviceDomainEnum getDomain() {
+ return domain;
+ }
+
+ public UpdateTopo setDomain(DeviceDomainEnum domain) {
+ this.domain = domain;
+ return this;
+ }
+
+ public DeviceTypeEnum getType() {
+ return type;
+ }
+
+ public UpdateTopo setType(DeviceTypeEnum type) {
+ this.type = type;
+ return this;
+ }
+
+ public DeviceSubTypeEnum getSubType() {
+ return subType;
+ }
+
+ public UpdateTopo setSubType(DeviceSubTypeEnum subType) {
+ this.subType = subType;
+ return this;
+ }
+
+ public String getDeviceSecret() {
+ return deviceSecret;
+ }
+
+ public UpdateTopo setDeviceSecret(String deviceSecret) {
+ this.deviceSecret = deviceSecret;
+ return this;
+ }
+
+ public String getNonce() {
+ return nonce;
+ }
+
+ public UpdateTopo setNonce(String nonce) {
+ this.nonce = nonce;
+ return this;
+ }
+
+ public String getThingVersion() {
+ return thingVersion;
+ }
+
+ public UpdateTopo setThingVersion(String thingVersion) {
+ this.thingVersion = thingVersion;
+ return this;
+ }
+
+ public List getSubDevices() {
+ return subDevices;
+ }
+
+ public UpdateTopo setSubDevices(List subDevices) {
+ this.subDevices = subDevices;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/UpdateTopoSubDevice.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/UpdateTopoSubDevice.java
new file mode 100644
index 0000000..234d0a4
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/UpdateTopoSubDevice.java
@@ -0,0 +1,114 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/5/26
+ */
+public class UpdateTopoSubDevice {
+
+ private String sn;
+
+ private DeviceDomainEnum domain;
+
+ private DeviceTypeEnum type;
+
+ private DeviceSubTypeEnum subType;
+
+ private ControlSourceEnum index;
+
+ private String deviceSecret;
+
+ private String nonce;
+
+ private String thingVersion;
+
+ public UpdateTopoSubDevice() {
+ }
+
+ @Override
+ public String toString() {
+ return "UpdateTopoSubDevice{" +
+ "sn='" + sn + '\'' +
+ ", domain=" + domain +
+ ", type=" + type +
+ ", subType=" + subType +
+ ", index=" + index +
+ ", deviceSecret='" + deviceSecret + '\'' +
+ ", nonce='" + nonce + '\'' +
+ ", thingVersion=" + thingVersion +
+ '}';
+ }
+
+ public String getSn() {
+ return sn;
+ }
+
+ public UpdateTopoSubDevice setSn(String sn) {
+ this.sn = sn;
+ return this;
+ }
+
+ public DeviceDomainEnum getDomain() {
+ return domain;
+ }
+
+ public UpdateTopoSubDevice setDomain(DeviceDomainEnum domain) {
+ this.domain = domain;
+ return this;
+ }
+
+ public DeviceTypeEnum getType() {
+ return type;
+ }
+
+ public UpdateTopoSubDevice setType(DeviceTypeEnum type) {
+ this.type = type;
+ return this;
+ }
+
+ public DeviceSubTypeEnum getSubType() {
+ return subType;
+ }
+
+ public UpdateTopoSubDevice setSubType(DeviceSubTypeEnum subType) {
+ this.subType = subType;
+ return this;
+ }
+
+ public ControlSourceEnum getIndex() {
+ return index;
+ }
+
+ public UpdateTopoSubDevice setIndex(ControlSourceEnum index) {
+ this.index = index;
+ return this;
+ }
+
+ public String getDeviceSecret() {
+ return deviceSecret;
+ }
+
+ public UpdateTopoSubDevice setDeviceSecret(String deviceSecret) {
+ this.deviceSecret = deviceSecret;
+ return this;
+ }
+
+ public String getNonce() {
+ return nonce;
+ }
+
+ public UpdateTopoSubDevice setNonce(String nonce) {
+ this.nonce = nonce;
+ return this;
+ }
+
+ public String getThingVersion() {
+ return thingVersion;
+ }
+
+ public UpdateTopoSubDevice setThingVersion(String thingVersion) {
+ this.thingVersion = thingVersion;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/UserExperienceImprovementEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/UserExperienceImprovementEnum.java
new file mode 100644
index 0000000..2e7113a
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/UserExperienceImprovementEnum.java
@@ -0,0 +1,40 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/13
+ */
+public enum UserExperienceImprovementEnum {
+
+ INITIAL(0),
+
+ REFUSE(1),
+
+ AGREE(2),
+ ;
+
+ private final int state;
+
+ UserExperienceImprovementEnum(int state) {
+ this.state = state;
+ }
+
+ @JsonValue
+ public int getState() {
+ return state;
+ }
+
+ @JsonCreator
+ public static UserExperienceImprovementEnum find(int state) {
+ return Arrays.stream(values()).filter(stateEnum -> stateEnum.state == state).findAny()
+ .orElseThrow(() -> new CloudSDKException(UserExperienceImprovementEnum.class, state));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/VideoId.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/VideoId.java
new file mode 100644
index 0000000..ac6f859
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/VideoId.java
@@ -0,0 +1,82 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.cloudapi.livestream.VideoTypeEnum;
+import org.dromara.common.sdk.exception.CloudSDKErrorEnum;
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+import jakarta.validation.constraints.NotNull;
+import org.springframework.util.StringUtils;
+
+import java.util.Arrays;
+import java.util.Objects;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/25
+ */
+public class VideoId {
+
+ @NotNull
+ private String droneSn;
+
+ @NotNull
+ private PayloadIndex payloadIndex;
+
+ @NotNull
+ private VideoTypeEnum videoType = VideoTypeEnum.NORMAL;
+
+ public VideoId() {
+ }
+
+ @JsonCreator
+ public VideoId(String videoId) {
+ if (!StringUtils.hasText(videoId)) {
+ return;
+ }
+ String[] videoIdArr = Arrays.stream(videoId.split("/")).toArray(String[]::new);
+ if (videoIdArr.length != 3) {
+ throw new CloudSDKException(CloudSDKErrorEnum.INVALID_PARAMETER);
+ }
+ this.droneSn = videoIdArr[0];
+ this.payloadIndex = new PayloadIndex(videoIdArr[1]);
+ this.videoType = VideoTypeEnum.find(videoIdArr[2].split("-")[0]);
+ }
+
+ @Override
+ @JsonValue
+ public String toString() {
+ if (Objects.isNull(payloadIndex)) {
+ return "";
+ }
+ return String.format("%s/%s/%s-0", droneSn, payloadIndex.toString(), videoType.getType());
+ }
+
+ public String getDroneSn() {
+ return droneSn;
+ }
+
+ public VideoId setDroneSn(String droneSn) {
+ this.droneSn = droneSn;
+ return this;
+ }
+
+ public PayloadIndex getPayloadIndex() {
+ return payloadIndex;
+ }
+
+ public VideoId setPayloadIndex(PayloadIndex payloadIndex) {
+ this.payloadIndex = payloadIndex;
+ return this;
+ }
+
+ public VideoTypeEnum getVideoType() {
+ return videoType;
+ }
+
+ public VideoId setVideoType(VideoTypeEnum videoType) {
+ this.videoType = videoType;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/WindDirectionEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/WindDirectionEnum.java
new file mode 100644
index 0000000..cad0855
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/WindDirectionEnum.java
@@ -0,0 +1,52 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public enum WindDirectionEnum {
+
+ NO(0),
+
+ NORTH(1),
+
+ NORTHEAST(2),
+
+ EAST(3),
+
+ SOUTHEAST(4),
+
+ SOUTH(5),
+
+ SOUTHWEST(6),
+
+ WEST(7),
+
+ NORTHWEST(8),
+ ;
+
+ private final int direction;
+
+ WindDirectionEnum(int direction) {
+ this.direction = direction;
+ }
+
+ @JsonValue
+ public int getDirection() {
+ return direction;
+ }
+
+ @JsonCreator
+ public static WindDirectionEnum find(int direction) {
+ return Arrays.stream(values()).filter(directionEnum -> directionEnum.direction == direction).findAny()
+ .orElseThrow(() -> new CloudSDKException(WindDirectionEnum.class, direction));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/WirelessLink.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/WirelessLink.java
new file mode 100644
index 0000000..49dd920
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/WirelessLink.java
@@ -0,0 +1,145 @@
+package org.dromara.common.sdk.cloudapi.device;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * @author sean
+ * @version 1.3
+ * @date 2022/11/3
+ */
+public class WirelessLink {
+
+ @JsonProperty("4g_freq_band")
+ private Float fourthGenerationFreqBand;
+
+ @JsonProperty("4g_gnd_quality")
+ private Integer fourthGenerationGndQuality;
+
+ @JsonProperty("4g_link_state")
+ private Boolean fourthGenerationLinkState;
+
+ @JsonProperty("4g_quality")
+ private Integer fourthGenerationQuality;
+
+ @JsonProperty("4g_uav_quality")
+ private Integer fourthGenerationUavQuality;
+
+ private Integer dongleNumber;
+
+ private LinkWorkModeEnum linkWorkmode;
+
+ private Float sdrFreqBand;
+
+ private Boolean sdrLinkState;
+
+ private Integer sdrQuality;
+
+ public WirelessLink() {
+ }
+
+ @Override
+ public String toString() {
+ return "WirelessLink{" +
+ "fourthGenerationFreqBand=" + fourthGenerationFreqBand +
+ ", fourthGenerationGndQuality=" + fourthGenerationGndQuality +
+ ", fourthGenerationLinkState=" + fourthGenerationLinkState +
+ ", fourthGenerationQuality=" + fourthGenerationQuality +
+ ", fourthGenerationUavQuality=" + fourthGenerationUavQuality +
+ ", dongleNumber=" + dongleNumber +
+ ", linkWorkmode=" + linkWorkmode +
+ ", sdrFreqBand=" + sdrFreqBand +
+ ", sdrLinkState=" + sdrLinkState +
+ ", sdrQuality=" + sdrQuality +
+ '}';
+ }
+
+ public Float getFourthGenerationFreqBand() {
+ return fourthGenerationFreqBand;
+ }
+
+ public WirelessLink setFourthGenerationFreqBand(Float fourthGenerationFreqBand) {
+ this.fourthGenerationFreqBand = fourthGenerationFreqBand;
+ return this;
+ }
+
+ public Integer getFourthGenerationGndQuality() {
+ return fourthGenerationGndQuality;
+ }
+
+ public WirelessLink setFourthGenerationGndQuality(Integer fourthGenerationGndQuality) {
+ this.fourthGenerationGndQuality = fourthGenerationGndQuality;
+ return this;
+ }
+
+ public Boolean getFourthGenerationLinkState() {
+ return fourthGenerationLinkState;
+ }
+
+ public WirelessLink setFourthGenerationLinkState(Boolean fourthGenerationLinkState) {
+ this.fourthGenerationLinkState = fourthGenerationLinkState;
+ return this;
+ }
+
+ public Integer getFourthGenerationQuality() {
+ return fourthGenerationQuality;
+ }
+
+ public WirelessLink setFourthGenerationQuality(Integer fourthGenerationQuality) {
+ this.fourthGenerationQuality = fourthGenerationQuality;
+ return this;
+ }
+
+ public Integer getFourthGenerationUavQuality() {
+ return fourthGenerationUavQuality;
+ }
+
+ public WirelessLink setFourthGenerationUavQuality(Integer fourthGenerationUavQuality) {
+ this.fourthGenerationUavQuality = fourthGenerationUavQuality;
+ return this;
+ }
+
+ public Integer getDongleNumber() {
+ return dongleNumber;
+ }
+
+ public WirelessLink setDongleNumber(Integer dongleNumber) {
+ this.dongleNumber = dongleNumber;
+ return this;
+ }
+
+ public LinkWorkModeEnum getLinkWorkmode() {
+ return linkWorkmode;
+ }
+
+ public WirelessLink setLinkWorkmode(LinkWorkModeEnum linkWorkmode) {
+ this.linkWorkmode = linkWorkmode;
+ return this;
+ }
+
+ public Float getSdrFreqBand() {
+ return sdrFreqBand;
+ }
+
+ public WirelessLink setSdrFreqBand(Float sdrFreqBand) {
+ this.sdrFreqBand = sdrFreqBand;
+ return this;
+ }
+
+ public Boolean getSdrLinkState() {
+ return sdrLinkState;
+ }
+
+ public WirelessLink setSdrLinkState(Boolean sdrLinkState) {
+ this.sdrLinkState = sdrLinkState;
+ return this;
+ }
+
+ public Integer getSdrQuality() {
+ return sdrQuality;
+ }
+
+ public WirelessLink setSdrQuality(Integer sdrQuality) {
+ this.sdrQuality = sdrQuality;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/api/AbstractDeviceService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/api/AbstractDeviceService.java
new file mode 100644
index 0000000..9676d1b
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/device/api/AbstractDeviceService.java
@@ -0,0 +1,274 @@
+package org.dromara.common.sdk.cloudapi.device.api;
+
+import org.dromara.common.sdk.annotations.CloudSDKVersion;
+import org.dromara.common.sdk.cloudapi.device.*;
+import org.dromara.common.sdk.cloudapi.property.DockDroneCommanderFlightHeight;
+import org.dromara.common.sdk.cloudapi.property.DockDroneCommanderModeLostAction;
+import org.dromara.common.sdk.cloudapi.property.DockDroneRthMode;
+import org.dromara.common.sdk.config.version.CloudSDKVersionEnum;
+import org.dromara.common.sdk.config.version.GatewayTypeEnum;
+import org.dromara.common.sdk.mqtt.ChannelName;
+import org.dromara.common.sdk.mqtt.MqttReply;
+import org.dromara.common.sdk.mqtt.osd.TopicOsdRequest;
+import org.dromara.common.sdk.mqtt.state.TopicStateRequest;
+import org.dromara.common.sdk.mqtt.state.TopicStateResponse;
+import org.dromara.common.sdk.mqtt.status.TopicStatusRequest;
+import org.dromara.common.sdk.mqtt.status.TopicStatusResponse;
+import org.springframework.integration.annotation.ServiceActivator;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.MessageHeaders;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/30
+ */
+public class AbstractDeviceService {
+
+ /**
+ * osd dock
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ * @return status_reply
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_OSD_DOCK)
+ public void osdDock(TopicOsdRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("osdDock not implemented");
+ }
+
+ /**
+ * osd dock drone
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ * @return status_reply
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_OSD_DOCK_DRONE)
+ public void osdDockDrone(TopicOsdRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("osdDockDrone not implemented");
+ }
+
+ /**
+ * osd remote control
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ * @return status_reply
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_OSD_RC)
+ public void osdRemoteControl(TopicOsdRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("osdRemoteControl not implemented");
+ }
+
+ /**
+ * osd remote control drone
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ * @return status_reply
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_OSD_RC_DRONE)
+ public void osdRcDrone(TopicOsdRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("osdRcDrone not implemented");
+ }
+
+ /**
+ * Gateway device + sub device online
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ * @return status_reply
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATUS_ONLINE, outputChannel = ChannelName.OUTBOUND_STATUS)
+ public TopicStatusResponse updateTopoOnline(TopicStatusRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("updateTopoOnline not implemented");
+ }
+
+ /**
+ * Sub device offline
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ * @return status_reply
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATUS_OFFLINE, outputChannel = ChannelName.OUTBOUND_STATUS)
+ public TopicStatusResponse updateTopoOffline(TopicStatusRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("updateTopoOffline not implemented");
+ }
+
+ /**
+ * Firmware version update for dock and drone
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_FIRMWARE_VERSION)
+ public void dockFirmwareVersionUpdate(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dockFirmwareVersionUpdate not implemented");
+ }
+
+ /**
+ * Firmware version update for remote control and drone
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_RC_AND_DRONE_FIRMWARE_VERSION)
+ public void rcAndDroneFirmwareVersionUpdate(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("rcAndDroneFirmwareVersionUpdate not implemented");
+ }
+
+ /**
+ * Drone control source update for dock and drone
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_DRONE_CONTROL_SOURCE)
+ public void dockControlSourceUpdate(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dockControlSourceUpdate not implemented");
+ }
+
+ /**
+ * Drone control source update for remote control and drone
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_RC_CONTROL_SOURCE)
+ public void rcControlSourceUpdate(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("rcControlSourceUpdate未实现");
+ }
+
+ /**
+ * Live status update for dock and drone
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_LIVE_STATUS)
+ public void dockLiveStatusUpdate(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dockLiveStatusUpdate not implemented");
+ }
+
+ /**
+ * Live status source update for remote control and drone
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_RC_LIVE_STATUS)
+ public void rcLiveStatusUpdate(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("rcLiveStatusUpdate not implemented");
+ }
+
+ /**
+ * Payload firmware version update for remote control and drone
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_RC_PAYLOAD_FIRMWARE)
+ public void rcPayloadFirmwareVersionUpdate(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("rcPayloadFirmwareVersionUpdate not implemented");
+ }
+
+ /**
+ * Wpmz firmware version update for drone
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_DRONE_WPMZ_VERSION)
+ public void dockWpmzVersionUpdate(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dockWpmzVersionUpdate not implemented");
+ }
+
+ /**
+ * Styles supported by the IR palette
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_DRONE_THERMAL_SUPPORTED_PALETTE_STYLE)
+ public void dockThermalSupportedPaletteStyle(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dockThermalSupportedPaletteStyle not implemented");
+ }
+
+ /**
+ * Under optimal RTH mode, aircraft will automatically plan the optimal return altitude.
+ * When the environment and lighting do not meet the requirements of the visual system (such as direct sunlight in the evening or no light at night), the aircraft will perform a straight-line return at the altitude you have set.
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_DRONE_RTH_MODE, outputChannel = ChannelName.OUTBOUND_STATE)
+ public TopicStateResponse dockDroneRthMode(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dockRthMode not implemented");
+ }
+
+ /**
+ * Current RTH height mode
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_DRONE_CURRENT_RTH_MODE, outputChannel = ChannelName.OUTBOUND_STATE)
+ public TopicStateResponse dockDroneCurrentRthMode(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dockCurrentRthMode not implemented");
+ }
+
+ /**
+ * To-point flight mission out of control action
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_DRONE_COMMANDER_MODE_LOST_ACTION, outputChannel = ChannelName.OUTBOUND_STATE)
+ public TopicStateResponse dockDroneCommanderModeLostAction(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dockDroneCommanderModeLostAction not implemented");
+ }
+
+ /**
+ * Current mode of to-point flight mission
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_DRONE_CURRENT_COMMANDER_FLIGHT_MODE, outputChannel = ChannelName.OUTBOUND_STATE)
+ public TopicStateResponse dockDroneCurrentCommanderFlightMode(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dockDroneCurrentCommanderFlightMode not implemented");
+ }
+
+ /**
+ * Relative to (airport) takeoff point altitude.
+ * ALT.
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_DRONE_COMMANDER_FLIGHT_HEIGHT, outputChannel = ChannelName.OUTBOUND_STATE)
+ public TopicStateResponse dockDroneCommanderFlightHeight(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dockDroneCommanderFlightHeight not implemented");
+ }
+
+ /**
+ * The reason why the drone enters current state
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_DRONE_MODE_CODE_REASON, outputChannel = ChannelName.OUTBOUND_STATE)
+ public TopicStateResponse dockDroneModeCodeReason(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dockDroneModeCodeReason not implemented");
+ }
+
+ /**
+ * 4g dongle information
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_1, include = GatewayTypeEnum.DOCK2)
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_AND_DRONE_DONGLE_INFOS, outputChannel = ChannelName.OUTBOUND_STATE)
+ public TopicStateResponse dongleInfos(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dongleInfos not implemented");
+ }
+
+ /**
+ * silent mode
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_2, include = GatewayTypeEnum.DOCK)
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_STATE_DOCK_SILENT_MODE, outputChannel = ChannelName.OUTBOUND_STATE)
+ public TopicStateResponse dockSilentMode(TopicStateRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("dockSilentMode not implemented");
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/FirmwareErrorCodeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/FirmwareErrorCodeEnum.java
new file mode 100644
index 0000000..f2f7d53
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/FirmwareErrorCodeEnum.java
@@ -0,0 +1,97 @@
+package org.dromara.common.sdk.cloudapi.firmware;
+
+import org.dromara.common.sdk.common.IErrorInfo;
+import org.dromara.common.sdk.mqtt.events.IEventsErrorCode;
+import org.dromara.common.sdk.mqtt.services.IServicesErrorCode;
+
+import java.util.Arrays;
+
+/**
+ * @author sean.zhou
+ * @version 0.1
+ * @date 2021/11/25
+ */
+public enum FirmwareErrorCodeEnum implements IServicesErrorCode, IEventsErrorCode, IErrorInfo {
+
+ WRONG_TYPE(312001, "一致性升级已完成,但设备未请求。"),
+
+ READY_1_FAILED(312002, "升级失败。请再试一次。"),
+
+ VALIDATION_FAILED(312003, "升级失败。请再试一次。"),
+
+ READY_2_FAILED(312004, "升级失败。请再试一次。"),
+
+ WRONG_PROTOCOL(312010, "升级请求与API不同。"),
+
+ WRONG_PARAMETER(312012, "请检查参数,然后重试。"),
+
+ COMMAND_1_FAILED(312013, "升级失败。请再试一次。"),
+
+ UPDATING(312014, "正在更新设备固件。等待更新完成。"),
+
+ WORKING(312015, "设备在飞行过程中无法升级。请稍候,然后重试。"),
+
+ TRANSMISSION_ERROR(312016, "更新失败。码头和飞机传输错误。重新启动码头和飞机,然后再试一次。"),
+
+ VERSION_CHECK_FAILED(312017, "未能检查版本。"),
+
+ COMMAND_2_FAILED(312018, "升级失败。请再试一次。"),
+
+ COMMAND_3_FAILED(312019, "升级失败。请再试一次。"),
+
+ COMMAND_4_FAILED(312020, "升级失败。请再试一次。"),
+
+ COMMAND_5_FAILED(312021, "升级失败。请再试一次。"),
+
+ AIRCRAFT_NOT_FOUND(312022, "未能接通飞机电源,或飞机未连接。检查飞机是否在码头内,电池是否已安装,码头和飞机是否已连接。"),
+
+ AIRCRAFT_OUTSIDE(312023, "未能将传动杆推回原位。无法更新飞机固件。检查紧急停止按钮是否按下或传动杆是否卡住。"),
+
+ COMMAND_6_FAILED(312024, "升级失败。请再试一次。"),
+
+ DELETE_FAILED(312025, "未能删除旧的固件包。"),
+
+ DECOMPRESSION_FAILED(312026, "无法解压缩脱机升级包。"),
+
+ NO_AIRCRAFT_DETECTED(312027, "无法更新固件。码头内未发现飞机。"),
+
+ DEVICE_RESTART_1(312028, "无法更新固件。设备在更新过程中重新启动。"),
+
+ DEVICE_RESTART_2(312029, "正在重新启动设备。无法更新固件。"),
+
+ FOURTH_GENERATION_IS_ENABLE(312030, "启用了飞机增强传输。无法更新固件。请禁用4G传输,然后重试。"),
+
+ LOW_POWER(312704, "飞机电池电量过低。等待飞机充电到20%以上,然后再试一次。"),
+
+ UNKNOWN(-1, "UNKNOWN"),
+ ;
+
+
+ private final String msg;
+
+ private final int code;
+
+ FirmwareErrorCodeEnum(int code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ }
+
+ @Override
+ public String getMessage() {
+ return this.msg;
+ }
+
+ @Override
+ public Integer getCode() {
+ return this.code;
+ }
+
+ /**
+ * @param code error code
+ * @return enumeration object
+ */
+ public static FirmwareErrorCodeEnum find(int code) {
+ return Arrays.stream(values()).filter(codeEnum -> codeEnum.code == code).findAny().orElse(UNKNOWN);
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/FirmwareMethodEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/FirmwareMethodEnum.java
new file mode 100644
index 0000000..2623c0a
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/FirmwareMethodEnum.java
@@ -0,0 +1,24 @@
+package org.dromara.common.sdk.cloudapi.firmware;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * @author sean
+ * @version 1.3
+ * @date 2022/11/14
+ */
+public enum FirmwareMethodEnum {
+
+ OTA_CREATE("ota_create");
+
+ private final String method;
+
+ FirmwareMethodEnum(String method) {
+ this.method = method;
+ }
+
+ @JsonValue
+ public String getMethod() {
+ return method;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/FirmwareUpgradeTypeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/FirmwareUpgradeTypeEnum.java
new file mode 100644
index 0000000..076eab2
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/FirmwareUpgradeTypeEnum.java
@@ -0,0 +1,44 @@
+package org.dromara.common.sdk.cloudapi.firmware;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.2
+ * @date 2022/8/15
+ */
+public enum FirmwareUpgradeTypeEnum {
+
+ /**
+ * to upgraded
+ */
+ NORMAL_UPGRADE(2),
+
+ /**
+ * A consistency upgrade is required.
+ */
+ CONSISTENT_UPGRADE(3);
+
+ private final int type;
+
+ FirmwareUpgradeTypeEnum(int type) {
+ this.type = type;
+ }
+
+ @JsonValue
+ public int getType() {
+ return type;
+ }
+
+ @JsonCreator
+ public static FirmwareUpgradeTypeEnum find(int type) {
+ return Arrays.stream(values()).filter(typeEnum -> typeEnum.type == type).findAny()
+ .orElseThrow(() -> new CloudSDKException(FirmwareUpgradeTypeEnum.class, type));
+
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaCreateDevice.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaCreateDevice.java
new file mode 100644
index 0000000..997b347
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaCreateDevice.java
@@ -0,0 +1,114 @@
+package org.dromara.common.sdk.cloudapi.firmware;
+
+
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
+
+/**
+ * @author sean
+ * @version 1.2
+ * @date 2022/8/16
+ */
+public class OtaCreateDevice {
+
+ @NotNull
+ private String sn;
+
+ @NotNull
+ @Pattern(regexp = "^\\d{2}\\.\\d{2}\\.\\d{4}$")
+ private String productVersion;
+
+ @NotNull
+ private String fileUrl;
+
+ @NotNull
+ private String md5;
+
+ @NotNull
+ private Long fileSize;
+
+ @NotNull
+ private FirmwareUpgradeTypeEnum firmwareUpgradeType;
+
+ @NotNull
+ private String fileName;
+
+ public OtaCreateDevice() {
+ }
+
+ @Override
+ public String toString() {
+ return "OtaCreateDevice{" +
+ "sn='" + sn + '\'' +
+ ", productVersion='" + productVersion + '\'' +
+ ", fileUrl='" + fileUrl + '\'' +
+ ", md5='" + md5 + '\'' +
+ ", fileSize=" + fileSize +
+ ", firmwareUpgradeType=" + firmwareUpgradeType +
+ ", fileName='" + fileName + '\'' +
+ '}';
+ }
+
+ public String getSn() {
+ return sn;
+ }
+
+ public OtaCreateDevice setSn(String sn) {
+ this.sn = sn;
+ return this;
+ }
+
+ public String getProductVersion() {
+ return productVersion;
+ }
+
+ public OtaCreateDevice setProductVersion(String productVersion) {
+ this.productVersion = productVersion;
+ return this;
+ }
+
+ public String getFileUrl() {
+ return fileUrl;
+ }
+
+ public OtaCreateDevice setFileUrl(String fileUrl) {
+ this.fileUrl = fileUrl;
+ return this;
+ }
+
+ public String getMd5() {
+ return md5;
+ }
+
+ public OtaCreateDevice setMd5(String md5) {
+ this.md5 = md5;
+ return this;
+ }
+
+ public Long getFileSize() {
+ return fileSize;
+ }
+
+ public OtaCreateDevice setFileSize(Long fileSize) {
+ this.fileSize = fileSize;
+ return this;
+ }
+
+ public FirmwareUpgradeTypeEnum getFirmwareUpgradeType() {
+ return firmwareUpgradeType;
+ }
+
+ public OtaCreateDevice setFirmwareUpgradeType(FirmwareUpgradeTypeEnum firmwareUpgradeType) {
+ this.firmwareUpgradeType = firmwareUpgradeType;
+ return this;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public OtaCreateDevice setFileName(String fileName) {
+ this.fileName = fileName;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaCreateRequest.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaCreateRequest.java
new file mode 100644
index 0000000..505e3a3
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaCreateRequest.java
@@ -0,0 +1,40 @@
+package org.dromara.common.sdk.cloudapi.firmware;
+
+import org.dromara.common.sdk.common.BaseModel;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/28
+ */
+public class OtaCreateRequest extends BaseModel {
+
+ @Size(min = 1, max = 2)
+ @NotNull
+ private List<@Valid OtaCreateDevice> devices;
+
+ public OtaCreateRequest() {
+ }
+
+ @Override
+ public String toString() {
+ return "OtaCreateRequest{" +
+ "devices=" + devices +
+ '}';
+ }
+
+ public List getDevices() {
+ return devices;
+ }
+
+ public OtaCreateRequest setDevices(List devices) {
+ this.devices = devices;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaCreateResponse.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaCreateResponse.java
new file mode 100644
index 0000000..8eaa61b
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaCreateResponse.java
@@ -0,0 +1,33 @@
+package org.dromara.common.sdk.cloudapi.firmware;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/5/23
+ */
+public class OtaCreateResponse {
+
+ /**
+ * Mission status
+ **/
+ private OtaProgressStatusEnum status;
+
+ public OtaCreateResponse() {
+ }
+
+ @Override
+ public String toString() {
+ return "OtaCreateResponse{" +
+ "status=" + status +
+ '}';
+ }
+
+ public OtaProgressStatusEnum getStatus() {
+ return status;
+ }
+
+ public OtaCreateResponse setStatus(OtaProgressStatusEnum status) {
+ this.status = status;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgress.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgress.java
new file mode 100644
index 0000000..e8989f3
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgress.java
@@ -0,0 +1,54 @@
+package org.dromara.common.sdk.cloudapi.firmware;
+
+/**
+ * @author sean
+ * @version 1.2
+ * @date 2022/7/29
+ */
+public class OtaProgress {
+
+ private OtaProgressStatusEnum status;
+
+ private OtaProgressData progress;
+
+ private OtaProgressExt ext;
+
+ public OtaProgress() {
+ }
+
+ @Override
+ public String toString() {
+ return "OtaProgress{" +
+ "status=" + status +
+ ", progress=" + progress +
+ ", ext=" + ext +
+ '}';
+ }
+
+ public OtaProgressStatusEnum getStatus() {
+ return status;
+ }
+
+ public OtaProgress setStatus(OtaProgressStatusEnum status) {
+ this.status = status;
+ return this;
+ }
+
+ public OtaProgressData getProgress() {
+ return progress;
+ }
+
+ public OtaProgress setProgress(OtaProgressData progress) {
+ this.progress = progress;
+ return this;
+ }
+
+ public OtaProgressExt getExt() {
+ return ext;
+ }
+
+ public OtaProgress setExt(OtaProgressExt ext) {
+ this.ext = ext;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgressData.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgressData.java
new file mode 100644
index 0000000..ed3767c
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgressData.java
@@ -0,0 +1,42 @@
+package org.dromara.common.sdk.cloudapi.firmware;
+
+/**
+ * @author sean
+ * @version 1.2
+ * @date 2022/7/29
+ */
+public class OtaProgressData {
+
+ private Integer percent;
+
+ private OtaProgressStepEnum currentStep;
+
+ public OtaProgressData() {
+ }
+
+ @Override
+ public String toString() {
+ return "OtaProgressData{" +
+ "percent=" + percent +
+ ", currentStep=" + currentStep +
+ '}';
+ }
+
+ public Integer getPercent() {
+ return percent;
+ }
+
+ public OtaProgressData setPercent(Integer percent) {
+ this.percent = percent;
+ return this;
+ }
+
+ public OtaProgressStepEnum getCurrentStep() {
+ return currentStep;
+ }
+
+ public OtaProgressData setCurrentStep(OtaProgressStepEnum currentStep) {
+ this.currentStep = currentStep;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgressExt.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgressExt.java
new file mode 100644
index 0000000..f29f2bb
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgressExt.java
@@ -0,0 +1,30 @@
+package org.dromara.common.sdk.cloudapi.firmware;
+
+/**
+ * @author sean
+ * @version 1.4
+ * @date 2023/3/30
+ */
+public class OtaProgressExt {
+
+ private Long rate;
+
+ public OtaProgressExt() {
+ }
+
+ @Override
+ public String toString() {
+ return "OtaProgressExt{" +
+ "rate=" + rate +
+ '}';
+ }
+
+ public Long getRate() {
+ return rate;
+ }
+
+ public OtaProgressExt setRate(Long rate) {
+ this.rate = rate;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgressStatusEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgressStatusEnum.java
new file mode 100644
index 0000000..a5a26a3
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgressStatusEnum.java
@@ -0,0 +1,57 @@
+package org.dromara.common.sdk.cloudapi.firmware;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.2
+ * @date 2022/8/17
+ */
+public enum OtaProgressStatusEnum {
+
+ SENT("sent", false),
+
+ IN_PROGRESS("in_progress", false),
+
+ OK("ok", true),
+
+ PAUSED("paused", false),
+
+ REJECTED("rejected", true),
+
+ FAILED("failed", true),
+
+ CANCELED("canceled", true),
+
+ TIMEOUT("timeout", true);
+
+ private final String status;
+
+ private final boolean end;
+
+ OtaProgressStatusEnum(String status, boolean end) {
+ this.status = status;
+ this.end = end;
+ }
+
+ @JsonValue
+ public String getStatus() {
+ return status;
+ }
+
+ public boolean isEnd() {
+ return end;
+ }
+
+ @JsonCreator
+ public static OtaProgressStatusEnum find(String status) {
+ return Arrays.stream(values()).filter(statusEnum -> statusEnum.status.equals(status)).findAny()
+ .orElseThrow(() -> new CloudSDKException(OtaProgressStatusEnum.class, status));
+ }
+}
+
+
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgressStepEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgressStepEnum.java
new file mode 100644
index 0000000..9b80feb
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/OtaProgressStepEnum.java
@@ -0,0 +1,36 @@
+package org.dromara.common.sdk.cloudapi.firmware;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/28
+ */
+public enum OtaProgressStepEnum {
+
+ DOWNLOADING(1),
+
+ UPGRADING(2);
+
+ private final int step;
+
+ OtaProgressStepEnum(int step) {
+ this.step = step;
+ }
+
+ @JsonValue
+ public int getStep() {
+ return step;
+ }
+
+ @JsonCreator
+ public static OtaProgressStepEnum find(int step) {
+ return Arrays.stream(values()).filter(stepEnum -> stepEnum.step == step).findAny()
+ .orElseThrow(() -> new CloudSDKException(OtaProgressStepEnum.class, step));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/api/AbstractFirmwareService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/api/AbstractFirmwareService.java
new file mode 100644
index 0000000..26b10b0
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/firmware/api/AbstractFirmwareService.java
@@ -0,0 +1,57 @@
+package org.dromara.common.sdk.cloudapi.firmware.api;
+
+import org.dromara.common.sdk.cloudapi.firmware.FirmwareMethodEnum;
+import org.dromara.common.sdk.cloudapi.firmware.OtaCreateRequest;
+import org.dromara.common.sdk.cloudapi.firmware.OtaCreateResponse;
+import org.dromara.common.sdk.cloudapi.firmware.OtaProgress;
+import org.dromara.common.sdk.config.version.GatewayManager;
+import org.dromara.common.sdk.mqtt.ChannelName;
+import org.dromara.common.sdk.mqtt.MqttReply;
+import org.dromara.common.sdk.mqtt.events.EventsDataRequest;
+import org.dromara.common.sdk.mqtt.events.TopicEventsRequest;
+import org.dromara.common.sdk.mqtt.events.TopicEventsResponse;
+import org.dromara.common.sdk.mqtt.services.ServicesPublish;
+import org.dromara.common.sdk.mqtt.services.ServicesReplyData;
+import org.dromara.common.sdk.mqtt.services.TopicServicesResponse;
+import com.fasterxml.jackson.core.type.TypeReference;
+import jakarta.annotation.Resource;
+import org.springframework.integration.annotation.ServiceActivator;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.MessageHeaders;
+
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/28
+ */
+public abstract class AbstractFirmwareService {
+
+ @Resource
+ private ServicesPublish servicesPublish;
+
+ /**
+ * Firmware upgrade progress
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_OTA_PROGRESS, outputChannel = ChannelName.OUTBOUND_EVENTS)
+ public TopicEventsResponse otaProgress(TopicEventsRequest> request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("otaProgress not implemented");
+ }
+
+ /**
+ * Firmware upgrade
+ * @param gateway
+ * @param request data
+ * @return services_reply
+ */
+ public TopicServicesResponse> otaCreate(GatewayManager gateway, OtaCreateRequest request) {
+ return servicesPublish.publish(
+ new TypeReference() {},
+ gateway.getGatewaySn(),
+ FirmwareMethodEnum.OTA_CREATE.getMethod(),
+ request);
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/DroneLocation.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/DroneLocation.java
new file mode 100644
index 0000000..0920c80
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/DroneLocation.java
@@ -0,0 +1,54 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/17
+ */
+public class DroneLocation {
+
+ /**
+ * Region unique ID
+ */
+ private String areaId;
+
+ /**
+ * Distance to the custom flight area boundary
+ */
+ private Float areaDistance;
+
+ /**
+ * Whether in custom flight area
+ */
+ @JsonProperty("is_in_area")
+ private Boolean inArea;
+
+ public String getAreaId() {
+ return areaId;
+ }
+
+ public DroneLocation setAreaId(String areaId) {
+ this.areaId = areaId;
+ return this;
+ }
+
+ public Float getAreaDistance() {
+ return areaDistance;
+ }
+
+ public DroneLocation setAreaDistance(Float areaDistance) {
+ this.areaDistance = areaDistance;
+ return this;
+ }
+
+ public Boolean getInArea() {
+ return inArea;
+ }
+
+ public DroneLocation setInArea(Boolean inArea) {
+ this.inArea = inArea;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FeatureProperty.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FeatureProperty.java
new file mode 100644
index 0000000..421cfdc
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FeatureProperty.java
@@ -0,0 +1,60 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.Min;
+
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/11/21
+ */
+public class FeatureProperty {
+
+ @JsonProperty("subType")
+ private GeometrySubTypeEnum subType;
+
+ @Min(10)
+ private Float radius = 0f;
+
+ private Boolean enable;
+
+ public FeatureProperty() {
+ }
+
+ @Override
+ public String toString() {
+ return "FeatureProperty{" +
+ "subType=" + subType +
+ ", radius=" + radius +
+ ", enable=" + enable +
+ '}';
+ }
+
+ public GeometrySubTypeEnum getSubType() {
+ return subType;
+ }
+
+ public FeatureProperty setSubType(GeometrySubTypeEnum subType) {
+ this.subType = subType;
+ return this;
+ }
+
+ public Float getRadius() {
+ return radius;
+ }
+
+ public FeatureProperty setRadius(Float radius) {
+ this.radius = radius;
+ return this;
+ }
+
+ public Boolean getEnable() {
+ return enable;
+ }
+
+ public FeatureProperty setEnable(Boolean enable) {
+ this.enable = enable;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaFeature.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaFeature.java
new file mode 100644
index 0000000..df8474b
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaFeature.java
@@ -0,0 +1,84 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/11/21
+ */
+public class FlightAreaFeature {
+
+ @Pattern(regexp = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$")
+ @NotNull
+ private String id;
+
+ private final String type = "Feature";
+
+ @NotNull
+ private GeofenceTypeEnum geofenceType;
+
+ @NotNull
+ @Valid
+ private FlightAreaGeometry geometry;
+
+ @NotNull
+ private FeatureProperty properties;
+
+ public FlightAreaFeature() {
+ }
+
+ @Override
+ public String toString() {
+ return "FlightAreaFeature{" +
+ "id='" + id + '\'' +
+ ", type='" + type + '\'' +
+ ", geofenceType=" + geofenceType +
+ ", geometry=" + geometry +
+ ", properties=" + properties +
+ '}';
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public FlightAreaFeature setId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public GeofenceTypeEnum getGeofenceType() {
+ return geofenceType;
+ }
+
+ public FlightAreaFeature setGeofenceType(GeofenceTypeEnum geofenceType) {
+ this.geofenceType = geofenceType;
+ return this;
+ }
+
+ public FlightAreaGeometry getGeometry() {
+ return geometry;
+ }
+
+ public FlightAreaFeature setGeometry(FlightAreaGeometry geometry) {
+ this.geometry = geometry;
+ return this;
+ }
+
+ public FeatureProperty getProperties() {
+ return properties;
+ }
+
+ public FlightAreaFeature setProperties(FeatureProperty properties) {
+ this.properties = properties;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaFile.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaFile.java
new file mode 100644
index 0000000..4020e17
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaFile.java
@@ -0,0 +1,48 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/17
+ */
+public class FlightAreaFile {
+
+ /**
+ * Custom flight area file name
+ */
+ private String name;
+
+ /**
+ * File SHA256 signature
+ */
+ private String checksum;
+
+ public FlightAreaFile() {
+ }
+
+ @Override
+ public String toString() {
+ return "FlightAreaFile{" +
+ "name='" + name + '\'' +
+ ", checksum='" + checksum + '\'' +
+ '}';
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public FlightAreaFile setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getChecksum() {
+ return checksum;
+ }
+
+ public FlightAreaFile setChecksum(String checksum) {
+ this.checksum = checksum;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaGeometry.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaGeometry.java
new file mode 100644
index 0000000..a8793ea
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaGeometry.java
@@ -0,0 +1,21 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/11/21
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type",
+ include = JsonTypeInfo.As.EXISTING_PROPERTY, defaultImpl = FlightAreaGeometry.class)
+@JsonSubTypes({
+ @JsonSubTypes.Type(value = FlightAreaPointGeometry.class, name = "Point"),
+ @JsonSubTypes.Type(value = FlightAreaPolygonGeometry.class, name = "Polygon")
+})
+public abstract class FlightAreaGeometry {
+
+ private GeometryTypeEnum type;
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaGetFile.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaGetFile.java
new file mode 100644
index 0000000..2eebcb8
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaGetFile.java
@@ -0,0 +1,86 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/17
+ */
+public class FlightAreaGetFile {
+
+ /**
+ * File name
+ */
+ @NotNull
+ @Pattern(regexp = "^geofence_[A-Za-z0-9]{32}.json$")
+ private String name;
+
+ /**
+ * File URL
+ */
+ @NotNull
+ private String url;
+
+ /**
+ * File SHA256 signature
+ */
+ @NotNull
+ private String checksum;
+
+ /**
+ * File size
+ */
+ @NotNull
+ private Integer size;
+
+ public FlightAreaGetFile() {
+ }
+
+ @Override
+ public String toString() {
+ return "FlightAreaGetFile{" +
+ "name='" + name + '\'' +
+ ", url='" + url + '\'' +
+ ", checksum='" + checksum + '\'' +
+ ", size=" + size +
+ '}';
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public FlightAreaGetFile setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public FlightAreaGetFile setUrl(String url) {
+ this.url = url;
+ return this;
+ }
+
+ public String getChecksum() {
+ return checksum;
+ }
+
+ public FlightAreaGetFile setChecksum(String checksum) {
+ this.checksum = checksum;
+ return this;
+ }
+
+ public Integer getSize() {
+ return size;
+ }
+
+ public FlightAreaGetFile setSize(Integer size) {
+ this.size = size;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaJson.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaJson.java
new file mode 100644
index 0000000..51b6d55
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaJson.java
@@ -0,0 +1,42 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import jakarta.validation.constraints.NotNull;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/11/21
+ */
+public class FlightAreaJson {
+
+ private final String type = "FeatureCollection";
+
+ @NotNull
+ private List features;
+
+ public FlightAreaJson() {
+ }
+
+ @Override
+ public String toString() {
+ return "FlightAreaJson{" +
+ "type='" + type + '\'' +
+ ", features=" + features +
+ '}';
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public List getFeatures() {
+ return features;
+ }
+
+ public FlightAreaJson setFeatures(List features) {
+ this.features = features;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaMethodEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaMethodEnum.java
new file mode 100644
index 0000000..58e9eaa
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaMethodEnum.java
@@ -0,0 +1,27 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/17
+ */
+public enum FlightAreaMethodEnum {
+
+ FLIGHT_AREAS_UPDATE("flight_areas_update"),
+
+ FLIGHT_AREAS_DELETE("flight_areas_delete"),
+ ;
+
+ private final String method;
+
+ FlightAreaMethodEnum(String method) {
+ this.method = method;
+ }
+
+ @JsonValue
+ public String getMethod() {
+ return method;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaPointGeometry.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaPointGeometry.java
new file mode 100644
index 0000000..06130d9
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaPointGeometry.java
@@ -0,0 +1,39 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/11/21
+ */
+public class FlightAreaPointGeometry extends FlightAreaGeometry {
+
+ private final GeometryTypeEnum type = GeometryTypeEnum.POINT;
+
+ private Double[] coordinates;
+
+ public FlightAreaPointGeometry() {
+ }
+
+ @Override
+ public String toString() {
+ return "FlightAreaPointGeometry{" +
+ "type=" + type +
+ ", coordinates=" + Arrays.toString(coordinates) +
+ '}';
+ }
+
+ public GeometryTypeEnum getType() {
+ return type;
+ }
+
+ public Double[] getCoordinates() {
+ return coordinates;
+ }
+
+ public FlightAreaPointGeometry setCoordinates(Double[] coordinates) {
+ this.coordinates = coordinates;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaPolygonGeometry.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaPolygonGeometry.java
new file mode 100644
index 0000000..01c9bc1
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaPolygonGeometry.java
@@ -0,0 +1,39 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/11/21
+ */
+public class FlightAreaPolygonGeometry extends FlightAreaGeometry {
+
+ private final GeometryTypeEnum type = GeometryTypeEnum.POLYGON;
+
+ private Double[][][] coordinates;
+
+ public FlightAreaPolygonGeometry() {
+ }
+
+ @Override
+ public String toString() {
+ return "FlightAreaPointGeometry{" +
+ "type=" + type +
+ ", coordinates=" + Arrays.toString(coordinates) +
+ '}';
+ }
+
+ public GeometryTypeEnum getType() {
+ return type;
+ }
+
+ public Double[][][] getCoordinates() {
+ return coordinates;
+ }
+
+ public FlightAreaPolygonGeometry setCoordinates(Double[][][] coordinates) {
+ this.coordinates = coordinates;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaSyncReasonEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaSyncReasonEnum.java
new file mode 100644
index 0000000..aa11cdf
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaSyncReasonEnum.java
@@ -0,0 +1,70 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/17
+ */
+public enum FlightAreaSyncReasonEnum {
+
+ SUCCESS(0, "success"),
+
+ PARSE_FILE_FAILED(1, "Failed to parse file information returned from the cloud."),
+
+ RETRIEVE_FILE_FAILED(2, "Failed to retrieve file information from the aircraft's end."),
+
+ DOWNLOAD_FILE_FAILED(3, "Failed to download the file from the cloud."),
+
+ LINK_FLIPPING_FAILED(4, "Link flipping failed."),
+
+ FILE_TRANSMISSION_FAILED(5, "File transmission failed."),
+
+ DISABLE_FAILED(6, "Filed to disable."),
+
+ FILE_DELETION_FAILED(7, "File deletion failed."),
+
+ FILE_LOADING_FAILED(8, "Failed to load file on drone."),
+
+ ENABLE_FAILED(9, "Filed to enable."),
+
+ TURN_OFF_ENHANCED_FAILED(10, "Failed to turn off enhanced image transmission."),
+
+ POWER_ON_FAILED(11, "Failed to power on the drone."),
+
+ CHECK_FAILED(12, "The checksum check failed."),
+
+ SYNCHRONIZATION_TIMED_OUT(13, "Synchronization exception timed out."),
+
+ ;
+
+ private final int reason;
+
+ private final String msg;
+
+ FlightAreaSyncReasonEnum(int reason, String msg) {
+ this.reason = reason;
+ this.msg = msg;
+ }
+
+ @JsonValue
+ public int getReason() {
+ return reason;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ @JsonCreator
+ public static FlightAreaSyncReasonEnum find(int reason) {
+ return Arrays.stream(values()).filter(reasonEnum -> reasonEnum.reason == reason).findAny()
+ .orElseThrow(() -> new CloudSDKException(FlightAreaSyncReasonEnum.class, reason));
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaSyncStatusEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaSyncStatusEnum.java
new file mode 100644
index 0000000..449578f
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreaSyncStatusEnum.java
@@ -0,0 +1,51 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/17
+ */
+public enum FlightAreaSyncStatusEnum {
+
+ WAIT_SYNC("wait_sync", false),
+
+ SWITCH_FAIL("switch_fail", false),
+
+ SYNCHRONIZING("synchronizing", false),
+
+ SYNCHRONIZED("synchronized", true),
+
+ FAIL("fail", true),
+
+ ;
+
+ private final String status;
+
+ private final boolean end;
+
+ FlightAreaSyncStatusEnum(String status, boolean end) {
+ this.status = status;
+ this.end = end;
+ }
+
+ @JsonValue
+ public String getStatus() {
+ return status;
+ }
+
+ public boolean isEnd() {
+ return end;
+ }
+
+ @JsonCreator
+ public static FlightAreaSyncStatusEnum find(String status) {
+ return Arrays.stream(values()).filter(statusEnum -> statusEnum.status.equals(status)).findAny()
+ .orElseThrow(() -> new CloudSDKException(FlightAreaSyncStatusEnum.class, status));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreasDroneLocation.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreasDroneLocation.java
new file mode 100644
index 0000000..cdcc14f
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreasDroneLocation.java
@@ -0,0 +1,35 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/17
+ */
+public class FlightAreasDroneLocation {
+
+ /**
+ * Flight area distance to aircraft
+ */
+ private List droneLocations;
+
+ public FlightAreasDroneLocation() {
+ }
+
+ @Override
+ public String toString() {
+ return "FlightAreasDroneLocation{" +
+ "droneLocations=" + droneLocations +
+ '}';
+ }
+
+ public List getDroneLocations() {
+ return droneLocations;
+ }
+
+ public FlightAreasDroneLocation setDroneLocations(List droneLocations) {
+ this.droneLocations = droneLocations;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreasGetRequest.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreasGetRequest.java
new file mode 100644
index 0000000..babd242
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreasGetRequest.java
@@ -0,0 +1,9 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/17
+ */
+public class FlightAreasGetRequest {
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreasGetResponse.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreasGetResponse.java
new file mode 100644
index 0000000..b0c05f9
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreasGetResponse.java
@@ -0,0 +1,40 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import org.dromara.common.sdk.common.BaseModel;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/17
+ */
+public class FlightAreasGetResponse extends BaseModel {
+
+ /**
+ * File list
+ */
+ @NotNull
+ private List<@Valid FlightAreaGetFile> files;
+
+ public FlightAreasGetResponse() {
+ }
+
+ @Override
+ public String toString() {
+ return "FlightAreasGetResponse{" +
+ "files=" + files +
+ '}';
+ }
+
+ public List getFiles() {
+ return files;
+ }
+
+ public FlightAreasGetResponse setFiles(List files) {
+ this.files = files;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreasSyncProgress.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreasSyncProgress.java
new file mode 100644
index 0000000..79c2131
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/FlightAreasSyncProgress.java
@@ -0,0 +1,63 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/17
+ */
+public class FlightAreasSyncProgress {
+
+ /**
+ * Synchronize state
+ */
+ private FlightAreaSyncStatusEnum status;
+
+ /**
+ * Return Code
+ */
+ private FlightAreaSyncReasonEnum reason;
+
+ /**
+ * Custom flight area file
+ */
+ private FlightAreaFile file;
+
+ public FlightAreasSyncProgress() {
+ }
+
+ @Override
+ public String toString() {
+ return "FlightAreasSyncProgress{" +
+ "status=" + status +
+ ", reason=" + reason +
+ ", file=" + file +
+ '}';
+ }
+
+ public FlightAreaSyncStatusEnum getStatus() {
+ return status;
+ }
+
+ public FlightAreasSyncProgress setStatus(FlightAreaSyncStatusEnum status) {
+ this.status = status;
+ return this;
+ }
+
+ public FlightAreaSyncReasonEnum getReason() {
+ return reason;
+ }
+
+ public FlightAreasSyncProgress setReason(FlightAreaSyncReasonEnum reason) {
+ this.reason = reason;
+ return this;
+ }
+
+ public FlightAreaFile getFile() {
+ return file;
+ }
+
+ public FlightAreasSyncProgress setFile(FlightAreaFile file) {
+ this.file = file;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/GeofenceTypeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/GeofenceTypeEnum.java
new file mode 100644
index 0000000..a4c486f
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/GeofenceTypeEnum.java
@@ -0,0 +1,38 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/11/21
+ */
+public enum GeofenceTypeEnum {
+
+ DFENCE("dfence"),
+
+ NFZ("nfz"),
+
+ ;
+
+ private final String type;
+
+ GeofenceTypeEnum(String type) {
+ this.type = type;
+ }
+
+ @JsonValue
+ public String getType() {
+ return type;
+ }
+
+ @JsonCreator
+ public static GeofenceTypeEnum find(String type) {
+ return Arrays.stream(values()).filter(typeEnum -> typeEnum.type.equals(type)).findAny()
+ .orElseThrow(() -> new CloudSDKException(GeofenceTypeEnum.class, type));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/GeometrySubTypeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/GeometrySubTypeEnum.java
new file mode 100644
index 0000000..d7bc135
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/GeometrySubTypeEnum.java
@@ -0,0 +1,36 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/11/21
+ */
+public enum GeometrySubTypeEnum {
+
+ CIRCLE("Circle"),
+
+ ;
+
+ private final String subType;
+
+ GeometrySubTypeEnum(String subType) {
+ this.subType = subType;
+ }
+
+ @JsonValue
+ public String getSubType() {
+ return subType;
+ }
+
+ @JsonCreator
+ public static GeometrySubTypeEnum find(String subType) {
+ return Arrays.stream(values()).filter(subTypeEnum -> subTypeEnum.subType.equals(subType)).findAny()
+ .orElseThrow(() -> new CloudSDKException(GeometrySubTypeEnum.class, subType));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/GeometryTypeEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/GeometryTypeEnum.java
new file mode 100644
index 0000000..82093e9
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/GeometryTypeEnum.java
@@ -0,0 +1,38 @@
+package org.dromara.common.sdk.cloudapi.flightarea;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.9
+ * @date 2023/11/21
+ */
+public enum GeometryTypeEnum {
+
+ POINT("Point"),
+
+ POLYGON("Polygon"),
+
+ ;
+
+ private final String type;
+
+ GeometryTypeEnum(String type) {
+ this.type = type;
+ }
+
+ @JsonValue
+ public String getType() {
+ return type;
+ }
+
+ @JsonCreator
+ public static GeometryTypeEnum find(String type) {
+ return Arrays.stream(values()).filter(typeEnum -> typeEnum.type.equals(type)).findAny()
+ .orElseThrow(() -> new CloudSDKException(GeometryTypeEnum.class, type));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/api/AbstractFlightAreaService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/api/AbstractFlightAreaService.java
new file mode 100644
index 0000000..0627e9c
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/flightarea/api/AbstractFlightAreaService.java
@@ -0,0 +1,80 @@
+package org.dromara.common.sdk.cloudapi.flightarea.api;
+
+import org.dromara.common.sdk.annotations.CloudSDKVersion;
+import org.dromara.common.sdk.cloudapi.flightarea.*;
+import org.dromara.common.sdk.config.version.CloudSDKVersionEnum;
+import org.dromara.common.sdk.config.version.GatewayManager;
+import org.dromara.common.sdk.config.version.GatewayTypeEnum;
+import org.dromara.common.sdk.mqtt.ChannelName;
+import org.dromara.common.sdk.mqtt.MqttReply;
+import org.dromara.common.sdk.mqtt.events.TopicEventsRequest;
+import org.dromara.common.sdk.mqtt.events.TopicEventsResponse;
+import org.dromara.common.sdk.mqtt.requests.TopicRequestsRequest;
+import org.dromara.common.sdk.mqtt.requests.TopicRequestsResponse;
+import org.dromara.common.sdk.mqtt.services.ServicesPublish;
+import org.dromara.common.sdk.mqtt.services.ServicesReplyData;
+import org.dromara.common.sdk.mqtt.services.TopicServicesResponse;
+import jakarta.annotation.Resource;
+import org.springframework.integration.annotation.ServiceActivator;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.MessageHeaders;
+
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/16
+ */
+public abstract class AbstractFlightAreaService {
+
+ @Resource
+ private ServicesPublish servicesPublish;
+
+ /**
+ * Update command
+ * @param gateway gateway device
+ * @return services_reply
+ */
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0, exclude = GatewayTypeEnum.RC, include = {GatewayTypeEnum.DOCK, GatewayTypeEnum.DOCK2})
+ public TopicServicesResponse flightAreasUpdate(GatewayManager gateway) {
+ return servicesPublish.publish(
+ gateway.getGatewaySn(),
+ FlightAreaMethodEnum.FLIGHT_AREAS_UPDATE.getMethod());
+ }
+
+ /**
+ * Progress of custom flight area file synchronize from the Cloud to the Device. Used for further defining flight area.
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ * @return events_reply
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_FLIGHT_AREAS_SYNC_PROGRESS, outputChannel = ChannelName.OUTBOUND_EVENTS)
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ public TopicEventsResponse flightAreasSyncProgress(TopicEventsRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("flightAreasSyncProgress not implemented");
+ }
+
+ /**
+ * Push warning information
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ * @return events_reply
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_FLIGHT_AREAS_DRONE_LOCATION, outputChannel = ChannelName.OUTBOUND_EVENTS)
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ public TopicEventsResponse flightAreasDroneLocation(TopicEventsRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("flightAreasDroneLocation not implemented");
+ }
+
+ /**
+ * Get custom flight area file
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ * @return requests_reply
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_REQUESTS_FLIGHT_AREAS_GET, outputChannel = ChannelName.OUTBOUND_REQUESTS)
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ public TopicRequestsResponse> flightAreasGet(TopicRequestsRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("flightAreasGet not implemented");
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/DeviceHms.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/DeviceHms.java
new file mode 100644
index 0000000..82889aa
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/DeviceHms.java
@@ -0,0 +1,104 @@
+package org.dromara.common.sdk.cloudapi.hms;
+
+import org.dromara.common.sdk.cloudapi.device.DeviceEnum;
+
+/**
+ * @author sean
+ * @version 1.1
+ * @date 2022/7/6
+ */
+public class DeviceHms {
+
+ private String code;
+
+ private DeviceEnum deviceType;
+
+ private Boolean imminent;
+
+ private Boolean inTheSky;
+
+ private HmsLevelEnum level;
+
+ private HmsModuleEnum module;
+
+ private DeviceHmsArgs args;
+
+ public DeviceHms() {
+ }
+
+ @Override
+ public String toString() {
+ return "DeviceHms{" +
+ "code='" + code + '\'' +
+ ", deviceType=" + deviceType +
+ ", imminent=" + imminent +
+ ", inTheSky=" + inTheSky +
+ ", level=" + level +
+ ", module=" + module +
+ ", args=" + args +
+ '}';
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public DeviceHms setCode(String code) {
+ this.code = code;
+ return this;
+ }
+
+ public DeviceEnum getDeviceType() {
+ return deviceType;
+ }
+
+ public DeviceHms setDeviceType(DeviceEnum deviceType) {
+ this.deviceType = deviceType;
+ return this;
+ }
+
+ public Boolean getImminent() {
+ return imminent;
+ }
+
+ public DeviceHms setImminent(Boolean imminent) {
+ this.imminent = imminent;
+ return this;
+ }
+
+ public Boolean getInTheSky() {
+ return inTheSky;
+ }
+
+ public DeviceHms setInTheSky(Boolean inTheSky) {
+ this.inTheSky = inTheSky;
+ return this;
+ }
+
+ public HmsLevelEnum getLevel() {
+ return level;
+ }
+
+ public DeviceHms setLevel(HmsLevelEnum level) {
+ this.level = level;
+ return this;
+ }
+
+ public HmsModuleEnum getModule() {
+ return module;
+ }
+
+ public DeviceHms setModule(HmsModuleEnum module) {
+ this.module = module;
+ return this;
+ }
+
+ public DeviceHmsArgs getArgs() {
+ return args;
+ }
+
+ public DeviceHms setArgs(DeviceHmsArgs args) {
+ this.args = args;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/DeviceHmsArgs.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/DeviceHmsArgs.java
new file mode 100644
index 0000000..17bb409
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/DeviceHmsArgs.java
@@ -0,0 +1,54 @@
+package org.dromara.common.sdk.cloudapi.hms;
+
+/**
+ * @author sean
+ * @version 1.1
+ * @date 2022/7/6
+ */
+public class DeviceHmsArgs {
+
+ private Long componentIndex;
+
+ private Integer sensorIndex;
+
+ private Integer alarmId;
+
+ public DeviceHmsArgs() {
+ }
+
+ @Override
+ public String toString() {
+ return "DeviceHmsArgs{" +
+ "componentIndex=" + componentIndex +
+ ", sensorIndex=" + sensorIndex +
+ ", alarmId=" + alarmId +
+ '}';
+ }
+
+ public Long getComponentIndex() {
+ return componentIndex;
+ }
+
+ public DeviceHmsArgs setComponentIndex(Long componentIndex) {
+ this.componentIndex = componentIndex;
+ return this;
+ }
+
+ public Integer getSensorIndex() {
+ return sensorIndex;
+ }
+
+ public DeviceHmsArgs setSensorIndex(Integer sensorIndex) {
+ this.sensorIndex = sensorIndex;
+ return this;
+ }
+
+ public Integer getAlarmId() {
+ return alarmId;
+ }
+
+ public DeviceHmsArgs setAlarmId(Integer alarmId) {
+ this.alarmId = alarmId;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/Hms.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/Hms.java
new file mode 100644
index 0000000..0a21468
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/Hms.java
@@ -0,0 +1,32 @@
+package org.dromara.common.sdk.cloudapi.hms;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/27
+ */
+public class Hms {
+
+ private List list;
+
+ public Hms() {
+ }
+
+ @Override
+ public String toString() {
+ return "Hms{" +
+ "list=" + list +
+ '}';
+ }
+
+ public List getList() {
+ return list;
+ }
+
+ public Hms setList(List list) {
+ this.list = list;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsBatteryIndexEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsBatteryIndexEnum.java
new file mode 100644
index 0000000..a26ef82
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsBatteryIndexEnum.java
@@ -0,0 +1,48 @@
+package org.dromara.common.sdk.cloudapi.hms;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.1
+ * @date 2022/7/7
+ */
+public enum HmsBatteryIndexEnum {
+
+ LEFT(0, "left", "左"),
+
+ RIGHT(1, "right", "右");
+
+ private final int val;
+
+ private final String en;
+
+ private final String zh;
+
+ HmsBatteryIndexEnum(int val, String en, String zh) {
+ this.val = val;
+ this.en = en;
+ this.zh = zh;
+ }
+
+ @JsonValue
+ public int getVal() {
+ return val;
+ }
+
+ public String getEn() {
+ return en;
+ }
+
+ public String getZh() {
+ return zh;
+ }
+
+ public static HmsBatteryIndexEnum find(int val) {
+ return Arrays.stream(HmsBatteryIndexEnum.values()).filter(battery -> battery.val == val).findAny()
+ .orElseThrow(() -> new CloudSDKException(HmsBatteryIndexEnum.class, val));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsChargingRodIndexEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsChargingRodIndexEnum.java
new file mode 100644
index 0000000..ddb3f24
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsChargingRodIndexEnum.java
@@ -0,0 +1,50 @@
+package org.dromara.common.sdk.cloudapi.hms;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.1
+ * @date 2022/7/7
+ */
+public enum HmsChargingRodIndexEnum {
+
+ FRONT(0, "front", "前"),
+
+ BACK(1, "back", "后"),
+
+ LEFT(2, "left", "左"),
+
+ RIGHT(3, "right", "右");
+
+ private final int val;
+
+ private final String en;
+
+ private final String zh;
+
+ HmsChargingRodIndexEnum(int val, String en, String zh) {
+ this.val = val;
+ this.en = en;
+ this.zh = zh;
+ }
+
+ public int getVal() {
+ return val;
+ }
+
+ public String getEn() {
+ return en;
+ }
+
+ public String getZh() {
+ return zh;
+ }
+
+ public static HmsChargingRodIndexEnum find(int val) {
+ return Arrays.stream(HmsChargingRodIndexEnum.values()).filter(rod -> rod.val == val).findAny()
+ .orElseThrow(() -> new CloudSDKException(HmsChargingRodIndexEnum.class, val));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsDockCoverIndexEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsDockCoverIndexEnum.java
new file mode 100644
index 0000000..6e86a91
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsDockCoverIndexEnum.java
@@ -0,0 +1,48 @@
+package org.dromara.common.sdk.cloudapi.hms;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.1
+ * @date 2022/7/7
+ */
+public enum HmsDockCoverIndexEnum {
+
+ LEFT(0, "left", "左"),
+
+ RIGHT(1, "right", "右");
+
+ private final int val;
+
+ private final String en;
+
+ private final String zh;
+
+ HmsDockCoverIndexEnum(int val, String en, String zh) {
+ this.val = val;
+ this.en = en;
+ this.zh = zh;
+ }
+
+ @JsonValue
+ public int getVal() {
+ return val;
+ }
+
+ public String getEn() {
+ return en;
+ }
+
+ public String getZh() {
+ return zh;
+ }
+
+ public static HmsDockCoverIndexEnum find(int val) {
+ return Arrays.stream(HmsDockCoverIndexEnum.values()).filter(dockCover -> dockCover.val == val).findAny()
+ .orElseThrow(() -> new CloudSDKException(HmsDockCoverIndexEnum.class, val));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsFaqIdEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsFaqIdEnum.java
new file mode 100644
index 0000000..aac4e98
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsFaqIdEnum.java
@@ -0,0 +1,43 @@
+package org.dromara.common.sdk.cloudapi.hms;
+
+import org.dromara.common.sdk.cloudapi.device.DeviceDomainEnum;
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.1
+ * @date 2022/7/7
+ */
+public enum HmsFaqIdEnum {
+
+ DOCK_TIP("dock_tip_", DeviceDomainEnum.DOCK),
+
+ FPV_TIP("fpv_tip_", DeviceDomainEnum.DRONE);
+
+ private final String text;
+
+ private final DeviceDomainEnum domain;
+
+ @JsonValue
+ public String getText() {
+ return text;
+ }
+
+ public DeviceDomainEnum getDomain() {
+ return domain;
+ }
+
+ HmsFaqIdEnum(String text, DeviceDomainEnum domain) {
+ this.text = text;
+ this.domain = domain;
+ }
+
+ public static HmsFaqIdEnum find(DeviceDomainEnum domain) {
+ return Arrays.stream(values()).filter(faqIdEnum -> faqIdEnum.domain == domain).findAny()
+ .orElseThrow(() -> new CloudSDKException(HmsFaqIdEnum.class, domain));
+ }
+}
+
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsFormatKeyEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsFormatKeyEnum.java
new file mode 100644
index 0000000..6c7cdad
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsFormatKeyEnum.java
@@ -0,0 +1,44 @@
+package org.dromara.common.sdk.cloudapi.hms;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.1
+ * @date 2022/7/7
+ */
+public enum HmsFormatKeyEnum {
+
+ ALARM_ID("%alarmid"),
+
+ COMPONENT_INDEX("%component_index"),
+
+ INDEX("%index"),
+
+ BATTERY_INDEX("%battery_index"),
+
+ DOCK_COVER_INDEX("%dock_cover_index"),
+
+ CHARGING_ROD_INDEX("%charging_rod_index");
+
+// public static final char KEY_START = '%';
+
+ private final String key;
+
+ HmsFormatKeyEnum(String key) {
+ this.key = key;
+ }
+
+ @JsonValue
+ public String getKey() {
+ return key;
+ }
+
+ public static HmsFormatKeyEnum find(String key) {
+ return Arrays.stream(HmsFormatKeyEnum.values()).filter(format -> format.getKey().equals(key)).findAny()
+ .orElseThrow(() -> new CloudSDKException(HmsFormatKeyEnum.class, key));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsInTheSkyEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsInTheSkyEnum.java
new file mode 100644
index 0000000..11eb44b
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsInTheSkyEnum.java
@@ -0,0 +1,24 @@
+package org.dromara.common.sdk.cloudapi.hms;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * @author sean
+ * @version 1.1
+ * @date 2022/7/7
+ */
+public enum HmsInTheSkyEnum {
+
+ IN_THE_SKY("_in_the_sky");
+
+ private final String text;
+
+ HmsInTheSkyEnum(String text) {
+ this.text = text;
+ }
+
+ @JsonValue
+ public String getText() {
+ return text;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsLevelEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsLevelEnum.java
new file mode 100644
index 0000000..5e9bbb0
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsLevelEnum.java
@@ -0,0 +1,38 @@
+package org.dromara.common.sdk.cloudapi.hms;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/27
+ */
+public enum HmsLevelEnum {
+
+ INFORM(0),
+
+ NOTICE(1),
+
+ ALARM(2);
+
+ private final int level;
+
+ HmsLevelEnum(int level) {
+ this.level = level;
+ }
+
+ @JsonValue
+ public int getLevel() {
+ return level;
+ }
+
+ @JsonCreator
+ public static HmsLevelEnum find(int level) {
+ return Arrays.stream(values()).filter(levelEnum -> levelEnum.level == level).findAny()
+ .orElseThrow(() -> new CloudSDKException(HmsLevelEnum.class, level));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsMessageLanguageEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsMessageLanguageEnum.java
new file mode 100644
index 0000000..5e5d3bb
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsMessageLanguageEnum.java
@@ -0,0 +1,23 @@
+package org.dromara.common.sdk.cloudapi.hms;
+
+/**
+ * @author sean
+ * @version 1.1
+ * @date 2022/7/7
+ */
+public enum HmsMessageLanguageEnum {
+
+ EN("en"),
+
+ ZH("zh");
+
+ private final String language;
+
+ HmsMessageLanguageEnum(String language) {
+ this.language = language;
+ }
+
+ public String getLanguage() {
+ return language;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsModuleEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsModuleEnum.java
new file mode 100644
index 0000000..b2f95b5
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/HmsModuleEnum.java
@@ -0,0 +1,40 @@
+package org.dromara.common.sdk.cloudapi.hms;
+
+import org.dromara.common.sdk.exception.CloudSDKException;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import java.util.Arrays;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/27
+ */
+public enum HmsModuleEnum {
+
+ FLIGHT_MISSION(0),
+
+ DEVICE_MANAGEMENT(1),
+
+ MEDIA(2),
+
+ HMS(3);
+
+ private final int module;
+
+ HmsModuleEnum(int module) {
+ this.module = module;
+ }
+
+ @JsonValue
+ public int getModule() {
+ return module;
+ }
+
+ @JsonCreator
+ public static HmsModuleEnum find(int module) {
+ return Arrays.stream(values()).filter(moduleEnum -> moduleEnum.module == module).findAny()
+ .orElseThrow(() -> new CloudSDKException(HmsModuleEnum.class, module));
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/api/AbstractHmsService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/api/AbstractHmsService.java
new file mode 100644
index 0000000..c407cb9
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/hms/api/AbstractHmsService.java
@@ -0,0 +1,27 @@
+package org.dromara.common.sdk.cloudapi.hms.api;
+
+import org.dromara.common.sdk.cloudapi.hms.Hms;
+import org.dromara.common.sdk.mqtt.ChannelName;
+import org.dromara.common.sdk.mqtt.events.TopicEventsRequest;
+import org.springframework.integration.annotation.ServiceActivator;
+import org.springframework.messaging.MessageHeaders;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/6/27
+ */
+public abstract class AbstractHmsService {
+
+ /**
+ * Reporting of hms
+ * @param response
+ * @param headers
+ * @return
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_HMS)
+ public void hms(TopicEventsRequest response, MessageHeaders headers) {
+ throw new UnsupportedOperationException("hms not implemented");
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/CustomDataTransmissionFromEsdk.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/CustomDataTransmissionFromEsdk.java
new file mode 100644
index 0000000..52e2a20
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/CustomDataTransmissionFromEsdk.java
@@ -0,0 +1,34 @@
+package org.dromara.common.sdk.cloudapi.interconnection;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/16
+ */
+public class CustomDataTransmissionFromEsdk {
+
+ /**
+ * Data content
+ * length: Less than 256
+ */
+ private String value;
+
+ public CustomDataTransmissionFromEsdk() {
+ }
+
+ @Override
+ public String toString() {
+ return "CustomDataTransmissionFromEsdk{" +
+ "value='" + value + '\'' +
+ '}';
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public CustomDataTransmissionFromEsdk setValue(String value) {
+ this.value = value;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/CustomDataTransmissionFromPsdk.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/CustomDataTransmissionFromPsdk.java
new file mode 100644
index 0000000..c9188b3
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/CustomDataTransmissionFromPsdk.java
@@ -0,0 +1,34 @@
+package org.dromara.common.sdk.cloudapi.interconnection;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/16
+ */
+public class CustomDataTransmissionFromPsdk {
+
+ /**
+ * Data content
+ * length: Less than 256
+ */
+ private String value;
+
+ public CustomDataTransmissionFromPsdk() {
+ }
+
+ @Override
+ public String toString() {
+ return "CustomDataTransmissionFromPsdk{" +
+ "value='" + value + '\'' +
+ '}';
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public CustomDataTransmissionFromPsdk setValue(String value) {
+ this.value = value;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/CustomDataTransmissionToEsdkRequest.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/CustomDataTransmissionToEsdkRequest.java
new file mode 100644
index 0000000..ce6f38d
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/CustomDataTransmissionToEsdkRequest.java
@@ -0,0 +1,41 @@
+package org.dromara.common.sdk.cloudapi.interconnection;
+
+import org.dromara.common.sdk.common.BaseModel;
+import jakarta.validation.constraints.NotNull;
+import org.hibernate.validator.constraints.Length;
+
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/16
+ */
+public class CustomDataTransmissionToEsdkRequest extends BaseModel {
+
+ /**
+ * Data content
+ * length: Less than 256
+ */
+ @NotNull
+ @Length(max = 256)
+ private String value;
+
+ public CustomDataTransmissionToEsdkRequest() {
+ }
+
+ @Override
+ public String toString() {
+ return "CustomDataTransmissionToEsdkRequest{" +
+ "value='" + value + '\'' +
+ '}';
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public CustomDataTransmissionToEsdkRequest setValue(String value) {
+ this.value = value;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/CustomDataTransmissionToPsdkRequest.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/CustomDataTransmissionToPsdkRequest.java
new file mode 100644
index 0000000..f0f9050
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/CustomDataTransmissionToPsdkRequest.java
@@ -0,0 +1,41 @@
+package org.dromara.common.sdk.cloudapi.interconnection;
+
+import org.dromara.common.sdk.common.BaseModel;
+import jakarta.validation.constraints.NotNull;
+import org.hibernate.validator.constraints.Length;
+
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/16
+ */
+public class CustomDataTransmissionToPsdkRequest extends BaseModel {
+
+ /**
+ * Data content
+ * length: Less than 256
+ */
+ @NotNull
+ @Length(max = 256)
+ private String value;
+
+ public CustomDataTransmissionToPsdkRequest() {
+ }
+
+ @Override
+ public String toString() {
+ return "CustomDataTransmissionToPsdkRequest{" +
+ "value='" + value + '\'' +
+ '}';
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public CustomDataTransmissionToPsdkRequest setValue(String value) {
+ this.value = value;
+ return this;
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/InterconnectionMethodEnum.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/InterconnectionMethodEnum.java
new file mode 100644
index 0000000..817cb29
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/InterconnectionMethodEnum.java
@@ -0,0 +1,29 @@
+package org.dromara.common.sdk.cloudapi.interconnection;
+
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/16
+ */
+public enum InterconnectionMethodEnum {
+
+ CUSTOM_DATA_TRANSMISSION_TO_ESDK("custom_data_transmission_to_esdk"),
+
+ CUSTOM_DATA_TRANSMISSION_TO_PSDK("custom_data_transmission_to_psdk"),
+
+ ;
+
+ private final String method;
+
+ InterconnectionMethodEnum(String method) {
+ this.method = method;
+ }
+
+ @JsonValue
+ public String getMethod() {
+ return method;
+ }
+
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/api/AbstractInterconnectionService.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/api/AbstractInterconnectionService.java
new file mode 100644
index 0000000..2b8051a
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/interconnection/api/AbstractInterconnectionService.java
@@ -0,0 +1,83 @@
+package org.dromara.common.sdk.cloudapi.interconnection.api;
+
+import org.dromara.common.sdk.annotations.CloudSDKVersion;
+import org.dromara.common.sdk.cloudapi.interconnection.CustomDataTransmissionFromEsdk;
+import org.dromara.common.sdk.cloudapi.interconnection.CustomDataTransmissionToEsdkRequest;
+import org.dromara.common.sdk.cloudapi.interconnection.CustomDataTransmissionToPsdkRequest;
+import org.dromara.common.sdk.cloudapi.interconnection.InterconnectionMethodEnum;
+import org.dromara.common.sdk.config.version.CloudSDKVersionEnum;
+import org.dromara.common.sdk.config.version.GatewayManager;
+import org.dromara.common.sdk.config.version.GatewayTypeEnum;
+import org.dromara.common.sdk.mqtt.ChannelName;
+import org.dromara.common.sdk.mqtt.MqttReply;
+import org.dromara.common.sdk.mqtt.events.TopicEventsRequest;
+import org.dromara.common.sdk.mqtt.events.TopicEventsResponse;
+import org.dromara.common.sdk.mqtt.services.ServicesPublish;
+import org.dromara.common.sdk.mqtt.services.ServicesReplyData;
+import org.dromara.common.sdk.mqtt.services.TopicServicesResponse;
+import jakarta.annotation.Resource;
+import org.springframework.integration.annotation.ServiceActivator;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.MessageHeaders;
+
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/10/16
+ */
+public abstract class AbstractInterconnectionService {
+
+ @Resource
+ private ServicesPublish servicesPublish;
+
+ /**
+ * cloud-custom data transmit from esdk
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ * @return events_reply
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_CUSTOM_DATA_TRANSMISSION_FROM_ESDK, outputChannel = ChannelName.OUTBOUND_EVENTS)
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ public TopicEventsResponse customDataTransmissionFromEsdk(TopicEventsRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("customDataTransmissionFromEsdk not implemented");
+ }
+
+ /**
+ * cloud-custom data transmit to esdk
+ * @param gateway gateway device
+ * @return services_reply
+ */
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0, exclude = GatewayTypeEnum.RC)
+ public TopicServicesResponse customDataTransmissionToEsdk(GatewayManager gateway, CustomDataTransmissionToEsdkRequest request) {
+ return servicesPublish.publish(
+ gateway.getGatewaySn(),
+ InterconnectionMethodEnum.CUSTOM_DATA_TRANSMISSION_TO_ESDK.getMethod(),
+ request);
+ }
+
+ /**
+ * cloud-custom data transmit from psdk
+ * @param request data
+ * @param headers The headers for a {@link Message}.
+ * @return events_reply
+ */
+ @ServiceActivator(inputChannel = ChannelName.INBOUND_EVENTS_CUSTOM_DATA_TRANSMISSION_FROM_PSDK, outputChannel = ChannelName.OUTBOUND_EVENTS)
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0)
+ public TopicEventsResponse customDataTransmissionFromPsdk(TopicEventsRequest request, MessageHeaders headers) {
+ throw new UnsupportedOperationException("customDataTransmissionFromPsdk not implemented");
+ }
+
+ /**
+ * cloud-custom data transmit to psdk
+ * @param gateway gateway device
+ * @return services_reply
+ */
+ @CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_0, exclude = GatewayTypeEnum.RC)
+ public TopicServicesResponse customDataTransmissionToPsdk(GatewayManager gateway, CustomDataTransmissionToPsdkRequest request) {
+ return servicesPublish.publish(
+ gateway.getGatewaySn(),
+ InterconnectionMethodEnum.CUSTOM_DATA_TRANSMISSION_TO_PSDK.getMethod(),
+ request);
+ }
+}
diff --git a/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/livestream/DockLiveCapacity.java b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/livestream/DockLiveCapacity.java
new file mode 100644
index 0000000..c612894
--- /dev/null
+++ b/dk-common/common-cloudsdk/src/main/java/org/dromara/common/sdk/cloudapi/livestream/DockLiveCapacity.java
@@ -0,0 +1,66 @@
+package org.dromara.common.sdk.cloudapi.livestream;
+
+import java.util.List;
+
+/**
+ * @author sean
+ * @version 1.7
+ * @date 2023/5/23
+ */
+public class DockLiveCapacity {
+
+ /**
+ * Total number of video streams available for livestreaming.
+ * Indicates the total number of all available live video streams owned by the aircraft or device.
+ */
+ private Integer availableVideoNumber;
+
+ /**
+ * Maximum total number of video streams that can be lived stream simultaneously.
+ */
+ private Integer coexistVideoNumberMax;
+
+ /**
+ * Device live streaming capability list
+ */
+ private List deviceList;
+
+ public DockLiveCapacity() {
+ }
+
+ @Override
+ public String toString() {
+ return "DockLiveCapacity{" +
+ "availableVideoNumber=" + availableVideoNumber +
+ ", coexistVideoNumberMax=" + coexistVideoNumberMax +
+ ", deviceList=" + deviceList +
+ '}';
+ }
+
+ public Integer getAvailableVideoNumber() {
+ return availableVideoNumber;
+ }
+
+ public DockLiveCapacity setAvailableVideoNumber(Integer availableVideoNumber) {
+ this.availableVideoNumber = availableVideoNumber;
+ return this;
+ }
+
+ public Integer getCoexistVideoNumberMax() {
+ return coexistVideoNumberMax;
+ }
+
+ public DockLiveCapacity setCoexistVideoNumberMax(Integer coexistVideoNumberMax) {
+ this.coexistVideoNumberMax = coexistVideoNumberMax;
+ return this;
+ }
+
+ public List getDeviceList() {
+ return deviceList;
+ }
+
+ public DockLiveCapacity setDeviceList(List