PathPlannerLib
Loading...
Searching...
No Matches
OneShotTriggerEvent.h
1#pragma once
2
3#include "pathplanner/lib/events/Event.h"
4#include "pathplanner/lib/events/EventTrigger.h"
5#include <string>
6#include <frc2/command/CommandScheduler.h>
7#include <frc2/command/Commands.h>
8
9namespace pathplanner {
11public:
18 OneShotTriggerEvent(units::second_t timestamp, std::string name) : Event(
19 timestamp), m_name(name), m_resetCommand(
20 frc2::cmd::Wait(0_s).AndThen(frc2::cmd::RunOnce([this]() {
21 EventTrigger::setCondition(m_name, false);
22 }
23 )
24 ).IgnoringDisable(true)) {
25 }
26
27 inline void handleEvent(EventScheduler *eventScheduler) override {
28 EventTrigger::setCondition(m_name, true);
29 // We schedule this command with the main command scheduler so that it is guaranteed to be run
30 // in its entirety, since the EventScheduler could cancel this command before it finishes
31 frc2::CommandScheduler::GetInstance().Schedule(m_resetCommand);
32 }
33
34 inline void cancelEvent(EventScheduler *eventScheduler) override {
35 // Do nothing
36 }
37
38 inline std::shared_ptr<Event> copyWithTimestamp(units::second_t timestamp)
39 override {
40 return std::make_shared < OneShotTriggerEvent > (timestamp, m_name);
41 }
42
43private:
44 std::string m_name;
45 frc2::CommandPtr m_resetCommand;
46};
47}
Definition: EventScheduler.h:15
Definition: Event.h:10
Definition: OneShotTriggerEvent.h:10
void handleEvent(EventScheduler *eventScheduler) override
Definition: OneShotTriggerEvent.h:27
std::shared_ptr< Event > copyWithTimestamp(units::second_t timestamp) override
Definition: OneShotTriggerEvent.h:38
void cancelEvent(EventScheduler *eventScheduler) override
Definition: OneShotTriggerEvent.h:34
OneShotTriggerEvent(units::second_t timestamp, std::string name)
Definition: OneShotTriggerEvent.h:18