Valkyrie 2026
Loading...
Searching...
No Matches
BaseSubsystem.h
1#pragma once
2
3#include <memory>
4#include <string>
5
6#include <frc/DriverStation.h>
7#include <frc/TimedRobot.h>
8#include <frc/Timer.h>
9#include <frc2/command/SubsystemBase.h>
10#include <networktables/NetworkTable.h>
11#include <networktables/NetworkTableEntry.h>
12#include <networktables/NetworkTableInstance.h>
13#include <valkyrie/Gamepad.h>
14#include <valkyrie/Loggable.h>
15#include <wpi/sendable/Sendable.h>
16#include <wpi/sendable/SendableBuilder.h>
17#include <wpi/sendable/SendableHelper.h>
18
19namespace valor {
20
49class BaseSubsystem : public frc2::SubsystemBase, public valor::Loggable {
50 public:
60 explicit BaseSubsystem(std::string name) : frc2::SubsystemBase{name}, Loggable{GetName()} { wpi::SendableRegistry::Remove(this); }
61
78 virtual void AnalyzeDashboard() {}
79
101 virtual void AssessInputs() {}
102
129 virtual void AssignOutputs() {}
130
142 virtual void Reset() {}
143
144 void SetGamepads(valor::Gamepad* _operatorGamepad, valor::Gamepad* _driverGamepad) {
145 operatorGamepad = _operatorGamepad;
146 driverGamepad = _driverGamepad;
147 }
148
149 protected:
150 valor::Gamepad* operatorGamepad = nullptr;
151 valor::Gamepad* driverGamepad = nullptr;
152
153 private:
154 void Periodic() {
155 if (frc::DriverStation::IsTeleopEnabled())
156 AssessInputs();
157
159
160 if (frc::DriverStation::IsEnabled())
162 }
163};
164} // namespace valor
BaseSubsystem(std::string name)
Construct a new Valor Subsystem object.
Definition BaseSubsystem.h:60
virtual void AnalyzeDashboard()
Synchronize dashboard data (both read and write).
Definition BaseSubsystem.h:78
virtual void AssessInputs()
Read controller logic and set subsystem state.
Definition BaseSubsystem.h:101
virtual void AssignOutputs()
Read subsystem state and send motor commands.
Definition BaseSubsystem.h:129
virtual void Reset()
Reset all subsystem state.
Definition BaseSubsystem.h:142
Enhanced wrapper around frc::XboxController.
Definition Gamepad.h:23
Base helper for publishing and subscribing values to NetworkTables.
Definition Loggable.h:53
Loggable(std::string_view name)
Construct a Loggable that registers a top-level table name.