]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/centralstation.cpp
Refer to things in the driver with abstract ids instead of addresses
[r2c2.git] / source / libr2c2 / centralstation.cpp
index 2138e10702ee27497e70a641edc8fbd12d9d20ab..124c1beed8aa14efba0fc96bc59a8ab17ca7a709 100644 (file)
@@ -88,7 +88,7 @@ unsigned CentralStation::get_protocol_speed_steps(const string &name) const
        }
 }
 
-void CentralStation::add_loco(unsigned addr, const string &proto_name, const VehicleType &type)
+unsigned CentralStation::add_loco(unsigned addr, const string &proto_name, const VehicleType &type)
 {
        Protocol proto = map_protocol(proto_name);
 
@@ -109,6 +109,8 @@ void CentralStation::add_loco(unsigned addr, const string &proto_name, const Veh
        }
        else
                command(format("request(%d, view, control, force)", id));
+
+       return addr;
 }
 
 void CentralStation::remove_loco(unsigned addr)
@@ -147,7 +149,7 @@ void CentralStation::set_loco_function(unsigned addr, unsigned func, bool state)
                command(format("set(%d, func[%d, %d])", id, func, state));
 }
 
-void CentralStation::add_turnout(unsigned addr, const TrackType &type)
+unsigned CentralStation::add_turnout(unsigned addr, const TrackType &type)
 {
        unsigned straight = type.get_paths();
        bool left = false;
@@ -180,6 +182,8 @@ void CentralStation::add_turnout(unsigned addr, const TrackType &type)
 
        MagnetAccessory &turnout = add_accessory(addr, MagnetAccessory::TURNOUT, symbol);
        turnout.bits = type.get_state_bits();
+
+       return addr;
 }
 
 void CentralStation::remove_turnout(unsigned addr)
@@ -197,9 +201,10 @@ unsigned CentralStation::get_turnout(unsigned addr) const
        return get_accessory_state(addr, MagnetAccessory::TURNOUT);
 }
 
-void CentralStation::add_signal(unsigned addr, const SignalType &)
+unsigned CentralStation::add_signal(unsigned addr, const SignalType &)
 {
        add_accessory(addr, MagnetAccessory::SIGNAL, MagnetAccessory::SEMAPHORE_HOME);
+       return addr;
 }
 
 void CentralStation::remove_signal(unsigned addr)
@@ -298,7 +303,7 @@ void CentralStation::accessory_state_changed(const MagnetAccessory &accessory) c
                signal_signal.emit(accessory.address, accessory.state);
 }
 
-void CentralStation::add_sensor(unsigned addr)
+unsigned CentralStation::add_sensor(unsigned addr)
 {
        sensors.insert(SensorMap::value_type(addr, Sensor()));
 
@@ -307,6 +312,8 @@ void CentralStation::add_sensor(unsigned addr)
                if(addr>s88.size()*16)
                        command("create(26, add[0])");
        }
+
+       return addr;
 }
 
 void CentralStation::remove_sensor(unsigned)