From 17f96befc02a8202ec408a87a97166cb9b5d7da9 Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 7 Feb 2024 13:10:25 +0800 Subject: [PATCH] =?UTF-8?q?[6.2.10][=E8=98=91=E6=96=B9=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BC=98=E5=8C=96]=20=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/res/layout/bus_base_fragment.xml | 10 + .../main/res/layout/charter_base_fragment.xml | 10 + .../src/main/res/layout/bus_base_fragment.xml | 10 + .../main/res/layout/taxi_base_fragment.xml | 10 + .../main/res/layout/taxi_base_fragment.xml | 10 + config.gradle | 2 +- .../mofang/MoFangCommandExecutor.kt | 40 +++ .../hmi/ui/mofang/MoFangStatusView.kt | 255 ++++++++++++++++++ .../function/hmi/ui/widget/BlueToothView.kt | 77 ++++-- .../icon_mofang_ipc_disconnected.png | Bin 0 -> 3676 bytes .../drawable-xhdpi/icon_mofang_low_power.png | Bin 0 -> 3445 bytes .../icon_mofang_normal_power.png | Bin 0 -> 3400 bytes .../src/main/res/drawable/bg_mf_key.xml | 15 ++ .../src/main/res/drawable/bg_mf_key_group.xml | 6 + .../src/main/res/drawable/bg_mf_lp_bar.xml | 15 ++ .../src/main/res/drawable/bg_mf_sp_bar.xml | 5 + .../src/main/res/drawable/bg_mf_status.xml | 6 + .../src/main/res/drawable/blue_tooth.png | Bin 1146 -> 0 bytes .../main/res/layout/layout_mofang_status.xml | 195 ++++++++++++++ .../src/main/res/layout/view_blue_tooth.xml | 19 +- .../src/main/res/layout/view_status_bar.xml | 1 - .../eagle/core/data/enums/EventTypeEnumNew.kt | 9 +- 22 files changed, 655 insertions(+), 40 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/mofang/MoFangStatusView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_ipc_disconnected.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_low_power.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_normal_power.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_key.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_key_group.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_lp_bar.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_sp_bar.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_status.xml delete mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/blue_tooth.png create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_mofang_status.xml diff --git a/OCH/bus/driver/src/main/res/layout/bus_base_fragment.xml b/OCH/bus/driver/src/main/res/layout/bus_base_fragment.xml index 2f1f084ed3..7268f93076 100644 --- a/OCH/bus/driver/src/main/res/layout/bus_base_fragment.xml +++ b/OCH/bus/driver/src/main/res/layout/bus_base_fragment.xml @@ -102,6 +102,16 @@ app:layout_constraintTop_toBottomOf="@+id/ivCameraIcon" tools:visibility="visible" /> + + + + + + + + + + state: $state, last: $last") + if (last != state) { + if (last == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { + // 由自驾状态改为非自驾,发送复原指令 + handleSingleClick(KeyEvent.KEYCODE_B) + } + autoPilotState.set(state) + } + } + + override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) { + super.onAutopilotIpcConnectStatusChanged(status, reason) + Log.d(TAG, "收到工控机连接状态回调 -> status: $status, reason: $reason") + val prev = ipcConnectState.get() + val current = CallerAutoPilotStatusListenerManager.isConnect() + if (!current && prev) { + Log.d(TAG, "工控机连接断开了: -> status: $status, reason: $reason") + CallerMsgBoxManager.saveMsgBox(MsgBoxBean(MsgBoxType.V2X, V2XMsg( + EventTypeEnumNew.TYPE_IPC_DISCONNECT_FOR_MO_FANG.poiType, + EventTypeEnumNew.TYPE_IPC_DISCONNECT_FOR_MO_FANG.content, + EventTypeEnumNew.TYPE_VERIFICATION_SUCCESSFUL.tts, + "" + ))) + } + ipcConnectState.set(current) + } } private val handlerCallback = Handler.Callback { msg -> diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/mofang/MoFangStatusView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/mofang/MoFangStatusView.kt new file mode 100644 index 0000000000..2cd44ef86b --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/mofang/MoFangStatusView.kt @@ -0,0 +1,255 @@ +package com.mogo.eagle.core.function.hmi.ui.mofang + +import android.content.Context +import android.util.AttributeSet +import android.util.Log +import android.view.KeyEvent +import android.view.View +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.api.devatools.mofang.IMoGoMoFangProvider.OnMoFangStatusListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import kotlinx.android.synthetic.main.layout_mofang_status.view.tv_icon_1 +import kotlinx.android.synthetic.main.layout_mofang_status.view.tv_icon_2 +import kotlinx.android.synthetic.main.layout_mofang_status.view.tv_icon_3 +import kotlinx.android.synthetic.main.layout_mofang_status.view.tv_icon_4 +import kotlinx.android.synthetic.main.layout_mofang_status.view.tv_icon_5 +import kotlinx.android.synthetic.main.layout_mofang_status.view.v_lp_1 +import kotlinx.android.synthetic.main.layout_mofang_status.view.v_lp_2 +import kotlinx.android.synthetic.main.layout_mofang_status.view.v_lp_3 +import kotlinx.android.synthetic.main.layout_mofang_status.view.v_lp_4 +import kotlinx.android.synthetic.main.layout_mofang_status.view.v_lp_5 +import kotlinx.android.synthetic.main.layout_mofang_status.view.v_sp_1 +import kotlinx.android.synthetic.main.layout_mofang_status.view.v_sp_2 +import kotlinx.android.synthetic.main.layout_mofang_status.view.v_sp_3 +import kotlinx.android.synthetic.main.layout_mofang_status.view.v_sp_4 +import kotlinx.android.synthetic.main.layout_mofang_status.view.v_sp_5 +import me.jessyan.autosize.utils.AutoSizeUtils +import java.util.concurrent.atomic.AtomicInteger + +/** + * 蘑方输入/执行状态反馈控件 + */ +class MoFangStatusView : LinearLayout, OnMoFangStatusListener, IMoGoAutopilotStatusListener { + + companion object { + private const val TAG = "MoFangStatusView" + } + + private val autoPilotState by lazy { AtomicInteger(CallerAutoPilotStatusListenerManager.getState()) } + + constructor(context: Context) : super(context) + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) + + init { + View.inflate(context, R.layout.layout_mofang_status, this) + orientation = VERTICAL + background = ContextCompat.getDrawable(context, R.drawable.bg_mf_status) + val lr = AutoSizeUtils.dp2px(context, 30f) + val tb = AutoSizeUtils.dp2px(context, 33f) + setPadding(lr, tb, lr, tb) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + visibility = if (CallerDevaToolsManager.mofang()?.isConnected() == true) { + View.VISIBLE + } else { + View.INVISIBLE + } + CallerDevaToolsManager.mofang()?.registerMoFangStatusListener(TAG, this) + } + + override fun onMoFangConnected() { + visibility = View.VISIBLE + } + + override fun onMoFangDisconnected() { + visibility = View.INVISIBLE + } + + override fun onAutopilotStatusResponse(state: Int) { + super.onAutopilotStatusResponse(state) + val last = autoPilotState.get() + Log.d(TAG, "收到工控机自驾状态回调 -> state: $state, last: $last") + if (last != state) { + if (last == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { + reset() + } + autoPilotState.set(state) + } + } + + override fun onMoFangBatteryChanged(battery: Int) {} + + override fun onMoFangClicked(keyCode: Int) { + if (keyCode == KeyEvent.KEYCODE_A) { + if (tv_icon_2?.tag != 2 && tv_icon_2?.isSelected == true) { + tv_icon_2?.isSelected = false + v_lp_2?.visibility = View.VISIBLE + v_lp_2?.isSelected = false + v_sp_2?.visibility = View.INVISIBLE + } + tv_icon_1?.isSelected = true + v_lp_1?.visibility = View.INVISIBLE + v_sp_1?.visibility = View.VISIBLE + } + + if (keyCode == KeyEvent.KEYCODE_B) { + if (tv_icon_1?.isSelected == true) { + tv_icon_1?.isSelected = false + v_lp_1?.visibility = View.VISIBLE + v_lp_1?.isSelected = false + v_sp_1?.visibility = View.INVISIBLE + } + tv_icon_2?.isSelected = true + tv_icon_2?.tag = 1 + v_lp_2?.visibility = View.INVISIBLE + v_sp_2?.visibility = View.VISIBLE + UiThreadHandler.postDelayed({ + tv_icon_2?.tag = null + tv_icon_2?.isSelected = false + v_lp_2?.visibility = View.VISIBLE + v_lp_2?.isSelected = false + v_sp_2?.visibility = View.INVISIBLE + }, 1000) + } + + if (keyCode == KeyEvent.KEYCODE_C) { + tv_icon_3?.isSelected = true + v_lp_3?.visibility = View.INVISIBLE + v_sp_3?.visibility = View.VISIBLE + UiThreadHandler.postDelayed({ + tv_icon_3?.isSelected = false + v_lp_3?.visibility = View.VISIBLE + v_lp_3?.isSelected = false + v_sp_3?.visibility = View.INVISIBLE + }, 1000) + } + + if (keyCode == KeyEvent.KEYCODE_D) { + tv_icon_4?.isSelected = true + v_lp_4?.visibility = View.INVISIBLE + v_sp_4?.visibility = View.VISIBLE + UiThreadHandler.postDelayed({ + tv_icon_4?.isSelected = false + v_lp_4?.visibility = View.VISIBLE + v_lp_4?.isSelected = false + v_sp_4?.visibility = View.INVISIBLE + }, 1000) + } + + if (keyCode == KeyEvent.KEYCODE_E) { + tv_icon_5?.isSelected = true + v_lp_5?.visibility = View.INVISIBLE + v_sp_5?.visibility = View.VISIBLE + UiThreadHandler.postDelayed({ + tv_icon_5?.isSelected = false + v_lp_5?.visibility = View.VISIBLE + v_lp_5?.isSelected = false + v_sp_5?.visibility = View.INVISIBLE + }, 1000) + } + } + + override fun onMoFangLongClicked(keyCode: Int) { + if (keyCode == KeyEvent.KEYCODE_A) { + if (tv_icon_2?.tag != 2 && tv_icon_2?.isSelected == true) { + tv_icon_2?.isSelected = false + v_lp_2?.visibility = View.VISIBLE + v_lp_2?.isSelected = false + v_sp_2?.visibility = View.INVISIBLE + } + tv_icon_1?.isSelected = true + v_lp_1?.visibility = View.VISIBLE + v_lp_1?.isSelected = true + v_sp_1?.visibility = View.INVISIBLE + } + + if (keyCode == KeyEvent.KEYCODE_B) { + tv_icon_2?.isSelected = true + tv_icon_2?.tag = 2 + v_lp_2?.visibility = View.VISIBLE + v_lp_2?.isSelected = true + v_sp_2?.visibility = View.INVISIBLE + UiThreadHandler.postDelayed({ + tv_icon_2?.tag = null + tv_icon_2?.isSelected = false + v_lp_2?.visibility = View.VISIBLE + v_lp_2?.isSelected = false + v_sp_2?.visibility = View.INVISIBLE + }, 1000) + } + + if (keyCode == KeyEvent.KEYCODE_E) { + tv_icon_5?.isSelected = true + v_lp_5?.visibility = View.VISIBLE + v_lp_5?.isSelected = true + v_sp_5?.visibility = View.INVISIBLE + UiThreadHandler.postDelayed({ + tv_icon_5?.isSelected = false + v_lp_5?.visibility = View.VISIBLE + v_lp_5?.isSelected = false + v_sp_5?.visibility = View.INVISIBLE + }, 1000) + } + } + + override fun onMoFangCombineClicked(vararg keyCodes: Int) { + if (keyCodes.size != 2) { + return + } + val key1 = keyCodes[0] + val key2 = keyCodes[1] + if (key1 == KeyEvent.KEYCODE_A && key2 == KeyEvent.KEYCODE_B || (key1 == KeyEvent.KEYCODE_B && key2 == KeyEvent.KEYCODE_A)) { + tv_icon_1?.isSelected = true + v_lp_1?.visibility = View.INVISIBLE + v_sp_1?.visibility = View.VISIBLE + tv_icon_2?.isSelected = true + v_lp_2.visibility = View.INVISIBLE + v_sp_2.visibility = View.VISIBLE + } + } + + override fun onMoFangStatusError(msg: String) {} + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerDevaToolsManager.mofang()?.unRegisterMoFangStatusListener(this) + CallerAutoPilotStatusListenerManager.removeListener(TAG) + } + + private fun reset() { + tv_icon_1?.isSelected = false + v_lp_1?.visibility = View.VISIBLE + v_lp_1?.isSelected = false + v_sp_1?.visibility = View.INVISIBLE + + tv_icon_2?.isSelected = false + v_lp_2?.visibility = View.VISIBLE + v_lp_2?.isSelected = false + v_sp_2?.visibility = View.INVISIBLE + + + tv_icon_3?.isSelected = false + v_lp_3?.visibility = View.VISIBLE + v_lp_3?.isSelected = false + v_sp_3?.visibility = View.INVISIBLE + + tv_icon_4?.isSelected = false + v_lp_4?.visibility = View.VISIBLE + v_lp_4?.isSelected = false + v_sp_4?.visibility = View.INVISIBLE + + tv_icon_5?.isSelected = false + v_lp_5?.visibility = View.VISIBLE + v_lp_5?.isSelected = false + v_sp_5?.visibility = View.INVISIBLE + } +} \ 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/BlueToothView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt index b5a9855c83..c8cc88b6ce 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/BlueToothView.kt @@ -2,22 +2,28 @@ package com.mogo.eagle.core.function.hmi.ui.widget import android.annotation.* import android.content.Context -import android.graphics.* -import android.graphics.drawable.* +import android.os.SystemClock import android.util.AttributeSet +import android.util.Log import android.view.* import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.devatools.mofang.* +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.devatools.* import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.util.ToastUtils import kotlinx.android.synthetic.main.view_blue_tooth.view.* +import java.util.concurrent.TimeUnit +import java.util.concurrent.atomic.AtomicLong /** * 魔戒蓝牙控件 * 放置于StatusBar右侧位置 */ -open class BlueToothView: LinearLayout, IMoGoMoFangProvider.OnMoFangStatusListener { +open class BlueToothView: LinearLayout, IMoGoMoFangProvider.OnMoFangStatusListener, IMoGoAutopilotStatusListener { constructor(context: Context) : this(context, null) constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) @@ -27,25 +33,57 @@ open class BlueToothView: LinearLayout, IMoGoMoFangProvider.OnMoFangStatusListen LayoutInflater.from(context).inflate(R.layout.view_blue_tooth , this, true) visibility = View.GONE - clipChildren = false clipToPadding = false + onClick { + runCatching { + val mofang = CallerDevaToolsManager.mofang() + if (mofang != null && !mofang.isConnected()) { + Log.d(TAG, "--- 点击重连 ---") + mofang.connect() + } + } + } } companion object{ private const val TAG = "BlueToothView" } + private val prevTime by lazy { AtomicLong(0) } + override fun onAttachedToWindow() { super.onAttachedToWindow() + ivMoFangStatus?.tag = 0 val isConnected = CallerDevaToolsManager.mofang()?.isConnected() ?: false visibility = if (isConnected) View.VISIBLE else View.GONE + val isIpcConnected = CallerAutoPilotStatusListenerManager.isConnect() + if (!isIpcConnected) { + if (visibility == View.VISIBLE) { + ivMoFangStatus?.tag = 1 + ivMoFangStatus?.background = (ContextCompat.getDrawable(context, R.drawable.icon_mofang_ipc_disconnected)) + } + } CallerDevaToolsManager.mofang()?.registerMoFangStatusListener(TAG, this) + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + } + + override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) { + super.onAutopilotIpcConnectStatusChanged(status, reason) + if (!CallerAutoPilotStatusListenerManager.isConnect()) { + if (ivMoFangStatus?.tag == 0) { + ivMoFangStatus?.tag = 1 + ivMoFangStatus?.background = (ContextCompat.getDrawable(context, R.drawable.icon_mofang_ipc_disconnected)) + } + } else { + ivMoFangStatus?.tag = 0 + } } override fun onDetachedFromWindow() { super.onDetachedFromWindow() CallerDevaToolsManager.mofang()?.unRegisterMoFangStatusListener(this) + CallerAutoPilotStatusListenerManager.removeListener(TAG) } override fun onMoFangConnected() { @@ -56,28 +94,29 @@ open class BlueToothView: LinearLayout, IMoGoMoFangProvider.OnMoFangStatusListen visibility = View.GONE } + @SuppressLint("SetTextI18n") override fun onMoFangBatteryChanged(battery: Int) { - ivMoFangBattery?.also { - if (it.visibility != View.VISIBLE) { - it.visibility = View.VISIBLE - } - val oldTextColor = it.currentTextColor + if (CallerAutoPilotStatusListenerManager.isConnect()) { if (battery <= 30) { - if (oldTextColor != Color.RED) { - it.setTextColor(Color.RED) - ivMoFangStatus?.drawable?.setTint(Color.RED) - postDelayed({ - ToastUtils.showShort("蘑方处于低电状态, 请及时充电") - }, 5000) + post { + runCatching { + val prev = prevTime.get() + val current = SystemClock.elapsedRealtime() + if (prev == 0L || TimeUnit.MILLISECONDS.toSeconds(current - prev) >= 30) { + ToastUtils.showShort("蘑方当前处于低电状态,请及时充电") + prevTime.set(current) + } + ivMoFangStatus?.background = (ContextCompat.getDrawable(context, R.drawable.icon_mofang_low_power)) + } } } else { - if (oldTextColor != Color.WHITE) { - it.setTextColor(Color.WHITE) - ivMoFangStatus?.drawable?.setTint(Color.WHITE) + post { + runCatching { + ivMoFangStatus?.background = (ContextCompat.getDrawable(context, R.drawable.icon_mofang_normal_power)) + } } } - it.text = "${battery}%" } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_ipc_disconnected.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_ipc_disconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..2cf8ccad2fca473a0051446a72fbcd9e24202bee GIT binary patch literal 3676 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 kHPQg?{rlbB&mn_JDVh~UJBo;b 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 X(FuIwncuR$00000NkvXXu0mjfeshd$ literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_normal_power.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable-xhdpi/icon_mofang_normal_power.png new file mode 100644 index 0000000000000000000000000000000000000000..335b753ea87847255483ad1a4afee75707a0efa6 GIT binary patch literal 3400 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 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_key_group.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_key_group.xml new file mode 100644 index 0000000000..b4373766e7 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_key_group.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_lp_bar.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_lp_bar.xml new file mode 100644 index 0000000000..e6ed6e0ccd --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_lp_bar.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_sp_bar.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_sp_bar.xml new file mode 100644 index 0000000000..db47fd1fcc --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_sp_bar.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_status.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_status.xml new file mode 100644 index 0000000000..d57d698808 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_mf_status.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/blue_tooth.png b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/blue_tooth.png deleted file mode 100644 index 97eaf32b50bfa7f9ad39baa400f2d49fdd56b0be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1146 zcmV-=1cm#FP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91HlPCl1ONa40RR91HUIzs0P{mGqyPW|e5nMr6AK@^5(VoW3k z6hz{JdT==i1{J+19t00TLE}YFD!73M%}wy)auFAZdJ!)oih>vsj2r4f1<{Dc4I}}P z1cJeUptz72m+^Z^deT!}J=057&!r#y(^dbgdhdVLsh&ztCX-sa0_h5*E0C_h=n7;< zoAz3{Ty8PZXOCoP%Vx7Z_Oc}ynZnKh$3D?mYCC;}?F5?mb#M6Xy~2o+OlApjo)K@pp?KlKka#k93LNXF(O4`Be)r>E<~;#@($Lr!xRu4? zS@Dtdu13rsxSf6p@u`KKfU5(yfzAdYH~Yo2!jo`1=+vo!+pkLs?9D(@j!8@R{^N>}}*r3+}0YN8m*6U-e?1Pt@IlJJl zAf{U5^P_rkbon^v!q@uv?9hmx2;2`6x_Ogh(*()P)%T9!TLpT7&SZh)37ou&%FJ{Q4j!LJg9$rEsU;^LwvMC=A22ic%@n1SW}&MH+b z0yhCU?T59?ObBxfD<#F8A7MMd->?S=#EEn_dWo(b%f_8D?{d}T2rAmD&b8Jzr!KlDC?tEVtY2`^_% z)dw|X1AK0bAuak;5+51X;Q9Orv%rZ=TNU5z_~eSe5y)LqP5!j^xyM>>lklXfVx-^6 zb(UKI{ZfU=8Po5i(v5G5JD!y`N#sPK3WXZ7Ha*uCeHX zkjQUk<&D#L-DG%eVenhQ51_N_kVfAQ>$K%LlC1&X6(#b*r7}NAY2Z@}I|tVS{LISx zd_|VGi<(719uQ*3K+)q6ezh=}r!)C-Z}MhLkU_uA63u7YND>jnE(I) M07*qoM6N<$g8LEu^Z)<= diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_mofang_status.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_mofang_status.xml new file mode 100644 index 0000000000..c5dcdbabb8 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_mofang_status.xml @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml index 24e8679ed0..913f652817 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_blue_tooth.xml @@ -9,23 +9,8 @@ - - - \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml index 226fef29b4..c4847f676a 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_status_bar.xml @@ -40,7 +40,6 @@ diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt index fe10837554..95488b517f 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt @@ -593,8 +593,10 @@ enum class EventTypeEnumNew( TYPE_VIP_IDENTIFICATION_PASS("20022", "VIP通行", "", R.drawable.icon_warning_v2x_vip_turn_light, "VIP车辆优先通行,已为您变为绿灯", "VIP车辆优先通行,已为您变为绿灯"), TYPE_VIP_IDENTIFICATION_EXTEND("20023", "VIP通行", "", R.drawable.icon_warning_v2x_vip_turn_light, "VIP车辆优先通行,已为您延长绿灯", "VIP车辆优先通行,已为您延长绿灯"), TYPE_VIP_ERROR_IDENTIFICATION("20024", "VIP通行", "", R.drawable.icon_warning_v2x_vip_turn_light, "请求失败,", "请求失败,稍后重试"), - TYPE_OPTIMAL_ROUTE_RECOMMEND("2000", "路线推荐", "", R.drawable.icon_warning_v2x_optimal_route, "为您推荐最优路线", "已为您选择最优路线"); + TYPE_OPTIMAL_ROUTE_RECOMMEND("2000", "路线推荐", "", R.drawable.icon_warning_v2x_optimal_route, "为您推荐最优路线", "已为您选择最优路线"), + //蘑方指令下发时,工控机与pad断连提示 + TYPE_IPC_DISCONNECT_FOR_MO_FANG("20025", "连接异常", "", R.drawable.icon_warning_take_over, "工控机连接异常,无法执行魔方命令", ""); companion object { @JvmStatic @@ -1114,6 +1116,10 @@ enum class EventTypeEnumNew( TYPE_USECASE_ID_LTA.poiType ->{ TYPE_USECASE_ID_LTA.poiTypeStr } + //蘑方指令下发时,工控机与pad断连提示 + TYPE_IPC_DISCONNECT_FOR_MO_FANG.poiType -> { + TYPE_IPC_DISCONNECT_FOR_MO_FANG.poiTypeStr + } else ->{ "事件通知" } @@ -1313,7 +1319,6 @@ enum class EventTypeEnumNew( TYPE_USECASE_ID_LCW.poiType -> TYPE_USECASE_ID_LCW.poiTypeSrcVr TYPE_USECASE_ID_EVW.poiType -> TYPE_USECASE_ID_EVW.poiTypeSrcVr TYPE_USECASE_ID_LTA.poiType -> TYPE_USECASE_ID_LTA.poiTypeSrcVr - else -> { R.drawable.icon_default }