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)
{
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);
}
}
{
if(name=="speed")
return target_speed;
+ else if(name=="reverse")
+ return reverse;
else
throw KeyError("Unknown control", name);
}