Class BiDiBProgrammer

All Implemented Interfaces:
PropertyChangeFirer, PropertyChangeProvider, Disposable, Programmer

public class BiDiBProgrammer extends AbstractProgrammer
Convert the jmri.Programmer interface into BiDiB.

This has two states: NOTPROGRAMMING, and COMMANDSENT. The transitions to and from programming mode are now handled in the TrafficController code.

  • Field Details

  • Constructor Details

  • Method Details

    • getSupportedModes

      Get the list of ProgrammingMode supported by this Programmer. If the order is significant, earlier modes are better. BiDiB programming modes available depend on settings
      Specified by:
      getSupportedModes in interface Programmer
      Specified by:
      getSupportedModes in class AbstractProgrammer
      Returns:
      the list of supported modes or an empty list
    • getCanWrite

      public boolean getCanWrite(String cv)
      Checks the general write capability, regardless of mode, for a specific address Checks using the current default programming mode. The default implementation does not check for cv > 1024 - not neccessary? We do it here anywhere
      Specified by:
      getCanWrite in interface Programmer
      Overrides:
      getCanWrite in class AbstractProgrammer
      Parameters:
      cv - 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 By default, say that no verification is done.
      Specified by:
      getWriteConfirmMode in interface Programmer
      Overrides:
      getWriteConfirmMode in class AbstractProgrammer
      Parameters:
      addr - A CV address to check (in case this varies with CV range) or null for any
      Returns:
      Always WriteConfirmMode.NotVerified
    • writeCV

      public void writeCV(String CVname, 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)

      Specified by:
      writeCV in interface Programmer
      Specified by:
      writeCV in class AbstractProgrammer
      Parameters:
      CVname - 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
    • confirmCV

      public 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)

      Specified by:
      confirmCV in interface Programmer
      Specified by:
      confirmCV in class AbstractProgrammer
      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
    • readCV

      public void readCV(String CVname, ProgListener p) throws ProgrammerException
      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)

      Specified by:
      readCV in interface Programmer
      Specified by:
      readCV in class AbstractProgrammer
      Parameters:
      CVname - the CV to read
      p - the listener that will be notified of the read
      Throws:
      ProgrammerException - if unable to communicate
    • useProgrammer

      protected void useProgrammer(ProgListener p) throws ProgrammerException
      Throws:
      ProgrammerException
    • timeout

      protected void timeout()
      Internal routine to handle a timeout, should be synchronized! Internal routine to handle a timeout
      Specified by:
      timeout in class AbstractProgrammer
    • cleanup

      void cleanup()
    • notifyProgListenerEnd

      protected void notifyProgListenerEnd(int value, int status)