Class RosterSpeedProfile


  • public class RosterSpeedProfile
    extends java.lang.Object
    A simple class to store a speed profile for a given loco The speed steps against the profile are on a scale of 0 to 1000, this equates to the float speed x 1000. This allows a single profile to cover different throttle speed step settings. So a profile generate for a loco using 28 steps can be used for a throttle using 126 steps.
    • Method Detail

      • deleteStep

        public void deleteStep​(java.lang.Integer step)
      • MMSToScaleSpeed

        public float MMSToScaleSpeed​(float mms)
        Returns the scale speed as a numeric. if warrent prefernces are not a speed value returned unchanged.
        Parameters:
        mms - MilliMetres per second
        Returns:
        scale speed in units specified by Warrant Preferences. if warrant preferences are not a speed
      • convertMMSToScaleSpeedWithUnits

        public static java.lang.String convertMMSToScaleSpeedWithUnits​(float mms)
        Returns the scale speed format as a string with the units added given MilliMetres per Second. If the warrant preference is a percentage of normal or throttle will use metres per second.
        Parameters:
        mms - MilliMetres per second
        Returns:
        a string with scale speed and units
      • convertThrottleSettingToScaleSpeedWithUnits

        public java.lang.String convertThrottleSettingToScaleSpeedWithUnits​(float throttleSetting,
                                                                            boolean isForward)
        Returns the scale speed format as a string with the units added given a throttle setting. and direction
        Parameters:
        throttleSetting - as percentage of 1.0
        isForward - true or false
        Returns:
        a string with scale speed and units
      • convertScaleSpeedToMMS

        public float convertScaleSpeedToMMS​(float scaleSpeed)
        MilliMetres per Second given scale speed.
        Parameters:
        scaleSpeed - in MPH or KPH
        Returns:
        MilliMetres per second
      • getThrottleSettingFromSignalMapSpeed

        public float getThrottleSettingFromSignalMapSpeed​(float signalMapSpeed,
                                                          boolean isForward)
        Converts from signal map speed to a throttle setting
        Parameters:
        signalMapSpeed - value from warrants preferences
        isForward - direction of travel
        Returns:
        throttle setting
      • setSpeed

        public void setSpeed​(int speedStep,
                             float forward,
                             float reverse)
        Set the speed for the given speed step.
        Parameters:
        speedStep - the speed step to set
        forward - speed in meters per second for running forward at speedStep
        reverse - speed in meters per second for running in reverse at speedStep
      • setForwardSpeed

        public void setForwardSpeed​(float speedStep,
                                    float forward)
      • setForwardSpeed

        public void setForwardSpeed​(float throttleSetting,
                                    float speed,
                                    float speedIncrement)
        Merge raw throttleSetting value with an existing profile SpeedStep if key for the throttleSetting is within the speedIncrement of the SpeedStep.
        Parameters:
        throttleSetting - raw throttle setting value
        speed - track speed
        speedIncrement - throttle's speed step increment.
      • setReverseSpeed

        public void setReverseSpeed​(float throttleSetting,
                                    float speed,
                                    float speedIncrement)
        Merge raw throttleSetting value with an existing profile SpeedStep if key for the throttleSetting is within the speedIncrement of the SpeedStep.
        Parameters:
        throttleSetting - raw throttle setting value
        speed - track speed
        speedIncrement - throttle's speed step increment.
      • setReverseSpeed

        public void setReverseSpeed​(float speedStep,
                                    float reverse)
      • getForwardSpeed

        public float getForwardSpeed​(float speedStep)
        return the forward speed in milli-meters per second for a given percentage throttle
        Parameters:
        speedStep - which is actual percentage throttle
        Returns:
        MilliMetres per second using straight line interpolation for missing points
      • getReverseSpeed

        public float getReverseSpeed​(float speedStep)
        return the reverse speed in millimetres per second for a given percentage throttle
        Parameters:
        speedStep - percentage of throttle 0.nnn
        Returns:
        millimetres per second
      • getDurationOfTravelInSeconds

        public float getDurationOfTravelInSeconds​(boolean isForward,
                                                  float speedStep,
                                                  int distance)
        Get the approximate time a loco may travel a given distance at a given speed step.
        Parameters:
        isForward - true if loco is running forward; false otherwise
        speedStep - the desired speed step
        distance - the desired distance in millimeters
        Returns:
        the approximate time in seconds
      • getDistanceTravelled

        public float getDistanceTravelled​(boolean isForward,
                                          float speedStep,
                                          float duration)
        Get the approximate distance a loco may travel a given duration at a given speed step.
        Parameters:
        isForward - true if loco is running forward; false otherwise
        speedStep - the desired speed step
        duration - the desired time in seconds
        Returns:
        the approximate distance in millimeters
      • finishChange

        void finishChange()
        reset everything back to default once the change has finished.
      • changeLocoSpeed

        public void changeLocoSpeed​(DccThrottle t,
                                    Block blk,
                                    float speed)
        Set speed of a throttle.
        Parameters:
        t - the throttle to set
        blk - the block used for length details
        speed - the speed to set
      • changeLocoSpeed

        public void changeLocoSpeed​(DccThrottle t,
                                    Section sec,
                                    float speed,
                                    float usePercentage)
        Set speed of a throttle.
        Parameters:
        t - the throttle to set
        sec - the section used for length details
        speed - the speed to set
        usePercentage - the percentage of the block to be used for stopping
      • changeLocoSpeed

        public void changeLocoSpeed​(DccThrottle t,
                                    Block blk,
                                    float speed,
                                    float usePercentage)
        Set speed of a throttle.
        Parameters:
        t - the throttle to set
        blk - the block used for length details
        speed - the speed to set
        usePercentage - the percentage of the block to be used for stopping
      • changeLocoSpeed

        public void changeLocoSpeed​(DccThrottle t,
                                    Section sec,
                                    float speed)
        Set speed of a throttle to a speeed set by a float, using the section for the length details Set speed of a throttle.
        Parameters:
        t - the throttle to set
        sec - the section used for length details
        speed - the speed to set
      • changeLocoSpeed

        public void changeLocoSpeed​(DccThrottle t,
                                    float distance,
                                    float speed)
        Set speed of a throttle.
        Parameters:
        t - the throttle to set
        distance - the distance in meters
        speed - the speed to set
      • cancelSpeedChange

        public void cancelSpeedChange()
        This method is called to cancel the existing change in speed.
      • getThrottleSetting

        public float getThrottleSetting​(float speed,
                                        boolean isForward)
        Get the throttle setting to achieve a track speed
        Parameters:
        speed - desired track speed in mm/sec
        isForward - direction
        Returns:
        throttle setting
      • getSpeed

        public float getSpeed​(float speedStep,
                              boolean isForward)
        Get track speed in millimeters per second from throttle setting
        Parameters:
        speedStep - throttle setting
        isForward - direction
        Returns:
        track speed