Skip to content

Commit 7b2bf1b

Browse files
committed
added back configAccessor
1 parent cc1795d commit 7b2bf1b

File tree

1 file changed

+45
-21
lines changed

1 file changed

+45
-21
lines changed

src/main/java/org/carlmontrobotics/lib199/swerve/SwerveModule.java

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import com.revrobotics.spark.SparkBase;
1515
import com.revrobotics.spark.SparkBase.PersistMode;
1616
import com.revrobotics.spark.SparkBase.ResetMode;
17+
import com.revrobotics.spark.SparkFlex;
18+
import com.revrobotics.spark.SparkMax;
1719
import com.revrobotics.spark.config.SparkBaseConfig.IdleMode;
1820
import com.revrobotics.spark.config.SparkBaseConfig;
1921
import com.revrobotics.spark.config.SparkMaxConfig;
@@ -66,12 +68,6 @@ public enum ModuleType {FL, FR, BL, BR};
6668

6769
private double turnSpeedCorrectionVolts, turnFFVolts, turnVolts;
6870
private double maxTurnVelocityWithoutTippingRps;
69-
70-
// Store encoder and config values since configAccessor is not available in new REV API
71-
private IdleMode idleMode = IdleMode.kBrake;
72-
private static final int NEO_HALL_COUNTS_PER_REV = 42;
73-
private static final int ENCODER_POSITION_PERIOD_MS = 20;
74-
private int encoderAverageDepth = 2;
7571

7672
MotorControllerType driveMotorType;
7773
MotorControllerType turnMotorType;
@@ -97,11 +93,10 @@ public SwerveModule(SwerveConfig config, ModuleType type, SparkBase drive, Spark
9793

9894
double drivePositionFactor = config.wheelDiameterMeters * Math.PI / config.driveGearing;
9995
final double driveVelocityFactor = drivePositionFactor / 60;
100-
encoderAverageDepth = 2; // Store the value we're configuring
10196
driveConfig.encoder
10297
.positionConversionFactor(drivePositionFactor)
10398
.velocityConversionFactor(driveVelocityFactor)
104-
.quadratureAverageDepth(encoderAverageDepth);
99+
.quadratureAverageDepth(2);
105100

106101
maxControllableAccerlationRps2 = 0;
107102
final double normalForceNewtons = 83.2 /* lbf */ * 4.4482 /* N/lbf */ / 4 /* numModules */;
@@ -126,9 +121,18 @@ public SwerveModule(SwerveConfig config, ModuleType type, SparkBase drive, Spark
126121
config.drivekD[arrIndex]);
127122

128123
/* offset for 1 relative encoder count */
129-
drivetoleranceMPerS = (1.0
130-
/ (double)(NEO_HALL_COUNTS_PER_REV) * drivePositionFactor)
131-
/ Units.millisecondsToSeconds(ENCODER_POSITION_PERIOD_MS * encoderAverageDepth);
124+
switch(MotorControllerType.getMotorControllerType(drive)) {
125+
case SPARK_MAX:
126+
drivetoleranceMPerS = (1.0
127+
/ (double)(((SparkMax)drive).configAccessor.encoder.getCountsPerRevolution()) * drivePositionFactor)
128+
/ Units.millisecondsToSeconds(((SparkMax)drive).configAccessor.signals.getPrimaryEncoderPositionPeriodMs() * ((SparkMax)drive).configAccessor.encoder.getQuadratureAverageDepth());
129+
break;
130+
case SPARK_FLEX:
131+
drivetoleranceMPerS = (1.0
132+
/ (double)(((SparkFlex)drive).configAccessor.encoder.getCountsPerRevolution()) * drivePositionFactor)
133+
/ Units.millisecondsToSeconds(((SparkFlex)drive).configAccessor.signals.getPrimaryEncoderPositionPeriodMs() * ((SparkFlex)drive).configAccessor.encoder.getQuadratureAverageDepth());
134+
break;
135+
}
132136
drivePIDController.setTolerance(drivetoleranceMPerS);
133137

134138
//System.out.println("Velocity Constant: " + (positionConstant / 60));
@@ -444,25 +448,45 @@ public void updateSmartDashboard() {
444448
}
445449

446450
public void toggleMode() {
447-
if (idleMode == IdleMode.kBrake && idleMode == IdleMode.kCoast) coast();
448-
else brake();
451+
switch(MotorControllerType.getMotorControllerType(drive)) {
452+
case SPARK_MAX:
453+
switch (MotorControllerType.getMotorControllerType(turn)) {
454+
case SPARK_MAX:
455+
if (((SparkMax)drive).configAccessor.getIdleMode() == IdleMode.kBrake && ((SparkMax)turn).configAccessor.getIdleMode() == IdleMode.kCoast) coast();
456+
else brake();
457+
break;
458+
case SPARK_FLEX:
459+
if (((SparkMax)drive).configAccessor.getIdleMode() == IdleMode.kBrake && ((SparkFlex)turn).configAccessor.getIdleMode() == IdleMode.kCoast) coast();
460+
else brake();
461+
break;
462+
}
463+
case SPARK_FLEX:
464+
switch (MotorControllerType.getMotorControllerType(turn)) {
465+
case SPARK_MAX:
466+
if (((SparkFlex)drive).configAccessor.getIdleMode() == IdleMode.kBrake && ((SparkMax)turn).configAccessor.getIdleMode() == IdleMode.kCoast) coast();
467+
else brake();
468+
break;
469+
case SPARK_FLEX:
470+
if (((SparkFlex)drive).configAccessor.getIdleMode() == IdleMode.kBrake && ((SparkFlex)turn).configAccessor.getIdleMode() == IdleMode.kCoast) coast();
471+
else brake();
472+
break;
473+
}
474+
break;
475+
}
449476
}
450477

451478
public void brake() {
452-
idleMode = IdleMode.kBrake;
453-
SparkBaseConfig config = null;
454-
config = driveMotorType.createConfig().idleMode(idleMode);
479+
SparkBaseConfig config = driveMotorType.createConfig().idleMode(IdleMode.kBrake);
455480
drive.configure(config, ResetMode.kNoResetSafeParameters, PersistMode.kNoPersistParameters);
456-
config = turnMotorType.createConfig().idleMode(idleMode);
481+
config = turnMotorType.createConfig().idleMode(IdleMode.kBrake);
457482
turn.configure(config, ResetMode.kNoResetSafeParameters, PersistMode.kNoPersistParameters);
458483
}
459484

460485
public void coast() {
461-
idleMode = IdleMode.kCoast;
462-
SparkBaseConfig config = null;
463-
config = driveMotorType.createConfig().idleMode(idleMode);
486+
SparkBaseConfig config = driveMotorType.createConfig().idleMode(IdleMode.kCoast);
487+
464488
drive.configure(config, ResetMode.kNoResetSafeParameters, PersistMode.kNoPersistParameters);
465-
config = turnMotorType.createConfig().idleMode(idleMode);
489+
config = turnMotorType.createConfig().idleMode(IdleMode.kCoast);
466490
turn.configure(config, ResetMode.kNoResetSafeParameters, PersistMode.kNoPersistParameters);
467491
}
468492

0 commit comments

Comments
 (0)