/*---------------------------------------------------------*\ | MSIMysticLight162Controller.h | | | | Driver for MSI Mystic Light 162-byte motherboard | | | | T-bond 03 Apr 2020 | | Adam Honse 06 Mar 2021 | | | | This file is part of the OpenRGB project | | SPDX-License-Identifier: GPL-2.0-only | \*---------------------------------------------------------*/ #pragma once #include #include #include #include "MSIMysticLightCommon.h" #include "RGBController.h" class MSIMysticLight162Controller { public: MSIMysticLight162Controller ( hid_device* handle, const char *path, unsigned short pid ); ~MSIMysticLight162Controller(); void SetMode ( MSI_ZONE zone, MSI_MODE mode, MSI_SPEED speed, MSI_BRIGHTNESS brightness, bool rainbow_color ); MSI_MODE GetMode(); void GetMode ( MSI_ZONE zone, MSI_MODE &mode, MSI_SPEED &speed, MSI_BRIGHTNESS &brightness, bool &rainbow_color, unsigned int &color ); void SetZoneColor ( MSI_ZONE zone, unsigned char red1, unsigned char grn1, unsigned char blu1, unsigned char red2, unsigned char grn2, unsigned char blu2 ); bool Update ( bool save ); std::string GetDeviceName(); std::string GetDeviceLocation(); std::string GetFWVersion(); std::string GetSerial(); size_t GetMaxOnboardLeds(); const std::vector* GetSupportedZones() { return supported_zones; } private: bool ReadSettings(); bool ReadFwVersion(); void ReadName(); ZoneData* GetZoneData ( FeaturePacket_162& dataPacket, MSI_ZONE zone ); hid_device* dev; std::string name; std::string location; std::string version_APROM; std::string version_LDROM; FeaturePacket_162 data; size_t numof_onboard_leds; const std::vector* supported_zones; };