diff --git a/GW/src/System_Layer/Drive_Mode.c b/GW/src/System_Layer/Drive_Mode.c index e653e7aa..5902fb7f 100644 --- a/GW/src/System_Layer/Drive_Mode.c +++ b/GW/src/System_Layer/Drive_Mode.c @@ -147,18 +147,24 @@ void CheckDriveMode(void) else { bool isRCRequest = (GV_RC_Drive_Mode == 1); - bool isACURequest = (GV_ACU_Drive_mode == 1 || GV_RC_ACU_Drive_Mode == 1); + bool isACURequest = (GV_ACU_Drive_mode == 1 && GV_RC_ACU_Drive_Mode == 1); if(isRCRequest) // RC - GV_VCU_Drive_Mode = DRIVE_MODE_RC; + { + if (GV_VCU_Drive_Mode == DRIVE_MODE_DEFAULT) + GV_VCU_Drive_Mode = DRIVE_MODE_RC; + } else if(isACURequest) { - ACU_Arc_check(); + if(GV_VCU_Drive_Mode == DRIVE_MODE_DEFAULT) + { + ACU_Arc_check(); + bool isACUFault = (GV_ACU_ECU_Fault_Flag == 1 || GV_ACU_ECU_Fault_Flag1 == 1 || GV_ACU_ECU_Fault_Flag2 == 1 || GV_ACU_ECU_Fault_Flag3 == 1); - bool isACUFault = (GV_ACU_ECU_Fault_Flag == 1 || GV_ACU_ECU_Fault_Flag1 == 1 || GV_ACU_ECU_Fault_Flag2 == 1 || GV_ACU_ECU_Fault_Flag3 == 1); + if(!isACUFault) + GV_VCU_Drive_Mode = DRIVE_MODE_ACU; + } - if(!isACUFault) - GV_VCU_Drive_Mode = DRIVE_MODE_ACU; } else GV_VCU_Drive_Mode = DRIVE_MODE_DEFAULT;