Class SerialAddress

java.lang.Object
jmri.jmrix.grapevine.SerialAddress

public class SerialAddress extends Object
Utility Class supporting parsing and testing of Grapevine addresses.

Multiple address formats are supported:

  • Gtnnnxxx where: G is the (multichar) system connection prefix, t is the type code: 'T' for turnouts, 'S' for sensors, 'H' for signal heads and 'L' for lights; nnn is the node address (1-127); xxx is a bit number of the input or output bit (001-999)
  • Gtnnnxxx = (node address x 1000) + bit number.
    Examples: GT1002 (node address 1, bit 2), G1S1003 (node address 1, bit 3), GL11234 (node address 11, bit234)
  • Gtnnnaxxxx where: t is the type code, 'T' for turnouts, 'S' for sensors, 'H' for signal heads and 'L' for lights; nnn is the node address of the input or output bit (1-127); xxxx is a bit number of the input or output bit (1-2048); a is a subtype-specific letter:
    • 'B' for a bit number (e.g. GT12B3 is a shorter form of GT12003)
    • 'a' is for advanced serial occupancy sensors (only valid t = S)
    • 'm' is for advanced serial motion sensors (only valid t = S)
    • 'pattern' is for parallel sensors (only valid t = S)
    • 's' is for serial occupancy sensors (only valid t = S)
    Examples: GT1B2 (node address 1, bit 2), G1S1B3 (node address 1, bit 3), G22L11B234 (node address 11, bit 234)
  • Field Details

    • turnoutRegex

      static final String turnoutRegex
      Regular expression used to parse Turnout names.

      Groups:

      • - System letter/prefix (not captured in regex)
      • 1 - Type letter
      • 2 - suffix, if of nnnAnnn form
      • 3 - node number in nnnAnnn form
      • 4 - address type in nnnAnnn form
      • 5 - bit number in nnnAnnn form
      • 6 - combined number in nnnnnn form
      See Also:
    • turnoutPattern

      static volatile Pattern turnoutPattern
    • lightRegex

      static final String lightRegex
      Regular expression used to parse Light names.

      Groups:

      • - System letter/prefix (not captured in regex)
      • 1 - Type letter
      • 2 - suffix, if of nnnAnnn form
      • 3 - node number in nnnAnnn form
      • 4 - address type in nnnAnnn form
      • 5 - bit number in nnnAnnn form
      • 6 - combined number in nnnnnn form
      See Also:
    • lightPattern

      static volatile Pattern lightPattern
    • headRegex

      static final String headRegex
      Regular expression used to parse SignalHead names.

      Groups:

      • - System letter/prefix (not captured in regex)
      • 1 - Type letter
      • 2 - suffix, if of nnnAnnn form
      • 3 - node number in nnnAnnn form
      • 4 - address type in nnnAnnn form
      • 5 - bit number in nnnAnnn form
      • 6 - combined number in nnnnnn form
      See Also:
    • headPattern

      static volatile Pattern headPattern
    • sensorRegex

      static final String sensorRegex
      Regular expression used to parse Sensor names.

      Groups:

      • - System letter/prefix (not captured in regex)
      • 1 - Type letter
      • 2 - suffix, if of nnnAnnn form
      • 3 - node number in nnnAnnn form
      • 4 - address type in nnnAnnn form
      • 5 - bit number in nnnAnnn form
      • 6 - combined number in nnnnnn form
      See Also:
    • sensorPattern

      static volatile Pattern sensorPattern
    • allRegex

      static final String allRegex
      Regular expression used to parse from any type of name.

      Groups:

      • - System letter/prefix (not captured in regex)
      • 1 - Type letter
      • 2 - suffix, if of nnnAnnn form
      • 3 - node number in nnnAnnn form
      • 4 - address type in nnnAnnn form
      • 5 - bit number in nnnAnnn form
      • 6 - combined number in nnnnnn form
      See Also:
    • allPattern

      static volatile Pattern allPattern
  • Constructor Details

  • Method Details

    • getTurnoutPattern

    • getLightPattern

    • getHeadPattern

    • getSensorPattern

    • getAllPattern

    • typeOffset

      static int typeOffset(String type)
      Parse for secondary letters.
      Parameters:
      type - Secondary letter from message
      Returns:
      offset for type letter, or -1 if none
    • getNodeFromSystemName

      Public static method to parse a system name and return the Serial Node.
      Parameters:
      systemName - system name.
      tc - system connection traffic controller.
      Returns:
      'NULL' if illegal systemName format or if the node is not found
    • getBitFromSystemName

      public static int getBitFromSystemName(String systemName, String prefix)
      Public static method to parse a system name and return the bit number. Notes: Bits are numbered from 1.
      Parameters:
      systemName - system name.
      prefix - unused.
      Returns:
      0 if an error is found
    • getNodeAddressFromSystemName

      public static int getNodeAddressFromSystemName(String systemName, String prefix)
      Public static method to parse a system name to fetch the node number.

      Note: Nodes are numbered from 1.

      Parameters:
      systemName - system name.
      prefix - unused.
      Returns:
      node number. If an error is found, returns -1
    • validateSystemNameFormat

      static String validateSystemNameFormat(String name, Manager<?> manager, Locale locale)
      Validate a system name.
      Parameters:
      name - the name to validate
      manager - the manager requesting validation
      locale - the locale for user messages
      Returns:
      the name, unchanged
      Throws:
      IllegalArgumentException - if name is not valid
      See Also:
    • validSystemNameFormat

      public static Manager.NameValidity validSystemNameFormat(@Nonnull String systemName, char type, String prefix)
      Public static method to validate system name format. Logging of handled cases no higher than WARN.
      Parameters:
      systemName - name to check
      type - expected device type letter
      prefix - system connection prefix from memo
      Returns:
      'true' if system name has a valid format, else returns 'false'
    • validSystemNameConfig

      public static boolean validSystemNameConfig(String systemName, char type, SerialTrafficController tc)
      Public static method to validate system name for configuration.
      Parameters:
      systemName - system name to validate.
      type - bean type, S, T or L.
      tc - system connection traffic controller.
      Returns:
      'true' if system name has a valid meaning in current configuration, else returns 'false'.
    • convertSystemNameToAlternate

      public static String convertSystemNameToAlternate(String systemName, String prefix)
      Public static method to convert any format system name for the alternate format (nnBnn).

      If the supplied system name does not have a valid format, or if there is no representation in the alternate naming scheme, an empty string is returned.

      Parameters:
      systemName - system name to convert.
      prefix - system prefix.
      Returns:
      alternate string.
    • normalizeSystemName

      public static String normalizeSystemName(String systemName, String prefix)
      Public static method to normalize a system name

      This routine is used to ensure that each system name is uniquely linked to one bit, by removing extra zeros inserted by the user.

      If the supplied system name does not have a valid format, an empty string is returned. Otherwise a normalized name is returned in the same format as the input name.

      Parameters:
      systemName - system name to normalize.
      prefix - system prefix.
      Returns:
      normalized string.