mirror of
https://github.com/CalcProgrammer1/OpenRGB.git
synced 2025-12-23 23:37:48 -05:00
110 lines
2.8 KiB
C++
110 lines
2.8 KiB
C++
/*---------------------------------------------------------*\
|
|
| LightSaltController.h |
|
|
| |
|
|
| Driver for LightSalt Peripherals |
|
|
| |
|
|
| James Buren (braewoods) 23 Jul 2024 |
|
|
| |
|
|
| This file is part of the OpenRGB project |
|
|
| SPDX-License-Identifier: GPL-2.0-or-later |
|
|
\*---------------------------------------------------------*/
|
|
|
|
#pragma once
|
|
|
|
#include <string>
|
|
#include <hidapi.h>
|
|
#include "RGBController.h"
|
|
|
|
#define LIGHTSALT_PACKET_LENGTH 32
|
|
#define LIGHTSALT_WRITE_LENGTH (LIGHTSALT_PACKET_LENGTH + 1)
|
|
#define LIGHTSALT_READ_LENGTH (LIGHTSALT_PACKET_LENGTH)
|
|
|
|
enum
|
|
{
|
|
LIGHTSALT_TYPE_KEYBOARD,
|
|
LIGHTSALT_TYPE_KEYPAD,
|
|
LIGHTSALT_TYPE_MAXIMUM
|
|
};
|
|
|
|
enum
|
|
{
|
|
LIGHTSALT_MODE_CUSTOM,
|
|
LIGHTSALT_MODE_POINT,
|
|
LIGHTSALT_MODE_AREA,
|
|
LIGHTSALT_MODE_COLLAPSE,
|
|
LIGHTSALT_MODE_EXPAND,
|
|
LIGHTSALT_MODE_EXPLODE,
|
|
LIGHTSALT_MODE_DART,
|
|
LIGHTSALT_MODE_FLAME,
|
|
LIGHTSALT_MODE_LASER,
|
|
LIGHTSALT_MODE_BREATHING,
|
|
LIGHTSALT_MODE_TRICOLOR_RADAR,
|
|
LIGHTSALT_MODE_WHEEL_1,
|
|
LIGHTSALT_MODE_WHEEL_2,
|
|
LIGHTSALT_MODE_WAVE_1,
|
|
LIGHTSALT_MODE_WAVE_2,
|
|
LIGHTSALT_MODE_WAVE_3,
|
|
LIGHTSALT_MODE_RAINBOW_1,
|
|
LIGHTSALT_MODE_RAINBOW_2,
|
|
LIGHTSALT_MODE_MAXIMUM
|
|
};
|
|
|
|
enum
|
|
{
|
|
LIGHTSALT_SETS_MAX = 4,
|
|
LIGHTSALT_ROWS_MAX = 9,
|
|
LIGHTSALT_COLUMNS_MAX = 10
|
|
};
|
|
|
|
enum
|
|
{
|
|
LIGHTSALT_SPEED_MINIMUM = 0x01,
|
|
LIGHTSALT_SPEED_MAXIMUM = 0x32,
|
|
LIGHTSALT_SPEED_DEFAULT = 0x19
|
|
};
|
|
|
|
enum
|
|
{
|
|
LIGHTSALT_BRIGHTNESS_MINIMUM = 0x00,
|
|
LIGHTSALT_BRIGHTNESS_MAXIMUM = 0xFF,
|
|
LIGHTSALT_BRIGHTNESS_DEFAULT = 0x80
|
|
};
|
|
|
|
class LightSaltController
|
|
{
|
|
public:
|
|
LightSaltController(hid_device* dev_handle, const hid_device_info& info);
|
|
~LightSaltController();
|
|
|
|
std::string GetDeviceLocation();
|
|
std::string GetSerial();
|
|
std::string GetManufacturer();
|
|
std::string GetProduct();
|
|
std::string GetDeviceModel();
|
|
std::string GetDeviceClass();
|
|
std::string GetFirmwareVersion();
|
|
int GetDeviceType();
|
|
|
|
void SetColors(RGBColor* colors, int sets, int rows, int columns);
|
|
void ApplyColors(int sets);
|
|
void SaveColors(int sets);
|
|
void SetMode(int mode, int direction, int speed);
|
|
void SetFilter(RGBColor color);
|
|
void SetBrightness(uint8_t brightness);
|
|
|
|
private:
|
|
hid_device* dev;
|
|
|
|
std::string device_location;
|
|
std::string manufacturer;
|
|
std::string product;
|
|
std::string device_model;
|
|
std::string device_class;
|
|
std::string firmware_version;
|
|
int device_type;
|
|
|
|
void QueryDeviceModel();
|
|
void QueryDeviceClass();
|
|
void SetDeviceType();
|
|
};
|