将工控机感知数据回调与状态信息回调分离

CallerAutoPilotManager增加开启、停止自动驾驶方法

Signed-off-by: 董宏宇 <martindhy@gmail.com>
This commit is contained in:
董宏宇
2021-11-01 18:49:13 +08:00
parent 2561a5d38b
commit adc973bbfc
14 changed files with 213 additions and 115 deletions

View File

@@ -7,11 +7,13 @@ import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.autopilot.*
import com.mogo.eagle.core.data.autopilot.AutopilotCarStateInfo
import com.mogo.eagle.core.data.autopilot.AutopilotGuardianStatusInfo
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.constants.MoGoConfig
import com.mogo.eagle.core.data.obu.ObuStatusInfo
import com.mogo.eagle.core.data.traffic.TrafficData
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.obu.IMoGoObuStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager
@@ -28,7 +30,6 @@ import com.mogo.utils.UiThreadHandler
import com.mogo.utils.network.utils.GsonUtil
import com.mogo.utils.storage.SharedPrefsMgr
import kotlinx.android.synthetic.main.view_debug_setting.view.*
import java.util.*
/**
* @author xiaoyuzhou
@@ -192,13 +193,4 @@ class DebugSettingView @JvmOverloads constructor(
}
override fun onAutopilotIdentifyDataUpdate(trafficData: ArrayList<TrafficData>?) {
}
override fun onAutopilotWarnMessage(autopilotWarnMessage: AutopilotWarnMessage?) {
}
}

View File

@@ -5,13 +5,14 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
import com.mogo.eagle.core.data.autopilot.AutopilotStationInfo
import com.mogo.eagle.core.data.autopilot.*
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.util.LogUtils
import com.mogo.module.common.MogoApisHandler
import com.mogo.service.adas.IMogoAdasOCHCallback
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.utils.UiThreadHandler
import kotlinx.android.synthetic.main.view_autopilot_status.view.*
@@ -23,7 +24,9 @@ import kotlinx.android.synthetic.main.view_autopilot_status.view.*
class AutoPilotStatusView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet
) : ConstraintLayout(context, attrs), View.OnClickListener, IMogoAdasOCHCallback {
) : ConstraintLayout(context, attrs),
View.OnClickListener,
IMoGoAutopilotStatusListener {
private val TAG = "AutopilotStatusView"
@@ -41,10 +44,8 @@ class AutoPilotStatusView @JvmOverloads constructor(
// 设置点击监听
setOnClickListener(this)
// 首次查询自动驾驶状态
mAutopilotStatus = MogoApisHandler.getInstance().apis.adasControllerApi.autopilotStatus
// 自动驾驶状态监听
MogoApisHandler.getInstance().apis.adasControllerApi.addAdasOCHCallback(this)
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
LogUtils.dTag(TAG, "autopilotStatus: $mAutopilotStatus")
setAutoPilotStatus(mAutopilotStatus)
@@ -54,9 +55,9 @@ class AutoPilotStatusView @JvmOverloads constructor(
when (mAutopilotStatus) {
0 -> {// 不可自动驾驶adas与工控机没有链接或工控机异常
LogUtils.eTag(TAG, "不可自动驾驶adas与工控机没有链接或工控机异常请检查")
// ToastUtils.showShort("不可自动驾驶adas与工控机没有链接或工控机异常请检查")
ToastUtils.showShort("不可自动驾驶adas与工控机没有链接或工控机异常请检查")
// TODO 这里临时触发自动驾驶能力,测试功过这里删除
CallerHmiListenerManager.invokeCheckAutoPilotBtnListener(true)
//CallerHmiListenerManager.invokeCheckAutoPilotBtnListener(true)
}
1 -> {// 可自动驾驶,目前处于人工干预状态
CallerHmiListenerManager.invokeCheckAutoPilotBtnListener(true)
@@ -65,10 +66,14 @@ class AutoPilotStatusView @JvmOverloads constructor(
CallerHmiListenerManager.invokeCheckAutoPilotBtnListener(false)
}
}
startAutoPilot();
startAutoPilot()
}
/**
* 开启自动驾驶
*/
private fun startAutoPilot() {
// TODO 测试数据,真实情况需要业务自己传入控制数据
val currentAutopilot =
AutopilotControlParameters()
currentAutopilot.isSpeakVoice = false
@@ -77,7 +82,8 @@ class AutoPilotStatusView @JvmOverloads constructor(
currentAutopilot.endLatLon =
AutopilotControlParameters.AutoPilotLonLat(40.199255159538758, 116.73274535677977);
currentAutopilot.vehicleType = 10
MogoApisHandler.getInstance().apis.adasControllerApi.aiCloudToAdasData(currentAutopilot)
CallerAutoPilotManager.startAutoPilot(currentAutopilot)
}
/**
@@ -90,17 +96,17 @@ class AutoPilotStatusView @JvmOverloads constructor(
UiThreadHandler.post {
mAutopilotStatus = autopilotStatus
when (autopilotStatus) {
0 -> {// 不可自动驾驶adas与工控机没有链接或工控机异常
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶adas与工控机没有链接或工控机异常
clAutopilotStatus.setBackgroundResource(R.drawable.module_hmi_autopilot_status_disabled_bg)
tvStatusDes.setTextColor(resources.getColor(R.color.module_mogo_autopilot_status_disable))
ivStatusIcon.setImageResource(R.drawable.icon_autopilot_status_disabled)
}
1 -> {// 可自动驾驶,目前处于人工干预状态
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// 可自动驾驶,目前处于人工干预状态
clAutopilotStatus.setBackgroundResource(R.drawable.module_hmi_autopilot_status_enable_bg)
tvStatusDes.setTextColor(resources.getColor(R.color.module_mogo_autopilot_status_enable))
ivStatusIcon.setImageResource(R.drawable.icon_autopilot_status)
}
2 -> {// 自动驾驶中
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {// 自动驾驶中
clAutopilotStatus.setBackgroundResource(R.drawable.module_hmi_autopilot_status_checked_bg)
tvStatusDes.setTextColor(resources.getColor(R.color.module_mogo_autopilot_status_enable))
ivStatusIcon.setImageResource(R.drawable.icon_autopilot_status)
@@ -109,12 +115,20 @@ class AutoPilotStatusView @JvmOverloads constructor(
}
}
override fun onArriveAt(data: AutopilotStationInfo?) {
override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {
setAutoPilotStatus(autoPilotStatusInfo.state)
}
override fun onAutopilotArriveAtStation(autopilotWayArrive: AutopilotStationInfo?) {
}
override fun onStateChanged(state: Int, reason: String?) {
setAutoPilotStatus(state)
override fun onAutopilotCarStateData(autoPilotCarStateInfo: AutopilotCarStateInfo?) {
}
override fun onAutopilotGuardian(guardianInfo: AutopilotGuardianStatusInfo?) {
}

View File

@@ -74,7 +74,7 @@
<com.mogo.eagle.core.function.hmi.ui.widget.CheckStatusView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="31dp"
android:layout_marginLeft="25dp"
app:layout_constraintBottom_toBottomOf="@+id/viewPerspectiveSwitch"
app:layout_constraintStart_toEndOf="@+id/viewPerspectiveSwitch"
app:layout_constraintTop_toTopOf="@+id/viewPerspectiveSwitch" />