]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/dummy.cpp
Interpret turnout delay as float, not unsigned
[r2c2.git] / source / libr2c2 / dummy.cpp
index cfee07417b3105b75c2eba5a1029f3056ead320a..a8efac3a1d71204f3b0d861843b482db41911f98 100644 (file)
@@ -9,7 +9,7 @@ namespace R2C2 {
 
 Dummy::Dummy(const Options &opts):
        power(true),
-       turnout_delay(opts.get("turnout_delay", 0U)*Time::sec)
+       turnout_delay(opts.get("turnout_delay", 0.0f)*Time::sec)
 { }
 
 void Dummy::set_power(bool p)
@@ -18,6 +18,18 @@ void Dummy::set_power(bool p)
        signal_power.emit(power);
 }
 
+void Dummy::halt(bool h)
+{
+       halted = h;
+       if(halted)
+       {
+               for(map<unsigned, LocoState>::iterator i=locos.begin(); i!=locos.end(); ++i)
+                       if(i->second.speed)
+                               set_loco_speed(i->first, 0);
+       }
+       signal_halt.emit(halted);
+}
+
 const char *Dummy::enumerate_protocols(unsigned i) const
 {
        if(i==0)
@@ -65,6 +77,9 @@ unsigned Dummy::get_turnout(unsigned addr) const
 
 void Dummy::set_loco_speed(unsigned addr, unsigned speed)
 {
+       if(speed && halted)
+               return;
+
        LocoState &loco = locos[addr];
        loco.speed = speed;
        signal_loco_speed.emit(addr, speed, loco.reverse);