[670][data-center] 新增接管状态回调

This commit is contained in:
xinfengkun
2024-09-24 16:27:40 +08:00
parent 090641f250
commit 87e80dd847
3 changed files with 133 additions and 0 deletions

View File

@@ -0,0 +1,116 @@
package com.mogo.eagle.core.function.call.autopilot
import chassis.Chassis
import chassis.ChassisStatesOuterClass
import chassis.VehicleStateOuterClass
import com.mogo.eagle.core.function.api.autopilot.IMoGoTakeoverListener
import com.mogo.eagle.core.function.call.base.CallerBase
/**
* 接管状态
*/
object CallerTakeoverListenerManager : CallerBase<IMoGoTakeoverListener>() {
private fun invokeTakeoverState(state: Int) {
M_LISTENERS.forEach {
val listener = it.value
listener.onTakeoverState(state)
}
}
private fun calculate(
pilotMode: Chassis.PilotMode,
accelInference: Boolean,
brakeInference: Boolean,
steerInference: Boolean,
gearSwitchInference: Boolean
) {
var takeover = 0;
if (pilotMode == Chassis.PilotMode.MODE_REMOTE_DRIVE) {
takeover = 5;
} else if (accelInference) {
takeover = 1;
} else if (brakeInference) {
takeover = 2;
} else if (steerInference) {
takeover = 3;
} else if (gearSwitchInference) {
takeover = 9;
}
invokeTakeoverState(takeover)
}
fun setVehicleState(vehicleState: VehicleStateOuterClass.VehicleState?) {
if (vehicleState != null) {
calculate(
vehicleState.pilotMode,
vehicleState.accelInference,
vehicleState.brakeInference,
vehicleState.steerInference,
vehicleState.gearSwitchInference
);
} else {
invokeTakeoverState(255)
}
}
fun setChassisStates(chassisStates: ChassisStatesOuterClass.ChassisStates?) {
var pilotMode: Chassis.PilotMode? = null
var accelInference: Boolean? = null
var brakeInference: Boolean? = null
var steerInference: Boolean? = null
var gearSwitchInference: Boolean? = null
if (chassisStates != null) {
if (chassisStates.hasChassisAutopilotAssistanceInformation()) {
if (chassisStates.chassisAutopilotAssistanceInformation != null) {
if (chassisStates.chassisAutopilotAssistanceInformation.hasChassisPilotModeState()) {
pilotMode =
chassisStates.chassisAutopilotAssistanceInformation.chassisPilotModeState
}
}
}
if (chassisStates.hasDrivingSystemStates()) {
if (chassisStates.drivingSystemStates != null) {
if (chassisStates.drivingSystemStates.hasAccelerationPedalInferenceState()) {
accelInference =
chassisStates.drivingSystemStates.accelerationPedalInferenceState
}
}
}
if (chassisStates.hasBrakeSystemStates()) {
if (chassisStates.brakeSystemStates != null) {
if (chassisStates.brakeSystemStates.hasBrakePedalInferenceState()) {
brakeInference =
chassisStates.brakeSystemStates.brakePedalInferenceState
}
}
}
if (chassisStates.hasSteerSystemStates()) {
if (chassisStates.steerSystemStates != null) {
if (chassisStates.steerSystemStates.hasSteeringWheelInferenceState()) {
steerInference =
chassisStates.steerSystemStates.steeringWheelInferenceState
}
}
}
if (chassisStates.hasGearSystemStates()) {
if (chassisStates.gearSystemStates != null) {
if (chassisStates.gearSystemStates.hasGearSwitchInferenceState()) {
gearSwitchInference =
chassisStates.gearSystemStates.gearSwitchInferenceState
}
}
}
}
if (pilotMode != null && accelInference != null && brakeInference != null && steerInference != null && gearSwitchInference != null) {
calculate(
pilotMode, accelInference, brakeInference, steerInference, gearSwitchInference
);
} else {
invokeTakeoverState(255)
}
}
}