[684][led]添加明鑫亮LED外面控制

This commit is contained in:
xinfengkun
2024-12-20 20:12:43 +08:00
parent 17257c7d85
commit f2c11bac3c
10 changed files with 942 additions and 7 deletions

View File

@@ -12,6 +12,7 @@ import com.mogo.eagle.core.function.datacenter.location.MoGoLocationDispatcher
import com.mogo.eagle.core.function.datacenter.v2x.SpeedLimitDispatcher
import com.mogo.eagle.core.function.datacenter.v2x.TrafficLightDispatcher
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.support.device.led.LedSourceManager
@Route(path = MogoServicePaths.PATH_DATA_CENTER_MODULE)
class DataCenterProvider : IDataCenterProvider {
@@ -25,14 +26,15 @@ class DataCenterProvider : IDataCenterProvider {
MoGoLocationDispatcher.initListener()
mContext = context
mContext?.let {
val isPassenger = AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)
LedSourceManager.init(!isPassenger)
CallerDataCenterBizManager.init()
CallerMsgBoxManager.queryAllMessages(it)
TrafficLightDispatcher.INSTANCE.initServer(it)
SpeedLimitDispatcher.INSTANCE.initLimit(it)
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
if (isPassenger) {
IotManager.init()
}
}
}

View File

@@ -31,7 +31,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListene
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotControlProvider
import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.FUNC_MODE_RAIN
import com.mogo.eagle.core.function.api.map.collect.IMoGoMapDataCollectProvider
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerIpcConnectStateToastManager
import com.mogo.eagle.core.function.call.cloud.CallerCloudCertManager
@@ -55,6 +54,7 @@ import com.mogo.eagle.core.utilcode.util.ParseVersionUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.support.device.led.LedSourceManager
import com.mogo.telematic.MogoProtocolMsg
import com.mogo.telematic.MogoProtocolMsg.NORMAL_DATA
import com.mogo.telematic.MogoProtocolMsg.SYNC_FUSION_COLOR_STATUS
@@ -1025,6 +1025,13 @@ class MoGoAutopilotControlProvider :
*/
override fun sendTripInfo(type: Int, lineName: String, departureStopName: String,arrivalStopName: String, isLastStop: Boolean) {
AdasManager.getInstance().sendTripInfoReq(type, lineName, departureStopName,arrivalStopName, isLastStop)
LedSourceManager.updateTripInfoData(
type,
lineName,
departureStopName,
arrivalStopName,
isLastStop
)
}
/**

View File

@@ -91,16 +91,17 @@ import com.mogo.eagle.core.function.call.obu.CallerObuWarningSpatListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_D_C
import com.mogo.eagle.core.utilcode.util.DeviceUtils
import com.mogo.support.device.led.LedSourceManager
import com.mogo.support.obu.ObuScene
import com.zhidao.support.adas.high.AdasManager
import com.zhidao.support.adas.high.OnAdasListener
import com.zhidao.support.adas.high.chain.AdasChain
import com.zhjt.mogo.adas.data.bean.AdasParam
import com.zhidao.support.adas.high.common.ProtocolStatus
import com.zhjt.mogo.adas.common.MessageType
import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.mogo.adas.data.AdasConstants.NodeExistState
import com.zhjt.mogo.adas.data.AiCloudTask
import com.zhjt.mogo.adas.data.bean.AdasParam
import com.zhjt.mogo.adas.data.bean.AutopilotStatistics
import com.zhjt.mogo.adas.data.bean.LaunchConditionData
import com.zhjt.mogo.adas.data.bean.NodeStateInfo
@@ -133,6 +134,7 @@ import prediction.Prediction
import record_cache.RecordPanelOuterClass
import system_master.SsmInfo
import system_master.SystemStatusInfo
import kotlin.math.roundToInt
/**
* 适配ADAS 回调监听分发,这里不做业务,只做数据包装及分发处理
@@ -176,6 +178,7 @@ class MoGoAdasListenerImpl : OnAdasListener {
)
override fun onGnssInfo(header: MessagePad.Header, gnssInfo: MessagePad.GnssInfo) {
CallerChassisGnssListenerManager.invokeChassisGnssListener(gnssInfo)
LedSourceManager.updateAccelerationData(gnssInfo.acceleration)
if (gnssInfo != null) {
// 同步更新经纬度和系统时间至 AutoPilotStatusListener
CallerAutoPilotStatusListenerManager.updateAutoPilotLocAndTime(
@@ -278,6 +281,15 @@ class MoGoAdasListenerImpl : OnAdasListener {
override fun onLightSwitch(light: Chassis.LightSwitch) {
//转向灯数据
CallerChassisStatesListenerManager.invokeAutopilotLightSwitchData(light)
var type = 0
if (Chassis.LightSwitch.LIGHT_LEFT == light) {
type = 1
} else if (Chassis.LightSwitch.LIGHT_RIGHT == light) {
type = 2
} else if (Chassis.LightSwitch.LIGHT_FLASH == light) {
type = 3
}
LedSourceManager.updateTurnSignalData(type)
}
//自动驾驶状态
@@ -320,6 +332,8 @@ class MoGoAdasListenerImpl : OnAdasListener {
header: MessagePad.Header?,
trafficLights: FusionTrafficLightOuterClass.FusionTrafficLights?
) {
//此分发新开线程在invokeAutopilotPerceptionTrafficLight 前分发避免 invokeAutopilotPerceptionTrafficLight中存在耗时操作影响LED数据更新
transitionTurnToLedData(trafficLights)
if (trafficLights != null) {
CallerAutopilotIdentifyListenerManager.invokeAutopilotPerceptionTrafficLight(
trafficLights
@@ -327,6 +341,92 @@ class MoGoAdasListenerImpl : OnAdasListener {
}
}
/**
* LED屏幕数据转换
* 只能放在这 LedSourceManager LIB中并未依赖ADAS数据源
*/
private fun transitionTurnToLedData(trafficLights: FusionTrafficLightOuterClass.FusionTrafficLights?) {
var stateTurnRound = -1
var durationTurnRound = -1
var stateTurnLeft = -1
var durationTurnLeft = -1
var stateStraight = -1
var durationStraight = -1
var stateTurnRight = -1
var durationTurnRight = -1
if (trafficLights != null) {
if (trafficLights.uTurn != null) {
val uTurn = trafficLights.uTurn
stateTurnRound = transitionTurnType(uTurn.state)
if (uTurn.duration > 0) {
durationTurnRound = uTurn.duration.roundToInt()
}
}
if (trafficLights.left != null) {
val left = trafficLights.left
stateTurnLeft = transitionTurnType(left.state)
if (left.duration > 0) {
durationTurnLeft = left.duration.roundToInt()
}
}
if (trafficLights.straight != null) {
val straight = trafficLights.straight
stateStraight = transitionTurnType(straight.state)
if (straight.duration > 0) {
durationStraight = straight.duration.roundToInt()
}
}
if (trafficLights.right != null) {
val right = trafficLights.right
stateTurnRight = transitionTurnType(right.state)
if (right.duration > 0) {
durationTurnRight = right.duration.roundToInt()
}
}
//来源是自车没有倒计时 不管域控发的倒计时是什么值
if (trafficLights.source == 0) {
durationTurnRound = -1
durationTurnLeft = -1
durationStraight = -1
durationTurnRight = -1
}
}
LedSourceManager.updateTrafficLightData(
stateTurnRound,
durationTurnRound,
stateTurnLeft,
durationTurnLeft,
stateStraight,
durationStraight,
stateTurnRight,
durationTurnRight
)
}
private fun transitionTurnType(state: FusionTrafficLightOuterClass.FusionLightState?): Int {
var type = -1
state?.let {
type = when (it) {
FusionTrafficLightOuterClass.FusionLightState.STATE_RED_FUSION -> {
2
}
FusionTrafficLightOuterClass.FusionLightState.STATE_YELLOW_FUSION -> {
3
}
FusionTrafficLightOuterClass.FusionLightState.STATE_GREEN_FUSION -> {
4
}
else -> {
-1
}
}
}
return type
}
//他车轨迹预测
override fun onPredictionObstacleTrajectory(
header: MessagePad.Header?,