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 bf71552e83..3977a5c535 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 @@ -4,6 +4,7 @@ import android.util.Pair; import com.zhidao.adas.client.bean.ArrivalNotification; import com.zhidao.adas.client.bean.AutopilotState; +import com.zhidao.adas.client.bean.BagManagerCmd; import com.zhidao.adas.client.bean.BaseInfo; import com.zhidao.adas.client.bean.BasicInfoReq; import com.zhidao.adas.client.bean.CarConfigResp; @@ -121,6 +122,7 @@ public class DataDistribution { public final List listChassisStates = new ArrayList<>(); public final List listFSMFunctionStates = new ArrayList<>(); public final List listRoboSweeperTaskIndex = new ArrayList<>(); + public final List listBagManagerCmd = new ArrayList<>(); public String cutDown(String str) { if (isCutDown && str.length() > 650) { @@ -234,6 +236,14 @@ public class DataDistribution { if (listener != null && Constants.TITLE.RECEIVE_RECORD_RESULT.equals(listener.first)) { listener.second.onRefresh(); } + } else if (data instanceof BagManagerCmd) { + listBagManagerCmd.add(0, time + str); + if (listBagManagerCmd.size() > LIST_SIZE) { + listBagManagerCmd.remove(listBagManagerCmd.size() - 1); + } + if (listener != null && Constants.TITLE.RECEIVE_BAG_MANAGER_CMD.equals(listener.first)) { + listener.second.onRefresh(); + } } else if (data instanceof GlobalPathResp) { listGlobalPathResp.add(0, time + str); if (listGlobalPathResp.size() > LIST_SIZE) { diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/BagManagerCmd.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/BagManagerCmd.java new file mode 100644 index 0000000000..db1dd0f4ab --- /dev/null +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/BagManagerCmd.java @@ -0,0 +1,24 @@ +package com.zhidao.adas.client.bean; + +import com.google.protobuf.TextFormat; + +import java.text.SimpleDateFormat; + +import bag_manager.BagManagerOuterClass; +import mogo.telematics.pad.MessagePad; + +public class BagManagerCmd extends BaseInfo { + public final BagManagerOuterClass.BagManager bean; + + public BagManagerCmd(MessagePad.Header header, BagManagerOuterClass.BagManager 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 50d8153af0..dcffd9ae35 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 @@ -138,6 +138,8 @@ public class InfoFragment extends BaseFragment { adapter.setData(DataDistribution.getInstance().listGlobalPathResp); } else if (Constants.TITLE.RECEIVE_RECORD_RESULT.equals(title)) { adapter.setData(DataDistribution.getInstance().listRecordPanel); + } else if (Constants.TITLE.RECEIVE_BAG_MANAGER_CMD.equals(title)) { + adapter.setData(DataDistribution.getInstance().listBagManagerCmd); } else if (Constants.TITLE.RECEIVE_REPORT_MESSAGE.equals(title)) { adapter.setData(DataDistribution.getInstance().listMogoReportMessage); } else if (Constants.TITLE.RECEIVE_PERCEPTION_TRAFFIC_LIGHT.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 8f648acffc..7d227dbfee 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 @@ -57,6 +57,7 @@ import com.zhidao.adas.client.base.BaseAdapter; import com.zhidao.adas.client.base.BaseFragment; import com.zhidao.adas.client.bean.ArrivalNotification; import com.zhidao.adas.client.bean.AutopilotState; +import com.zhidao.adas.client.bean.BagManagerCmd; import com.zhidao.adas.client.bean.BasicInfoReq; import com.zhidao.adas.client.bean.CarConfigResp; import com.zhidao.adas.client.bean.ChassisStates; @@ -114,6 +115,7 @@ import java.util.List; import java.util.Locale; import java.util.concurrent.ScheduledExecutorService; +import bag_manager.BagManagerOuterClass; import chassis.Chassis; import chassis.ChassisStatesOuterClass; import function_state_management.FunctionStates; @@ -644,6 +646,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas titleFragmentData.add(Constants.TITLE.RECEIVE_CAR_CONFIG_RESP); titleFragmentData.add(Constants.TITLE.RECEIVE_RECORD_DATA_CONFIG_RESP); titleFragmentData.add(Constants.TITLE.RECEIVE_RECORD_RESULT); + titleFragmentData.add(Constants.TITLE.RECEIVE_BAG_MANAGER_CMD); titleFragmentData.add(Constants.TITLE.RECEIVE_GLOBAL_PATH_RESP); titleFragmentData.add(Constants.TITLE.RECEIVE_ARRIVAL_NOTIFICATION); titleFragmentData.add(Constants.TITLE.RECEIVE_STATUS_QUERY_RESP); @@ -1035,6 +1038,11 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas DataDistribution.getInstance().addData(base); } + @Override + public void onBagManagerCmd(MessagePad.Header header, BagManagerOuterClass.BagManager bagManager) { + BagManagerCmd base = new BagManagerCmd(header, bagManager, sdf); + DataDistribution.getInstance().addData(base); + } private void initAdas() { CupidLogUtils.e(TAG, "--->初始化"); 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 cc63012c33..36d6c898cf 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 @@ -165,6 +165,7 @@ public class Constants { String TITLE_CAR_CONFIG_RESP = "工控机版本\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t配置"; String RECEIVE_CAR_CONFIG_RESP = "信息与配置"; String RECEIVE_RECORD_RESULT = MessageType.TYPE_RECEIVE_RECORD_RESULT.desc; + String RECEIVE_BAG_MANAGER_CMD = MessageType.TYPE_RECEIVE_BAG_MANAGER_CMD.desc; String RECEIVE_RECORD_DATA_CONFIG_RESP = MessageType.TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP.desc; String RECEIVE_GLOBAL_PATH_RESP = MessageType.TYPE_RECEIVE_GLOBAL_PATH_RESP.desc; String RECEIVE_WARN = MessageType.TYPE_RECEIVE_WARN.desc; diff --git a/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/ui/MainActivity.java b/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/ui/MainActivity.java index 2791e7f8c6..efda39581a 100644 --- a/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/ui/MainActivity.java +++ b/app_mogo_magic_ring/src/main/java/com/zhidao/adas/magic/ui/MainActivity.java @@ -64,11 +64,13 @@ import java.util.Locale; import java.util.Timer; import java.util.TimerTask; +import bag_manager.BagManagerOuterClass; import chassis.ChassisStatesOuterClass; import function_state_management.FunctionStates; import mogo.telematics.pad.MessagePad; import mogo_msg.MogoReportMsg; import perception.TrafficLightOuterClass; +import planning.RoboSweeperTaskIndexOuterClass; import prediction.Prediction; import record_cache.RecordPanelOuterClass; import system_master.SystemStatusInfo; @@ -542,6 +544,16 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas } + @Override + public void onSweeperTaskIndexData(MessagePad.Header header, RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex roboSweeperTaskIndex) { + + } + + @Override + public void onBagManagerCmd(MessagePad.Header header, BagManagerOuterClass.BagManager bagManager) { + + } + private void initAdas() { CupidLogUtils.e(TAG, "--->初始化"); 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 c5dcb22b48..683b1eadfc 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 @@ -1,5 +1,6 @@ package com.mogo.eagle.core.function.datacenter.autopilot.adapter +import bag_manager.BagManagerOuterClass import chassis.ChassisStatesOuterClass import chassis.VehicleStateOuterClass import com.mogo.eagle.core.data.app.AppConfigInfo @@ -473,6 +474,14 @@ class MoGoAdasListenerImpl : OnAdasListener { */ override fun onSweeperTaskIndexData(header: MessagePad.Header?, roboSweeperTaskIndex: RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex?) { + } + /** + * Bag管理应答 + * + * @param header 头 + * @param bagManager 数据 + */ + override fun onBagManagerCmd(header: MessagePad.Header?, bagManager: BagManagerOuterClass.BagManager?) { } /** 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 6e5d318b8d..a010764762 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 @@ -55,6 +55,7 @@ import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.atomic.AtomicInteger; +import bag_manager.BagManagerOuterClass; import chassis.SpecialVehicleTaskCmdOuterClass; import common.HeaderOuterClass; import mogo.telematics.pad.MessagePad; @@ -1389,5 +1390,17 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec return sendPBMessage(MessageType.TYPE_SEND_TRIP_INFO_REQ.typeCode, req.toByteArray()); } + /** + * 发送包管理请求 + * + * @param bagManager 包管理参数 + * @return boolean + */ + @Override + public boolean sendBagManagerCmd(BagManagerOuterClass.BagManager bagManager) { + return sendPBMessage(MessageType.TYPE_SEND_BAG_MANAGER_CMD.typeCode, bagManager.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 41b1aeeb01..6f7dd63466 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 @@ -15,6 +15,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import bag_manager.BagManagerOuterClass; import chassis.SpecialVehicleTaskCmdOuterClass; import mogo.telematics.pad.MessagePad; @@ -716,6 +717,17 @@ public class AdasManager implements IAdasNetCommApi { return mChannel != null && mChannel.sendTripInfoReq(type, lineName, departureStopName, arrivalStopName, isLastStop); } + /** + * 发送包管理请求 + * + * @param bagManager 包管理参数 + * @return boolean + */ + @Override + public boolean sendBagManagerCmd(BagManagerOuterClass.BagManager bagManager) { + return mChannel != null && mChannel.sendBagManagerCmd(bagManager); + } + /** * 获取工控机固定IP列表 * 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 9dba573cb5..a4c0e104fc 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 @@ -10,6 +10,7 @@ import com.zhidao.support.adas.high.common.MessageType; import java.util.List; import java.util.Set; +import bag_manager.BagManagerOuterClass; import chassis.SpecialVehicleTaskCmdOuterClass; import mogo.telematics.pad.MessagePad; @@ -427,6 +428,13 @@ public interface IAdasNetCommApi { */ boolean sendTripInfoReq(int type, String lineName, String departureStopName, String arrivalStopName, boolean isLastStop); + /** + * 发送包管理请求 + * + * @param bagManager 包管理参数 + * @return boolean + */ + boolean sendBagManagerCmd(BagManagerOuterClass.BagManager bagManager); // TODO 需求暂停 待讨论 // boolean getRoutes(); 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 5ac748cee9..71cefb0ea9 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 @@ -4,6 +4,7 @@ import com.zhidao.support.adas.high.bean.AutopilotAbility; import com.zhidao.support.adas.high.bean.AutopilotStatistics; import com.zhidao.support.adas.high.common.ProtocolStatus; +import bag_manager.BagManagerOuterClass; import chassis.ChassisStatesOuterClass; import function_state_management.FunctionStates; import mogo.telematics.pad.MessagePad; @@ -199,6 +200,14 @@ public interface OnAdasListener { */ void onSweeperTaskIndexData(MessagePad.Header header, RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex roboSweeperTaskIndex); + /** + * Bag管理应答 + * + * @param header 头 + * @param bagManager 数据 + */ + void onBagManagerCmd(MessagePad.Header header, BagManagerOuterClass.BagManager bagManager); + /** * 是否有能力启动自动驾驶 * diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java index 60c923d883..0fc6072d49 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/MessageType.java @@ -47,13 +47,15 @@ public enum MessageType { TYPE_SEND_STATUS_QUERY_REQ(MessagePad.MessageType.MsgTypeStatusQueryReq, "状态查询请求"), TYPE_RECEIVE_STATUS_QUERY_RESP(MessagePad.MessageType.MsgTypeStatusQueryResp, "状态查询应答"), TYPE_SEND_SET_RAIN_MODE_REQ(MessagePad.MessageType.MsgTypeSetRainModeReq, "设置雨天模式"), - TYPE_SEND_OPERATOR_CMD_REQ(MessagePad.MessageType.MsgTypeOperatorCmdReq, "操控指令"), TYPE_SEND_RECORD_DATA_CONFIG_REQ(MessagePad.MessageType.MsgTypeRecordDataConfigReq, "数据采集配置查询"), TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP(MessagePad.MessageType.MsgTypeRecordDataConfigResp, "数据采集配置"), + TYPE_SEND_OPERATOR_CMD_REQ(MessagePad.MessageType.MsgTypeOperatorCmdReq, "操控指令"), TYPE_SEND_SUBSCRIBE_DATA_REQ(MessagePad.MessageType.MsgTypeSubscribeDataReq, "数据订阅、取消订阅请求"), + TYPE_SEND_SPECIAL_VEHICLE_TASK_CMD(MessagePad.MessageType.MsgTypeSpecialVehicleTaskCmd, "特种车辆命令"), TYPE_SEND_SET_PARAM_REQ(MessagePad.MessageType.MsgTypeSetParamReq, "设置参数命令"), TYPE_SEND_TRIP_INFO_REQ(MessagePad.MessageType.MsgTypeTripInfoEvent, "行程信息"), - TYPE_SEND_SPECIAL_VEHICLE_TASK_CMD(MessagePad.MessageType.MsgTypeSpecialVehicleTaskCmd, "特种车辆命令"), + TYPE_SEND_BAG_MANAGER_CMD(MessagePad.MessageType.MsgTypeBagManagerCmd, "Bag管理请求"), + TYPE_RECEIVE_BAG_MANAGER_CMD(MessagePad.MessageType.MsgTypeBagManagerCmd, "Bag管理应答"), //TODO 透传原始pb文件中不存在以下type。由于Java中无法强转,所以在mogo-adas-data/message_pad.proto中放开注释 TYPE_RECEIVE_PLANNING_DECISION_STATE(MessagePad.MessageType.MsgTypePlanningDecisionState, "Planning决策状态"), TYPE_RECEIVE_SWEEPER_TASK_INDEX_DATA(MessagePad.MessageType.MsgTypeSweeperTaskIndexData, "清扫车指标数据"), diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BagManagerMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BagManagerMessage.java new file mode 100644 index 0000000000..d4717f7c86 --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/BagManagerMessage.java @@ -0,0 +1,33 @@ +package com.zhidao.support.adas.high.msg; + +import android.os.SystemClock; + +import com.google.protobuf.InvalidProtocolBufferException; +import com.zhidao.support.adas.high.AdasChannel; +import com.zhidao.support.adas.high.OnAdasListener; +import com.zhidao.support.adas.high.common.CupidLogUtils; +import com.zhidao.support.adas.high.protocol.RawData; + +import bag_manager.BagManagerOuterClass; + +/** + * Bag管理应答 + */ +public class BagManagerMessage extends MyAbstractMessageHandler { + + public BagManagerMessage() { + } + + @Override + public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { + BagManagerOuterClass.BagManager bagManager = BagManagerOuterClass.BagManager.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("Bag管理应答", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); + if (adasListener != null) { + adasListener.onBagManagerCmd(raw.getHeader(), bagManager); + } + AdasChannel.calculateTimeConsumingBusiness("Bag管理应答", nowTime); + } +} diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java index 2aa0afe7f0..58b7e381b4 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/MyMessageFactory.java @@ -34,6 +34,7 @@ public class MyMessageFactory implements IMyMessageFactory { private IMsg planningDecisionStateMessage;//planning决策状态 private IMsg functionStatesMessage;//重构后的功能状态 private IMsg sweeperTaskIndexDataMessage;//清扫车指标数据 + private IMsg bagManagerMessage;//Bag管理应答 private final AutopilotReview autopilotReview; @@ -169,6 +170,12 @@ public class MyMessageFactory implements IMyMessageFactory { functionStatesMessage = new FunctionStatesMessage(); } return functionStatesMessage; + } else if (messageType == MessageType.TYPE_RECEIVE_BAG_MANAGER_CMD.typeCode) { + //Bag管理应答 + if (bagManagerMessage == null) { + bagManagerMessage = new BagManagerMessage(); + } + return bagManagerMessage; } else { //MessageType.TYPE_DEFAULT.typeCode return null;