#pragma once
#include "rev/ServoChannel.h"
#include "rev/config/BaseConfig.h"
namespace rev::servohub {
class ServoChannelConfig : public BaseConfig {
public:
explicit ServoChannelConfig(ServoChannel::ChannelId channelId);
~ServoChannelConfig() override = default;
ServoChannelConfig(const ServoChannelConfig&) = delete;
ServoChannelConfig& operator=(const ServoChannelConfig&) = delete;
ServoChannelConfig(ServoChannelConfig&&) noexcept = delete;
ServoChannelConfig& operator=(ServoChannelConfig&&) noexcept = delete;
ServoChannelConfig& Apply(ServoChannelConfig& config);
ServoChannelConfig& PulseRange(uint32_t minPulse_us,
uint32_t centerPulse_us,
uint32_t maxPulse_us);
struct PulseRange_t {
uint32_t minPulse_us;
uint32_t centerPulse_us;
uint32_t maxPulse_us;
};
ServoChannelConfig& PulseRange(const PulseRange_t& pulseRange_us);
enum class BehaviorWhenDisabled {
kDoNotSupplyPower = 0,
kSupplyPower = 1,
};
ServoChannelConfig& DisableBehavior(BehaviorWhenDisabled behavior);
private:
ServoChannel::ChannelId m_channelId;
};
}