001package jmri.jmrix.tmcc;
002
003import jmri.AddressedProgrammer;
004import jmri.Programmer;
005import jmri.managers.DefaultProgrammerManager;
006import jmri.ProgrammingMode;
007
008/**
009 * Extend DefaultProgrammerManager to provide ops mode programmers for TMCC
010 * systems.
011 *
012 * From EasyDccProgrammerManager
013 *
014 * @see jmri.managers.DefaultProgrammerManager
015 * @author Bob Jacobsen Copyright (C) 2002, 2025
016 * with edits/additions by
017 * @author Timothy Jump Copyright (C) 2025
018 */
019public class TmccProgrammerManager extends DefaultProgrammerManager {
020
021    public TmccProgrammerManager(Programmer serviceModeProgrammer, TmccSystemConnectionMemo memo) {
022        super(serviceModeProgrammer, memo);
023        _memo = memo;
024    }
025
026    TmccSystemConnectionMemo _memo;
027
028    static final ProgrammingMode TMCCMODE1_ENGID = new ProgrammingMode("TMCCMODE1_ENGID", Bundle.getMessage("TMCCMODE1_ENGID"));
029    static final ProgrammingMode TMCCMODE2_ENGID = new ProgrammingMode("TMCCMODE2_ENGID", Bundle.getMessage("TMCCMODE2_ENGID"));
030    
031    static final ProgrammingMode TMCCMODE1_SWID = new ProgrammingMode("TMCCMODE1_SWID", Bundle.getMessage("TMCCMODE1_SWID"));
032    static final ProgrammingMode TMCCMODE1_ACCID = new ProgrammingMode("TMCCMODE1_ACCID", Bundle.getMessage("TMCCMODE1_ACCID"));
033
034    static final ProgrammingMode TMCCMODE1_ENGFEATURE = new ProgrammingMode("TMCCMODE1_ENGFEATURE", Bundle.getMessage("TMCCMODE1_ENGFEATURE"));
035    static final ProgrammingMode TMCCMODE2_ENGFEATURE = new ProgrammingMode("TMCCMODE2_ENGFEATURE", Bundle.getMessage("TMCCMODE2_ENGFEATURE"));
036
037    /**
038     * For Implementing TMCCOpsModeProgrammer
039     *
040     * @return always false until Ops Mode implemented
041     */
042    @Override
043    public boolean isAddressedModePossible() {
044        return true;
045    }
046
047    @Override
048    protected AddressedProgrammer getConcreteAddressedProgrammer(boolean pLongAddress, int pAddress) {
049        return new TmccOpsModeProgrammer(pAddress, pLongAddress, _memo);
050    }
051
052    @Override
053    protected AddressedProgrammer reserveConcreteAddressedProgrammer(boolean pLongAddress, int pAddress) {
054        return null;
055    }
056
057
058}