16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-18 01:59:19 +02:00

experimental et42 uart dynamic brake fix

This commit is contained in:
milek7
2018-10-26 22:51:46 +02:00
parent 72cd59f8d8
commit 19f1f62e93
4 changed files with 14 additions and 5 deletions

View File

@@ -1289,7 +1289,7 @@ public:
/*! pomocniczy nastawnik:*/
bool IncScndCtrl(int CtrlSpeed);
bool DecScndCtrl(int CtrlSpeed);
int GetVirtualScndPos();
bool AddPulseForce(int Multipler);/*dla drezyny*/

View File

@@ -2064,6 +2064,16 @@ bool TMoverParameters::DecScndCtrl(int CtrlSpeed)
return OK;
}
int TMoverParameters::GetVirtualScndPos()
{
if (TrainType == dt_ET42)
{
if (DynamicBrakeFlag && !ScndCtrlPos)
return -1;
}
return ScndCtrlPos;
}
// *************************************************************************************************
// Q: 20160710
// załączenie rozrządu

View File

@@ -898,14 +898,13 @@ void TTrain::OnCommand_secondcontrollerdecreasefast( TTrain *Train, command_data
}
void TTrain::OnCommand_secondcontrollerset( TTrain *Train, command_data const &Command ) {
auto const targetposition { std::min<int>( Command.param1, Train->mvControlled->ScndCtrlPosNo ) };
while( ( targetposition < Train->mvControlled->ScndCtrlPos )
while( ( targetposition < Train->mvControlled->GetVirtualScndPos() )
&& ( true == Train->mvControlled->DecScndCtrl( 1 ) ) ) {
// all work is done in the header
;
}
while( ( targetposition > Train->mvControlled->ScndCtrlPos )
while( ( targetposition > Train->mvControlled->GetVirtualScndPos() )
&& ( true == Train->mvControlled->IncScndCtrl( 1 ) ) ) {
// all work is done in the header
;

View File

@@ -197,7 +197,7 @@ void uart_input::poll()
// second controller
relay.post(
user_command::secondcontrollerset,
buffer[ 7 ],
static_cast<int8_t>(buffer[ 7 ]),
0,
GLFW_PRESS,
// TODO: pass correct entity id once the missing systems are in place