Skip to content

Commit

Permalink
ignore speed related property change events when still processing spe…
Browse files Browse the repository at this point in the history
…ed changes from the client
  • Loading branch information
pabender committed Oct 31, 2018
1 parent 36103a1 commit 243242a
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 4 deletions.
10 changes: 8 additions & 2 deletions java/src/jmri/jmrit/withrottle/MultiThrottleController.java
Expand Up @@ -136,13 +136,19 @@ public void sendAllFunctionStates(DccThrottle t) {
* {@inheritDoc}
*/
@Override
protected void sendCurrentSpeed(DccThrottle t) {
synchronized protected void sendCurrentSpeed(DccThrottle t) {
float currentSpeed = t.getSpeedSetting();
if(internalAdjust && Math.abs(lastSentSpeed-currentSpeed)>0.0005 ) {
return;
}
StringBuilder message = new StringBuilder(buildPacketWithChar('A'));
message.append("V");
message.append(Math.round(t.getSpeedSetting() / speedMultiplier));
message.append(Math.round(currentSpeed / speedMultiplier));
for (ControllerInterface listener : controllerListeners) {
listener.sendPacketToDevice(message.toString());
}
lastSentSpeed=currentSpeed;
internalAdjust = false;
}

/**
Expand Down
8 changes: 6 additions & 2 deletions java/src/jmri/jmrit/withrottle/ThrottleController.java
Expand Up @@ -53,12 +53,14 @@ public class ThrottleController implements ThrottleListener, PropertyChangeListe
DccLocoAddress leadAddress;
char whichThrottle;
float speedMultiplier;
protected float lastSentSpeed;
boolean isAddressSet;
protected ArrayList<ThrottleControllerListener> listeners;
protected ArrayList<ControllerInterface> controllerListeners;
boolean useLeadLocoF;
ConsistFunctionController leadLocoF = null;
String locoKey = "";
protected boolean internalAdjust = false;

final boolean isMomF2 = InstanceManager.getDefault(WiThrottlePreferences.class).isUseMomF2();

Expand Down Expand Up @@ -341,7 +343,7 @@ protected String buildFStatesHeader() {
return ("RPF}|{" + whichThrottle);
}

protected void sendCurrentSpeed(DccThrottle t) {
synchronized protected void sendCurrentSpeed(DccThrottle t) {
}

protected void sendCurrentDirection(DccThrottle t) {
Expand Down Expand Up @@ -565,11 +567,13 @@ public void shutdownThrottle() {
*
* @param rawSpeed Value sent from mobile device, range 0 - 126
*/
protected void setSpeed(int rawSpeed) {
synchronized protected void setSpeed(int rawSpeed) {

internalAdjust = true;
float newSpeed = (rawSpeed * speedMultiplier);

log.debug("raw: {}, NewSpd: {}", rawSpeed, newSpeed);
lastSentSpeed = newSpeed;
throttle.setSpeedSetting(newSpeed);
}

Expand Down

0 comments on commit 243242a

Please sign in to comment.