isolight_puck_controller/isolight_puck_controller.h Source File

[[PREPROC_HEADER_GUARD_BEGIN]]
 
#include <HC_API.h>
#include <controllers_utils.h>
 
namespace ControlAPI {
 
 
    enum IsoLightPuck_LEDPatterns
    {
        IsoLightPuck_LEDPatterns_Continuous_Red = 16,
        IsoLightPuck_LEDPatterns_Continuous_Yellow,
        IsoLightPuck_LEDPatterns_Continuous_Green,
        IsoLightPuck_LEDPatterns_Continuous_Blue,
        IsoLightPuck_LEDPatterns_Continuous_Magenta,
 
        IsoLightPuck_LEDPatterns_Flashing_Red,
        IsoLightPuck_LEDPatterns_Flashing_Yellow,
        IsoLightPuck_LEDPatterns_Flashing_Green,
        IsoLightPuck_LEDPatterns_Flashing_Blue,
        IsoLightPuck_LEDPatterns_Flashing_Magenta,
 
        IsoLightPuck_LEDPatterns_Spin_Red,
        IsoLightPuck_LEDPatterns_Spin_Yellow,
        IsoLightPuck_LEDPatterns_Spin_Green,
        IsoLightPuck_LEDPatterns_Spin_Blue,
        IsoLightPuck_LEDPatterns_Spin_Magenta,
 
        IsoLightPuck_LEDPatterns_RainbowCycle
 
    };
 
    class HC_API IsolightPuckCommand_Update : public DeviceCommandPackage {
    public:
        HC_CLASS_DEVICECOMMANDPACKAGE_META(IsolightPuckCommand_Update)
 
        virtual ~IsolightPuckCommand_Update() = default;
 
 
#ifdef HC_API_MACRO_EXCLUDE_DOCS
        virtual std::shared_ptr<CommandStateInfo> createCommandStateInfo() override;
        virtual std::shared_ptr<CommandStatus> createCommandStatus() override;
#ifdef HC_API_FEATURE_NETWORKING
        virtual void syncFromNetwork(CommandStatus* command) override;
#endif
#endif
 
        IsoLightPuck_LEDPatterns ledPattern = IsoLightPuck_LEDPatterns_Continuous_Green;
 
    };
 
    class HC_API IsolightPuckUpdateStateInfo : public CommandStateInfo {
    public:
        HC_CLASS_META(IsolightPuckUpdateStateInfo)
        HC_SWIG_SHAREDPTR(IsolightPuckUpdateStateInfo)
 
        
        float sensor_GRXYZ_X = 0.0f;
        float sensor_GRXYZ_Y = 0.0f;
        float sensor_GRXYZ_Z = 0.0f;
 
 
        float sensor_x_normalized = 0.0f;
        float sensor_y_normalized = 0.0f;
        float sensor_z_normalized = 0.0f;
 
 
        float sensor_u_prime = 0.0f;
        float sensor_v_prime = 0.0f;
 
 
        float sensor_cct = 0.0f;
 
 
        float sensor_lightlevel = 0.0f;
#ifdef HC_API_FEATURE_NETWORKING
        virtual void cacheOnNetwork(CommandStatus* command) override;
#endif
    };
 
 
 
 
 
 
 
 
 
 
    class HC_API IsolightPuckCommandStatus : public CommandStatus {
    public:
        HC_CLASS_META(IsolightPuckCommandStatus)
        HC_SWIG_SHAREDPTR(IsolightPuckCommandStatus)
 
        virtual ~IsolightPuckCommandStatus() = default;
 
        IsolightPuckUpdateStateInfo* stateInfo();
    };
 
    class IsolightPuckComHandler;
    class HC_API IsolightPuckDeviceInfo : public DeviceInfo {
        public:
            HC_CLASS_META(IsolightPuckDeviceInfo)
            HC_SWIG_SHAREDPTR(IsolightPuckDeviceInfo)
            HC_CLASS_DEVICEINFO_META(IsolightPuckDeviceInfo, IsolightPuckCommandStatus)
 
            friend class IsolightPuckController;
            friend class IsolightPuckComHandler;
 
            virtual ~IsolightPuckDeviceInfo() = default;
 
 
            std::string port;
 
 
            float updateRateMS = 20;
 
 
 
        protected:
#ifdef HC_API_MACRO_EXCLUDE_DOCS
    std::shared_ptr<IsolightPuckComHandler> puckComs;
#endif
    };
 
    class HC_API IsolightPuckController : public HardwareDeviceController {
    public:
        HC_CLASS_META(IsolightPuckController)
        HC_SWIG_SHAREDPTR(IsolightPuckController)
 
        virtual ~IsolightPuckController() = default;
 
#ifdef HC_API_MACRO_EXCLUDE_DOCS
        virtual bool init() override;
 
        virtual bool issueCommand(CommandStatus* command) override;
        
#endif
    };
 
 
}
 
[[PREPROC_HEADER_GUARD_END]]