Commit 48b8d0bc by gdj

增加一键标定功能。

parent 94d9ec2a
......@@ -58,6 +58,8 @@ public enum DebugMethodEnum {
ESIM_OPERATOR_SWITCH("esim_operator_switch", EsimOperatorSwitchRequest.class),
// 一键标定
RTK_CALIBRATION("rtk_calibration", RtkCalibrationRequest.class),
;
private final String method;
......
package com.dji.sdk.cloudapi.debug;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import java.util.Arrays;
/**
* @author guan
*/
public enum RtkCalibrationModuleEnum {
// {"3": "机场", "6": "中继" }
UNKNOWN(-1),
// {"1": "手动标定"}
DOCK(3),
RELAY(6),
;
private final int module;
RtkCalibrationModuleEnum(int module) {
this.module = module;
}
@JsonValue
public int getModule() {
return module;
}
@JsonCreator
public static RtkCalibrationModuleEnum find(int module) {
return Arrays.stream(RtkCalibrationModuleEnum.values()).filter(moduleEnum -> moduleEnum.module == module).findAny()
.orElse(UNKNOWN);
}
}
package com.dji.sdk.cloudapi.debug;
import com.dji.sdk.common.BaseModel;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author sean
* @version 1.7
* @date 2023/10/20
*/
public class RtkCalibrationRequest extends BaseModel {
@NotNull
private List<RtkCalibrationRequestData> devices;
public RtkCalibrationRequest() {
}
@Override
public String toString() {
return "RtkCalibrationRequest{" +
", devices=" + devices +
'}';
}
public List<RtkCalibrationRequestData> getDevices() {
return devices;
}
public RtkCalibrationRequest setDevices(List<RtkCalibrationRequestData> devices) {
this.devices = devices;
return this;
}
}
package com.dji.sdk.cloudapi.debug;
import com.dji.sdk.cloudapi.control.Point;
/**
* @author guan
*/
public class RtkCalibrationRequestData {
/**
* 设备序列号
*/
private String sn;
/**
* 标定类型
*/
RtkCalibrationTypeEnum type;
/**
* 模块枚举值
*/
RtkCalibrationModuleEnum module;
/**
* 标定数据
*/
Point data;
//» data 标定数据 struct
//»» longitude 经度 double
//»» latitude 纬度 double
//»» height 高度 double
@Override
public String toString() {
return "RtkCalibrationRequestData{" +
"sn=" + sn +
", type=" + type +
", module=" + module +
", data=" + data +
'}';
}
public String getSn() {
return sn;
}
public RtkCalibrationRequestData setSn(String sn) {
this.sn = sn;
return this;
}
public RtkCalibrationTypeEnum getType() {
return type;
}
public RtkCalibrationRequestData setType(RtkCalibrationTypeEnum type) {
this.type = type;
return this;
}
public RtkCalibrationModuleEnum getModule() {
return module;
}
public RtkCalibrationRequestData setModule(RtkCalibrationModuleEnum module) {
this.module = module;
return this;
}
public Point getData() {
return data;
}
public RtkCalibrationRequestData setData(Point data) {
this.data = data;
return this;
}
}
package com.dji.sdk.cloudapi.debug;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import java.util.Arrays;
/**
* @author guan
*/
public enum RtkCalibrationTypeEnum {
UNKNOWN(-1),
// {"1": "手动标定"}
MANUAL(1),
;
private final int type;
RtkCalibrationTypeEnum(int type) {
this.type = type;
}
@JsonValue
public int getType() {
return type;
}
@JsonCreator
public static RtkCalibrationTypeEnum find(int type) {
return Arrays.stream(RtkCalibrationTypeEnum.values()).filter(typeEnum -> typeEnum.type == type).findAny()
.orElse(UNKNOWN);
}
}
......@@ -392,5 +392,19 @@ public abstract class AbstractDebugService {
request);
}
/**
* 一键标定
* @param gateway gateway device
* @param request data
* @return services_reply
*/
@CloudSDKVersion(since = CloudSDKVersionEnum.V1_0_1, include = GatewayTypeEnum.DOCK3)
public TopicServicesResponse<ServicesReplyData<RemoteDebugResponse>> rtkCalibration(GatewayManager gateway, BaseModel request) {
return servicesPublish.publish(
new TypeReference<RemoteDebugResponse>() {},
gateway.getGatewaySn(),
DebugMethodEnum.RTK_CALIBRATION.getMethod(),
request);
}
}
......@@ -64,6 +64,9 @@ public enum EventsMethodEnum {
ESIM_OPERATOR_SWITCH("esim_operator_switch", ChannelName.INBOUND_EVENTS_CONTROL_PROGRESS, new TypeReference<EventsDataRequest<RemoteDebugProgress>>() {}),
RTK_CALIBRATION("rtk_calibration", ChannelName.INBOUND_EVENTS_CONTROL_PROGRESS, new TypeReference<EventsDataRequest<RemoteDebugProgress>>() {}),
OTA_PROGRESS("ota_progress", ChannelName.INBOUND_EVENTS_OTA_PROGRESS, new TypeReference<EventsDataRequest<OtaProgress>>() {}),
FILE_UPLOAD_PROGRESS("fileupload_progress", ChannelName.INBOUND_EVENTS_FILEUPLOAD_PROGRESS, new TypeReference<EventsDataRequest<FileUploadProgress>>() {}),
......
......@@ -62,5 +62,10 @@ public class DockController {
return controlService.payloadCommands(param);
}
@PostMapping("/{sn}/jobs/rtkCalibration")
public HttpResultResponse createControlJob(@PathVariable String sn,
@Valid @RequestBody RtkCalibrationParam param) {
return controlService.rtkCalibration(sn, param);
}
}
package com.dji.sample.control.model.param;
import com.dji.sdk.cloudapi.debug.RtkCalibrationRequestData;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author guan
*/
@Data
public class RtkCalibrationParam {
/**
* Identifies the dongle to be operated on.
*/
@NotNull
private List<RtkCalibrationRequestData> devices;
}
......@@ -67,4 +67,7 @@ public interface IControlService {
* @return
*/
HttpResultResponse payloadCommands(PayloadCommandsParam param) throws Exception;
HttpResultResponse rtkCalibration(String sn, RtkCalibrationParam param);
}
......@@ -266,4 +266,28 @@ public class ControlServiceImpl implements IControlService {
return manageDeviceOperatingRecordService.saveOperatingRecord(sn, operatingType, paramStr);
}
@Override
public HttpResultResponse rtkCalibration(String sn, RtkCalibrationParam param) {
saveOperatingRecord(sn, DebugMethodEnum.RTK_CALIBRATION.getMethod(), param.toString());
boolean isExist = deviceRedisService.checkDeviceOnline(sn);
if (!isExist) {
return HttpResultResponse.error("The dock is offline.");
}
DebugMethodEnum methodEnum = DebugMethodEnum.RTK_CALIBRATION;
// RemoteDebugHandler data = checkDebugCondition(sn, param, controlMethodEnum);
TopicServicesResponse response = abstractDebugService.rtkCalibration(SDKManager.getDeviceSDK(sn),
Objects.nonNull(methodEnum.getClazz()) ? mapper.convertValue(param, methodEnum.getClazz()) : null);
ServicesReplyData serviceReply = (ServicesReplyData) response.getData();
if (!serviceReply.getResult().isSuccess()) {
return HttpResultResponse.error(serviceReply.getResult());
}
return HttpResultResponse.success();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment