001package jmri.jmrix.dccpp; 002 003import jmri.GlobalProgrammerManager; 004import org.slf4j.Logger; 005import org.slf4j.LoggerFactory; 006 007/** 008 * This class performs initialization for DCC-EX. It 009 * adds the appropriate Managers via the Initialization Manager. 010 * 011 * @author Paul Bender Copyright (C) 2003-2010 012 * @author Giorgio Terdina Copyright (C) 2007 013 * @author Mark Underwood Copyright (C) 2015 014 * @author Harald Barth Copyright (C) 2019 015 * 016 * Based on XNetInitializationManager by Paul Bender and Giorgio Terdina 017 */ 018public class DCCppInitializationManager { 019 020 protected DCCppSystemConnectionMemo systemMemo = null; 021 022 DCCppPredefinedMeters predefinedMeters; 023 jmri.jmrix.dccpp.swing.messages.MessagesWatcher messagesWatcher; 024 025 public DCCppInitializationManager(DCCppSystemConnectionMemo memo) { 026 027 systemMemo = memo; 028 029 log.debug("Starting DCC-EX/DCC-EX Initialization Process"); 030 031 jmri.InstanceManager.setThrottleManager(systemMemo.getThrottleManager()); 032 systemMemo.setProgrammerManager(new DCCppProgrammerManager(new DCCppProgrammer(systemMemo.getDCCppTrafficController()), systemMemo)); 033 if (systemMemo.getProgrammerManager().isAddressedModePossible()) { 034 jmri.InstanceManager.store(systemMemo.getProgrammerManager(), jmri.AddressedProgrammerManager.class); 035 } 036 if (systemMemo.getProgrammerManager().isGlobalProgrammerAvailable()) { 037 jmri.InstanceManager.store(systemMemo.getProgrammerManager(), GlobalProgrammerManager.class); 038 } 039 systemMemo.setCommandStation(systemMemo.getDCCppTrafficController().getCommandStation()); 040 jmri.InstanceManager.store(systemMemo.getCommandStation(), jmri.CommandStation.class); 041 systemMemo.setTurnoutManager(new jmri.jmrix.dccpp.DCCppTurnoutManager(systemMemo)); 042 jmri.InstanceManager.setTurnoutManager(systemMemo.getTurnoutManager()); 043 systemMemo.setLightManager(new jmri.jmrix.dccpp.DCCppLightManager(systemMemo)); 044 jmri.InstanceManager.setLightManager(systemMemo.getLightManager()); 045 systemMemo.setSensorManager(new jmri.jmrix.dccpp.DCCppSensorManager(systemMemo)); 046 jmri.InstanceManager.setSensorManager(systemMemo.getSensorManager()); 047 jmri.InstanceManager.store(systemMemo.getPowerManager(), jmri.PowerManager.class); 048 log.debug("PowerManager: {}", jmri.InstanceManager.getDefault(jmri.PowerManager.class)); 049 systemMemo.setClockControl(new DCCppClockControl(systemMemo)); 050 predefinedMeters = new DCCppPredefinedMeters(systemMemo); 051 messagesWatcher = new jmri.jmrix.dccpp.swing.messages.MessagesWatcher(systemMemo); 052 053 systemMemo.register(); 054 055 log.info("DCC-EX/DCC-EX Initialization Complete"); 056 } 057 058 private static final Logger log = LoggerFactory.getLogger(DCCppInitializationManager.class); 059 060}