1414import com .revrobotics .spark .SparkBase ;
1515import com .revrobotics .spark .SparkBase .PersistMode ;
1616import com .revrobotics .spark .SparkBase .ResetMode ;
17+ import com .revrobotics .spark .SparkFlex ;
18+ import com .revrobotics .spark .SparkMax ;
1719import com .revrobotics .spark .config .SparkBaseConfig .IdleMode ;
1820import com .revrobotics .spark .config .SparkBaseConfig ;
1921import 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