001package jmri;
002
003import java.util.EventListener;
004
005/**
006 * Allow notification of delayed consisting errors.
007 * <p>
008 * This allows a {@link Consist} object to return delayed status.
009 *
010 * <hr>
011 * This file is part of JMRI.
012 * <p>
013 * JMRI is free software; you can redistribute it and/or modify it under the
014 * terms of version 2 of the GNU General Public License as published by the Free
015 * Software Foundation. See the "COPYING" file for a copy of this license.
016 * <p>
017 * JMRI is distributed in the hope that it will be useful, but WITHOUT ANY
018 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
019 * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
020 *
021 * @author Paul Bender Copyright (C) 2004
022 */
023public interface ConsistListener extends EventListener {
024
025    /**
026     * Receive notification at the end of a consisting operation.
027     *
028     * @param locoaddress Address of specific locomotive involved, if error is
029     *                    locomotive specific.
030     * @param status      Denotes the completion code. Note that this is a
031     *                    bitwise combination of the various status coded
032     *                    defined in this interface.
033     */
034    void consistReply(LocoAddress locoaddress, int status);
035    /**
036     * Constant denoting that the request completed correctly. Note this is a
037     * specific value; all others are bitwise combinations
038     */
039    int OK = 0;
040    /**
041     * Constant denoting that the request failed because it requested some
042     * unimplemented capability. Note that this can also result in an exception
043     * during the original request; which happens is implementation dependent
044     */
045    int NotImplemented = 0x01;
046    /**
047     * the Operation Completed successfully.
048     */
049    int OPERATION_SUCCESS = 0x02;
050    /**
051     * An Error Occurred.
052     */
053    int CONSIST_ERROR = 0x04;
054    /**
055     * All of the slots available for the consist are full Note: This may not be
056     * an error. If the last locomotive added to the consist caused the number
057     * of units in the consist to equal the size limit, the value returned to
058     * the listeners should be OPERATION_SUCCESS | CONSIST_FULL. To indicate an
059     * error, send CONSIST_ERROR | CONSIST_FULL, and to send an information
060     * message, just send CONSIST_FULL
061     */
062    int CONSIST_FULL = 0x08;
063    /**
064     * The requested locomotive has not been operated by this device, or is
065     * currently being operated by another device
066     */
067    int LOCO_NOT_OPERATED = 0x10;
068    /**
069     * An add request is not valid for this address because the locomotive is
070     * already in a consist.
071     */
072    int ALREADY_CONSISTED = 0x20;
073    /**
074     * A remove request is not valid for this address because the locomotive is
075     * not in a consist.
076     */
077    int NOT_CONSISTED = 0x40;
078    /**
079     * The operation is not valid because the locomotive's speed is not zero.
080     */
081    int NONZERO_SPEED = 0x80;
082    /**
083     * The operation is not valid because the specified address is not a consist
084     * base address
085     */
086    int NOT_CONSIST_ADDR = 0x100;
087    /**
088     * The operation failed because it is not possible to delete the locomotive
089     */
090    int DELETE_ERROR = 0x200;
091    /**
092     * The operation failed because the command station stack is full
093     */
094    int STACK_FULL = 0x400;
095}