001package jmri;
002
003/**
004 * Provide access to the hardware DCC decoder programming capability.
005 * <p>
006 * Programmers come in multiple types:
007 * <ul>
008 * <li>Global, previously "Service Mode" or on a programming track
009 * <li>Addressed, previously "Ops Mode" also known as "programming on the main"
010 * </ul>
011 * Different equipment may also require different programmers:
012 * <ul>
013 * <li>DCC CV programming, on service mode track or on the main
014 * <li>CBUS Node Variable programmers
015 * <li>LocoNet System Variable programmers
016 * <li>LocoNet Op Switch programmers
017 * <li>etc
018 * </ul>
019 * Depending on which type you have, only certain modes can be set. Valid modes
020 * are specified by the class static constants.
021 * <p>
022 * You get a Programmer object from an {@link AddressedProgrammerManager}, which
023 * in turn can be located from the {@link InstanceManager}.
024 * <p>
025 * Starting in JMRI 3.5.5, the CV addresses are Strings for generality. The
026 * methods that use ints for CV addresses will later be deprecated.
027 * <hr>
028 * This file is part of JMRI.
029 * <p>
030 * JMRI is free software; you can redistribute it and/or modify it under the
031 * terms of version 2 of the GNU General Public License as published by the Free
032 * Software Foundation. See the "COPYING" file for a copy of this license.
033 * <p>
034 * JMRI is distributed in the hope that it will be useful, but WITHOUT ANY
035 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
036 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
037 *
038 * @see jmri.AddressedProgrammerManager
039 * @see jmri.Programmer
040 * @author Bob Jacobsen Copyright (C) 2001, 2008, 2013, 2014
041 */
042public interface AddressedProgrammer extends Programmer {
043
044    boolean getLongAddress();
045
046    int getAddressNumber();
047
048    String getAddress();
049}