package com.dji.sample.manage.model.receiver;
|
|
import com.dji.sample.manage.model.enums.StateSwitchEnum;
|
import lombok.Data;
|
import lombok.EqualsAndHashCode;
|
|
import java.util.Objects;
|
|
/**
|
* @author sean
|
* @version 1.3
|
* @date 2022/10/27
|
*/
|
@EqualsAndHashCode(callSuper = true)
|
@Data
|
public class ObstacleAvoidanceReceiver extends BasicDeviceProperty {
|
|
private Integer horizon;
|
|
private Integer upside;
|
|
private Integer downside;
|
|
@Override
|
public boolean valid() {
|
boolean valid = Objects.nonNull(this.horizon) || Objects.nonNull(this.upside) || Objects.nonNull(this.downside);
|
|
if (Objects.nonNull(this.horizon)) {
|
valid = StateSwitchEnum.find(horizon).isPresent();
|
}
|
if (Objects.nonNull(this.upside)) {
|
valid &= StateSwitchEnum.find(upside).isPresent();
|
}
|
if (Objects.nonNull(this.downside)) {
|
valid &= StateSwitchEnum.find(downside).isPresent();
|
}
|
return valid;
|
}
|
|
@Override
|
public boolean canPublish(String fieldName, OsdSubDeviceReceiver osd) {
|
ObstacleAvoidanceReceiver obstacleAvoidance = osd.getObstacleAvoidance();
|
switch (fieldName) {
|
case "horizon":
|
return Objects.isNull(obstacleAvoidance.getHorizon()) ||
|
Objects.nonNull(obstacleAvoidance.getHorizon()) &&
|
obstacleAvoidance.getHorizon().intValue() != this.horizon;
|
case "upside":
|
return Objects.isNull(obstacleAvoidance.getUpside()) ||
|
Objects.nonNull(obstacleAvoidance.getUpside()) &&
|
obstacleAvoidance.getUpside().intValue() != this.upside;
|
case "downside":
|
return Objects.isNull(obstacleAvoidance.getDownside()) ||
|
Objects.nonNull(obstacleAvoidance.getDownside()) &&
|
obstacleAvoidance.getDownside().intValue() != this.downside;
|
default:
|
throw new RuntimeException("属性 " + fieldName + "不存在");
|
}
|
}
|
}
|