LRT14  1.0
 All Classes Namespaces Functions Variables Enumerations Enumerator
DrivetrainData.h
1 #ifndef DRIVETRAIN_DATA_H_
2 #define DRIVETRAIN_DATA_H_
3 
4 #include "ComponentData.h"
5 
10 {
11 public:
12  enum ControlMode
13  {
14  POSITION_CONTROL, VELOCITY_CONTROL, OPEN_LOOP
15  };
16 
17  enum Axis
18  {
19  FORWARD = 0, TURN = 1
20  };
21 
22  enum Side
23  {
24  LEFT = 0, RIGHT = 1
25  };
26 
28  static DrivetrainData* Get();
29 
30  void SetControlMode(Axis axis, ControlMode mode);
31  void SetVelocitySetpoint(Axis axis, float velocity);
32  void SetOpenLoopOutput(Axis axis, double setpoint);
33  void SetPositionSetpoint(Axis axis, double setpoint);
34  void SetRelativePositionSetpoint(Axis axis, double setpoint);
35  void SetPositionControlMaxSpeed(Axis axis, double speed);
36  ControlMode GetControlMode(Axis axis);
37  double GetOpenLoopOutput(Axis axis);
38  double GetVelocitySetpoint(Axis axis);
39  double GetPositionSetpoint(Axis axis);
40  double GetPositionControlMaxSpeed(Axis axis);
41  void OverrideForwardCurrentLimit(float limit);
42  void OverrideReverseCurrentLimit(float limit);
43  float GetForwardCurrentLimit();
44  float GetReverseCurrentLimit();
45  bool ShouldOverrideForwardCurrentLimit();
46  bool ShouldOverrideReverseCurrentLimit();
47 
48  void ResetCommands();
49  void Log();
50 
51 private:
52  ControlMode m_controlModes[2];
53  double m_desiredOpenLoopOutputs[2];
54  double m_desiredRates[2];
55  double m_positionSetpoints[2];
56  double m_maxSpeeds[2];
57  float m_zeroHeading;
58  bool m_overrideCurrentLimitForward;
59  bool m_overrideCurrentLimitReverse;
60  float m_currentLimitForward;
61  float m_currentLimitReverse;
62 
63  bool m_resetPositionSetpoint[2];
64 
65  friend class Drivetrain;
66 };
67 
68 #endif