diff --git a/src/main/java/frc4388/robot/commands/shuffleboard/ShooterTuner.java b/src/main/java/frc4388/robot/commands/shuffleboard/ShooterTuner.java index d8a3ed9..2a9b68c 100644 --- a/src/main/java/frc4388/robot/commands/shuffleboard/ShooterTuner.java +++ b/src/main/java/frc4388/robot/commands/shuffleboard/ShooterTuner.java @@ -67,6 +67,7 @@ public class ShooterTuner extends CommandBase { tableOverrideEntry.distance = 0.0; tableOverrideEntry.hoodExt = 0.0; tableOverrideEntry.drumVelocity = 0.0; + tableOverrideEntry.turretOffset = 0.0; m_boomBoom.setShooterTable(new ShooterTableEntry[] { tableOverrideEntry }); Shuffleboard.selectTab("Shooter Tuner"); SmartDashboard.putData("Shooter Table", m_tableEditor); diff --git a/src/main/java/frc4388/robot/subsystems/BoomBoom.java b/src/main/java/frc4388/robot/subsystems/BoomBoom.java index b6ecdaf..c2f0a41 100644 --- a/src/main/java/frc4388/robot/subsystems/BoomBoom.java +++ b/src/main/java/frc4388/robot/subsystems/BoomBoom.java @@ -191,6 +191,7 @@ public class BoomBoom extends SubsystemBase { dummyEntry.distance = 0.0; dummyEntry.hoodExt = 0.0; dummyEntry.drumVelocity = 0.0; + dummyEntry.turretOffset = 0.0; LOGGER.log(Level.SEVERE, "Exception while reading shooter CSV table.", exception); m_shooterTable = new ShooterTableEntry[] { dummyEntry }; } diff --git a/src/main/java/frc4388/utility/shuffleboard/SendableTable.java b/src/main/java/frc4388/utility/shuffleboard/SendableTable.java index b09208e..000bdce 100644 --- a/src/main/java/frc4388/utility/shuffleboard/SendableTable.java +++ b/src/main/java/frc4388/utility/shuffleboard/SendableTable.java @@ -24,17 +24,18 @@ public class SendableTable implements Sendable { public void initSendable(SendableBuilder builder) { builder.setSmartDashboardType("Table"); builder.addRawProperty("table", this::getTableAsBytes, this::setTableFromBytes); - builder.addStringArrayProperty("header", () -> new String[] { "distance", "hoodExt", "drumVelocity" }, null); + builder.addStringArrayProperty("header", () -> new String[] { "distance", "hoodExt", "drumVelocity", "turretOffset" }, null); } private byte[] getTableAsBytes() { ShooterTableEntry[] table = m_tableGetter.get(); if (!Arrays.equals(tableCache, table)) { - ByteBuffer byteBuffer = ByteBuffer.allocate(Double.BYTES * 3 * table.length); + ByteBuffer byteBuffer = ByteBuffer.allocate(Double.BYTES * 4 * table.length); Arrays.stream(table).forEach(e -> { byteBuffer.putDouble(e.distance); byteBuffer.putDouble(e.hoodExt); byteBuffer.putDouble(e.drumVelocity); + byteBuffer.putDouble(e.turretOffset); }); tableCache = table; bytesCache = byteBuffer.array(); @@ -45,11 +46,12 @@ public class SendableTable implements Sendable { private void setTableFromBytes(byte[] bytes) { if (bytes.length > 0 && !Arrays.equals(bytesCache, bytes)) { ByteBuffer byteBuffer = ByteBuffer.wrap(bytes); - ShooterTableEntry[] table = new ShooterTableEntry[bytes.length / (3 * Double.BYTES)]; + ShooterTableEntry[] table = new ShooterTableEntry[bytes.length / (4 * Double.BYTES)]; for (int i = 0; i < table.length; i++) { table[i].distance = byteBuffer.getDouble(); table[i].hoodExt = byteBuffer.getDouble(); table[i].drumVelocity = byteBuffer.getDouble(); + table[i].turretOffset = byteBuffer.getDouble(); } m_tableSetter.accept(table); }