10 #include "SensorBase.h"
11 #include "LiveWindow/LiveWindowSendable.h"
12 #include "tables/ITableListener.h"
36 typedef enum {kPeriodMultiplier_1X = 1, kPeriodMultiplier_2X = 2, kPeriodMultiplier_4X = 4} PeriodMultiplier;
38 explicit PWM(uint32_t channel);
39 PWM(uint8_t moduleNumber, uint32_t channel);
41 virtual void SetRaw(uint8_t value);
45 void SetBounds(int32_t max, int32_t deadbandMax, int32_t center, int32_t deadbandMin, int32_t min);
46 void SetBounds(
double max,
double deadbandMax,
double center,
double deadbandMin,
double min);
47 uint32_t GetChannel() {
return m_channel;}
48 uint32_t GetModuleNumber();
76 static const int32_t kPwmDisabled = 0;
83 bool m_eliminateDeadband;
85 int32_t m_deadbandMaxPwm;
87 int32_t m_deadbandMinPwm;
101 void InitPWM(uint8_t moduleNumber, uint32_t channel);
104 int32_t GetMaxPositivePwm() {
return m_maxPwm; };
105 int32_t GetMinPositivePwm() {
return m_eliminateDeadband ? m_deadbandMaxPwm : m_centerPwm + 1; };
106 int32_t GetCenterPwm() {
return m_centerPwm; };
107 int32_t GetMaxNegativePwm() {
return m_eliminateDeadband ? m_deadbandMinPwm : m_centerPwm - 1; };
108 int32_t GetMinNegativePwm() {
return m_minPwm; };
109 int32_t GetPositiveScaleFactor() {
return GetMaxPositivePwm() - GetMinPositivePwm();}
110 int32_t GetNegativeScaleFactor() {
return GetMaxNegativePwm() - GetMinNegativePwm();}
111 int32_t GetFullRangeScaleFactor() {
return GetMaxPositivePwm() - GetMinNegativePwm();}
virtual void SetPosition(float pos)
void InitTable(ITable *subTable)
void ValueChanged(ITable *source, const std::string &key, EntryValue value, bool isNew)
virtual float GetPosition()
static const int32_t kDefaultPwmStepsDown
void SetPeriodMultiplier(PeriodMultiplier mult)
static constexpr float kDefaultPwmCenter
virtual void SetRaw(uint8_t value)
static constexpr float kDefaultPwmPeriod
void StartLiveWindowMode()
void SetBounds(int32_t max, int32_t deadbandMax, int32_t center, int32_t deadbandMin, int32_t min)
std::string GetSmartDashboardType()
void EnableDeadbandElimination(bool eliminateDeadband)
void StopLiveWindowMode()
virtual void SetSpeed(float speed)