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 9328ef128c..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); @@ -1032,23 +1039,33 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas } @Override - public void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) { - + public void onObuWarningData(MessagePad.Header header, ObuWarningEvent.ObuWarningData obuWarningData) { + ObuWarningData base = new ObuWarningData(header, obuWarningData, sdf); + DataDistribution.getInstance().addData(base); } @Override - public void onoObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) { - + public void onObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) { + ObuSpat base = new ObuSpat(header, spatWarningData, sdf); + DataDistribution.getInstance().addData(base); } @Override - public void onoObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) { - + public void onObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) { + ObuRsi base = new ObuRsi(header, rsiWarningData, sdf); + DataDistribution.getInstance().addData(base); } @Override - public void onoObuObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) { + public void onObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) { + ObuRsm base = new ObuRsm(header, rsmWarningData, sdf); + DataDistribution.getInstance().addData(base); + } + @Override + 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 9880114ebe..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 @@ -547,22 +547,27 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas } @Override - public void onoObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) { + public void onObuWarningData(MessagePad.Header header, ObuWarningEvent.ObuWarningData obuWarningData) { } @Override - public void onoObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) { + public void onObuSpatWarning(MessagePad.Header header, ObuScene.SpatWarningData spatWarningData) { } @Override - public void onoObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) { + public void onObuRsiWarning(MessagePad.Header header, ObuScene.RsiWarningData rsiWarningData) { } @Override - public void onoObuObuMapMath(MessagePad.Header header, ObuScene.MapMatchData mapMatchData) { + public void onObuRsmWarning(MessagePad.Header header, ObuScene.RsmWarningData rsmWarningData) { + + } + + @Override + 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 ed3c13babb..e2703257ff 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 @@ -532,7 +532,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!!) } /** @@ -541,7 +541,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!!) } @@ -551,7 +551,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!!) } /** @@ -560,7 +560,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/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 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 c0e67529b8..ff3d6b8b67 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 @@ -201,7 +201,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预警信息 @@ -209,7 +209,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预警信息 @@ -217,7 +217,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 地图匹配结果 @@ -225,7 +225,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 29f364d901..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; } }