[600][adas]添加融合模式开关;添加盲区开关;添加批量查询或单个查询接口;添加命令批量下发接口;setParam V1和V2接口兼容,支持混合调用和查询;

This commit is contained in:
xinfengkun
2023-08-16 16:47:55 +08:00
parent 8cbce5bb14
commit 71b23bb983
10 changed files with 424 additions and 152 deletions

View File

@@ -1535,14 +1535,11 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
/**
* 设置参数命令
*
* @param type 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s)
* 3:AEB开关(bool) 4:限制绕障开关(bool)
* 5:停车让行线前避让等待开关(bool) 6:地图限速功能开关(bool)
* @param type 类型{@link AdasConstants.MapSystemParamType}
* @param value 转成字符串的值
* @return boolean
*/
@Override
public boolean sendSetParamReq(int type, String value) {
private boolean sendSetParamReq(int type, String value) {
MessagePad.SetOneParam oneParam = MessagePad.SetOneParam
.newBuilder().setType(type).setValue(value).build();
MessagePad.SetParamReq req = MessagePad.SetParamReq
@@ -1552,6 +1549,71 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
return sendPBMessage(MessageType.TYPE_SEND_SET_PARAM_REQ.typeCode, req.toByteArray());
}
/**
* 设置参数命令V2
*/
private <T> boolean sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType paramSetType, T value) {
ParamSetCmdOuterClass.ParamSetCmd.Builder builder = ParamSetCmdOuterClass.ParamSetCmd.newBuilder()
.setSrc(1)
.setType(paramSetType);
if (paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea
|| paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N
|| paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2I) {
builder.setBoolValue((Boolean) value);
}
ParamSetCmdOuterClass.ParamSetCmd req = builder.build();
return sendPBMessage(MessageType.TYPE_SEND_SET_PARAM_REQ_V2.typeCode, req.toByteArray());
}
/**
* 批量设置参数命令
*
* @param param {@link AdasConstants.MapSystemParamType#DETOURING Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#DETOURING_SPEED Value类型double或double类型String}
* {@link AdasConstants.MapSystemParamType#AEB Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#LANE_CHANGE_RESTRAIN_VALID Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#STOP_YIELD_VALID Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#HADMAP_SPEED_LIMIT_VALID Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#RAMP_THETA_VALID Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#WEAK_NET_SLOW_DOWN Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#BREAKDOWN_SLOW_DOWN Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#BLIND_AREA Value类型boolean或boolean类型String}
* {@link AdasConstants.MapSystemParamType#V2N_TO_PNC Value类型boolean或boolean类型String}
* {@link AdasConstants.MapSystemParamType#V2I_TO_PNC Value类型boolean或boolean类型String}
* {@link AdasConstants.MapSystemParamType#FUSION_MODE Value类型int或int类型String}
* @return boolean
*/
@Override
public boolean sendSetParamReq(@NonNull Map<AdasConstants.MapSystemParamType, Object> param) {
boolean isV1 = true;
boolean isV2BlindArea = true;
boolean isV2V2N = true;
boolean isV2V2NI = true;
MessagePad.SetParamReq.Builder builder = MessagePad.SetParamReq.newBuilder();
for (Map.Entry<AdasConstants.MapSystemParamType, Object> entry : param.entrySet()) {
AdasConstants.MapSystemParamType key = entry.getKey();
if (key != AdasConstants.MapSystemParamType.DEFAULT_TYPE && key != AdasConstants.MapSystemParamType.M1_STITCHED_VIDEO_SELF_VEHICLE_PARAM) {
Object value = entry.getValue();
if (key == AdasConstants.MapSystemParamType.BLIND_AREA) {
isV2BlindArea = sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea, (Boolean) value);
} else if (key == AdasConstants.MapSystemParamType.V2N_TO_PNC) {
isV2V2N = sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N, (Boolean) value);
} else if (key == AdasConstants.MapSystemParamType.V2I_TO_PNC) {
isV2V2NI = sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2I, (Boolean) value);
} else {
builder.addReqs(MessagePad.SetOneParam.newBuilder().setType(key.getNumber()).setValue(String.valueOf(value)));
}
}
}
if (builder.getReqsCount() > 0) {
MessagePad.SetParamReq req = builder.build();
isV1 = sendPBMessage(MessageType.TYPE_SEND_SET_PARAM_REQ.typeCode, req.toByteArray());
}
return isV1 && isV2BlindArea && isV2V2N && isV2V2NI;
}
/**
* 绕障类功能开关
*
@@ -1657,6 +1719,51 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
return sendSetParamReq(AdasConstants.MapSystemParamType.BREAKDOWN_SLOW_DOWN_VALUE, String.valueOf(enable));
}
/**
* 融合模式
*
* @param cmd 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式默认1
* @return boolean
*/
@Override
public boolean sendFusionMode(int cmd) {
return sendSetParamReq(AdasConstants.MapSystemParamType.FUSION_MODE_VALUE, String.valueOf(cmd));
}
/**
* 盲区数据开关
*
* @param switchCmd 数据开关
* @return boolean
*/
@Override
public boolean sendBlindAreaCmd(boolean switchCmd) {
return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea, switchCmd);
}
/**
* 控制V2N进PnC
*
* @param switchCmd true发给PnCfalse不发给PnC
* @return boolean
*/
@Override
public boolean sendV2nToPncCmd(boolean switchCmd) {
return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N, switchCmd);
}
/**
* 控制V2I进PnC
*
* @param switchCmd true发给Pnc和鹰眼false不发给PnC和鹰眼
* @return boolean
*/
@Override
public boolean sendV2iToPncCmd(boolean switchCmd) {
return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2I, switchCmd);
}
/**
* 获取全部参数
* 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq, AdasParam)}
@@ -1665,7 +1772,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
*/
@Override
public boolean sendGetAllParamReq() {
return sendGetParamReq(null);
return sendGetParamReq((AdasConstants.MapSystemParamType[]) null);
}
/**
@@ -1676,9 +1783,9 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
* @return boolean
*/
@Override
public boolean sendGetParamReq(AdasConstants.MapSystemParamType paramType) {
public boolean sendGetParamReq(AdasConstants.MapSystemParamType... paramType) {
MessagePad.SetParamReq req;
if (paramType == null || paramType == AdasConstants.MapSystemParamType.DEFAULT_TYPE) {
if (paramType == null || paramType[0] == null || (paramType.length == 1 && paramType[0] == AdasConstants.MapSystemParamType.DEFAULT_TYPE)) {
req = MessagePad.SetParamReq
.newBuilder()
.addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.DETOURING_VALUE))
@@ -1691,12 +1798,19 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
.addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.WEAK_NET_SLOW_DOWN_VALUE))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.M1_STITCHED_VIDEO_SELF_VEHICLE_PARAM_VALUE))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.BREAKDOWN_SLOW_DOWN_VALUE))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.BLIND_AREA_VALUE))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.V2N_TO_PNC_VALUE))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.V2I_TO_PNC_VALUE))
.addReqs(MessagePad.SetOneParam.newBuilder().setType(AdasConstants.MapSystemParamType.FUSION_MODE_VALUE))
.build();
} else {
req = MessagePad.SetParamReq
.newBuilder()
.addReqs(MessagePad.SetOneParam.newBuilder().setType(paramType.getNumber()))
.build();
MessagePad.SetParamReq.Builder builder = MessagePad.SetParamReq.newBuilder();
for (AdasConstants.MapSystemParamType type : paramType) {
if (type != AdasConstants.MapSystemParamType.DEFAULT_TYPE) {
builder.addReqs(MessagePad.SetOneParam.newBuilder().setType(type.getNumber()));
}
}
req = builder.build();
}
return sendPBMessage(MessageType.TYPE_SEND_GET_PARAM_REQ.typeCode, req.toByteArray());
}
@@ -1761,56 +1875,6 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
return sendPBMessage(MessageType.TYPE_SEND_FSM_STATUS_REASON_QUERY_REQ.typeCode, query.toByteArray());
}
/**
* 控制V2I进PnC
*
* @param switchCmd true发给Pnc和鹰眼false不发给PnC和鹰眼
* @return boolean
*/
@Override
public boolean sendV2iToPncCmd(boolean switchCmd) {
return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2I, switchCmd);
}
/**
* 控制V2N进PnC
*
* @param switchCmd true发给PnCfalse不发给PnC
* @return boolean
*/
@Override
public boolean sendV2nToPncCmd(boolean switchCmd) {
return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N, switchCmd);
}
/**
* 盲区数据开关
*
* @param switchCmd 数据开关
* @return boolean
*/
@Override
public boolean sendBlindAreaCmd(boolean switchCmd) {
return sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea, switchCmd);
}
/**
* 设置参数命令V2
*/
private <T> boolean sendSetParamReqV2(ParamSetCmdOuterClass.ParamSetType paramSetType, T value) {
ParamSetCmdOuterClass.ParamSetCmd.Builder builder = ParamSetCmdOuterClass.ParamSetCmd.newBuilder()
.setSrc(1)
.setType(paramSetType);
if (paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea
|| paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N
|| paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2I) {
builder.setBoolValue((Boolean) value);
}
ParamSetCmdOuterClass.ParamSetCmd req = builder.build();
return sendPBMessage(MessageType.TYPE_SEND_SET_PARAM_REQ_V2.typeCode, req.toByteArray());
}
/**
* 发送清扫车指令到云控
*

View File

@@ -23,6 +23,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -862,18 +863,6 @@ public class AdasManager implements IAdasNetCommApi {
return mChannel != null && mChannel.sendOperatorCmdStopHonking();
}
/**
* 设置参数命令
*
* @param type 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s)
* @param value 转成字符串的值
* @return boolean
*/
@Override
public boolean sendSetParamReq(int type, String value) {
return mChannel != null && mChannel.sendSetParamReq(type, value);
}
/**
* 绕障类功能开关
*
@@ -978,6 +967,73 @@ public class AdasManager implements IAdasNetCommApi {
return mChannel != null && mChannel.sendBreakdownSlowDown(enable);
}
/**
* 融合模式
*
* @param cmd 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式默认1
* @return boolean
*/
@Override
public boolean sendFusionMode(int cmd) {
return mChannel != null && mChannel.sendFusionMode(cmd);
}
/**
* 盲区数据开关
*
* @param switchCmd 数据开关
* @return boolean
*/
@Override
public boolean sendBlindAreaCmd(boolean switchCmd) {
return mChannel != null && mChannel.sendBlindAreaCmd(switchCmd);
}
/**
* 控制V2N进PnC
*
* @param switchCmd true发给PnCfalse不发给PnC
* @return boolean
*/
@Override
public boolean sendV2nToPncCmd(boolean switchCmd) {
return mChannel != null && mChannel.sendV2nToPncCmd(switchCmd);
}
/**
* 控制V2I进PnC
*
* @param switchCmd true发给Pnc和鹰眼false不发给PnC和鹰眼
* @return boolean
*/
@Override
public boolean sendV2iToPncCmd(boolean switchCmd) {
return mChannel != null && mChannel.sendV2iToPncCmd(switchCmd);
}
/**
* 批量设置参数命令
*
* @param param {@link AdasConstants.MapSystemParamType#DETOURING Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#DETOURING_SPEED Value类型double或double类型String}
* {@link AdasConstants.MapSystemParamType#AEB Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#LANE_CHANGE_RESTRAIN_VALID Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#STOP_YIELD_VALID Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#HADMAP_SPEED_LIMIT_VALID Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#RAMP_THETA_VALID Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#WEAK_NET_SLOW_DOWN Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#BREAKDOWN_SLOW_DOWN Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#BLIND_AREA Value类型boolean或boolean类型String}
* {@link AdasConstants.MapSystemParamType#V2N_TO_PNC Value类型boolean或boolean类型String}
* {@link AdasConstants.MapSystemParamType#V2I_TO_PNC Value类型boolean或boolean类型String}
* {@link AdasConstants.MapSystemParamType#FUSION_MODE Value类型int或int类型String}
* @return boolean
*/
@Override
public boolean sendSetParamReq(@NonNull Map<AdasConstants.MapSystemParamType, Object> param) {
return mChannel != null && mChannel.sendSetParamReq(param);
}
/**
* 获取全部参数
* 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq, AdasParam)}
@@ -997,7 +1053,7 @@ public class AdasManager implements IAdasNetCommApi {
* @return boolean
*/
@Override
public boolean sendGetParamReq(AdasConstants.MapSystemParamType paramType) {
public boolean sendGetParamReq(AdasConstants.MapSystemParamType... paramType) {
return mChannel != null && mChannel.sendGetParamReq(paramType);
}
@@ -1043,39 +1099,6 @@ public class AdasManager implements IAdasNetCommApi {
return mChannel != null && mChannel.sendFSMStatusReasonQuery(type);
}
/**
* 控制V2I进PnC
*
* @param switchCmd true发给Pnc和鹰眼false不发给PnC和鹰眼
* @return boolean
*/
@Override
public boolean sendV2iToPncCmd(boolean switchCmd) {
return mChannel != null && mChannel.sendV2iToPncCmd(switchCmd);
}
/**
* 控制V2N进PnC
*
* @param switchCmd true发给PnCfalse不发给PnC
* @return boolean
*/
@Override
public boolean sendV2nToPncCmd(boolean switchCmd) {
return mChannel != null && mChannel.sendV2nToPncCmd(switchCmd);
}
/**
* 盲区数据开关
*
* @param switchCmd 数据开关
* @return boolean
*/
@Override
public boolean sendBlindAreaCmd(boolean switchCmd) {
return mChannel != null && mChannel.sendBlindAreaCmd(switchCmd);
}
/**
* 开始大任务响应
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto/StartTaskResp 响应信息

View File

@@ -14,6 +14,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm;
import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop;
import java.util.List;
import java.util.Map;
import java.util.Set;
import bag_manager.BagManagerOuterClass;
@@ -486,14 +487,7 @@ public interface IAdasNetCommApi {
*/
boolean sendOperatorCmdStopHonking();
/**
* 设置参数命令
*
* @param type 0:default 1:绕障类功能开关(bool) 2:变道绕障的目标障碍物速度阈值(double, m/s)
* @param value 转成字符串的值
* @return boolean
*/
boolean sendSetParamReq(int type, String value);
/*******************************设置参数命令 包括V1************************************/
/**
* 绕障类功能开关
@@ -574,6 +568,64 @@ public interface IAdasNetCommApi {
*/
boolean sendBreakdownSlowDown(int enable);
/**
* 融合模式
*
* @param cmd 1:全融合模式 2:盲区模式 3:超视距模式 4:透传模式 5:纯路侧模式默认1
* @return boolean
*/
boolean sendFusionMode(int cmd);
/*******************************设置参数命令 V2************************************/
/**
* 盲区数据开关
*
* @param switchCmd 数据开关
* @return boolean
*/
boolean sendBlindAreaCmd(boolean switchCmd);
/**
* 控制V2N进PnC
*
* @param switchCmd true发给PnCfalse不发给PnC
* @return boolean
*/
boolean sendV2nToPncCmd(boolean switchCmd);
/**
* 控制V2I进PnC
*
* @param switchCmd true发给Pnc和鹰眼false不发给PnC和鹰眼 默认false
* @return boolean
*/
boolean sendV2iToPncCmd(boolean switchCmd);
/*******************************设置参数命令 批量设置************************************/
/**
* 批量设置参数命令
*
* @param param {@link AdasConstants.MapSystemParamType#DETOURING Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#DETOURING_SPEED Value类型double或double类型String}
* {@link AdasConstants.MapSystemParamType#AEB Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#LANE_CHANGE_RESTRAIN_VALID Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#STOP_YIELD_VALID Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#HADMAP_SPEED_LIMIT_VALID Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#RAMP_THETA_VALID Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#WEAK_NET_SLOW_DOWN Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#BREAKDOWN_SLOW_DOWN Value类型int或int类型String}
* {@link AdasConstants.MapSystemParamType#BLIND_AREA Value类型boolean或boolean类型String}
* {@link AdasConstants.MapSystemParamType#V2N_TO_PNC Value类型boolean或boolean类型String}
* {@link AdasConstants.MapSystemParamType#V2I_TO_PNC Value类型boolean或boolean类型String}
* {@link AdasConstants.MapSystemParamType#FUSION_MODE Value类型int或int类型String}
* @return boolean
*/
boolean sendSetParamReq(@NonNull Map<AdasConstants.MapSystemParamType, Object> param);
/*******************************设置参数命令 获取参数************************************/
/**
* 获取全部参数
*
@@ -587,9 +639,9 @@ public interface IAdasNetCommApi {
* @param paramType 参数类型:libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto
* @return boolean
*/
boolean sendGetParamReq(AdasConstants.MapSystemParamType paramType);
boolean sendGetParamReq(AdasConstants.MapSystemParamType... paramType);
/*******************************设置参数命令************************************/
/**
* 发生行程相关
* type=1或2的时 需要参数 lineName
@@ -623,30 +675,6 @@ public interface IAdasNetCommApi {
*/
boolean sendFSMStatusReasonQuery(int type);
/**
* 控制V2I进PnC
*
* @param switchCmd true发给Pnc和鹰眼false不发给PnC和鹰眼 默认false
* @return boolean
*/
boolean sendV2iToPncCmd(boolean switchCmd);
/**
* 控制V2N进PnC
*
* @param switchCmd true发给PnCfalse不发给PnC
* @return boolean
*/
boolean sendV2nToPncCmd(boolean switchCmd);
/**
* 盲区数据开关
*
* @param switchCmd 数据开关
* @return boolean
*/
boolean sendBlindAreaCmd(boolean switchCmd);
/**
* 开始大任务响应
* 1、云端下发大任务信息type: 100001-> sweeper_task.proto/StartTaskResp 响应信息

View File

@@ -398,7 +398,7 @@ public interface OnAdasListener {
/**
* 参数获取应答
* <p>
* 调用{@link AdasManager#sendGetAllParamReq()}或{@link AdasManager#sendGetParamReq(AdasConstants.MapSystemParamType)}
* 调用{@link AdasManager#sendGetAllParamReq()}或{@link AdasManager#sendGetParamReq(AdasConstants.MapSystemParamType...)}
* 如果对应的value是空串说明没有这个param或者get失败了。重启后值还是在redis里
*
* @param header 头