3#include <ThunderLib/Auto/ThunderAutoTrajectory.hpp>
4#include <ThunderLib/Auto/ThunderAutoMode.hpp>
5#include <frc2/command/Command.h>
6#include <frc2/command/CommandPtr.h>
7#include <unordered_map>
8#include <unordered_set>
21class ThunderAutoProject;
52 bool load(
const std::filesystem::path& projectPath)
noexcept;
73 explicit operator bool()
const noexcept;
80 std::string
getName()
const noexcept;
121 bool hasAction(
const std::string& actionName)
const noexcept;
139 frc2::CommandPtr
getActionCommand(
const std::string& actionName)
const noexcept;
141 using BooleanConditionFunc = std::function<bool()>;
172 using SwitchConditionFunc = std::function<int()>;
201 SwitchConditionFunc
getSwitchCondition(
const std::string& conditionName)
const noexcept;
211 std::unique_ptr<ThunderAutoTrajectory>
getTrajectory(
const std::string& trajectoryName)
const noexcept;
220 bool hasTrajectory(
const std::string& trajectoryName)
const noexcept;
237 std::unique_ptr<ThunderAutoMode>
getAutoMode(
const std::string& autoModeName)
const noexcept;
246 bool hasAutoMode(
const std::string& autoModeName)
const noexcept;
294 using RemoteUpdateCallbackFunc = std::function<void()>;
295 using RemoteUpdateSubscriberID = size_t;
315 driver::ThunderAutoProject* getHandle()
noexcept;
316 const driver::ThunderAutoProject* getHandle()
const noexcept;
319 driver::ThunderAutoProject* m_handle;
321 std::unordered_map<std::string, std::shared_ptr<frc2::Command>> m_actionCommands;
322 std::unordered_map<std::string, BooleanConditionFunc> m_booleanConditions;
323 std::unordered_map<std::string, SwitchConditionFunc> m_switchConditions;
Definition ThunderAutoProject.hpp:25
void registerActionCommand(const std::string &actionName, frc2::CommandPtr command)
Definition ThunderAutoProject.cpp:39
std::unordered_set< std::string > getAutoModeNames() const noexcept
Definition ThunderAutoProject.cpp:164
void enableRemoteUpdates() noexcept
Definition ThunderAutoProject.cpp:182
bool isLoaded() const noexcept
Definition ThunderAutoProject.cpp:27
void setRemoteUpdatesEnabled(bool enabled) noexcept
Definition ThunderAutoProject.cpp:178
FieldSymmetry getFieldSymmetry() const noexcept
Definition ThunderAutoProject.cpp:168
std::unique_ptr< ThunderAutoTrajectory > getTrajectory(const std::string &trajectoryName) const noexcept
Definition ThunderAutoProject.cpp:138
bool unregisterRemoteUpdateSubscriber(RemoteUpdateSubscriberID id) noexcept
Definition ThunderAutoProject.cpp:199
bool isSwitchConditionRegistered(const std::string &conditionName) const noexcept
Definition ThunderAutoProject.cpp:125
frc2::CommandPtr getActionCommand(const std::string &actionName) const noexcept
Definition ThunderAutoProject.cpp:56
RemoteUpdateSubscriberID registerRemoteUpdateSubscriber(RemoteUpdateCallbackFunc callback) noexcept
Definition ThunderAutoProject.cpp:194
bool hasAction(const std::string &actionName) const noexcept
Definition ThunderAutoProject.cpp:52
std::unique_ptr< ThunderAutoMode > getAutoMode(const std::string &autoModeName) const noexcept
Definition ThunderAutoProject.cpp:153
void disableRemoteUpdates() noexcept
Definition ThunderAutoProject.cpp:186
BooleanConditionFunc getBooleanCondition(const std::string &conditionName) const noexcept
Definition ThunderAutoProject.cpp:112
FieldDimensions getFieldDimensions() const noexcept
Definition ThunderAutoProject.cpp:172
void registerSwitchCondition(const std::string &conditionName, SwitchConditionFunc condition)
Definition ThunderAutoProject.cpp:121
void registerBooleanCondition(const std::string &conditionName, BooleanConditionFunc condition)
Definition ThunderAutoProject.cpp:103
ThunderAutoProject() noexcept
Definition ThunderAutoProject.cpp:7
SwitchConditionFunc getSwitchCondition(const std::string &conditionName) const noexcept
Definition ThunderAutoProject.cpp:129
bool isActionCommandRegistered(const std::string &actionName) const noexcept
Definition ThunderAutoProject.cpp:48
bool hasAutoMode(const std::string &autoModeName) const noexcept
Definition ThunderAutoProject.cpp:160
bool load(const std::filesystem::path &projectPath) noexcept
Definition ThunderAutoProject.cpp:19
bool areRemoteUpdatesEnabled() const noexcept
Definition ThunderAutoProject.cpp:190
std::string getName() const noexcept
Definition ThunderAutoProject.cpp:35
bool discoverAndLoadFromDeployDirectory() noexcept
Definition ThunderAutoProject.cpp:23
std::unordered_set< std::string > getTrajectoryNames() const noexcept
Definition ThunderAutoProject.cpp:149
bool isBooleanConditionRegistered(const std::string &conditionName) const noexcept
Definition ThunderAutoProject.cpp:108
bool hasTrajectory(const std::string &trajectoryName) const noexcept
Definition ThunderAutoProject.cpp:145
Definition Trajectory.hpp:25