liusuyi
2024-10-29 8c0516f9ce33bc398689a7f3e95cf9e08d05f3bf
增加:错误码打印
1 files added
1 files modified
500 ■■■■■ changed files
ard-work/src/main/java/com/ard/tianyu/netty/handler/ErrorCodeEnum.java 456 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java 44 ●●●●● patch | view | raw | blame | history
ard-work/src/main/java/com/ard/tianyu/netty/handler/ErrorCodeEnum.java
New file
@@ -0,0 +1,456 @@
package com.ard.tianyu.netty.handler;
import com.ard.common.utils.StringUtils;
import java.util.Objects;
/**
 * 错误码枚举
 * 刘苏义
 * 2024/3/7 10:50:52
 */
public enum ErrorCodeEnum {
    ERROR_0(0, "成功"),
    ERROR_1(1, "执行V3航线航点任务id不匹配"),
    ERROR_2(2, "执行V3航线信息错误"),
    ERROR_3(3, "执行V3航线WPMZ文件不匹配"),
    ERROR_4(4, "加载V3航线WPMZ文件失败"),
    ERROR_5(5, "执行V3航线WPMZ文件不匹配"),
    ERROR_6(6, "执行V3航线指令无效"),
    ERROR_81(81, "自动起飞失败,电池电压差过大"),
    ERROR_160(160, "开始航线失败,未上传航线"),
    ERROR_216(216, "拍照失败,存储卡已满"),
    ERROR_224(224, "拍照失败,未安装载荷"),
    ERROR_227(227, "拍照失败,未安装存储卡"),
    ERROR_257(257, "飞机正在航线中,重复执行航线"),
    ERROR_258(258, "在当前状态下无法中断航线"),
    ERROR_259(259, "航线未运行时不能停止航线"),
    ERROR_261(261, "飞行任务冲突,无法获得飞机的控制权限"),
    ERROR_513(513, "执行V3航线失败由于航点高度超过区域限高"),
    ERROR_514(514, "执行V3航线失败由于航线距离超过区域限远"),
    ERROR_515(515, "执行V3航线失败由于航线路径跨越禁飞区"),
    ERROR_519(519, "执行V3航线失败由于禁飞区边界限制"),
    ERROR_520(520, "执行V3航线失败由于遥控器失灵"),
    ERROR_521(521, "执行V3航线失败由于机场高度限制"),
    ERROR_522(522, "V3航线请求起飞失败"),
    ERROR_523(523, "V3航线自动起飞失败"),
    ERROR_528(528, "执行V3航线失败由于防御限制"),
    ERROR_769(769, "执行V3航线失败由于gps无效"),
    ERROR_770(770, "执行V3航线失败由于遥控器档位模式"),
    ERROR_771(771, "执行V3航线失败由于返航点记录失败"),
    ERROR_772(772, "执行V3航线失败由于电量过低"),
    ERROR_773(773, "执行V3航线失败由于返航"),
    ERROR_774(774, "执行V3航线失败由于adsb错误"),
    ERROR_775(775, "执行V3航线失败由于遥控器失联"),
    ERROR_776(776, "执行V3航线失败由于rtk未准备好"),
    ERROR_777(777, "执行V3航线失败由于无人机正在移动"),
    ERROR_778(778, "执行V3航线失败由于无人机在地面上,且电机已打开"),
    ERROR_779(779, "执行V3航线失败由于地面跟随相机无效"),
    ERROR_780(780, "执行V3航线失败由于地面跟随高度无效"),
    ERROR_781(781, "执行V3航线失败由于地面跟随地图错误"),
    ERROR_782(782, "执行V3航线失败由于返航点与rtk不一致"),
    ERROR_784(784, "执行V3航线失败由于风速过大"),
    ERROR_999(999, "航线飞行中不允许上传新航线"),
    ERROR_1000(1000, "航线格式错误"),
    ERROR_1001(1001, "下载航线失败"),
    ERROR_1023(1023, "执行V3航线失败由于无人机严重错误"),
    ERROR_1025(1025, "执行V3航线失败由于无法找到有效载荷"),
    ERROR_1026(1026, "执行V3航线失败由于操作执行失败"),
    ERROR_1027(1027, "执行V3航线失败由于未装载农药"),
    ERROR_1028(1028, "执行V3航线失败由于雷达异常断开"),
    ERROR_1200(1200, "M210停止航线出错"),
    ERROR_1281(1281, "执行V3航线失败由于用户退出"),
    ERROR_1282(1282, "执行V3航线失败由于用户中断"),
    ERROR_1283(1283, "执行V3航线失败由于用户设置返航点"),
    ERROR_1284(1284, "执行V3航线失败由于用户agro计划器状态更改"),
    ERROR_1285(1285, "执行V3航线失败由于切换遥控器模式"),
    ERROR_1536(1536, "执行V3航线失败由于航线轨迹初始化失败"),
    ERROR_1537(1537, "执行V3航线失败由于航线轨迹异常退出"),
    ERROR_1538(1538, "执行V3航线失败由于在地面,且电机已打开"),
    ERROR_1539(1539, "执行V3航线失败由于航线轨迹起始索引无效"),
    ERROR_1540(1540, "执行V3航线失败由于航线轨迹的csys模式无效"),
    ERROR_1541(1541, "执行V3航线失败由于航线轨迹高度模式无效"),
    ERROR_1542(1542, "执行V3航线失败由于航线轨迹航点无效"),
    ERROR_1543(1543, "执行V3航线失败由于航线轨迹偏航模式无效"),
    ERROR_1544(1544, "执行V3航线失败由于航线轨迹模式无效"),
    ERROR_1545(1545, "执行V3航线失败由于航线轨迹航点类型无效"),
    ERROR_1546(1546, "执行V3航线失败由于第一个航点类型错误"),
    ERROR_1547(1547, "执行V3航线失败由于航线全局水平超出范围"),
    ERROR_1548(1548, "执行V3航线失败由于航点数量超出范围"),
    ERROR_1549(1549, "执行V3航线失败由于航点经度或者维度超出范围"),
    ERROR_1550(1550, "执行V3航线失败由于转弯半径超出范围"),
    ERROR_1551(1551, "执行V3航线失败由于航线最大水平超出范围"),
    ERROR_1552(1552, "执行V3航线失败由于航线超出范围"),
    ERROR_1553(1553, "执行V3航线失败由于航迹偏航超出范围"),
    ERROR_1554(1554, "执行V3航线失败由于航线偏航模式无效"),
    ERROR_1555(1555, "执行V3航线失败由于航线中断信息任务id改变"),
    ERROR_1556(1556, "执行V3航线失败由于航线中断信息进度超出范围"),
    ERROR_1557(1557, "执行V3航线失败由于航线中断信息无效"),
    ERROR_1558(1558, "执行V3航线失败由于航线中断信息索引超出范围"),
    ERROR_1559(1559, "执行V3航线失败由于航线中断经度或者维度超出范围"),
    ERROR_1560(1560, "执行V3航线失败由于航线中断信息偏离航线范围"),
    ERROR_1561(1561, "执行V3航线失败由于航迹无效中断信息标志"),
    ERROR_1562(1562, "执行V3航线失败由于获取航线信息失败"),
    ERROR_1563(1563, "执行V3航线失败由于航迹生成失败"),
    ERROR_1564(1564, "执行V3航线失败由于航线lib库运行失败"),
    ERROR_1565(1565, "执行V3航线失败由于紧急制动"),
    ERROR_1588(1588, "执行V3航线失败由于动作点执行异常"),
    ERROR_1591(1591, "执行V3航线失败由于动作点索引重复"),
    ERROR_1592(1592, "执行V3航线失败由于航线大小太长或太短"),
    ERROR_1593(1593, "执行V3航线失败由于动作点树为空"),
    ERROR_1594(1594, "执行V3航线失败由于动作点树层为空"),
    ERROR_1595(1595, "执行V3航线失败由于动作点重复"),
    ERROR_1596(1596, "执行V3航线失败由于操作模式子数小于2"),
    ERROR_1597(1597, "执行V3航线失败由于动作点索引超出范围"),
    ERROR_1598(1598, "执行V3航线失败由于动作点ID为65535"),
    ERROR_1599(1599, "执行V3航线失败由于动作子节点不一致"),
    ERROR_1600(1600, "执行V3航线失败由于动作树层数过多"),
    ERROR_1601(1601, "执行V3航线失败由于动作树层数太少"),
    ERROR_1602(1602, "执行V3航线失败由于动作组超出范围"),
    ERROR_1603(1603, "执行V3航线失败由于动作组有效范围错误"),
    ERROR_1604(1604, "执行V3航线失败由于动作树根状态无效"),
    ERROR_1605(1605, "执行V3航线失败由于动作树模式状态无效"),
    ERROR_1606(1606, "执行V3航线失败由于中断信息动作组id超出范围"),
    ERROR_1607(1607, "执行V3航线失败由于动作状态树大小错误"),
    ERROR_1608(1608, "执行V3航线失败由于中断信息触发运行结果无效"),
    ERROR_1609(1609, "执行V3航线失败由于中断信息动作组id重复"),
    ERROR_1610(1610, "执行V3航线失败由于中断信息动作位置重复"),
    ERROR_1611(1611, "执行V3航线失败由于中断信息动作位置超出范围"),
    ERROR_1612(1612, "执行V3航线失败由于恢复id不在中断信息中"),
    ERROR_1613(1613, "执行V3航线失败由于将动作状态从无中断修改为中断"),
    ERROR_1614(1614, "执行V3航线失败由于无效的恢复信息"),
    ERROR_1626(1626, "切换视频源参数不正确"),
    ERROR_1634(1634, "执行V3航线失败由于未找到航点动作执行器"),
    ERROR_1649(1649, "执行V3航线失败由于未找到航点动作触发器"),
    ERROR_1650(1650, "执行V3航线失败由于单次检查失败"),
    ERROR_1700(1700, "M210开始航线出错"),
    ERROR_1701(1701, "开始航线失败,航线中请勿重复开始航线"),
    ERROR_1800(1800, "M210暂停航线出错"),
    ERROR_1801(1801, "暂停航线失败,1:重启云盒后请返航 2:不支持暂停遥控器开启的航线"),
    ERROR_1802(1802, "暂停航线失败,暂停一个未开始的航线"),
    ERROR_1900(1900, "M210继续航线出错"),
    ERROR_1901(1901, "断点续飞失败,请结束航线"),
    ERROR_1902(1902, "安全返航失败,请手动接管返航"),
    ERROR_1903(1903, "恢复航线失败,1:重启云盒后请返航 2:不支持恢复遥控器暂停的航线"),ERROR_2000(2000, "停止航线失败,1:重启云盒后请返航 2:不支持停止遥控器开启的航线"),
    ERROR_2121(2121, "修改返航高度参数不正确"),
    ERROR_2200(2200, "修改相机模式指令错误"),
    ERROR_2222(2222, "修改相机模式参数不正确"),
    ERROR_2400(2400, "非录像模式下开始录像"),
    ERROR_2500(2500, "非录像中停止录像"),
    ERROR_2600(2600, "切换广角视频源失败,请确认载荷是否有该功能"),
    ERROR_2601(2601, "切换变焦视频源失败,请确认载荷是否有该功能"),
    ERROR_2602(2602, "切换红外视频源失败,请确认载荷是否有该功能"),
    ERROR_2727(2727, "切换摄像头参数不正确"),
    ERROR_3100(3100, "设置降落点失败,获取飞机HOME点状态异常"),
    ERROR_3131(3131, "设置降落点参数不正确"),
    ERROR_5000(5000, "正在二维码降落中,禁止切换视频源"),
    ERROR_5001(5001, "正在二维码降落中,禁止修改相机模式"),
    ERROR_5002(5002, "当前飞行器不在返航中,请勿执行取消返航"),
    ERROR_5003(5003, "下载V3航线失败"),
    ERROR_5004(5004, "飞行器在地面,无需返航"),
    ERROR_5005(5005, "飞行器正在返航中"),
    ERROR_5006(5006, "请勿重复开始录像"),
    ERROR_5007(5007, "恢复航线失败,恢复一个未开始的航线"),
    ERROR_5008(5008, "停止航线失败,停止一个未开始的航线"),
    ERROR_5009(5009, "云盒固件升级中,禁止起飞"),
    ERROR_5010(5010, "云盒固件升级中,禁止开始航线"),
    ERROR_5011(5011, "云盒固件不支持激光测距,请联系技术支持"),
    ERROR_6000(6000, "指点飞行开始成功"),
    ERROR_6001(6001, "指点飞行中途变更目标点成功"),
    ERROR_6002(6002, "停止指点飞行成功"),
    ERROR_6003(6003, "手动对焦成功"),
    ERROR_6004(6004, "开始载荷精准降落"),
    ERROR_6005(6005, "开始下视精准降落"),
    ERROR_6006(6006, "二维码识别成功,即将取消自动降落进入二维码引导降落"),
    ERROR_6007(6007, "精准降落成功"),
    ERROR_6008(6008, "停止精准降落"),
    ERROR_6009(6009, "无人机已关机"),
    ERROR_6010(6010, "航线执行完成"),
    ERROR_6011(6011, "指定距离飞行完成,已到达目标点"),
    ERROR_6012(6012, "指定距离飞行开始成功"),
    ERROR_6013(6013, "指定距离飞行中途变更目标点成功"),
    ERROR_6014(6014, "停止指定距离飞行成功"),
    ERROR_6015(6015, "图片实时回传模块初始化成功"),
    ERROR_6016(6016, "开始激光测距成功"),
    ERROR_6017(6017, "结束激光测距成功"),
    ERROR_6018(6018, "开始单点测温成功"),
    ERROR_6019(6019, "结束单点测温成功"),
    ERROR_6020(6020, "开始区域测温成功"),
    ERROR_6021(6021, "结束区域测温成功"),
    ERROR_7001(7001, "载荷不支持切换视频源"),
    ERROR_7002(7002, "FPV视频中不支持切换视频源"),
    ERROR_7003(7003, "正在二维码降落中,禁止控制载荷"),
    ERROR_7004(7004, "正在二维码降落中,禁止关闭视频"),
    ERROR_7005(7005, "正在二维码降落中,禁止切换视频码流"),
    ERROR_7006(7006, "正在二维码降落中,禁止切换FPV视频"),
    ERROR_7007(7007, "正在二维码降落中,禁止拍照"),
    ERROR_7008(7008, "当前画面已经是FPV,请勿重复切换"),
    ERROR_7009(7009, "当前画面已经是载荷,请勿重复切换"),
    ERROR_7010(7010, "操控飞机无效,请先获取控制权"),
    ERROR_7011(7011, "指点飞行失败,请先获取控制权"),
    ERROR_7012(7012, "指点飞行失败,请将飞机升到空中"),
    ERROR_7013(7013, "指点飞行失败,打点距离大于20KM"),
    ERROR_7014(7014, "精准降落校准载荷,请勿使用遥控器控制载荷"),
    ERROR_7015(7015, "此版本云盒固件不支持设置云台模式,如需使用请联系技术支持升级"),
    ERROR_7016(7016, "航线任务已中断,可能原因【遥控器切挡/飞行器强制返航/网络RTK信号丢失/GPS信号丢失】"),
    ERROR_7017(7017, "航线任务已中断,遥控器取消航线"),
    ERROR_7018(7018, "航线任务已中断,请勿在电机开启状态下开始航线"),
    ERROR_7019(7019, "航线任务已中断,自动起飞超时"),
    ERROR_7020(7020, "航线任务已中断,自动起飞未达到预定高度"),
    ERROR_7021(7021, "航线任务已中断,自动起飞异常"),
    ERROR_7022(7022, "航线任务已中断,被高优先级任务抢占"),
    ERROR_7023(7023, "航线任务已中断,未知原因"),
    ERROR_7024(7024, "航线任务已中断,航线规划失败"),
    ERROR_7025(7025, "机场航线规划失败,请检查起飞机场坐标和备降点坐标是否设置成功"),
    ERROR_7026(7026, "机场航线规划失败,请检查降落机场坐标和备降点坐标是否设置成功"),
    ERROR_7027(7027, "电机启动中请勿自动起飞"),
    ERROR_7028(7028, "飞机已在空中请勿自动起飞"),
    ERROR_7029(7029, "飞机已在地面请勿自动降落"),
    ERROR_7030(7030, "正在二维码降落中,禁止切换载荷模式,请保持在录像模式下"),
    ERROR_7031(7031, "无人机起飞时不允许获取/释放操纵杆控制权限,建议:请在起飞前或起飞后进行操作"),
    ERROR_7032(7032, "无人机降落时不允许获取/释放操纵杆控制权限,建议:请在降落前或降落后进行操作"),
    ERROR_7033(7033, "一键起飞指定高度失败,飞行器首次上电起飞请保持遥控器与飞行器连接"),
    ERROR_7034(7034, "电机启动中,请勿紧急制动"),
    ERROR_7035(7035, "自动起飞失败,请先解除紧急制动"),
    ERROR_7036(7036, "自动返航失败,请先解除紧急制动"),
    ERROR_7037(7037, "自动降落失败,请先解除紧急制动"),
    ERROR_7038(7038, "开始任务失败,请先解除紧急制动"),
    ERROR_7039(7039, "恢复任务失败,请先解除紧急制动"),
    ERROR_7040(7040, "强制降落失败,请先解除紧急制动"),
    ERROR_7041(7041, "返航到指定机场失败,检测到飞行器在地面"),
    ERROR_7042(7042, "返航到指定机场失败,飞机当前位置距离机场大于20KM"),
    ERROR_7043(7043, "返航到指定机场失败,请先解除紧急制动"),
    ERROR_7044(7044, "打点飞行失败,安全模式自动起飞失败"),
    ERROR_7045(7045, "打点飞行失败,安全模式自动起飞超时"),
    ERROR_7046(7046, "打点飞行失败,检测到飞行器距上障碍物距离小于3米"),
    ERROR_7047(7047, "打点飞行失败,获取飞机控制权异常,请检查当前飞机模式"),
    ERROR_7048(7048, "打点飞行失败,请先解除紧急制动"),
    ERROR_7049(7049, "指定距离飞行失败,请先解除紧急制动"),
    ERROR_7050(7050, "指定距离飞行失败,获取飞机控制权异常,请检查当前飞机模式"),
    ERROR_7051(7051, "打点飞行失败,安全模式自动起飞失败,打点高度不能小于20米"),
    ERROR_7052(7052, "返航到指定机场失败,返航高度设置不正确,范围应在【20~1500】米"),
    ERROR_7053(7053, "修改返航高度失败,返航高度设置不正确,范围应在【20~1500】米"),
    ERROR_7054(7054, "开启激光测距失败,GPS信号弱,请移至空旷地"),
    ERROR_7055(7055, "开始单点测温失败,设定单点测温坐标失败"),
    ERROR_7056(7056, "开始区域测温失败,设定区域测温坐标失败"),
    ERROR_7057(7057, "打点飞行失败,安全模式自动起飞失败,GPS信号弱,请移至空旷地"),
    ERROR_7058(7058, "飞行器已在地面请勿强制降落"),
    ERROR_7059(7059, "云盒固件版本过低,不支持此功能,请联系技术支持远程升级"),
    ERROR_7060(7060, "开始航线失败,请先取消返航"),
    ERROR_7061(7061, "开始航线失败,请先取消降落"),
    ERROR_7062(7062, "打点飞行失败,请先取消返航"), ERROR_7063(7063, "打点飞行失败,请先取消降落"),
    ERROR_7064(7064, "返航到指定机场失败,请先取消降落"),
    ERROR_7065(7065, "切换FPV失败,飞行器无FPV镜头"),
    ERROR_7066(7066, "图片实时回传功能已失效,遥控器格式完相机后请重启云盒或飞机"),
    ERROR_8000(8000, "航线中触发避障,被动触发暂停航线"),
    ERROR_8001(8001, "指点飞行退出,检测到返航或降落或强制降落状态"),
    ERROR_8002(8002, "指点飞行退出,检测到飞机在地面"),
    ERROR_8003(8003, "初始化图片实时回传功能异常,请检查载荷TF卡是否安装"),
    ERROR_8004(8004, "初始化图片实时回传功能异常"),
    ERROR_8005(8005, "机场开仓超时,即将降落至备降点"),
    ERROR_8006(8006, "机场开仓失败,即将降落至备降点"),
    ERROR_8007(8007, "二维码识别超时,即将降落至备降点"),
    ERROR_8008(8008, "二维码识别超时,请人工接管"),
    ERROR_8009(8009, "二维码精准降落初始化失败,请检查载荷类型"),
    ERROR_8010(8010, "未识别到二维码,即将降落至备降点"),
    ERROR_8011(8011, "二维码降落中检测到被动返航,请注意飞机电量,必要时遥控器接管"),
    ERROR_8012(8012, "云盒控制权丢失,MSDK程序抢夺控制权,有炸机风险请遥控器接管"),
    ERROR_8013(8013, "云盒控制权丢失,遥控器失联重置"),
    ERROR_8014(8014, "云盒控制权丢失,遥控器非P挡"),
    ERROR_8015(8015, "云盒控制权丢失,遥控器切挡"),
    ERROR_8016(8016, "云盒控制权丢失,遥控器暂停触发"),
    ERROR_8017(8017, "云盒控制权丢失,遥控器触发返航"),
    ERROR_8018(8018, "云盒控制权丢失,飞机触发低电量返航,请注意安全"),
    ERROR_8019(8019, "云盒控制权丢失,飞机触发低电量强制降落,请注意安全"),
    ERROR_8020(8020, "云盒控制权丢失,OSDK断连,请遥控器接管飞机"),
    ERROR_8021(8021, "云盒控制权丢失,到达禁飞区边界,请确认空域"),
    ERROR_8022(8022, "飞机距前障碍物距离小于3米,请谨慎飞行"),
    ERROR_8023(8023, "飞机距右障碍物距离小于3米,请谨慎飞行"),
    ERROR_8024(8024, "飞机距后障碍物距离小于3米,请谨慎飞行"),
    ERROR_8025(8025, "飞机距左障碍物距离小于3米,请谨慎飞行"),
    ERROR_8026(8026, "飞机距上障碍物距离小于3米,请谨慎飞行"),
    ERROR_8027(8027, "视频编解码模块异常,开始发送原画,请不要用遥控器长时间查看载荷媒体库"),
    ERROR_8028(8028, "视频编解码模块异常,即将降落至备降点"),
    ERROR_8029(8029, "指点飞行退出,检测到云盒无控制权"),
    ERROR_8030(8030, "起飞机场备降点距机场距离不合理,范围应在【5~500】米,请重新设置"),
    ERROR_8031(8031, "降落机场备降点距机场距离不合理,范围应在【5~500】米,请重新设置"),
    ERROR_8032(8032, "一键起飞指定高度退出,检测到手动中断飞机起飞升高"),
    ERROR_8033(8033, "一键起飞指定高度退出,检测到飞行器距上障碍物距离小于3米"),
    ERROR_8034(8034, "一键起飞指定高度退出,检测到云盒无控制权"),
    ERROR_8035(8035, "一键降落指定高度退出,飞行器已取消降落"),
    ERROR_8036(8036, "一键降落指定高度退出,检测到飞行器距下障碍物距离小于10米"),
    ERROR_8037(8037, "距离控制飞行退出,检测到飞行器不在空中"),
    ERROR_8038(8038, "距离控制飞行退出,检测到云盒丢失控制权"),
    ERROR_8039(8039, "距离控制飞行退出,检测到飞行器返航"),
    ERROR_8040(8040, "距离控制飞行退出,检测到飞行器降落"),
    ERROR_8041(8041, "距离控制飞行退出,检测到已到达最长控制时长"),
    ERROR_8042(8042, "飞行器已在自定义电子围栏外,控制已失效,请立即返航或降落"),
    ERROR_8043(8043, "飞行器已在自定义禁飞区内,控制已失效,请立即返航或降落"),
    ERROR_8044(8044, "一键起飞指定高度退出,检测到紧急制动"),
    ERROR_8045(8045, "打点飞行退出,检测到紧急制动"),
    ERROR_8046(8046, "飞行器悬停等待机场开仓中,请勿操控飞行器"),
    ERROR_8047(8047, "距离控制飞行退出,检测到紧急制动"),ERROR_65535(65535, "致命错误!意外结果!"),
    ERROR_65536(65536, "成功"),
    ERROR_65537(65537, "最小初始航点值设置大于允许的最大航点值"),
    ERROR_65538(65538, "最小初始航点值小于允许的最小航点数量"),
    ERROR_65539(65539, "航点终点指数等于或大于总航点数"),
    ERROR_65540(65540, "开始指数大于上传的航线的终点指数"),
    ERROR_65541(65541, "上传的航点终点指数大于初始航点总数"),
    ERROR_65542(65542, "预期下载的首尾航点指数不在FC中存储的范围内"),
    ERROR_65544(65544, "当前位置远离第一个航点"),
    ERROR_65546(65546, "两个相邻航点过于接近,其结果可能与实际不同"),
    ERROR_65547(65547, "两个相邻的航点不在[0.5m,5000m]范围内,其结果可能与实际不同"),
    ERROR_65548(65548, "上传航线的最大速度大于总体最大速度"),
    ERROR_65549(65549, "上传航线的本地巡航速度大于本地最高限速"),
    ERROR_65550(65550, "上传航线的本地巡航速度大于总体最高限速"),
    ERROR_65551(65551, "总体最大速度大于允许的最大速度或小于允许的最小速度"),
    ERROR_65552(65552, "总体巡航速度大于总体最大速度"),
    ERROR_65553(65553, "返航模式超出航线设置的返航范围"),
    ERROR_65554(65554, "结束操作超出计划航线设定的结束范围"),
    ERROR_65555(65555, "rc_lost_action超出计划航线设定的 rc_lost_action范围"),
    ERROR_65556(65556, "上传航线的偏航角模式无效。参考航线规划中的偏航角模式定义。"),
    ERROR_65557(65557, "上传航线中的偏航指令不在范围内。范围应在 [-180 180]度"),
    ERROR_65558(65558, "上传航线的偏航转向无效。应为0:顺时针或1:逆时针"),
    ERROR_65559(65559, "上载航线的航线类型无效。参考math\\u waypoint\\u planner.h中定义的航点类型"),
    ERROR_65560(65560, "开始/停止指令无效"),
    ERROR_65561(65561, "暂停/恢复指令不属于任何指令范围"),
    ERROR_65562(65562, "break/restore命令不等于任何指令范围"),
    ERROR_65563(65563, "初始参考点位置坐标超出设定的范围"),
    ERROR_65564(65564, "阻尼距离大于或等于相邻航点的距离"),
    ERROR_65565(65565, "无法将航线退出类型设置为航线"),
    ERROR_65566(65566, "地面站初始信息尚未上传"),
    ERROR_65567(65567, "航线尚未上传"),
    ERROR_65568(65568, "最小初始航点数未上传"),
    ERROR_65569(65569, "收到起飞命令时航点计划已开始"),
    ERROR_65570(65570, "收到停止命令时航点计划未运行"),
    ERROR_65571(65571, "地面站未启动(暂停/继续时)"),
    ERROR_65572(65572, "地面站未启动(中断/恢复时)"),
    ERROR_65573(65573, "不在航点任务内(无法暂停/继续或中断/恢复)"),
    ERROR_65574(65574, "当前状态是暂停,无法再次使用暂停命令"),
    ERROR_65575(65575, "当前不在暂停状态,无法使用继续命令"),
    ERROR_65576(65576, "当前状态是中断,无法再次使用中断命令"),
    ERROR_65577(65577, "当前不在中断状态,无法使用恢复命令"),
    ERROR_65578(65578, "配置禁止使用暂停/继续API"),
    ERROR_65579(65579, "配置禁止使用中断/恢复API"),
    ERROR_65580(65580, "没有可还原断点的记录"),
    ERROR_65581(65581, "当前没有记录可恢复的轨迹任务点"),
    ERROR_65582(65582, "没有下一个轨迹任务点可进行恢复"),
    ERROR_65583(65583, "没有再下一个轨迹任务点可进行恢复"),
    ERROR_65584(65584, "上传的航点索引与储存的航点不连续"),
    ERROR_65585(65585, "选择进入的航线模式设置的不是这个初始起点的航线"),
    ERROR_65586(65586, "航点计划在航点初始化时已启动"),
    ERROR_65587(65587, "航点阻尼距离超出设定范围"),
    ERROR_65588(65588, "航点坐标位置超出合理范围"),
    ERROR_65589(65589, "首个航点类型错误,无法启动航线"),
    ERROR_65590(65590, "航点位置超出高度范围"),
    ERROR_65592(65592, "航点位置超出距离范围"),
    ERROR_65593(65593, "航点位置超出高度范围"),
    ERROR_65696(65696, "未上传航线"),ERROR_131072(131072, "成功"),
    ERROR_131073(131073, "航点验证失败"),
    ERROR_131074(131074, "原点尚未记录"),
    ERROR_131075(131075, "由于GPS信号不良,当前定位精度较低"),
    ERROR_131077(131077, "RTK未连接或无效"),
    ERROR_196608(196608, "成功"),
    ERROR_196609(196609, "轨道穿过NFZ"),
    ERROR_196610(196610, "智能电池的电流容量或非智能电池的电压低于1级或2级阈值"),
    ERROR_4194304(4194304, "成功"),
    ERROR_4194305(4194305, "操作的ID是重复的"),
    ERROR_4194306(4194306, "内存空间不足"),
    ERROR_4194307(4194307, "用于获取操作信息的缓冲区大小小于操作大小"),
    ERROR_4194308(4194308, "找不到操作的ID"),
    ERROR_4194309(4194309, "下载操作开始ID大于操作结束ID"),
    ERROR_4194310(4194310, "无法下载或获取操作内核中存储的无操作项的最小-最大操作ID"),
    ERROR_4259840(4259840, "成功"),
    ERROR_4259841(4259841, "触发器的类型ID无效"),
    ERROR_4259873(4259873, "到达航路点触发器中的结束索引小于开始索引"),
    ERROR_4259874(4259874, "间隔大于开始索引到结束索引的差值"),
    ERROR_4259875(4259875, "自动终止,间隔大于开始索引到结束索引的差值"),
    ERROR_4259905(4259905, "关联类型大于最大值"),
    ERROR_4259969(4259969, "间隔类型大于最大值"),
    ERROR_4325376(4325376, "成功"),
    ERROR_4325377(4325377, "不支持执行致动器,例如,尝试停止摄像机拍摄"),
    ERROR_4325378(4325378, "执行器的类型ID无效"),
    ERROR_4325379(4325379, "执行器的功能ID无效"),
    ERROR_4390912(4390912, "成功"),
    ERROR_4390913(4390913, "无法将快照cmd发送到相机"),
    ERROR_4390914(4390914, "无法向摄像头发送视频启动命令"),
    ERROR_4390915(4390915, "无法向摄像头发送视频停止命令"),
    ERROR_4390916(4390916, "相机焦点参数xy超出有效范围(0,1)"),
    ERROR_4390917(4390917, "无法向摄像头发送调焦指令"),
    ERROR_4390918(4390918, "无法向摄像头发送聚焦指令"),
    ERROR_4390919(4390919, "相机对焦功能的焦距超出有效范围"),
    ERROR_4391168(4391168, "相机无法执行命令"),
    ERROR_4456448(4456448, "成功"),
    ERROR_4456449(4456449, "控制参数无效"),
    ERROR_4456450(4456450, "时间参数无效"),
    ERROR_4456451(4456451, "无法到达目标角度"),
    ERROR_4456452(4456452, "转向设备忙或无转向设备"),
    ERROR_4456453(4456453, "索引错误"),
    ERROR_4587520(4587520, "成功"),
    ERROR_4587521(4587521, "偏航角大于最大偏航角"),
    ERROR_4587522(4587522, "超时,无法达到目标偏航角"),
    ERROR_4587523(4587523, "偏航角已占用"),
    ERROR_4587524(4587524, "设置偏航角与现在的值相同"),
    ERROR_4653056(4653056, "成功"),
    ERROR_4653057(4653057, "载荷控制指令发送失败"),
    ERROR_4653058(4653058, "载荷控制指令执行失败");
    /**
     * 枚举码
     */
    private Integer code;
    /**
     * 枚举描述
     */
    private String desc;
    private ErrorCodeEnum(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }
    public Integer getCode() {
        return code;
    }
    public String getDesc() {
        return desc;
    }
    /**
     * 根据枚举码获取枚举
     *
     * @param code 枚举码
     * @return 枚举
     */
    public static final ErrorCodeEnum getByCode(Integer code) {
        if (StringUtils.isNull(code)) {
            return null;
        }
        for (ErrorCodeEnum item : ErrorCodeEnum.values()) {
            if (item.getCode() == code) {
                return item;
            }
        }
        return null;
    }
    /**
     * 根据枚举码获取枚举描述
     *
     * @param code 枚举码
     * @return 枚举描述
     */
    public static final String getDescByCode(Integer code) {
        if (StringUtils.isNull(code)) {
            return "错误码为空";
        }
        for (ErrorCodeEnum item : ErrorCodeEnum.values()) {
            if (Objects.equals(item.getCode(), code)) {
                return item.getDesc();
            }
        }
        return "找不到错误码对应的错误描述,请联系管理员";
    }
}
ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java
@@ -36,6 +36,7 @@
import com.ard.tianyu.netty.command.real.UavStateCmd;
import com.ard.tianyu.netty.command.real.UavTelemetryDataCmd;
import com.ard.tianyu.netty.command.register.*;
import com.ard.tianyu.netty.handler.ErrorCodeEnum;
import com.ard.tianyu.service.ITyService;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
@@ -332,7 +333,7 @@
            case 0x01:
                // 处理心跳消息
                RegisterReplyCmd registerReplyCommand = (RegisterReplyCmd) tyCommand;
                log.debug("收到注册消息-->处理注册消息:{}", registerReplyCommand.getSuccess());
                logPrint("注册消息", registerReplyCommand.getSuccess());
                if (registerReplyCommand.getSuccess() != 1) {
                    // 注册失败,重新注册
                    log.info("注册失败,重新注册");
@@ -342,7 +343,7 @@
            case 0x02:
                // 处理注册消息
                HeartbeatReplyCmd heartbeatReplyCmd = (HeartbeatReplyCmd) tyCommand;
                log.debug("收到心跳消息-->处理心跳消息:{}", heartbeatReplyCmd.getTimestamp());
                logPrint("心跳消息", heartbeatReplyCmd.getTimestamp());
                break;
            case 0x03:
                // 处理订阅消息
@@ -353,28 +354,28 @@
            case 0x0A:
                // 处理云盒开关机通知消息
                BoxPowerStatusReplyCmd boxPowerStatusReplyCmd = (BoxPowerStatusReplyCmd) tyCommand;
                log.debug("收到云盒开关机通知消息-->状态:{}", boxPowerStatusReplyCmd.getStatus());
                logPrint("云盒开关机通知消息", boxPowerStatusReplyCmd.getStatus());
                break;
            case (byte) 0xA8:
                // 处理无人机状态消息
                log.debug("收到无人机状态消息-->无人机状态消息");
                UavStateCmd uavStateCmd = (UavStateCmd) tyCommand;
                UavState uavState = UavStateConverter.convertProtoToEntity(uavStateCmd.getUavState());
                UavStateCache.putUavState(uavState);
                logPrint("无人机状态", uavState.getBoxSn());
                break;
            case (byte) 0xA9:
                // 处理无人机遥测消息
                log.debug("收到无人机遥测消息-->无人机遥测消息");
                UavTelemetryDataCmd uavTelemetryDataCmd = (UavTelemetryDataCmd) tyCommand;
                TelemetryData telemetryData = UavTelemetryDataConverter.convertProtoToEntity(uavTelemetryDataCmd.getTelemetryData());
                UavTelemetryDataCache.putUavTelemetryData(telemetryData);
                logPrint("无人机遥测", telemetryData.getBoxSn());
                break;
            case (byte) 0x0C:
                // 处理无人机信道质量数据
                log.debug("收到无人机信道质量数据消息-->无人机信道质量数据消息");
                SignalInfoCmd signalInfoCmd = (SignalInfoCmd) tyCommand;
                SignalInfo signalInfo = UavSignalInfoConverter.convertProtoToEntity(signalInfoCmd.getSignalInfo());
                UavSignalInfoCache.putUavSignalInfoCache(signalInfo);
                logPrint("无人机信道质量", signalInfo.getBoxSn());
                break;
            case (byte) 0xD1:
                // 处理无人机
@@ -382,41 +383,41 @@
                    UavInitReplyCmd uavInitReplyCmd = (UavInitReplyCmd) tyCommand;
                    UavInitInfoCmd uavInitCommand = new UavInitInfoCmd(uavInitReplyCmd.getBoxSn());
                    this.sendMessage(tyConfiguration.getIpPort(), uavInitCommand);
                    log.info("收到无人机初始化详情-回复防止再次发送");
                    logPrint("无人机初始化详情", uavInitCommand.getBoxSn());
                }
                if (tyCommand instanceof UavReadyReplyCmd) {
                    UavReadyReplyCmd uavReadyReplyCmd = (UavReadyReplyCmd) tyCommand;
                    log.info("收到无人机准备完成通知,电池电量{} 经度{} 纬度{} 海拔{}", uavReadyReplyCmd.getBatteryPower(), uavReadyReplyCmd.getLongitude(), uavReadyReplyCmd.getLatitude(), uavReadyReplyCmd.getAltitude());
                    logPrint("无人机准备完成通知", uavReadyReplyCmd.getBatteryPower());
                }
                if (tyCommand instanceof CameraModeReplyCmd) {
                    CameraModeReplyCmd cameraModeReplyCommand = (CameraModeReplyCmd) tyCommand;
                    log.info("收到无人机设置相机模式回复:{} 错误码:{}", String.format("0x%02X", cameraModeReplyCommand.getResult() & 0xFF), cameraModeReplyCommand.getErrorCode());
                    logPrint("无人机设置相机模式", cameraModeReplyCommand.getResult(), cameraModeReplyCommand.getErrorCode());
                }
                if (tyCommand instanceof FlyWayEndReplyCmd) {
                    FlyWayEndReplyCmd flyWayEndReplyCmd = (FlyWayEndReplyCmd) tyCommand;
                    log.info("收到无人机飞行结束通知:状态:{}", flyWayEndReplyCmd.getResult());
                    logPrint("无人机飞行结束", flyWayEndReplyCmd.getResult(), flyWayEndReplyCmd.getErrorCode());
                }
                if (tyCommand instanceof CapturePicReplyCmd) {
                    CapturePicReplyCmd capturePicReplyCommand = (CapturePicReplyCmd) tyCommand;
                    log.info("收到无人机拍照回复:{} 错误码:{}", String.format("0x%02X", capturePicReplyCommand.getResult() & 0xFF), capturePicReplyCommand.getErrorCode());
                    logPrint("无人机拍照", capturePicReplyCommand.getResult(), capturePicReplyCommand.getErrorCode());
                }
                if (tyCommand instanceof RecordStartReplyCmd) {
                    RecordStartReplyCmd recordStartReplyCommand = (RecordStartReplyCmd) tyCommand;
                    log.info("收到无人机开始录像回复:{} 错误码:{}", String.format("0x%02X", recordStartReplyCommand.getResult() & 0xFF), recordStartReplyCommand.getErrorCode());
                    logPrint("无人机开始录像", recordStartReplyCommand.getResult(), recordStartReplyCommand.getErrorCode());
                }
                if (tyCommand instanceof RecordStopReplyCmd) {
                    RecordStopReplyCmd recordStopReplyCommand = (RecordStopReplyCmd) tyCommand;
                    log.info("收到无人机停止录像回复:{} 错误码:{}", String.format("0x%02X", recordStopReplyCommand.getResult() & 0xFF), recordStopReplyCommand.getErrorCode());
                    logPrint("无人机停止录像", recordStopReplyCommand.getResult(), recordStopReplyCommand.getErrorCode());
                }
                //起飞回复
                if (tyCommand instanceof TakeOffReplyCmd) {
                    TakeOffReplyCmd takeOffReplyCommand = (TakeOffReplyCmd) tyCommand;
                    log.info("收到无人机起飞回复:{} 错误码:{}", String.format("0x%02X", takeOffReplyCommand.getResult() & 0xFF), takeOffReplyCommand.getErrorCode());
                    logPrint("无人机起飞", takeOffReplyCommand.getResult(), takeOffReplyCommand.getErrorCode());
                }
                //返航回复
                if (tyCommand instanceof ReturnHomeReplyCmd) {
                    ReturnHomeReplyCmd returnHomeReplyCmd = (ReturnHomeReplyCmd) tyCommand;
                    log.info("收到无人机返航回复:{} 错误码:{}", String.format("0x%02X", returnHomeReplyCmd.getResult() & 0xFF), returnHomeReplyCmd.getErrorCode());
                    logPrint("无人机返航", returnHomeReplyCmd.getResult(), returnHomeReplyCmd.getErrorCode());
                }
                break;
            default:
@@ -425,6 +426,19 @@
        }
    }
    //公共日志打印
    private void logPrint(String message, Object obj) {
        log.debug("收到{}回复{}", message, obj);
    }
    //公共日志打印
    private void logPrint(String message, byte result, Integer errorCode) {
        log.info("收到{}回复:{} 错误码:{}【{}】",
                message,
                String.format("0x%02X", result & 0xFF),
                errorCode,
                ErrorCodeEnum.getDescByCode(errorCode));
    }
    /**
     * 定时3秒发送心跳指令
     */