metaphase_led_controller/ULC2_controller.h Source File

1 [[PREPROC_HEADER_GUARD_BEGIN]]
2 
3 #include <HC_API.h>
4 #include <controllers_utils.h>
5 
6 
7 
8 namespace ControlAPI {
9 
10 
11  enum ExoLightDriveMode {
12  ExoLightDriveMode_DC,
13  ExoLightDriveMode_Strobe,
14  ExoLightDriveMode_Voltage
15  };
16 
17  enum ExoLightTriggerType {
18  TriggerType_Internal,
19  TriggerType_External
20  };
21 
26  public:
27  HC_CLASS_DEVICECOMMANDPACKAGE_META(ExoLightCommand_SetLighting)
28 
29  virtual ~ExoLightCommand_SetLighting() = default;
30 
31  bool outputEnabled = true;
32  };
33 
38  public:
39  HC_CLASS_DEVICECOMMANDPACKAGE_META(ExoLightCommand_SetDCLighting)
40 
41  virtual ~ExoLightCommand_SetDCLighting() = default;
42 #ifdef HC_API_FEATURE_NETWORKING
43  virtual void syncFromNetwork(CommandStatus* command) override;
44 #endif
45  float intensityPercent = 0.0f;
49  };
50 
55  public:
56  HC_CLASS_DEVICECOMMANDPACKAGE_META(ExoLightCommand_SetStrobeLighting)
57 
58  virtual ~ExoLightCommand_SetStrobeLighting() = default;
59 #ifdef HC_API_FEATURE_NETWORKING
60  virtual void syncFromNetwork(CommandStatus* command) override;
61 #endif
62  int strobeCurrentMilliAmps = 100;
67 
72  int strobePulseWidthMicroSec = 6;
73 
78  int strobeTriggerPeriodMicroSec = 1000;
79 
83  int strobeTriggerDelayMicroSec = 6;
84  };
85 
90  public:
91  HC_CLASS_DEVICECOMMANDPACKAGE_META(ExoLightCommand_SetVoltageLighting)
92 
93  virtual ~ExoLightCommand_SetVoltageLighting() = default;
94 #ifdef HC_API_FEATURE_NETWORKING
95  virtual void syncFromNetwork(CommandStatus* command) override;
96 #endif
97  int voltage = 3;
101  };
102 
103 
104  struct ULC2_DC_Mode {
109  };
110 
116 
121 
126 
127  };
128 
134 
135  };
136 
140  class HC_API ExoLight2DeviceInfo : public DeviceInfo {
141  public:
142  HC_CLASS_META(ExoLight2DeviceInfo)
143  HC_SWIG_SHAREDPTR(ExoLight2DeviceInfo)
144  friend class ULC2Controller;
145 
146  virtual ~ExoLight2DeviceInfo() = default;
147 
151  int channel = 1;
152 
153 
157  ExoLightDriveMode driveMode = ExoLightDriveMode::ExoLightDriveMode_DC;
158 
162  bool triggerControlsDC = false;
163 
167  bool triggerPolarity = false;
168 
172  ExoLightTriggerType triggerType = ExoLightTriggerType::TriggerType_Internal;
173 
177  bool outputEnabled = false;
178 
179 
180  ULC2_DC_Mode modeDCSettings;
181  ULC2_STROBE_Mode modeStrobeSettings;
182  ULC2_VOLTAGE_Mode modeVoltageSettings;
183 
184 
185 
186  private:
187 
188  };
189  class ULC2_BoostInternals;
190 
194  class HC_API ULC2Controller : public HardwareDeviceController {
195  public:
196  HC_CLASS_META(ULC2Controller)
197  HC_SWIG_SHAREDPTR(ULC2Controller)
198 
199 
200 
201  virtual ~ULC2Controller() = default;
202 #ifdef HC_API_MACRO_EXCLUDE_DOCS
203  virtual bool init() override;
204 
205  virtual bool issueCommand(CommandStatus* command) override;
206  std::shared_ptr<ULC2_BoostInternals> boostInternals;
207 #endif
208  std::string ipAddress = "172.16.1.1";
209  int localUdpPort = 5000;
210 
211 
212 
213  };
214 
215 }
216 
217 
218 [[PREPROC_HEADER_GUARD_END]]