[fea]
[轨迹下载回调相关]
This commit is contained in:
yangyakun
2024-12-06 14:31:57 +08:00
parent d98a9d3b1a
commit cee6be8bb5
18 changed files with 494 additions and 439 deletions

View File

@@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.annotation.Route
import com.magic.mogo.och.charter.fragment.DriverM1Fragment
import com.magic.mogo.och.charter.manager.CharterAnalyticsManager
import com.magic.mogo.och.charter.manager.CharterTrajectoryManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.common.module.constant.OchCommonConst
@@ -29,10 +30,12 @@ class CharterDriverProvider : CommonServiceImpl() {
fragment = DriverM1Fragment()
}
OchAutopilotAnalytics.ochEventKey = CharterAnalyticsManager.getInstance()
CharterTrajectoryManager.load()
return fragment!!
}
override fun resetFragment() {
CharterTrajectoryManager.release()
fragment = null
OchAutopilotAnalytics.ochEventKey = null
}

View File

@@ -15,6 +15,8 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.manager.autopilot.trajectory.ITrajectoryListListener
import com.mogo.och.common.module.manager.autopilot.trajectory.TrajectoryManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.utils.SoundPoolHelper
import io.reactivex.Observable
@@ -29,7 +31,7 @@ import java.util.concurrent.TimeUnit
* Bus轨迹管理给MEC下发用于轨迹下载的信息
* Created on 2022/6/23
*/
object CharterTrajectoryManager {
object CharterTrajectoryManager : ITrajectoryListListener {
private const val TAG = "CharterTrajectoryManager"
private var mAutoPilotLine: AutoPilotLine? = null
@@ -37,6 +39,14 @@ object CharterTrajectoryManager {
private var mLineName = ""
private var mSendReqDisposable: Disposable? = null
fun load(){
TrajectoryManager.addListener(TAG,this)
}
fun release(){
TrajectoryManager.removeListener(TAG)
}
/**
* 同步Bus路线信息
*/
@@ -54,57 +64,35 @@ object CharterTrajectoryManager {
}
}
fun onAutopilotGuardian(guardianInfo: MogoReportMessage?, lineId: Long) {
onAutopilotGuardian(guardianInfo)
override fun onDownLoadStart(lineId: Long) {
stopTrajReqLoop()
}
/**
* 接口MEC反馈的常规信息MAP v2.5.0新增轨迹相关信息)
* @param guardianInfo
*/
fun onAutopilotGuardian(guardianInfo: MogoReportMessage?) {
if (guardianInfo == null || !guardianInfo.hasCode()) return
if ("ISYS_INIT_TRAJECTORY_START" == guardianInfo.code) {
// 1. 轨迹管理_轨迹开始下载本地已有对应轨迹也触发
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹开始下载")
OchChainLogManager.writeChainLog("轨迹监控","onAutopilotGuardian() 轨迹开始下载", eventID = OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY)
stopTrajReqLoop()
} else if ("ISYS_INIT_TRAJECTORY_SUCCESS" == guardianInfo.code) {
// 2. 轨迹管理_轨迹下载成功本地已有对应轨迹也触发
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹下载成功")
OchChainLogManager.writeChainLog("轨迹监控","onAutopilotGuardian() 轨迹下载成功", eventID = OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY)
stopTrajReqLoop()
} else if ("ISYS_INIT_TRAJECTORY_FAILURE" == guardianInfo.code) {
// 3. 轨迹管理_轨迹下载失败本地无对应轨迹
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() " + "轨迹下载失败,本地无对应轨迹")
OchChainLogManager.writeChainLog("轨迹监控","onAutopilotGuardian() 轨迹下载失败,本地无对应轨迹", eventID = OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY)
// ToastUtils.showShort("轨迹下载失败,本地无对应轨迹");
} else if ("ISYS_INIT_TRAJECTORY_WARNING" == guardianInfo.code) {
// 4. 轨迹管理_轨迹下载失败本地有对应轨迹认为成功
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() " + "轨迹下载失败,本地有对应轨迹,认为成功")
OchChainLogManager.writeChainLog("轨迹监控","onAutopilotGuardian() 轨迹下载失败,本地有对应轨迹,认为成功", eventID = OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY)
// ToastUtils.showShort("轨迹下载失败,本地有对应轨迹,认为成功");
} else if ("ISYS_INIT_TRAJECTORY_TIMEOUT" == guardianInfo.code) {
// 5. 轨迹管理_轨迹下载超时
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹下载超时")
OchChainLogManager.writeChainLog("轨迹监控","onAutopilotGuardian() 轨迹下载超时", eventID = OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY)
} else if ("EMAP_ATTITUDE_INIT_FAILED" == guardianInfo.getCode()) {
// 收到ssm的自动驾驶变为ready再次下发轨迹下载.解决域控重启或者102域控启动太早107节点初始化未完成导致的轨迹未进行下载。
d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() ssm ready再次发起下载")
OchChainLogManager.writeChainLog("轨迹监控","onAutopilotGuardian() 当前位置距离轨迹距离大于15m", eventID = OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY)
DriverM1Model.get().getBusOrderResult()?.lineId?.let {
syncTrajectoryInfo(it, DriverM1Model.get().getBusOrderResult()?.lineName!!)
}
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
MsgBoxType.OPERATION,
OperationMsg(
System.currentTimeMillis(), "请尽快操作车辆至适当位置掉头!", -1
)
override fun onDownLoadSuccess(lineId: Long) {
stopTrajReqLoop()
}
override fun onDownLoadReady(lineId: Long) {
super.onDownLoadReady(lineId)
DriverM1Model.get().getBusOrderResult()?.lineId?.let {
syncTrajectoryInfo(it, DriverM1Model.get().getBusOrderResult()?.lineName!!)
}
}
override fun onDistanceWithTrajectory(lineId: Long) {
super.onDistanceWithTrajectory(lineId)
DriverM1Model.get().getBusOrderResult()?.lineId?.let {
syncTrajectoryInfo(it, DriverM1Model.get().getBusOrderResult()?.lineName!!)
}
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
MsgBoxType.OPERATION,
OperationMsg(
System.currentTimeMillis(), "请尽快操作车辆至适当位置掉头!", -1
)
)
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.startautopilot)
}
)
SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.startautopilot)
}
private fun setupAutoPilotLine() {

View File

@@ -124,10 +124,6 @@ class DriverM1Presenter(view: DriverM1Fragment?) :
DriverM1Model.get().pushOperationalToMsgBox(DateTimeUtil.getCurrentTimeStamp()
,context.getString(R.string.charter_last_15_minutes))
}
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?, lineId: Long) {
CharterTrajectoryManager.onAutopilotGuardian(guardianInfo,lineId)
}
override fun onAutopilotArriveAtStation(arrivalNotification: ArrivedStation?) {
DriverM1Model.get().onAutopilotArriveAtStation()