+unsigned CentralStation::get_turnout(unsigned addr) const
+{
+ return get_accessory_state(addr, MagnetAccessory::TURNOUT);
+}
+
+unsigned CentralStation::add_signal(unsigned addr, const SignalType &)
+{
+ add_accessory(addr, MagnetAccessory::SIGNAL, MagnetAccessory::SEMAPHORE_HOME);
+ return addr;
+}
+
+void CentralStation::remove_signal(unsigned addr)
+{
+ remove_accessory(addr);
+}
+
+void CentralStation::set_signal(unsigned addr, unsigned state)
+{
+ set_accessory_state(addr, MagnetAccessory::SIGNAL, state);
+}
+
+unsigned CentralStation::get_signal(unsigned addr) const
+{
+ return get_accessory_state(addr, MagnetAccessory::SIGNAL);
+}
+
+CentralStation::MagnetAccessory &CentralStation::add_accessory(unsigned addr, MagnetAccessory::Type type, MagnetAccessory::Symbol symbol)
+{
+ unsigned id = map_address(accessories, accessory_addr, addr);