metaphase_led_controller/ULC2_controller.h Source File

[[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;
        
        
 
    };
 
}// namespace ControlAPI
 
 
[[PREPROC_HEADER_GUARD_END]]