[command] Add simulationPeriodic method to Subsystem (#2577)

This method is run periodically during simulation, after periodic().
This commit is contained in:
Matt
2020-07-06 23:32:18 -07:00
committed by GitHub
parent 4043c461d7
commit a175f6e862
5 changed files with 29 additions and 3 deletions

View File

@@ -7,6 +7,7 @@
#include "frc2/command/CommandScheduler.h"
#include <frc/RobotBase.h>
#include <frc/RobotState.h>
#include <frc/TimedRobot.h>
#include <frc/WPIErrors.h>
@@ -192,6 +193,9 @@ void CommandScheduler::Run() {
// Run the periodic method of all registered subsystems.
for (auto&& subsystem : m_impl->subsystems) {
subsystem.getFirst()->Periodic();
if (frc::RobotBase::IsSimulation()) {
subsystem.getFirst()->SimulationPeriodic();
}
m_watchdog.AddEpoch("Subsystem Periodic()");
}

View File

@@ -1,5 +1,5 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2019 FIRST. All Rights Reserved. */
/* Copyright (c) 2019-2020 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
@@ -14,6 +14,8 @@ Subsystem::~Subsystem() {
void Subsystem::Periodic() {}
void Subsystem::SimulationPeriodic() {}
Command* Subsystem::GetDefaultCommand() const {
return CommandScheduler::GetInstance().GetDefaultCommand(this);
}