dmx_controller/dmx_controller.h Source File

[[PREPROC_HEADER_GUARD_BEGIN]]
 
 
#include <HC_API.h>
#include "controllers_utils.h"
 
namespace ControlAPI {
 
 
    //general dmx device with potentially multiple channels.
    class HC_API DMXDeviceInfo : public DeviceInfo {
    public:
        HC_CLASS_META(DMXDeviceInfo)
        HC_SWIG_SHAREDPTR(DMXDeviceInfo)
 
        friend class dmxController;
 
        virtual ~DMXDeviceInfo() = default;
 
        int DMXBaseAddress = 0;
        int numChannels = 1;
 
    private:
    };
 
    class HC_API DMXDeviceCommandPackage : public DeviceCommandPackage {
    public:
        HC_CLASS_DEVICECOMMANDPACKAGE_META(DMXDeviceCommandPackage)
        virtual ~DMXDeviceCommandPackage() = default;
    };
 
    class HC_API DMXDeviceCommandLightingPackage : public DMXDeviceCommandPackage {
    public:
        HC_CLASS_DEVICECOMMANDPACKAGE_META(DMXDeviceCommandLightingPackage)
        virtual ~DMXDeviceCommandLightingPackage() = default;
    };
 
    class HC_API DMXDeviceCommand_HSLColor8Bit : public DMXDeviceCommandLightingPackage {
    public:
        HC_CLASS_DEVICECOMMANDPACKAGE_META(DMXDeviceCommand_HSLColor8Bit)
        virtual ~DMXDeviceCommand_HSLColor8Bit() = default;
#ifdef HC_API_FEATURE_NETWORKING
        virtual void syncFromNetwork(CommandStatus* command) override;
#endif
        float h = 0.0f;
 
        float s = 0.5f;
 
        float l = 1.0f;
    };
 
    class HC_API DMXDeviceCommand_RGBColor8Bit : public DMXDeviceCommandLightingPackage {
    public:
        HC_CLASS_DEVICECOMMANDPACKAGE_META(DMXDeviceCommand_RGBColor8Bit)
        virtual ~DMXDeviceCommand_RGBColor8Bit() = default;
 
        virtual void cloneFrom(DeviceCommandPackage* other) override;
#ifdef HC_API_FEATURE_NETWORKING
        virtual void syncFromNetwork(CommandStatus* command) override;
#endif
        float red = 0.0f;
        float green = 0.0f;
        float blue = 0.0f;
    };
 
    class HC_API DMXDeviceCommand_SetPersonality : public DMXDeviceCommandPackage {
    public:
        HC_CLASS_DEVICECOMMANDPACKAGE_META(DMXDeviceCommand_SetPersonality)
        virtual ~DMXDeviceCommand_SetPersonality() = default;
        int personalityIndex = 0;
    };
 
    class dmxController_Internals;
    class HC_API dmxController : public HardwareDeviceController {
    public:
        HC_CLASS_META(dmxController)
        HC_SWIG_SHAREDPTR(dmxController)
 
 
        virtual ~dmxController() = default;
 
#ifdef HC_API_MACRO_EXCLUDE_DOCS
        virtual bool init() override;
 
        virtual bool issueCommand(CommandStatus* command) override;
 
        uint8_t DMX512Buffer[512];
#endif
       
 
protected:
 
 
#ifdef HC_API_MACRO_EXCLUDE_DOCS
        virtual bool SetLighting(int apiDeviceId, DMXDeviceCommandPackage* package);
 
        virtual bool SetColorHSL(int apiDeviceId, float hue, float sat, float lightness) ;
        virtual bool SetColorRGB(int apiDeviceId, float red, float green, float blue) ;
 
        virtual bool SetDMXPersonality(int apiDeviceId, int personalityIndex) ;
 
 
        std::shared_ptr<dmxController_Internals> internals_dmx;
#endif
    };
 
 
}// namespace ControlAPI
 
 
[[PREPROC_HEADER_GUARD_END]]