Remove GetTable from wpilibc Sendable interface.

This allows nearly all m_table member variables to be removed.
This commit is contained in:
Peter Johnson
2017-09-02 00:35:30 -07:00
parent 040a8c6bcc
commit 0d4fde17e0
57 changed files with 87 additions and 259 deletions

View File

@@ -74,7 +74,6 @@ class ADXL345_I2C : public Accelerometer, public LiveWindowSendable {
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subtable) override;
void UpdateTable() override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
void StartLiveWindowMode() override {}
void StopLiveWindowMode() override {}
@@ -82,7 +81,6 @@ class ADXL345_I2C : public Accelerometer, public LiveWindowSendable {
I2C m_i2c;
private:
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_xEntry;
nt::NetworkTableEntry m_yEntry;
nt::NetworkTableEntry m_zEntry;

View File

@@ -76,7 +76,6 @@ class ADXL345_SPI : public Accelerometer, public LiveWindowSendable {
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subtable) override;
void UpdateTable() override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
void StartLiveWindowMode() override {}
void StopLiveWindowMode() override {}
@@ -84,7 +83,6 @@ class ADXL345_SPI : public Accelerometer, public LiveWindowSendable {
SPI m_spi;
private:
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_xEntry;
nt::NetworkTableEntry m_yEntry;
nt::NetworkTableEntry m_zEntry;

View File

@@ -55,7 +55,6 @@ class ADXL362 : public Accelerometer, public LiveWindowSendable {
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subtable) override;
void UpdateTable() override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
void StartLiveWindowMode() override {}
void StopLiveWindowMode() override {}
@@ -63,7 +62,6 @@ class ADXL362 : public Accelerometer, public LiveWindowSendable {
SPI m_spi;
double m_gsPerLSB = 0.001;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_xEntry;
nt::NetworkTableEntry m_yEntry;
nt::NetworkTableEntry m_zEntry;

View File

@@ -43,7 +43,6 @@ class AnalogAccelerometer : public SensorBase,
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
private:
void InitAccelerometer();
@@ -52,7 +51,6 @@ class AnalogAccelerometer : public SensorBase,
double m_voltsPerG = 1.0;
double m_zeroGVoltage = 2.5;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
};

View File

@@ -83,7 +83,6 @@ class AnalogInput : public SensorBase,
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
private:
int m_channel;
@@ -91,7 +90,6 @@ class AnalogInput : public SensorBase,
HAL_AnalogInputHandle m_port;
int64_t m_accumulatorOffset;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
};

View File

@@ -35,13 +35,11 @@ class AnalogOutput : public SensorBase, public LiveWindowSendable {
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
protected:
int m_channel;
HAL_AnalogOutputHandle m_port;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
};

View File

@@ -74,7 +74,6 @@ class AnalogPotentiometer : public Potentiometer, public LiveWindowSendable {
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subtable) override;
void UpdateTable() override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
/**
* AnalogPotentiometers don't have to do anything special when entering the
@@ -91,7 +90,6 @@ class AnalogPotentiometer : public Potentiometer, public LiveWindowSendable {
private:
std::shared_ptr<AnalogInput> m_analog_input;
double m_fullRange, m_offset;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
};

View File

@@ -38,12 +38,10 @@ class BuiltInAccelerometer : public Accelerometer,
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<NetworkTable> subtable) override;
void UpdateTable() override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
void StartLiveWindowMode() override {}
void StopLiveWindowMode() override {}
private:
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_xEntry;
nt::NetworkTableEntry m_yEntry;
nt::NetworkTableEntry m_zEntry;

View File

@@ -45,11 +45,9 @@ class Trigger : public Sendable {
void ToggleWhenActive(Command* command);
void InitTable(std::shared_ptr<nt::NetworkTable> subtable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
std::string GetSmartDashboardType() const override;
protected:
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_pressedEntry;
};

View File

@@ -161,12 +161,8 @@ class Command : public ErrorBase, public NamedSendable {
public:
std::string GetName() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subtable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
std::string GetSmartDashboardType() const override;
protected:
std::shared_ptr<nt::NetworkTable> m_table;
private:
nt::NetworkTableEntry m_runningEntry;
nt::NetworkTableEntry m_isParentedEntry;

View File

@@ -44,7 +44,6 @@ class Scheduler : public ErrorBase, public NamedSendable {
void UpdateTable();
std::string GetSmartDashboardType() const;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable);
std::shared_ptr<nt::NetworkTable> GetTable() const;
std::string GetName() const;
std::string GetType() const;
@@ -68,7 +67,6 @@ class Scheduler : public ErrorBase, public NamedSendable {
std::vector<std::string> commands;
std::vector<double> ids;
std::vector<double> toCancel;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_namesEntry;
nt::NetworkTableEntry m_idsEntry;
nt::NetworkTableEntry m_cancelEntry;

View File

@@ -44,11 +44,9 @@ class Subsystem : public ErrorBase, public NamedSendable {
public:
std::string GetName() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subtable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
std::string GetSmartDashboardType() const override;
protected:
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_hasDefaultEntry;
nt::NetworkTableEntry m_defaultEntry;
nt::NetworkTableEntry m_hasCommandEntry;

View File

@@ -61,7 +61,6 @@ class Compressor : public SensorBase, public LiveWindowSendable {
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
protected:
HAL_CompressorHandle m_compressorHandle;
@@ -70,7 +69,6 @@ class Compressor : public SensorBase, public LiveWindowSendable {
void SetCompressor(bool on);
int m_module;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_enabledEntry;
nt::NetworkTableEntry m_pressureSwitchEntry;
NT_EntryListener m_enabledListener = 0;

View File

@@ -100,7 +100,6 @@ class Counter : public SensorBase,
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
protected:
// Makes the counter count up.
@@ -113,7 +112,6 @@ class Counter : public SensorBase,
private:
int m_index = 0; ///< The index of this counter.
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
friend class DigitalGlitchFilter;
};

View File

@@ -43,13 +43,11 @@ class DigitalInput : public DigitalSource, public LiveWindowSendable {
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
private:
int m_channel;
HAL_DigitalHandle m_handle;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
friend class DigitalGlitchFilter;
};

View File

@@ -48,14 +48,12 @@ class DigitalOutput : public DigitalSource, public LiveWindowSendable {
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
private:
int m_channel;
HAL_DigitalHandle m_handle;
HAL_DigitalPWMHandle m_pwmGenerator;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
NT_EntryListener m_valueListener = 0;
};

View File

@@ -42,7 +42,6 @@ class DoubleSolenoid : public SolenoidBase, public LiveWindowSendable {
void StopLiveWindowMode();
std::string GetSmartDashboardType() const;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable);
std::shared_ptr<nt::NetworkTable> GetTable() const;
private:
int m_forwardChannel; ///< The forward channel on the module to control.
@@ -52,7 +51,6 @@ class DoubleSolenoid : public SolenoidBase, public LiveWindowSendable {
HAL_SolenoidHandle m_forwardHandle = HAL_kInvalidHandle;
HAL_SolenoidHandle m_reverseHandle = HAL_kInvalidHandle;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
NT_EntryListener m_valueListener = 0;
};

View File

@@ -90,7 +90,6 @@ class Encoder : public SensorBase,
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
int GetFPGAIndex() const;
@@ -104,7 +103,6 @@ class Encoder : public SensorBase,
std::unique_ptr<DigitalSource> m_indexSource = nullptr;
HAL_EncoderHandle m_encoder = HAL_kInvalidHandle;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_speedEntry;
nt::NetworkTableEntry m_distanceEntry;
nt::NetworkTableEntry m_distancePerTickEntry;

View File

@@ -37,10 +37,8 @@ class GyroBase : public Gyro,
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
private:
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
};

View File

@@ -87,7 +87,6 @@ class PIDController : public LiveWindowSendable, public PIDInterface {
PIDSource* m_pidInput;
PIDOutput* m_pidOutput;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_pEntry;
nt::NetworkTableEntry m_iEntry;
nt::NetworkTableEntry m_dEntry;
@@ -154,7 +153,6 @@ class PIDController : public LiveWindowSendable, public PIDInterface {
std::unique_ptr<Notifier> m_controlLoop;
Timer m_setpointTimer;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
std::string GetSmartDashboardType() const override;
void UpdateTable() override;
void StartLiveWindowMode() override;

View File

@@ -83,9 +83,7 @@ class PWM : public SensorBase, public LiveWindowSendable {
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
NT_EntryListener m_valueListener = 0;

View File

@@ -39,10 +39,8 @@ class PowerDistributionPanel : public SensorBase, public LiveWindowSendable {
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
private:
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_chanEntry[16];
nt::NetworkTableEntry m_voltageEntry;
nt::NetworkTableEntry m_totalCurrentEntry;

View File

@@ -58,10 +58,8 @@ class Relay : public MotorSafety, public SensorBase, public LiveWindowSendable {
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
protected:
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
NT_EntryListener m_valueListener = 0;

View File

@@ -40,10 +40,8 @@ class Servo : public SafePWM {
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
protected:
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
NT_EntryListener m_valueListener = 0;

View File

@@ -22,11 +22,6 @@ class Sendable {
*/
virtual void InitTable(std::shared_ptr<nt::NetworkTable> subtable) = 0;
/**
* @return the table that is currently associated with the sendable
*/
virtual std::shared_ptr<nt::NetworkTable> GetTable() const = 0;
/**
* @return the string representation of the named data type that will be used
* by the smart dashboard for this sendable

View File

@@ -15,6 +15,7 @@
#include "SmartDashboard/SendableChooserBase.h"
#include "networktables/NetworkTable.h"
#include "networktables/NetworkTableEntry.h"
namespace frc {
@@ -35,6 +36,7 @@ namespace frc {
template <class T>
class SendableChooser : public SendableChooserBase {
llvm::StringMap<T> m_choices;
nt::NetworkTableEntry m_selectedEntry;
template <class U>
static U _unwrap_smart_ptr(const U& value);

View File

@@ -59,7 +59,7 @@ void SendableChooser<T>::AddDefault(llvm::StringRef name, T object) {
template <class T>
auto SendableChooser<T>::GetSelected()
-> decltype(_unwrap_smart_ptr(m_choices[""])) {
std::string selected = m_table->GetString(kSelected, m_defaultChoice);
std::string selected = m_selectedEntry.GetString(m_defaultChoice);
if (selected == "") {
return decltype(_unwrap_smart_ptr(m_choices[""])){};
} else {
@@ -70,8 +70,8 @@ auto SendableChooser<T>::GetSelected()
template <class T>
void SendableChooser<T>::InitTable(std::shared_ptr<nt::NetworkTable> subtable) {
std::vector<std::string> keys;
m_table = subtable;
if (m_table != nullptr) {
if (subtable) {
m_selectedEntry = subtable->GetEntry(kSelected);
for (const auto& choice : m_choices) {
keys.push_back(choice.first());
}
@@ -79,9 +79,9 @@ void SendableChooser<T>::InitTable(std::shared_ptr<nt::NetworkTable> subtable) {
// Unlike std::map, llvm::StringMap elements are not sorted
std::sort(keys.begin(), keys.end());
m_table->GetEntry(kOptions).SetValue(
subtable->GetEntry(kOptions).SetValue(
nt::Value::MakeStringArray(std::move(keys)));
m_table->GetEntry(kDefault).SetString(m_defaultChoice);
subtable->GetEntry(kDefault).SetString(m_defaultChoice);
}
}

View File

@@ -25,7 +25,6 @@ class SendableChooserBase : public Sendable {
public:
virtual ~SendableChooserBase() = default;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
std::string GetSmartDashboardType() const override;
protected:
@@ -34,7 +33,6 @@ class SendableChooserBase : public Sendable {
static const char* kSelected;
std::string m_defaultChoice;
std::shared_ptr<nt::NetworkTable> m_table;
};
} // namespace frc

View File

@@ -38,12 +38,10 @@ class Solenoid : public SolenoidBase, public LiveWindowSendable {
void StopLiveWindowMode();
std::string GetSmartDashboardType() const;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable);
std::shared_ptr<nt::NetworkTable> GetTable() const;
private:
HAL_SolenoidHandle m_solenoidHandle = HAL_kInvalidHandle;
int m_channel; ///< The channel on the module to control.
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
NT_EntryListener m_valueListener = 0;
};

View File

@@ -71,7 +71,6 @@ class Ultrasonic : public SensorBase,
void StopLiveWindowMode() override;
std::string GetSmartDashboardType() const override;
void InitTable(std::shared_ptr<nt::NetworkTable> subTable) override;
std::shared_ptr<nt::NetworkTable> GetTable() const override;
private:
void Initialize();
@@ -97,7 +96,6 @@ class Ultrasonic : public SensorBase,
Counter m_counter;
DistanceUnit m_units;
std::shared_ptr<nt::NetworkTable> m_table;
nt::NetworkTableEntry m_valueEntry;
};