Abstract base for common code of IdentifyLoco and IdentifyDecoder, the
two classes that use a programmer to match Roster entries to what's on the
programming track.
Define common base class methods for CvValue and VariableValue classes
The ToRead parameter (boolean, unbound) is used to remember whether
this object has been read during a "read all" operation.
From the NMRA RP:
Basic Accessory Decoder Packet address for operations mode programming
10AAAAAA 0 1AAACDDD 0 1110CCVV 0 VVVVVVVV 0 DDDDDDDD
Where DDD is used to indicate the output whose CVs are being modified and C=1.
From the NMRA RP:
The format for Accessory Decoder Configuration Variable Access Instructions is:
{preamble} 0 10AAAAAA 0 0AAA11VV 0 VVVVVVVV 0 DDDDDDDD 0 EEEEEEEE 1
Where:
A = Decoder address bits
V = Desired CV address - (CV 513 = 10 00000000)
D = Data for CV
This is the old "legacy" format, newer decoders use the "Basic Accessory Decoder Packet"
From the RP:
Extended Accessory Decoder Control Packet Format
The Extended Accessory Decoder Control Packet is included for the purpose
of transmitting aspect control to signal decoders or data bytes to more
complex accessory decoders.
Utility Class supporting parsing and testing of addresses for Acela
One address format is supported:
Atxxxx
where: t is the type code, 'T' for turnouts, 'S' for sensors, and
'L' for lights
xxxx is a bit number of the input or output bit (0-1023)
examples: AT2 (bit 2), AS1003 (bit 1003),
AL134 (bit134)
Assumes a node address of 0, and a node type of NO_CARD
If this constructor is used, actual node address must be set using
setNodeAddress, and actual node type using 'setNodeType'
Method to activate the Route via Sensors and control Turnout
Sets up for Route activation based on a list of Sensors and a control Turnout
Registers to receive known state changes for output turnouts
This class holds information and options for an ActiveTrain, that is a
train that has been linked to a Transit and activated for transit around
the layout.
Add a Conditional to this Logix
Returns true if Conditional was successfully added, returns false
if the maximum number of conditionals has been exceeded.
Add a Conditional to this Logix
Returns true if Conditional was successfully added, returns false
if the maximum number of conditionals has been exceeded.
Allocates a Section to an Active Train according to the information in an AllocationRequest
If successful, returns an AllocatedSection and removes the AllocationRequest from the queue.
User interface for browsing ALM contents
This GUI works in the throttle editor space, so that values presented in the
GUI are 1 more than the values in the ALM messages.
Provide an NMRA analog control instruction
Note that the NMRA draft of Fall 2004 only defines the value
of "1" for the "function parameter", calling that the value for
"volume control".
Implementation of RPS location-finding using GPS equations
from Sam Storm van Leeuwen , ported to
Java by Norris Weimer , and
ported to JMRI/RPS by Bob Jacobsen.
Implementation of 1st algorithm for reducing Readings
This algorithm was provided by Robert Ashenfelter
based in part on the work of Ralph Bucher in his paper
"Exact Solution for Three Dimensional Hyperbolic Positioning Algorithm and
Synthesizable VHDL Model for Hardware Implementation".
Implementation of version 1.1 algorithm for reducing Readings
This algorithm was provided by Robert Ashenfelter
based in part on the work of Ralph Bucher in his paper
"Exact Solution for Three Dimensional Hyperbolic Positioning Algorithm and
Synthesizable VHDL Model for Hardware Implementation".
Implementation of 2nd algorithm for reducing Readings
This algorithm was provided by Robert Ashenfelter
based in part on the work of Ralph Bucher in his paper
"Exact Solution for Three Dimensional Hyperbolic Positioning Algorithm and
Synthesizable VHDL Model for Hardware Implementation".
Implementation of 2.1th algorithm for reducing Readings
This algorithm was provided by Robert Ashenfelter
based in part on the work of Ralph Bucher in his paper
"Exact Solution for Three Dimensional Hyperbolic Positioning Algorithm and
Synthesizable VHDL Model for Hardware Implementation".
Implementation of 2.1th algorithm for reducing Readings
This algorithm was provided by Robert Ashenfelter
based in part on the work of Ralph Bucher in his paper
"Exact Solution for Three Dimensional Hyperbolic Positioning Algorithm and
Synthesizable VHDL Model for Hardware Implementation".
An AudioFactory is responsible for the initialisation of specific audio
system implementations, creation of audio system specific Audio objects and
any necessary clean-up operations required by a specific audio system
implementation.
Calculates the panning of this Source between fully left (-1.0f)
and fully right (1.0f)
Calculated internally from the relative positions of this source and
the listener.
Describes a specific method of calculating a measurement
Information that the algorithm needs, e.g. received positions, etc,
should be provided to the actual object via ctor or other initialization.
User interface for sending CAN frames to exercise the system
When sending a sequence of operations:
Send the next message and start a timer
When the timer trips, repeat if buttons still down.
Represents a CatalogTree, a tree displaying a taxonomy - e.g. a file system directory,
or an index of references or a table of contents built according to the user's
taxonomy.
the SET LOCOIO ADDRESS button was pressed
Since this does a broadcast program-all to every
LocoIO board on the LocoNet, it needs to be used
with caution.
Checks that exit Signal Heads are in place for all Sections in this Transit and for
block boundaries at turnouts or level crossings within Sections of the Transit for
the direction defined in this Transit.
Public Method to clear location of SearchLightBits (SMINI only)
bit - bitNumber of the low bit of an oscillating search light bit pair
Notes: Bits are numbered from 0
Two bits are cleared by each call - bit and bit + 1.
ClockControl defines an interface for control of hardware Fast Clocks
Each hardware system that has a hardware Fast Clock implementation must
supply a module that implements this interface.
Interface for obtaining Conditionals
This doesn't have a "new" method, since Conditionals are
separately implemented, instead of being system-specific.
Public method to convert system name to its alternate format
Returns a normalized system name if system name is valid and has a
valid alternate representation, else return "".
Public method to convert system name to its alternate format
Returns a normalized system name if system name is valid and has a
valid alternate representation, else return "".
Public method to convert system name to its alternate format
Returns a normalized system name if system name is valid and has a
valid alternate representation, else return "".
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.
Public method to convert system name to its alternate format
Returns a normalized system name if system name is valid and has a
valid alternate representation, else return "".
Public method to convert system name to its alternate format
Returns a normalized system name if system name is valid and has a
valid alternate representation, else return "".
Public method to convert system name to its alternate format
Returns a normalized system name if system name is valid and has a
valid alternate representation, else return "".
Convert the system name to a normalized alternate name
This routine is to allow testing to ensure that two Lights with
alternate names that refer to the same output bit are not
created.
Convert the system name to a normalized alternate name
This routine is to allow testing to ensure that two Lights with
alternate names that refer to the same output bit are not
created.
This function creates a string representation of the loco address in
addressLow & addressHigh in a form appropriate for the type of address
(2 or 4 digit) using the Digitrax 'mixed mode' if necessary.
Creates a new ActiveTrain, and registers it with Dispatcher
Required input entries:
transitID - system or user name of a Transit in the Transit Table
trainID - any text that identifies the train
tSource - either ROSTER, OPERATIONS, or USER (see ActiveTrain.java)
startBlockName - system or user name of Block where train currently resides
startBlockSectionSequenceNumber - sequence number in the Transit of the Section containing
the startBlock (if the startBlock is within the Transit) , or of the Section
the train will enter from the startBlock (if the startBlock is outside the Transit).
Method to create a new Block if it does not exist
Returns null if a Block with the same systemName or userName
already exists, or if there is trouble creating a new Block.
Method to create a new Conditional if the Conditional does not exist
Returns null if a Conditional with the same systemName or userName
already exists, or if there is trouble creating a new Conditional
If the parent Logix cannot be found, the userName cannot be checked, but
the Conditional is still created.
Method to create a new Conditional if the Conditional does not exist
Returns null if a Conditional with the same systemName or userName
already exists, or if there is trouble creating a new Conditional
If the parent Logix cannot be found, the userName cannot be checked, but
the Conditional is still created.
Method to create a new LayoutBlock if the LayoutBlock does not exist
Returns null if a LayoutBlock with the same systemName or userName
already exists, or if there is trouble creating a new LayoutBlock.
Method to create a new Light based on the system name
Returns null if the system name is not in a valid format
Assumes calling method has checked that a Light with this
system name does not already exist
Method to create a new Light based on the system name
Returns null if the system name is not in a valid format or
if the system name does not correspond to a configured
C/MRI digital output bit
Assumes calling method has checked that a Light with this
system name does not already exist
Method to create a new Light based on the system name
Returns null if the system name is not in a valid format or
if the system name does not correspond to a configured
C/MRI digital output bit
Assumes calling method has checked that a Light with this
system name does not already exist
Method to create a new Light based on the system name
Returns null if the system name is not in a valid format
Assumes calling method has checked that a Light with this
system name does not already exist
Method to create a new Light based on the system name
Returns null if the system name is not in a valid format
Assumes calling method has checked that a Light with this
system name does not already exist
Method to create a new Light based on the system name
Returns null if the system name is not in a valid format or
if the system name does not correspond to a configured
digital output bit
Assumes calling method has checked that a Light with this
system name does not already exist
Method to create a new Light based on the system name
Returns null if the system name is not in a valid format or
if the system name does not correspond to a configured
C/MRI digital output bit
Assumes calling method has checked that a Light with this
system name does not already exist
Method to create a new Light based on the system name
Returns null if the system name is not in a valid format
Assumes calling method has checked that a Light with this
system name does not already exist
Method to create a new Light based on the system name
Returns null if the system name is not in a valid format or
if the system name does not correspond to a configured
C/MRI digital output bit
Assumes calling method has checked that a Light with this
system name does not already exist
Method to create a new Logix if the Logix does not exist
Returns null if a Logix with the same systemName or userName
already exists, or if there is trouble creating a new Logix.
Method to create a new Logix if the Logix does not exist
Returns null if a Logix with the same systemName or userName
already exists, or if there is trouble creating a new Logix.
Method to create a new OBlock if it does not exist
Returns null if a OBlock with the same systemName or userName
already exists, or if there is trouble creating a new OBlock.
Method to create a new Section if the Section does not exist
Returns null if a Section with the same systemName or userName
already exists, or if there is trouble creating a new Section.
Method to create a new Transit if the Transit does not exist
Returns null if a Transit with the same systemName or userName
already exists, or if there is trouble creating a new Transit.
Method to create a new Light based on the system name
Returns null if the system name is not in a valid format
Assumes calling method has checked that a Light with this
system name does not already exist
Method to create a new Warrant if it does not exist
Returns null if a Warrant with the same systemName or userName
already exists, or if there is trouble creating a new Warrant.
Function that takes in the packet as a array of Bytes and converts
an them into NMRA'1','0' representation, in preparation to be sent over
a serial link.
Mask value to request notification of Command Station
informational messages
This includes all broadcast messages, except for the feedback
broadcast and all programming messages
The default DataFlavor for
TransferableObject has the representation class
net.iharder.dnd.TransferableObject.class
and the MIME type
application/x-net.iharder.dnd.TransferableObject.
This class implements a SignalHead the maps the various appearances values to
aspect values in the Extended Accessory Decoder Control Packet Format and
outputs that packet to the DCC System via the generic CommandStation interface
The mapping is as follows:
0 = DARK
1 = RED
2 = YELLOW
3 = GREEN
4 = FLASHRED
5 = FLASHYELLOW
6 = FLASHGREEN
The FLASH appearances are expected to be implemented in the decoder.
Delete a Conditional and remove it from this Logix
Note: Since each Logix must have at least one Conditional to
do anything, the user is warned in Logix Table Action when the
last Conditional is deleted.