package com.dji.sample.control.model.dto;
|
|
import com.dji.sample.common.util.SpringBeanUtilsTest;
|
import com.dji.sample.control.service.impl.RemoteDebugHandler;
|
import com.dji.sample.manage.model.dto.DeviceDTO;
|
import com.dji.sample.manage.service.IDeviceRedisService;
|
import com.dji.sdk.cloudapi.device.DroneModeCodeEnum;
|
import com.dji.sdk.cloudapi.device.OsdDockDrone;
|
|
/**
|
* @author sean
|
* @version 1.4
|
* @date 2023/4/19
|
*/
|
|
public class ReturnHomeState extends RemoteDebugHandler {
|
|
@Override
|
public boolean canPublish(String sn) {
|
IDeviceRedisService deviceRedisService = SpringBeanUtilsTest.getBean(IDeviceRedisService.class);
|
return deviceRedisService.getDeviceOnline(sn)
|
.map(DeviceDTO::getChildDeviceSn)
|
.flatMap(deviceSn -> deviceRedisService.getDeviceOsd(deviceSn, OsdDockDrone.class))
|
.map(osd -> osd.getElevation() > 0 && modeCodeCanReturnHome(osd.getModeCode()))
|
.orElse(false);
|
}
|
|
private boolean modeCodeCanReturnHome(DroneModeCodeEnum modeCode) {
|
return DroneModeCodeEnum.TAKEOFF_FINISHED == modeCode || DroneModeCodeEnum.TAKEOFF_AUTO == modeCode
|
|| DroneModeCodeEnum.WAYLINE == modeCode || DroneModeCodeEnum.PANORAMIC_SHOT == modeCode
|
|| DroneModeCodeEnum.ACTIVE_TRACK == modeCode || DroneModeCodeEnum.APAS == modeCode
|
|| DroneModeCodeEnum.VIRTUAL_JOYSTICK == modeCode || DroneModeCodeEnum.MANUAL == modeCode;
|
}
|
}
|