Package jmri

Interface Programmer

All Known Subinterfaces:
AddressedProgrammer
All Known Implementing Classes:
AbstractProgrammer, AbstractProgrammerFacade, AccessoryOpsModeProgrammerFacade, AddressedHighCvProgrammerFacade, CbusDccOpsModeProgrammer, CbusDccProgrammer, CbusProgrammer, Dcc4PcOpsModeProgrammer, DCCppOpsModeProgrammer, DCCppProgrammer, EasyDccOpsModeProgrammer, EasyDccProgrammer, EcosOpsModeProgrammer, EcosProgrammer, EliteXNetProgrammer, LI100XNetProgrammer, LnDeferProgrammer, LnOpsModeProgrammer, MrcOpsModeProgrammer, MrcProgrammer, MultiIndexProgrammerFacade, Mx1Programmer, NceOpsModeProgrammer, NceProgrammer, OffsetHighCvProgrammerFacade, OlcbProgrammer, OpsModeDelayedProgrammerFacade, ProgDebugger, QsiProgrammer, ResettingOffsetHighCvProgrammerFacade, SlotManager, SprogOpsModeProgrammer, SprogProgrammer, SRCPProgrammer, TamsOpsModeProgrammer, TamsProgrammer, TwoIndexTcsProgrammerFacade, UhlenbrockSlotManager, VerifyWriteProgrammerFacade, XNetOpsModeProgrammer, XNetProgrammer, Z21XNetOpsModeProgrammer, Z21XNetProgrammer

public interface Programmer
Provide access to the hardware DCC decoder programming capability.

Programmers come in multiple types:

  • Global, previously "Service Mode" or on a programming track
  • Addressed, previously "Ops Mode" also known as "programming on the main"
Different equipment may also require different programmers:
  • DCC CV programming, on service mode track or on the main
  • CBUS Node Variable programmers
  • LocoNet System Variable programmers
  • LocoNet Op Switch programmers
  • etc
Depending on which type you have, only certain modes can be set. Valid modes are specified by the class static constants.

You get a Programmer object from a GlobalProgrammerManager or an AddressedProgrammerManager, which in turn can be located from the InstanceManager.

Starting in JMRI 3.5.5, the CV addresses are Strings for generality. The methods that use ints for CV addresses will later be deprecated.


This file is part of JMRI.

JMRI is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation. See the "COPYING" file for a copy of this license.

JMRI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

See Also:
GlobalProgrammerManager, AddressedProgrammerManager
  • Method Details

    • writeCV

      void writeCV​(String CV, int val, ProgListener p) throws ProgrammerException
      Perform a CV write in the system-specific manner, and using the specified programming mode.

      Handles a general address space through a String address. Each programmer defines the acceptable formats.

      Note that this returns before the write is complete; you have to provide a ProgListener to hear about completion. For simplicity, expect the return to be on the GUI thread.

      Exceptions will only be thrown at the start, not during the actual programming sequence. A typical exception would be due to an invalid mode (though that should be prevented earlier)

      Parameters:
      CV - the CV to write
      val - the value to write
      p - the listener that will be notified of the write
      Throws:
      ProgrammerException - if unable to communicate
    • readCV

      Perform a CV read in the system-specific manner, and using the specified programming mode.

      Handles a general address space through a String address. Each programmer defines the acceptable formats.

      Note that this returns before the write is complete; you have to provide a ProgListener to hear about completion. For simplicity, expect the return to be on the GUI thread.

      Exceptions will only be thrown at the start, not during the actual programming sequence. A typical exception would be due to an invalid mode (though that should be prevented earlier)

      Parameters:
      CV - the CV to read
      p - the listener that will be notified of the read
      Throws:
      ProgrammerException - if unable to communicate
    • confirmCV

      void confirmCV​(String CV, int val, ProgListener p) throws ProgrammerException
      Confirm the value of a CV using the specified programming mode. On some systems, this is faster than a read.

      Handles a general address space through a String address. Each programmer defines the acceptable formats.

      Note that this returns before the write is complete; you have to provide a ProgListener to hear about completion. For simplicity, expect the return to be on the GUI thread.

      Exceptions will only be thrown at the start, not during the actual programming sequence. A typical exception would be due to an invalid mode (though that should be prevented earlier)

      Parameters:
      CV - the CV to confirm
      val - the value to confirm
      p - the listener that will be notified of the confirmation
      Throws:
      ProgrammerException - if unable to communicate
    • getSupportedModes

      Get the list of ProgrammingMode supported by this Programmer. If the order is significant, earlier modes are better.
      Returns:
      the list of supported modes or an empty list
    • setMode

      Set the programmer to a particular mode.

      Mode is a bound parameter; mode changes fire listeners.

      Only modes returned by getSupportedModes() are supported. If an invalid mode is requested, the active mode is unchanged.

      Parameters:
      p - a valid node returned by getSupportedModes() or null; null is ignored if getSupportedModes() is not empty
    • getMode

      Get the current programming mode
      Returns:
      the current mode or null if none is defined and no default mode is defined
    • getCanRead

      boolean getCanRead()
      Checks the general read capability, regardless of mode
      Returns:
      true if the programmer is capable of reading; false otherwise
    • getCanRead

      boolean getCanRead​(String addr)
      Checks the general read capability, regardless of mode, for a specific address
      Parameters:
      addr - the address to read
      Returns:
      true if the address can be read; false otherwise
    • getCanWrite

      boolean getCanWrite()
      Checks the general write capability, regardless of mode
      Returns:
      true if the programmer is capable of writing; false otherwise
    • getCanWrite

      boolean getCanWrite​(String addr)
      Checks the general write capability, regardless of mode, for a specific address
      Parameters:
      addr - the address to write to
      Returns:
      true if the address can be written to; false otherwise
    • getWriteConfirmMode

      Learn about whether the programmer does any kind of verification of write operations
      Parameters:
      addr - A CV address to check (in case this varies with CV range) or null for any
      Returns:
      The confirmation behavior that can be counted on (might be better in some cases)
    • notifyProgListenerEnd

      default void notifyProgListenerEnd​(ProgListener p, int value, int status)
      wrapper to call ProgListener.programmingOpReply(int, int) that verifies the specified progListener is not null.
      Parameters:
      p - listener to notify
      value - result value
      status - code from jmri.ProgListener
    • addPropertyChangeListener

    • removePropertyChangeListener

    • decodeErrorCode