From 824a7c931217d1a404332c8d14952fc75de660dc Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Thu, 13 Jun 2024 16:19:31 +0800 Subject: [PATCH] =?UTF-8?q?[650][adas]=20=E6=96=B0=E5=A2=9E=E5=AE=9A?= =?UTF-8?q?=E4=BD=8D=E7=8A=B6=E6=80=81=E6=96=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/adapter/MoGoAdasListenerImpl.kt | 13 ++++++++ .../IMoGoLocalizationStateListener.kt | 19 +++++++++++ .../CallerLocalizationStateListenerManager.kt | 23 +++++++++++++ .../zhjt/mogo/adas/common/MessageType.java | 1 + .../src/main/proto/loc_state.proto | 15 +++++++++ .../src/main/proto/message_pad.proto | 6 +++- .../support/adas/high/OnAdasListener.java | 11 +++++++ .../high/msg/LocalizationStateMessage.java | 33 +++++++++++++++++++ .../adas/high/msg/MyMessageFactory.java | 7 ++++ 9 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoLocalizationStateListener.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerLocalizationStateListenerManager.kt create mode 100644 libraries/mogo-adas-data/src/main/proto/loc_state.proto create mode 100644 libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/LocalizationStateMessage.java 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 3233537066..033f7abf8b 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 @@ -75,6 +75,7 @@ import com.zhjt.mogo.adas.data.sweeper.task.stop.SweeperTaskStop import com.zhjt.service.chain.ChainLog import fault_management.FmInfo import function_state_management.FunctionStates +import localization.LocState import mogo.telematics.pad.MessagePad import mogo.telematics.pad.MessagePad.TrackedObject import mogo.v2x.MogoV2X @@ -491,6 +492,18 @@ class MoGoAdasListenerImpl : OnAdasListener { CallerFaultManagementStateListenerManager.invokeFaultManagementState(fmInfo) } + /** + * 定位状态 + * 定位呈现状态透传 用于pad图标显示 1hz 所有车型MAP440开始支持 + * 详细解释:http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=131757484 + * + * @param header 头 + * @param locState 数据 + */ + override fun onLocalizationState(header: MessagePad.Header?, locState: LocState.loc_state) { + CallerLocalizationStateListenerManager.invokeLocalizationState(locState) + } + /** * 数据采集配置应答 */ diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoLocalizationStateListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoLocalizationStateListener.kt new file mode 100644 index 0000000000..2c9b921e29 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoLocalizationStateListener.kt @@ -0,0 +1,19 @@ +package com.mogo.eagle.core.function.api.autopilot + +import localization.LocState + + +/** + *定位状态新接口 + * 定位呈现状态透传 用于pad图标显示 1hz 所有车型MAP440开始支持 + * 详细解释:http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=131757484 + */ +interface IMoGoLocalizationStateListener { + + /** + * 定位状态 + * @param locState 数据 + */ + fun onLocalizationState(locState: LocState.loc_state) + +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerLocalizationStateListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerLocalizationStateListenerManager.kt new file mode 100644 index 0000000000..e8ea429965 --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerLocalizationStateListenerManager.kt @@ -0,0 +1,23 @@ +package com.mogo.eagle.core.function.call.autopilot + +import com.mogo.eagle.core.function.api.autopilot.IMoGoLocalizationStateListener +import com.mogo.eagle.core.function.call.base.CallerBase +import localization.LocState + +/** + *定位状态新接口 + * 定位呈现状态透传 用于pad图标显示 1hz 所有车型MAP440开始支持 + * 详细解释:http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=131757484 + */ +object CallerLocalizationStateListenerManager : CallerBase() { + + + fun invokeLocalizationState(locState: LocState.loc_state) { + M_LISTENERS.forEach { + val listener = it.value + listener.onLocalizationState(locState) + } + } + + +} \ No newline at end of file diff --git a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java index 3e4d223910..5001453be1 100644 --- a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java +++ b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/common/MessageType.java @@ -30,6 +30,7 @@ public enum MessageType { TYPE_RECEIVE_M1_STITCHED_VIDEO(MessagePad.MessageType.MsgTypeM1StitchedVideo, "M1拼接视频"), TYPE_RECEIVE_SSM(MessagePad.MessageType.MsgTypeSSMState, "SSM系统状态"), TYPE_RECEIVE_FM_STATE(MessagePad.MessageType.MsgTypeFMState, "FM状态"), + TYPE_RECEIVE_LOC_STATE(MessagePad.MessageType.MsgTypeLocState, "定位状态"), TYPE_RECEIVE_BASIC_INFO_REQ(MessagePad.MessageType.MsgTypeBasicInfoReq, "自动驾驶设备基础信息请求"), TYPE_SEND_BASIC_INFO_RESP(MessagePad.MessageType.MsgTypeBasicInfoResp, "自动驾驶设备基础信息应答"), diff --git a/libraries/mogo-adas-data/src/main/proto/loc_state.proto b/libraries/mogo-adas-data/src/main/proto/loc_state.proto new file mode 100644 index 0000000000..77005ffb29 --- /dev/null +++ b/libraries/mogo-adas-data/src/main/proto/loc_state.proto @@ -0,0 +1,15 @@ +syntax = "proto2"; +package localization; + +import "header.proto"; + + +message loc_state { + optional common.Header header = 1; + optional double rtk_time = 2;//rtk 时间戳 + optional int32 autopilot_state = 3;//0非自驾,1自驾状态 + optional int32 loc_status = 4;//loc 定位状态 0 正常 1 DR模式 2异常(对应430统计异常值)(对应鹰眼端显示0 蓝色、1 黄色、2异常红色) + optional string loc_sensors_state= 5;//子模块异常状态 + optional string loc_current_sensor=6;//当前定位使用的主要定位消息源 + optional string reserved = 7; +} \ No newline at end of file diff --git a/libraries/mogo-adas-data/src/main/proto/message_pad.proto b/libraries/mogo-adas-data/src/main/proto/message_pad.proto index 9041b2be32..2cce48229f 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -35,6 +35,7 @@ enum MessageType MsgTypeM1StitchedVideo = 0x1000e; //m1拼接视频 定频10hz MsgTypeSSMState = 0x1000f; //ssm 系统状态 定频1hz hq m1 MAP350开始支持,其他车型MAP360开始支持 MsgTypeFMState = 0x10010; //FM状态 定频1hz bus和清扫车是MAP370开始支持,其他车型MAP360开始支持 + MsgTypeLocState = 0x10012; //定位呈现状态透传 用于pad图标显示 1hz 所有车型MAP440开始支持 //### 以下消息全部不定频 ### MsgTypeBasicInfoReq = 0x10100; //自动驾驶设备基础信息请求 @@ -257,7 +258,7 @@ enum AdditionalAttribute message SubSource { uint32 source = 1; // TrackedSource=1:1-lidar 2-camera 3-radar 4-vidar 5-falcon - // TrackedSource=2:1-v2v_bsm 2-v2i_rsm 3-v2v_ssm 4-v2n_rsm 5-v2n_rsi 6-v2i_ssm 7-v2i_rsi + // TrackedSource=2:1-v2v_bsm 2-v2i_rsm 3-v2v_ssm 4-v2n_rsm 5-v2n_rsi 6-v2i_ssm 7-v2i_rsi 8-v2n_rsm_2 string id = 2; //HEX_string -bsm_id } @@ -877,3 +878,6 @@ message SessionInfo //message definition for MsgTypeFMState //refer to fm_info.proto for details + +//message definition for MsgTypeLocState +//refer to loc_state.proto 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 dcca26f15f..2b764d3dc7 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 @@ -31,6 +31,7 @@ import chassis.ChassisStatesOuterClass; import chassis.VehicleStateOuterClass; import fault_management.FmInfo; import function_state_management.FunctionStates; +import localization.LocState; import mogo.telematics.pad.MessagePad; import mogo.v2x.MogoV2X; import mogo.v2x.RoadOverviewEvents; @@ -237,6 +238,16 @@ public interface OnAdasListener { */ void onFaultManagementState(MessagePad.Header header, @NonNull FmInfo.FaultResultMsg fmInfo); + /** + * 定位状态 + * 定位呈现状态透传 用于pad图标显示 1hz 所有车型MAP440开始支持 + * 详细解释:http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=131757484 + * + * @param header 头 + * @param locState 数据 + */ + void onLocalizationState(MessagePad.Header header, @NonNull LocState.loc_state locState); + /** * 数据采集配置应答 * diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/LocalizationStateMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/LocalizationStateMessage.java new file mode 100644 index 0000000000..147d768499 --- /dev/null +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/LocalizationStateMessage.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 localization.LocState; + +/** + * 定位状态 + * 定位呈现状态透传 用于pad图标显示 1hz 所有车型MAP440开始支持 + * 详细解释:http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=131757484 + */ +public class LocalizationStateMessage extends MyAbstractMessageHandler { + + @Override + public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { + LocState.loc_state locState = LocState.loc_state.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("定位状态", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); + if (adasListener != null) { + adasListener.onLocalizationState(raw.getHeader(), locState); + } + AdasChannel.calculateTimeConsumingBusiness("定位状态", 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 f3942c96fc..3843b8093f 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 @@ -32,6 +32,7 @@ public class MyMessageFactory implements IMyMessageFactory { private IMsg statusQueryRespMessage;//状态查询应答 private IMsg systemStatusMessage;//定频SSM private IMsg faultManagementMessage;//FM状态 + private IMsg localizationStateMessage;//定位状态 private IMsg recordDataConfigRespMessage;//数据采集配置应答 private IMsg planningDecisionStateMessage;//planning决策状态 private IMsg obuWarningDataMessage;//工控机透传OBU V2I数据 @@ -180,6 +181,12 @@ public class MyMessageFactory implements IMyMessageFactory { faultManagementMessage = new FaultManagementMessage(); } return faultManagementMessage; + } else if (messageType == MessageType.TYPE_RECEIVE_LOC_STATE.typeCode) { + //定位状态 + if (localizationStateMessage == null) { + localizationStateMessage = new LocalizationStateMessage(); + } + return localizationStateMessage; } else if (messageType == MessageType.TYPE_RECEIVE_RECORD_DATA_CONFIG_RESP.typeCode) { //数据采集配置应答 if (recordDataConfigRespMessage == null) {