Add turret offset to fallback table entries

Add turret offset to sendable table
This commit is contained in:
nathanrsxtn
2022-04-08 12:59:30 -06:00
parent 2c3afec8c8
commit f0b1750505
3 changed files with 7 additions and 3 deletions
@@ -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);
@@ -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 };
}
@@ -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);
}