11package org .carlmontrobotics .lib199 .sim ;
22
3+ import java .util .HashMap ;
4+
35import com .revrobotics .REVLibError ;
46
57import edu .wpi .first .hal .SimDevice ;
68import edu .wpi .first .hal .SimDouble ;
79import edu .wpi .first .hal .SimDevice .Direction ;
810
911public class MockedSparkEncoder implements AutoCloseable {
12+
13+ private static final HashMap <Integer , MockedSparkEncoder > sims = new HashMap <>();
14+
1015 private SimDevice device ;
1116 private SimDouble dpp ;
1217 private SimDouble count ;
18+ private SimDouble gearing ;
1319 // Default value for a CANEncoder
1420 private final int countsPerRevolution = 4096 ;
1521
1622 public MockedSparkEncoder (int id ) {
17- // Match motor on CAN 0 with channels [0, 1], CAN 1 to channels [2, 3], etc.
18- // Probably not the best way to do it but it works
1923 device = SimDevice .create ("CANEncoder_SparkMax" , id );
2024 dpp = device .createDouble ("distancePerPulse" , Direction .kOutput , 1 );
2125 count = device .createDouble ("count" , Direction .kInput , 0 );
26+ gearing = device .createDouble ("gearing" , Direction .kOutput , 1 );
27+ sims .put (id , this );
2228 }
2329
2430 public double getPosition () {
@@ -46,4 +52,13 @@ public double getPositionConversionFactor() {
4652 public void close () {
4753 device .close ();
4854 }
55+
56+ public void setGearing (double gearing ) {
57+ this .gearing .set (gearing );
58+ }
59+
60+ public void setGearing (int port , double gearing ) {
61+ if (sims .containsKey (port )) sims .get (port ).setGearing (gearing );
62+ }
63+
4964}
0 commit comments