/*---------------------------------------------------------*\ | SteelSeriesAeroxWirelessController.h | | | | Driver for SteelSeries Aerox 3, 5 and 9 Wireless | | | | Ensar S (esensar) 09 Sep 2024 | | | | This file is part of the OpenRGB project | | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ #pragma once #include #include #include #include "RGBController.h" #include "SteelSeriesGeneric.h" #include "SteelSeriesMouseController.h" #define STEELSERIES_AEROX3_WIRELESS_NAME "SteelSeries Aerox 3 Wireless (2.4 GHz wireless mode)" #define STEELSERIES_AEROX3_WIRELESS_WIRED_NAME "SteelSeries Aerox 3 Wireless (wired mode)" #define STEELSERIES_AEROX5_WIRELESS_NAME "SteelSeries Aerox 5 Wireless (2.4 GHz wireless mode)" #define STEELSERIES_AEROX5_WIRELESS_WIRED_NAME "SteelSeries Aerox 5 Wireless (wired mode)" #define STEELSERIES_AEROX5_DESTINY_WIRELESS_NAME "SteelSeries Aerox 5 Wireless Destiny 2 Edition (2.4 GHz wireless mode)" #define STEELSERIES_AEROX5_DESTINY_WIRELESS_WIRED_NAME "SteelSeries Aerox 5 Wireless Destiny 2 Edition (wired mode)" #define STEELSERIES_AEROX5_DIABLO_WIRELESS_NAME "SteelSeries Aerox 5 Wireless Diablo IV Edition (2.4 GHz wireless mode)" #define STEELSERIES_AEROX5_DIABLO_WIRELESS_WIRED_NAME "SteelSeries Aerox 5 Wireless Diablo IV Edition (wired mode)" #define STEELSERIES_AEROX9_WIRELESS_NAME "SteelSeries Aerox 9 Wireless (2.4 GHz wireless mode)" #define STEELSERIES_AEROX9_WIRELESS_WIRED_NAME "SteelSeries Aerox 9 Wireless (wired mode)" #define STEELSERIES_AEROX_WIRELESS_PACKET_SIZE 64 #define STEELSERIES_AEROX_WIRELESS_TIMEOUT 250 #define STEELSERIES_AEROX_WIRELESS_FLAG 0b01000000 static const steelseries_mouse aerox_3_wireless = { { 0x04, 0x05 }, { {"Front", 0 }, {"Middle", 1 }, {"Rear", 2 }, } }; static const steelseries_mouse aerox_9 = { { 0x04, 0x05 }, { {"Front", 0 }, {"Middle", 1 }, {"Rear", 2 }, {"Reactive", 3 }, } }; class SteelSeriesAeroxWirelessController: public SteelSeriesMouseController { public: SteelSeriesAeroxWirelessController(hid_device* dev_handle, steelseries_type proto_type, const char* path, std::string dev_name); ~SteelSeriesAeroxWirelessController(); std::string GetFirmwareVersion() override; steelseries_mouse GetMouse() override; void Save() override; void SetLightEffectAll(uint8_t effect) override; void SetColor ( unsigned char zone_id, unsigned char red, unsigned char green, unsigned char blue, unsigned char brightness ) override; private: bool IsWireless(); void SendInit(); void WriteBuffer(uint8_t* buffer); void SetBrightness(uint8_t brightness); uint8_t current_brightness; const char* name; };