[6.4.0][启自驾指引] 丰富埋点数据;优化代码逻辑
This commit is contained in:
@@ -8,6 +8,7 @@ import chassis.Chassis.GearPosition.GEAR_R
|
||||
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine
|
||||
import com.mogo.eagle.core.data.enums.DataSourceType.DEFAULT
|
||||
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.CallerAutopilotActionsListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisBrakeStateListenerManager
|
||||
@@ -15,6 +16,8 @@ import com.mogo.eagle.core.function.call.autopilot.CallerChassisGearStateListene
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisThrottleStateListenerManager
|
||||
import com.mogo.eagle.core.function.main.MainLauncherActivity
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.zhjt.mogo.adas.data.bean.MogoReport
|
||||
import com.zhjt.mogo.adas.data.bean.UnableLaunchData
|
||||
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason
|
||||
import com.zhjt.mogo.adas.data.bean.UnableLaunchReason.SourceType.CHASSIS
|
||||
@@ -28,6 +31,7 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.withContext
|
||||
import mogo_msg.MogoReportMsg.MogoMsgTimestamp
|
||||
import mogo_msg.MogoReportMsg.MogoReportMessage
|
||||
import org.junit.Before
|
||||
@@ -64,8 +68,11 @@ class TestAutoPilotBeforeLaunch {
|
||||
delay(delayLong)
|
||||
launch(Dispatchers.IO) {
|
||||
val line = AutoPilotLine(10L, "", "","", "", System.currentTimeMillis(), "")
|
||||
var flag = false
|
||||
var flag = 1
|
||||
while (true) {
|
||||
if (flag > 4) {
|
||||
flag = 1
|
||||
}
|
||||
CallerAutoPilotStatusListenerManager.invokeTrajectoryDownloadReq(line, 0)
|
||||
CallerAutoPilotStatusListenerManager.invokeAutopilotGuardian(
|
||||
MogoReportMessage.getDefaultInstance()
|
||||
@@ -73,7 +80,7 @@ class TestAutoPilotBeforeLaunch {
|
||||
.setTimestamp(MogoMsgTimestamp.getDefaultInstance().toBuilder().setSec(1).setNsec(1).build())
|
||||
.setSrc("1")
|
||||
.setLevel("1")
|
||||
.setCode("ISYS_INIT_TRAJECTORY_START")
|
||||
.setCode(MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_START)
|
||||
.setMsg("lineid:10")
|
||||
.build())
|
||||
delay(2000)
|
||||
@@ -83,11 +90,41 @@ class TestAutoPilotBeforeLaunch {
|
||||
.setTimestamp(MogoMsgTimestamp.getDefaultInstance().toBuilder().setSec(1).setNsec(1).build())
|
||||
.setSrc("1")
|
||||
.setLevel("1")
|
||||
.setCode(if (flag) "ISYS_INIT_TRAJECTORY_SUCCESS" else "ISYS_INIT_TRAJECTORY_FAILURE")
|
||||
.setCode(
|
||||
when(flag) {
|
||||
1 -> {
|
||||
withContext(Dispatchers.Main) {
|
||||
ToastUtils.showShort("轨迹下载成功")
|
||||
}
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_SUCCESS
|
||||
}
|
||||
2 -> {
|
||||
withContext(Dispatchers.Main) {
|
||||
ToastUtils.showShort("轨迹下载失败(超时)")
|
||||
}
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_TIMEOUT
|
||||
}
|
||||
3 -> {
|
||||
withContext(Dispatchers.Main) {
|
||||
ToastUtils.showShort("轨迹下载失败(警告)")
|
||||
}
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_WARNING
|
||||
}
|
||||
4 -> {
|
||||
withContext(Dispatchers.Main) {
|
||||
ToastUtils.showShort("轨迹下载失败")
|
||||
}
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_FAILURE
|
||||
}
|
||||
else -> {
|
||||
throw AssertionError()
|
||||
}
|
||||
}
|
||||
)
|
||||
.setMsg("lineid:10")
|
||||
.build())
|
||||
delay(10000)
|
||||
flag = !flag
|
||||
delay(5000)
|
||||
flag++
|
||||
}
|
||||
}
|
||||
launch(Dispatchers.IO) {
|
||||
@@ -97,50 +134,50 @@ class TestAutoPilotBeforeLaunch {
|
||||
CallerChassisGearStateListenerManager.invokeAutopilotGearData(GEAR_R)
|
||||
val current = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
|
||||
CallerChassisLocationGCJ02ListenerManager.invokeChassisLocationGCJ02(current.also { it.gnssSpeed = Random.nextInt(0 ..20).toFloat() }, DEFAULT)
|
||||
delay(500)
|
||||
delay(Random.nextInt(10..50).toLong())
|
||||
}
|
||||
}
|
||||
launch(Dispatchers.IO) {
|
||||
var flag = 1
|
||||
var isAbility = false
|
||||
while (true) {
|
||||
if (flag > 6) {
|
||||
flag = 1
|
||||
}
|
||||
CallerAutopilotActionsListenerManager.setConnected(true)
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE
|
||||
if (flag == 1) {
|
||||
CallerAutopilotActionsListenerManager.invokeAutopilotAbility(isAbility, UnableLaunchData("", SystemStatusInfo.StatusInfo.getDefaultInstance().toBuilder().setSysState(SYS_RUNNING).build(), SsmStatusInf.getDefaultInstance().toBuilder().setModeState(ModeState.MODE_RUN_READY).setAutoPilotReady(false).setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance()), ArrayList<UnableLaunchReason>().also {
|
||||
CallerAutopilotActionsListenerManager.invokeAutopilotAbility(false, UnableLaunchData("", SystemStatusInfo.StatusInfo.getDefaultInstance().toBuilder().setSysState(SYS_RUNNING).build(), SsmStatusInf.getDefaultInstance().toBuilder().setModeState(ModeState.MODE_RUN_READY).setAutoPilotReady(false).setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance()), ArrayList<UnableLaunchReason>().also {
|
||||
it += UnableLaunchReason(CHASSIS, CHASSIS_GEAR, "gear")
|
||||
})
|
||||
}
|
||||
|
||||
if (flag == 2) {
|
||||
CallerAutopilotActionsListenerManager.invokeAutopilotAbility(isAbility, UnableLaunchData("", SystemStatusInfo.StatusInfo.getDefaultInstance().toBuilder().setSysState(SYS_RUNNING).build(), SsmStatusInf.getDefaultInstance().toBuilder().setModeState(ModeState.MODE_RUN_READY).setAutoPilotReady(false).setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance()), ArrayList<UnableLaunchReason>().also {
|
||||
CallerAutopilotActionsListenerManager.invokeAutopilotAbility(false, UnableLaunchData("", SystemStatusInfo.StatusInfo.getDefaultInstance().toBuilder().setSysState(SYS_RUNNING).build(), SsmStatusInf.getDefaultInstance().toBuilder().setModeState(ModeState.MODE_RUN_READY).setAutoPilotReady(false).setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance()), ArrayList<UnableLaunchReason>().also {
|
||||
it += UnableLaunchReason(CHASSIS, CHASSIS_STEERING, "steering")
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
if (flag == 3) {
|
||||
CallerAutopilotActionsListenerManager.invokeAutopilotAbility(isAbility, UnableLaunchData("", SystemStatusInfo.StatusInfo.getDefaultInstance().toBuilder().setSysState(SYS_RUNNING).build(), SsmStatusInf.getDefaultInstance().toBuilder().setModeState(ModeState.MODE_RUN_READY).setAutoPilotReady(false).setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance()), ArrayList<UnableLaunchReason>().also {
|
||||
CallerAutopilotActionsListenerManager.invokeAutopilotAbility(false, UnableLaunchData("", SystemStatusInfo.StatusInfo.getDefaultInstance().toBuilder().setSysState(SYS_RUNNING).build(), SsmStatusInf.getDefaultInstance().toBuilder().setModeState(ModeState.MODE_RUN_READY).setAutoPilotReady(false).setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance()), ArrayList<UnableLaunchReason>().also {
|
||||
it += UnableLaunchReason(CHASSIS, CHASSIS_BRAKE, "brake")
|
||||
})
|
||||
}
|
||||
|
||||
if (flag == 4) {
|
||||
CallerAutopilotActionsListenerManager.invokeAutopilotAbility(isAbility, UnableLaunchData("", SystemStatusInfo.StatusInfo.getDefaultInstance().toBuilder().setSysState(SYS_RUNNING).build(), SsmStatusInf.getDefaultInstance().toBuilder().setModeState(ModeState.MODE_RUN_READY).setAutoPilotReady(false).setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance()), ArrayList<UnableLaunchReason>().also {
|
||||
CallerAutopilotActionsListenerManager.invokeAutopilotAbility(false, UnableLaunchData("", SystemStatusInfo.StatusInfo.getDefaultInstance().toBuilder().setSysState(SYS_RUNNING).build(), SsmStatusInf.getDefaultInstance().toBuilder().setModeState(ModeState.MODE_RUN_READY).setAutoPilotReady(false).setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance()), ArrayList<UnableLaunchReason>().also {
|
||||
it += UnableLaunchReason(CHASSIS, CHASSIS_HAZARD_LIGHTS, "lights")
|
||||
})
|
||||
}
|
||||
|
||||
if (flag == 5) {
|
||||
CallerAutopilotActionsListenerManager.invokeAutopilotAbility(isAbility, UnableLaunchData("", SystemStatusInfo.StatusInfo.getDefaultInstance().toBuilder().setSysState(SYS_RUNNING).build(), SsmStatusInf.getDefaultInstance().toBuilder().setModeState(ModeState.MODE_RUN_READY).setAutoPilotReady(false).setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance()), ArrayList<UnableLaunchReason>().also {
|
||||
CallerAutopilotActionsListenerManager.invokeAutopilotAbility(false, UnableLaunchData("", SystemStatusInfo.StatusInfo.getDefaultInstance().toBuilder().setSysState(SYS_RUNNING).build(), SsmStatusInf.getDefaultInstance().toBuilder().setModeState(ModeState.MODE_RUN_READY).setAutoPilotReady(false).setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance()), ArrayList<UnableLaunchReason>().also {
|
||||
it += UnableLaunchReason(CHASSIS, CHASSIS_THROTTLE, "throttle")
|
||||
})
|
||||
}
|
||||
|
||||
if (flag == 6) {
|
||||
CallerAutopilotActionsListenerManager.invokeAutopilotAbility(isAbility, UnableLaunchData("", SystemStatusInfo.StatusInfo.getDefaultInstance().toBuilder().setSysState(SYS_RUNNING).build(), SsmStatusInf.getDefaultInstance().toBuilder().setModeState(ModeState.MODE_RUN_READY).setAutoPilotReady(false).setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance()), ArrayList<UnableLaunchReason>().also {
|
||||
CallerAutopilotActionsListenerManager.invokeAutopilotAbility(false, UnableLaunchData("", SystemStatusInfo.StatusInfo.getDefaultInstance().toBuilder().setSysState(SYS_RUNNING).build(), SsmStatusInf.getDefaultInstance().toBuilder().setModeState(ModeState.MODE_RUN_READY).setAutoPilotReady(false).setRemotePilotReady(false).build(), FSMStatusReasonRespond.getDefaultInstance()), ArrayList<UnableLaunchReason>().also {
|
||||
it += UnableLaunchReason(CHASSIS, CHASSIS_GEAR, "gear")
|
||||
it += UnableLaunchReason(CHASSIS, CHASSIS_STEERING, "steering")
|
||||
it += UnableLaunchReason(CHASSIS, CHASSIS_HAZARD_LIGHTS, "lights")
|
||||
@@ -148,8 +185,9 @@ class TestAutoPilotBeforeLaunch {
|
||||
it += UnableLaunchReason(CHASSIS, CHASSIS_BRAKE, "brake")
|
||||
})
|
||||
}
|
||||
delay(2000)
|
||||
// isAbility = !isAbility
|
||||
delay(500)
|
||||
CallerAutoPilotControlManager.isCanStartAutopilot(true)
|
||||
delay(5000)
|
||||
flag ++
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,8 +191,17 @@ object StatusManager {
|
||||
}?.takeIf {
|
||||
it.isNotEmpty()
|
||||
}?.also { l ->
|
||||
runCatching {
|
||||
MogoAnalyticUtils.track("vehicle_state_exp", HashMap<String, Any>().also { itx -> itx["data"] = l.joinToString(",") { it.toString() } })
|
||||
l.filter { it.isException() }.takeIf { it.isNotEmpty() }?.also { ll ->
|
||||
val result = runCatching {
|
||||
MogoAnalyticUtils.track(
|
||||
"vehicle_state_exp",
|
||||
HashMap<String, Any>().also { itx ->
|
||||
itx["data"] = ll.joinToString(",") { it.toString() }
|
||||
})
|
||||
}
|
||||
if (result.isFailure) {
|
||||
Logger.w(TAG, "error => ${result.exceptionOrNull()?.stackTraceToString() }")
|
||||
}
|
||||
}
|
||||
}?.forEachIndexed { index, status ->
|
||||
val shl = 1 shl index
|
||||
|
||||
@@ -24,6 +24,9 @@ internal class AcceleratorImpl(ctx: Context): IFlow<AcceleratorStatus>(ctx), IMo
|
||||
@Volatile
|
||||
private var isError: Boolean = false
|
||||
|
||||
@Volatile
|
||||
private var extra: Any? = null
|
||||
|
||||
override fun onCreate() {
|
||||
CallerChassisThrottleStateListenerManager.addListener(TAG, this)
|
||||
CallerAutopilotActionsListenerManager.addListener(TAG, this)
|
||||
@@ -38,23 +41,25 @@ internal class AcceleratorImpl(ctx: Context): IFlow<AcceleratorStatus>(ctx), IMo
|
||||
override fun onAutopilotThrottle(throttle: Float) {
|
||||
super.onAutopilotThrottle(throttle)
|
||||
if (last != throttle) {
|
||||
send(AcceleratorStatus(throttle, isError))
|
||||
send(AcceleratorStatus(throttle, isError).also { it.rawData = extra })
|
||||
last = throttle
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotAbility(isAutopilotAbility: Boolean, unableLaunchData: UnableLaunchData?, unableAutopilotReasons: ArrayList<UnableLaunchReason>?) {
|
||||
if (!isAutopilotAbility) {
|
||||
val target = unableAutopilotReasons?.find { it.unableType == CHASSIS_THROTTLE }?.also {
|
||||
val target = unableAutopilotReasons?.find { it.unableType == CHASSIS_THROTTLE }?.also { itx ->
|
||||
isError = true
|
||||
send(AcceleratorStatus(last ?: 0.0f, true).also { it.rawData = it })
|
||||
send(AcceleratorStatus(last ?: 0.0f, true).also { extra = itx; it.rawData = itx })
|
||||
}
|
||||
if (target == null) {
|
||||
isError = false
|
||||
extra = null
|
||||
send(AcceleratorStatus(last ?: 0.0f, false))
|
||||
}
|
||||
} else {
|
||||
isError = false
|
||||
extra = null
|
||||
send(AcceleratorStatus(last ?: 0.0f, false))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,9 @@ internal class BrakeImpl(ctx: Context): IFlow<BrakeStatus>(ctx), IMoGoChassisBra
|
||||
@Volatile
|
||||
private var isError: Boolean = false
|
||||
|
||||
@Volatile
|
||||
private var extra: Any? = null
|
||||
|
||||
override fun onCreate() {
|
||||
CallerChassisBrakeStateListenerManager.addListener(TAG, this)
|
||||
CallerAutopilotActionsListenerManager.addListener(TAG, this)
|
||||
@@ -41,23 +44,28 @@ internal class BrakeImpl(ctx: Context): IFlow<BrakeStatus>(ctx), IMoGoChassisBra
|
||||
override fun onAutopilotBrake(brake: Float) {
|
||||
super.onAutopilotBrake(brake)
|
||||
if (last != brake) {
|
||||
send(BrakeStatus(brake, isError).also { it.rawData = brake })
|
||||
send(BrakeStatus(brake, isError).also { it.rawData = extra })
|
||||
last = brake
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotAbility(isAutopilotAbility: Boolean, unableLaunchData: UnableLaunchData?, unableAutopilotReasons: ArrayList<UnableLaunchReason>?) {
|
||||
if (!isAutopilotAbility) {
|
||||
val target = unableAutopilotReasons?.find { it.unableType == CHASSIS_BRAKE }?.also {
|
||||
val target = unableAutopilotReasons?.find { it.unableType == CHASSIS_BRAKE }?.also { itx ->
|
||||
isError = true
|
||||
send(BrakeStatus(last, true).also { it.rawData = it })
|
||||
send(BrakeStatus(last, true).also {
|
||||
extra = itx
|
||||
it.rawData = extra
|
||||
})
|
||||
}
|
||||
if (target == null) {
|
||||
isError = false
|
||||
extra = null
|
||||
send(BrakeStatus(last, false))
|
||||
}
|
||||
} else {
|
||||
isError = false
|
||||
extra = null
|
||||
send(BrakeStatus(last, false))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,9 @@ internal class DoubleFlashImpl(ctx: Context): IFlow<DoubleFlashStatus>(ctx), IMo
|
||||
@Volatile
|
||||
private var last: LightSwitch? = null
|
||||
|
||||
@Volatile
|
||||
private var extra: Any? = null
|
||||
|
||||
override fun onCreate() {
|
||||
CallerChassisLamplightListenerManager.addListener(TAG, this)
|
||||
CallerAutopilotActionsListenerManager.addListener(TAG, this)
|
||||
@@ -45,7 +48,7 @@ internal class DoubleFlashImpl(ctx: Context): IFlow<DoubleFlashStatus>(ctx), IMo
|
||||
if (last != lightSwitch) {
|
||||
last = lightSwitch
|
||||
if (lightSwitch == LIGHT_FLASH) {
|
||||
send(DoubleFlashStatus(lightSwitch.number, isError))
|
||||
send(DoubleFlashStatus(lightSwitch.number, isError).also { it.rawData = extra })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,16 +56,18 @@ internal class DoubleFlashImpl(ctx: Context): IFlow<DoubleFlashStatus>(ctx), IMo
|
||||
|
||||
override fun onAutopilotAbility(isAutopilotAbility: Boolean, unableLaunchData: UnableLaunchData?, unableAutopilotReasons: ArrayList<UnableLaunchReason>?) {
|
||||
if (!isAutopilotAbility) {
|
||||
val target = unableAutopilotReasons?.find { it.unableType == CHASSIS_HAZARD_LIGHTS }?.also {
|
||||
val target = unableAutopilotReasons?.find { it.unableType == CHASSIS_HAZARD_LIGHTS }?.also { itx ->
|
||||
isError = true
|
||||
send(DoubleFlashStatus(last?.number ?: Int.MIN_VALUE, true).also { it.rawData = last to it })
|
||||
send(DoubleFlashStatus(last?.number ?: Int.MIN_VALUE, true).also { extra = last to itx; it.rawData = extra })
|
||||
}
|
||||
if (target == null) {
|
||||
isError = false
|
||||
extra = null
|
||||
send(DoubleFlashStatus(last?.number ?: Int.MIN_VALUE, false).also { it.rawData = last })
|
||||
}
|
||||
} else {
|
||||
isError = false
|
||||
extra = null
|
||||
send(DoubleFlashStatus(last?.number ?: Int.MIN_VALUE, false).also { it.rawData = last })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,9 @@ internal class GearImpl(ctx: Context): IFlow<GearStatus>(ctx), IMoGoChassisGearS
|
||||
@Volatile
|
||||
private var isError: Boolean = false
|
||||
|
||||
@Volatile
|
||||
private var extra: Any? = null
|
||||
|
||||
override fun onCreate() {
|
||||
CallerChassisGearStateListenerManager.addListener(TAG, this)
|
||||
CallerAutopilotActionsListenerManager.addListener(TAG, this)
|
||||
@@ -40,23 +43,25 @@ internal class GearImpl(ctx: Context): IFlow<GearStatus>(ctx), IMoGoChassisGearS
|
||||
|
||||
override fun onAutopilotGearData(gear: GearPosition) {
|
||||
if (last != gear) {
|
||||
send(GearStatus(gear.number, isError))
|
||||
send(GearStatus(gear.number, isError).also { it.rawData = extra })
|
||||
last = gear
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotAbility(isAutopilotAbility: Boolean, unableLaunchData: UnableLaunchData?, unableAutopilotReasons: ArrayList<UnableLaunchReason>?) {
|
||||
if (!isAutopilotAbility) {
|
||||
val target = unableAutopilotReasons?.find { it.unableType == CHASSIS_GEAR }?.also {
|
||||
val target = unableAutopilotReasons?.find { it.unableType == CHASSIS_GEAR }?.also { itx ->
|
||||
isError = true
|
||||
send(GearStatus(last.number, true).also { it.rawData = it })
|
||||
send(GearStatus(last.number, true).also { extra = itx; it.rawData = itx })
|
||||
}
|
||||
if (target == null) {
|
||||
isError = false
|
||||
extra = null
|
||||
send(GearStatus(last.number, false))
|
||||
}
|
||||
} else {
|
||||
isError = false
|
||||
extra = null
|
||||
send(GearStatus(last.number, false))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,10 +14,11 @@ import com.zhjt.mogo_core_function_devatools.status.entity.RouteState.RouteStart
|
||||
import com.zhjt.mogo_core_function_devatools.status.flow.IFlow
|
||||
import mogo_msg.MogoReportMsg.MogoReportMessage
|
||||
import java.lang.Exception
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.ConcurrentSkipListMap
|
||||
|
||||
|
||||
internal class RouteDownloadImpl(ctx: Context): IFlow<RouteDownloadStatus>(ctx), IMoGoAutopilotStatusListener {
|
||||
internal class RouteDownloadImpl(ctx: Context) : IFlow<RouteDownloadStatus>(ctx),
|
||||
IMoGoAutopilotStatusListener {
|
||||
|
||||
companion object {
|
||||
private const val TAG = "RouteDownloadImpl"
|
||||
@@ -26,7 +27,7 @@ internal class RouteDownloadImpl(ctx: Context): IFlow<RouteDownloadStatus>(ctx),
|
||||
@Volatile
|
||||
private var toDownloadLineId: Long? = null
|
||||
|
||||
private val linked by lazy { ConcurrentHashMap<Int, Any>() }
|
||||
private val extra by lazy { ConcurrentSkipListMap<Int, Any>() }
|
||||
|
||||
override fun onCreate() {
|
||||
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
|
||||
@@ -40,12 +41,11 @@ internal class RouteDownloadImpl(ctx: Context): IFlow<RouteDownloadStatus>(ctx),
|
||||
override fun onAutopilotStatusResponse(state: Int) {
|
||||
super.onAutopilotStatusResponse(state)
|
||||
Logger.d(TAG, "--- onAutopilotStatusResponse -- 1 --: $state")
|
||||
|
||||
if (state == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) {
|
||||
val lineId = toDownloadLineId
|
||||
Logger.d(TAG, "--- onAutopilotStatusResponse -- 2 --: $lineId")
|
||||
if (lineId != null && lineId >= 0) {
|
||||
linked.clear()
|
||||
extra.clear()
|
||||
send(RouteDownloadStatus(lineId, RouteComplete))
|
||||
toDownloadLineId = null
|
||||
}
|
||||
@@ -55,25 +55,28 @@ internal class RouteDownloadImpl(ctx: Context): IFlow<RouteDownloadStatus>(ctx),
|
||||
override fun onAutopilotTrajectoryDownloadReq(autoPilotLine: AutoPilotLine, downloadType: Int) {
|
||||
super.onAutopilotTrajectoryDownloadReq(autoPilotLine, downloadType)
|
||||
Logger.d(TAG, "--- onAutopilotTrajectoryDownloadReq --: 1:$autoPilotLine, 2:$downloadType")
|
||||
if (downloadType == 0 && autoPilotLine.lineId >= 0) {
|
||||
linked.clear()
|
||||
linked[0] = autoPilotLine.lineId
|
||||
toDownloadLineId = autoPilotLine.lineId
|
||||
val lineId = autoPilotLine.lineId
|
||||
send(RouteDownloadStatus(lineId = lineId, state = RouteNone).also { autoPilotLine.lineId })
|
||||
val lineId = autoPilotLine.lineId
|
||||
if (downloadType == 0 && lineId >= 0) {
|
||||
extra.clear()
|
||||
extra[0] = lineId to System.currentTimeMillis()
|
||||
toDownloadLineId = lineId
|
||||
send(RouteDownloadStatus(lineId = lineId, state = RouteNone).also {
|
||||
it.rawData = extra
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotGuardian(guardianInfo: MogoReportMessage?) {
|
||||
super.onAutopilotGuardian(guardianInfo)
|
||||
var lineId = Long.MIN_VALUE
|
||||
Logger.d(TAG, "--- onAutopilotGuardian -- 1 --: ${ guardianInfo?.code }")
|
||||
if (MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_START == guardianInfo?.code ||
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_SUCCESS == guardianInfo?.code ||
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_FAILURE == guardianInfo?.code ||
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_WARNING == guardianInfo?.code ||
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_TIMEOUT == guardianInfo?.code
|
||||
val code = guardianInfo?.code
|
||||
Logger.d(TAG, "--- onAutopilotGuardian -- 1 --: $code")
|
||||
if (MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_START == code ||
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_SUCCESS == code ||
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_FAILURE == code ||
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_WARNING == code ||
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_TIMEOUT == code
|
||||
) {
|
||||
var lineId = Long.MIN_VALUE
|
||||
Logger.d(TAG, "--- onAutopilotGuardian -- 2 --")
|
||||
val msg = guardianInfo.msg
|
||||
try {
|
||||
@@ -82,7 +85,8 @@ internal class RouteDownloadImpl(ctx: Context): IFlow<RouteDownloadStatus>(ctx),
|
||||
if (matchResult != null) {
|
||||
lineId = matchResult.groupValues[1].toLong()
|
||||
}
|
||||
} catch (ignore: Exception) { }
|
||||
} catch (ignore: Exception) {
|
||||
}
|
||||
if (lineId == Long.MIN_VALUE) {
|
||||
try {
|
||||
val regex = Regex("lineID=(\\d+)")
|
||||
@@ -90,30 +94,41 @@ internal class RouteDownloadImpl(ctx: Context): IFlow<RouteDownloadStatus>(ctx),
|
||||
if (matchResult != null) {
|
||||
lineId = matchResult.groupValues[1].toLong()
|
||||
}
|
||||
} catch (ignore: Exception) { }
|
||||
} catch (ignore: Exception) {
|
||||
}
|
||||
}
|
||||
}
|
||||
Logger.d(TAG, "--- onAutopilotGuardian -- 3 --:lineId => $toDownloadLineId, parse_line_id: $lineId")
|
||||
if (toDownloadLineId != lineId) {
|
||||
return
|
||||
}
|
||||
if (guardianInfo == null || !guardianInfo.hasCode())
|
||||
return
|
||||
Logger.d(TAG, "--- onAutopilotGuardian -- 4 --:line_id => $lineId, code: ${guardianInfo.code}")
|
||||
when (guardianInfo.code) {
|
||||
"ISYS_INIT_TRAJECTORY_START" -> { // 1. 轨迹管理_轨迹开始下载(本地已有对应轨迹也触发)
|
||||
linked[1] = lineId
|
||||
send(RouteDownloadStatus(lineId, RouteStart).also { it.rawData = linked })
|
||||
extra[1] = lineId to "${System.currentTimeMillis()} => ($code,$toDownloadLineId)"
|
||||
Logger.d(
|
||||
TAG,
|
||||
"--- onAutopilotGuardian -- 3 --:lineId => $toDownloadLineId, parse_line_id: $lineId"
|
||||
)
|
||||
if (toDownloadLineId != lineId) {
|
||||
return
|
||||
}
|
||||
"ISYS_INIT_TRAJECTORY_SUCCESS" -> { // 2. 轨迹管理_轨迹下载成功(本地已有对应轨迹也触发)
|
||||
linked[2] = lineId
|
||||
send(RouteDownloadStatus(lineId, RouteComplete).also { it.rawData = linked })
|
||||
toDownloadLineId = null
|
||||
}
|
||||
"ISYS_INIT_TRAJECTORY_FAILURE" -> { // 3. 轨迹管理_轨迹下载失败,本地无对应轨迹
|
||||
linked[3] = lineId
|
||||
send(RouteDownloadStatus(lineId, RouteFailed).also { it.rawData = linked })
|
||||
toDownloadLineId = null
|
||||
Logger.d(
|
||||
TAG,
|
||||
"--- onAutopilotGuardian -- 4 --:line_id => $lineId, code: ${guardianInfo.code}"
|
||||
)
|
||||
when (code) {
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_START -> { // 1. 轨迹管理_轨迹开始下载(本地已有对应轨迹也触发)
|
||||
extra[2] = lineId to System.currentTimeMillis()
|
||||
send(RouteDownloadStatus(lineId, RouteStart).also { it.rawData = extra })
|
||||
}
|
||||
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_SUCCESS -> { // 2. 轨迹管理_轨迹下载成功(本地已有对应轨迹也触发)
|
||||
extra[3] = lineId to System.currentTimeMillis()
|
||||
send(RouteDownloadStatus(lineId, RouteComplete).also { it.rawData = extra })
|
||||
toDownloadLineId = null
|
||||
}
|
||||
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_FAILURE,
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_WARNING,
|
||||
MogoReport.Code.Info.ISYS.INIT_TRAJECTORY_TIMEOUT -> {
|
||||
// 3. 轨迹管理_轨迹下载失败,本地无对应轨迹
|
||||
extra[4] = lineId to System.currentTimeMillis()
|
||||
send(RouteDownloadStatus(lineId, RouteFailed).also { it.rawData = extra })
|
||||
toDownloadLineId = null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,9 @@ internal class SteerImpl(ctx: Context): IFlow<SteerStatus>(ctx), IMoGoChassisSte
|
||||
@Volatile
|
||||
private var isError: Boolean = false
|
||||
|
||||
@Volatile
|
||||
private var extra: Any? = null
|
||||
|
||||
override fun onCreate() {
|
||||
CallerChassisSteeringStateListenerManager.addListener(TAG, this)
|
||||
CallerAutopilotActionsListenerManager.addListener(TAG, this)
|
||||
@@ -37,7 +40,7 @@ internal class SteerImpl(ctx: Context): IFlow<SteerStatus>(ctx), IMoGoChassisSte
|
||||
|
||||
override fun onAutopilotSteeringData(steering: Float) {
|
||||
if (last != steering) {
|
||||
send(SteerStatus(steering, isError).also { it.rawData = steering })
|
||||
send(SteerStatus(steering, isError).also { it.rawData = extra })
|
||||
last = steering
|
||||
}
|
||||
}
|
||||
@@ -45,16 +48,18 @@ internal class SteerImpl(ctx: Context): IFlow<SteerStatus>(ctx), IMoGoChassisSte
|
||||
override fun onAutopilotAbility(isAutopilotAbility: Boolean, unableLaunchData: UnableLaunchData?, unableAutopilotReasons: ArrayList<UnableLaunchReason>?) {
|
||||
Logger.d(TAG, "onAutopilotAbility->($isAutopilotAbility, $unableLaunchData, ${unableAutopilotReasons?.joinToString(",")}")
|
||||
if (!isAutopilotAbility) {
|
||||
val target = unableAutopilotReasons?.find { it.unableType == CHASSIS_STEERING }?.also {
|
||||
val target = unableAutopilotReasons?.find { it.unableType == CHASSIS_STEERING }?.also { itx ->
|
||||
isError = true
|
||||
send(SteerStatus(last, true).also { it.rawData = last to it })
|
||||
send(SteerStatus(last, true).also { data -> data.rawData = (last to itx).also { this.extra = it } })
|
||||
}
|
||||
if (target == null) {
|
||||
isError = false
|
||||
extra = null
|
||||
send(SteerStatus(last, false).also { it.rawData = last })
|
||||
}
|
||||
} else {
|
||||
isError = false
|
||||
extra = null
|
||||
send(SteerStatus(last, false).also { it.rawData = last })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_OC
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotControlProvider
|
||||
import com.mogo.eagle.core.function.call.base.CallerBase
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
import com.mogo.eagle.core.utilcode.kotlin.lifeCycleScope
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import com.mogo.eagle.core.utilcode.util.AppStateManager
|
||||
@@ -29,6 +30,7 @@ import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.cloud.s_r.SweeperTaskCloudSuspendResume.BigTaskActionResp
|
||||
import com.zhjt.service.chain.ChainLog
|
||||
import com.zhjt.service_biz.BizConfig
|
||||
import kotlinx.coroutines.launch
|
||||
import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest
|
||||
import java.lang.StringBuilder
|
||||
import kotlin.random.Random
|
||||
@@ -113,8 +115,10 @@ object CallerAutoPilotControlManager {
|
||||
sb.append("档位$")
|
||||
}
|
||||
if ((exceptionValue and (1 shl 5)) != 0 || ((exceptionValue and (1 shl 6)) != 0)) {
|
||||
sb.setLength(0)
|
||||
sb.append("轨迹未就绪,请稍后重试")
|
||||
if (!sb.contains("$")) {
|
||||
sb.setLength(0)
|
||||
sb.append("轨迹未就绪,请稍后重试")
|
||||
}
|
||||
}
|
||||
val voiceText = sb.toString().let { str ->
|
||||
val count = str.count { it == '$' }
|
||||
@@ -125,9 +129,13 @@ object CallerAutoPilotControlManager {
|
||||
}
|
||||
}
|
||||
Logger.d(TAG, "voiceText: $voiceText")
|
||||
ToastUtils.showShort(voiceText)
|
||||
AppStateManager.currentActivity()?.also {
|
||||
AIAssist.getInstance(it).speakTTSVoice(voiceText)
|
||||
it.lifeCycleScope.launch {
|
||||
ToastUtils.showShort(voiceText)
|
||||
runCatching {
|
||||
AIAssist.getInstance(it).speakTTSVoice(voiceText)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
|
||||
Reference in New Issue
Block a user