Skip to content

Commit acc45c6

Browse files
Force spark max to apply with non persistent parameters if enabled. Avoiding crashes. (#115)
Signed-off-by: thenetworkgrinch <thenetworkgrinch@users.noreply.github.com> Co-authored-by: thenetworkgrinch <thenetworkgrinch@users.noreply.github.com>
1 parent 707f06d commit acc45c6

1 file changed

Lines changed: 101 additions & 27 deletions

File tree

yams/java/yams/motorcontrollers/local/SparkWrapper.java

Lines changed: 101 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,8 @@ public void setIdleMode(MotorMode mode)
303303
m_sparkBaseConfig.idleMode(mode == MotorMode.BRAKE ? IdleMode.kBrake : IdleMode.kCoast);
304304
configureSpark(() -> m_spark.configure(m_sparkBaseConfig,
305305
ResetMode.kNoResetSafeParameters,
306-
PersistMode.kPersistParameters));
306+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
307+
: PersistMode.kPersistParameters));
307308
}
308309

309310
@Override
@@ -644,13 +645,15 @@ public boolean applyConfig(SmartMotorControllerConfig config)
644645
{
645646
((SparkMax) follower.getFirst()).configure(new SparkMaxConfig().follow(m_spark, follower.getSecond()),
646647
ResetMode.kNoResetSafeParameters,
647-
PersistMode.kPersistParameters);
648+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
649+
: PersistMode.kPersistParameters);
648650

649651
} else if (follower.getFirst() instanceof SparkFlex)
650652
{
651653
((SparkFlex) follower.getFirst()).configure(new SparkFlexConfig().follow(m_spark, follower.getSecond()),
652654
ResetMode.kNoResetSafeParameters,
653-
PersistMode.kPersistParameters);
655+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
656+
: PersistMode.kPersistParameters);
654657

655658
} else
656659
{
@@ -730,7 +733,8 @@ public boolean applyConfig(SmartMotorControllerConfig config)
730733
config.validateExternalEncoderOptions();
731734
return configureSpark(() -> m_spark.configure(m_sparkBaseConfig,
732735
resetMode,
733-
PersistMode.kPersistParameters));
736+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
737+
: PersistMode.kPersistParameters));
734738
}
735739

736740
@Override
@@ -835,7 +839,10 @@ public void setMotorInverted(boolean inverted)
835839
{
836840
m_config.withMotorInverted(inverted);
837841
m_sparkBaseConfig.inverted(inverted);
838-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
842+
m_spark.configureAsync(m_sparkBaseConfig,
843+
ResetMode.kNoResetSafeParameters,
844+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
845+
: PersistMode.kPersistParameters);
839846
}
840847

841848
@Override
@@ -848,7 +855,10 @@ public void setEncoderInverted(boolean inverted)
848855
// }
849856
// sparkBaseConfig.analogSensor.inverted(inverted);
850857
m_sparkBaseConfig.encoder.inverted(inverted);
851-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
858+
m_spark.configureAsync(m_sparkBaseConfig,
859+
ResetMode.kNoResetSafeParameters,
860+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
861+
: PersistMode.kPersistParameters);
852862
}
853863

854864
@Override
@@ -862,7 +872,10 @@ public void setMotionProfileMaxVelocity(LinearVelocity maxVelocity)
862872
}
863873
m_sparkBaseConfig.closedLoop.maxMotion.cruiseVelocity(m_config.convertToMechanism(maxVelocity)
864874
.in(RotationsPerSecond));
865-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
875+
m_spark.configureAsync(m_sparkBaseConfig,
876+
ResetMode.kNoResetSafeParameters,
877+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
878+
: PersistMode.kPersistParameters);
866879
}
867880

868881
@Override
@@ -876,7 +889,10 @@ public void setMotionProfileMaxAcceleration(LinearAcceleration maxAcceleration)
876889
}
877890
m_sparkBaseConfig.closedLoop.maxMotion.maxAcceleration(m_config.convertToMechanism(maxAcceleration)
878891
.in(RotationsPerSecondPerSecond));
879-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
892+
m_spark.configureAsync(m_sparkBaseConfig,
893+
ResetMode.kNoResetSafeParameters,
894+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
895+
: PersistMode.kPersistParameters);
880896
}
881897

882898
@Override
@@ -889,7 +905,10 @@ public void setMotionProfileMaxVelocity(AngularVelocity maxVelocity)
889905
.orElseThrow().maxAcceleration)));
890906
}
891907
m_sparkBaseConfig.closedLoop.maxMotion.cruiseVelocity(maxVelocity.in(RotationsPerSecond));
892-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
908+
m_spark.configureAsync(m_sparkBaseConfig,
909+
ResetMode.kNoResetSafeParameters,
910+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
911+
: PersistMode.kPersistParameters);
893912
}
894913

895914
@Override
@@ -903,7 +922,10 @@ public void setMotionProfileMaxAcceleration(AngularAcceleration maxAcceleration)
903922
RotationsPerSecondPerSecond))));
904923
}
905924
m_sparkBaseConfig.closedLoop.maxMotion.maxAcceleration(maxAcceleration.in(RotationsPerSecondPerSecond));
906-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
925+
m_spark.configureAsync(m_sparkBaseConfig,
926+
ResetMode.kNoResetSafeParameters,
927+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
928+
: PersistMode.kPersistParameters);
907929
}
908930

909931
@Override
@@ -917,7 +939,10 @@ public void setMotionProfileMaxJerk(Velocity<AngularAccelerationUnit> maxJerk)
917939
RotationsPerSecondPerSecond.per(Second)))));
918940
}
919941
m_sparkBaseConfig.closedLoop.maxMotion.maxAcceleration(maxJerk.in(RotationsPerSecondPerSecond.per(Second)));
920-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
942+
m_spark.configureAsync(m_sparkBaseConfig,
943+
ResetMode.kNoResetSafeParameters,
944+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
945+
: PersistMode.kPersistParameters);
921946
}
922947

923948
@Override
@@ -950,7 +975,11 @@ public void setKp(double kP)
950975
simplePidController.setP(kP);
951976
});
952977
m_sparkBaseConfig.closedLoop.p(kP);
953-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
978+
979+
m_spark.configureAsync(m_sparkBaseConfig,
980+
ResetMode.kNoResetSafeParameters,
981+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
982+
: PersistMode.kPersistParameters);
954983
}
955984

956985
@Override
@@ -960,7 +989,10 @@ public void setKi(double kI)
960989
simplePidController.setI(kI);
961990
});
962991
m_sparkBaseConfig.closedLoop.i(kI);
963-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
992+
m_spark.configureAsync(m_sparkBaseConfig,
993+
ResetMode.kNoResetSafeParameters,
994+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
995+
: PersistMode.kPersistParameters);
964996

965997
}
966998

@@ -971,7 +1003,10 @@ public void setKd(double kD)
9711003
simplePidController.setD(kD);
9721004
});
9731005
m_sparkBaseConfig.closedLoop.d(kD);
974-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1006+
m_spark.configureAsync(m_sparkBaseConfig,
1007+
ResetMode.kNoResetSafeParameters,
1008+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1009+
: PersistMode.kPersistParameters);
9751010
}
9761011

9771012
@Override
@@ -983,7 +1018,10 @@ public void setFeedback(double kP, double kI, double kD)
9831018
simplePidController.setD(kD);
9841019
});
9851020
m_sparkBaseConfig.closedLoop.pid(kP, kI, kD);
986-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1021+
m_spark.configureAsync(m_sparkBaseConfig,
1022+
ResetMode.kNoResetSafeParameters,
1023+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1024+
: PersistMode.kPersistParameters);
9871025
}
9881026

9891027
@Override
@@ -999,7 +1037,10 @@ public void setKs(double kS)
9991037
elevatorFeedforward.setKs(kS);
10001038
});
10011039
m_sparkBaseConfig.closedLoop.feedForward.kS(kS);
1002-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1040+
m_spark.configureAsync(m_sparkBaseConfig,
1041+
ResetMode.kNoResetSafeParameters,
1042+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1043+
: PersistMode.kPersistParameters);
10031044
}
10041045

10051046
@Override
@@ -1015,7 +1056,10 @@ public void setKv(double kV)
10151056
elevatorFeedforward.setKv(kV);
10161057
});
10171058
m_sparkBaseConfig.closedLoop.feedForward.kV(kV);
1018-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1059+
m_spark.configureAsync(m_sparkBaseConfig,
1060+
ResetMode.kNoResetSafeParameters,
1061+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1062+
: PersistMode.kPersistParameters);
10191063
}
10201064

10211065
@Override
@@ -1031,7 +1075,10 @@ public void setKa(double kA)
10311075
elevatorFeedforward.setKa(kA);
10321076
});
10331077
m_sparkBaseConfig.closedLoop.feedForward.kA(kA);
1034-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1078+
m_spark.configureAsync(m_sparkBaseConfig,
1079+
ResetMode.kNoResetSafeParameters,
1080+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1081+
: PersistMode.kPersistParameters);
10351082
}
10361083

10371084
@Override
@@ -1050,7 +1097,10 @@ public void setKg(double kG)
10501097
{
10511098
m_sparkBaseConfig.closedLoop.feedForward.kCos(kG);
10521099
}
1053-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1100+
m_spark.configureAsync(m_sparkBaseConfig,
1101+
ResetMode.kNoResetSafeParameters,
1102+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1103+
: PersistMode.kPersistParameters);
10541104
}
10551105

10561106
@Override
@@ -1076,15 +1126,21 @@ public void setFeedforward(double kS, double kV, double kA, double kG)
10761126
m_sparkBaseConfig.closedLoop.feedForward.kG(kG);
10771127
});
10781128
m_sparkBaseConfig.closedLoop.feedForward.kS(kS).kV(kV).kA(kA);
1079-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1129+
m_spark.configureAsync(m_sparkBaseConfig,
1130+
ResetMode.kNoResetSafeParameters,
1131+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1132+
: PersistMode.kPersistParameters);
10801133
}
10811134

10821135
@Override
10831136
public void setStatorCurrentLimit(Current currentLimit)
10841137
{
10851138
m_config.withStatorCurrentLimit(currentLimit);
10861139
m_sparkBaseConfig.smartCurrentLimit((int) currentLimit.in(Amps));
1087-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1140+
m_spark.configureAsync(m_sparkBaseConfig,
1141+
ResetMode.kNoResetSafeParameters,
1142+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1143+
: PersistMode.kPersistParameters);
10881144
}
10891145

10901146
@Deprecated
@@ -1098,15 +1154,21 @@ public void setClosedLoopRampRate(Time rampRate)
10981154
{
10991155
m_config.withClosedLoopRampRate(rampRate);
11001156
m_sparkBaseConfig.closedLoopRampRate(rampRate.in(Seconds));
1101-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1157+
m_spark.configureAsync(m_sparkBaseConfig,
1158+
ResetMode.kNoResetSafeParameters,
1159+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1160+
: PersistMode.kPersistParameters);
11021161
}
11031162

11041163
@Override
11051164
public void setOpenLoopRampRate(Time rampRate)
11061165
{
11071166
m_config.withOpenLoopRampRate(rampRate);
11081167
m_sparkBaseConfig.openLoopRampRate(rampRate.in(Seconds));
1109-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1168+
m_spark.configureAsync(m_sparkBaseConfig,
1169+
ResetMode.kNoResetSafeParameters,
1170+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1171+
: PersistMode.kPersistParameters);
11101172
}
11111173

11121174
@Override
@@ -1116,7 +1178,10 @@ public void setMeasurementUpperLimit(Distance upperLimit)
11161178
{
11171179
m_config.withSoftLimit(m_config.convertFromMechanism(m_config.getMechanismLowerLimit().get()), upperLimit);
11181180
m_sparkBaseConfig.softLimit.forwardSoftLimit(m_config.convertToMechanism(upperLimit).in(Rotations));
1119-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1181+
m_spark.configureAsync(m_sparkBaseConfig,
1182+
ResetMode.kNoResetSafeParameters,
1183+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1184+
: PersistMode.kPersistParameters);
11201185
}
11211186
}
11221187

@@ -1127,7 +1192,10 @@ public void setMeasurementLowerLimit(Distance lowerLimit)
11271192
{
11281193
m_config.withSoftLimit(lowerLimit, m_config.convertFromMechanism(m_config.getMechanismUpperLimit().get()));
11291194
m_sparkBaseConfig.softLimit.reverseSoftLimit(m_config.convertToMechanism(lowerLimit).in(Rotations));
1130-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1195+
m_spark.configureAsync(m_sparkBaseConfig,
1196+
ResetMode.kNoResetSafeParameters,
1197+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1198+
: PersistMode.kPersistParameters);
11311199
}
11321200
}
11331201

@@ -1138,7 +1206,10 @@ public void setMechanismUpperLimit(Angle upperLimit)
11381206
m_config.withSoftLimit(lowerLimit, upperLimit);
11391207
});
11401208
m_sparkBaseConfig.softLimit.forwardSoftLimit(upperLimit.in(Rotations));
1141-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1209+
m_spark.configureAsync(m_sparkBaseConfig,
1210+
ResetMode.kNoResetSafeParameters,
1211+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1212+
: PersistMode.kPersistParameters);
11421213
}
11431214

11441215
@Override
@@ -1148,7 +1219,10 @@ public void setMechanismLowerLimit(Angle lowerLimit)
11481219
m_config.withSoftLimit(lowerLimit, upperLimit);
11491220
});
11501221
m_sparkBaseConfig.softLimit.reverseSoftLimit(lowerLimit.in(Rotations));
1151-
m_spark.configureAsync(m_sparkBaseConfig, ResetMode.kNoResetSafeParameters, PersistMode.kPersistParameters);
1222+
m_spark.configureAsync(m_sparkBaseConfig,
1223+
ResetMode.kNoResetSafeParameters,
1224+
DriverStation.isEnabled() ? PersistMode.kNoPersistParameters
1225+
: PersistMode.kPersistParameters);
11521226
}
11531227

11541228
@Override

0 commit comments

Comments
 (0)