From fae45e0cd4102f3575f2c7435a1e4f6f2bde254a Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Mon, 29 Jul 2024 16:01:09 +0800 Subject: [PATCH 01/14] =?UTF-8?q?[6.5.1]Bus=E8=80=83=E8=AF=95=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E5=88=B0=E4=B8=BB=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotControlProvider.kt | 27 ++++++++++++++ .../trace/network/StartUpTraceNetWorkModel.kt | 12 ++++--- .../function/hmi/ui/vehicle/PncActionsView.kt | 20 +++++++++++ .../data/autopilot/pnc/PncActionsHelper.kt | 4 +++ .../IMoGoAutopilotControlProvider.kt | 10 ++++++ .../CallerAutoPilotControlManager.kt | 14 ++++++++ .../zhidao/support/adas/high/AdasChannel.java | 35 +++++++++++++++++++ .../zhidao/support/adas/high/AdasManager.java | 14 ++++++++ .../support/adas/high/IAdasNetCommApi.java | 11 ++++++ .../support/adas/high/chain/AdasChain.java | 1 + 10 files changed, 143 insertions(+), 5 deletions(-) diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt index 20d84040a4..8edb0ea159 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt @@ -1244,7 +1244,34 @@ class MoGoAutopilotControlProvider : return AdasManager.getInstance().sendRoboBusJinlvM1TaskCmd(roboBusJinlvM1Cmd) > -1 } + @ChainLog( + linkChainLog = AdasChain.CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = AdasChain.CHAIN_SOURCE_ADAS, + nodeAliasCode = AdasChain.CHAIN_CODE_ADAS_SEND_PLANNING_CMD, + paramIndexes = [0] + ) override fun sendPlanningCmd(cmd: Int): Boolean { return AdasManager.getInstance().sendPlanningCmd(cmd) > -1 } + + @ChainLog( + linkChainLog = AdasChain.CHAIN_TYPE_SOCKET_AUTOPILOT, + linkCode = AdasChain.CHAIN_SOURCE_ADAS, + nodeAliasCode = AdasChain.CHAIN_CODE_ADAS_SEND_PLANNING_CMD, + paramIndexes = [0] + ) + override fun sendPlanningLineChangeCmd(cmd: Int): Boolean { + return AdasManager.getInstance().sendPlanningLaneChangeCmd(cmd) > -1 + } + + /** + * 设置座椅压力接口 + * @param driver 主驾是否有人 + * @param copilot 副驾是否有人 + * @param backRow 后排是否有人 + */ + override fun sendSeatPressure(driver: Boolean, copilot: Boolean, backRow: Boolean): Boolean { + return AdasManager.getInstance().sendSeatPressure(driver, copilot, backRow) > -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/trace/network/StartUpTraceNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/network/StartUpTraceNetWorkModel.kt index 19fa83eaac..68140a2a73 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/network/StartUpTraceNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/trace/network/StartUpTraceNetWorkModel.kt @@ -17,7 +17,6 @@ class StartUpTraceNetWorkModel { .create(TraceStartUpApiService::class.java) } - private var retryTime = 0 private var success: ((String) -> Unit)? = null private var error: ((String) -> Unit)? = null @Volatile @@ -29,7 +28,8 @@ class StartUpTraceNetWorkModel { onError: ((String) -> Unit)? = null ) { request> { - var map: MutableMap = mutableMapOf() + var retryTime = 0 + var map: MutableMap start { if (success == null) { success = onSuccess @@ -54,11 +54,13 @@ class StartUpTraceNetWorkModel { onSuccess { if (it.result != null) { onSuccess?.invoke(it.result) + traceId = "" } else { if (retryTime < 3) { retryTime += 1 - report() + report(id) } else { + traceId = "" error?.invoke("startUp report error msg is null") } } @@ -66,13 +68,13 @@ class StartUpTraceNetWorkModel { onError { if (retryTime < 3) { retryTime += 1 - report() + report(id) } else if (it.message != null) { + traceId = "" error?.invoke(it.message ?: "startUp report error msg is null") } } - } } } \ 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/PncActionsView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt index 7c7e6da225..5da0bc4f42 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt @@ -1,6 +1,7 @@ package com.mogo.eagle.core.function.hmi.ui.vehicle import android.content.Context +import android.os.CountDownTimer import android.util.AttributeSet import android.util.TypedValue.COMPLEX_UNIT_PX import android.view.LayoutInflater @@ -21,6 +22,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerPlanningActionsListenerManager import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.SoundPoolUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.zhjt.service_biz.BizConfig import kotlinx.android.synthetic.main.view_pnc_actions.view.* @@ -122,6 +124,24 @@ class PncActionsView @JvmOverloads constructor( AppCompatResources.getDrawable(context, bgResources) tvHmiPncActions.text = actions } + //voice tip + if(actions == "已超出ODD"){ + val countDownTimer = object : CountDownTimer(3000, 1000){ + override fun onTick(p0: Long) { + try { + SoundPoolUtils.getSoundPool().playSoundWithRedId(context,R.raw.weak_net_tips) + }catch (e: Exception){ + e.printStackTrace() + } + } + + override fun onFinish() { + + } + + } + countDownTimer.start() + } } else { tvHmiPncActions.background = null tvHmiPncActions.text = "" diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/pnc/PncActionsHelper.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/pnc/PncActionsHelper.kt index 97643d3e2b..d8adb85699 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/pnc/PncActionsHelper.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/autopilot/pnc/PncActionsHelper.kt @@ -94,6 +94,10 @@ class PncActionsHelper { YIELD_TO_VEHICLE_COMING_FROM_BEHIND_VALUE -> { if (driveAction == 1) "正在避让后方来车" else "" } + // 考试项 + OUT_OF_ODD_VALUE -> { + if (driveAction == 1 || driveAction == 2 || driveAction == 3) "已超出ODD" else "" + } else -> "" } } diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt index 0637b9c3ff..1d53758617 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotControlProvider.kt @@ -536,4 +536,14 @@ interface IMoGoAutopilotControlProvider : IMoGoFunctionServerProvider { fun sendRoboBusJinlvM1TaskCmd(roboBusJinlvM1Cmd: SpecialVehicleTaskCmdOuterClass.RoboBusJinlvM1Cmd): Boolean fun sendPlanningCmd(cmd: Int): Boolean + + fun sendPlanningLineChangeCmd(cmd: Int): Boolean + + /** + * 设置座椅压力接口 + * @param driver 主驾是否有人 + * @param copilot 副驾是否有人 + * @param backRow 后排是否有人 + */ + fun sendSeatPressure(driver: Boolean,copilot: Boolean,backRow: Boolean): Boolean } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt index 3cd08a6536..7b44b76145 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotControlManager.kt @@ -841,4 +841,18 @@ object CallerAutoPilotControlManager { fun sendPlanningCmd(cmd: Int): Boolean { return providerApi?.sendPlanningCmd(cmd) ?: false } + + fun sendPlanningLineChangeCmd(cmd: Int): Boolean { + return providerApi?.sendPlanningLineChangeCmd(cmd) ?: false + } + + /** + * 设置座椅压力接口 + * @param driver 主驾是否有人 + * @param copilot 副驾是否有人 + * @param backRow 后排是否有人 + */ + fun sendSeatPressure(driver: Boolean,copilot: Boolean,backRow: Boolean): Boolean?{ + return providerApi?.sendSeatPressure(driver, copilot, backRow) + } } \ No newline at end of file diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java index 81fd08cf90..b62b2855cb 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java @@ -14,6 +14,7 @@ import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_TYPE_SOCKET_AUT import android.content.Context; import android.os.SystemClock; import android.text.TextUtils; +import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -2408,6 +2409,40 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec return sendSetParamReq(AdasConstants.MapSystemParamType.RAMP_THETA_VALID_VALUE, String.valueOf(enable)); } + /** + * 座椅压力 + * TODO 目前仅襄阳牌照考试支持 + * + * @param driver 主驾是否有人 + * @param copilot 副驾是否有人 + * @param backRow 后排是否有人 + * @return boolean + */ + @Override + public long sendSeatPressure(boolean driver, boolean copilot, boolean backRow) { + Log.i(TAG, "主驾是否有人=" + driver + " 副驾是否有人=" + copilot + " 后排是否有人=" + backRow); + int value = 255; + if (driver && !copilot && !backRow) { + value = 0; + } else if (!driver && copilot && !backRow) { + value = 1; + } else if (driver && copilot && !backRow) { + value = 2; + } else if (!driver && !copilot && backRow) { + value = 3; + } else if (driver && !copilot && backRow) { + value = 4; + } else if (!driver && copilot && backRow) { + value = 5; + } else if (driver && copilot && backRow) { + value = 6; + } else if (!driver && !copilot && !backRow) { + value = 7; + } + Log.i(TAG, "\n0:表示仅主驾位有人\n1:表示仅副驾位有人\n2:表示主驾和副驾同时有人\n3:表示仅后排有人\n4:表示主驾有人+后排有人\n5:表示副驾有人+后排有人\n6:表示主驾和副驾同时有人+后排有人\n7: 所有座位都无人\n255:缺省\n下发数据=" + value); + return sendSetParamReq(15, String.valueOf(value)); + } + /** * 弱网减速停车策略开关 * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java index a65b345c6f..e6dd160740 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java @@ -935,6 +935,20 @@ public class AdasManager implements IAdasNetCommApi { return mChannel == null ? -1L : mChannel.sendPlanningLaneChangeCmd(laneChangeCmd); } + /** + * 座椅压力 + * TODO 目前仅襄阳牌照考试支持 + * + * @param driver 主驾是否有人 + * @param copilot 副驾是否有人 + * @param backRow 后排是否有人 + * @return boolean + */ + @Override + public long sendSeatPressure(boolean driver, boolean copilot, boolean backRow) { + return mChannel == null ? -1L : mChannel.sendSeatPressure(driver, copilot, backRow); + } + /** * 给Planning发送指令 * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java index 4efee2505d..2336fee188 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/IAdasNetCommApi.java @@ -899,6 +899,17 @@ public interface IAdasNetCommApi { */ long sendRampThetaValid(int enable); + /** + * 座椅压力 + * TODO 目前仅襄阳牌照考试支持 + * + * @param driver 主驾是否有人 + * @param copilot 副驾是否有人 + * @param backRow 后排是否有人 + * @return boolean + */ + long sendSeatPressure(boolean driver, boolean copilot, boolean backRow); + /** * 弱网减速停车策略开关 * 此方法存在域控回执,监听{@link OnAdasListener#onReceiveReceivedAck(ReceivedAck)}回调.使用方法:将此方法的返回值与{@link ReceivedAck#getMsgId()}进行比较,如果相同判断{@link ReceivedAck#getStatus()}是否等于{@link ReceivedAck.Status#NORMAL},详情参见CheckSystemView中的onReceiveReceivedAck diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java index 5e762dc21e..a9abbfc9bb 100644 --- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java +++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/chain/AdasChain.java @@ -16,6 +16,7 @@ public class AdasChain { //operation by user public static final String CHAIN_CODE_ADAS_START_AUTOPILOT = "CHAIN_CODE_ADAS_START_AUTOPILOT"; + public static final String CHAIN_CODE_ADAS_SEND_PLANNING_CMD = "CHAIN_CODE_ADAS_SEND_PLANNING_CMD"; public static final String CHAIN_CODE_ADAS_SEND_GLOBAL_PATH = "CHAIN_CODE_ADAS_SEND_GLOBAL_PATH"; public static final String CHAIN_CODE_ADAS_SEND_SYSTEM_CMD = "CHAIN_CODE_ADAS_SEND_SYSTEM_CMD"; public static final String CHAIN_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD = "CHAIN_CODE_ADAS_SEND_TRAJECTORY_DOWNLOAD"; From 2c8e80eca8373c5c4c15450daeee1b87a7660b00 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Mon, 29 Jul 2024 17:30:00 +0800 Subject: [PATCH 02/14] =?UTF-8?q?[6.5.1]Bus=E8=80=83=E8=AF=95UI=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E5=88=B0=E4=B8=BB=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hmi/ui/setting/ExamSettingView.kt | 49 ++++++++++++ .../hmi/ui/setting/SeatPressureSettingView.kt | 80 +++++++++++++++++++ .../res/drawable/bg_seat_pressure_setting.xml | 10 +++ .../drawable/seat_pressure_item_normal_bg.xml | 5 ++ .../drawable/seat_pressure_item_press_bg.xml | 8 ++ .../drawable/selector_seat_pressure_item.xml | 7 ++ .../src/main/res/layout/view_exam_setting.xml | 57 +++++++++++++ .../res/layout/view_seat_pressure_setting.xml | 49 ++++++++++++ .../src/main/res/values/strings.xml | 4 + .../api/setting/ISeatPressureEventListener.kt | 10 +++ .../call/setting/CallerSeatPressureManager.kt | 20 +++++ 11 files changed, 299 insertions(+) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ExamSettingView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SeatPressureSettingView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_seat_pressure_setting.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/seat_pressure_item_normal_bg.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/seat_pressure_item_press_bg.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/drawable/selector_seat_pressure_item.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_exam_setting.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_seat_pressure_setting.xml create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/setting/ISeatPressureEventListener.kt create mode 100644 core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/setting/CallerSeatPressureManager.kt diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ExamSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ExamSettingView.kt new file mode 100644 index 0000000000..dd27120d94 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/ExamSettingView.kt @@ -0,0 +1,49 @@ +package com.mogo.eagle.core.function.hmi.ui.setting + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.sendPlanningCmd +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.sendPlanningLineChangeCmd +import com.mogo.eagle.core.function.hmi.R +import kotlinx.android.synthetic.main.view_exam_setting.view.mOverTakeBtn +import kotlinx.android.synthetic.main.view_exam_setting.view.mStartCarBtn +import kotlinx.android.synthetic.main.view_exam_setting.view.mStopCarBtn + +class ExamSettingView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr) { + + companion object { + const val TAG = "ExamSettingView" + } + + init { + LayoutInflater.from(context).inflate(R.layout.view_exam_setting, this, true) + initView() + } + + private fun initView(){ + initBusView() + } + + private fun initBusView(){ + //停车 + mStopCarBtn.setOnClickListener { + sendPlanningCmd(1) + } + //出发 + mStartCarBtn.setOnClickListener { + sendPlanningCmd(2) + } + //超车 + mOverTakeBtn.setOnClickListener { + sendPlanningLineChangeCmd(3) + } + + } + +} \ 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/setting/SeatPressureSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SeatPressureSettingView.kt new file mode 100644 index 0000000000..f11bae3308 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SeatPressureSettingView.kt @@ -0,0 +1,80 @@ +package com.mogo.eagle.core.function.hmi.ui.setting + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.setting.CallerSeatPressureManager +import com.mogo.eagle.core.function.hmi.R +import kotlinx.android.synthetic.main.view_seat_pressure_setting.view.tb_co_driver +import kotlinx.android.synthetic.main.view_seat_pressure_setting.view.tb_main_driver +import kotlinx.android.synthetic.main.view_seat_pressure_setting.view.tb_rear_row + +/** + * 座椅压力设置页面(设座位是否有人) + */ +class SeatPressureSettingView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr) { + + companion object { + const val TAG = "SeatPressureSettingView" + } + + private var mainDriverStatus = false //主驾是否有人,默认没人 + private var coDriverStatus = false //副驾是否有人,默认没人 + private var rearRowStatus = false //后排是否有人,默认没人 + + init { + LayoutInflater.from(context).inflate(R.layout.view_seat_pressure_setting, this, true) + initView() + } + + private fun initView(){ + //主驾 + tb_main_driver.isChecked = mainDriverStatus + tb_main_driver.setOnCheckedChangeListener{compoundButton, isChecked -> + if(!compoundButton.isPressed){ + return@setOnCheckedChangeListener + } + mainDriverStatus = isChecked + CallerAutoPilotControlManager.sendSeatPressure(mainDriverStatus,coDriverStatus,rearRowStatus) + updateBtnBg(mainDriverStatus,coDriverStatus,rearRowStatus) + } + //副驾 + tb_co_driver.isChecked = coDriverStatus + tb_co_driver.setOnCheckedChangeListener{compoundButton, isChecked -> + if(!compoundButton.isPressed){ + return@setOnCheckedChangeListener + } + coDriverStatus = isChecked + CallerAutoPilotControlManager.sendSeatPressure(mainDriverStatus,coDriverStatus,rearRowStatus) + updateBtnBg(mainDriverStatus,coDriverStatus,rearRowStatus) + } + //后排 + tb_rear_row.isChecked = rearRowStatus + tb_rear_row.setOnCheckedChangeListener{compoundButton, isChecked -> + if(!compoundButton.isPressed){ + return@setOnCheckedChangeListener + } + rearRowStatus = isChecked + CallerAutoPilotControlManager.sendSeatPressure(mainDriverStatus,coDriverStatus,rearRowStatus) + updateBtnBg(mainDriverStatus,coDriverStatus,rearRowStatus) + } + } + + //TODO 看是否有需要 + private fun updateBtnBg(driver: Boolean,copilot: Boolean,backRow: Boolean){ + if(driver || copilot || backRow){ + //主驾、副驾、后排只要有一个位置有人则开关按钮就显示有人状态 + CallerSeatPressureManager.invokeUpdateBgEvent(true) + }else{ + //所有座位都没有人则显示无人状态 + CallerSeatPressureManager.invokeUpdateBgEvent(false) + } + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_seat_pressure_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_seat_pressure_setting.xml new file mode 100644 index 0000000000..fd4a583b7a --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/bg_seat_pressure_setting.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/seat_pressure_item_normal_bg.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/seat_pressure_item_normal_bg.xml new file mode 100644 index 0000000000..69b21b5e56 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/seat_pressure_item_normal_bg.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/seat_pressure_item_press_bg.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/seat_pressure_item_press_bg.xml new file mode 100644 index 0000000000..a37e58b5b1 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/seat_pressure_item_press_bg.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/selector_seat_pressure_item.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/selector_seat_pressure_item.xml new file mode 100644 index 0000000000..1095dab9eb --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/drawable/selector_seat_pressure_item.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_exam_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_exam_setting.xml new file mode 100644 index 0000000000..43bdacfd09 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_exam_setting.xml @@ -0,0 +1,57 @@ + + + +