From 00e85c694882b2de6e6dc2b5c8096054e5abf06d Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Wed, 12 Jul 2023 17:59:26 +0800 Subject: [PATCH] =?UTF-8?q?[3.4.0][mogo-adas]=E6=B7=BB=E5=8A=A0V2I?= =?UTF-8?q?=E8=BF=9Bpnc=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotControlProvider.kt | 16 +++++- .../IMoGoAutopilotControlProvider.kt | 14 ++++- .../CallerAutoPilotControlManager.kt | 16 +++++- .../src/main/proto/param_set_cmd.proto | 3 +- .../zhidao/support/adas/high/AdasChannel.java | 56 +++++++++++-------- .../zhidao/support/adas/high/AdasManager.java | 47 ++++++++++------ .../support/adas/high/IAdasNetCommApi.java | 36 +++++++----- 7 files changed, 127 insertions(+), 61 deletions(-) diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt index f0adce03df..d385b1513b 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt @@ -729,8 +729,20 @@ class MoGoAutopilotControlProvider : } /** - * 控制V2N数据给车端PnC - * @param switchCmd true为发给PnC,false为不发给PnC + * 控制V2I进PnC + * + * @param switchCmd true:发给Pnc和鹰眼,false:不发给PnC和鹰眼 + * @return boolean + */ + override fun sendV2iToPncCmd(switchCmd: Boolean) { + AdasManager.getInstance().sendV2iToPncCmd(switchCmd) + } + + /** + * 控制V2N进PnC + * + * @param switchCmd true:发给PnC,false:不发给PnC + * @return boolean */ override fun sendV2nToPncCmd(switchCmd: Boolean) { AdasManager.getInstance().sendV2nToPncCmd(switchCmd) diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt index 16022cb32a..87f0b568b1 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt @@ -234,8 +234,18 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider { fun sendBagManagerCmd(bagManagerEntity: BagManagerEntity): Boolean /** - * 控制V2N数据给车端PnC - * @param switchCmd true为发给PnC,false为不发给PnC + * 控制V2I进PnC + * + * @param switchCmd true:发给Pnc和鹰眼,false:不发给PnC和鹰眼 + * @return boolean + */ + fun sendV2iToPncCmd(switchCmd: Boolean) + + /** + * 控制V2N进PnC + * + * @param switchCmd true:发给PnC,false:不发给PnC + * @return boolean */ fun sendV2nToPncCmd(switchCmd: Boolean) diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt index 3c1b25d845..dc1ee97e06 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt @@ -329,8 +329,20 @@ object CallerAutoPilotControlManager { } /** - * 控制V2N数据给车端PnC - * @param switchCmd true为发给PnC,false为不发给PnC + * 控制V2I进PnC + * + * @param switchCmd true:发给Pnc和鹰眼,false:不发给PnC和鹰眼 + * @return boolean + */ + fun sendV2iToPncCmd(switchCmd: Boolean){ + providerApi?.sendV2iToPncCmd(switchCmd) + } + + /** + * 控制V2N进PnC + * + * @param switchCmd true:发给PnC,false:不发给PnC + * @return boolean */ fun sendV2nToPncCmd(switchCmd: Boolean){ providerApi?.sendV2nToPncCmd(switchCmd) diff --git a/libraries/mogo-adas-data/src/main/proto/param_set_cmd.proto b/libraries/mogo-adas-data/src/main/proto/param_set_cmd.proto index 155cf621d4..168b2f07ad 100644 --- a/libraries/mogo-adas-data/src/main/proto/param_set_cmd.proto +++ b/libraries/mogo-adas-data/src/main/proto/param_set_cmd.proto @@ -1,11 +1,12 @@ syntax = "proto3"; package mogo.telematics; -enum ParamSetType +enum ParamSetType { ParamSetTypeNone = 0; ParamSetTypeBlindArea = 1; //bool, 0:off 1:on ParamSetTypeV2N = 2; //bool, 0:不发给PnC 1:发给Pnc + ParamSetTypeV2I = 3; //bool, 0:不发给PnC和鹰眼 1:发给Pnc和鹰眼,默认0 } message ParamSetCmd diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index 4b12882544..7e65f7ede2 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -5,7 +5,6 @@ import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_INIT; import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_SEND_GLOBAL_PATH; import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_SEND_SYSTEM_CMD; import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD; -import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_ADAS_START_AUTOPILOT; import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_CONNECT_ADDRESS; import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_CODE_STATUS_CHANGE_REASON; import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_SOURCE_ADAS; @@ -16,13 +15,11 @@ import android.os.Handler; import android.os.Message; import android.os.SystemClock; import android.text.TextUtils; -import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.google.protobuf.InvalidProtocolBufferException; -import com.zhjt.mogo.adas.data.bean.AdasParam; import com.zhidao.support.adas.high.bean.VersionCompatibility; import com.zhidao.support.adas.high.common.AutopilotReview; import com.zhidao.support.adas.high.common.ByteUtil; @@ -47,6 +44,7 @@ import com.zhidao.support.adas.high.subscribe.SubscribeInterface; import com.zhidao.support.adas.high.subscribe.SubscribeInterfaceOptions; import com.zhidao.support.adas.high.thread.DispatchHandler; import com.zhjt.mogo.adas.data.AdasConstants; +import com.zhjt.mogo.adas.data.bean.AdasParam; import com.zhjt.mogo.adas.data.bean.AutopilotStatistics; import com.zhjt.mogo.adas.data.sweeper.SweeperCloudTask; import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable; @@ -68,8 +66,8 @@ import java.util.concurrent.atomic.AtomicInteger; import bag_manager.BagManagerOuterClass; import chassis.SpecialVehicleTaskCmdOuterClass; import common.HeaderOuterClass; -import mogo.telematics.ParamSetCmdOuterClass; import function_state_management.FSMStatusReasonQueryOuterClass; +import mogo.telematics.ParamSetCmdOuterClass; import mogo.telematics.pad.MessagePad; import okio.ByteString; @@ -1713,9 +1711,36 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec } /** - * 控制V2N数据给车端PnC + * FSM状态原因查询 + * 当FSMFunctionStates的类型是XXX_DRIVING_OFF时查询OFF的原因 + * 当FSMFunctionStates的类型是PILOT_DRIVING_OFF时会自动调用 * - * @param switchCmd true为发给PnC,false为不发给PnC + * @param type 0:default, 1:请求反馈原因 + * @return boolean + */ + @Override + public boolean sendFSMStatusReasonQuery(int type) { + FSMStatusReasonQueryOuterClass.FSMStatusReasonQuery query = FSMStatusReasonQueryOuterClass.FSMStatusReasonQuery.newBuilder() + .setType(type) + .build(); + 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:发给PnC,false:不发给PnC * @return boolean */ @Override @@ -1742,27 +1767,14 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec ParamSetCmdOuterClass.ParamSetCmd.Builder builder = ParamSetCmdOuterClass.ParamSetCmd.newBuilder() .setSrc(1) .setType(paramSetType); - if (paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeBlindArea || paramSetType == ParamSetCmdOuterClass.ParamSetType.ParamSetTypeV2N) { + 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()); } - /** - * FSM状态原因查询 - * 当FSMFunctionStates的类型是XXX_DRIVING_OFF时查询OFF的原因 - * 当FSMFunctionStates的类型是PILOT_DRIVING_OFF时会自动调用 - * - * @param type 0:default, 1:请求反馈原因 - * @return boolean - */ - @Override - public boolean sendFSMStatusReasonQuery(int type) { - FSMStatusReasonQueryOuterClass.FSMStatusReasonQuery query = FSMStatusReasonQueryOuterClass.FSMStatusReasonQuery.newBuilder() - .setType(type) - .build(); - return sendPBMessage(MessageType.TYPE_SEND_FSM_STATUS_REASON_QUERY_REQ.typeCode, query.toByteArray()); - } /** * 发送清扫车指令到云控 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index 53e041eb9f..2f8f243e19 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -5,7 +5,6 @@ import android.text.TextUtils; import androidx.annotation.NonNull; -import com.zhjt.mogo.adas.data.bean.AdasParam; import com.zhidao.support.adas.high.bean.VersionCompatibility; import com.zhidao.support.adas.high.common.AppPreferenceHelper; import com.zhidao.support.adas.high.common.Constants; @@ -13,12 +12,13 @@ import com.zhidao.support.adas.high.common.CupidLogUtils; import com.zhidao.support.adas.high.common.Define; import com.zhidao.support.adas.high.common.MessageType; import com.zhidao.support.adas.high.common.ReceiveTimeoutManager; +import com.zhjt.mogo.adas.data.AdasConstants; +import com.zhjt.mogo.adas.data.bean.AdasParam; import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable; import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask; import com.zhjt.mogo.adas.data.sweeper.task.SweeperTaskSuspendResume; import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm; import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop; -import com.zhjt.mogo.adas.data.AdasConstants; import java.util.HashSet; import java.util.List; @@ -929,7 +929,7 @@ public class AdasManager implements IAdasNetCommApi { * 参数获取请求 * 结果回调{@link OnAdasListener#onGetParamResp(MessagePad.Header, MessagePad.SetParamReq, AdasParam)} * - * @param paramType 参数类型:libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto + * @param paramType 参数类型:libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto * @return boolean */ @Override @@ -967,9 +967,33 @@ public class AdasManager implements IAdasNetCommApi { } /** - * 控制V2N数据给车端PnC + * FSM状态原因查询 + * 当FSMFunctionStates的类型是XXX_DRIVING_OFF时查询OFF的原因 + * 当FSMFunctionStates的类型是PILOT_DRIVING_OFF时会自动调用 * - * @param switchCmd true为发给PnC,false为不发给PnC + * @param type 0:default, 1:请求反馈原因 + * @return boolean + */ + @Override + public boolean sendFSMStatusReasonQuery(int type) { + 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:发给PnC,false:不发给PnC * @return boolean */ @Override @@ -988,19 +1012,6 @@ public class AdasManager implements IAdasNetCommApi { return mChannel != null && mChannel.sendBlindAreaCmd(switchCmd); } - /** - * FSM状态原因查询 - * 当FSMFunctionStates的类型是XXX_DRIVING_OFF时查询OFF的原因 - * 当FSMFunctionStates的类型是PILOT_DRIVING_OFF时会自动调用 - * - * @param type 0:default, 1:请求反馈原因 - * @return boolean - */ - @Override - public boolean sendFSMStatusReasonQuery(int type) { - return mChannel != null && mChannel.sendFSMStatusReasonQuery(type); - } - /** * 开始大任务响应 * 1、云端下发大任务信息(type: 100001)-> sweeper_task.proto/StartTaskResp 响应信息 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index 16a2e8da3c..aa2f466ba1 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -6,12 +6,12 @@ import com.zhidao.support.adas.high.bean.VersionCompatibility; import com.zhidao.support.adas.high.common.Constants; import com.zhidao.support.adas.high.common.Define; import com.zhidao.support.adas.high.common.MessageType; +import com.zhjt.mogo.adas.data.AdasConstants; import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable; import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask; import com.zhjt.mogo.adas.data.sweeper.task.SweeperTaskSuspendResume; import com.zhjt.mogo.adas.data.sweeper.task.confirm.SweeperTaskConfirm; import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop; -import com.zhjt.mogo.adas.data.AdasConstants; import java.util.List; import java.util.Set; @@ -572,7 +572,7 @@ public interface IAdasNetCommApi { /** * 参数获取请求 * - * @param paramType 参数类型:libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto + * @param paramType 参数类型:libraries/mogo-adas-data/src/main/proto/personal/adas_constants.proto * @return boolean */ boolean sendGetParamReq(AdasConstants.MapSystemParamType paramType); @@ -602,9 +602,27 @@ public interface IAdasNetCommApi { boolean sendBagManagerCmd(BagManagerOuterClass.BagManager bagManager); /** - * 控制V2N数据给车端PnC + * FSM状态原因查询 + * 当FSMFunctionStates的类型是XXX_DRIVING_OFF时查询OFF的原因 + * 当FSMFunctionStates的类型是PILOT_DRIVING_OFF时会自动调用 * - * @param switchCmd true为发给PnC,false为不发给PnC + * @param type 0:default, 1:请求反馈原因 + * @return boolean + */ + boolean sendFSMStatusReasonQuery(int type); + + /** + * 控制V2I进PnC + * + * @param switchCmd true:发给Pnc和鹰眼,false:不发给PnC和鹰眼 默认false + * @return boolean + */ + boolean sendV2iToPncCmd(boolean switchCmd); + + /** + * 控制V2N进PnC + * + * @param switchCmd true:发给PnC,false:不发给PnC * @return boolean */ boolean sendV2nToPncCmd(boolean switchCmd); @@ -617,16 +635,6 @@ public interface IAdasNetCommApi { */ boolean sendBlindAreaCmd(boolean switchCmd); - /** - * FSM状态原因查询 - * 当FSMFunctionStates的类型是XXX_DRIVING_OFF时查询OFF的原因 - * 当FSMFunctionStates的类型是PILOT_DRIVING_OFF时会自动调用 - * - * @param type 0:default, 1:请求反馈原因 - * @return boolean - */ - boolean sendFSMStatusReasonQuery(int type); - /** * 开始大任务响应 * 1、云端下发大任务信息(type: 100001)-> sweeper_task.proto/StartTaskResp 响应信息