Update wpilibj to use new NetworkTables package and interfaces.

This may be breaking to CANSpeedController implementations.
This commit is contained in:
Peter Johnson
2017-08-28 00:32:53 -07:00
parent 91529cc435
commit 4e80570c4c
38 changed files with 929 additions and 541 deletions

View File

@@ -7,11 +7,12 @@
package edu.wpi.first.wpilibj;
import edu.wpi.first.networktables.EntryListenerFlags;
import edu.wpi.first.networktables.NetworkTable;
import edu.wpi.first.networktables.NetworkTableEntry;
import edu.wpi.first.wpilibj.hal.FRCNetComm.tResourceType;
import edu.wpi.first.wpilibj.hal.HAL;
import edu.wpi.first.wpilibj.livewindow.LiveWindow;
import edu.wpi.first.wpilibj.tables.ITable;
import edu.wpi.first.wpilibj.tables.ITableListener;
/**
* Standard hobby style servo.
@@ -114,31 +115,37 @@ public class Servo extends PWM {
return "Servo";
}
private ITable m_table;
private ITableListener m_tableListener;
private NetworkTable m_table;
private NetworkTableEntry m_valueEntry;
private int m_valueListener;
@Override
public void initTable(ITable subtable) {
public void initTable(NetworkTable subtable) {
m_table = subtable;
updateTable();
if (m_table != null) {
m_valueEntry = m_table.getEntry("Value");
updateTable();
} else {
m_valueEntry = null;
}
}
@Override
public void updateTable() {
if (m_table != null) {
m_table.putNumber("Value", get());
if (m_valueEntry != null) {
m_valueEntry.setDouble(get());
}
}
@Override
public void startLiveWindowMode() {
m_tableListener = (source, key, value, isNew) -> set((double) value);
m_table.addTableListener("Value", m_tableListener, true);
m_valueListener = m_valueEntry.addListener((event) -> set(event.value.getDouble()),
EntryListenerFlags.kImmediate | EntryListenerFlags.kNew | EntryListenerFlags.kUpdate);
}
@Override
public void stopLiveWindowMode() {
// TODO: Broken, should only remove the listener from "Value" only.
m_table.removeTableListener(m_tableListener);
m_valueEntry.removeListener(m_valueListener);
m_valueListener = 0;
}
}