From a7d179d71327e16c61728ae93004fc56e25e1fb8 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Tue, 10 Jan 2023 18:12:25 +0800 Subject: [PATCH] =?UTF-8?q?[pb9][=E5=BA=95=E7=9B=98=E6=8E=A5=E5=8F=A3]=20?= =?UTF-8?q?=E7=9B=AE=E5=89=8D=E7=94=B1=E4=BA=8EM1=E8=BD=A6=E5=9E=8B?= =?UTF-8?q?=E4=B8=8D=E4=BC=9A=E5=9C=A8=E6=96=B0=E5=BA=95=E7=9B=98PB?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=B0=E7=9A=84=E5=AD=97=E6=AE=B5=20?= =?UTF-8?q?=E6=89=80=E4=BB=A5=E4=B8=B4=E6=97=B6=E4=BF=9D=E7=95=99=E8=80=81?= =?UTF-8?q?=E5=BA=95=E7=9B=98=E6=8E=A5=E5=8F=A3=E5=9B=9E=E8=B0=83=EF=BC=8C?= =?UTF-8?q?M1=E6=96=B0=E6=B7=BB=E5=8A=A0=E7=9A=84=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E4=BC=9A=E5=9C=A8=E8=80=81=E5=BA=95=E7=9B=98?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E6=8E=A5=E6=94=B6=EF=BC=8C=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E8=80=81=E5=BA=95=E7=9B=98=E7=9A=84=E6=B8=85=E6=89=AB=E8=BD=A6?= =?UTF-8?q?=E5=AF=B9=E8=B1=A1=E8=BD=AC=E6=88=90=E6=96=B0=E5=BA=95=E7=9B=98?= =?UTF-8?q?PB=E4=B8=AD=E7=9A=84=E6=B8=85=E6=89=AB=E8=BD=A6=E5=AF=B9?= =?UTF-8?q?=E8=B1=A1=EF=BC=8C=E6=9A=82=E6=97=B6=E6=B3=A8=E9=87=8A=E6=8E=89?= =?UTF-8?q?ADAS=20LIB=E4=B8=AD=E7=9A=84=E6=96=B0=E8=80=81=E5=BA=95?= =?UTF-8?q?=E7=9B=98=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhidao/adas/client/DataDistribution.java | 10 ++++ .../zhidao/adas/client/bean/VehicleState.java | 22 +++++++++ .../zhidao/adas/client/ui/InfoFragment.java | 2 + .../zhidao/adas/client/ui/MainActivity.java | 9 ++++ .../zhidao/adas/client/utils/Constants.java | 1 + .../autopilot/adapter/MoGoAdasListenerImpl.kt | 46 +++++++++++++++++++ .../support/adas/high/OnAdasListener.java | 10 ++++ .../adas/high/msg/VehicleStateMessage.java | 4 +- 8 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/VehicleState.java diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java index 3977a5c535..fdc5fbea1a 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/DataDistribution.java @@ -25,6 +25,7 @@ import com.zhidao.adas.client.bean.RoboSweeperTaskIndex; import com.zhidao.adas.client.bean.StatusInfo; import com.zhidao.adas.client.bean.TrackedObjects; import com.zhidao.adas.client.bean.Trajectory; +import com.zhidao.adas.client.bean.VehicleState; import com.zhidao.adas.client.bean.Warn; import com.zhidao.adas.client.log.LogSave; import com.zhidao.adas.client.utils.Constants; @@ -105,6 +106,7 @@ public class DataDistribution { public final List listTrajectory = new ArrayList<>(); public final List listTrackedObjects = new ArrayList<>(); public final List listGnssInfo = new ArrayList<>(); + public final List listVehicleState = new ArrayList<>(); public final List listAutopilotState = new ArrayList<>(); public final List listMogoReportMessage = new ArrayList<>(); public final List listPerceptionTrafficLight = new ArrayList<>(); @@ -182,6 +184,14 @@ public class DataDistribution { if (listener != null && Constants.TITLE.RECEIVE_GNSS_INFO.equals(listener.first)) { listener.second.onRefresh(); } + } else if (data instanceof VehicleState) { + listVehicleState.add(0, time + str); + if (listVehicleState.size() > LIST_SIZE) { + listVehicleState.remove(listVehicleState.size() - 1); + } + if (listener != null && Constants.TITLE.RECEIVE_VEHICLE_STATE.equals(listener.first)) { + listener.second.onRefresh(); + } } else if (data instanceof ChassisStates) { listChassisStates.add(0, time + str); if (listChassisStates.size() > LIST_SIZE) { diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/VehicleState.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/VehicleState.java new file mode 100644 index 0000000000..aabab1571e --- /dev/null +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/VehicleState.java @@ -0,0 +1,22 @@ +package com.zhidao.adas.client.bean; + +import com.google.protobuf.TextFormat; + +import java.text.SimpleDateFormat; + +import chassis.VehicleStateOuterClass; +import mogo.telematics.pad.MessagePad; + +public class VehicleState extends BaseInfo { + public final VehicleStateOuterClass.VehicleState bean; + + public VehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState bean, SimpleDateFormat sdf) { + super("接收", bean.getSerializedSize(), header, sdf); + this.bean = bean; + } + + @Override + public String toString() { + return super.toString() + TextFormat.printer().escapingNonAscii(false).printToString(bean); + } +} diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java index dcffd9ae35..de1c19ef3a 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/InfoFragment.java @@ -118,6 +118,8 @@ public class InfoFragment extends BaseFragment { private void setData() { if (Constants.TITLE.RECEIVE_GNSS_INFO.equals(title)) { adapter.setData(DataDistribution.getInstance().listGnssInfo); + } else if (Constants.TITLE.RECEIVE_VEHICLE_STATE.equals(title)) { + adapter.setData(DataDistribution.getInstance().listVehicleState); } else if (Constants.TITLE.RECEIVE_CHASSIS_STATES.equals(title)) { adapter.setData(DataDistribution.getInstance().listChassisStates); } else if (Constants.TITLE.RECEIVE_TRACKED_OBJECTS.equals(title)) { diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java index 7d227dbfee..7601289010 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ui/MainActivity.java @@ -79,6 +79,7 @@ import com.zhidao.adas.client.bean.SpecialVehicleBean; import com.zhidao.adas.client.bean.StatusInfo; import com.zhidao.adas.client.bean.TrackedObjects; import com.zhidao.adas.client.bean.Trajectory; +import com.zhidao.adas.client.bean.VehicleState; import com.zhidao.adas.client.bean.Warn; import com.zhidao.adas.client.log.ConnectStatusSave; import com.zhidao.adas.client.log.LogSave; @@ -118,6 +119,7 @@ import java.util.concurrent.ScheduledExecutorService; import bag_manager.BagManagerOuterClass; import chassis.Chassis; import chassis.ChassisStatesOuterClass; +import chassis.VehicleStateOuterClass; import function_state_management.FunctionStates; import io.netty.channel.Channel; import mogo.telematics.pad.MessagePad; @@ -634,6 +636,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas titleFragmentData.add(Constants.TITLE.RECEIVE_GNSS_INFO); titleFragmentData.add(Constants.TITLE.RECEIVE_TRAJECTORY); titleFragmentData.add(Constants.TITLE.RECEIVE_TRACKED_OBJECTS); + titleFragmentData.add(Constants.TITLE.RECEIVE_VEHICLE_STATE); titleFragmentData.add(Constants.TITLE.RECEIVE_CHASSIS_STATES); titleFragmentData.add(Constants.TITLE.RECEIVE_AUTOPILOT_STATE); titleFragmentData.add(Constants.TITLE.RECEIVE_FUNCTION_STATES); @@ -898,6 +901,12 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas DataDistribution.getInstance().addData(base); } + @Override + public void onVehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState vehicleState) { + VehicleState base = new VehicleState(header, vehicleState, sdf); + DataDistribution.getInstance().addData(base); + } + @Override public void onChassisStates(MessagePad.Header header, ChassisStatesOuterClass.ChassisStates chassisStates) { diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java index 36d6c898cf..990934a988 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/utils/Constants.java @@ -150,6 +150,7 @@ public class Constants { String RECEIVE_TRAJECTORY = MessageType.TYPE_RECEIVE_TRAJECTORY.desc; String RECEIVE_TRACKED_OBJECTS = MessageType.TYPE_RECEIVE_TRACKED_OBJECTS.desc; String RECEIVE_GNSS_INFO = MessageType.TYPE_RECEIVE_GNSS_INFO.desc; + String RECEIVE_VEHICLE_STATE = MessageType.TYPE_RECEIVE_VEHICLE_STATE.desc; String RECEIVE_CHASSIS_STATES = MessageType.TYPE_RECEIVE_CHASSIS_STATES.desc; String RECEIVE_AUTOPILOT_STATE = MessageType.TYPE_RECEIVE_AUTOPILOT_STATE.desc; String RECEIVE_FUNCTION_STATES = MessageType.TYPE_RECEIVE_FUNCTION_STATES.desc; diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index 683b1eadfc..90b3da6225 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -143,6 +143,52 @@ class MoGoAdasListenerImpl : OnAdasListener { } } + + /** + * 老底盘信息,透传底盘状态,pb参考底盘 + * TODO 目前由于M1车型不会在新底盘PB添加新的字段 所以临时保留 + * TODO 后期会优化掉,具体时间未知,需要工控机端新老底盘PB字段对齐 + * + * @param header 头 + * @param vehicleState 数据 + */ + @ChainLog( + linkChainLog = CHAIN_LINK_LOG_WEB_SOCKET_VEHICLE, + linkCode = CHAIN_LINK_ADAS, + endpoint = PAD, + nodeAliasCode = CHAIN_ALIAS_CODE_ADAS_MESSAGE_AUTOPILOT_VEHICLE, + paramIndexes = [0, 1], + clientPkFileName = "sn" + ) + override fun onVehicleState(header: MessagePad.Header, vehicleState: VehicleStateOuterClass.VehicleState?) { + if (vehicleState != null) { + //转向灯数据 + CallerChassisLamplightListenerManager.invokeAutopilotLightSwitchData(vehicleState.light) + //刹车灯数据 + CallerChassisLamplightListenerManager.invokeAutopilotBrakeLightData(vehicleState.brakeLightStatus) + //方向盘转向角数据 + CallerChassisSteeringStateListenerManager.invokeAutopilotSteeringData(vehicleState.steering) + //挂挡档位数据 + CallerChassisGearStateListenerManager.invokeAutopilotGearData(vehicleState.gear) + //加速度 + CallerChassisAccStateListenerManager.invokeAutopilotAcc(vehicleState.accel) + //油门 + CallerChassisThrottleStateListenerManager.invokeAutopilotThrottle(vehicleState.throttle) + //刹车 + CallerChassisBrakeStateListenerManager.invokeAutopilotBrake(vehicleState.brake) + //清扫车(福田)清扫控制系统状态 + vehicleState.sweeperFutianCleanSystemState?.also { sweeperState -> + val bytes: ByteArray = sweeperState.toByteArray() + val cleanSystemState: ChassisStatesOuterClass.SweeperFuTianTaskSystemStates? = ChassisStatesOuterClass.SweeperFuTianTaskSystemStates.parseFrom(bytes) + cleanSystemState?.let { + CallerSweeperFutianCleanSystemListenerManager.invokeSweeperFutianCleanSystemState(it) + } + } + } else { + CallerAutopilotVehicleStateListenerManager.invokeAutopilotDataException(header.timestamp.toLong()) + } + } + /** * 底盘数据 * diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java index 71cefb0ea9..53291c61ae 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/OnAdasListener.java @@ -6,6 +6,7 @@ import com.zhidao.support.adas.high.common.ProtocolStatus; import bag_manager.BagManagerOuterClass; import chassis.ChassisStatesOuterClass; +import chassis.VehicleStateOuterClass; import function_state_management.FunctionStates; import mogo.telematics.pad.MessagePad; import mogo_msg.MogoReportMsg; @@ -53,6 +54,15 @@ public interface OnAdasListener { */ void onGnssInfo(MessagePad.Header header, MessagePad.GnssInfo gnssInfo); + /** + * 老底盘信息,透传底盘状态,pb参考底盘 + * TODO 目前由于M1车型不会在新底盘PB添加新的字段 所以临时保留 + * TODO 后期会优化掉,具体时间未知,需要工控机端新老底盘PB字段对齐 + * + * @param header 头 + * @param vehicleState 数据 + */ + void onVehicleState(MessagePad.Header header, VehicleStateOuterClass.VehicleState vehicleState); /** * 底盘状态 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java index c84c6859a8..87483f2175 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/VehicleStateMessage.java @@ -28,7 +28,9 @@ public class VehicleStateMessage extends MyAbstractMessageHandler { if (CupidLogUtils.isEnableLog()) nowTime = SystemClock.elapsedRealtime(); if (adasListener != null) { - compatibility(adasListener, raw, vehicleState); + //TODO 暂时关闭新老兼容 + //compatibility(adasListener, raw, vehicleState); + adasListener.onVehicleState(raw.getHeader(), vehicleState); } AdasChannel.calculateTimeConsumingBusiness("底盘信息", nowTime); // CupidLogUtils.e("底盘信息--->" + vehicleState.toString());