Interface SensorManager
- All Superinterfaces:
Manager<Sensor>
,PropertyChangeProvider
,ProvidingManager<Sensor>
,SilenceablePropertyChangeProvider
,VetoableChangeProvider
- All Known Implementing Classes:
AbstractSensorManager
,AcelaSensorManager
,CbusSensorManager
,ConcentratorSensorManager
,Dcc4PcSensorManager
,DCCppSensorManager
,EcosSensorManager
,InternalSensorManager
,IpocsSensorManager
,JMRIClientSensorManager
,LnSensorManager
,LnSensorManager
,MarklinSensorManager
,MqttSensorManager
,NceSensorManager
,OlcbSensorManager
,ProxySensorManager
,RaspberryPiSensorManager
,RfidSensorManager
,RpsSensorManager
,SerialSensorManager
,SerialSensorManager
,SerialSensorManager
,SerialSensorManager
,SerialSensorManager
,SerialSensorManager
,SpecificSensorManager
,SpecificSensorManager
,SpecificSensorManager
,SpecificSensorManager
,SRCPSensorManager
,StandaloneSensorManager
,TamsSensorManager
,XBeeSensorManager
,XNetSensorManager
,Z21SensorManager
public interface SensorManager extends ProvidingManager<Sensor>
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.
-
Nested Class Summary
Nested classes/interfaces inherited from interface jmri.Manager
Manager.ManagerDataEvent<E extends NamedBean>, Manager.ManagerDataListener<E extends NamedBean>, Manager.NameValidity
-
Field Summary
Fields inherited from interface jmri.Manager
ANALOGIOS, AUDIO, BLOCKBOSS, BLOCKS, CONDITIONALS, CTCDATA, deprecatedManagerLogger, ENTRYEXIT, IDTAGS, LAYOUTBLOCKS, LIGHTS, LOGIXNG_ANALOG_ACTIONS, LOGIXNG_ANALOG_EXPRESSIONS, LOGIXNG_CONDITIONALNGS, LOGIXNG_DIGITAL_ACTIONS, LOGIXNG_DIGITAL_BOOLEAN_ACTIONS, LOGIXNG_DIGITAL_EXPRESSIONS, LOGIXNG_STRING_ACTIONS, LOGIXNG_STRING_EXPRESSIONS, LOGIXNG_TABLES, LOGIXNGS, LOGIXS, MEMORIES, METERFRAMES, METERS, OBLOCKS, PANELFILES, REPORTERS, ROUTES, SECTIONS, SENSORGROUPS, SENSORS, SIGNALGROUPS, SIGNALHEADS, SIGNALMASTLOGICS, SIGNALMASTS, STRINGIOS, TIMEBASE, TRANSITS, TURNOUTS, WARRANTS
-
Method Summary
Modifier and Type Method Description boolean
allowMultipleAdditions(String systemName)
Determines if it is possible to add a range of sensors in numerical order.String
createSystemName(String curAddress, String prefix)
Get a system name for a given hardware address and system prefix.void
dispose()
Free resources when no longer used.Sensor
getBySystemName(String name)
Get an existing Sensor or return null if it doesn't exist.Sensor
getByUserName(String name)
Get an existing Sensor or return null if it doesn't exist.long
getDefaultSensorDebounceGoingActive()
long
getDefaultSensorDebounceGoingInActive()
String
getEntryToolTip()
Provide a manager-specific tooltip for the Add new item beantable pane.String
getNextValidAddress(String curAddress, String prefix)
Deprecated.since 4.21.3; use #getNextValidAddress(String, String, boolean) instead.String
getNextValidAddress(String curAddress, String prefix, boolean ignoreInitialExisting)
Get the Next valid Sensor address.Sensor
getSensor(String name)
Get an existing Sensor or return null if it doesn't exist.boolean
isPullResistanceConfigurable()
Do the sensor objects provided by this manager support configuring an internal pullup or pull down resistor?Sensor
newSensor(String systemName, String userName)
Return a Sensor with the specified system and user names.default Sensor
provide(String name)
Get an existing instance via user name, then system name; if no matching instance is found, create a new NameBean from the system name.Sensor
provideSensor(String name)
Get the Sensor with the user name, then system name if needed; if that fails, create a new Sensor.void
setDefaultSensorDebounceGoingActive(long timer)
void
setDefaultSensorDebounceGoingInActive(long timer)
void
updateAll()
Requests status of all layout sensors under this Sensor Manager.Methods inherited from interface jmri.Manager
addDataListener, deleteBean, deregister, getBeanBySystemName, getBeanByUserName, getBeanTypeHandled, getBeanTypeHandled, getKnownBeanProperties, getMemo, getNamedBean, getNamedBeanClass, getNamedBeanList, getNamedBeanSet, getObjectCount, getSubSystemNamePrefix, getSystemNameList, getSystemNamePrefix, getSystemPrefix, getXMLOrder, isValidSystemNameFormat, makeSystemName, makeSystemName, makeSystemName, register, removeDataListener, setDataListenerMute, setPropertyChangesMuted, typeLetter, validateBadCharsInSystemNameFormat, validateIntegerSystemNameFormat, validateNmraAccessorySystemNameFormat, validateSystemNameFormat, validateSystemNameFormat, validateSystemNameFormatOnlyNumeric, validateSystemNamePrefix, validateTrimmedMin1NumberSystemNameFormat, validateTrimmedSystemNameFormat, validateUppercaseTrimmedSystemNameFormat, validSystemNameFormat
Methods inherited from interface jmri.beans.PropertyChangeProvider
addPropertyChangeListener, addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
Methods inherited from interface jmri.beans.SilenceablePropertyChangeProvider
setPropertyChangesSilenced
Methods inherited from interface jmri.beans.VetoableChangeProvider
addVetoableChangeListener, addVetoableChangeListener, getVetoableChangeListeners, getVetoableChangeListeners, removeVetoableChangeListener, removeVetoableChangeListener
-
Method Details
-
provideSensor
Get the Sensor with the user name, then system name if needed; if that fails, create a new Sensor. If the name is a valid system name, it will be used for the new Sensor. Otherwise, theManager.makeSystemName(java.lang.String)
method will attempt to turn it into a valid system name.This provides the same function as
ProvidingManager.provide(java.lang.String)
which has a more generic form.- Parameters:
name
- User name, system name, or address which can be promoted to system name- Returns:
- Never null
- Throws:
IllegalArgumentException
- if Sensor doesn't already exist and the manager cannot create the Sensor due to an illegal name or name that can't be parsed.
-
provide
Description copied from interface:ProvidingManager
Get an existing instance via user name, then system name; if no matching instance is found, create a new NameBean from the system name.If the name is a valid system name, it will be used for the new NamedBean. Otherwise, the
Manager.makeSystemName(java.lang.String)
method will attempt to turn it into a valid system name which the manager will attempt to use. If that fails, an exception is thrown.This is similar to the specific methods found in certain type-specific managers:
TurnoutManager.provideTurnout(java.lang.String)
,provideSensor(java.lang.String)
, et al. Those might be more mnemonic; this one is more generic. Neither is preferred nor deprecated; use your choice.- Specified by:
provide
in interfaceProvidingManager<Sensor>
- Parameters:
name
- User name, system name, or address which can be promoted to system name- Returns:
- Never null
- Throws:
IllegalArgumentException
- if NamedBean doesn't already exist and the manager cannot create it due to an illegal name or name that can't be parsed.
-
getSensor
Get an existing Sensor or return null if it doesn't exist. Locates via user name, then system name if needed.- Parameters:
name
- User name or system name to match- Returns:
- null if no match found
-
dispose
void dispose()Description copied from interface:Manager
Free resources when no longer used. Specifically, remove all references to and from this object, so it can be garbage-collected. -
newSensor
@Nonnull Sensor newSensor(@Nonnull String systemName, @CheckForNull String userName) throws IllegalArgumentExceptionReturn a Sensor with the specified system and user names. Note that two calls with the same arguments will get the same instance; there is only one Sensor object representing a given physical turnout and therefore only one with a specific system or user name.This will always return a valid object reference; a new object will be created if necessary. In that case:
- If a null reference is given for user name, no user name will be associated with the Sensor object created; a valid system name must be provided
- If both names are provided, the system name defines the hardware access of the desired sensor, and the user address is associated with it. The system name must be valid.
- Parameters:
systemName
- the desired system nameuserName
- the desired user name- Returns:
- requested Sensor object
- Throws:
IllegalArgumentException
- if cannot create the Sensor due to e.g. an illegal name or name that can't be parsed.
-
getByUserName
Get an existing Sensor or return null if it doesn't exist. Locates via user name.- Specified by:
getByUserName
in interfaceManager<Sensor>
- Parameters:
name
- User name to match- Returns:
- null if no match found
-
getBySystemName
Get an existing Sensor or return null if it doesn't exist. Locates via system name- Specified by:
getBySystemName
in interfaceManager<Sensor>
- Parameters:
name
- System name to match- Returns:
- null if no match found
-
updateAll
void updateAll()Requests status of all layout sensors under this Sensor Manager. This method may be invoked whenever the status of sensors needs to be updated from the layout, for example, when an XML configuration file is read in. Note that there is a null implementation of this method in AbstractSensorManager. This method only needs be implemented in system-specific Sensor Managers where readout of sensor status from the layout is possible. -
allowMultipleAdditions
Determines if it is possible to add a range of sensors in numerical order.- Parameters:
systemName
- the system name to check against; appears to be ignored in all implementations- Returns:
- true if possible; false otherwise
-
getNextValidAddress
@Deprecated String getNextValidAddress(@Nonnull String curAddress, @Nonnull String prefix) throws JmriExceptionDeprecated.since 4.21.3; use #getNextValidAddress(String, String, boolean) instead.Determine if the address supplied is valid and free, if not then it shall return the next free valid address up to a maximum of 10 addresses away from the initial address. Used when adding a range of Sensors.- Parameters:
curAddress
- The hardware address of the sensor we wish to addprefix
- The System Prefix used to make up the systemName check.- Returns:
- next valid address.
- Throws:
JmriException
- if problem calculating next address or next 10 are in use.
-
getNextValidAddress
@Nonnull String getNextValidAddress(@Nonnull String curAddress, @Nonnull String prefix, boolean ignoreInitialExisting) throws JmriExceptionGet the Next valid Sensor address.- Parameters:
curAddress
- the starting hardware address to get the next valid from.prefix
- system prefix, just system name, not type letter.ignoreInitialExisting
- false to return the starting address if it does not exist, else true to force an increment.- Returns:
- the next valid system name not already in use, excluding both system name prefix and type letter.
- Throws:
JmriException
- if unable to get the current / next address, or more than 10 next addresses in use.
-
createSystemName
@Nonnull String createSystemName(@Nonnull String curAddress, @Nonnull String prefix) throws JmriExceptionGet a system name for a given hardware address and system prefix.- Parameters:
curAddress
- desired hardware addressprefix
- system prefix used in system name- Returns:
- the complete sensor system name for the prefix and current address
- Throws:
JmriException
- if unable to create a system name for the given address, possibly due to invalid address format
-
getDefaultSensorDebounceGoingActive
-
getDefaultSensorDebounceGoingInActive
-
setDefaultSensorDebounceGoingActive
-
setDefaultSensorDebounceGoingInActive
-
isPullResistanceConfigurable
boolean isPullResistanceConfigurable()Do the sensor objects provided by this manager support configuring an internal pullup or pull down resistor?- Returns:
- true if pull up/pull down configuration is supported.
-
getEntryToolTip
Provide a manager-specific tooltip for the Add new item beantable pane.- Specified by:
getEntryToolTip
in interfaceManager<Sensor>
- Returns:
- the tool tip or null to disable the tool tip
-