[[PREPROC_HEADER_GUARD_BEGIN]]
#include <HC_API.h>
#include <controllers_utils.h>
namespace ControlAPI {
enum ExoLightDriveMode {
ExoLightDriveMode_DC,
ExoLightDriveMode_Strobe,
ExoLightDriveMode_Voltage
};
enum ExoLightTriggerType {
TriggerType_Internal,
TriggerType_External
};
class HC_API ExoLightCommand_SetLighting : public DeviceCommandPackage {
public:
HC_CLASS_DEVICECOMMANDPACKAGE_META(ExoLightCommand_SetLighting)
virtual ~ExoLightCommand_SetLighting() = default;
bool outputEnabled = true;
};
class HC_API ExoLightCommand_SetDCLighting : public ExoLightCommand_SetLighting {
public:
HC_CLASS_DEVICECOMMANDPACKAGE_META(ExoLightCommand_SetDCLighting)
virtual ~ExoLightCommand_SetDCLighting() = default;
#ifdef HC_API_FEATURE_NETWORKING
virtual void syncFromNetwork(CommandStatus* command) override;
#endif
float intensityPercent = 0.0f;
};
class HC_API ExoLightCommand_SetStrobeLighting : public ExoLightCommand_SetLighting {
public:
HC_CLASS_DEVICECOMMANDPACKAGE_META(ExoLightCommand_SetStrobeLighting)
virtual ~ExoLightCommand_SetStrobeLighting() = default;
#ifdef HC_API_FEATURE_NETWORKING
virtual void syncFromNetwork(CommandStatus* command) override;
#endif
int strobeCurrentMilliAmps = 100;
int strobePulseWidthMicroSec = 6;
int strobeTriggerPeriodMicroSec = 1000;
int strobeTriggerDelayMicroSec = 6;
};
class HC_API ExoLightCommand_SetVoltageLighting : public ExoLightCommand_SetLighting {
public:
HC_CLASS_DEVICECOMMANDPACKAGE_META(ExoLightCommand_SetVoltageLighting)
virtual ~ExoLightCommand_SetVoltageLighting() = default;
#ifdef HC_API_FEATURE_NETWORKING
virtual void syncFromNetwork(CommandStatus* command) override;
#endif
int voltage = 3;
};
struct ULC2_DC_Mode {
int maxMilliAmpsDCMode = 200;
};
struct ULC2_STROBE_Mode {
int strobeMilliAmpsLimit = 1000;
int strobePulseWidthMaxLimitMicroSec = 200;
int strobeTriggerPeriodLimitMicroSec = 1000;
};
struct ULC2_VOLTAGE_Mode {
int voltagelimitVolts = 3;
};
class HC_API ExoLight2DeviceInfo : public DeviceInfo {
public:
HC_CLASS_META(ExoLight2DeviceInfo)
HC_SWIG_SHAREDPTR(ExoLight2DeviceInfo)
friend class ULC2Controller;
virtual ~ExoLight2DeviceInfo() = default;
int channel = 1;
ExoLightDriveMode driveMode = ExoLightDriveMode::ExoLightDriveMode_DC;
bool triggerControlsDC = false;
bool triggerPolarity = false;
ExoLightTriggerType triggerType = ExoLightTriggerType::TriggerType_Internal;
bool outputEnabled = false;
ULC2_DC_Mode modeDCSettings;
ULC2_STROBE_Mode modeStrobeSettings;
ULC2_VOLTAGE_Mode modeVoltageSettings;
private:
};
class ULC2_BoostInternals;
class HC_API ULC2Controller : public HardwareDeviceController {
public:
HC_CLASS_META(ULC2Controller)
HC_SWIG_SHAREDPTR(ULC2Controller)
virtual ~ULC2Controller() = default;
#ifdef HC_API_MACRO_EXCLUDE_DOCS
virtual bool init() override;
virtual bool issueCommand(CommandStatus* command) override;
std::shared_ptr<ULC2_BoostInternals> boostInternals;
#endif
std::string ipAddress = "172.16.1.1";
int localUdpPort = 5000;
};
}
[[PREPROC_HEADER_GUARD_END]]