Search in sources :

Example 1 with ThrottleManager

use of jmri.ThrottleManager in project JMRI by JMRI.

the class JmriSRCPThrottleServer method initThrottle.

public void initThrottle(int bus, int address, boolean isLong, int speedsteps, int functions) throws IOException {
    log.debug("initThrottle called with bus {} and address {}", bus, address);
    /* translate the bus into a system connection memo */
    java.util.List<SystemConnectionMemo> list = jmri.InstanceManager.getList(SystemConnectionMemo.class);
    SystemConnectionMemo memo = null;
    try {
        memo = list.get(bus - 1);
    } catch (java.lang.IndexOutOfBoundsException obe) {
        TimeStampedOutput.writeTimestamp(output, Bundle.getMessage("Error412"));
        return;
    }
    /* request the throttle for this particular locomotive address */
    if (memo.provides(jmri.ThrottleManager.class)) {
        ThrottleManager t = memo.get(jmri.ThrottleManager.class);
        // we will use getThrottleInfo to request information about the
        // address, so we need to convert the address to a DccLocoAddress
        // object first.
        DccLocoAddress addr = new DccLocoAddress(address, isLong);
        busList.add(Integer.valueOf(bus));
        addressList.add(addr);
        t.requestThrottle(addr, this);
    }
}
Also used : SystemConnectionMemo(jmri.jmrix.SystemConnectionMemo) ThrottleManager(jmri.ThrottleManager) DccLocoAddress(jmri.DccLocoAddress)

Example 2 with ThrottleManager

use of jmri.ThrottleManager in project JMRI by JMRI.

the class JmriSRCPThrottleServer method setThrottleFunctions.

/*
     * Set Throttle Functions on/off
     *
     * @param bus, bus the throttle is on.
     * @param l address of the locomotive to change speed of.
     * @param fList an ArrayList of boolean values indicating whether the
     *         function is active or not.
     */
public void setThrottleFunctions(int bus, int address, ArrayList<Boolean> fList) {
    log.debug("Setting Functions for address {} bus {}", address, bus);
    java.util.List<SystemConnectionMemo> list = jmri.InstanceManager.getList(SystemConnectionMemo.class);
    SystemConnectionMemo memo = null;
    try {
        memo = list.get(bus - 1);
    } catch (java.lang.IndexOutOfBoundsException obe) {
        try {
            TimeStampedOutput.writeTimestamp(output, Bundle.getMessage("Error412"));
        } catch (IOException ioe) {
            log.error("Error writing to network port");
        }
        return;
    }
    /* request the throttle for this particular locomotive address */
    if (memo.provides(jmri.ThrottleManager.class)) {
        ThrottleManager tm = memo.get(jmri.ThrottleManager.class);
        // we will use getThrottleInfo to request information about the
        // address, so we need to convert the address to a DccLocoAddress
        // object first.
        DccLocoAddress addr = new DccLocoAddress(address, tm.canBeLongAddress(address));
        // get the throttle for the address.
        if (addressList.contains(addr)) {
            log.debug("Throttle in throttle list");
            Throttle t = throttleList.get(addressList.indexOf(addr));
            for (int i = 0; i < fList.size(); i++) {
                try {
                    java.lang.reflect.Method setter = t.getClass().getMethod("setF" + i, boolean.class);
                    setter.invoke(t, fList.get(i));
                } catch (java.lang.NoSuchMethodException | java.lang.IllegalAccessException | java.lang.reflect.InvocationTargetException ex1) {
                    ex1.printStackTrace();
                    try {
                        sendErrorStatus();
                    } catch (IOException ioe) {
                        log.error("Error writing to network port");
                    }
                }
            }
        }
    }
}
Also used : IOException(java.io.IOException) DccLocoAddress(jmri.DccLocoAddress) Throttle(jmri.Throttle) DccThrottle(jmri.DccThrottle) SystemConnectionMemo(jmri.jmrix.SystemConnectionMemo) ThrottleManager(jmri.ThrottleManager)

Example 3 with ThrottleManager

use of jmri.ThrottleManager in project JMRI by JMRI.

the class JmriSRCPThrottleServer method setThrottleSpeedAndDirection.

/*
     * Set Throttle Speed and Direction
     *
     * @param bus, bus the throttle is on.
     * @param l address of the locomotive to change speed of.
     * @param speed float representing the speed, -1 for emergency stop.
     * @param isForward boolean, true if forward, false if reverse or
     * undefined.
     */
public void setThrottleSpeedAndDirection(int bus, int address, float speed, boolean isForward) {
    log.debug("Setting Speed for address {} bus {} to {} with direction {}", address, bus, speed, isForward ? "forward" : "reverse");
    java.util.List<SystemConnectionMemo> list = jmri.InstanceManager.getList(SystemConnectionMemo.class);
    SystemConnectionMemo memo = null;
    try {
        memo = list.get(bus - 1);
    } catch (java.lang.IndexOutOfBoundsException obe) {
        try {
            TimeStampedOutput.writeTimestamp(output, Bundle.getMessage("Error412"));
        } catch (IOException ioe) {
            log.error("Error writing to network port");
        }
        return;
    }
    /* request the throttle for this particular locomotive address */
    if (memo.provides(jmri.ThrottleManager.class)) {
        ThrottleManager tm = memo.get(jmri.ThrottleManager.class);
        // we will use getThrottleInfo to request information about the
        // address, so we need to convert the address to a DccLocoAddress
        // object first.
        DccLocoAddress addr = new DccLocoAddress(address, tm.canBeLongAddress(address));
        // get the throttle for the address.
        if (addressList.contains(addr)) {
            log.debug("Throttle in throttle list");
            Throttle t = throttleList.get(addressList.indexOf(addr));
            // set the speed and direction.
            t.setSpeedSetting(speed);
            t.setIsForward(isForward);
        }
    }
}
Also used : SystemConnectionMemo(jmri.jmrix.SystemConnectionMemo) ThrottleManager(jmri.ThrottleManager) IOException(java.io.IOException) DccLocoAddress(jmri.DccLocoAddress) Throttle(jmri.Throttle) DccThrottle(jmri.DccThrottle)

Example 4 with ThrottleManager

use of jmri.ThrottleManager in project JMRI by JMRI.

the class DccLocoAddressSelectorTest method setThrottleManager.

// from here down is testing infrastructure
protected void setThrottleManager() {
    ThrottleManager m = new DebugThrottleManager();
    InstanceManager.setThrottleManager(m);
    return;
}
Also used : ThrottleManager(jmri.ThrottleManager) DebugThrottleManager(jmri.jmrix.debugthrottle.DebugThrottleManager) DebugThrottleManager(jmri.jmrix.debugthrottle.DebugThrottleManager)

Example 5 with ThrottleManager

use of jmri.ThrottleManager in project JMRI by JMRI.

the class AbstractThrottleServer method releaseThrottle.

/*
     * Release a throttle for the specified address from the default
     * Throttle Manager.
     *
     * @param l LocoAddress of the locomotive to request.
     */
public void releaseThrottle(LocoAddress l) {
    ThrottleManager t = InstanceManager.throttleManagerInstance();
    t.cancelThrottleRequest(l.getNumber(), this);
    if (l instanceof DccLocoAddress) {
        throttleList.forEach(throttle -> {
            if (throttle.getLocoAddress() == l) {
                t.releaseThrottle((DccThrottle) throttle, this);
                throttleList.remove(throttle);
                try {
                    sendThrottleReleased(l);
                } catch (IOException ioe) {
                    log.error("Error writing to network port");
                }
            }
        });
    }
}
Also used : ThrottleManager(jmri.ThrottleManager) IOException(java.io.IOException) DccLocoAddress(jmri.DccLocoAddress)

Aggregations

ThrottleManager (jmri.ThrottleManager)8 DccLocoAddress (jmri.DccLocoAddress)7 SystemConnectionMemo (jmri.jmrix.SystemConnectionMemo)5 IOException (java.io.IOException)4 DccThrottle (jmri.DccThrottle)2 Throttle (jmri.Throttle)2 DebugThrottleManager (jmri.jmrix.debugthrottle.DebugThrottleManager)1