X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Fdummy.cpp;h=da6c5c97cb630874db1889afcbd0476365016b7f;hb=975ea87cc7be179618b06291cb2506a2523cad1f;hp=1a7dd365ca2a2a2598425531e684ae0803fb7854;hpb=651698847d5293cfb15b6fb23a394701388c0151;p=r2c2.git diff --git a/source/libmarklin/dummy.cpp b/source/libmarklin/dummy.cpp index 1a7dd36..da6c5c9 100644 --- a/source/libmarklin/dummy.cpp +++ b/source/libmarklin/dummy.cpp @@ -21,6 +21,18 @@ void Dummy::set_power(bool p) signal_power.emit(power); } +const char *Dummy::enumerate_protocols(unsigned i) const +{ + if(i==0) + return "dummy"; + return 0; +} + +unsigned Dummy::get_protocol_speed_steps(const string &) const +{ + return 0; +} + void Dummy::add_turnout(unsigned addr) { turnouts[addr]; @@ -28,8 +40,11 @@ void Dummy::add_turnout(unsigned addr) void Dummy::set_turnout(unsigned addr, bool state) { - turnouts[addr] = state; - signal_turnout.emit(addr, state); + if(turnouts[addr]!=state) + { + turnouts[addr] = state; + signal_turnout.emit(addr, state); + } } bool Dummy::get_turnout(unsigned addr) const @@ -40,4 +55,40 @@ bool Dummy::get_turnout(unsigned addr) const return false; } +void Dummy::set_loco_speed(unsigned addr, unsigned speed) +{ + LocoState &loco = locos[addr]; + loco.speed = speed; + signal_loco_speed.emit(addr, speed, loco.reverse); +} + +void Dummy::set_loco_reverse(unsigned addr, bool rev) +{ + LocoState &loco = locos[addr]; + loco.reverse = rev; + signal_loco_speed.emit(addr, loco.speed, rev); +} + +void Dummy::set_loco_function(unsigned addr, unsigned func, bool state) +{ + signal_loco_function.emit(addr, func, state); +} + +void Dummy::set_sensor(unsigned addr, bool state) +{ + if(sensors[addr]!=state) + { + sensors[addr] = state; + signal_sensor.emit(addr, state); + } +} + +bool Dummy::get_sensor(unsigned addr) const +{ + map::const_iterator i = sensors.find(addr); + if(i!=sensors.end()) + return i->second; + return false; +} + } // namespace Marklin