package com.dji.sample.manage.model.receiver;
|
|
import com.dji.sdk.cloudapi.device.DockDistanceLimitStatus;
|
import com.dji.sdk.cloudapi.device.OsdDockDrone;
|
import com.dji.sdk.cloudapi.device.SwitchActionEnum;
|
import lombok.AllArgsConstructor;
|
import lombok.Data;
|
import lombok.EqualsAndHashCode;
|
import lombok.NoArgsConstructor;
|
|
import java.util.Objects;
|
|
/**
|
* The state of the drone's limited distance
|
* @author sean
|
* @version 1.3
|
* @date 2022/10/27
|
*/
|
@EqualsAndHashCode(callSuper = true)
|
@Data
|
@AllArgsConstructor
|
@NoArgsConstructor
|
public class DistanceLimitStatusReceiver extends BasicDeviceProperty {
|
|
private SwitchActionEnum state;
|
|
private Integer distanceLimit;
|
|
private static final int DISTANCE_MAX = 8000;
|
|
private static final int DISTANCE_MIN = 15;
|
|
@Override
|
public boolean valid() {
|
if (Objects.isNull(state) && Objects.isNull(distanceLimit)) {
|
return false;
|
}
|
if (Objects.nonNull(distanceLimit)) {
|
return distanceLimit >= DISTANCE_MIN && distanceLimit <= DISTANCE_MAX;
|
}
|
return true;
|
}
|
|
@Override
|
public boolean canPublish(OsdDockDrone osd) {
|
DockDistanceLimitStatus distanceLimitStatus = osd.getDistanceLimitStatus();
|
return (Objects.nonNull(distanceLimitStatus.getState()) && distanceLimitStatus.getState() != this.state)
|
|| (Objects.nonNull(distanceLimitStatus.getDistanceLimit())
|
&& distanceLimitStatus.getDistanceLimit().intValue() != this.distanceLimit);
|
}
|
}
|