mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
[commands] Add GetName to Subsystem, use in Scheduler tracer epochs (#5836)
This commit is contained in:
@@ -261,7 +261,7 @@ public final class CommandScheduler implements Sendable, AutoCloseable {
|
||||
if (RobotBase.isSimulation()) {
|
||||
subsystem.simulationPeriodic();
|
||||
}
|
||||
m_watchdog.addEpoch(subsystem.getClass().getSimpleName() + ".periodic()");
|
||||
m_watchdog.addEpoch(subsystem.getName() + ".periodic()");
|
||||
}
|
||||
|
||||
// Cache the active instance to avoid concurrency problems if setActiveLoop() is called from
|
||||
|
||||
@@ -40,6 +40,15 @@ public interface Subsystem {
|
||||
*/
|
||||
default void simulationPeriodic() {}
|
||||
|
||||
/**
|
||||
* Gets the subsystem name of this Subsystem.
|
||||
*
|
||||
* @return Subsystem name
|
||||
*/
|
||||
default String getName() {
|
||||
return this.getClass().getSimpleName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the default {@link Command} of the subsystem. The default command will be automatically
|
||||
* scheduled when no other commands are scheduled that require the subsystem. Default commands
|
||||
|
||||
@@ -28,6 +28,7 @@ public abstract class SubsystemBase implements Subsystem, Sendable {
|
||||
*
|
||||
* @return Name
|
||||
*/
|
||||
@Override
|
||||
public String getName() {
|
||||
return SendableRegistry.getName(this);
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ void CommandScheduler::Run() {
|
||||
if constexpr (frc::RobotBase::IsSimulation()) {
|
||||
subsystem.getFirst()->SimulationPeriodic();
|
||||
}
|
||||
m_watchdog.AddEpoch("Subsystem Periodic()");
|
||||
m_watchdog.AddEpoch(subsystem.getFirst()->GetName() + ".Periodic()");
|
||||
}
|
||||
|
||||
// Cache the active instance to avoid concurrency problems if SetActiveLoop()
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
#include "frc2/command/Subsystem.h"
|
||||
|
||||
#include <wpi/Demangle.h>
|
||||
|
||||
#include "frc2/command/CommandPtr.h"
|
||||
#include "frc2/command/Commands.h"
|
||||
|
||||
@@ -16,6 +18,10 @@ void Subsystem::Periodic() {}
|
||||
|
||||
void Subsystem::SimulationPeriodic() {}
|
||||
|
||||
std::string Subsystem::GetName() const {
|
||||
return wpi::GetTypeName(*this);
|
||||
}
|
||||
|
||||
void Subsystem::SetDefaultCommand(CommandPtr&& defaultCommand) {
|
||||
CommandScheduler::GetInstance().SetDefaultCommand(this,
|
||||
std::move(defaultCommand));
|
||||
|
||||
@@ -18,11 +18,6 @@
|
||||
|
||||
namespace frc2 {
|
||||
|
||||
template <typename T>
|
||||
std::string GetTypeName(const T& type) {
|
||||
return wpi::Demangle(typeid(type).name());
|
||||
}
|
||||
|
||||
/**
|
||||
* A state machine representing a complete action to be performed by the robot.
|
||||
* Commands are run by the CommandScheduler, and can be composed into
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
#include <concepts>
|
||||
#include <functional>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
#include <wpi/FunctionExtras.h>
|
||||
@@ -59,6 +60,13 @@ class Subsystem {
|
||||
*/
|
||||
virtual void SimulationPeriodic();
|
||||
|
||||
/**
|
||||
* Gets the name of this Subsystem.
|
||||
*
|
||||
* @return Name
|
||||
*/
|
||||
virtual std::string GetName() const;
|
||||
|
||||
/**
|
||||
* Sets the default Command of the subsystem. The default command will be
|
||||
* automatically scheduled when no other commands are scheduled that require
|
||||
|
||||
@@ -30,7 +30,7 @@ class SubsystemBase : public Subsystem,
|
||||
*
|
||||
* @return Name
|
||||
*/
|
||||
std::string GetName() const;
|
||||
std::string GetName() const override;
|
||||
|
||||
/**
|
||||
* Sets the name of this Subsystem.
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <typeinfo>
|
||||
|
||||
namespace wpi {
|
||||
|
||||
@@ -18,6 +19,15 @@ namespace wpi {
|
||||
*/
|
||||
std::string Demangle(std::string_view mangledSymbol);
|
||||
|
||||
/**
|
||||
* Returns the type name of an object
|
||||
* @param type The object
|
||||
*/
|
||||
template <typename T>
|
||||
std::string GetTypeName(const T& type) {
|
||||
return Demangle(typeid(type).name());
|
||||
}
|
||||
|
||||
} // namespace wpi
|
||||
|
||||
#endif // WPIUTIL_WPI_DEMANGLE_H_
|
||||
|
||||
Reference in New Issue
Block a user