diff --git a/Driver.cpp b/Driver.cpp index 37f82fa9..6c11b641 100644 --- a/Driver.cpp +++ b/Driver.cpp @@ -3625,6 +3625,18 @@ void TController::SetTimeControllers() } } } + //6. UniversalBrakeButtons + //6.1. Checking flags for Over pressure + if (std::abs(BrakeCtrlPosition - gbh_FS)<0.5) { + UniversalBrakeButtons |= (TUniversalBrake::ub_HighPressure | TUniversalBrake::ub_Overload); + } + else { + UniversalBrakeButtons &= ~(TUniversalBrake::ub_HighPressure | TUniversalBrake::ub_Overload); + } + //6.2. Setting buttons + for (int i = 0; i < 3; i++) { + mvOccupied->UniversalBrakeButton(i, (UniversalBrakeButtons & mvOccupied->UniversalBrakeButtonFlag[i])); + } }; void TController::CheckTimeControllers() @@ -5862,6 +5874,8 @@ TController::UpdateSituation(double dt) { // napełnianie uderzeniowe if( ( mvOccupied->BrakeHandle == TBrakeHandle::FV4a ) || ( mvOccupied->BrakeHandle == TBrakeHandle::MHZ_6P ) + || (mvOccupied->BrakeHandle == TBrakeHandle::MHZ_K5P) + || (mvOccupied->BrakeHandle == TBrakeHandle::MHZ_K8P) || ( mvOccupied->BrakeHandle == TBrakeHandle::M394 ) ) { if( /*GBH mvOccupied->BrakeCtrlPos*/BrakeCtrlPosition == -2 ) { @@ -5922,6 +5936,14 @@ TController::UpdateSituation(double dt) { } } } + // unlocking main pipe + if ((AccDesired > -0.03) + && (true == mvOccupied->LockPipe)) { + UniversalBrakeButtons |= TUniversalBrake::ub_UnlockPipe; + } + else if (false == mvOccupied->LockPipe) { + UniversalBrakeButtons &= ~TUniversalBrake::ub_UnlockPipe; + } #if LOGVELOCITY WriteLog("Dist=" + FloatToStrF(ActualProximityDist, ffFixed, 7, 1) + ", VelDesired=" + FloatToStrF(VelDesired, ffFixed, 7, 1) + diff --git a/Driver.h b/Driver.h index 85177dbe..a4c3ada2 100644 --- a/Driver.h +++ b/Driver.h @@ -256,6 +256,7 @@ public: int iOverheadZero = 0; // suma bitowa jezdy bezprądowej, bity ustawiane przez pojazdy z podniesionymi pantografami int iOverheadDown = 0; // suma bitowa opuszczenia pantografów, bity ustawiane przez pojazdy z podniesionymi pantografami double BrakeCtrlPosition = 0.0; // intermediate position of main brake controller + int UniversalBrakeButtons = 0.0; // flag of which universal buttons need to be pressed int DizelPercentage = 0; // oczekiwane procenty jazdy/hamowania szynobusem int DizelPercentage_Speed = 0; // oczekiwane procenty jazdy/hamowania szynobusem w związku z osiąganiem VelDesired private: