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 9849c55113..9b06a4edfb 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 @@ -619,6 +619,34 @@ class MoGoAutopilotControlProvider : } } + /** + * 会车开关 + * isEnable = true 开启 + * isEnable = false 关闭 + * @return boolean + */ + override fun sendParkVehCross(isEnable: Boolean): Boolean { + return if (isEnable) { + AdasManager.getInstance().sendParkVehCross(1) > -1 + } else { + AdasManager.getInstance().sendParkVehCross(0) > -1 + } + } + + /** + * 超车开关 + * isEnable = true 开启 + * isEnable = false 关闭 + * @return boolean + */ + override fun sendParkVehOvertake(isEnable: Boolean): Boolean { + return if (isEnable) { + AdasManager.getInstance().sendParkVehOvertake(1) > -1 + } else { + AdasManager.getInstance().sendParkVehOvertake(0) > -1 + } + } + /** * 变道绕障的目标障碍物速度阈值 * @param speed 速度阈值 m/s diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt index 368e2d6a61..b0fa1c1e75 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt @@ -71,6 +71,8 @@ import kotlinx.android.synthetic.main.view_sop_setting.view.scObstacleAvoidance import kotlinx.android.synthetic.main.view_sop_setting.view.scObu import kotlinx.android.synthetic.main.view_sop_setting.view.scObuV2vView import kotlinx.android.synthetic.main.view_sop_setting.view.scObuWeaknessTrafficSop +import kotlinx.android.synthetic.main.view_sop_setting.view.scParkVehCross +import kotlinx.android.synthetic.main.view_sop_setting.view.scParkVehOvertake import kotlinx.android.synthetic.main.view_sop_setting.view.scRainMode import kotlinx.android.synthetic.main.view_sop_setting.view.scRouteDynamicEffect import kotlinx.android.synthetic.main.view_sop_setting.view.scRunRedLightSop @@ -511,6 +513,22 @@ internal class SOPSettingView @JvmOverloads constructor( * 与车相关类设置 */ private fun vehicleSetting() { + //PNC-park-会车 + scParkVehCross.isChecked = FunctionBuildConfig.isOpenParkVehCross + scParkVehCross.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP PNC-park-会车, ", isChecked) + CallerAutoPilotControlManager.sendParkVehCross(isChecked) + FunctionBuildConfig.isOpenParkVehCross = isChecked + } + //PNC-park-超车 + scParkVehOvertake.isChecked = FunctionBuildConfig.isOpenOvertake + scParkVehOvertake.setOnCheckedChangeListener { _, isChecked -> + hmiAction("SOP PNC-park-超车, ", isChecked) + CallerAutoPilotControlManager.sendParkVehOvertake(isChecked) + FunctionBuildConfig.isOpenOvertake = isChecked + } + + //绕障类功能 scObstacleAvoidance.isChecked = FunctionBuildConfig.isDetouring scObstacleAvoidance.setOnCheckedChangeListener { _, isChecked -> diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml index c41a080f15..f94f9a8ae7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml @@ -410,6 +410,36 @@ app:layout_constraintGuide_percent="0.5" app:layout_constraintLeft_toLeftOf="@id/tvVehicleTitle" app:layout_constraintRight_toRightOf="parent" /> + + + + + + + + app:layout_constraintTop_toBottomOf="@id/scParkVehCross" /> + app:layout_constraintTop_toBottomOf="@id/scParkVehOvertake" /> =0:表示添加到WS发送消息队列 @@ -2455,6 +2458,36 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec return sendSetParamReq(AdasConstants.MapSystemParamType.OVERTAKE_MAX_SPEED_VALUE, String.valueOf(maxSpeed)); } + /** + * 会车开关 + * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck + * + * @param enable 0: off 1:on 默认0 + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + @Override + public long sendParkVehCross(int enable) { + return sendSetParamReq(AdasConstants.MapSystemParamType.PARK_VEH_CROSS_VALUE, String.valueOf(enable)); + } + + /** + * 超车开关 + * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck + * + * @param enable 0: off 1:on 默认0 + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + @Override + public long sendParkVehOvertake(int enable) { + return sendSetParamReq(AdasConstants.MapSystemParamType.PARK_VEH_OVERTAKE_VALUE, String.valueOf(enable)); + } + /** * 盲区数据开关 * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck 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 f29f121e3c..a82e210b6f 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 @@ -1371,6 +1371,36 @@ public class AdasManager implements IAdasNetCommApi { return mChannel == null ? -1L : mChannel.sendOvertakeMaxSpeed(maxSpeed); } + /** + * 会车开关 + * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck + * + * @param enable 0: off 1:on 默认0 + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + @Override + public long sendParkVehCross(int enable) { + return mChannel == null ? -1L : mChannel.sendParkVehCross(enable); + } + + /** + * 超车开关 + * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck + * + * @param enable 0: off 1:on 默认0 + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + @Override + public long sendParkVehOvertake(int enable) { + return mChannel == null ? -1L : mChannel.sendParkVehOvertake(enable); + } + /** * 盲区数据开关 * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck @@ -1436,6 +1466,9 @@ public class AdasManager implements IAdasNetCommApi { * {@link AdasConstants.MapSystemParamType#SEAT_STATE Value类型:int或int类型String} * {@link AdasConstants.MapSystemParamType#OVERTAKE_MAX_SPEED Value类型:double或double类型String} * {@link AdasConstants.MapSystemParamType#FAULT_SIMULATION_CMD Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#COLLISION_REPORTING Value类型:null} + * {@link AdasConstants.MapSystemParamType#PARK_VEH_CROSS Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#PARK_VEH_OVERTAKE Value类型:int或int类型String} * @return 消息是否添加到WS消息发送队列。由于批量设置参数,调用的域控接口存在不同,实际调用域控最多2个接口,调用次数最多4次,所以最多返回4条ID数据 * * 返回值为非0的正整数时表示下发消息的消息ID * * >=0:表示添加到WS发送消息队列 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 5ba39f8bf5..0fb65021f7 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 @@ -946,6 +946,31 @@ public interface IAdasNetCommApi { */ long sendOvertakeMaxSpeed(double maxSpeed); + /** + * 会车开关 + * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck + * + * @param enable 0: off 1:on 默认0 + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + long sendParkVehCross(int enable); + + /** + * 超车开关 + * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck + * + * @param enable 0: off 1:on 默认0 + * @return 消息是否添加到WS消息发送队列,返回值为非0的正整数时表示下发消息的消息ID + * * >=0:表示添加到WS发送消息队列 + * * =0:表示乘客屏模式添加到WS发送消息队列 + * * -1L:添加到WS发送消息队列失败 + */ + long sendParkVehOvertake(int enable); + + /*******************************设置参数命令 V2************************************/ /** * 盲区数据开关 @@ -1005,6 +1030,9 @@ public interface IAdasNetCommApi { * {@link AdasConstants.MapSystemParamType#SEAT_STATE Value类型:int或int类型String} * {@link AdasConstants.MapSystemParamType#OVERTAKE_MAX_SPEED Value类型:double或double类型String} * {@link AdasConstants.MapSystemParamType#FAULT_SIMULATION_CMD Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#COLLISION_REPORTING Value类型:null} + * {@link AdasConstants.MapSystemParamType#PARK_VEH_CROSS Value类型:int或int类型String} + * {@link AdasConstants.MapSystemParamType#PARK_VEH_OVERTAKE Value类型:int或int类型String} * @return 消息是否添加到WS消息发送队列。由于批量设置参数,调用的域控接口存在不同,实际调用域控最多2个接口,调用次数最多4次,所以最多返回4条ID数据 * * 返回值为非0的正整数时表示下发消息的消息ID * * >=0:表示添加到WS发送消息队列