LiftingColumn_controller/LiftingColumn_controller.h Source File

1 [[PREPROC_HEADER_GUARD_BEGIN]]
2 
3 
4 #include "HC_API.h"
5 
6 
7 #include "controllers_utils.h"
8 
9 
10 namespace ControlAPI {
11 
16  public:
17  HC_CLASS_META(LiftingColumnMovementStateInfo)
18  HC_SWIG_SHAREDPTR(LiftingColumnMovementStateInfo)
19 #ifdef HC_API_FEATURE_NETWORKING
20  void cacheOnNetwork(CommandStatus* command) override;
21 #endif
22 
26  bool isStalled = false;
27  };
28 
32  class HC_API LiftingColumnCommandStatus : public CommandStatus {
33  public:
34  HC_CLASS_META(LiftingColumnCommandStatus)
35  HC_SWIG_SHAREDPTR(LiftingColumnCommandStatus)
36 
37  virtual ~LiftingColumnCommandStatus() = default;
38 
39  LiftingColumnMovementStateInfo *stateInfo();
40  };
41 
47  public:
48  HC_CLASS_DEVICECOMMANDPACKAGE_META(LiftingColumnCommandMovementPackage)
49 
50  virtual ~LiftingColumnCommandMovementPackage() = default;
51 
52  virtual void cloneFrom(DeviceCommandPackage* other) override;
53 
54 
55  #ifdef HC_API_MACRO_EXCLUDE_DOCS
56  virtual std::shared_ptr<CommandStateInfo> createCommandStateInfo() override { return std::make_shared<LiftingColumnMovementStateInfo>(); }
57  virtual std::shared_ptr<CommandStatus> createCommandStatus() override { return std::make_shared<LiftingColumnCommandStatus>(); }
58  #endif
59 
60 
64  bool expectStall = false;
65  };
66 
71  public:
72  HC_CLASS_DEVICECOMMANDPACKAGE_META(LiftingColumnCommandSetEncoderPos)
73  virtual ~LiftingColumnCommandSetEncoderPos() = default;
74 
75  #ifdef HC_API_MACRO_EXCLUDE_DOCS
76  virtual std::shared_ptr<CommandStateInfo> createCommandStateInfo() override { return std::make_shared<LiftingColumnMovementStateInfo>(); }
77  virtual std::shared_ptr<CommandStatus> createCommandStatus() override { return std::make_shared<LiftingColumnCommandStatus>(); }
78  virtual void cloneFrom(DeviceCommandPackage *other) override;
79  #endif
80 
81  int counts = 0;
82  };
83 
88  public:
89  HC_CLASS_DEVICECOMMANDPACKAGE_META(LiftingColumnCommandGetEncoderPos)
90 
91  virtual ~LiftingColumnCommandGetEncoderPos() = default;
92 
93  #ifdef HC_API_MACRO_EXCLUDE_DOCS
94  virtual std::shared_ptr<CommandStateInfo> createCommandStateInfo() override { return std::make_shared<LiftingColumnMovementStateInfo>(); }
95  virtual std::shared_ptr<CommandStatus> createCommandStatus() override { return std::make_shared<LiftingColumnCommandStatus>(); }
96  virtual void cloneFrom(DeviceCommandPackage *other) override;
97  #endif
98 
99 
100  };
101 
102 
103 
104 
105 
109  class HC_API LiftingColumnDeviceInfo : public DeviceInfo {
110  public:
111  HC_CLASS_META(LiftingColumnDeviceInfo)
112  HC_SWIG_SHAREDPTR(LiftingColumnDeviceInfo)
113  HC_CLASS_DEVICEINFO_META(LiftingColumnDeviceInfo, LiftingColumnCommandStatus)
114 
115 
116  friend class LiftingColumnController;
117 
119  virtual ~LiftingColumnDeviceInfo() = default;
120 
121  int roboClawAddress;
122 
123  int QPSS;
124 
125 
126  int encoderDeadZone;
127 
131  float mm_s_p_duty;
132 
137 
141  float countsPerMM;
142 
143 
144  protected:
145  enum MotionState {
146  STATE_IDLE = 0,
147  STATE_MOVING_TO_TARGET_POS
148  };
149  MotionState currentState = STATE_IDLE;
150  };
151 
152  class RoboClaw_ComHandler;
153  class SimpleLiftingMotionSim;
158 
159  public:
160  HC_CLASS_META(LiftingColumnController)
161  HC_SWIG_SHAREDPTR(LiftingColumnController)
162 
163  virtual ~LiftingColumnController();
164 
165 #ifdef HC_API_MACRO_EXCLUDE_DOCS
166  virtual bool init() override;
167  virtual bool deInit() override;
168 
169  virtual bool issueCommand(CommandStatus* command) override;
170 
171 #endif
172  public:
173  private:
174  bool SetEncoderPosition(int apiDeviceId, int encoderPos);
175  bool StartTrackingCommand(int apiDeviceId);
176 
177  bool ReadEncoderPosition(int apiDeviceId);
178 
179  virtual void disconnect(bool expected = false) override;
180 
181 #ifdef HC_API_MACRO_EXCLUDE_DOCS
182  std::shared_ptr<RoboClaw_ComHandler> roboClawComs;
183  std::shared_ptr<SimpleLiftingMotionSim> motionSim;
184 #endif
185  };
186 
187 
188 }
189 
190 
191 [[PREPROC_HEADER_GUARD_END]]