X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fcentralstation.cpp;h=2138e10702ee27497e70a641edc8fbd12d9d20ab;hb=26a8dbeae14c685c6aef1aad3aa75c6f1a75e458;hp=82a0dfdb16878ae308f0b18d5ea6fd52a67a78e4;hpb=64d23de66c33d0f77454c3db2e40cccc18f7851b;p=r2c2.git diff --git a/source/libr2c2/centralstation.cpp b/source/libr2c2/centralstation.cpp index 82a0dfd..2138e10 100644 --- a/source/libr2c2/centralstation.cpp +++ b/source/libr2c2/centralstation.cpp @@ -111,6 +111,13 @@ void CentralStation::add_loco(unsigned addr, const string &proto_name, const Veh command(format("request(%d, view, control, force)", id)); } +void CentralStation::remove_loco(unsigned addr) +{ + unsigned id = map_address(locos, loco_addr, addr); + if(id) + command(format("release(%d, view, control)", id)); +} + void CentralStation::set_loco_speed(unsigned addr, unsigned speed) { if(speed && halted) @@ -175,6 +182,11 @@ void CentralStation::add_turnout(unsigned addr, const TrackType &type) turnout.bits = type.get_state_bits(); } +void CentralStation::remove_turnout(unsigned addr) +{ + remove_accessory(addr); +} + void CentralStation::set_turnout(unsigned addr, unsigned state) { set_accessory_state(addr, MagnetAccessory::TURNOUT, state); @@ -190,6 +202,11 @@ void CentralStation::add_signal(unsigned addr, const SignalType &) add_accessory(addr, MagnetAccessory::SIGNAL, MagnetAccessory::SEMAPHORE_HOME); } +void CentralStation::remove_signal(unsigned addr) +{ + remove_accessory(addr); +} + void CentralStation::set_signal(unsigned addr, unsigned state) { set_accessory_state(addr, MagnetAccessory::SIGNAL, state); @@ -230,6 +247,13 @@ CentralStation::MagnetAccessory &CentralStation::add_accessory(unsigned addr, Ma } } +void CentralStation::remove_accessory(unsigned addr) +{ + unsigned id = map_address(accessories, accessory_addr, addr); + if(id) + command(format("release(%d, view, control)", id)); +} + void CentralStation::set_accessory_state(unsigned addr, MagnetAccessory::Type type, unsigned state) { unsigned id = map_address(accessories, accessory_addr, addr); @@ -285,6 +309,10 @@ void CentralStation::add_sensor(unsigned addr) } } +void CentralStation::remove_sensor(unsigned) +{ +} + bool CentralStation::get_sensor(unsigned addr) const { SensorMap::const_iterator i = sensors.find(addr);