添加枚举
This commit is contained in:
parent
57e145b4ff
commit
425ba35452
|
|
@ -96,6 +96,18 @@ public class DeviceAttributes {
|
||||||
value -> value != null ? value.toString() : null
|
value -> value != null ? value.toString() : null
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 固件版本 (需要配置)
|
||||||
|
*/
|
||||||
|
public static final AttributeKey<String> Firmware_Version = AttributeKey.of(
|
||||||
|
"firmware_version",
|
||||||
|
String.class,
|
||||||
|
value -> value != null ? value.toString() : null
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 机场 {"0":"空闲中","1":"现场调试","2":"远程调试","3":"固件升级中","4":"作业中","5":"待标定"}
|
* 机场 {"0":"空闲中","1":"现场调试","2":"远程调试","3":"固件升级中","4":"作业中","5":"待标定"}
|
||||||
* 无人机 {"0":"待机","1":"起飞准备","2":"起飞准备完毕","3":"手动飞行","4":"自动起飞","5":"航线飞行","6":"全景拍照","7":"智能跟随","8":"ADS-B 躲避","9":"自动返航","10":"自动降落","11":"强制降落","12":"三桨叶降落","13":"升级中","14":"未连接","15":"APAS","16":"虚拟摇杆状态","17":"指令飞行","18":"空中 RTK 收敛模式","19":"机场选址中","20":"POI环绕"}
|
* 无人机 {"0":"待机","1":"起飞准备","2":"起飞准备完毕","3":"手动飞行","4":"自动起飞","5":"航线飞行","6":"全景拍照","7":"智能跟随","8":"ADS-B 躲避","9":"自动返航","10":"自动降落","11":"强制降落","12":"三桨叶降落","13":"升级中","14":"未连接","15":"APAS","16":"虚拟摇杆状态","17":"指令飞行","18":"空中 RTK 收敛模式","19":"机场选址中","20":"POI环绕"}
|
||||||
|
|
@ -169,7 +181,8 @@ public class DeviceAttributes {
|
||||||
LAST_DISCONNECT_TIME,
|
LAST_DISCONNECT_TIME,
|
||||||
DOCK_SN,
|
DOCK_SN,
|
||||||
SUB_DEVICE_SN,
|
SUB_DEVICE_SN,
|
||||||
MODE_CODE
|
MODE_CODE,
|
||||||
|
Firmware_Version
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,12 +38,68 @@ public class DeviceTelemetry {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 无人机挂载信息
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static final TelemetryKey<List<PsdkDevice>> PSDK_WIDGET_VALUES = TelemetryKey.of(
|
||||||
|
"psdk_widget_values",
|
||||||
|
(Class<List<PsdkDevice>>) (Class<?>) List.class,
|
||||||
|
value -> {
|
||||||
|
if (value == null) return null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 如果已经是 List<PsdkDevice> 类型,直接返回
|
||||||
|
if (value instanceof List) {
|
||||||
|
return (List<PsdkDevice>) value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果是字符串,需要处理 Python 风格的字典格式
|
||||||
|
if (value instanceof String) {
|
||||||
|
String jsonStr = (String) value;
|
||||||
|
|
||||||
|
// 将 Python 风格的字典转换为标准 JSON 格式
|
||||||
|
// 1. 将单引号替换为双引号
|
||||||
|
jsonStr = jsonStr.replace("'", "\"");
|
||||||
|
|
||||||
|
// 2. 处理 True/False/None (如果有的话)
|
||||||
|
jsonStr = jsonStr.replace(": True", ": true")
|
||||||
|
.replace(": False", ": false")
|
||||||
|
.replace(": None", ": null");
|
||||||
|
|
||||||
|
return OBJECT_MAPPER.readValue(
|
||||||
|
jsonStr,
|
||||||
|
new TypeReference<List<PsdkDevice>>() {}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果是其他对象(如 JsonNode),转换为 JSON 再解析
|
||||||
|
String json = OBJECT_MAPPER.writeValueAsString(value);
|
||||||
|
return OBJECT_MAPPER.readValue(
|
||||||
|
json,
|
||||||
|
new TypeReference<List<PsdkDevice>>() {}
|
||||||
|
);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException("Failed to parse psdk_widget_values: " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 机场独有状态
|
* 机场独有状态
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 舱内温度 temperature
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 舱内湿度 humidity
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务作业状态
|
* 任务作业状态
|
||||||
* {"0":"作业准备中","1":"飞行作业中","2":"作业后状态恢复","3":"自定义飞行区更新中","4":"地形障碍物更新中","5":"任务空闲","255":"飞行器异常","256":"未知状态"}
|
* {"0":"作业准备中","1":"飞行作业中","2":"作业后状态恢复","3":"自定义飞行区更新中","4":"地形障碍物更新中","5":"任务空闲","255":"飞行器异常","256":"未知状态"}
|
||||||
|
|
@ -155,50 +211,7 @@ public class DeviceTelemetry {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
// PSDK Widget Values - List<PsdkDevice>
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public static final TelemetryKey<List<PsdkDevice>> PSDK_WIDGET_VALUES = TelemetryKey.of(
|
|
||||||
"psdk_widget_values",
|
|
||||||
(Class<List<PsdkDevice>>) (Class<?>) List.class,
|
|
||||||
value -> {
|
|
||||||
if (value == null) return null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
// 如果已经是 List<PsdkDevice> 类型,直接返回
|
|
||||||
if (value instanceof List) {
|
|
||||||
return (List<PsdkDevice>) value;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果是字符串,需要处理 Python 风格的字典格式
|
|
||||||
if (value instanceof String) {
|
|
||||||
String jsonStr = (String) value;
|
|
||||||
|
|
||||||
// 将 Python 风格的字典转换为标准 JSON 格式
|
|
||||||
// 1. 将单引号替换为双引号
|
|
||||||
jsonStr = jsonStr.replace("'", "\"");
|
|
||||||
|
|
||||||
// 2. 处理 True/False/None (如果有的话)
|
|
||||||
jsonStr = jsonStr.replace(": True", ": true")
|
|
||||||
.replace(": False", ": false")
|
|
||||||
.replace(": None", ": null");
|
|
||||||
|
|
||||||
return OBJECT_MAPPER.readValue(
|
|
||||||
jsonStr,
|
|
||||||
new TypeReference<List<PsdkDevice>>() {}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 如果是其他对象(如 JsonNode),转换为 JSON 再解析
|
|
||||||
String json = OBJECT_MAPPER.writeValueAsString(value);
|
|
||||||
return OBJECT_MAPPER.readValue(
|
|
||||||
json,
|
|
||||||
new TypeReference<List<PsdkDevice>>() {}
|
|
||||||
);
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new RuntimeException("Failed to parse psdk_widget_values: " + e.getMessage(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
private DeviceTelemetry() {
|
private DeviceTelemetry() {
|
||||||
// 工具类,禁止实例化
|
// 工具类,禁止实例化
|
||||||
|
|
@ -217,7 +230,9 @@ public class DeviceTelemetry {
|
||||||
PSDK_WIDGET_VALUES,
|
PSDK_WIDGET_VALUES,
|
||||||
FlightTask_Step_Code,
|
FlightTask_Step_Code,
|
||||||
Sub_Device_Online_Status,
|
Sub_Device_Online_Status,
|
||||||
Total_Flight_Sorties
|
Total_Flight_Sorties,
|
||||||
|
Drone_Charge_State_State,
|
||||||
|
Drone_In_Dock
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue