From: ian Date: Sat, 26 Jul 2008 23:07:57 +0000 (+0000) Subject: Properly deal with MARGIN_SPEED X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=7cca51bab7410e6ceb3d4f73420770e13c1f6b15;p=trains.git Properly deal with MARGIN_SPEED --- diff --git a/hostside/speed.c b/hostside/speed.c index c2f4daa..716f7cd 100644 --- a/hostside/speed.c +++ b/hostside/speed.c @@ -101,7 +101,7 @@ int speedmanager_stopped(Train *tra) { static ErrorCode request_core(Train *tra, int step, struct timeval tnow, PredictionProblemCallback *ppc, void *ppcu) { ErrorCode ec, ec2; - double vnow, vtarg; + double vnow, vtarg, vmax; SpeedInfo try; const SpeedRange *regime; Distance oldmaxinto; @@ -119,10 +119,10 @@ static ErrorCode request_core(Train *tra, int step, struct timeval tnow, DPRINTF(speed,core, " request vnow=%f vtarg=%f\n", vnow,vtarg); - try.max_speed_estimate= MAX(vtarg,vnow); - regime= stop_info(tra,try.max_speed_estimate); - try.stopping_distance= stoppingdistance(tra,tnow, regime, - try.max_speed_estimate); + vmax= MAX(vtarg,vnow); + try.max_speed_estimate= vmax * MARGIN_SPEED; + regime= stop_info(tra,vmax); + try.stopping_distance= stoppingdistance(tra,tnow, regime, vmax); try.stopping= !step; if (!try.stopping) { @@ -146,7 +146,7 @@ static ErrorCode request_core(Train *tra, int step, struct timeval tnow, toev_stop(&tra->speed.decel); tra->speed.step= step; - tra->speed.speed= try.max_speed_estimate; + tra->speed.speed= vmax; if (vtarg <= vnow) { tra->speed.decel.duration= regime->ts;