[670][data-center] 新增接管状态回调
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user