#pragma once
#include "rev/ClosedLoopTypes.h"
#include "rev/config/BaseConfig.h"
namespace rev::spark {
class LimitSwitchConfig : public BaseConfig {
public:
enum Behavior : uint32_t {
kKeepMovingMotor = 0,
kStopMovingMotor = 1,
kKeepMovingMotorAndSetPosition = 2,
kStopMovingMotorAndSetPosition = 3,
};
enum Type { kNormallyOpen = 0, kNormallyClosed = 1 };
LimitSwitchConfig() = default;
~LimitSwitchConfig() override = default;
LimitSwitchConfig(const LimitSwitchConfig&) = default;
LimitSwitchConfig& operator=(const LimitSwitchConfig&) = delete;
LimitSwitchConfig(LimitSwitchConfig&&) noexcept = delete;
LimitSwitchConfig& operator=(LimitSwitchConfig&&) noexcept = delete;
LimitSwitchConfig& Apply(LimitSwitchConfig& config);
LimitSwitchConfig& SetSparkMaxDataPortConfig();
[[deprecated(
"Use LimitSwitchConfig::ForwardLimitSwitchTriggerBehavior instead")]]
LimitSwitchConfig& ForwardLimitSwitchEnabled(bool enabled);
LimitSwitchConfig& ForwardLimitSwitchTriggerBehavior(Behavior behavior);
LimitSwitchConfig& ForwardLimitSwitchType(Type type);
LimitSwitchConfig& ForwardLimitSwitchPosition(double position);
[[deprecated(
"Use LimitSwitchConfig::ReverseLimitSwitchTriggerBehavior "
"instead")]]
LimitSwitchConfig& ReverseLimitSwitchEnabled(bool enabled);
LimitSwitchConfig& ReverseLimitSwitchTriggerBehavior(Behavior behavior);
LimitSwitchConfig& ReverseLimitSwitchType(Type type);
LimitSwitchConfig& ReverseLimitSwitchPosition(double position);
LimitSwitchConfig& LimitSwitchPositionSensor(FeedbackSensor sensor);
};
}