X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftrain.cpp;h=efe1a142cb6daefc29162f1a99bd578f55de7f9b;hb=4d33c389881ebdf0b3926343d53e7d1ece654e20;hp=9f97c33182160b9053573cf0fa40115660189199;hpb=bf0d5936a84425e851d25f9fde83a965024693e9;p=r2c2.git diff --git a/source/libmarklin/train.cpp b/source/libmarklin/train.cpp index 9f97c33..efe1a14 100644 --- a/source/libmarklin/train.cpp +++ b/source/libmarklin/train.cpp @@ -523,8 +523,11 @@ void Train::sensor_event(unsigned addr, bool state) if(pure_speed) { - RealSpeed &rs = real_speed[current_speed]; - rs.add(travel_dist/travel_time_secs, travel_time_secs); + if(current_speed) + { + RealSpeed &rs = real_speed[current_speed]; + rs.add(travel_dist/travel_time_secs, travel_time_secs); + } set_status(format("Traveling %d kmh", get_travel_speed())); } @@ -630,7 +633,7 @@ void Train::block_reserved(const Block &block, const Train *train) unsigned Train::reserve_more() { if(!active) - return; + return 0; BlockRef *last = 0; if(!rsv_blocks.empty()) @@ -834,7 +837,12 @@ unsigned Train::find_speed(float real) const if(!high) { if(!low) - return 0; + { + if(real) + return 3; + else + return 0; + } return min(static_cast(low*real/real_speed[low].speed), 14U); }