Class LnSensorAddress


  • public class LnSensorAddress
    extends java.lang.Object
    Utilities for handling LocoNet sensor addresses.

    There are three addressing spaces for LocoNet sensors:

    • The space used for DS54 inputs, where the least-significant-bit in the address refers to the "Aux" and "Switch" inputs. These are represented by system names of the form LSnnnA and LSnnnS respectively. nnn is then the turnout number of the DS54 channel.
    • The space used for BDL16 inputs, where the card and section numbers are part of the address. These are represented by names of the form LScccA1 through LScccA4, LScccB1 through LScccB4, and on through LScccD4. ccc is the BDL16 card number.
    • A straight-forward numeric space, represented by LSmmm. Note that this is a 1-4096 scheme, not a 0-4095.
    Some of the message formats used in this class are Copyright Digitrax, Inc. and used with permission as part of the JMRI project. That permission does not extend to uses in other software products. If you wish to use this code, algorithm or these message formats outside of JMRI, please contact Digitrax Inc for separate permission.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) int _as  
      (package private) int _high  
      (package private) int _low  
      (package private) boolean _valid  
      (package private) java.lang.String prefix  
    • Constructor Summary

      Constructors 
      Constructor Description
      LnSensorAddress​(int sw1, int sw2, java.lang.String prefix)  
      LnSensorAddress​(java.lang.String s, java.lang.String prefix)  
    • Constructor Detail

      • LnSensorAddress

        public LnSensorAddress​(int sw1,
                               int sw2,
                               java.lang.String prefix)
      • LnSensorAddress

        public LnSensorAddress​(java.lang.String s,
                               java.lang.String prefix)
    • Method Detail

      • insertAddress

        public void insertAddress​(LocoNetMessage m)
        Update a LocoNet message to have this address. It is assumed that the sensor address may be encoded into bytes 1 and 2 of the message.
        Parameters:
        m - a LocoNetmessage to be updated to contain this object's sensor address
      • matchAddress

        public boolean matchAddress​(int a1,
                                    int a2)
      • asInt

        protected int asInt()
        Returns:
        integer value of this address in 0-4095 space
      • getASBit

        public int getASBit()
        The bit representing the Aux or Sensor input
        Returns:
        0x20 for aux input, 0x00 for switch input
      • isValid

        public boolean isValid()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getNumericAddress

        public java.lang.String getNumericAddress()
        Name in the 1-4096 space
        Returns:
        LSnnn
      • getDS54Address

        public java.lang.String getDS54Address()
        Name in the DS54 space
        Returns:
        LSnnnA or LSnnnS, depending on Aux or Switch input
      • getBDL16Address

        public java.lang.String getBDL16Address()
        Name in the BDL16 space
        Returns:
        e.g. LSnnnA3, with nnn the BDL16 number, A the section number, and 3 the channel number