package com.ard.sample.manage.model.receiver;
|
|
import com.ard.sample.manage.model.dto.BasicDeviceProperty;
|
import com.ard.sample.manage.model.enums.StateSwitchEnum;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
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 {
|
|
/**
|
* 水平避障状态 enum_int {"0":"关闭","1":"开启"}
|
* */
|
@JsonProperty("horizon")
|
private Integer horizon;
|
|
/**
|
* 上视避障状态 enum_int {"0":"关闭","1":"开启"}
|
* */
|
@JsonProperty("upside")
|
private Integer upside;
|
|
/**
|
* 下视避障状态 enum_int {"0":"关闭","1":"开启"}
|
* */
|
@JsonProperty("downside")
|
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("Property " + fieldName + " does not exist.");
|
}
|
}
|
}
|