From 53f2c79d4b8558cae6733ece05699a8340083c68 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Thu, 9 Feb 2023 15:42:09 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[adas=20lib]=E5=B7=A5=E6=8E=A7=E6=9C=BA?= =?UTF-8?q?=E9=80=8F=E4=BC=A0OBU=20V2I=E6=95=B0=E6=8D=AE=E7=B2=BE=E5=BA=A6?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zhidao/adas/client/DataDistribution.java | 49 +++ .../com/zhidao/adas/client/bean/ObuMap.java | 24 ++ .../com/zhidao/adas/client/bean/ObuRsi.java | 24 ++ .../com/zhidao/adas/client/bean/ObuRsm.java | 24 ++ .../com/zhidao/adas/client/bean/ObuSpat.java | 24 ++ .../zhidao/adas/client/ui/InfoFragment.java | 10 +- .../zhidao/adas/client/ui/MainActivity.java | 31 +- .../zhidao/adas/client/utils/Constants.java | 4 + .../zhidao/adas/magic/ui/MainActivity.java | 8 +- .../autopilot/adapter/MoGoAdasListenerImpl.kt | 8 +- libraries/mogo-adas-data/README.md | 3 +- .../support/adas/high/OnAdasListener.java | 8 +- .../adas/high/msg/ObuWarningDataMessage.java | 379 ++++++++++++++++-- 13 files changed, 543 insertions(+), 53 deletions(-) create mode 100644 app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuMap.java create mode 100644 app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuRsi.java create mode 100644 app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuRsm.java create mode 100644 app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuSpat.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 838fd8d895..d8f82d25ce 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 @@ -15,6 +15,10 @@ import com.zhidao.adas.client.bean.FSMFunctionStates; import com.zhidao.adas.client.bean.GlobalPathResp; import com.zhidao.adas.client.bean.GnssInfo; import com.zhidao.adas.client.bean.MogoReportMessage; +import com.zhidao.adas.client.bean.ObuMap; +import com.zhidao.adas.client.bean.ObuRsi; +import com.zhidao.adas.client.bean.ObuRsm; +import com.zhidao.adas.client.bean.ObuSpat; import com.zhidao.adas.client.bean.ObuWarningData; import com.zhidao.adas.client.bean.OriginalPointCloudData; import com.zhidao.adas.client.bean.PerceptionTrafficLight; @@ -128,6 +132,10 @@ public class DataDistribution { public final List listRoboSweeperTaskIndex = new ArrayList<>(); public final List listBagManagerCmd = new ArrayList<>(); public final List listObuWarningData = new ArrayList<>(); + public final List listObuSpat = new ArrayList<>(); + public final List listObuRsi = new ArrayList<>(); + public final List listObuRsm = new ArrayList<>(); + public final List listObuMap = new ArrayList<>(); private long listTrajectorySize = 0; private long listTrackedObjectsSize = 0; @@ -152,6 +160,11 @@ public class DataDistribution { private long listRoboSweeperTaskIndexSize = 0; private long listBagManagerCmdSize = 0; private long listObuWarningDataSize = 0; + private long listObuSpatSize = 0; + private long listObuRsiSize = 0; + private long listObuRsmSize = 0; + private long listObuMapSize = 0; + public void clearCount() { listTrajectorySize = 1; @@ -177,6 +190,10 @@ public class DataDistribution { listRoboSweeperTaskIndexSize = 1; listBagManagerCmdSize = 1; listObuWarningDataSize = 1; + listObuSpatSize = 1; + listObuRsiSize = 1; + listObuRsmSize = 1; + listObuMapSize = 1; } public String cutDown(String str) { @@ -237,6 +254,38 @@ public class DataDistribution { if (listener != null && Constants.TITLE.RECEIVE_OBU_WARNING_DATA.equals(listener.first)) { listener.second.onRefresh(); } + } else if (data instanceof ObuSpat) { + listObuSpat.add(0, new DataShow(listObuSpatSize++, time + str)); + if (listObuSpat.size() > LIST_SIZE) { + listObuSpat.remove(listObuSpat.size() - 1); + } + if (listener != null && Constants.TITLE.RECEIVE_OBU_SPAT.equals(listener.first)) { + listener.second.onRefresh(); + } + } else if (data instanceof ObuRsi) { + listObuRsi.add(0, new DataShow(listObuRsiSize++, time + str)); + if (listObuRsi.size() > LIST_SIZE) { + listObuRsi.remove(listObuRsi.size() - 1); + } + if (listener != null && Constants.TITLE.RECEIVE_OBU_RSI.equals(listener.first)) { + listener.second.onRefresh(); + } + } else if (data instanceof ObuRsm) { + listObuRsm.add(0, new DataShow(listObuRsmSize++, time + str)); + if (listObuRsm.size() > LIST_SIZE) { + listObuRsm.remove(listObuRsm.size() - 1); + } + if (listener != null && Constants.TITLE.RECEIVE_OBU_RSM.equals(listener.first)) { + listener.second.onRefresh(); + } + } else if (data instanceof ObuMap) { + listObuMap.add(0, new DataShow(listObuMapSize++, time + str)); + if (listObuMap.size() > LIST_SIZE) { + listObuMap.remove(listObuMap.size() - 1); + } + if (listener != null && Constants.TITLE.RECEIVE_OBU_MAP.equals(listener.first)) { + listener.second.onRefresh(); + } } else if (data instanceof GnssInfo) { listGnssInfo.add(0, new DataShow(listGnssInfoSize++, time + str)); if (listGnssInfo.size() > LIST_SIZE) { diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuMap.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuMap.java new file mode 100644 index 0000000000..88c93caf6e --- /dev/null +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuMap.java @@ -0,0 +1,24 @@ +package com.zhidao.adas.client.bean; + +import com.google.protobuf.TextFormat; +import com.mogo.support.obu.ObuScene; + +import java.text.SimpleDateFormat; + +import mogo.telematics.pad.MessagePad; + +public class ObuMap extends BaseInfo { + public final ObuScene.MapMatchData bean; + + + public ObuMap(MessagePad.Header header, ObuScene.MapMatchData 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/bean/ObuRsi.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuRsi.java new file mode 100644 index 0000000000..d433245ebe --- /dev/null +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuRsi.java @@ -0,0 +1,24 @@ +package com.zhidao.adas.client.bean; + +import com.google.protobuf.TextFormat; +import com.mogo.support.obu.ObuScene; + +import java.text.SimpleDateFormat; + +import mogo.telematics.pad.MessagePad; + +public class ObuRsi extends BaseInfo { + public final ObuScene.RsiWarningData bean; + + + public ObuRsi(MessagePad.Header header, ObuScene.RsiWarningData 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/bean/ObuRsm.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuRsm.java new file mode 100644 index 0000000000..6045845ae4 --- /dev/null +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuRsm.java @@ -0,0 +1,24 @@ +package com.zhidao.adas.client.bean; + +import com.google.protobuf.TextFormat; +import com.mogo.support.obu.ObuScene; + +import java.text.SimpleDateFormat; + +import mogo.telematics.pad.MessagePad; + +public class ObuRsm extends BaseInfo { + public final ObuScene.RsmWarningData bean; + + + public ObuRsm(MessagePad.Header header, ObuScene.RsmWarningData 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/bean/ObuSpat.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuSpat.java new file mode 100644 index 0000000000..bb4707903e --- /dev/null +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/bean/ObuSpat.java @@ -0,0 +1,24 @@ +package com.zhidao.adas.client.bean; + +import com.google.protobuf.TextFormat; +import com.mogo.support.obu.ObuScene; + +import java.text.SimpleDateFormat; + +import mogo.telematics.pad.MessagePad; + +public class ObuSpat extends BaseInfo { + public final ObuScene.SpatWarningData bean; + + + public ObuSpat(MessagePad.Header header, ObuScene.SpatWarningData 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 c080d2abf1..83e8d67fb7 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 @@ -136,7 +136,15 @@ public class InfoFragment extends BaseFragment { adapter.setData(DataDistribution.getInstance().listStatusInfo); } else if (Constants.TITLE.RECEIVE_OBU_WARNING_DATA.equals(title)) { adapter.setData(DataDistribution.getInstance().listObuWarningData); - } else if (Constants.TITLE.RECEIVE_RECORD_DATA_CONFIG_RESP.equals(title)) { + }else if (Constants.TITLE.RECEIVE_OBU_SPAT.equals(title)) { + adapter.setData(DataDistribution.getInstance().listObuSpat); + } else if (Constants.TITLE.RECEIVE_OBU_RSI.equals(title)) { + adapter.setData(DataDistribution.getInstance().listObuRsi); + } else if (Constants.TITLE.RECEIVE_OBU_RSM.equals(title)) { + adapter.setData(DataDistribution.getInstance().listObuRsm); + } else if (Constants.TITLE.RECEIVE_OBU_MAP.equals(title)) { + adapter.setData(DataDistribution.getInstance().listObuMap); + } else if (Constants.TITLE.RECEIVE_RECORD_DATA_CONFIG_RESP.equals(title)) { adapter.setData(DataDistribution.getInstance().listRecordDataConfig); } else if (Constants.TITLE.RECEIVE_GLOBAL_PATH_RESP.equals(title)) { adapter.setData(DataDistribution.getInstance().listGlobalPathResp); 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 bc9235444e..4f27b36e6a 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 @@ -44,7 +44,6 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.SimpleItemAnimator; import com.google.protobuf.TextFormat; -import com.mogo.support.obu.ObuPenetrate; import com.mogo.support.obu.ObuScene; import com.mogo.telematic.MogoProtocolMsg; import com.mogo.telematic.NSDNettyManager; @@ -70,6 +69,10 @@ import com.zhidao.adas.client.bean.GlobalPathResp; import com.zhidao.adas.client.bean.GnssInfo; import com.zhidao.adas.client.bean.IPCConnectState; import com.zhidao.adas.client.bean.MogoReportMessage; +import com.zhidao.adas.client.bean.ObuMap; +import com.zhidao.adas.client.bean.ObuRsi; +import com.zhidao.adas.client.bean.ObuRsm; +import com.zhidao.adas.client.bean.ObuSpat; import com.zhidao.adas.client.bean.ObuWarningData; import com.zhidao.adas.client.bean.OriginalPointCloudData; import com.zhidao.adas.client.bean.PerceptionTrafficLight; @@ -552,7 +555,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas @Override public void onClick(View v) { if (TextUtils.equals(title.getText(), getString(R.string.have_error_data))) { - int position=titleFragmentData.size() - 1; + int position = titleFragmentData.size() - 1; infoFragment.smoothScrollToPosition(position); fragmentAdapter.setSelectedPosition(position); showFragment(Constants.TITLE.RECEIVE_ERROR); @@ -666,6 +669,10 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas titleFragmentData.add(Constants.TITLE.RECEIVE_ARRIVAL_NOTIFICATION); titleFragmentData.add(Constants.TITLE.RECEIVE_STATUS_QUERY_RESP); titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_WARNING_DATA); + titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_SPAT); + titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_RSI); + titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_RSM); + titleFragmentData.add(Constants.TITLE.RECEIVE_OBU_MAP); titleFragmentData.add(Constants.TITLE.RECEIVE_SWEEPER_TASK_INDEX_DATA); titleFragmentData.add(Constants.TITLE.RECEIVE_WARN); titleFragmentData.add(Constants.TITLE.RECEIVE_ERROR); @@ -1038,23 +1045,27 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas } @Override - public void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) { - + public void onObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) { + ObuSpat base = new ObuSpat(header, spatWarningData, sdf); + DataDistribution.getInstance().addData(base); } @Override - public void onoObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) { - + public void onObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) { + ObuRsi base = new ObuRsi(header, rsiWarningData, sdf); + DataDistribution.getInstance().addData(base); } @Override - public void onoObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) { - + public void onObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) { + ObuRsm base = new ObuRsm(header, rsmWarningData, sdf); + DataDistribution.getInstance().addData(base); } @Override - public void onoObuObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) { - + public void onObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) { + ObuMap base = new ObuMap(header, mapMatchData, sdf); + DataDistribution.getInstance().addData(base); } @Override 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 75d98e4d69..e9b2ae2466 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 @@ -173,6 +173,10 @@ public class Constants { String RECEIVE_ARRIVAL_NOTIFICATION = MessageType.TYPE_RECEIVE_ARRIVAL_NOTIFICATION.desc; String RECEIVE_STATUS_QUERY_RESP = MessageType.TYPE_RECEIVE_STATUS_QUERY_RESP.desc; String RECEIVE_OBU_WARNING_DATA = MessageType.TYPE_RECEIVE_OBU_WARNING_DATA.desc; + String RECEIVE_OBU_SPAT = "OBU SPAT信息"; + String RECEIVE_OBU_RSI = "OBU RSI信息"; + String RECEIVE_OBU_RSM = "OBU RSM信息"; + String RECEIVE_OBU_MAP = "OBU MAP信息"; String RECEIVE_ERROR = "错误数据"; 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 43df01c887..7900d8cbdf 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 @@ -552,22 +552,22 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas } @Override - public void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) { + public void onObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) { } @Override - public void onoObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) { + public void onObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) { } @Override - public void onoObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) { + public void onObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) { } @Override - public void onoObuObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) { + public void onObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) { } 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 5e817bc880..c63a3ea889 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 @@ -542,7 +542,7 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param header 头 * @param spatWarningData 数据 */ - override fun onoObuSpatWarning(header: MessagePad.Header?, spatWarningData: ObuScene.SpatWarningData?) { + override fun onObuSpatWarning(header: MessagePad.Header?, spatWarningData: ObuScene.SpatWarningData?) { CallerObuWarningSpatListenerManager.invokeObuSpatWarning(spatWarningData!!) } /** @@ -551,7 +551,7 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param header 头 * @param rsiWarningData 数据 */ - override fun onoObuRsiWarning(header: MessagePad.Header?, rsiWarningData: ObuScene.RsiWarningData?) { + override fun onObuRsiWarning(header: MessagePad.Header?, rsiWarningData: ObuScene.RsiWarningData?) { CallerObuWarningRsiListenerManager.invokeObuRsiWarning(rsiWarningData!!) } @@ -561,7 +561,7 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param header 头 * @param rsmWarningData 数据 */ - override fun onoObuRsmWarning(header: MessagePad.Header?, rsmWarningData: ObuScene.RsmWarningData?) { + override fun onObuRsmWarning(header: MessagePad.Header?, rsmWarningData: ObuScene.RsmWarningData?) { CallerObuWarningRsmListenerManager.invokeObuRsmWarning(rsmWarningData!!) } /** @@ -570,7 +570,7 @@ class MoGoAdasListenerImpl : OnAdasListener { * @param header 头 * @param mapMatchData 数据 */ - override fun onoObuObuMapMath(header: MessagePad.Header?, mapMatchData: ObuScene.MapMatchData?) { + override fun onObuMapMath(header: MessagePad.Header?, mapMatchData: ObuScene.MapMatchData?) { CallerObuMapMathListenerManager.invokeObuMapMath(mapMatchData!!) } diff --git a/libraries/mogo-adas-data/README.md b/libraries/mogo-adas-data/README.md index 72fc06ed07..62edd6feb9 100644 --- a/libraries/mogo-adas-data/README.md +++ b/libraries/mogo-adas-data/README.md @@ -1,5 +1,5 @@ # 工控机PB文件 用于生成Java Bean - +# ***鹰眼自用PB文件放在单独文件夹(personal)目的是为了区分工控机PB还是自用PB*** ## 1. studio中*.proto文件中如果出现“Cannot resolve symbol 'xxxx'”提示 **不影响正常编译,只影响美观以及无法在proto文件中跳转** ~~~ @@ -15,7 +15,6 @@ ~~~ # 工控机透传OBU V2I PB转换 -***鹰眼自用PB文件放在单独文件夹(personal)目的是为了区分工控机PB还是自用PB*** |工控机原始PB文件|转换后鹰眼所用PB| |:-|:-| |obu_warning_event.proto|personal/obu_penetrate.proto、personal/obu_scene.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 91cfec766c..c8df24eac7 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 @@ -209,7 +209,7 @@ public interface OnAdasListener { * @param header 头 * @param spatWarningData 数据 */ - void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData); + void onObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData); /** * OBU RSI预警信息 @@ -217,7 +217,7 @@ public interface OnAdasListener { * @param header 头 * @param rsiWarningData 数据 */ - void onoObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData); + void onObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData); /** * OBU RSM预警信息 @@ -225,7 +225,7 @@ public interface OnAdasListener { * @param header 头 * @param rsmWarningData 数据 */ - void onoObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData); + void onObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData); /** * OBU 地图匹配结果 @@ -233,7 +233,7 @@ public interface OnAdasListener { * @param header 头 * @param mapMatchData 数据 */ - void onoObuObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData); + void onObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData); /** * 重构后的功能状态 diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ObuWarningDataMessage.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ObuWarningDataMessage.java index e07f3d0f2e..a836e22487 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ObuWarningDataMessage.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/msg/ObuWarningDataMessage.java @@ -1,15 +1,19 @@ package com.zhidao.support.adas.high.msg; import android.os.SystemClock; -import android.util.Log; import com.google.protobuf.InvalidProtocolBufferException; import com.google.protobuf.UnknownFieldSet; +import com.mogo.support.obu.ObuBase; +import com.mogo.support.obu.ObuPenetrate; +import com.mogo.support.obu.ObuScene; 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 java.util.List; + import mogo.v2x.ObuWarningEvent; @@ -20,39 +24,358 @@ public class ObuWarningDataMessage extends MyAbstractMessageHandler { @Override public void handlerMsg(RawData raw, OnAdasListener adasListener) throws InvalidProtocolBufferException { - ObuWarningEvent.ObuWarningData obuWarningData = ObuWarningEvent.ObuWarningData.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); - AdasChannel.calculateTimeConsumingOnDispatchRaw("OBU预警事件", raw.receiveTime); - long nowTime = 0; - if (CupidLogUtils.isEnableLog()) - nowTime = SystemClock.elapsedRealtime(); - if (adasListener != null) { - adasListener.onObuWarningData(raw.getHeader(), obuWarningData); - } - AdasChannel.calculateTimeConsumingBusiness("OBU预警事件", nowTime); - - - -// ObuPenetrate.WarningData warningData = ObuPenetrate.WarningData.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); -// UnknownFieldSet set = warningData.getMapMatchData().getUnknownFields(); -// -// Log.i("ddd", "set.getField(7).getVarintList()=" + set.getField(7).getVarintList()); -// Long a = set.getField(7).getVarintList().get(0); -// -// ObuScene.MapMatchData.Builder MapMatchDataBuilder = warningData.getMapMatchData().toBuilder().setSpeedMinLimit(a * 0.02D); -// MapMatchDataBuilder.setUnknownFields(UnknownFieldSet.getDefaultInstance()); -// ObuPenetrate.WarningData.Builder builder = warningData.toBuilder(); -// builder.setMapMatchData(MapMatchDataBuilder); -// warningData = builder.build(); -//// Log.i("ddd","a="+a); -// -// +// ObuWarningEvent.ObuWarningData obuWarningData = ObuWarningEvent.ObuWarningData.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); // AdasChannel.calculateTimeConsumingOnDispatchRaw("OBU预警事件", raw.receiveTime); // long nowTime = 0; // if (CupidLogUtils.isEnableLog()) // nowTime = SystemClock.elapsedRealtime(); // if (adasListener != null) { -// adasListener.onObuWarningData(raw.getHeader(), warningData); +// adasListener.onObuWarningData(raw.getHeader(), obuWarningData); // } // AdasChannel.calculateTimeConsumingBusiness("OBU预警事件", nowTime); + + ObuPenetrate.PenetrateWarningData warningData = ObuPenetrate.PenetrateWarningData.parser().parseFrom(raw.originalData.toByteArray(), raw.getOffsetValue(), raw.getPackageLengthValue() - raw.getOffsetValue()); + AdasChannel.calculateTimeConsumingOnDispatchRaw("OBU预警事件", raw.receiveTime); + long nowTime = 0; + if (CupidLogUtils.isEnableLog()) + nowTime = SystemClock.elapsedRealtime(); + if (adasListener != null) { + if (warningData.getMsgDataType() == 1) {//rsiEvent + if (warningData.hasRsiEvent()) { + ObuScene.RsiWarningData rsiWarningData = warningData.getRsiEvent(); + ObuScene.RsiWarningData.Builder rsiWarningDataBuilder = rsiWarningData.toBuilder(); + int size = rsiWarningData.getWarningMsgCount(); + for (int i = 0; i < size; i++) { + ObuBase.RsiWarning warning = rsiWarningData.getWarningMsg(i); + ObuBase.RsiWarning.Builder warningBuilder = warning.toBuilder(); + if (warning.hasPosition()) { + ObuBase.PositionLLV positionLLV = warning.getPosition(); + ObuBase.PositionLLV.Builder positionLLVBuilder = positionLLV.toBuilder(); + if (positionLLV.hasPosition()) { + ObuBase.PositionOffset positionOffset = positionLLV.getPosition(); + ObuBase.PositionOffset.Builder positionOffsetBuilder = positionOffset.toBuilder(); + if (positionOffset.hasPositionLL1()) { + ObuBase.PositionLL1 positionLL1 = positionOffset.getPositionLL1(); + ObuBase.PositionLL1.Builder positionLL1Builder = positionLL1.toBuilder(); + UnknownFieldSet set = positionLL1.getUnknownFields(); + UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder(); + double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLL1Builder.setLongitude(value); + } + value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLL1Builder.setLatitude(value); + } + positionLL1Builder.setUnknownFields(unknownFieldSetBuilder.build()); + positionOffsetBuilder.setPositionLL1(positionLL1Builder); + positionLLVBuilder.setPosition(positionOffsetBuilder); + } + if (positionOffset.hasPositionLL2()) { + ObuBase.PositionLL2 positionLL2 = positionOffset.getPositionLL2(); + ObuBase.PositionLL2.Builder positionLL2Builder = positionLL2.toBuilder(); + UnknownFieldSet set = positionLL2.getUnknownFields(); + UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder(); + double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLL2Builder.setLongitude(value); + } + value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLL2Builder.setLatitude(value); + } + positionLL2Builder.setUnknownFields(unknownFieldSetBuilder.build()); + positionOffsetBuilder.setPositionLL2(positionLL2Builder); + positionLLVBuilder.setPosition(positionOffsetBuilder); + } + if (positionOffset.hasPositionLL3()) { + ObuBase.PositionLL3 positionLL3 = positionOffset.getPositionLL3(); + ObuBase.PositionLL3.Builder positionLL3Builder = positionLL3.toBuilder(); + UnknownFieldSet set = positionLL3.getUnknownFields(); + UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder(); + double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLL3Builder.setLongitude(value); + } + value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLL3Builder.setLatitude(value); + } + positionLL3Builder.setUnknownFields(unknownFieldSetBuilder.build()); + positionOffsetBuilder.setPositionLL3(positionLL3Builder); + positionLLVBuilder.setPosition(positionOffsetBuilder); + } + if (positionOffset.hasPositionLL4()) { + ObuBase.PositionLL4 positionLL4 = positionOffset.getPositionLL4(); + ObuBase.PositionLL4.Builder positionLL4Builder = positionLL4.toBuilder(); + UnknownFieldSet set = positionLL4.getUnknownFields(); + UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder(); + double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLL4Builder.setLongitude(value); + } + value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLL4Builder.setLatitude(value); + } + positionLL4Builder.setUnknownFields(unknownFieldSetBuilder.build()); + positionOffsetBuilder.setPositionLL4(positionLL4Builder); + positionLLVBuilder.setPosition(positionOffsetBuilder); + } + if (positionOffset.hasPositionLL5()) { + ObuBase.PositionLL5 positionLL5 = positionOffset.getPositionLL5(); + ObuBase.PositionLL5.Builder positionLL5Builder = positionLL5.toBuilder(); + UnknownFieldSet set = positionLL5.getUnknownFields(); + UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder(); + double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLL5Builder.setLongitude(value); + } + value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLL5Builder.setLatitude(value); + } + positionLL5Builder.setUnknownFields(unknownFieldSetBuilder.build()); + positionOffsetBuilder.setPositionLL5(positionLL5Builder); + positionLLVBuilder.setPosition(positionOffsetBuilder); + } + if (positionOffset.hasPositionLL6()) { + ObuBase.PositionLL6 positionLL6 = positionOffset.getPositionLL6(); + ObuBase.PositionLL6.Builder positionLL6Builder = positionLL6.toBuilder(); + UnknownFieldSet set = positionLL6.getUnknownFields(); + UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder(); + double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLL6Builder.setLongitude(value); + } + value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLL6Builder.setLatitude(value); + } + positionLL6Builder.setUnknownFields(unknownFieldSetBuilder.build()); + positionOffsetBuilder.setPositionLL6(positionLL6Builder); + positionLLVBuilder.setPosition(positionOffsetBuilder); + } + if (positionOffset.hasPositionLatLon()) { + ObuBase.PositionLatLon positionLatLon = positionOffset.getPositionLatLon(); + ObuBase.PositionLatLon.Builder positionLatLonBuilder = positionLatLon.toBuilder(); + UnknownFieldSet set = positionLatLon.getUnknownFields(); + UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder(); + double value = getVarint(set, unknownFieldSetBuilder, 1, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLatLonBuilder.setLongitude(value); + } + value = getVarint(set, unknownFieldSetBuilder, 2, 10000000.0D); + if (value != Double.MIN_VALUE) { + positionLatLonBuilder.setLatitude(value); + } + positionLatLonBuilder.setUnknownFields(unknownFieldSetBuilder.build()); + positionOffsetBuilder.setPositionLatLon(positionLatLonBuilder); + positionLLVBuilder.setPosition(positionOffsetBuilder); + } + } + if (positionLLV.hasVertical()) { + ObuBase.VerticalLLV verticalLLV = positionLLV.getVertical(); + ObuBase.VerticalLLV.Builder verticalLLVBuilder = verticalLLV.toBuilder(); + UnknownFieldSet set = verticalLLV.getUnknownFields(); + UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder(); + double value = getVarint(set, unknownFieldSetBuilder, 1, 10.0D); + if (value != Double.MIN_VALUE) { + verticalLLVBuilder.setOffset1(value); + } + value = getVarint(set, unknownFieldSetBuilder, 2, 10.0D); + if (value != Double.MIN_VALUE) { + verticalLLVBuilder.setOffset2(value); + } + value = getVarint(set, unknownFieldSetBuilder, 3, 10.0D); + if (value != Double.MIN_VALUE) { + verticalLLVBuilder.setOffset3(value); + } + value = getVarint(set, unknownFieldSetBuilder, 4, 10.0D); + if (value != Double.MIN_VALUE) { + verticalLLVBuilder.setOffset4(value); + } + value = getVarint(set, unknownFieldSetBuilder, 5, 10.0D); + if (value != Double.MIN_VALUE) { + verticalLLVBuilder.setOffset5(value); + } + value = getVarint(set, unknownFieldSetBuilder, 6, 10.0D); + if (value != Double.MIN_VALUE) { + verticalLLVBuilder.setOffset6(value); + } + value = getVarint(set, unknownFieldSetBuilder, 7, 10.0D); + if (value != Double.MIN_VALUE) { + verticalLLVBuilder.setElevation(value); + } + verticalLLVBuilder.setUnknownFields(unknownFieldSetBuilder.build()); + positionLLVBuilder.setVertical(verticalLLVBuilder); + } + + warningBuilder.setPosition(positionLLVBuilder); + } + UnknownFieldSet set = warning.getUnknownFields(); + UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder(); + double value = getVarint(set, unknownFieldSetBuilder, 6, 50.0D); + if (value != Double.MIN_VALUE) { + warningBuilder.setSpeedMaxLimit(value); + } + value = getVarint(set, unknownFieldSetBuilder, 7, 50.0D); + if (value != Double.MIN_VALUE) { + warningBuilder.setSpeedMinLimit(value); + } + value = getVarint(set, unknownFieldSetBuilder, 8, 10.0D); + if (value != Double.MIN_VALUE) { + warningBuilder.setEventRadius(value); + } + value = getVarint(set, unknownFieldSetBuilder, 11, 100.0D); + if (value != Double.MIN_VALUE) { + warningBuilder.setDistance(value); + } + warningBuilder.setUnknownFields(unknownFieldSetBuilder.build()); + rsiWarningDataBuilder.setWarningMsg(i, warningBuilder); + } + rsiWarningData = rsiWarningDataBuilder.build(); + adasListener.onObuRsiWarning(raw.getHeader(), rsiWarningData); + } + } else if (warningData.getMsgDataType() == 2) {//rsmEvent + if (warningData.hasRsmEvent()) { + ObuScene.RsmWarningData rsmWarningData = warningData.getRsmEvent(); + ObuScene.RsmWarningData.Builder rsmWarningDataBuilder = rsmWarningData.toBuilder(); + if (rsmWarningData.hasParticipant()) { + ObuBase.Participant participant = rsmWarningData.getParticipant(); + ObuBase.Participant.Builder participantBuilder = participant.toBuilder(); + UnknownFieldSet set = participant.getUnknownFields(); + UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder(); + double value = getVarint(set, unknownFieldSetBuilder, 5, 10000000.0D); + if (value != Double.MIN_VALUE) { + participantBuilder.setLatitude(value); + } + value = getVarint(set, unknownFieldSetBuilder, 6, 10000000.0D); + if (value != Double.MIN_VALUE) { + participantBuilder.setLongitude(value); + } + value = getVarint(set, unknownFieldSetBuilder, 7, 10.0D); + if (value != Double.MIN_VALUE) { + participantBuilder.setElevation(value); + } + value = getVarint(set, unknownFieldSetBuilder, 8, 50.0D); + if (value != Double.MIN_VALUE) { + participantBuilder.setSpeed(value); + } + value = getVarint(set, unknownFieldSetBuilder, 9, 80.0D); + if (value != Double.MIN_VALUE) { + participantBuilder.setHeading(value); + } + participantBuilder.setUnknownFields(unknownFieldSetBuilder.build()); + if (participant.hasAccFourAxes()) { + ObuBase.AccFourAxes accFourAxes = participant.getAccFourAxes(); + ObuBase.AccFourAxes.Builder accFourAxesBuilder = accFourAxes.toBuilder(); + UnknownFieldSet accFourAxesSet = accFourAxes.getUnknownFields(); + UnknownFieldSet.Builder accFourAxesSetBuilder = accFourAxesSet.toBuilder(); + value = getVarint(accFourAxesSet, accFourAxesSetBuilder, 1, 100.0D); + if (value != Double.MIN_VALUE) { + accFourAxesBuilder.setAccLng(value); + } + value = getVarint(accFourAxesSet, accFourAxesSetBuilder, 2, 100.0D); + if (value != Double.MIN_VALUE) { + accFourAxesBuilder.setAccLat(value); + } + value = getVarint(accFourAxesSet, accFourAxesSetBuilder, 3, 50.0D); + if (value != Double.MIN_VALUE) { + accFourAxesBuilder.setAccVert(value); + } + value = getVarint(accFourAxesSet, accFourAxesSetBuilder, 4, 100.0D); + if (value != Double.MIN_VALUE) { + accFourAxesBuilder.setAccYaw(value); + } + accFourAxesBuilder.setUnknownFields(accFourAxesSetBuilder.build()); + participantBuilder.setAccFourAxes(accFourAxesBuilder); + } + if (participant.hasPtcSize()) { + ObuBase.VehicleSize vehicleSize = participant.getPtcSize(); + ObuBase.VehicleSize.Builder vehicleSizeBuilder = vehicleSize.toBuilder(); + vehicleSizeBuilder.setHeight(vehicleSize.getHeight() * 5); + participantBuilder.setPtcSize(vehicleSizeBuilder); + } + rsmWarningDataBuilder.setParticipant(participantBuilder); + } + if (rsmWarningData.hasWarningMsg()) { + ObuBase.V2xWarning warning = rsmWarningData.getWarningMsg(); + ObuBase.V2xWarning.Builder warningBuilder = warning.toBuilder(); + UnknownFieldSet warningSet = warning.getUnknownFields(); + UnknownFieldSet.Builder warningSetBuilder = warningSet.toBuilder(); + double value = getVarint(warningSet, warningSetBuilder, 4, 100.0D); + if (value != Double.MIN_VALUE) { + warningBuilder.setDistance(value); + } + warningBuilder.setUnknownFields(warningSetBuilder.build()); + rsmWarningDataBuilder.setWarningMsg(warningBuilder); + } + rsmWarningData = rsmWarningDataBuilder.build(); + adasListener.onObuRsmWarning(raw.getHeader(), rsmWarningData); + } + } else if (warningData.getMsgDataType() == 3) {//spatEvent + if (warningData.hasSpatEvent()) { + ObuScene.SpatWarningData spatWarningData = warningData.getSpatEvent(); + ObuScene.SpatWarningData.Builder spatWarningDataBuilder = spatWarningData.toBuilder(); + int size = spatWarningData.getLightsCount(); + for (int i = 0; i < size; i++) { + ObuBase.SpatLight spatLight = spatWarningData.getLights(i); + ObuBase.SpatLight.Builder spatLightBuilder = spatLight.toBuilder(); + UnknownFieldSet set = spatLight.getUnknownFields(); + UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder(); + double value = getVarint(set, unknownFieldSetBuilder, 4, 10.0D); + if (value != Double.MIN_VALUE) { + spatLightBuilder.setCountDown(value); + } + value = getVarint(set, unknownFieldSetBuilder, 5, 50.0D); + if (value != Double.MIN_VALUE) { + spatLightBuilder.setSuggestMaxSpeed(value); + } + value = getVarint(set, unknownFieldSetBuilder, 6, 50.0D); + if (value != Double.MIN_VALUE) { + spatLightBuilder.setSuggestMinSpeed(value); + } + spatLightBuilder.setUnknownFields(unknownFieldSetBuilder.build()); + spatWarningDataBuilder.setLights(i, spatLightBuilder); + } + spatWarningData = spatWarningDataBuilder.build(); + adasListener.onObuSpatWarning(raw.getHeader(), spatWarningData); + } + } else if (warningData.getMsgDataType() == 4) {//mapMatchData + if (warningData.hasMapMatchData()) { + ObuScene.MapMatchData mapMatchData = warningData.getMapMatchData(); + ObuScene.MapMatchData.Builder mapMatchDataBuilder = mapMatchData.toBuilder(); + UnknownFieldSet set = mapMatchData.getUnknownFields(); + UnknownFieldSet.Builder unknownFieldSetBuilder = set.toBuilder(); + double value = getVarint(set, unknownFieldSetBuilder, 6, 50.0D); + if (value != Double.MIN_VALUE) { + mapMatchDataBuilder.setSpeedMaxLimit(value); + } + value = getVarint(set, unknownFieldSetBuilder, 7, 50.0D); + if (value != Double.MIN_VALUE) { + mapMatchDataBuilder.setSpeedMinLimit(value); + } + mapMatchDataBuilder.setUnknownFields(unknownFieldSetBuilder.build()); + mapMatchData = mapMatchDataBuilder.build(); + adasListener.onObuMapMath(raw.getHeader(), mapMatchData); + } + } + } + AdasChannel.calculateTimeConsumingBusiness("OBU预警事件", nowTime); + } + + private double getVarint(final UnknownFieldSet set, final UnknownFieldSet.Builder builder, final int number, final double precision) { + if (set.hasField(number)) { + List list = set.getField(number).getVarintList(); + if (list != null && !list.isEmpty()) { + Long value = list.get(0); + if (value != null) { + builder.clearField(number); + return value / precision; + } + } + } + return Double.MIN_VALUE; } } From 5e2ee3f76c0255b93036422902d75be3e71edaf8 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Mon, 13 Feb 2023 15:08:55 +0800 Subject: [PATCH 2/3] =?UTF-8?q?[pb10][=E9=9A=9C=E7=A2=8D=E7=89=A9=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3]=20=E6=9B=B4=E6=96=B0=E9=9A=9C=E7=A2=8D=E7=89=A9?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=83=B5=E5=B0=B8?= =?UTF-8?q?=E8=BD=A6=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo-adas-data/src/main/proto/message_pad.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) 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 f96fe6fa96..a38486638e 100644 --- a/libraries/mogo-adas-data/src/main/proto/message_pad.proto +++ b/libraries/mogo-adas-data/src/main/proto/message_pad.proto @@ -90,6 +90,15 @@ message Trajectory repeated TrajectoryPoint points = 1; } +enum AdditionalAttribute +{ + ATTR_UNKNOWN = 0; + ATTR_ZOMBIE = 1; // 僵尸车 + ATTR_ROAD_CONSTRUCTION = 2; // 道路施工区域 + ATTR_STATIC = 3; // 静止障碍物 + ATTR_ACCIDENT = 4; // 事故车 +} + // message definition for MsgTypeTrackedObjects message SubSource { @@ -125,6 +134,7 @@ message TrackedObject repeated TrackedSource tracked_source = 14; repeated Location polygon = 15; geometry.Point center = 16; + AdditionalAttribute add_attribute = 17; // 事件类型 } message TrackedObjects From 23b18ed4825c65beb09b4cb0d60ee1bc6b3ebfdc Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Mon, 13 Feb 2023 15:22:18 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[Opt]=E5=85=A8=E8=A7=88=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=8F=AF=E9=85=8D=E7=BD=AE=E7=9A=84=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../eagle/core/function/view/OverMapView.kt | 106 +++++++++--------- .../src/main/res/values/attrs.xml | 22 ++++ 2 files changed, 78 insertions(+), 50 deletions(-) create mode 100644 core/function-impl/mogo-core-function-map/src/main/res/values/attrs.xml diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt index 5a54d0ba6e..6182939d78 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt @@ -8,6 +8,7 @@ import android.util.AttributeSet import android.util.Log import android.view.LayoutInflater import android.view.MotionEvent +import android.view.View import android.widget.RelativeLayout import android.widget.TextView import ch.hsr.geohash.GeoHash @@ -16,7 +17,6 @@ import com.amap.api.maps.CameraUpdate import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.TextureMapView import com.amap.api.maps.model.* -import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.map.Infrastructure import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.data.v2x.V2XEvent @@ -38,7 +38,6 @@ import com.mogo.eagle.core.function.smp.MarkerDrawerManager.planningPoints import com.mogo.eagle.core.function.smp.MarkerDrawerManager.startLoopCalCarLocation import com.mogo.eagle.core.function.smp.MarkerDrawerManager.updateRoutePoints import com.mogo.eagle.core.function.smp.V2XMarkerView -import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isTaxi import com.mogo.eagle.core.utilcode.mogo.MapAssetStyleUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import me.jessyan.autosize.utils.AutoSizeUtils @@ -54,6 +53,18 @@ class OverMapView @JvmOverloads constructor( attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : RelativeLayout(context, attrs, defStyleAttr), IMoGoChassisLocationGCJ02Listener { + + // =============自定义属性相关============= + private var mapStylePath: String? = null + private var mapStyleExtraPath: String? = null + private var carDrawable: Int = -1 + private var compassDrawable: Int = -1 + private var startPointDrawable: Int = -1 + private var endPointDrawable: Int = -1 + private var arrivedDrawable: Int = -1 + private var unArrivedDrawable: Int = -1 + private var resetDrawable: Int = -1 + private var mMapView: TextureMapView? = null private var mAMap: AMap? = null private val zoomLevel = 15 @@ -94,6 +105,20 @@ class OverMapView @JvmOverloads constructor( init { try { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.OverMapView) + mapStylePath = typedArray.getString(R.styleable.OverMapView_mapStylePath) + mapStyleExtraPath = typedArray.getString(R.styleable.OverMapView_mapStyleExtraPath) + carDrawable = typedArray.getResourceId(R.styleable.OverMapView_carDrawable, -1) + compassDrawable = typedArray.getResourceId(R.styleable.OverMapView_compassDrawable, -1) + startPointDrawable = + typedArray.getResourceId(R.styleable.OverMapView_startPointDrawable, -1) + endPointDrawable = + typedArray.getResourceId(R.styleable.OverMapView_endPointDrawable, -1) + arrivedDrawable = typedArray.getResourceId(R.styleable.OverMapView_arrivedDrawable, -1) + unArrivedDrawable = + typedArray.getResourceId(R.styleable.OverMapView_unArrivedDrawable, -1) + resetDrawable = typedArray.getResourceId(R.styleable.OverMapView_resetDrawable, -1) + typedArray.recycle() initView(context) } catch (e: Exception) { e.printStackTrace() @@ -129,21 +154,18 @@ class OverMapView @JvmOverloads constructor( } // =================必须通知高德地图生命周期的变化================= + fun hideResetView() { + overLayerView?.visibility = View.GONE + } + private fun initView(context: Context) { mContext = context val smpView = LayoutInflater.from(context).inflate(R.layout.module_overview_map_view, this) mMapView = smpView.findViewById(R.id.aMapView) overLayerView = findViewById(R.id.overLayer) - if (isTaxi(FunctionBuildConfig.appIdentityMode)) { - overLayerView?.background = resources.getDrawable(R.drawable.amap_reset) - arrivedBitmap = BitmapDescriptorFactory.fromResource(R.drawable.taxi_map_arrow_arrived) - unArrivedBitmap = - BitmapDescriptorFactory.fromResource(R.drawable.taxi_map_arrow_un_arrive) - } else { - overLayerView?.background = resources.getDrawable(R.drawable.amap_reset_bus) - arrivedBitmap = BitmapDescriptorFactory.fromResource(R.drawable.arrow_arrived_img) - unArrivedBitmap = BitmapDescriptorFactory.fromResource(R.drawable.amap_bus_smooth_route) - } + overLayerView?.background = resources.getDrawable(if (resetDrawable != -1) resetDrawable else R.drawable.amap_reset) + arrivedBitmap = BitmapDescriptorFactory.fromResource(if (arrivedDrawable != -1) arrivedDrawable else R.drawable.taxi_map_arrow_arrived) + unArrivedBitmap = BitmapDescriptorFactory.fromResource(if (unArrivedDrawable != -1) unArrivedDrawable else R.drawable.taxi_map_arrow_un_arrive) CallerPlanningRottingListenerManager.addListener(TAG, moGoAutopilotPlanningListener) initAMapView(context) // 注册定位监听 @@ -157,19 +179,12 @@ class OverMapView @JvmOverloads constructor( mCameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel.toFloat()) mAMap = mMapView!!.map mCustomMapStyleOptions = CustomMapStyleOptions() - if (isTaxi(FunctionBuildConfig.appIdentityMode)) { + + if (!mapStylePath.isNullOrEmpty() && !mapStyleExtraPath.isNullOrEmpty()) { mCustomMapStyleOptions!!.styleData = - MapAssetStyleUtils.getAssetsStyle(getContext(), "over_view_style.data") + MapAssetStyleUtils.getAssetsStyle(getContext(), mapStylePath) mCustomMapStyleOptions!!.styleExtraData = - MapAssetStyleUtils.getAssetsExtraStyle(getContext(), "over_view_style_extra.data") - } else { - mCustomMapStyleOptions!!.styleData = - MapAssetStyleUtils.getAssetsStyle(getContext(), "over_view_style_bus.data") - mCustomMapStyleOptions!!.styleExtraData = - MapAssetStyleUtils.getAssetsExtraStyle( - getContext(), - "over_view_style_extra_bus.data" - ) + MapAssetStyleUtils.getAssetsExtraStyle(getContext(), mapStyleExtraPath) } mAMap?.setOnMapLoadedListener { Log.d(TAG, "---onMapLoaded---") @@ -227,36 +242,23 @@ class OverMapView @JvmOverloads constructor( * 自定义导航View和路况状态 */ private fun customOptions() { - if (isTaxi(FunctionBuildConfig.appIdentityMode)) { - mCarMarker = mAMap!!.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.map_car_icon)) - .anchor(0.5f, 0.5f) - ) - mCompassMarker = mAMap!!.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.amap_custom_corner)) - .anchor(0.5f, 0.5f) - ) - } else { - mCarMarker = mAMap!!.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.map_bus_icon)) - .anchor(0.5f, 0.5f) - ) - mCompassMarker = mAMap!!.addMarker( - MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.amap_bus_corner)) - .anchor(0.5f, 0.5f) - ) - } + mCarMarker = mAMap!!.addMarker( + MarkerOptions() + .icon(BitmapDescriptorFactory.fromResource(if (carDrawable != -1) carDrawable else R.drawable.map_car_icon)) + .anchor(0.5f, 0.5f) + ) + mCompassMarker = mAMap!!.addMarker( + MarkerOptions() + .icon(BitmapDescriptorFactory.fromResource(if (compassDrawable != -1) compassDrawable else R.drawable.amap_custom_corner)) + .anchor(0.5f, 0.5f) + ) mStartMarker = mAMap!!.addMarker( MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.module_small_map_view_dir_start)) + .icon(BitmapDescriptorFactory.fromResource(if (startPointDrawable != -1) startPointDrawable else R.drawable.module_small_map_view_dir_start)) ) mEndMarker = mAMap!!.addMarker( MarkerOptions() - .icon(BitmapDescriptorFactory.fromResource(R.drawable.module_small_map_view_dir_end)) + .icon(BitmapDescriptorFactory.fromResource(if (endPointDrawable != -1) endPointDrawable else R.drawable.module_small_map_view_dir_end)) ) } @@ -558,10 +560,14 @@ class OverMapView @JvmOverloads constructor( for (i in coordinates.indices) { if (i <= locIndex) { // 已走过的置灰 - textureList.add(arrivedBitmap) + arrivedBitmap?.let { + textureList.add(it) + } } else { // 未走过的纹理 - textureList.add(unArrivedBitmap) + unArrivedBitmap?.let { + textureList.add(it) + } } texIndexList.add(i) } diff --git a/core/function-impl/mogo-core-function-map/src/main/res/values/attrs.xml b/core/function-impl/mogo-core-function-map/src/main/res/values/attrs.xml new file mode 100644 index 0000000000..8fd1ef1348 --- /dev/null +++ b/core/function-impl/mogo-core-function-map/src/main/res/values/attrs.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file