diff --git a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_base_fragment.xml b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_base_fragment.xml
index 3e12a1ebb2..96b90db2b4 100644
--- a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_base_fragment.xml
+++ b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_base_fragment.xml
@@ -12,6 +12,14 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
+
+
+
+
(),
}
override fun initViews() {
- viewShowDebugView.setOnLongClickListener {
- ToggleDebugView.toggleDebugView.toggle(requireContext())
- true
- }
+
}
diff --git a/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml b/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml
index 447299cd97..8cb712a588 100644
--- a/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml
+++ b/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml
@@ -6,19 +6,19 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
+
+
{
- mView.showOrHideServingOrderFragment(false,true);
- mView.showOrHideStartAutopilotView(false,false);
- mView.showOrHidePressengerCheckPager(false, "",
- "", "", "", "");
- mView.showOrHideArrivedEndLayout(false,"","");
+ mView.showOrHideServingOrderFragment(false,true);
+ mView.showOrHideStartAutopilotView(false,false);
+ mView.showOrHidePressengerCheckPager(false, "",
+ "", "", "", "");
+ mView.showOrHideArrivedEndLayout(false,"","");
});
TaxiPassengerModel.getInstance().recoverNaviInfo();
TaxiPassengerGeocodeSearchModel.getInstance(getContext()).destroyGeocodeSearch();
@@ -200,7 +201,6 @@ public class BaseTaxiPassengerPresenter extends Presenter
+
+
+
+
{
- alertContent =
- EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_FCW.poiType)
- ttsContent =
- EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_FCW.poiType)
-
-// ObuManager.getInstance().obuRvToTrackedObject(info) //todo emArrow
+ if (FunctionBuildConfig.isObuWarningFusionUnion) {
+ alertContent = "前车距离过近"
+ ttsContent = "前车距离过近"
+ CallerObuWarningListenerManager.invokeTrackerFusionData(ObuManager.getInstance().obuRvToTrackedObject(info))
+ } else {
+ alertContent =
+ EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_FCW.poiType)
+ ttsContent =
+ EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_FCW.poiType)
+ }
+ v2xType = EventTypeEnumNew.TYPE_USECASE_ID_FCW.poiType
}
//交叉路口碰撞预警
@@ -597,6 +605,7 @@ class MogoPrivateObuNewManager private constructor() {
EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_ICW.poiType)
ttsContent =
EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_ICW.poiType)
+ v2xType = EventTypeEnumNew.TYPE_USECASE_ID_ICW.poiType
}
//左转辅助预警
@@ -605,6 +614,7 @@ class MogoPrivateObuNewManager private constructor() {
EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_LTA.poiType)
ttsContent =
EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_LTA.poiType)
+ v2xType = EventTypeEnumNew.TYPE_USECASE_ID_LTA.poiType
}
//盲区预警
@@ -613,6 +623,7 @@ class MogoPrivateObuNewManager private constructor() {
EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_BSW.poiType)
alertContent =
EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_BSW.poiType)
+ v2xType = EventTypeEnumNew.TYPE_USECASE_ID_BSW.poiType
if (
direction == WarningDirectionEnum.ALERT_WARNING_LEFT ||
direction == WarningDirectionEnum.ALERT_WARNING_TOP_LEFT ||
@@ -638,7 +649,8 @@ class MogoPrivateObuNewManager private constructor() {
EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_LCW.poiType)
ttsContent =
EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_LCW.poiType)
- if (
+ v2xType = EventTypeEnumNew.TYPE_USECASE_ID_LCW.poiType
+ if (
direction == WarningDirectionEnum.ALERT_WARNING_LEFT ||
direction == WarningDirectionEnum.ALERT_WARNING_TOP_LEFT ||
direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT
@@ -661,6 +673,7 @@ class MogoPrivateObuNewManager private constructor() {
EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_DNPW.poiType)
ttsContent =
EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_DNPW.poiType)
+ v2xType = EventTypeEnumNew.TYPE_USECASE_ID_DNPW.poiType
}
//紧急制动预警
@@ -669,6 +682,7 @@ class MogoPrivateObuNewManager private constructor() {
EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_EBW.poiType)
ttsContent =
EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_EBW.poiType)
+ v2xType = EventTypeEnumNew.TYPE_USECASE_ID_EBW.poiType
}
//异常车辆提醒
@@ -687,6 +701,7 @@ class MogoPrivateObuNewManager private constructor() {
EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_CLW.poiType)
ttsContent =
EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_CLW.poiType)
+ v2xType = EventTypeEnumNew.TYPE_USECASE_ID_CLW.poiType
alertContent = String.format(alertContent, direction.desc)
ttsContent = String.format(ttsContent, direction.desc)
}
@@ -696,6 +711,7 @@ class MogoPrivateObuNewManager private constructor() {
EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_EVW.poiType)
ttsContent =
EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_EVW.poiType)
+ v2xType = EventTypeEnumNew.TYPE_USECASE_ID_EVW.poiType
}
// 这里处理固定的提示信息,包括了<紧急车辆提醒>
@@ -715,9 +731,9 @@ class MogoPrivateObuNewManager private constructor() {
)
if (level == 2 || level == 3) {
//不显示弹框,其它保留
- saveObuData(appId, alertContent, ttsContent)
+ saveObuData(v2xType, alertContent, ttsContent)
CallerHmiManager.warningV2X(
- appId,
+ v2xType,
alertContent,
ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒
object : IMoGoWarningStatusListener {
@@ -736,10 +752,12 @@ class MogoPrivateObuNewManager private constructor() {
}, direction
)
}
+
//更新周边车辆进行预警颜色变换,车辆实时移动和变色 ,UUID不需要匹配了
TrafficDataConvertUtilsNew.cvxV2vThreatIndInfo2TrafficData(info)?.let {
CallerMapUIServiceManager.getMarkerService()
?.updateITrafficThreatLevelInfo(it)
+ CallerObuWarningListenerManager.invokeTrackerWarningInfo(it)
}
}
// 删除
@@ -751,6 +769,7 @@ class MogoPrivateObuNewManager private constructor() {
it.threatLevel = 0x01
CallerMapUIServiceManager.getMarkerService()
?.updateITrafficThreatLevelInfo(it)
+ CallerObuWarningListenerManager.removeTrackerWarningInfo(it)
}
}
}
@@ -815,13 +834,24 @@ class MogoPrivateObuNewManager private constructor() {
if (!isShowRunRedLight) {
isShowRunRedLight = true
CallerLogger.d(
- "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "changeTrafficLightStatus 闯红灯 --------> ")
+ "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}",
+ "changeTrafficLightStatus 闯红灯 --------> "
+ )
ttsContent =
EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType)
alertContent =
EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType)
- saveObuData(EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType, alertContent, ttsContent)
- showWarning(EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType, alertContent, ttsContent, WarningDirectionEnum.ALERT_WARNING_NON)
+ saveObuData(
+ EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType,
+ alertContent,
+ ttsContent
+ )
+ showWarning(
+ EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType,
+ alertContent,
+ ttsContent,
+ WarningDirectionEnum.ALERT_WARNING_NON
+ )
}
}
@@ -839,16 +869,27 @@ class MogoPrivateObuNewManager private constructor() {
ttsContent =
String.format(
EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType),
- adviceSpeedTts)
+ adviceSpeedTts
+ )
alertContent =
String.format(
EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType),
- adviceSpeed)
+ adviceSpeed
+ )
val maxSpeed = currentLight.suggestMaxSpeed
if (maxSpeed > 0) {
- saveObuData(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, alertContent, ttsContent)
- showWarning(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, alertContent, ttsContent, WarningDirectionEnum.ALERT_WARNING_NON)
+ saveObuData(
+ EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType,
+ alertContent,
+ ttsContent
+ )
+ showWarning(
+ EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType,
+ alertContent,
+ ttsContent,
+ WarningDirectionEnum.ALERT_WARNING_NON
+ )
}
}
}
@@ -914,7 +955,12 @@ class MogoPrivateObuNewManager private constructor() {
/**
* 消息盒子对应消息的语音播报
*/
- private fun showWarning(type: String, content: String, tts: String, direction: WarningDirectionEnum) {
+ private fun showWarning(
+ type: String,
+ content: String,
+ tts: String,
+ direction: WarningDirectionEnum
+ ) {
CallerHmiManager.warningV2X(
type,
content,
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt
index f27e3087b9..f988d43fcb 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt
@@ -158,6 +158,10 @@ class DevaToolsProvider : IDevaToolsProvider {
upgradeManager.updateUpgradeProgress(mContext!!)
}
+ override fun updateObuUpgradeStatus() {
+ upgradeManager.updateObuUpgradeStatus(mContext!!)
+ }
+
override fun showStatusBar(ctx: Context, container: ViewGroup) {
StatusManager.init(ctx)
StatusManager.show(container)
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt
index 3bc530ebaa..2e08b89f0a 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt
@@ -43,6 +43,8 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener {
fun init(context: Context) {
mContext = context
+ SharedPrefsMgr.getInstance(mContext!!).putLong("typeDriver", 0)
+ SharedPrefsMgr.getInstance(mContext!!).putLong("typePassenger", 0)
CallerAutopilotCarConfigListenerManager.addListener(TAG, this)
ipcUpgradeManager.init(context)
UiThreadHandler.postDelayed({ queryAppUpgrade() }, 10_000)
@@ -57,6 +59,9 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener {
if (carConfigResp != null && !TextUtils.isEmpty(carConfigResp.macAddress)) {
Log.d("Upgrade", "MoGoHandAdasMsgManager address = " + carConfigResp.macAddress)
getBindingCarInfo(carConfigResp.macAddress, MoGoAiCloudClientConfig.getInstance().sn)
+
+ //obu的升级,只需要司机屏连接
+ queryObuUpgrade(carConfigResp.macAddress)
}
}
@@ -162,11 +167,11 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener {
}
/**
- * 司机屏 处理obu升级即可,乘客屏不需要处理 TODO OBU的角色
+ * 司机屏 处理obu升级即可,乘客屏不需要处理
*
*/
- fun queryObuUpgrade() {
- ObuUpgradeAppNetWorkManager.getInstance().getObuUpgradeInfo(mContext, mAddress, role.toString() + "")
+ private fun queryObuUpgrade(macAddress: String) {
+ ObuUpgradeAppNetWorkManager.getInstance().getObuUpgradeInfo(mContext, macAddress)
}
}
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt
index 3a44ccd5e9..dca175382b 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt
@@ -74,17 +74,20 @@ class BindingCarNetWorkManager private constructor() {
override fun onSubscribe(d: Disposable) {}
override fun onNext(info: BindingCarInfo) {
if (info != null && info.getData() != null) {
- d(SceneConstant.M_BINDING + TAG, "getBindingCarInfo data =" + info.getData().toString())
- if (!SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.MAC_ADDRESS).equals(macAddress) && DebugConfig.isCarModelChange()) {
- updateCarVrIconRes(info.getData().brandId);
- }
+ d(
+ SceneConstant.M_BINDING + TAG,
+ "getBindingCarInfo data =" + info.getData().toString()
+ )
+ updateCarVrIconRes(info.getData().brandId);
when (info.getData().compare) {
"0" -> showBindingCarDialog()
"3" -> showModifyBindingCarDialog()
"null" -> TipToast.shortTip("当前工控机没有入库")
}
- SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.CAR_INFO, GsonUtils.toJson(info.getData()))
- SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.MAC_ADDRESS, macAddress)
+ SharedPrefsMgr.getInstance(context).putString(
+ SharedPrefsConstants.CAR_INFO,
+ GsonUtils.toJson(info.getData())
+ )
}
}
@@ -133,10 +136,7 @@ class BindingCarNetWorkManager private constructor() {
SceneConstant.M_BINDING + TAG,
"modifyBindingCar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString()
)
- if (!SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.MAC_ADDRESS).equals(macAddress) && DebugConfig.isCarModelChange()) {
- updateCarVrIconRes(info.data.brandId);
- }
- SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.MAC_ADDRESS, macAddress)
+ updateCarVrIconRes(info.data.brandId)
}
}
@@ -155,6 +155,9 @@ class BindingCarNetWorkManager private constructor() {
if (brandId == null || brandId.isEmpty()) {
return
}
+ if (getDefaultId() == brandId) {
+ return
+ }
d(SceneConstant.M_BINDING + TAG, "updateCarVrIconRes : $brandId")
when (brandId) {
"1" -> {
@@ -176,4 +179,12 @@ class BindingCarNetWorkManager private constructor() {
}
}
+ private fun getDefaultId(): String {
+ return when (HdMapBuildConfig.currentCarVrIconRes) {
+ R.raw.chuzuche -> "1"
+ R.raw.xiaobache -> "3"
+ else -> "1"
+ }
+ }
+
}
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/ObuUpgradeAppNetWorkManager.java b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/ObuUpgradeAppNetWorkManager.java
index c323d84c9e..cf5a8832bd 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/ObuUpgradeAppNetWorkManager.java
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/ObuUpgradeAppNetWorkManager.java
@@ -7,6 +7,7 @@ import android.content.Context;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.constants.HostConst;
import com.mogo.eagle.core.data.bindingcar.UpgradeAppInfo;
+import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.network.MoGoRetrofitFactory;
import com.mogo.eagle.core.network.utils.GsonUtil;
@@ -48,17 +49,17 @@ public class ObuUpgradeAppNetWorkManager {
}
/**
- * 获取obu升级信息
+ * 获取obu升级信息,obu升级服务端使用app升级接口,根据screenType区分类型
* mac :工控机mac地址
* screenType : 类型
*/
- public void getObuUpgradeInfo(Context context, String mac, String screenType) {
+ public void getObuUpgradeInfo(Context context, String mac) {
// String sn = "X20202203105S688HZ";
// String mac = "48:b0:2d:3a:bc:78";
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
- int versionCode = AppUtils.getAppVersionCode();
- CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo mac = " + mac + "---type = " + screenType + "---sn = " + sn + "---versionCode =" + versionCode);
- UpgradeAppRequest request = new UpgradeAppRequest(sn, mac, screenType);
+ String obuVersionName = String.valueOf(AppUtils.getAppVersionCode()); // TODO 获取obu的版本号, string和int 服务端处理
+ CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo mac = " + mac + "---sn = " + sn + "---obuVersionName =" + obuVersionName);
+ UpgradeAppRequest request = new UpgradeAppRequest(sn, mac, "7");
RequestBody requestBody = RequestBody.create(MediaType.get("application/json;charset=UTF-8"), GsonUtil.jsonFromObject(request));
mUpgradeApiService.getUpgradeInfo(requestBody)
.subscribeOn(Schedulers.io())
@@ -71,9 +72,10 @@ public class ObuUpgradeAppNetWorkManager {
@Override
public void onNext(@NonNull UpgradeAppInfo info) {
if (info != null && info.result != null) {
- CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo url = " + info.result.getAppUrl() + "----code = " + info.result.getVersionCode() + "--versionCode =" + versionCode + "--info.result = " + info.result);
- if (info.result.getVersionCode() > versionCode) {
- CallerHmiManager.INSTANCE.showUpgradeDialog(info.result.getAppUrl().substring(info.result.getAppUrl().lastIndexOf("/")+1), info.result.getAppUrl(), info.result.getInstallTitle(), info.result.getInstallContent(), info.result.getInstallType());
+ CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo url = " + info.result.getAppUrl() + "----name = " + info.result.getVersionName() + "--obuVersionName =" + obuVersionName + "--info.result = " + info.result);
+ if (!String.valueOf(info.result.getVersionName()).equals(obuVersionName)) {
+ //下载 TAG和文件名 TODO
+ CallerDevaToolsManager.INSTANCE.downLoadPackage("OBU", info.result.getAppUrl());
}
} else {
CallerLogger.INSTANCE.d(M_BINDING + TAG, "getObuUpgradeInfo onNext info == null");
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt
index e880c59532..3fdbdce9b6 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt
@@ -14,6 +14,8 @@ import com.mogo.eagle.core.utilcode.breakpoint.utils.DownloadUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
import com.mogo.eagle.core.utilcode.util.AppUtils
+import com.mogo.eagle.core.utilcode.util.ZipUtils
+import java.io.IOException
class UpgradeManager : IDownload {
@@ -116,6 +118,9 @@ class UpgradeManager : IDownload {
}
}
+ /**
+ * 鹰眼app下载监听
+ */
fun updateUpgradeProgress(context: Context) {
val builder = NotificationCompat.Builder(context)
// builder.setSmallIcon(R.mipmap.icon1001);//todo emArrow 更换图标,去除地图下载图标的依赖关系
@@ -147,4 +152,34 @@ class UpgradeManager : IDownload {
})
}
+ /**
+ * obu升级包下载监听
+ */
+ fun updateObuUpgradeStatus(context: Context) {
+ CallerDevaToolsUpgradeListenerManager.addListener(
+ TAG,
+ object : IMogoDevaToolsUpgradeListener {
+ override fun onStart(url: String?) {}
+ override fun onPause(url: String?) {}
+ override fun onProgress(url: String?, length: Int) {
+
+ }
+
+ override fun onFinished(url: String?) {
+ //下载完成,解压文件 TODO
+ try {
+ val files = ZipUtils.unzipFile("", "")
+ //传给obu升级
+
+ } catch (e: IOException) {
+ //解压失败
+
+ e.printStackTrace()
+ }
+ }
+
+ override fun onError(url: String?, errorMsg: String?) {}
+ })
+ }
+
}
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/NoticeTrafficDialog.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/NoticeTrafficDialog.kt
index 8f2add30d3..0b1490ef68 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/NoticeTrafficDialog.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/traffic/NoticeTrafficDialog.kt
@@ -20,8 +20,7 @@ import com.mogo.eagle.core.data.notice.NoticeTrafficStyleInfo.NoticeTrafficAccou
import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData
import com.mogo.eagle.core.data.notice.NoticeValue
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.startAutoPilot
-import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getCurWgs84Lat
-import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getCurWgs84Lon
+import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager.bizProvider
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
@@ -201,8 +200,8 @@ class NoticeTrafficDialog : BaseFloatDialog, LifecycleObserver {
mTrafficStyleInfo!!.lat, mTrafficStyleInfo!!.lon
)
parameters.startLatLon = AutoPilotLonLat(
- getCurWgs84Lat(),
- getCurWgs84Lon()
+ CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude,
+ CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude
)
parameters.endLatLon = AutoPilotLonLat(gcj02[0], gcj02[1])
startAutoPilot(parameters)
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ToggleDebugViewTrigger.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ToggleDebugViewTrigger.kt
new file mode 100644
index 0000000000..72de44ebc8
--- /dev/null
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ToggleDebugViewTrigger.kt
@@ -0,0 +1,16 @@
+package com.mogo.eagle.core.function.hmi.ui.setting
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.View
+
+class ToggleDebugViewTrigger(context: Context, attrs: AttributeSet?
+) : View(context, attrs){
+
+ init {
+ setOnLongClickListener {
+ ToggleDebugView.toggleDebugView.toggle(this.context)
+ true
+ }
+ }
+}
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/SteeringBrakeView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/SteeringBrakeView.kt
index 00021183f3..f89fe8f773 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/SteeringBrakeView.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/SteeringBrakeView.kt
@@ -12,10 +12,12 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLamplightListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLamplightListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
+import com.mogo.eagle.core.function.call.map.*
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
+import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.Utils
import kotlinx.android.synthetic.main.view_steering_brake.view.*
@@ -30,6 +32,7 @@ class SteeringBrakeView(context: Context, attrs: AttributeSet?) : ConstraintLayo
private const val TAG = "SteeringBrakeView"
}
+ @Volatile
private var isShowTurnLight = false
private var brakeLight = -1
@@ -59,11 +62,13 @@ class SteeringBrakeView(context: Context, attrs: AttributeSet?) : ConstraintLayo
"$M_HMI$TAG",
"---onAutopilotLightSwitchData ---Acceleration = " + gnssInfo.acceleration + "-- brakeLight = " + brakeLight
)
- if (!isShowTurnLight) { //在不展示转向灯的情况下,展示车辆刹车的动效
- brakeView.visibility = View.VISIBLE
- brakeView.setBrakeLight(brakeLight)
- } else {
- brakeView.visibility = View.GONE
+ ThreadUtils.runOnUiThread {
+ if (!isShowTurnLight) { //在不展示转向灯的情况下,展示车辆刹车的动效
+ brakeView.visibility = View.VISIBLE
+ brakeView.setBrakeLight(brakeLight)
+ } else {
+ brakeView.visibility = View.GONE
+ }
}
}
}
@@ -73,13 +78,16 @@ class SteeringBrakeView(context: Context, attrs: AttributeSet?) : ConstraintLayo
//can数据转发 转向灯状态 0是正常 1是左转 2是右转
if (lightSwitch != null) {
CallerLogger.d("$M_HMI$TAG", "---lightSwitch.getNumber() = " + lightSwitch.number)
- if (lightSwitch.number == 1 || lightSwitch.number == 2) {
- isShowTurnLight = true
- brakeView.visibility = View.VISIBLE
- brakeView.setBrakeLight(0)
- } else {
- brakeView.visibility = View.GONE
- isShowTurnLight = false
+ ThreadUtils.runOnUiThread {
+ if (lightSwitch.number == 1 || lightSwitch.number == 2) {
+ isShowTurnLight = true
+ brakeView.visibility = View.VISIBLE
+ brakeView.setBrakeLight(0)
+ } else {
+ brakeView.visibility = View.GONE
+ isShowTurnLight = false
+ }
+ turnLightView.visibility = View.VISIBLE
}
}
}
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TurnLightViewStatus.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TurnLightViewStatus.kt
index c2683e8c6c..c4ebcd4dae 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TurnLightViewStatus.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TurnLightViewStatus.kt
@@ -12,15 +12,10 @@ import android.widget.ImageView
import androidx.constraintlayout.widget.ConstraintLayout
import chassis.Chassis
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLamplightListener
-import com.mogo.eagle.core.function.api.map.angle.Turning
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLamplightListenerManager
-import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
import com.mogo.eagle.core.function.hmi.R
-import kotlinx.android.synthetic.main.view_steering_brake.view.*
+import com.mogo.eagle.core.utilcode.util.ThreadUtils
import kotlinx.android.synthetic.main.view_turn_light_status.view.*
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.GlobalScope
-import kotlinx.coroutines.launch
/**
* @description
@@ -39,6 +34,9 @@ open class TurnLightViewStatus @JvmOverloads constructor(
}
private val visible: Boolean
+ private var isLeftLight: Boolean = false
+ private var isRightLight: Boolean = false
+ private var isDisappear: Boolean = false
init {
val typedArray = context.obtainStyledAttributes(attrs, R.styleable.TurnLightView)
@@ -71,8 +69,9 @@ open class TurnLightViewStatus @JvmOverloads constructor(
override fun onAutopilotLightSwitchData(lightSwitch: Chassis.LightSwitch?) {
super.onAutopilotLightSwitchData(lightSwitch)
lightSwitch?.let {
- turnLightView.visibility = View.VISIBLE
- setTurnLight(it)
+ ThreadUtils.runOnUiThread {
+ setTurnLight(it)
+ }
}
}
@@ -83,27 +82,37 @@ open class TurnLightViewStatus @JvmOverloads constructor(
if (!isAttachedToWindow) {
return
}
- GlobalScope.launch(Dispatchers.Main) {
- //根据左右进行显示和隐藏,实际要判断每个来的时间和频度
- when (directionLight) {
- Chassis.LightSwitch.LIGHT_LEFT -> { //左转向
- CallerVisualAngleManager.changeAngle(Turning(true))
+ //根据左右进行显示和隐藏,实际要判断每个来的时间和频度
+ when (directionLight.number) {
+ Chassis.LightSwitch.LIGHT_LEFT_VALUE -> { //左转向
+ if (!isLeftLight) {
+ isLeftLight = true
+ isRightLight = false
+ isDisappear = false
showNormalAnimation()
left_select_image.visibility = View.VISIBLE
right_select_image.visibility = View.GONE
right_select_image.clearAnimation()
setAnimation(left_select_image)
}
- Chassis.LightSwitch.LIGHT_RIGHT -> { //右转向
- CallerVisualAngleManager.changeAngle(Turning(true))
+ }
+ Chassis.LightSwitch.LIGHT_RIGHT_VALUE -> { //右转向
+ if (!isRightLight) {
+ isRightLight = true
+ isLeftLight = false
+ isDisappear = false
showNormalAnimation()
left_select_image.visibility = View.GONE
right_select_image.visibility = View.VISIBLE
left_select_image.clearAnimation()
setAnimation(right_select_image)
}
- else -> { //消失
- CallerVisualAngleManager.changeAngle(Turning(false))
+ }
+ Chassis.LightSwitch.LIGHT_NONE_VALUE -> { //消失
+ if (!isDisappear) {
+ isDisappear = true
+ isLeftLight = false
+ isRightLight = false
animationDisappear()
}
}
@@ -154,8 +163,10 @@ open class TurnLightViewStatus @JvmOverloads constructor(
}
override fun onAnimationEnd(p0: Animation?) {
- left_nor_image.visibility = View.GONE
- right_nor_image.visibility = View.GONE
+ if (!visible) {
+ left_nor_image.visibility = View.GONE
+ right_nor_image.visibility = View.GONE
+ }
}
})
@@ -167,10 +178,9 @@ open class TurnLightViewStatus @JvmOverloads constructor(
}
override fun onAnimationEnd(p0: Animation?) {
- if (visible) {
+ if (!visible) {
turn_light_layout.visibility = View.GONE
}
- stopAnimate()
}
})
}
@@ -179,19 +189,13 @@ open class TurnLightViewStatus @JvmOverloads constructor(
private fun setAnimation(imageView: ImageView) {
val animationSet = AnimatorSet()
val valueAnimator = ObjectAnimator.ofFloat(imageView, "alpha", 0f, 1.0f)
- val valueAnimatorDisappare = ObjectAnimator.ofFloat(imageView, "alpha", 1.0f, 0f)
+ val valueAnimatorDisappear = ObjectAnimator.ofFloat(imageView, "alpha", 1.0f, 0f)
valueAnimator.duration = 1000
- valueAnimatorDisappare.duration = 800
+ valueAnimatorDisappear.duration = 800
valueAnimator.repeatCount = -1
- valueAnimatorDisappare.repeatCount = -1
- animationSet.playTogether(valueAnimatorDisappare, valueAnimator)
+ valueAnimatorDisappear.repeatCount = -1
+ animationSet.playTogether(valueAnimatorDisappear, valueAnimator)
animationSet.start()
}
- private fun stopAnimate() {
- turn_light_layout.clearAnimation()
- left_nor_image.clearAnimation()
- right_nor_image.clearAnimation()
- }
-
}
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt
index dd22839a09..8ec86f7842 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt
@@ -10,8 +10,7 @@ import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
-import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getCurWgs84Lat
-import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getCurWgs84Lon
+import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
@@ -80,7 +79,10 @@ class AutoPilotStatusView constructor(
currentAutopilot.endName = "HYJC"
currentAutopilot.isSpeakVoice = false
currentAutopilot.startLatLon =
- AutopilotControlParameters.AutoPilotLonLat(getCurWgs84Lat(), getCurWgs84Lon())
+ AutopilotControlParameters.AutoPilotLonLat(
+ CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude,
+ CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude
+ )
currentAutopilot.endLatLon =
AutopilotControlParameters.AutoPilotLonLat(26.819716071924688, 112.57715442110867)
currentAutopilot.vehicleType = 10
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/LimitingVelocityView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/LimitingVelocityView.kt
index ec4155e06c..8746a17300 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/LimitingVelocityView.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/LimitingVelocityView.kt
@@ -2,6 +2,7 @@ package com.mogo.eagle.core.function.hmi.ui.widget
import android.content.Context
import android.util.AttributeSet
+import android.util.Log
import android.view.LayoutInflater
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
@@ -12,6 +13,7 @@ import com.mogo.eagle.core.function.api.v2x.ILimitingVelocityListener
import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
import com.mogo.eagle.core.function.call.v2x.CallerLimitingVelocityListenerManager
import com.mogo.eagle.core.function.hmi.R
+import com.mogo.eagle.core.utilcode.util.ThreadUtils
import kotlinx.android.synthetic.main.view_limiting_speed_vr.view.*
/**
@@ -37,13 +39,16 @@ class LimitingVelocityView constructor(
}
override fun onLimitingVelocityChange(limitingVelocity: Int, sourceType: DataSourceType) {
- if (limitingVelocity > 0) {
- this.visibility = View.VISIBLE
- tvLimitingVelocity.text = "$limitingVelocity"
- tvLimitingSource.text = sourceType.name
- } else {
- this.visibility = View.GONE
- tvLimitingSource.text = ""
+ ThreadUtils.runOnUiThread {
+ if (limitingVelocity > 0) {
+ visibility = View.VISIBLE
+ tvLimitingVelocity.text = "$limitingVelocity"
+ Log.d("emArrow","limit : ${ DataSourceType.getName(sourceType)}")
+ tvLimitingSource.text = DataSourceType.getName(sourceType)
+ } else {
+ visibility = View.GONE
+ tvLimitingSource.text = ""
+ }
}
}
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java
index 4ef06c5609..d1cead5ff1 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java
@@ -53,6 +53,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication {
CallerMsgBoxManager.INSTANCE.queryAllMessages(this);
}
CallerDevaToolsManager.INSTANCE.updateUpgradeProgress();
+ CallerDevaToolsManager.INSTANCE.updateObuUpgradeStatus();
}
@Override
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_limiting_speed_vr.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_limiting_speed_vr.xml
index fb6060c188..c7d079cfb7 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_limiting_speed_vr.xml
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_limiting_speed_vr.xml
@@ -23,14 +23,12 @@
android:id="@+id/tvLimitingSource"
android:layout_width="120dp"
android:layout_height="35dp"
- android:layout_marginEnd="40dp"
android:gravity="center"
- android:text=""
+ android:text="123"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/dp_30"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/tvLimitingVelocity"
- android:visibility="gone" />
+ app:layout_constraintTop_toBottomOf="@+id/tvLimitingVelocity" />
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt
index 0cd59447a9..fa308abe33 100644
--- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt
+++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/MapIdentifySubscriber.kt
@@ -4,10 +4,13 @@ import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.constants.MogoServicePaths.PATH_IDENTIFY
+import com.mogo.eagle.core.data.traffic.TrafficData
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener
import com.mogo.eagle.core.function.api.base.IMoGoSubscriber
import com.mogo.eagle.core.function.api.map.marker.IMoGoIdentifyListener
+import com.mogo.eagle.core.function.api.obu.IMoGoObuStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
+import com.mogo.eagle.core.function.call.obu.CallerObuWarningListenerManager
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import mogo.telematics.pad.MessagePad
import mogo.telematics.pad.MessagePad.TrackedObject
@@ -21,7 +24,7 @@ import mogo.yycp.api.proto.SocketDownData
*/
@Route(path = PATH_IDENTIFY)
class MapIdentifySubscriber private constructor() : IMoGoIdentifyListener, IMoGoSubscriber,
- IMoGoAutopilotIdentifyListener {
+ IMoGoAutopilotIdentifyListener, IMoGoObuStatusListener {
private val TAG = "MapIdentifySubscriber"
@@ -37,11 +40,12 @@ class MapIdentifySubscriber private constructor() : IMoGoIdentifyListener, IMoGo
override fun onCrate() {
CallerAutopilotIdentifyListenerManager.addListener(TAG, this)
-
+ CallerObuWarningListenerManager.addListener(TAG, this)
}
override fun onDestroy() {
CallerAutopilotIdentifyListenerManager.removeListener(TAG)
+ CallerObuWarningListenerManager.removeListener(TAG)
}
override fun onAutopilotIdentifyDataUpdate(trafficData: List?) {
@@ -62,7 +66,6 @@ class MapIdentifySubscriber private constructor() : IMoGoIdentifyListener, IMoGo
try {
if (FunctionBuildConfig.isDrawAiCloudFusion) {
ThreadUtils.getSinglePool().execute {
-// aiCloudDataDrawer.renderAiCloudResult(cloudData)
IdentifyFactory.renderAiCloudResult(cloudData)
}
} else {
@@ -74,7 +77,6 @@ class MapIdentifySubscriber private constructor() : IMoGoIdentifyListener, IMoGo
}
fun clearAiCloudRoma() {
-// aiCloudDataDrawer.clearAiMarker()
IdentifyFactory.clearAiMarker()
}
@@ -92,6 +94,47 @@ class MapIdentifySubscriber private constructor() : IMoGoIdentifyListener, IMoGo
}
}
+ override fun updateTrackerFusionData(trackObject: TrackedObject?) {
+ super.updateTrackerFusionData(trackObject)
+ try {
+ if (FunctionBuildConfig.isObuWarningFusionUnion) {
+ ThreadUtils.getSinglePool().execute {
+ //todo emArrow
+ }
+ } else {
+
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+
+ override fun updateTrackerWarningInfo(trafficData: TrafficData) {
+ super.updateTrackerWarningInfo(trafficData)
+ try {
+ if (FunctionBuildConfig.isObuWarningFusionUnion) {
+ ThreadUtils.getSinglePool().execute {
+ IdentifyFactory.renderOBUWarningObj(true, trafficData)
+ }
+ } else {
+ IdentifyFactory.renderOBUWarningObj(false, trafficData)
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+
+ override fun removeTrackerWarningInfo(trafficData: TrafficData) {
+ super.removeTrackerWarningInfo(trafficData)
+ try {
+ ThreadUtils.getSinglePool().execute {
+ IdentifyFactory.renderOBUWarningObj(false, trafficData)
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+
override fun getIdentifyObj(uuid: String): TrackedObject? {
return IdentifyFactory.getIdentifyObj(uuid)
}
diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/RouteOverlayDrawer.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/RouteOverlayDrawer.java
index 9cf9145540..a218d36f2e 100644
--- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/RouteOverlayDrawer.java
+++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/RouteOverlayDrawer.java
@@ -5,16 +5,20 @@ import android.graphics.Color;
import android.os.Handler;
import android.os.HandlerThread;
import android.util.Log;
+
import androidx.core.util.Pools;
+
import com.mogo.eagle.core.data.map.MogoLatLng;
-import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
+import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager;
import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils;
import com.mogo.map.MogoOverlayManager;
import com.mogo.map.overlay.IMogoOverlayManager;
import com.mogo.map.overlay.IMogoPolyline;
import com.mogo.map.overlay.MogoPolylineOptions;
+
import java.util.LinkedList;
import java.util.List;
+
import mogo.telematics.pad.MessagePad;
public class RouteOverlayDrawer {
@@ -128,8 +132,8 @@ public class RouteOverlayDrawer {
pps.add(acquire);
RouteStrategy.INSTANCE.check(route.getVelocity(), route.getAcceleration(), routeList.size());
}
- double lon = CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon();
- double lat = CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat();
+ double lon = CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLongitude();
+ double lat = CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLatitude();
if (points.size() > 0) {
MogoLatLng top = null;
while (points.size() != 0) {
@@ -140,8 +144,8 @@ public class RouteOverlayDrawer {
if (first == top) {
break;
}
- lon = CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon();
- lat = CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat();
+ lon = CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLongitude();
+ lat = CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLatitude();
long angle = isPointOnCarFront(lon, lat, bearing, first.lon, first.lat);
if (angle >= 90) {
RouteStrategy.INSTANCE.remove(first.acc);
diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/MapBizView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/MapBizView.kt
index ea51c89a49..ada377f31c 100644
--- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/MapBizView.kt
+++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/MapBizView.kt
@@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.view
import android.content.Context
import android.os.Bundle
import android.util.AttributeSet
+import android.util.Log
import androidx.lifecycle.LifecycleObserver
import chassis.Chassis
import com.mogo.eagle.core.data.map.MogoLocation
@@ -12,14 +13,16 @@ import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLamplightListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
+import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager
import com.mogo.map.MogoMapView
-class MapBizView(context: Context?, attrs: AttributeSet?) : MogoMapView(context, attrs), IMoGoSkinModeChangeListener,
- IMoGoChassisLocationWGS84Listener, IMoGoChassisLamplightListener , LifecycleObserver {
-
- companion object{
+class MapBizView(context: Context?, attrs: AttributeSet?) : MogoMapView(context, attrs),
+ IMoGoSkinModeChangeListener,
+ IMoGoChassisLocationWGS84Listener, IMoGoChassisLamplightListener, LifecycleObserver {
+
+ companion object {
private const val TAG = "MapBizView"
}
@@ -34,7 +37,7 @@ class MapBizView(context: Context?, attrs: AttributeSet?) : MogoMapView(context,
}
- private fun initMapView(){
+ private fun initMapView() {
map?.uiSettings?.let {
//设置所有手势是否可用
it.setAllGesturesEnabled(true)
@@ -84,23 +87,47 @@ class MapBizView(context: Context?, attrs: AttributeSet?) : MogoMapView(context,
setExtraGPSData(gnssInfo)
}
+ @Volatile
+ private var isVisualAngleChanged = false
+
override fun onAutopilotLightSwitchData(lightSwitch: Chassis.LightSwitch?) {
super.onAutopilotLightSwitchData(lightSwitch)
lightSwitch?.let {
when (it.number) {
- 1 -> { //左转灯
- CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(4, 500)
+ Chassis.LightSwitch.LIGHT_LEFT_VALUE -> { //左转灯
+ CallerVisualAngleManager.showTurning(true)
+ showTurn(1)
}
- 2 -> { //右转灯
- CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(2, 500)
+ Chassis.LightSwitch.LIGHT_RIGHT_VALUE -> { //右转灯
+ CallerVisualAngleManager.showTurning(true)
+ showTurn(2)
+
}
- else -> {
- CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(3, 500)
+ Chassis.LightSwitch.LIGHT_NONE_VALUE -> {
+ CallerVisualAngleManager.showTurning(false)
+ hideTurn()
}
}
}
}
+ private fun showTurn(lightNum: Int) {
+ if (!isVisualAngleChanged) {
+ isVisualAngleChanged = true
+ when (lightNum) {
+ 1 -> CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(4, 500)
+ 2 -> CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(2, 500)
+ }
+ }
+ }
+
+ private fun hideTurn() {
+ if (isVisualAngleChanged) {
+ isVisualAngleChanged = false
+ CallerMapUIServiceManager.getMapUIController()?.setCarLightsType(3, 500)
+ }
+ }
+
override fun onDestroy() {
// 先取消注册数据,再onDestroy
CallerSkinModeListenerManager.removeListener(TAG)
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 8891300245..880661cafd 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
@@ -196,6 +196,20 @@ class OverMapView @JvmOverloads constructor(
}
}
+ /**
+ * 清空线路并隐藏起、终点
+ */
+ fun clearCustomPolyline() {
+ if (mBottomPolyline != null) {
+ mBottomPolyline!!.remove()
+ }
+ if (mCoveredPolyline != null) {
+ mCoveredPolyline!!.remove()
+ }
+ mStartMarker?.isVisible = false
+ mEndMarker?.isVisible = false
+ }
+
private fun initView(context: Context) {
mContext = context
val smpView = LayoutInflater.from(context).inflate(R.layout.module_overview_map_view, this)
@@ -413,15 +427,6 @@ class OverMapView @JvmOverloads constructor(
return false
}
- fun clearCustomPolyline() {
- if (mBottomPolyline != null) {
- mBottomPolyline!!.remove()
- }
- if (mCoveredPolyline != null) {
- mCoveredPolyline!!.remove()
- }
- }
-
/**
* 绘制新基建Markers(比如:摄像头)
*
@@ -615,6 +620,7 @@ class OverMapView @JvmOverloads constructor(
mCoveredPolyline = mAMap!!.addPolyline(polylineOptions)
if (mBottomPolyline != null) {
mBottomPolyline!!.remove()
+ mBottomPolyline = null
}
}
}
diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningMarker.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningMarker.java
index 51af0affe0..b81750d42c 100644
--- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningMarker.java
+++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/warning/V2XWarningMarker.java
@@ -11,7 +11,7 @@ import com.mogo.commons.utils.Trigonometric;
import com.mogo.eagle.core.data.map.MogoLatLng;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.data.v2x.DrawLineInfo;
-import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
+import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.v2x.events.bridge.BridgeApi;
import com.mogo.eagle.core.function.v2x.events.manager.IMoGoPersonWarnPolylineManager;
@@ -44,8 +44,8 @@ public class V2XWarningMarker implements IV2XMarker {
private final List fillPoints = new ArrayList();//停止线经纬度合集
private boolean isFirstLocation = false;
private MogoLatLng carLocation = new MogoLatLng(
- CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat(),
- CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon()
+ CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLatitude(),
+ CallerChassisLocationWGS84ListenerManager.INSTANCE.getChassisLocationWGS84().getLongitude()
);
/*
diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/MapUtils.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/MapUtils.kt
index 09ec0fb754..c49b645366 100644
--- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/MapUtils.kt
+++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/utils/MapUtils.kt
@@ -3,7 +3,7 @@ package com.mogo.eagle.core.function.v2x.events.utils
import android.content.Context
import android.graphics.Rect
import com.mogo.eagle.core.data.map.MogoLatLng
-import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
+import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.utilcode.util.WindowUtils
@@ -24,8 +24,8 @@ class MapUtils {
mBoundRect.right = WindowUtils.dip2px(context, 100f)
// 当前车辆位置
val carLocation = MogoLatLng(
- CallerAutoPilotStatusListenerManager.getCurWgs84Lat(),
- CallerAutoPilotStatusListenerManager.getCurWgs84Lon()
+ CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude,
+ CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude
)
// 调整自适应的地图镜头
CallerMapUIServiceManager.getMapUIController()
diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/DataSourceType.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/DataSourceType.kt
index 7cc8ddb8fa..bddc074309 100644
--- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/DataSourceType.kt
+++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/DataSourceType.kt
@@ -1,11 +1,26 @@
package com.mogo.eagle.core.data.enums
+
+
enum class DataSourceType(name: String) {
DEFAULT("defalut"),
OBU("OBU"),
MAP("MAP"),
TELEMATIC("TELEMATIC"),
AICLOUD("AI云"),
- SUMMARY("汇总")// V2X事件汇总
+ SUMMARY("汇总");// V2X事件汇总
+
+ companion object{
+ fun getName(type :DataSourceType):String{
+ return when(type){
+ OBU -> "OBU"
+ MAP -> "MAP"
+ TELEMATIC -> "TELEMATIC"
+ AICLOUD -> "AI云"
+ SUMMARY -> "汇总"
+ else -> "defalut"
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt
index f53dce752d..e11938e4bc 100644
--- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt
+++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt
@@ -114,6 +114,11 @@ interface IDevaToolsProvider : IProvider {
*/
fun updateUpgradeProgress()
+ /**
+ * obu下载进度
+ */
+ fun updateObuUpgradeStatus()
+
/**
* 展示状态栏
*/
diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuStatusListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuStatusListener.kt
index 27446d7979..72980475f5 100644
--- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuStatusListener.kt
+++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuStatusListener.kt
@@ -1,7 +1,7 @@
package com.mogo.eagle.core.function.api.obu
-import com.mogo.eagle.core.data.obu.ObuStatusInfo
import com.mogo.eagle.core.data.traffic.TrafficData
+import mogo.telematics.pad.MessagePad
/**
* @author xiaoyuzhou
@@ -17,6 +17,13 @@ interface IMoGoObuStatusListener {
}
+ /**
+ * obu Tracker data
+ */
+ fun updateTrackerFusionData(trackObject: MessagePad.TrackedObject?){
+
+ }
+
/**
* 更新obu Tracker 预警信息
*/
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLamplightListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLamplightListenerManager.kt
index e5157806b7..08493422d9 100644
--- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLamplightListenerManager.kt
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLamplightListenerManager.kt
@@ -1,5 +1,6 @@
package com.mogo.eagle.core.function.call.autopilot
+import android.util.Log
import chassis.Chassis
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLamplightListener
import com.mogo.eagle.core.function.call.base.CallerBase
@@ -17,24 +18,24 @@ object CallerChassisLamplightListenerManager : CallerBase= 10) {
isOnTurnLight = false
return turn_light
- } else {
- turnLightTimes++
- null
}
+ turnLightTimes++
+ return null
} else {
- null
+ return null
}
} else {
turnLightTimes = 0
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLocationWGS84ListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLocationWGS84ListenerManager.kt
index 38a45f7fd9..a0212d23ee 100644
--- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLocationWGS84ListenerManager.kt
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerChassisLocationWGS84ListenerManager.kt
@@ -14,9 +14,9 @@ import com.mogo.eagle.core.utilcode.util.TimeUtils
object CallerChassisLocationWGS84ListenerManager : CallerBase() {
@Volatile
- private var mGnssInfo: MogoLocation? = null
+ private var mGnssInfo: MogoLocation = MogoLocation()
- fun getChassisLocationWGS84(): MogoLocation? {
+ fun getChassisLocationWGS84(): MogoLocation {
return mGnssInfo
}
@@ -40,27 +40,26 @@ object CallerChassisLocationWGS84ListenerManager : CallerBase 0) {
- val hzTime = (1.0 / hz.toDouble()) * 1000
- // 获取最后一次回调的时间
- val hzLastSendTime = M_LISTENERS_HZ_LAST_SEND_TIME[tag]
- if (hzLastSendTime != null && hzLastSendTime > 0) {
- // 计算是否进入下一次回调周期
- val nowTime = TimeUtils.getNowMills()
- if (nowTime - hzLastSendTime > hzTime) {
- syncLocationCallback(tag, it, mGnssInfo!!, sourceType)
- }
- } else {
- syncLocationCallback(tag, it, mGnssInfo!!, sourceType)
+
+ M_LISTENERS.forEach {
+ val tag = it.key
+ // 获取数据监听需要的HZ
+ val hz = M_LISTENERS_HZ[tag]
+ if (hz != null && hz > 0) {
+ val hzTime = (1.0 / hz.toDouble()) * 1000
+ // 获取最后一次回调的时间
+ val hzLastSendTime = M_LISTENERS_HZ_LAST_SEND_TIME[tag]
+ if (hzLastSendTime != null && hzLastSendTime > 0) {
+ // 计算是否进入下一次回调周期
+ val nowTime = TimeUtils.getNowMills()
+ if (nowTime - hzLastSendTime > hzTime) {
+ syncLocationCallback(tag, it, mGnssInfo, sourceType)
}
} else {
- syncLocationCallback(tag, it, mGnssInfo!!, sourceType)
+ syncLocationCallback(tag, it, mGnssInfo, sourceType)
}
+ } else {
+ syncLocationCallback(tag, it, mGnssInfo, sourceType)
}
}
}
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt
index 345daf5c4c..37adbfcb54 100644
--- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt
@@ -154,6 +154,13 @@ object CallerDevaToolsManager {
devaToolsProviderApi?.updateUpgradeProgress()
}
+ /**
+ * obu下载状态
+ */
+ fun updateObuUpgradeStatus() {
+ devaToolsProviderApi?.updateObuUpgradeStatus()
+ }
+
/**
* 展示状态栏
*/
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt
index 4387d4a198..75c5a5f04e 100644
--- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/map/CallerVisualAngleManager.kt
@@ -14,6 +14,9 @@ object CallerVisualAngleManager {
.navigation() as? IMoGoVisualAngleChangeProvider
}
+ @Volatile
+ private var isVisualAngleChanged = false
+
fun changeAngle(scene: Scene) {
provider?.changeAngle(scene)
}
@@ -21,4 +24,18 @@ object CallerVisualAngleManager {
fun updateLongSightLevel(level: Boolean) {
provider?.updateLongSightLevel(level)
}
+
+ fun showTurning(open: Boolean) {
+ if (open) {
+ if (!isVisualAngleChanged) {
+ isVisualAngleChanged = true
+ changeAngle(Turning(true))
+ }
+ } else {
+ if (isVisualAngleChanged) {
+ isVisualAngleChanged = false
+ changeAngle(Turning(false))
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuWarningListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuWarningListenerManager.kt
index 228bb7fb73..0e94a35120 100644
--- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuWarningListenerManager.kt
+++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuWarningListenerManager.kt
@@ -3,6 +3,7 @@ package com.mogo.eagle.core.function.call.obu
import com.mogo.eagle.core.data.traffic.TrafficData
import com.mogo.eagle.core.function.api.obu.IMoGoObuStatusListener
import com.mogo.eagle.core.function.call.base.CallerBase
+import mogo.telematics.pad.MessagePad
/**
* OBU 监听管理
@@ -19,6 +20,13 @@ object CallerObuWarningListenerManager : CallerBase() {
}
}
+ fun invokeTrackerFusionData(trackObject: MessagePad.TrackedObject?){
+ M_LISTENERS.forEach {
+ val listener = it.value
+ listener.updateTrackerFusionData(trackObject)
+ }
+ }
+
fun invokeTrackerWarningInfo(trafficData: TrafficData) {
M_LISTENERS.forEach {
val listener = it.value
diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/Config.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/Config.java
index cab22c02bf..987c395343 100644
--- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/Config.java
+++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/Config.java
@@ -13,5 +13,8 @@ public class Config {
public final static String downLoadPath = Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/downloads/";
+ public final static String downLoadObuPath = Environment.getExternalStorageDirectory().getAbsolutePath()
+ + "/obu/";
+
public final static String DOWN_LOAD_TAG = "Package-DownLoad";
}
diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/DeviceUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/DeviceUtils.java
index b9b636186a..c80b2deecb 100644
--- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/DeviceUtils.java
+++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/DeviceUtils.java
@@ -618,6 +618,7 @@ public final class DeviceUtils {
// // 联想PAD 获取SN,2022-2023款PAD无法获取暂时不启用
// serial = (String) get.invoke(c, "ro.odm.lenovo.gsn");
// }
+ Log.d("getSerialNumber()", "serial = " + serial);
} catch (Exception e) {
e.printStackTrace();
}
@@ -702,7 +703,8 @@ public final class DeviceUtils {
* @return 当前的设备SN信息,优先使用设备固定的sn,
*/
public static String getDeviceSN() {
- String devicesSN = SPUtils.getInstance().getString(KEY_DEVICE_ID);
+// String devicesSN = SPUtils.getInstance().getString(KEY_DEVICE_ID);
+ String devicesSN = "";
if (TextUtils.isEmpty(devicesSN)) {
// 获取设备唯一SN
devicesSN = getSerialNumber();
diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/MultiDisplayUtils.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/MultiDisplayUtils.kt
index c24acc4a62..4010261abe 100644
--- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/MultiDisplayUtils.kt
+++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/MultiDisplayUtils.kt
@@ -7,7 +7,6 @@ import android.content.pm.PackageManager
import android.hardware.display.DisplayManager
import android.util.Log
import android.view.Display
-import androidx.appcompat.app.AppCompatActivity
/**
* 多屏幕操作工具类
@@ -15,7 +14,74 @@ import androidx.appcompat.app.AppCompatActivity
object MultiDisplayUtils {
private val TAG: String = "MultiDisplayUtils"
- // 获取 是否支持扩展屏幕打开应用
+ /**
+ * 定昌电子,6屏幕异显 对应的lcd匹配数组, 当前数组只对应于6屏异显,
+ * 如果是其他屏幕个数, 需要自己重新对应下相关的索引
+ * display 里面查看port对应的值
+ */
+ private var lcd_sub_port_six_lcd_mode = arrayOf(
+ // main lcd // HDMI-1
+ //-------------------begin 定昌电子 RK3588 -------------------
+ "port=240", // HDMI-2
+ "port=3", // HDMI-3
+ "port=243", // HDMI-4
+ "port=2", // HDMI-5
+ "port=1", // HDMI-6
+ //-------------------end 定昌电子 RK3588 -------------------
+ )
+
+ /**
+ * 获取其他的屏幕
+ */
+ fun getOtherDisplay(): Array {
+ val mDisplayManager =
+ Utils.getApp().getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
+ // 获取除了内置屏幕(主屏幕)的其它屏幕
+ val displays = mDisplayManager.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION)
+ // 初始化新的集合进行接收排序后的屏幕信息
+ var displaysList = arrayOfNulls(displays.size)
+
+ // 判断副屏个数
+ if (displays.isNotEmpty()) {
+ displaysList = arrayOfNulls(displays.size)
+ // 循环出来副屏幕进行重新排序
+ for (i in displays.indices) {
+ // 这里如果需要固定某个屏幕, 使用 if( display.toString().indexOf("port=1")!=-1) ) 而不是使用 display[i]
+ val strDisplayString: String = displays[i].toString()
+ for (j in lcd_sub_port_six_lcd_mode.indices) { // 这里增加port的匹配, 如果不需要对应的匹配 可看下面的other LCD
+ if (strDisplayString.indexOf(lcd_sub_port_six_lcd_mode[j]) != -1) { // 查找我们实际屏幕的匹配port
+ displaysList[j] = displays[i]
+ break
+ }
+ }
+ }
+
+ // 没有匹配到的显示
+ for (i in displays.indices) {
+ if (displaysList[i] == null) {
+ displaysList[i] = displays[i]
+ }
+ }
+ }
+ // 处理EB5副屏幕
+ else {
+ if (mDisplayManager.displays.isNotEmpty()) {
+ displaysList = arrayOfNulls(1)
+ // EB5目前副屏幕ID为固定4096
+ for (i in mDisplayManager.displays.indices) {
+ if (mDisplayManager.displays[i].displayId == 4096) {
+ displaysList[0] = mDisplayManager.displays[i]
+ }
+ }
+ }
+ }
+ return displaysList
+ }
+
+
+ /**
+ * 获取 是否支持扩展屏幕打开应用
+ */
fun isSupportMultiDisplay(context: Context): Boolean {
// 先检查一下是不是支持在第二屏上显示activity这个特性,
// 在ActivityOptions.java setLaunchDisplayId 上面有相关的说明
@@ -23,13 +89,6 @@ object MultiDisplayUtils {
return packageManager.hasSystemFeature(PackageManager.FEATURE_ACTIVITIES_ON_SECONDARY_DISPLAYS)
}
- // 获取 当前接入的屏幕集合(含主屏幕)
- fun getMultiDisplay(context: Context): Array {
- // 多次创建副屏 则副屏的id都是增加的,所以不一定是1,这里还是获取一下
- val displayManager =
- context.getSystemService(AppCompatActivity.DISPLAY_SERVICE) as DisplayManager
- return displayManager.displays
- }
/**
* 在指定ID的屏幕打开Activity,当前应用的,当前进程
@@ -37,11 +96,9 @@ object MultiDisplayUtils {
* @param activity 要在第二个屏幕启动的页面
*/
fun startActWithSecond(context: Context, activity: Class<*>) {
- val launchDisplayId: Int
if (isSupportMultiDisplay(context)) {
- if (getMultiDisplay(context).size > 1) {
- launchDisplayId = getMultiDisplay(context)[1].displayId
-
+ if (getOtherDisplay().isNotEmpty() && getOtherDisplay()[0] != null) {
+ val launchDisplayId = getOtherDisplay()[0]!!.displayId
// 要加上Intent.FLAG_ACTIVITY_NEW_TASK
val options = ActivityOptions.makeBasic()
options.launchDisplayId = launchDisplayId
@@ -62,7 +119,7 @@ object MultiDisplayUtils {
* @param launchDisplayId 指定屏幕ID
* @param activity 要在副屏幕启动的页面
*/
- fun startActWithProcess(context: Context, launchDisplayId: Int, activity: Class<*>) {
+ fun startActWithOther(context: Context, launchDisplayId: Int, activity: Class<*>) {
// 要加上Intent.FLAG_ACTIVITY_NEW_TASK
val options = ActivityOptions.makeBasic()
options.launchDisplayId = launchDisplayId
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/AutopilotAbilityManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/AutopilotAbilityManager.java
index 26d38467f5..733e87d82a 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/AutopilotAbilityManager.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/AutopilotAbilityManager.java
@@ -137,7 +137,8 @@ public class AutopilotAbilityManager {
}
}
}
- if (version > 1) {
+ //如果 maser version 大于1,还需要判断AutoPilotReady字段是否存在,以确保MAP版本和SSM Maser版本不陪配情况逻辑能正常执行
+ if (version > 1 && statusInfo.hasAutoPilotReady()) {
isAutopilotAbility = statusInfo.getAutoPilotReady();
if (!isAutopilotAbility) {
SystemStatusInfo.NodeFaultList nodeFaultList = statusInfo.getAutoPilotUnreadyList();
@@ -150,12 +151,12 @@ public class AutopilotAbilityManager {
if (state < NODE_INFO_STATE.length) {
builder.append(NODE_INFO_STATE[state]);
} else {
- builder.append("未知 ");
+ builder.append("未知异常 ");
}
}
unableAutopilotReason = builder.toString();
} else {
- unableAutopilotReason = "未知";
+ unableAutopilotReason = "未知异常节点";
}
}
} else {
@@ -169,7 +170,9 @@ public class AutopilotAbilityManager {
} else if (systemState == SystemStatusInfo.SystemState.SYS_FAULT) {
unableAutopilotReason = "系统异常";
} else if (systemState == SystemStatusInfo.SystemState.AUTO_PILOT_STARTING) {
- unableAutopilotReason = "正在开始自动驾驶";
+ //如果第一次下发了启动自动驾驶,没起来或者存在干预 此时systemState是AUTO_PILOT_STARTING 需要二次下发启动自驾命令 所以需要排除此状态
+ isAutopilotAbility = true;
+ //unableAutopilotReason = "正在开始自动驾驶";
} else if (systemState == SystemStatusInfo.SystemState.AUTO_PILOT_RUNNING) {
unableAutopilotReason = "自动驾驶运行中";
} else if (systemState == SystemStatusInfo.SystemState.REMOTE_PILOT_STARTING) {
@@ -177,7 +180,7 @@ public class AutopilotAbilityManager {
} else if (systemState == SystemStatusInfo.SystemState.REMOTE_PILOT_RUNNING) {
unableAutopilotReason = "平行驾驶运行中";
} else {
- unableAutopilotReason = "未知";
+ unableAutopilotReason = "未知系统状态";
}
}
}