X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Fsimplephysics.cpp;fp=source%2Flibmarklin%2Fsimplephysics.cpp;h=3bcbd5774cf29f634be6d192213a9d53eb9634d4;hb=77f8c0e033b9b5e7085de5d22a62128a996a5b2a;hp=284e5271b6ae9a06448857a663dbab146e2e2c73;hpb=39d3db437ae419bf8195d33422d5ee38962175aa;p=r2c2.git diff --git a/source/libmarklin/simplephysics.cpp b/source/libmarklin/simplephysics.cpp index 284e527..3bcbd57 100644 --- a/source/libmarklin/simplephysics.cpp +++ b/source/libmarklin/simplephysics.cpp @@ -15,7 +15,8 @@ using namespace Msp; namespace Marklin { SimplePhysics::SimplePhysics(): - target_speed(TrainControl::continuous("speed", -1000, 1000)), + target_speed(TrainControl::continuous("speed", 0, 1000)), + reverse(TrainControl::binary("reverse")), accel(0.07), speed(0) { @@ -27,7 +28,14 @@ void SimplePhysics::set_control(const string &name, float v) if(name=="speed") { target_speed.set(v); - signal_control_changed.emit(name, target_speed.value); + signal_control_changed.emit(target_speed); + } + else if(name=="reverse") + { + if(target_speed.value || speed) + throw InvalidState("Must be stopped to change reverse"); + reverse.set(v); + signal_control_changed.emit(reverse); } } @@ -35,6 +43,8 @@ const TrainControl &SimplePhysics::get_control(const string &name) const { if(name=="speed") return target_speed; + else if(name=="reverse") + return reverse; else throw KeyError("Unknown control", name); }