/*-----------------------------------------*\ | SinowealthController.h | | | | Definitions and types for Sinowealth | | mice, including Glorious | | | | Niels Westphal (crashniels) 20/5/2020 | \*-----------------------------------------*/ #include "RGBController.h" #include #include #pragma once #define SINOWEALTH_CONFIG_SIZE 167 #define SINOWEALTH_CONFIG_SIZE_MIN 131 #define SINOWEALTH_CONFIG_REPORT_SIZE 520 #define SINOWEALTH_COMMAND_REPORT_SIZE 6 enum { GLORIOUS_MODE_OFF = 0x00, //does nothing GLORIOUS_MODE_RAINBOW = 0x01, GLORIOUS_MODE_STATIC = 0x02, GLORIOUS_MODE_SPECTRUM_BREATING = 0x03, GLORIOUS_MODE_TAIL = 0x04, GLORIOUS_MODE_SPECTRUM_CYCLE = 0x05, GLORIOUS_MODE_RAVE = 0x07, GLORIOUS_MODE_EPILEPSY = 0x08, //not in the official software GLORIOUS_MODE_WAVE = 0x09, GLORIOUS_MODE_BREATHING = 0x0a, }; enum { GLORIOUS_SPEED_SLOW = 0x41, GLORIOUS_SPEED_NORMAL = 0x42, GLORIOUS_SPEED_FAST = 0x43, }; enum { GLORIOUS_DIRECTION_UP = 0x00, GLORIOUS_DIRECTION_DOWN = 0x01, }; enum { GLORIOUS_MODE_BREATING_SLOW = 0x01, GLORIOUS_MODE_BREATING_NORMAL = 0x02, GLORIOUS_MODE_BREATING_FAST = 0x03, }; class SinowealthController { public: SinowealthController(hid_device* dev_data_handle, hid_device* dev_cmd_handle, char *_path); //RGB, Command, path ~SinowealthController(); unsigned int GetLEDCount(); std::string GetLocation(); std::string GetSerialString(); std::string GetFirmwareVersion(); void SetLEDColor(RGBColor* color_buf); void SetMode(unsigned char mode, unsigned char speed, unsigned char direction, RGBColor* color_buf); int GetProfile(); private: hid_device* dev_cmd; hid_device* dev_data; unsigned int led_count; unsigned char current_mode; unsigned char current_speed; unsigned char current_direction; unsigned char device_configuration[SINOWEALTH_CONFIG_REPORT_SIZE]; std::string location; };