Compare commits

...
518 Commits
Author SHA1 Message Date
Adam Honse 9e7ec5f429 SDK v6: Implement client and server flags to indicate capabilities and negotiate local client status 2026-01-28 11:27:51 -06:00
Adam Honse 0e3fca55f6 SDK documentation updates 2026-01-25 16:49:20 -06:00
Adam Honse 78130c9b1e Expose LogManager in ResourceManager so that plugins can use it 2026-01-24 22:33:40 -06:00
Adam Honse 5d3f2bdbfe Update NetworkClient to use log manager and use common name constant in server logs 2026-01-24 19:32:15 -06:00
Adam Honse 7adefe8cc6 Use std::string.assign when setting strings in the SDK protocol and description handlers so that string size limit is enforced, then strip out null terminators 2026-01-24 19:32:15 -06:00
Adam Honse 2bdb7b54c0 Add optional HID device hotplug support (requires https://gitlab.com/OpenRGBDevelopers/hidapi-hotplug) 2026-01-24 19:32:15 -06:00
Adam Honse cd7aefed66 SDK v6: Use unique IDs for identifying RGBControllers in SDK protocol 2026-01-24 19:32:15 -06:00
Adam Honse d0b7678dde Rework list handling in ResourceManager by having NetworkClient own its own list rather than sharing ResourceManager's list 2026-01-24 19:32:15 -06:00
Adam Honse 9bb2a4e693 Move HID detector calls to RunHIDDetector/RunHIDWrappedDetector functions and return controller list from detector functions 2026-01-24 19:32:15 -06:00
Adam Honse 1ccaadd5d0 Detection progress SDK integration, NetworkClient callback rework 2026-01-24 19:32:15 -06:00
Adam Honse 06d8ae3cf7 Split out detection system from ResourceManager into DetectionManager
* Split detection system out into its own class, DetectionManager
    * Clean up ResourceManger's many callbacks into just two, one for detection and one general purpose
2026-01-24 19:32:15 -06:00
Adam Honse c6b74e5926 SDK Version 6 Updates
* SDK Protocol
    * Server sends its name to client
    * ProfileManager
      * Rename existing profile commands
      * Add Upload Profile, Download Profile, and Get Active Profile commands
    * SettingsManager
      * Add Get, Set, and Save Settings commands
    * Add zone::active_mode, zone::mode fields for zone-specific modes
    * Add NET_PACKET_ID_RGBCONTROLLER_UPDATEZONEMODE packet for updating zone modes
    * Add segment::matrix_map to segment packet
    * Add NET_PACKET_ID_RGBCONTROLLER_SIGNALUPDATE packet for passing SignalUpdate signal from server to clients
  * NetworkServer
    * Formatting cleanup
    * Use per-controller threads for handling NetworkServer controller-specific packets to avoid delays from controller mutexes
  * NetworkClient
    * Formatting cleanup
  * RGBController
    * Clean up and modularize descriptor functions
2026-01-24 19:32:15 -06:00
Adam Honse 975fc8a031 Rework Profiles to use JSON format
* Update OpenRGB Plugin Interface to include functions for loading/saving profile JSON data into OpenRGB profiles
    * Update ProfileManager to handle auto-load profiles (Exit, Open, Resume, Suspend) and move their settings to ProfileManager section
    * Update ProfileManager to store profiles in "profiles" folder in .json format
    * Update ProfileManager to store size profile in sizes.json
    * Update ProfileManager to perform device UpdateMode/UpdateColors when loading profile
    * Code cleanup of ProfileManager and profile-related code
2026-01-24 19:32:15 -06:00
Adam Honse 5e1685976c RGBController API Overhaul
* Reorganize and clean up RGBController API functions
    * Add functions to get protected RGBController member values
    * Make NetworkClient, ProfileManager, and ResourceManager friend classes so they can access protected members
    * Protected previously-public RGBController members
        * Information strings (name, vendor, description, version, serial location)
        * Device type
        * Active mode
        * Flags
        * LEDs vector
        * LED alternate names vector
        * Modes vector
        * Colors vector
        * Zones vector
    * Add CONTROLLER_FLAG_HIDDEN to allow plugins to hide controllers from control GUI
    * Add update reason codes to RGBController update callback and signal updates on more RGBController events
    * Add loop zone types and segmented zone type
    * Add matrix map field to segments
    * Rework matrix_map_type from using pointers to vector to prevent memory leaks
    * Rework KeyboardLayoutManager to return new matrix_map_type
    * Add access mutex to RGBController API
    * Add per-zone modes ot RGBController API
    * Add JSON description functions to RGBController API
2026-01-24 19:32:13 -06:00
Adam Honse 7783d9fa34 Move plugin SDK integration from callback into plugin API and PluginManager 2026-01-24 19:30:45 -06:00
Adam Honse 15f7e3cb96 Update Plugin API to 5 and SDK Protocol to 6 2026-01-24 19:30:44 -06:00
Adam Honse 40862f052f Update default builds to Qt6
* Update Debian packages to use Qt6
  * Update Fedora packages to use Qt6
  * Update default AppImage builds to use Qt6
  * Update default Windows builds to use Qt6
  * Update default MacOS builds to use Qt6
2026-01-24 19:30:44 -06:00
Kyle Cascade 55d2d44371 Convert the ClevoKeyboardController to use KLM 2026-01-24 18:11:26 -06:00
Koosha Hosseiny c6b05f5e3c Add support for 'OC' version of Astral card 2026-01-24 19:37:31 +01:00
Adam Honse ba91bf4d2e Silence codecvt deprecation warning in StringUtils.cpp 2026-01-23 09:14:01 -06:00
Adam Honse c1e5f7bb1b Use mbedtls@3 for MacOS as homebrew updated mbedtls to 4 and it breaks hueplusplus 2026-01-23 01:18:42 -06:00
Kyle Cascade 4855628d7a Added Effects for Clevo Lightbar 2026-01-21 16:55:46 -06:00
Muhamad Visat e48908573a add support for the Lian Li UniHub SL v1.8 2026-01-20 19:49:01 -06:00
Grace Atwood 1df9d60fa9 Add Gigabyte AORUS RTX 5080 MASTER GPU controller
New controller for RTX 5080 AORUS MASTER 16G (GV-N5080AORUS M-16GD) with
per-LED fan ring control. This GPU uses a different protocol than legacy
RGB Fusion 2 cards and requires a separate controller.

Hardware info:
- PCI Device ID: 0x2C02 (NVIDIA Blackwell)
- Subsystem ID: 0x4178
- I2C Address: 0x71

LED configuration:
- 3 fan rings × 8 LEDs each = 24 fan LEDs
- 1 logo LED
- Total: 25 individually addressable zones

Protocol details (reverse engineered from Gigabyte Control Center on Windows):
- Mode command (0x88) must include zone selector byte (0x02/0x05/0x06)
- Each fan requires mode command before color registers will respond
- Color registers: 0xB0-0xB3 (left), 0xB4-0xB7 (middle), 0xB8-0xBB (right)
- Logo: 0xBC with mode byte 0x00 (fans use 0x01)
- Apply command (0xAA) must be sent after each zone for multi-zone updates

Verified working on Linux with i2ctransfer and OpenRGB CLI:
- All 24 fan LEDs individually addressable
- Logo LED working
- Color cycling and per-LED gradients tested

Note: Fan LEDs only illuminate when fans are spinning.
2026-01-20 18:58:25 -06:00
TitanHZZ e69cb3bf88 Add support for 4-zone HP Omen laptops on Windows
Commits squashed and cleaned up by Adam Honse <[email protected]>
2026-01-20 18:48:02 -06:00
Kyle Cascade c58ae260e5 Add support for TUXEDO laptop per-key RGB keyboard (ITE 8291) 2026-01-20 18:47:53 -06:00
515orestis 555fb7b042 add support for manli RTX 4090 gallardo issue #4168 2026-01-20 18:47:31 -06:00
Kyle Cascade 7a4eb4ddf8 Add support for TUXEDO laptop lightbar (ITE 8291 rev 0.03) 2026-01-20 18:47:20 -06:00
Денис Николаев 4c3ddccd2f Initial commit for MSI B850 GAMING PLUS WIFI (MS-7E56) 2026-01-20 17:34:54 -06:00
Joseph East 68af4d047b Fall back to SteelSeriesApexBaseController::GetSerial() if not using new protocol 2026-01-18 10:54:54 +10:30
Kasslim 81128d1537 add part_number() to SPDAccessor interfaces and implement 2026-01-17 12:28:20 -06:00
Your Name# ac00a8f36f Add more device IDs for Palit cards 2026-01-15 18:05:08 +00:00
Leche de Rata 7f6eee119a Add support for MSI MPG X870I EDGE TI EVO WIFI. 2026-01-14 16:25:21 -08:00
Sergi Chafer 950951be6e Add support for MSI PRO X870E-P WIFI (MS-7E70) motherboard 2026-01-13 15:44:57 -06:00
Kasslim 351d7b9e74 SPDAccessor.cpp: replace magic numbers with defines 2026-01-11 19:19:16 +00:00
Adam Honse f948d6e1d3 Clean up some stuff in the Mountain keyboard controllers that violated conventions
* Mountain60KeyboardController's detector was setting the name member directly, this is an outdated convention that breaks the RGBController rework, moved to a Controller member
    * Mountain60KeyboardController had some sort of HID redetect logic, this should not be part of the Controller, this will be handled in the future by HID hotplugging
    * Both MountainKeyboardControllers defined static variables to keep track of current mode, moved these to class members so that they won't conflict if two instances exist
    * Don't send any device updates as part of SetupZones
2026-01-11 03:41:52 -06:00
Adam Honse 416898b97b Remove QMessageLogger debugging stuff left in Mountain keyboard controller 2026-01-11 02:22:13 -06:00
Adam Honse ec2290ae47 Drop Ubuntu 22.04 test as it has started failing 2026-01-11 02:02:49 -06:00
Adam Honse 02e0504227 Fix controls on OpenRGBClientInfoPage list not working on Qt6 2026-01-11 00:37:43 -06:00
Soufian Batta 0b45eac52c Add Support on Mountain Everest 60 Device /3 2026-01-10 15:20:38 -06:00
Francesco 15a3deadbe Added MSI B850M GAMING PLUS WIFI (MS-7E66) 2026-01-10 15:19:03 -06:00
Kasslim c1db812b67 Linux SPD accessors out-of-bounds check 2026-01-10 00:48:01 -06:00
Matthew Everitt ccee553257 Fix swapped PCI device IDs for Palit 5070Ti / 5080 2026-01-10 00:27:27 -06:00
Serhat Öktem 69ccd56fef Turkish language file 2026-01-09 23:53:34 -06:00
filipesn c13f031119 Fix support for SteelSeries Apex Pro TKL 2023 2026-01-09 23:51:32 -06:00
Matthew Everitt 5a484a0ef3 Enable support for MSI PRO B850-P WIFI (MS-7E56) motherboard 2026-01-09 21:55:45 +00:00
Skydust 95648b20b9 Fix wrong @detectors for Corsair Commander Core for udev rules generation 2026-01-08 20:06:02 +01:00
Alexender Yatsenko 72dc73cf88 Add support for Gigabyte Radeon RX 6700 XT GAMING OC 12G (1458:232D) 2026-01-06 15:23:02 -06:00
Richard Harris 5cfd064da1 Robobloq Monitor Light Strip support 2026-01-06 08:18:42 -06:00
Husky2490 de3482c791 Fixed direct mode on ASRock Polychrome USB devices 2026-01-06 00:45:31 -06:00
Adam Honse d09c66900d Set TCP_QUICKACK on Linux to improve responsiveness when using client/service configuration 2026-01-06 00:23:52 -06:00
Ektor Angelopoulos 2a1b7a9e2e Fixed MSI B450 Tomahawk Max not being detected 2026-01-05 12:03:50 -06:00
Sascha Hannes 9efdd13e58 Add Roccat Vulcan TKL Pro 2026-01-04 18:42:48 -06:00
Evan Debenham 0ef5103012 Add Gigabyte RTX 4070Ti Eagle 2026-01-04 17:13:27 -06:00
Daniel Lamphere 9fd352efc4 Prevent division by zero crash in QMK OpenRGB controllers 2026-01-04 12:51:34 -06:00
Daniel Lamphere d5db3d6428 Fix G703 Hero RGB control (wired and wireless) 2026-01-04 12:06:17 -06:00
Amadej Kastelic b3c3e167f3 controllers/powercolor/gpu: add 6900 XT; fix controller mapping 2026-01-03 12:32:00 -06:00
Richard Harris de35e6a403 Add Windows 11 x86_64 build products to gitignore 2026-01-02 22:27:06 +00:00
Adam Honse 36a6a864be Initialize NZXT Hue+ zones to detected size 2026-01-01 17:47:07 -06:00
Morgan Gangwere 452f3353ee Add support for MSI X870E Tomahawk Wifi (MS-7E59) 2026-01-01 09:59:40 -08:00
CjayDoesCode b7230b661f Add MSI RX 5600 XT Gaming X 2025-12-30 11:26:14 +08:00
Venkatesh Deore c28aa02946 [NEW DEVICE] Add support for MSI X870E GAMING PLUS WIFI (MS-7E70) 2025-12-29 19:59:47 -06:00
Dawid Kasieczka 1d208c14fa Add support for Redragon M914. Create generic Areson driver 2025-12-29 13:43:51 -06:00
Jonas Whatley 1a6d68d3bf Add Support for Gigabyte 5070 Aero OC 2025-12-29 13:37:16 -06:00
Bastiti 3d93b60e64 [New Device] Corsair Slipstream Wireless Receiver V2 2025-12-28 19:26:05 -06:00
Milan Cermak ff6cee33c4 Razer Chroma ARGB direct mode LED restoration 2025-12-27 10:02:26 +01:00
SU wuyi 5869e5ff31 Fix JGINYUE USB controller.Add destructor function to avoid memory leaks and serial occupied. 2025-12-26 10:34:32 +00:00
Diogo Trindade 298d80e056 Add support for Wooting devices with firmware v2.12 and above 2025-12-25 23:59:54 -06:00
Ljghϯnjng b6ad5e9223 Add support for Gigabyte RTX 4070 Aero OC 12G 2025-12-23 23:49:51 -06:00
IOXAM 4ff52d9bcf AORUS GeForce RTX 5090 MASTER & ICE on 0x71 2025-12-22 10:33:14 +00:00
Ljghϯnjng f9f9bf0cb8 Add support for Gigabyte RTX 4070 Aero OC 12G 2025-12-21 12:15:52 -06:00
Jerry Hoogenboom b62b2a4ad9 Add support for Gigabyte GeForce RTX 5080 Aero OC SFF 16G 2025-12-21 12:12:19 -06:00
Marco Martinez c91a9636cd Add support for Airgoo Fan + DRGB Controller 2025-12-20 11:36:40 -06:00
Adam Honse e631ca9f11 Add missing 0x08 LED in AMD Wraith Prism ring 2025-12-19 16:04:55 -06:00
idiom444 b2572eeeda Lenovo: Add Legion 7 Gen 10 (C197) support 2025-12-17 21:25:25 -08:00
Adam Honse d591cd638e Initial commit for Lian Li Universal Screen LED controller 2025-12-17 20:48:04 -06:00
Alexis Delahaye 2a87e38f7a Add support for Gigabyte Radeon RX 9060 XT GAMING 16G. 2025-12-17 13:56:53 -06:00
Adam Honse 42d96fbc3d Clean up .gitlab-ci.yml formatting and add rules to only build upstream repo on default branch or merge request 2025-12-17 09:34:06 -06:00
YanZhi 8dea53ba5c add DRGB E8 2025-12-17 09:02:12 -06:00
Adam Honse 68194928ca Fix more warnings 2025-12-16 11:30:24 -06:00
Egor Vorontsov 56b75aaffc Set SO_REUSEADDR on network sockets. 2025-12-16 06:24:30 +03:00
Adam Honse c509698b54 Fix a bunch of warnings 2025-12-15 19:21:15 -06:00
Adam Honse b3c5a65884 Reduce duplicate code in zone selection handling in OpenRGBDevicePage 2025-12-15 18:16:19 -06:00
pumpkin142 90e4da1a39 Adds support for the Gigabyte Radeon RX 9060 XT Gaming OC 16G. Verified Device ID 0x7590 and Subsystem 0x2429 via GPU-Z. Closes #4916
Commit amended to move from RGB Fusion GPU 2 to RGB Fusion 2 Blackwell GPU controller by Adam Honse <[email protected]>, as address was identified as 0x75
2025-12-14 00:37:01 -06:00
Peter Berendi fd270c2553 Ignore errors in Set-MpPreference -DisableRealtimeMonitoring $true 2025-12-14 00:36:48 -06:00
Richard Harris 21dc3612f7 Add support for Zotac RTX 3090 Amp Core Holo 2025-12-11 11:30:10 -06:00
Artem Baleevskih cff3a400a4 fix(keyboard): correct keymap overlay values for AULA F75 layout 2025-12-10 15:50:22 -06:00
Eduard Stanishevskij 279c16b5c0 support for asus tuf k3 gen2 2025-12-10 23:10:55 +02:00
Eduard Stanishevskij 9fc5408640 support for asus tuf k3 gen2
# Conflicts:
#	Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController/AsusAuraTUFKeyboardController.cpp
#	Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController/AsusAuraTUFKeyboardController.h
#	Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp
2025-12-10 22:50:22 +02:00
Eduard Stanishevskij 849904309b support for asus tuf k3 gen2
# Conflicts:
#	Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController/AsusAuraTUFKeyboardController.cpp
#	Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController/AsusAuraTUFKeyboardController.h
#	Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp
2025-12-10 22:46:19 +02:00
Matthias Bielak d0d9f04751 Add support for Turtle Beach Vulcan II TKL Pro 2025-12-10 13:58:05 -06:00
Adam Honse bd6b358e0d Fix some issues with detector settings page 2025-12-08 15:33:17 -06:00
Adam Honse 6da0dbf511 Add configuration for detector settings (HID safe mode and detection delay) to settings page 2025-12-08 01:00:09 -06:00
Artem Baleevskih 30dc059ddb Add LEOBOG Hi75C Pro (PID 0xA3) layout for Sinowealth 010C 2025-12-07 18:58:33 -06:00
Adam Honse 2ce0beec82 Add a configurable settings option to delay detection after opening 2025-12-07 15:32:53 -06:00
Adam Honse 74922bdf60 Add 1.0rc1 and 1.0rc2 to metainfo releases 2025-12-06 18:26:20 -06:00
Vendicated 46eebd9936 add support for MSI B850 Gaming WIFI6E (MS-7E80) 2025-12-06 17:53:48 -06:00
Adam Honse 0721f643c4 Check for errors in build-windows.bat so CI job fails if build fails 2025-12-06 17:45:19 -06:00
josch 0b5010cda6 Controllers/MNTKeyboardController: MSVC does not like C99 variable length... 2025-12-06 15:46:21 -06:00
Johannes Schauer Marin Rodrigues 246150b44a Controllers/MNTKeyboardController: fix hidapi.h include for windows 2025-12-06 02:11:21 +01:00
josch 21b113200c MNTKeyboardController: Add support for the MNT Reform and MNT Pocket Reform RGB keyboards 2025-12-05 08:05:07 -06:00
Kosta A 6672b53542 Add suport for brightness to Glorious Model O 2025-12-04 11:23:12 -06:00
Benjamin Birkelid 6e3271fe95 Add AULA F87 Pro (PID 0x0B) layout for Sinowealth 010C 2025-11-30 20:13:52 +00:00
Michal Malý 61d3bc0e98 On Linux include both the I2C/SMBus bus name and device path in the device_name 2025-11-30 20:37:35 +01:00
Michal Malý 77ff2a367c Add alternate name for OEM i2c bus exposed by Linux amdgpu driver 2025-11-30 20:37:35 +01:00
Michal Malý 4d92056b97 Implement i2c bus check for MSI GPUs 2025-11-30 20:37:35 +01:00
Michal Malý e8ea65432f Implement i2c bus check for Gigabyte Fusion 2 GPUs 2025-11-30 20:37:35 +01:00
Michal Malý 318fbeb995 Implement i2c bus check for Gigabyte Blackwell GPUs 2025-11-30 20:37:35 +01:00
Michal Malý ea798a7752 Implement i2c bus check for Asus Aura GPUs 2025-11-30 20:37:35 +01:00
Michal Malý 3608cafc32 Implement i2c bus check for PowerColor Red Devil GPUs 2025-11-30 20:37:35 +01:00
Michal Malý 4e0c09efd4 Move correct i2c bus detection for AMD GPUs to separate header file 2025-11-30 20:37:33 +01:00
Michal Malý f5fc3ff450 Do not introduce a new field in i2c_smbus class 2025-11-30 09:43:05 +01:00
Michal Malý 23ec68701a Check for bus name when looking for Sapphire GPU RGB controls 2025-11-30 09:39:15 +01:00
Tobias Gruetzmacher 5c30da6171 Add inital support for the ASUS TUF Gaming K3 GEN II MIKU EDITION 2025-11-29 18:00:46 -06:00
berendi f516970d76 Remove i2c_smbus_thread as mutex already prevents concurrent access 2025-11-29 17:17:06 -06:00
Clément Villemur b0a08c7d10 Added instructions to install udev rules for immutable systems 2025-11-29 17:02:03 -06:00
Patrick Uven c541716225 Add support for SteelSeries Apex 9 2025-11-29 16:35:43 -06:00
Tyler Hoeflicker 70f3ae1b6d Add support for the Gigabyte Radeon RX 6900 XT Gaming OC video card 2025-11-28 20:42:57 -06:00
Kosta A 8b9a4d141a Add support for Glorious Model I 2025-11-28 18:07:36 -06:00
Rodrigo Tavares 05b4f00629 Add support for Aula F99 and Aula F75 2025-11-28 13:51:39 -06:00
mikee 946383b502 Add Fnatic STREAK and miniSTREAK support 2025-11-27 14:15:46 -06:00
Prince Nna 7ef7edb1d3 Add legion 7s gen8 2025-11-27 14:11:36 -06:00
Adam Honse 396853658c Remove struct initial values as this causes compile errors on Windows Qt6, the only place it is used these values get initialized anyways 2025-11-26 22:28:57 -06:00
Adam Honse 696008b48f Add manual device configuration for QMK VialRGB protocol 2025-11-26 12:49:25 -06:00
Jax-Tsai d63a955082 add support for msi z890 gaming plus wifi 2025-11-25 23:05:35 -06:00
Chris M c1d67aa740 Refactored Gigabyte Fusion2USB controller
* Refactored RGBController_GigabyteRGBFusion2USBBoards &
RGBController_GigabyteRGBFusion2USBLayouts into single
GigabyteFusion2USB_Devices to align with structure of
RazerDevices and CorsairV2Devices.
* Replaced definition for `gb_fusion2_layout`
* Adjusted code paths to suit new variable structures
* Removed redundant files
2025-11-24 23:27:54 -06:00
Egor Vorontsov 7886dc4c14 Added VialRGB dynamic detector. 2025-11-24 20:37:08 -06:00
gashtal a3c77d20a0 Add support for MSI X870E CARBON WIFI RGB Headers 2025-11-24 20:34:54 -06:00
leon121212 6e53097f83 Add support for ASUS RTX5090 Matrix 2025-11-23 10:38:31 +08:00
Adam Honse e657f5c8d4 Make segment type configurable 2025-11-22 12:55:27 -06:00
UbayGD 31a0e2d61f Update fedora version for pipeline 2025-11-21 08:07:17 -06:00
superstrom fb4359b009 Kraken V3: Cleanup and add additional devices from pcaps 2025-11-19 00:32:47 -06:00
Marcel Berwanger 769d433373 added support for ViewSonic XG270QC 2025-11-18 08:01:18 -06:00
Caleb Evans b6673965e2 Add Palit GeForce RTX 5080 GamingPro 2025-11-18 07:51:03 -06:00
mhueske 9c66a76419 new device ASUS TUF Gaming B850M-Plus WiFi 7 - resolves #5228 2025-11-18 07:47:49 -06:00
Adam Honse d79f0cf928 Rework MacOS CI to build both Qt5 and Qt6 builds 2025-11-18 00:06:26 -06:00
Mathieu Roux 0d0a3bece4 Implements Asus TUF Gaming K3 Gen II PID 2025-11-16 11:55:08 -06:00
Adam Honse 0b25cae5e5 Add Logitech G502 X Plus wired detector, only shows as one zone in direct mode 2025-11-16 00:49:15 -06:00
Adam Honse a6b890a48d Use ResourceManager::RescanDevices() to initiate a rescan in places where ResourceManager::DetectDevices() was still being used 2025-11-14 20:31:10 -06:00
RobRoyEerkes da582e3ba5 Added Support for NZXT F420 case fans 2025-11-14 00:29:18 -06:00
Adam Honse 41928d17ec Set configuration directory to service_config in executable path if running as Windows service 2025-11-13 19:29:58 -06:00
Caique Ribeiro de Oliveira 7efa26a11d Add support for Razer BlackWidow V4 75% (Wired) 2025-11-13 15:12:42 -06:00
MadeUReadThis 7c07031603 Add initial support for ASUS ROG Strix G17 G733QR (layouts + zones) 2025-11-13 19:32:14 +00:00
Carlos Jordão 9fca9da408 Adds layout for Gigabyte B550 Aorus Elite AX V2 2025-11-13 07:45:38 -06:00
Chris M 380905cc72 Removed redundant layout declaration
* Removed `aura_core_laptop_16_values` as it is identical to
`aura_core_laptop_15_values`
2025-11-13 09:12:17 +11:00
Emilio Pulido Gil ec442416fa Add support for Asus ROG Strix G16 2023 (G614JZ) 2025-11-11 08:12:18 -06:00
Emilio Pulido Gil 0c079c2bf4 Add support for Asus ROG Strix Scope RX 96 2025-11-10 12:34:54 -06:00
Adam Honse 269e7c6115 Add tmpfiles for initializing /etc/openrgb for systemd service 2025-11-10 01:01:39 -06:00
Adam Honse b22438d345 Use /etc/openrgb as config path for systemd service 2025-11-10 00:05:13 -06:00
MG-5 999dbc3024 Add support for ASUS TUF Radeon RX 9070 Gaming OC device 2025-11-08 13:39:26 -06:00
Carlos Jordão fcb0363812 Change leds index - fixes bug #5203 2025-11-08 13:38:48 -06:00
nkey 463b827556 add support for STEELSERIES_QCK_PRISM_CLOTH_5XL_PID 2025-11-08 12:56:15 +01:00
Carlos Jordão f0a1ed2c0f Refactor HyperX Alloy Origins Core to use KLM 2025-11-03 16:53:46 -06:00
Bnyro 665069d98f Add support for Lenovo Legion K510 keyboard 2025-11-03 11:47:36 +01:00
superstrom bbf50ef812 add Kraken V3 X 2025-11-02 19:04:33 -06:00
Adam Honse ba186cfaee Add new controller for Razer Kraken V4 and Razer Kraken Kitty V3 Pro 2025-11-02 14:20:34 -06:00
Catarina Bressan 692ca00011 Updates msvc redist link in README.md 2025-10-31 07:57:46 -05:00
YanZhi f855d160ca Add YICO and clean up DRGB controller 2025-10-30 11:18:30 -05:00
Logan Phillips 9eb0169fcf Adds "Save to Device" feature to QuadCast 2S and logging 2025-10-29 12:59:16 -05:00
morg d99be3e0e6 Add support for QuadCast 2S. Closes #5113 2025-10-29 12:59:16 -05:00
Gediminas Jocys 5603ca86a3 Added support for Sapphire RX 9060 XT Nitro+ 2025-10-29 12:55:35 -05:00
justbispo 4835353ce0 Add support for alternative version (242B) of Gigabyte Radeon RX 7600 OC 2025-10-29 13:50:30 +00:00
superstrom 30ea38d133 Add Razer Quartz keyboard variant 2025-10-28 17:10:00 +00:00
morg 7a939c8233 Add support for Asus monitors. Closes #4174 2025-10-27 17:49:01 -05:00
Shottgun 51a014fecb Add support for Gigabyte Radeon RX 7700 XT GAMING OC 2025-10-27 08:38:39 -05:00
Serhii Koreiba (eXXon) 2acdcec678 Add missing backslash key to Cherry G80-3000N ANSI layout 2025-10-26 23:27:29 -05:00
Logan Phillips 8a63cfbf25 Add Cooler Master GD160 ARGB Gaming Desk support 2025-10-20 17:00:29 -05:00
Adam Honse d4e802f3b3 Clean up Linux LED controller 2025-10-20 12:23:13 -05:00
Chris Morgan c1781bc4cb Add support for led_classdev_mc via sysfs
Update the LinuxLEDController to support multicolor LEDs defined by
the Linux kernel. For multicolor LEDs Linux exposes a single
brightness which allows a range of 0 (off) to 255 (max) and a multi_intensity
value that accepts multiple channels of colors. This current implementation
assumes that there are 3 multi_intensity channels between 0 and 255.

https://docs.kernel.org/leds/leds-class-multicolor.html

Note that for now in Linux the brightness value doesn't so much affect
the brightness of the LED as it does apply a coefficient to the individual
channel intensities. For now hard code the brightness to 255 and simply
adjust the intensities to alter the color.

This change should keep the existing sysfs code path as-is and only attempt
to use this new method when a led_rgb_path is present in the config file.

For reference, my OpenRGB.json has the following lines:
`    "LinuxLEDDevices" : {
        "devices": [
            {
                "name": "Fan LED 1",
                "rgb_path": "/sys/class/leds/rgb:programming-0/"
            }
        ]
    }`

Signed-off-by: Chris Morgan <[email protected]>
2025-10-20 12:13:50 -05:00
Kulothungan U G 5966632276 Add support for msi b850m gaming plus wifi6e 2025-10-20 08:58:47 -05:00
Wojciech Lazarski 76d3a6051a Added support for Razer Thunderbolt 5 Dock Chroma 2025-10-16 23:41:31 +02:00
Adam Honse da9a96e3f2 Add ASUS ROG RTX4090 with PID 8933 2025-10-16 14:07:37 -05:00
Liam f573af369f Add support for Palit GeForce RTX 5070 Ti GamingPro 2025-10-15 18:14:32 +02:00
Andre Toerien b58b3c0402 Install systemd service under PREFIX 2025-10-15 07:53:15 -05:00
Logan Phillips db517c01af Support AE-5 and AE-5 Plus on Windows 2025-10-15 00:05:50 -04:00
Adam Honse 3fb56e610d Update CONTRIBUTING.md with comment box style updates and update CI section to reflect the CI state in 2025 2025-10-14 21:09:58 -05:00
Adam Honse 63936126f3 Perform VialRGB version and flag checks before registering QMK VialRGB controllers 2025-10-09 11:28:10 -05:00
Bergmann89 d7bab0dc7b Add support for MSI X870 GAMING PLUS WIFI (MS-7E47) 2025-10-09 09:14:44 +02:00
JoakoI98 fa03750957 Added support to RTX 5080 MSI Vanguard OC 2025-10-08 23:02:58 -05:00
Erik Junghanns d3f3df0b83 Improve PawnIO initialization 2025-10-07 22:48:05 -05:00
UbayGD 13edc400c9 feat: add initial support for MSI MPG B850I EDGE TI WIFI 2025-10-07 22:45:40 -05:00
Adam Honse 6aa8eb6101 Clean up OpenRGB and VialRGB QMK controllers into a common folder and move keymap definitions to QMK common files 2025-10-07 17:07:28 -05:00
Aaditya Menon 28ee8cd6eb Split Top and Side Logo zones for Gigabyte AORUS RTX 5080 XTREME WATERFORCE 2025-10-06 08:35:32 -05:00
Aaditya Menon 4ea6ccc17b Add support for Gigabyte AORUS GeForce RTX 5080 XTREME WATERFORCE 16G. Closes #5099 2025-10-05 13:03:50 -05:00
rom4ster e80a89f094 Fix X870 Implementation 2025-10-05 01:09:10 -05:00
Hans Lambermont 58360fb6d4 Add support for Corsair M75 Gaming Mouse (1B1C:1BF0) 2025-10-04 23:54:19 -05:00
BestPig 22bee9be29 Add config for the MSI B650M PROJECT ZERO (7E09) 2025-10-04 10:23:44 +00:00
phob d2e8ea066d Add support for ASUS ROG ASTRAL GeForce RTX 5080 OC WHITE in I2C PCI detector 2025-10-04 02:32:47 -05:00
Adam Honse 60b4810666 Initial QMK VialRGB controller 2025-10-04 02:03:40 -05:00
Adam Honse 93dd7f2122 Start server before detecting devices 2025-09-28 01:57:07 -05:00
Adam Honse c71cc4f18a Change SPDX license identifier from GPL 2.0 only to GPL 2.0 or later, as the original LICENSE file includes an or later clause at the end so the file headers were incorrect 2025-09-28 00:47:08 -05:00
ptkovsky 011d36492e Add support for the MSI GeForce RTX™ 5090 32G SUPRIM SOC 2025-09-27 10:55:01 -05:00
finnff 3cd7560534 Add support for the MSI GeForce RTX™ 5090 32G VANGUARD SOC 2025-09-25 11:58:41 -05:00
idoybh 82f4177bdc Add support for Gigabyte Radeon RX 7600 XT GAMING OC 16G 2025-09-25 07:58:34 -05:00
morg 3be23b3285 Add support for Redragon M987 Reaping 2025-09-24 10:37:03 -05:00
Tiago de Paula 63833ba123 Support for Gigabyte Radeon RX 7600 OC
- Vendor: 1002
- Device: 7480
- SVendor: 1458
- SDevice: 240b
- I2C Address: 0x55

Closes #4611
2025-09-21 20:36:54 -03:00
Jaden Korr 8d2d4d68c8 Support for MSI MEG X399 CREATION via MSI Mystic Light 162-byte Controller 2025-09-21 09:25:47 +02:00
⍚~Nex d72702129f Remove "Ice" from "Gigabyte GeForce RTX 4070 SUPER Eagle OC Ice" 2025-09-18 13:32:48 -05:00
Lucas Andreussi f2c1f85b2f Gigabyte RTX3060Ti GAMING OC LHR Rev 2 support 2025-09-18 08:30:59 -05:00
Barry H 1b01bbb7fc Set Asus USB motherboard to use Gen 1 2025-09-18 08:28:52 -05:00
Joachim 679b790687 Add support for Gigabyte Aorus Radeon RX 6900 XT Extreme Waterforce WB 2025-09-18 08:25:05 -05:00
Terence Tan dc7b13a5f7 Initial commit for Palit GeForce RTX 5060 Ti White OC 16GB 2025-09-18 08:09:53 -05:00
Adam Honse 5161d673b1 Change suffix back to git after 1.0rc2 release candidate 2025-09-15 23:31:49 -05:00
Adam Honse 0fca93e454 OpenRGB Release Candidate 1.0rc2 2025-09-14 14:31:57 -05:00
Adam Honse 664b794efa Update warning message if I2C doesn't load 2025-09-14 14:31:46 -05:00
Adam Honse c60cf5d2de Update SMBus documentation for PawnIO 2025-09-14 14:31:33 -05:00
Adam Honse 8d8f70bfdf Only build PawnIO support in 64-bit builds, provide non-functional stub implementations in super_io.cpp for 32-bit builds 2025-09-14 14:31:23 -05:00
Adam Honse b349c3ff2c Update PawnIO SMBus driver to use standardized API between all drivers, add NCT6793 driver, and remove WinRing0 SMBus drivers 2025-09-14 14:31:13 -05:00
Stephen Horvath 30a250c7df Replace WinRing0 with PawnIO for SMBus and Super-IO access on Windows
Commits squashed, files cleaned up, and rebased by Adam Honse <[email protected]>
2025-09-14 14:31:02 -05:00
Adam Honse a1449d99cf Change suffix back to git after 1.0rc2wr0 release candidate 2025-09-14 14:30:51 -05:00
Adam Honse a589a0f0b8 OpenRGB Release Candidate 1.0rc2wr0 2025-09-14 14:30:17 -05:00
Adam Honse 21594063ca More warning fixes 2025-09-14 13:41:44 -05:00
Adam Honse 8f89583eb0 Fix some warnings 2025-09-14 13:29:08 -05:00
austinleroy 8487b5c89d Adding support for Logitech G600 Mouse 2025-09-14 13:15:55 -05:00
John DeSilva 3a2d0f46ac Update HYTEMouseMatController to compile on FreeBSD
This change includes the libusb implementation files of
HYTEMouseMatController as sources when compiling on FreeBSD. Without
this change, we see `error: unknown type name 'HYTEMousematController'`.
2025-09-14 13:00:47 +00:00
John DeSilva 8af2461735 Include a startup source for FreeBSD
This seems to have been missed when the startup files were split out
during a refactor to support starting OpenRGB as a Windows service in
cf2df815e3.

Without this change, we see `ld: error: undefined symbol: main` when
compiling on FreeBSD.

I chose to name the file main_FreeBSD_Linux_MacOS instead of
main_Linux_MacOS_FreeBSD to keep the list alphabetical.
2025-09-14 13:00:47 +00:00
Adam Honse 6c8c48d2fe Add option for installing OpenRGB as a service in Wix installer 2025-09-14 03:54:27 -05:00
Fefedu973 f8895af960 Add support for the StreamDeck 2025-09-14 00:59:48 -05:00
Adam Honse 4664a27d6b Disable realtime malware scanning on GitLab CI so that it doesn't break builds with WinRing0 2025-09-14 00:27:46 -05:00
Adam Honse 2609822f8a Fix flickering on JGINYUE USB controller direct mode 2025-09-13 17:01:22 -05:00
Barry H cd3ad1822b Add EVGA RTX 2070 FTW3 Ultra OC, RTX 2080 XC HYBRID GAMING & 2080 Ti FTW3 Ultra Hydro Copper Gaming 2025-09-12 10:35:37 -05:00
Austin Blake 0a6930945e Add support for Gigabyte Radeon RX 9070 XT Gaming 16G 2025-09-11 11:57:14 -05:00
Alexander Mateides 4373df41ba Support for Gigabyte RX9070 Gaming OC 16G 2025-09-11 01:01:23 -05:00
Cosebdd 0971aa92c3 Excluded mode change from MSI GPU FPS Limiter 2025-09-10 07:49:49 -05:00
Fefedu973 f2aef24b8a Fixed govee direct mode control 2025-09-10 00:36:04 -05:00
silverspy18 f019320df1 Increased I2C_SMBUS_BLOCK_MAX and added error handling for buffer overflow. 2025-09-07 13:31:42 -05:00
Sniper Framirez 3af3d137a5 Support Gainward GeForce RTX 3060 Pegasus 12G 2025-09-07 00:33:08 -05:00
Nexrem 9d0d65ca3a Commonize other RedDevil driver under one tree and detector as V1 2025-09-05 08:45:20 -05:00
Nexrem 9a33c95b69 Add support for PowerColor Red Devil RX9070XT 2025-09-04 09:20:17 -05:00
Adam Honse b113fd8cbc Update RGBController documentation 2025-08-26 20:16:28 -05:00
Adam Honse 1836b5e417 Update Detector documentation 2025-08-26 17:07:02 -05:00
Erick Granados d5f9411ecb Fixes for the XPGSummoner keyboard controller 2025-08-26 12:23:25 -05:00
The Cyric 9ad0fa26bf Add another subdevice id for Gigabyte 5090 XTREME WATERFORCE 2025-08-26 08:16:03 -05:00
morg 6a4550c6f0 DetectNZXTKrakenElite: Add missing detector in controller comments 2025-08-26 08:09:01 -05:00
Daniel Clark cc3414408f Fix upstream regression. in DeviceUpdateLEDs() RGBFusion 2.0 USB. 2025-08-25 18:38:17 -05:00
Zoran Peričić fd8101b0c3 Support Kingston Fury Beast DDR5 with Jedec ID: 0x3011 2025-08-24 20:37:24 +02:00
2B 18f484c274 add support for Gigabyte Radeon RX 7900 XT GAMING OC 20G 2025-08-23 01:15:51 -05:00
Adam Honse 221f5007ab Fix laptop and monitor device type strings 2025-08-22 21:52:31 -05:00
Chris fbb7d16039 Changed Gigabyte Fusion 2 controller
* Removed warnings
* Refactored RGBFusion2USBController::SetLEDEffect() to improve readability
* Tidied up Mode declarations
* Other changes for style and formatting
2025-08-22 07:57:02 -05:00
Nikola Jurkovic ca84bad1fc MM700 Extended 3XL 2025-08-22 07:52:25 -05:00
Adam Honse be9fe7bb2d Fix Commander Core XT when configuring RGB header zone to zero and when switching between zero and nonzero modes 2025-08-21 22:43:32 -05:00
Nikola Jurkovic e21d29fa27 Commander Core XT 2025-08-21 22:38:04 -05:00
Erick Granados febdd2ad5e Added Controller for XPG Summoner 2025-08-18 15:26:53 -05:00
Daniel Clark 503ad36256 Merge rework of IT8297, IT5702, IT5711 driver code. Adds new controller IT82950. 2025-08-18 14:46:00 -05:00
Erick Granados 1be1656ce8 Added Controller for SteelSeries QCK PRISM XL Destiny 2: Lightfall Edition 2025-08-18 01:05:41 -05:00
Barry H cd6831ccbe Add Nollie 1, 8, 16 & 32 OS2 Firmware support 2025-08-18 01:03:18 -05:00
Adam Honse 676547b8b0 Pass name string into I2C DIMM detectors, store name in KingstonFuryDRAMController to avoid setting it in detector 2025-08-17 01:17:02 -05:00
Adam Honse c82a6052a2 Store name in AsusAuraUSBControllers to avoid setting it in detectors 2025-08-16 18:26:09 -05:00
Adam Honse a0726dc065 Store name in LogitechControllers to avoid setting it in detectors 2025-08-16 16:47:44 -05:00
Robert Ernst 86fbdfa6e7 Add Mystic Light Controller with PID 7D14 of Mainboard MSI A520M PRO 2025-08-16 12:04:55 -05:00
Anshi Mehta 0eb082f21b docs: improve wording and clarity in mode description 2025-08-16 12:03:36 -05:00
Shaydera 714736bf73 Fix RGB controller detection for Gigabyte AORUS RTX 5090 MASTER (use 0x75) 2025-08-16 12:03:05 -05:00
Adam Honse 079e344c5a Store name in RoccatControllers to avoid setting it in detectors 2025-08-16 02:07:11 -05:00
Adam Honse c2e0bd496f Store name in SinowealthControllers to avoid setting it in detectors 2025-08-16 01:15:15 -05:00
Adam Honse f1a050a503 Store name in SteelSeriesControllers to avoid setting it in detectors, rework SteelSeriesApexBaseController to move code out of header file 2025-08-16 00:37:51 -05:00
Adam Honse bf24ab3d53 Store name in ENESMBusController to avoid setting it in detector 2025-08-15 22:53:36 -05:00
Adam Honse 5190274004 Store name in MSIGPUv2Controller to avoid setting it in detector 2025-08-15 16:57:02 -05:00
Adam Honse 5db766cfa0 Store name in CoolerMasterControllers to avoid setting it in detectors 2025-08-15 16:16:13 -05:00
Eve ddc8bc5885 Alternate PCI subsystem ID for EVGA RTX3070 FTW3 Ultra LHR 2025-08-15 16:11:06 -05:00
Adam Honse 4036a9e414 Store name in CorsairPeripheralV2Controllers to avoid setting it in detectors 2025-08-15 12:19:05 -05:00
Adam Honse fa74b64d6d Remove unused CorsairK95PlatinumXTController files 2025-08-15 12:10:09 -05:00
Adam Honse 59c2ca2052 Store name in CorsairPeripheralControllers to avoid setting it in detectors 2025-08-15 11:40:28 -05:00
Chris M a528db1604 Simplified / Modularised the Appimage runner scripts 2025-08-15 01:06:20 -05:00
Chris M 72a5afc910 Added Trixie builds
* Combined common Deb build steps
2025-08-15 01:04:05 -05:00
jurkovic-nikola 974f7d1e26 commander core packet size 2025-08-15 00:39:42 -05:00
Adam Honse 2a6ad477e6 Store name in HoltekControllers to avoid setting it in detectors 2025-08-14 23:37:05 -05:00
Adam Honse ce64dbc686 Store name in ZotacV2GPUController to avoid setting it in detector 2025-08-14 23:36:56 -05:00
Adam Honse eb199dae67 Store name in ZotacTuringGPUController to avoid setting it in detector 2025-08-14 23:36:48 -05:00
Adam Honse ad9fd08a08 Store name in ZETKeyboardController to avoid setting it in detector 2025-08-14 23:36:40 -05:00
Adam Honse 86b2ced685 Store name in ZETEdgeAirProController to avoid setting it in detector 2025-08-14 23:36:33 -05:00
Adam Honse 4e96056ac4 Store name in ZalmanZSyncController to avoid setting it in detector 2025-08-14 23:01:51 -05:00
Adam Honse 84c24e70c0 Store name in WushiController to avoid setting it in detector 2025-08-14 22:59:05 -05:00
Adam Honse d069947252 Store name in WootingKeyboardController to avoid setting it in detector 2025-08-14 22:56:43 -05:00
Adam Honse 550503d757 Store name in ViewSonicController to avoid setting it in detector 2025-08-14 22:43:40 -05:00
Adam Honse ef6241fe38 Store name in ValkyrieKeyboardController to avoid setting it in detector 2025-08-14 22:31:59 -05:00
Adam Honse fcce668d66 Store name in TrustControllers to avoid setting it in detectors 2025-08-14 20:20:10 -05:00
Adam Honse 1bd9215a72 Store name in SRGBmodsControllers to avoid setting it in detectors 2025-08-14 20:11:54 -05:00
Adam Honse 840512751c Store name in SonyDualSenseController to avoid setting it in detector 2025-08-14 20:08:40 -05:00
Adam Honse 517287117b Store name in SkyloongController to avoid setting it in detector 2025-08-14 20:05:55 -05:00
Adam Honse 46d935c1a4 Store name in SapphireGPUControllers to avoid setting it in detectors 2025-08-14 20:03:41 -05:00
Adam Honse 9680d072fa Store name in RedSquareControllers to avoid setting it in detectors 2025-08-14 19:32:37 -05:00
Adam Honse 06413f2877 Store name in RedragonMouseController to avoid setting it in detector 2025-08-14 19:28:20 -05:00
Adam Honse ce86faabfe Store name in PowerColorRedDevilGPUController to avoid setting it in detector 2025-08-14 19:24:58 -05:00
Adam Honse 2134323bf8 Store name in PNYLovelaceGPUController to avoid setting it in detector 2025-08-14 19:17:34 -05:00
Adam Honse 67e08d3415 Store name in PatriotViperMouseController to avoid setting it in detector 2025-08-14 19:13:11 -05:00
Adam Honse f8d3c7a838 Store name in PalitGPUController to avoid setting it in detector 2025-08-14 19:10:35 -05:00
Adam Honse 2c630a5218 Store name in OKSKeyboardController to avoid setting it in detector 2025-08-14 19:06:29 -05:00
Adam Honse e418aa7f95 Store name in NZXTMouseController to avoid setting it in detector 2025-08-14 19:00:39 -05:00
Adam Honse 3ab1519e25 Store name in NZXTKrakenController to avoid setting it in detector 2025-08-14 11:50:06 -05:00
Adam Honse d8c40cab6d Store name in NZXTHue2Controller to avoid setting it in detector 2025-08-14 11:46:34 -05:00
Adam Honse f0e9650085 Store name in NZXTHue1Controller to avoid setting it in detector 2025-08-14 11:42:53 -05:00
Adam Honse a34d796059 Store name in NVIDIAIlluminationController to avoid setting it in detector 2025-08-14 11:42:43 -05:00
Adam Honse 9470cb69fd Store name in NvidiaESAController to avoid setting it in detector 2025-08-14 11:34:16 -05:00
Adam Honse 520b83a226 Store name in NollieController to avoid setting it in detector 2025-08-14 11:31:42 -05:00
Adam Honse 85af2e1ed7 Store name in N5312AController to avoid setting it in detector 2025-08-14 11:29:00 -05:00
Adam Honse f420e9bbbe Store name in MSIVigorController to avoid setting it in detector 2025-08-14 11:26:20 -05:00
Adam Honse 82cb9fb7d0 Fill in location in GigabyteSuperIORGBController 2025-08-14 10:19:50 -05:00
Adam Honse 719d7b8801 Store name in MSIRGBController to avoid setting it in detector 2025-08-14 10:19:11 -05:00
Adam Honse b13ca818bb Store name in MSIOptixController to avoid setting it in detector 2025-08-14 10:02:46 -05:00
Nikola Jurkovic 2dd013a0a0 AIO H1xx ELITE Series 2025-08-13 17:37:10 -05:00
Adam Honse 49e4f00aff Store name in MSIMysticLightControllers to avoid setting it in detectors 2025-08-13 11:49:45 -05:00
Adam Honse 4c018421a2 Fix warning from unused name parameter in LianLiControllerDetect 2025-08-12 19:33:15 -05:00
Adam Honse a2826ec865 Store name in MSIGPUController to avoid setting it in detector 2025-08-12 19:27:44 -05:00
Adam Honse c256b6246a Store name in MountainKeyboardController to avoid setting it in detector 2025-08-12 18:57:10 -05:00
Adam Honse f9bfb951ca Store name in MintakaKeyboardController to avoid setting it in detector 2025-08-12 18:54:35 -05:00
Adam Honse 8c63eeea47 Store name in LuxaforController to avoid setting it in detector 2025-08-12 18:48:34 -05:00
Adam Honse b136e7739a Store name in LinuxLEDController to avoid setting it in detector 2025-08-12 18:44:35 -05:00
Adam Honse 2967ccb1cb Add a mutex and remove a timeout to reduce flicker on HYTE Q60 logo LEDs 2025-08-12 13:10:36 -05:00
Adam Honse 03d5dd6008 Fix name initialization typo in HYTENexusController 2025-08-12 10:14:00 -05:00
Adam Honse 89d1ee2483 Remove name override for LianLiStrimerLConnect to match other LianLi controllers 2025-08-12 09:55:40 -05:00
Adam Honse c313b19fc5 Store name in LGMonitorController to avoid setting it in detector 2025-08-12 09:53:03 -05:00
Nikola Jurkovic 2a6856a5d2 fix led enumeration when lcd cap is installed 2025-08-12 08:47:23 -05:00
Adam Honse f3c7a213b1 Store name in LexipMouseController to avoid setting it in detector 2025-08-11 20:46:58 -05:00
Adam Honse f6ddf5676a Store name in LenovoMotherboardController to avoid setting it in detector 2025-08-11 20:45:07 -05:00
Adam Honse b331fbcd4d Store name in LenovoControllers to avoid setting it in detectors 2025-08-11 20:37:48 -05:00
Adam Honse 41eec46fa7 Store name in LegoDimensionsToypadBaseController to avoid setting it in detector 2025-08-11 20:31:05 -05:00
Adam Honse 0eb34eec25 Store name in LEDStripController to avoid setting it in detector 2025-08-11 20:23:07 -05:00
Adam Honse a1f144daf2 Store name in KeychronKeyboardController to avoid setting it in detector 2025-08-11 18:29:59 -05:00
Adam Honse ca73941e5d Store name in IonicoController to avoid setting it in detector 2025-08-11 18:07:13 -05:00
Adam Honse 0bdf600409 Store name in InstantMouseController to avoid setting it in detector 2025-08-11 18:04:55 -05:00
Adam Honse d5f8e2cac9 Store name in HYTENexusController to avoid setting it in detector 2025-08-11 18:02:26 -05:00
Adam Honse 20f3e5db0b Store name in HYTEMousematController to avoid setting it in detector 2025-08-11 17:24:00 -05:00
Adam Honse d412ef5e17 Store name in HYTEKeyboardController to avoid setting it in detector 2025-08-11 17:24:00 -05:00
Adam Honse 0269cdd068 Store name in HyperXMousematControllers to avoid setting it in detector 2025-08-11 17:24:00 -05:00
Nikola Jurkovic 12f90a67f9 link system hub fixups 2025-08-11 10:08:54 -05:00
Adam Honse ca554d9ef6 Store name in HyperXMouseControllers to avoid setting it in detectors 2025-08-10 21:26:58 -05:00
Adam Honse 0c0ffe7f5c Store name in HyperXMicrophoneController to avoid setting it in detector 2025-08-10 21:02:42 -05:00
Adam Honse 0eee6044b2 Fix name setting in GalaxGPUv1Controller 2025-08-10 16:55:24 -05:00
Adam Honse da21f992c5 Store name in HyperXKeyboardControllers to avoid setting it in detectors 2025-08-10 16:51:32 -05:00
Adam Honse 6c8a46cc7d Store name in HyperXDRAMController to avoid setting it in detector 2025-08-10 16:22:38 -05:00
Adam Honse aa31e21868 Don't override name in HoltekControllerDetect, names are generic so not saving them in Controller 2025-08-10 16:17:36 -05:00
lightminerva ee66121364 Move corsair k95 rgb platinum xt to the corsair peripheral v2 controller 2025-08-10 14:39:44 -05:00
Adam Honse 327edf2a6b Store name in GigabyteSuperIORGBController to avoid setting it in detector 2025-08-10 00:33:01 -05:00
Adam Honse 2535ac3edf Store name in GigabyteRGBFusionGPUController to avoid setting it in detector 2025-08-10 00:27:45 -05:00
Adam Honse df56b42e62 Store name in GigabyteRGBFusion2GPUController to avoid setting it in detector 2025-08-10 00:22:08 -05:00
Adam Honse bed69130fd Store name in GigabyteRGBFusion2BlackwellGPUController to avoid setting it in detector 2025-08-10 00:18:25 -05:00
Adam Honse f54460fd2e Store name in GigabyteAorusPCCaseController to avoid setting it in detector 2025-08-10 00:08:59 -05:00
Adam Honse 2bde9b287f Store name in GigabyteAorusMouseController to avoid setting it in detector 2025-08-10 00:07:00 -05:00
Adam Honse c8abbc6054 Add Razer Blackwidow V4 Pro 75% (Wired) 2025-08-08 19:20:35 -05:00
Adam Honse cba7c016d3 Store name in GigabyteAorusLaptopController to avoid setting it in detector 2025-08-08 11:43:37 -05:00
Adam Honse 7d0db424ec Store name in GigabyteAorusCPUCoolerController to avoid setting it in detector 2025-08-08 11:37:10 -05:00
Adam Honse 6f9e164874 Store name in GalaxGPUControllers to avoid setting it in detectors 2025-08-08 11:36:59 -05:00
Adam Honse 2927135cdd Store name in GaiZhongGaiControllers to avoid setting it in detector 2025-08-08 11:26:55 -05:00
Adam Honse 0afcdbd0ca Store name in GainwardGPUControllers to avoid setting it in detectors 2025-08-08 11:21:43 -05:00
Adam Honse 8813c9936d Store name in EVGAUSBControllers to avoid setting it in detectors 2025-08-08 00:11:31 -05:00
Adam Honse abe7068197 Store name in EVisionKeyboardControllers to avoid setting it in detectors 2025-08-07 23:22:41 -05:00
Adam Honse d7f0872690 Store name in EVGATuringGPUController to avoid setting it in detector 2025-08-07 23:04:29 -05:00
Adam Honse df75659778 Rework EVGAPascalGPUController to use I2C PCI detector and store name in controller to avoid setting it in detector 2025-08-07 23:03:53 -05:00
Adam Honse c32663bb32 Rework EVGAGP102GPUController to use I2C PCI detector and store name in controller to avoid setting it in detector 2025-08-07 11:55:18 -05:00
Adam Honse c94eed432d Store name in EVGAAmpereGPUController to avoid setting it in detector 2025-08-07 11:53:26 -05:00
Adam Honse a73a879238 Store name in DuckyKeyboardController to avoid setting it in detector 2025-08-07 11:17:54 -05:00
Adam Honse a8500a2a8a Store name in DRGBController to avoid setting it in detector 2025-08-06 17:18:39 -05:00
Adam Honse 718962c188 Store name in DasKeyboardController to avoid setting it in detector 2025-08-06 17:13:55 -05:00
Adam Honse e6190ec275 Store name in DreamCheekyController to avoid setting it in detector 2025-08-06 11:31:48 -05:00
Adam Honse 13e8f70438 Store name in DarkProjectrKeyboardController to avoid setting it in detector 2025-08-06 11:27:37 -05:00
Adam Honse ea206235c5 Store name in CryorigH7QuadLumiController to avoid setting it in detector 2025-08-06 08:33:36 -05:00
Adam Honse dc0103a155 Store name in CreativeSoundBlasterXG6Controller to avoid setting it in detector 2025-08-06 08:25:20 -05:00
Adam Honse 31ec06b576 Store name in CougarControllers to avoid setting it in detectors 2025-08-06 00:48:13 -05:00
Adam Honse 17a58b4c22 Store name in CorsairLightingNodeController to avoid setting it in detector 2025-08-06 00:48:13 -05:00
Chris Pawlukiewicz 56564092bc New device: Gigabyte GV-N5090GAMING-OC-32GD 2025-08-05 20:57:48 -05:00
Adam Honse 2b546fce9f Store name in CorsairHydroPlatinumController to avoid setting it in detector 2025-08-05 20:50:38 -05:00
Sirs0ri 69a065eeed New device: ASUS ROG-STRIX-RTX3070-8G-V2-GAMING 2025-08-05 13:49:20 -05:00
Chris M a7c01e039d Fixed Gigabyte Blackwell GPU controller metadata 2025-08-05 19:37:26 +10:00
Adam Honse 4639833bdb Store name in CorsairHydroController to avoid setting it in detector 2025-08-04 17:35:00 -05:00
Adam Honse bf6fe2b4fb Default name in RGBController_CorsairHydro2 to avoid setting it in detector 2025-08-04 17:24:36 -05:00
Adam Honse 04d2ebacca Store name in CorsairDominatorPlatinumController to avoid setting it in detector 2025-08-04 17:18:26 -05:00
Adam Honse e44fd9ed78 Store name in CorsairCommanderCoreController to avoid setting it in detector, fix detector name 2025-08-04 17:15:58 -05:00
Adam Honse 526d35edfe Store name in ColorfulGPUControllers to avoid setting it in detectors 2025-08-04 17:12:14 -05:00
Adam Honse 2ec68c29de Store name in CherryKeyboardController to avoid setting it in detector 2025-08-04 14:04:27 -05:00
Adam Honse c761661386 Store name in AsusLegacyUSBControllers to avoid setting it in detectors 2025-08-04 13:37:21 -05:00
Adam Honse 142e7fcc02 Close HYTE mousemat connections (libusb/serial) on destructor to fix rescan 2025-08-03 22:35:34 -05:00
Adam Honse e928111c00 Store name in AsusAuraGPUController to avoid setting it in detector 2025-08-03 22:05:37 -05:00
Adam Honse 0665ded648 Remove name comment from AsusAuraCoreControllerDDetect 2025-08-03 22:03:21 -05:00
Adam Honse b9a8a62e38 Store name in AOCMousematController to avoid setting it in detector 2025-08-03 21:42:40 -05:00
Adam Honse 74bbaaf643 Store name in AOCMouseController to avoid setting it in detector 2025-08-03 21:38:07 -05:00
Adam Honse 5799ea8160 Store name in AOCKeyboardController to avoid setting it in detector 2025-08-03 21:33:56 -05:00
Adam Honse 3dc2453deb Remove name comment from AnnePro2ControllerDetect 2025-08-03 21:31:57 -05:00
Adam Honse d2b3965bc2 Remove name comment from AMDWraithPrismControllerDetect 2025-08-03 21:31:39 -05:00
Adam Honse e4da571d6b Store name in AlienwareMonitorController to avoid setting it in detector 2025-08-03 21:28:27 -05:00
Adam Honse 5e45480a0e Store name in AlienwareKeyboardControllers to avoid setting it in detector 2025-08-03 18:43:02 -05:00
Adam Honse 90c1e10cc5 Fix AlienwareMonitorController on Linux 2025-08-02 17:45:44 -05:00
Daniel Schaefer 0255b09e0e Compiling.md: Update MSVC runtime download URL 2025-08-02 14:23:13 -05:00
Adam Honse bd21325d04 Fix warnings 2025-08-02 01:59:44 -05:00
berendi 9bc2a6fa2b Initial support for PNY ARGB EPIC X 5070Ti
Commits squashed, cleaned, and reworked for 5070Ti by Adam Honse <[email protected]>
2025-08-02 01:29:03 -05:00
Aiden Vigue cb3f0fdcbd Support for iCUE Link System Hub & attached devices
Commits amended to adhere to OpenRGB code standards and restructure functional layout by Adam Honse <[email protected]>
2025-08-01 21:46:29 -05:00
Adam Honse b8628bb495 Store name in BloodyB820RController to avoid setting it in detector 2025-08-01 11:37:40 -05:00
Adam Honse 9c26f79ca6 Store name in BloodyMouseController to avoid setting it in detector 2025-08-01 11:35:38 -05:00
Adam Honse 30f9b84d5f Use GetName instead of directly accessing the RGBController::name member outside of Controllers 2025-08-01 11:32:55 -05:00
Leon 1318d23401 "Add support for Asus ROG RTX5090 Astral OC BTF and WHITE" 2025-08-01 00:10:13 -05:00
Adam Honse 9fb71a30ec Use getter functions when accessing string fields in RGBControllers in ProfileManager and cli 2025-07-31 18:55:12 -05:00
Adam Honse abd34f1810 Rework RGBControllers and detectors that set string fields other than name outside of the RGBController 2025-07-31 18:36:06 -05:00
Adam Honse 6a472437bb Remove unnecessary implementations of SetCustomMode 2025-07-31 17:35:20 -05:00
Adam Honse 43b97bca75 Rework Debug controller and add manual settings entry for it, also remove graying out the settings save button as sometimes it prevents saving changes 2025-07-31 00:11:18 -05:00
Chris M a667bd456c Removed non-printable characters from License.rtf
* Changed EOL character from Linux LF to Windows CRLF
2025-07-30 22:17:32 +10:00
Adam Honse c6de7cf784 Mark OpenRGB.exe as KeyPath in Wix installer 2025-07-28 21:13:21 -05:00
Adam Honse 59deaad070 Add file header comment to ResourceManagerInterface.h 2025-07-27 01:49:45 -05:00
Muhamad Visat 7709799bc2 Add support for the GALAX GeForce RTX 3080 SG 2025-07-27 01:30:22 -05:00
Adam Honse d59138363e Handle condition where detection finishes before OpenRGBDialog constructor finishes/has time to register detection end callback. Fixes plugins not loading when running OpenRGB as a background service. 2025-07-26 02:36:38 -05:00
Adam Honse faaf2009b6 Add keepalive thread for Razer Blade 14 2021 and 2022 that sends a get device request to keep lighting active 2025-07-26 01:44:09 -05:00
Adam Honse 66c9691c87 Add exception for HYTE NP50 third channel, which needs to send 750 bytes according to documentation 2025-07-25 00:57:00 -05:00
Adam Honse 73d09e7c1c Fix HYTE Nexus Portal NP50 2025-07-25 00:30:37 -05:00
Arthur de Groot 3a508e71aa Update SDK docs 2025-07-24 10:16:57 -05:00
robynegrul a1d7a76349 Lenovo Legion S7 Gen7 2025-07-23 21:22:28 -05:00
Adam Honse 5ea65eda5a Update Compiling.md Windows section to reference the OpenRGB-Qt-Packages and build-windows.bat method of building OpenRGB from source, which is the official build procedure used by the pipeline builds 2025-07-22 19:54:02 -05:00
NolanPG 29347b9b4d Fix Gigabyte's RX 9070 XTs detection 2025-07-21 22:15:22 -05:00
Rahul Salvi a06d528d3b Add support for PowerColor Red Devil RX6800XT 2025-07-20 13:40:31 -07:00
Adam Honse ac0fd4b3fc Remove commented code in build-windows.bat 2025-07-20 01:39:48 -05:00
Valtekken 47783feecb Updated Italian translation's missing lines. 2025-07-19 09:05:53 +00:00
Whippu fad8955397 Add support for Gigabyte RX 7900 GRE 2025-07-18 18:34:10 -05:00
Adam Honse d0bcf06e5f Update metainfo 2025-07-17 11:57:08 -05:00
Adam Honse fed03f88c8 Clean up code 2025-07-16 08:31:48 -05:00
Adam Honse b6afcc222a Add regex include for MacOS 2025-07-16 08:12:09 -05:00
Dmitry Kychanov 4bcc33569a Fix filesystem errors in SerialPort 2025-07-16 15:09:21 +04:00
Dmitry K 46a79c6bb5 Serial port field is now drop-down list 2025-07-16 01:29:16 -05:00
Adam Honse 25d45fd9db Add server settings to settings page 2025-07-15 18:11:32 -05:00
Adam Honse c5795492e1 Update Fedora spec file to include systemd service 2025-07-15 11:45:42 -05:00
Adam Honse e86d9f9241 Add SystemD service file to Linux installation 2025-07-15 11:20:13 -05:00
Adam Honse 3db4ea30a3 Re-add Linux signal handler that was lost when rebasing Windows service main.cpp rework 2025-07-15 11:06:11 -05:00
Adam Honse a3acd6bda5 Fix XPG S40G infinite loop on Windows 11 2025-07-15 00:07:53 -05:00
Adam Honse 12a3b1f83e Delete controller when deleting HYTE RGBControllers 2025-07-14 16:45:01 -05:00
berendi cf2df815e3 Support starting OpenRGB as a Windows service
Commits squashed, code style cleaned up, and manually rebased by Adam Honse <[email protected]>
2025-07-14 20:32:14 -05:00
Adam Honse f03e4fd049 Implement find_usb_serial_port for MacOS, switch HYTE CNVS implementation to serial-based 2025-07-14 17:27:10 -05:00
Jana Rettig 75bf674537 Add support for PowerColor Red Devil GPUs 2025-07-14 15:08:58 -05:00
Adam Honse c3b1b16d11 Clean up comment formatting in ResourceManager.h 2025-07-12 23:04:59 -05:00
Adam Honse d8b9159125 Rework handling of NetworkClient callbacks to route them through ResourceManager and move connection of saved clients to after autoconnection of local client in InitCoroutine 2025-07-12 22:49:14 -05:00
Adam Honse a30617d971 Code cleanup in OpenRGBDialog 2025-07-12 21:58:31 -05:00
Adam Honse c7d824fbf3 Remove unused functions in OpenRGBClientInfoPage and OpenRGBDialog 2025-07-12 21:26:08 -05:00
Adam Honse 2335259dd6 Clean up comment formatting in DMI info files 2025-07-12 21:10:11 -05:00
Adam Honse 64686c92cd Clean up comment formatting in AutoStart files 2025-07-12 20:58:47 -05:00
silverspy18 3cbc4e5570 Add Gigabyte Radeon RX 9070 XT GAMING OC 2025-07-10 15:42:19 -07:00
silverspy18 d3f49c72e1 Implements i2c_smbus_amdadl::i2c_xfer for AMD ADL I2C. 2025-07-10 14:16:57 -05:00
Milan Cermak f460a6573c Add new Kingston model code 0x15 2025-07-09 18:52:18 +02:00
Milan Čermák 26a0b88937 Initial commit for TeamGroup T-Force Xtreem ARGB DDR4 Memory 2025-07-08 16:39:22 -05:00
Adam Honse a3ca8a721d Clean up comment formatting in ResourceManager.cpp 2025-07-08 15:27:59 -05:00
lulu731 bdaebe1218 Feat/ms 1565 2025-07-07 11:55:29 -05:00
Adam Honse f76dbb08cc Add GitHub Sponsor information 2025-07-07 02:20:15 -05:00
Adam Honse 5ac2ece8b4 Clean up comment formatting in SettingsManager and main cpp files 2025-07-07 01:35:42 -05:00
Adam Honse 37cd743315 Clean up comment formatting in LogManager and StringUtils cpp files 2025-07-06 14:39:37 -05:00
Fran c0c772b11b Add Palit RTX 5070 GamingPro 2025-07-05 12:44:18 -05:00
Marco Martinez ccc78c3516 Add support for Airgoo DRGB Controller 2025-07-05 12:38:55 -05:00
LucasMZ 09b7aab886 translation: update pt_BR 2025-07-05 08:55:04 -03:00
Adam Honse ce3eac9d8a Remove some commented outdated code 2025-07-05 01:51:52 -05:00
Adam Honse a762d00aa8 Fix warnings in Windows build 2025-07-05 01:47:40 -05:00
Adam Honse e5b3c12814 Fix warnings in MacOS build 2025-07-05 01:19:06 -05:00
Adam Honse df73d0263a Add send_in_progress locks around send groups in NetworkServer.cpp 2025-07-04 23:37:23 -05:00
Adam Honse 2affb6d1e7 Add missing send_in_progress locks around send groups in NetworkClient.cpp 2025-07-04 23:32:16 -05:00
Adam Honse 4cc6a28e73 Rework NetworkClient server initialization to allow interruption and restarting of server list request process when server sends a device list updated notification 2025-07-04 04:24:37 -05:00
Adam Honse 89881bfd7e Improve spacing so that text doesn't get cut off in GNOME on Linux 2025-07-04 04:24:37 -05:00
Adam Honse 458e30e2be Update client info page UI to account for added column 2025-07-04 04:24:37 -05:00
Adam Honse 5aaadf4e5a Require protocol version 5 to send rescan devices packet and to show rescan button in clients list 2025-07-04 04:24:37 -05:00
Adam Honse c750158286 Make the rescan action in ResourceManager send a rescan request to the client if the client is the primary target (local connection or only connected client when local detection disabled) 2025-07-04 04:24:37 -05:00
Adam Honse 80dee91ab9 Add client functionality to send rescan request and add rescan button for each client in client list 2025-07-04 04:24:37 -05:00
Adam Honse 0cfe5ae0bb Add SDK command to rescan devices 2025-07-04 04:24:37 -05:00
Arthur de Groot b6d4ded29a Fix Logitech G915 blue channel writes for little packet 2025-07-04 02:34:02 -05:00
Adam Honse 6d981e21ff Rework OpenRGBDialog rescan behavior to update UI when rescan is triggered outside of the UI 2025-07-04 00:22:08 -05:00
Adam Honse 38afb8b8eb Replace pwsh with powershell as it is available by default and pwsh needs to be separately installed 2025-07-04 00:09:15 -05:00
Sirs0ri 6efb172fb2 fix: spelling of Nvidia GPU label in New Device issue template 2025-07-03 19:35:51 -05:00
Andre Toerien 3332835417 Use RegisterNetworkClient() with --client 2025-07-03 23:34:08 +02:00
Adam Honse ec34b23688 Convert Corsair Vengeance RGB (non-Pro) controller to use DRAM SPD detector 2025-07-02 21:59:39 -05:00
Devin Wendt e4c43548eb Add multizone support for LIFX devices 2025-07-02 19:47:07 -05:00
Adam Honse fc6306f44a Fix warnings in ASUS USB controllers 2025-07-02 11:26:20 -05:00
Adam Honse 520b2450e3 Fix warning in RazerHanboController.cpp 2025-07-02 11:24:16 -05:00
Adam Honse c96119a9fd Fix warnings in RGBController_MSIMysticLight761.cpp 2025-07-02 11:07:05 -05:00
Adam Honse 5242b3cb03 Fix warnings and clean up MSIMysticLight761Controller 2025-07-02 10:27:51 -05:00
Adam Honse 21cb086b87 Fix unused argument warning in GoveeController 2025-07-02 08:28:23 -05:00
Adam Honse c4d0d38e69 Fix warnings in GigabyteRGBFusion2BlackwellGPUController.cpp 2025-07-02 08:16:55 -05:00
Adam Honse eecdd4befc Fix warnings in AMBXController.cpp 2025-07-02 00:22:52 -05:00
Adam Honse 804490399f Fix warning in AlienwareAW3423DWFController.cpp 2025-07-02 00:18:24 -05:00
Adam Honse 47bb1c0b37 Fix qsizetype 2025-07-02 00:17:32 -05:00
Adam Honse 064bae7b87 Cleanups and warning fixes in ManualDevices 2025-07-01 23:54:20 -05:00
Adam Honse ebfbb4b56f Update file header comment in CorsairVengeanceController to note that it is for original single-zone DDR4 variant 2025-07-01 23:25:13 -05:00
Brandon Ong 35203da9c3 Add support for NZXT F140 RGB Duo fan in NZXT Hue 2 Controller 2025-07-01 21:25:35 -05:00
MrIceHavoc b4dff4dd0c Initial commit for EVGA RTX 3090 Ti FTW3 Ultra Hybrid Gaming device ID 2025-07-01 21:15:19 -05:00
Thomas Peters-Hall 68fc171a31 Add support for MSI Gaming Trio RX 7900 XTX 2025-07-01 20:43:52 -05:00
Atome “Atom” Art fb1c20ed30 Add Rescan Devices button to systray icon dialog 2025-07-01 20:39:55 -05:00
Wolfieee Wolf a31c4f5254 Add DDP (Distributed Display Protocol) controller support 2025-07-01 09:27:00 -05:00
Dmitry K 570cc16c98 Unified page for Manually Added Devices 2025-06-30 10:46:55 -05:00
Adam Honse d796fcba8f Add detection message for reading SPD information and rework IsAnyDimmDetectorEnabled so that it doesn't overwrite the detection string before the GUI can read it 2025-06-27 01:26:29 -05:00
Adam Honse ad7a6e60f2 Cache the JEDEC ID value in SPDAccessor and improve SPD detector logging. Caching the JEDEC ID speeds up DRAM detection significantly. 2025-06-27 01:10:06 -05:00
Joseph E 7c02075ba6 Prevent infinite loop of closeEvent() in OpenRGBDialog 2025-06-26 22:45:10 -05:00
Adam Honse a83165f112 Fix Qt6 amd64 AppImage 2025-06-26 21:58:30 -05:00
morg 8ad90314fd AutoStart settings: fix server port range 2025-06-26 08:34:35 -05:00
morg e2db20b1f3 DeviceView: prevents setting 0px as font size. 2025-06-26 07:44:40 -05:00
Adam Honse 2e26a7f82d Update Nuvoton SMBus documentation for Linux 2025-06-26 02:56:44 -05:00
Adam Honse 313fda32c0 Add Common Modes documentation from the wiki repo 2025-06-26 01:40:02 -05:00
McNutnut 28c0bd8592 Add ViewSonic Elite Monitor (XG271QG) 2025-06-26 00:29:03 -05:00
Adam Honse e87d20b08d Fix JGINYUE not being detected in Linux 2025-06-26 00:28:05 -05:00
RedBlackAka ce32b88010 Add Asus ROG GTX 1060 Gaming #4870 2025-06-19 13:48:56 -05:00
rom4ster 9f82afa485 MSI X870 Tomahawk WIFI support 2025-06-18 18:14:42 -05:00
Jana Rettig 5589aad730 Add I2C_SMBUS_I2C_BLOCK_DATA mode to i2c_smbus_amdadl 2025-06-18 18:05:58 -05:00
Dmitry Kychanov 5f8b044577 Convert all UI files to match Qt standards 2025-06-18 17:53:14 -05:00
Nico Maas 924f5af2ed Implements support for Gainward RTX3090 Ti Phantom 2025-06-17 11:37:36 +02:00
Paulo a5acd5f322 Add static mode to Gigabyte Blackwell controller 2025-06-15 22:04:01 -05:00
ToastKiste211 dff4cc6cbf Add Corsair K68 Red Shadow 2025-06-13 08:13:29 -05:00
ToastKiste211 4532f98a94 Add corsair k60 rgb pro tkl white (v2) 2025-06-10 18:04:48 -05:00
Dmitry Kychanov c09d41bd40 Added base class for all Manually Added Devices settings Entries 2025-06-10 10:32:30 +04:00
Hepi34 fc26902d1d Implements support for the MSI RTX 5080 SUPRIM SOC 2025-06-09 13:27:14 -05:00
linux fight a427bfe1e1 Fixed Colorful iGame RTX3060 Ti W OC detection 2025-06-09 12:36:33 -05:00
Adam Honse 5b1b9b011a Update translating section in CONTRIBUTING.md 2025-06-06 09:27:11 -05:00
Antonin Del Fabbro 97ea56e777 Add basic explanations about Translation 2025-06-06 09:22:52 -05:00
Dmitry Kychanov 91a40ab079 Improved About page 2025-06-05 12:12:08 -05:00
ToastKiste211 4ea1d9a1f4 Support for Corsair K95 RGB PLATINUM SE 2025-06-05 12:07:10 -05:00
zjjxwhh 33dc2f41a9 Improve Simplified Chinese (zh_CN) translation 2025-06-05 08:30:13 -05:00
Dmitry K 6793d4a3a0 Move Autogenerated UI code into Private sections of the window classes 2025-06-04 18:21:13 -05:00
Kyle Rose 4c6bf55c8a Provide more useful CLI error messages 2025-06-04 18:16:45 -05:00
Wolfieee Wolf a977cadfda Add AMBXController for Philips amBX Gaming lights 2025-06-04 17:50:44 -05:00
Antonin Del Fabbro 381069afc7 Improve French (FR_fr) translation 2025-06-03 12:15:32 +02:00
Matthias 3c14af4a28 add support for 'Gigabyte AORUS Radeon RX 9070 XT Elite' 2025-06-02 15:27:48 -05:00
ToastKiste211 c3476be9e4 ADD more Corsair commander core versions 2025-06-02 10:41:37 -05:00
Baptiste Girod 519cdb642c Added ASUS TUF GeForce RTX 5090 Gaming non OC 2025-06-02 15:11:45 +00:00
WalterWoshid 2c1e23fdbd Add support for Lenovo Legion Pro 7 (16IRX9H) 2025-05-30 21:36:56 +02:00
Zhi Yan 7f865d73f0 Add some DRGB controllers 2025-05-30 08:01:13 -05:00
Daniel Stuart d98db1587b Initial support for Galax v2 GPU controller 2025-05-30 00:05:10 -05:00
Dmitry Kychanov 34ff3aa99a Minor cleanup in detectors 2025-05-30 02:44:34 +04:00
Wolfieee Wolf 7177a534b9 Add MadCatzCyborgController for MadCatz Cyborg Gaming Light 2025-05-28 11:55:53 -05:00
Paulo 3e7ad705bb Update Gigabyte Blackwell controller and adds several GPUs 2025-05-27 15:23:36 -05:00
Dave Cuza ac1503d246 Add support for ZOTAC GAMING GeForce RTX 2080 Ti AMP 2025-05-27 10:08:34 -05:00
ManiacKnight 26732ed42c Add Gigabyte NVIDIA 5070TI EAGLE OC ICE 2025-05-27 02:44:33 +05:30
1908 changed files with 89959 additions and 48991 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
github: CalcProgrammer1
patreon: CalcProgrammer1
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
+4
View File
@@ -8,6 +8,9 @@ OpenRGB-x86_64.AppImage
60-openrgb.rules
debian/changelog
fedora/OpenRGB.spec
OpenRGB_resource.rc
OpenRGB Windows 32-bit/
OpenRGB Windows 64-bit/
# Directories
.build/
@@ -28,6 +31,7 @@ Build/
.qmake.stash
.vscode
.vs
.idea
# Generic Files
.DS_Store
+346 -394
View File
@@ -1,18 +1,24 @@
# swy: some useful references; the MSVC part of the CI script is based on the one from bind9, by Michał Kępień:
# https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/gcp/windows-containers/blob/master/cookbooks/preinstalled-software/README.md
# https://gitlab.isc.org/isc-projects/bind9/commit/facc6a051fcac70fbbc61cb92a37be8c3e4db5ec#587d266bb27a4dc3022bbed44dfa19849df3044c_718_731
# https://www.kittell.net/code/powershell-unix-sed-equivalent-change-text-file/
# https://powershell.org/forums/topic/how-to-use-ansi-vt100-formatting-in-powershell-ooh-pretty-colors/
#-----------------------------------------------------------#
# .gitlab-ci.yml #
# #
# OpenRGB GitLab CI Configuration #
# #
# This file is part of the OpenRGB project #
# SPDX-License-Identifier: GPL-2.0-or-later #
#-----------------------------------------------------------#
#-----------------------------------------------------------------------#
# OpenRGB GitLab CI Configuration #
#-----------------------------------------------------------------------#
.fork_local_runner_rules:
rules:
- if: $CI_PROJECT_PATH == "CalcProgrammer1/OpenRGB" || $CI_PIPELINE_SOURCE == "push"
when: on_success
.fork_gitlab_runner_rules:
#-----------------------------------------------------------#
# GitLab CI Rules #
# #
# * For downstream forks (not on CalcProgrammer1/OpenRGB), #
# run only if manually started to save CI minutes if #
# GitLab hosted runners #
# * For commits to the CalcProgrammer1/OpenRGB repository, #
# automatically run all jobs on the default branch, #
# otherwise run them if the source is part of a merge #
# request #
#-----------------------------------------------------------#
.downstream_rules:
rules:
- if: $CI_PROJECT_PATH != "CalcProgrammer1/OpenRGB" && $CI_PIPELINE_SOURCE == "push"
when: manual
@@ -20,9 +26,9 @@
.upstream_rules:
rules:
- if: '$CI_PROJECT_PATH == "CalcProgrammer1/OpenRGB"'
- if: '$CI_PROJECT_PATH == "CalcProgrammer1/OpenRGB" && ($CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_PIPELINE_SOURCE == "merge_request_event")'
when: on_success
- !reference [.fork_gitlab_runner_rules, rules]
- !reference [.downstream_rules, rules]
.shared_windows_runners:
tags:
@@ -41,9 +47,9 @@ variables:
before_script:
- echo "started by ${GITLAB_USER_NAME}"
#-----------------------------------------------------------------------#
# Supported Devices Build Target #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# Supported Devices Build Target #
#-----------------------------------------------------------#
"Supported Devices":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-amd64
tags:
@@ -64,327 +70,236 @@ before_script:
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (AppImage) i386 Build Target #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# OpenRGB Common Appimage Build Steps #
#-----------------------------------------------------------#
.hidden_appimage_script: &appimage_script_steps
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-${TGT_ARCH}
tags:
- linux
- ${TGT_ARCH}
stage: build
script:
- export $(dpkg-architecture)
- ./scripts/build-appimage.sh ${TGT_QT}
artifacts:
name: "${CI_PROJECT_NAME}_Linux_${TGT_NAME}_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB-${TGT_PATH}.AppImage
- 60-openrgb.rules
- README.md
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------#
# Linux (AppImage) i386 Build Target #
#-----------------------------------------------------------#
"Linux i386 AppImage":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-i386
tags:
- linux
- i386
stage: build
script:
- export $(dpkg-architecture)
- ./scripts/build-appimage.sh
variables:
TGT_ARCH: "i386"
TGT_QT: "qt6"
TGT_NAME: "${TGT_ARCH}"
TGT_PATH: "${TGT_ARCH}"
<<: *appimage_script_steps
artifacts:
name: "${CI_PROJECT_NAME}_Linux_i386_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB-i386.AppImage
- 60-openrgb.rules
- README.md
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (AppImage) Qt6 i386 Build Target #
#-----------------------------------------------------------------------#
"Linux i386 AppImage Qt6":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-i386
tags:
- linux
- i386
stage: build
script:
- export $(dpkg-architecture)
- ./scripts/build-appimage.sh qt6
artifacts:
name: "${CI_PROJECT_NAME}_Linux_i386_Qt6_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB-i386.AppImage
- 60-openrgb.rules
- README.md
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (AppImage) amd64 Build Target #
#-----------------------------------------------------------------------#
"Linux amd64 AppImage Base":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-amd64
stage: build
script:
- export $(dpkg-architecture)
- ./scripts/build-appimage.sh
artifacts:
name: "${CI_PROJECT_NAME}_Linux_amd64_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB-x86_64.AppImage
- 60-openrgb.rules
- README.md
expire_in: 30 days
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_PIPELINE_SOURCE == "push"
when: never
#-----------------------------------------------------------#
# Linux (AppImage) Qt5 i386 Build Target #
#-----------------------------------------------------------#
"Linux i386 AppImage Qt5":
variables:
TGT_ARCH: "i386"
TGT_QT: ""
TGT_NAME: "${TGT_ARCH}_qt5"
TGT_PATH: "${TGT_ARCH}"
<<: *appimage_script_steps
#-----------------------------------------------------------#
# Linux (AppImage) amd64 Build Target #
#-----------------------------------------------------------#
"Linux amd64 AppImage":
extends: "Linux amd64 AppImage Base"
variables:
TGT_ARCH: "amd64"
TGT_QT: "qt6"
TGT_NAME: "${TGT_ARCH}"
TGT_PATH: "x86_64"
<<: *appimage_script_steps
rules:
- !reference [.fork_local_runner_rules, rules]
tags:
- linux
- amd64
- !reference [.upstream_rules, rules]
"Linux amd64 AppImage (gitlab.com runner)":
extends: "Linux amd64 AppImage Base"
"Linux amd64 AppImage (Downstream)":
extends: "Linux amd64 AppImage"
rules:
- !reference [.fork_gitlab_runner_rules, rules]
- !reference [.downstream_rules, rules]
tags:
- "saas-linux-small-amd64"
#-----------------------------------------------------------------------#
# Linux (AppImage) Qt6 amd64 Build Target #
#-----------------------------------------------------------------------#
"Linux amd64 AppImage Qt6":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-amd64
tags:
- linux
- amd64
stage: build
script:
- export $(dpkg-architecture)
- ./scripts/build-appimage.sh qt6
#-----------------------------------------------------------#
# Linux (AppImage) Qt5 amd64 Build Target #
#-----------------------------------------------------------#
"Linux amd64 AppImage Qt5":
variables:
TGT_ARCH: "amd64"
TGT_QT: ""
TGT_NAME: "${TGT_ARCH}_qt5"
TGT_PATH: "x86_64"
<<: *appimage_script_steps
artifacts:
name: "${CI_PROJECT_NAME}_Linux_amd64_Qt6_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB-amd64.AppImage
- 60-openrgb.rules
- README.md
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (AppImage) armhf Build Target #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# Linux (AppImage) armhf Build Target #
#-----------------------------------------------------------#
"Linux armhf AppImage":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-armhf
tags:
- linux
- armhf
stage: build
script:
- export $(dpkg-architecture)
- ./scripts/build-appimage.sh
variables:
TGT_ARCH: "armhf"
TGT_QT: "qt6"
TGT_NAME: "${TGT_ARCH}"
TGT_PATH: "${TGT_ARCH}"
<<: *appimage_script_steps
artifacts:
name: "${CI_PROJECT_NAME}_Linux_armhf_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB-armhf.AppImage
- 60-openrgb.rules
- README.md
expire_in: 30 days
#-----------------------------------------------------------#
# Linux (AppImage) Qt5 armhf Build Target #
#-----------------------------------------------------------#
"Linux armhf AppImage Qt5":
variables:
TGT_ARCH: "armhf"
TGT_QT: ""
TGT_NAME: "${TGT_ARCH}_qt5"
TGT_PATH: "${TGT_ARCH}"
<<: *appimage_script_steps
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (AppImage) Qt6 armhf Build Target #
#-----------------------------------------------------------------------#
"Linux armhf AppImage Qt6":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-armhf
tags:
- linux
- armhf
stage: build
script:
- export $(dpkg-architecture)
- ./scripts/build-appimage.sh qt6
artifacts:
name: "${CI_PROJECT_NAME}_Linux_armhf_Qt6_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB-armhf.AppImage
- 60-openrgb.rules
- README.md
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (AppImage) arm64 Build Target #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# Linux (AppImage) arm64 Build Target #
#-----------------------------------------------------------#
"Linux arm64 AppImage":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-arm64
variables:
TGT_ARCH: "arm64"
TGT_QT: "qt6"
TGT_NAME: "${TGT_ARCH}"
TGT_PATH: "${TGT_ARCH}"
<<: *appimage_script_steps
#-----------------------------------------------------------#
# Linux (AppImage) Qt5 arm64 Build Target #
#-----------------------------------------------------------#
"Linux arm64 AppImage Qt5":
variables:
TGT_ARCH: "arm64"
TGT_QT: ""
TGT_NAME: "${TGT_ARCH}_qt5"
TGT_PATH: "${TGT_ARCH}"
<<: *appimage_script_steps
#-----------------------------------------------------------#
# OpenRGB Common Debian Build Steps #
#-----------------------------------------------------------#
.hidden_deb_script: &debian_script_steps
stage: build
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:$TGT_DEB-$TGT_ARCH
tags:
- linux
- arm64
stage: build
- $TGT_ARCH
script:
- export $(dpkg-architecture)
- ./scripts/build-appimage.sh
- ./scripts/build-package-files.sh debian/changelog
- dpkg-architecture -l
- dpkg-buildpackage -us -B
- rm -v ../openrgb-dbgsym*.deb
- mv -v ../openrgb*.deb ./
artifacts:
name: "${CI_PROJECT_NAME}_Linux_arm64_${CI_COMMIT_SHORT_SHA}"
name: "${CI_PROJECT_NAME}_Linux_${TGT_ARCH}_deb_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB-arm64.AppImage
- 60-openrgb.rules
- README.md
- openrgb*.deb
exclude:
- openrgb-dbgsym*.deb
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (AppImage) Qt6 arm64 Build Target #
#-----------------------------------------------------------------------#
"Linux arm64 AppImage Qt6":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-arm64
tags:
- linux
- arm64
stage: build
script:
- export $(dpkg-architecture)
- ./scripts/build-appimage.sh qt6
artifacts:
name: "${CI_PROJECT_NAME}_Linux_arm64_Qt6_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB-arm64.AppImage
- 60-openrgb.rules
- README.md
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (.deb) Debian Bookworm i386 Build Target #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# Linux (.deb) Debian Bookworm i386 Build Target #
#-----------------------------------------------------------#
"Linux i386 .deb (Debian Bookworm)":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-i386
tags:
- linux
- i386
stage: build
script:
- ./scripts/build-package-files.sh debian/changelog
- dpkg-architecture -l
- dpkg-buildpackage -us -B
- rm -v ../openrgb-dbgsym*.deb
- mv -v ../openrgb*.deb ./
variables:
TGT_ARCH: "i386"
TGT_DEB: "bookworm"
<<: *debian_script_steps
artifacts:
name: "${CI_PROJECT_NAME}_Linux_i386_deb_${CI_COMMIT_SHORT_SHA}"
paths:
- openrgb*.deb
exclude:
- openrgb-dbgsym*.deb
expire_in: 30 days
#-----------------------------------------------------------#
# Linux (.deb) Debian Trixie i386 Build Target #
#-----------------------------------------------------------#
"Linux i386 .deb (Debian Trixie)":
variables:
TGT_ARCH: "i386"
TGT_DEB: "trixie"
<<: *debian_script_steps
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (.deb) Debian Bookworm amd64 Build Target #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# Linux (.deb) Debian Bookworm amd64 Build Target #
#-----------------------------------------------------------#
"Linux amd64 .deb (Debian Bookworm)":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-amd64
tags:
- linux
- amd64
stage: build
script:
- ./scripts/build-package-files.sh debian/changelog
- dpkg-architecture -l
- dpkg-buildpackage -us -B
- rm -v ../openrgb-dbgsym*.deb
- mv -v ../openrgb*.deb ./
variables:
TGT_ARCH: "amd64"
TGT_DEB: "bookworm"
<<: *debian_script_steps
artifacts:
name: "${CI_PROJECT_NAME}_Linux_amd64_deb_${CI_COMMIT_SHORT_SHA}"
paths:
- openrgb*.deb
exclude:
- openrgb-dbgsym*.deb
expire_in: 30 days
#-----------------------------------------------------------#
# Linux (.deb) Debian Trixie amd64 Build Target #
#-----------------------------------------------------------#
"Linux amd64 .deb (Debian Trixie)":
variables:
TGT_ARCH: "amd64"
TGT_DEB: "trixie"
<<: *debian_script_steps
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (.deb) Debian Bookworm armhf Build Target #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# Linux (.deb) Debian Bookworm armhf Build Target #
#-----------------------------------------------------------#
"Linux armhf .deb (Debian Bookworm)":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-armhf
tags:
- linux
- armhf
stage: build
script:
- ./scripts/build-package-files.sh debian/changelog
- dpkg-architecture -l
- dpkg-buildpackage -us -B
- rm -v ../openrgb-dbgsym*.deb
- mv -v ../openrgb*.deb ./
variables:
TGT_ARCH: "armhf"
TGT_DEB: "bookworm"
<<: *debian_script_steps
artifacts:
name: "${CI_PROJECT_NAME}_Linux_armhf_deb_${CI_COMMIT_SHORT_SHA}"
paths:
- openrgb*.deb
exclude:
- openrgb-dbgsym*.deb
expire_in: 30 days
#-----------------------------------------------------------#
# Linux (.deb) Debian Trixie armhf Build Target #
#-----------------------------------------------------------#
"Linux armhf .deb (Debian Trixie)":
variables:
TGT_ARCH: "armhf"
TGT_DEB: "trixie"
<<: *debian_script_steps
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (.deb) Debian Bookworm arm64 Build Target #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# Linux (.deb) Debian Bookworm arm64 Build Target #
#-----------------------------------------------------------#
"Linux arm64 .deb (Debian Bookworm)":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-arm64
tags:
- linux
- arm64
variables:
TGT_ARCH: "arm64"
TGT_DEB: "bookworm"
<<: *debian_script_steps
#-----------------------------------------------------------#
# Linux (.deb) Debian Trixie arm64 Build Target #
#-----------------------------------------------------------#
"Linux arm64 .deb (Debian Trixie)":
variables:
TGT_ARCH: "arm64"
TGT_DEB: "trixie"
<<: *debian_script_steps
#-----------------------------------------------------------#
# Linux (.rpm, F43) 64-bit Build Target #
#-----------------------------------------------------------#
"Linux 64 F43 rpm":
image: fedora:43
stage: build
script:
- ./scripts/build-package-files.sh debian/changelog
- dpkg-architecture -l
- dpkg-buildpackage -us -B
- rm -v ../openrgb-dbgsym*.deb
- mv -v ../openrgb*.deb ./
artifacts:
name: "${CI_PROJECT_NAME}_Linux_arm64_deb_${CI_COMMIT_SHORT_SHA}"
paths:
- openrgb*.deb
exclude:
- openrgb-dbgsym*.deb
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Linux (.rpm, F40) 64-bit Build Target #
#-----------------------------------------------------------------------#
"Linux 64 F40 rpm":
image: fedora:40
stage: build
script:
- dnf install rpmdevtools dnf-plugins-core libcurl-devel qt5-qtbase-devel git -y
- dnf install rpmdevtools dnf-plugins-core libcurl-devel qt5-qtbase-devel git wget -y
- 'wget -O hidapi-hotplug.zip https://gitlab.com/OpenRGBDevelopers/hidapi-hotplug/-/jobs/artifacts/master/download?job=Linux+64+F43+rpm'
- unzip hidapi-hotplug.zip
- dnf install ./*.rpm -y
- rpmdev-setuptree
- ./scripts/build-package-files.sh fedora/OpenRGB.spec
- cp fedora/OpenRGB.spec /root/rpmbuild/SPECS
@@ -405,94 +320,103 @@ before_script:
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Debian i386 Bookworm test #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# Debian i386 Bookworm test #
#-----------------------------------------------------------#
"Debian i386 Bookworm":
image: i386/debian:bookworm
stage: test
script:
- apt update
- DEBIAN_FRONTEND=noninteractive apt update
- DEBIAN_FRONTEND=noninteractive apt install -y unzip curl
- 'curl -o hidapi-hotplug.zip -L https://gitlab.com/OpenRGBDevelopers/hidapi-hotplug/-/jobs/artifacts/master/download?job=Linux+i386+.deb+%28Debian+Bookworm%29'
- unzip hidapi-hotplug.zip
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./libhidapi-hotplug*.deb
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*i386.deb
- openrgb --version
- apt remove -y openrgb
- DEBIAN_FRONTEND=noninteractive apt remove -y openrgb
dependencies:
- "Linux i386 .deb (Debian Bookworm)"
needs:
- "Linux i386 .deb (Debian Bookworm)"
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Debian amd64 Bookworm test #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# Debian amd64 Bookworm test #
#-----------------------------------------------------------#
"Debian amd64 Bookworm":
image: amd64/debian:bookworm
stage: test
script:
- apt update
- DEBIAN_FRONTEND=noninteractive apt update
- DEBIAN_FRONTEND=noninteractive apt install -y unzip curl
- 'curl -o hidapi-hotplug.zip -L https://gitlab.com/OpenRGBDevelopers/hidapi-hotplug/-/jobs/artifacts/master/download?job=Linux+amd64+.deb+%28Debian+Bookworm%29'
- unzip hidapi-hotplug.zip
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./libhidapi-hotplug*.deb
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*amd64.deb
- openrgb --version
- apt remove -y openrgb
- DEBIAN_FRONTEND=noninteractive apt remove -y openrgb
dependencies:
- "Linux amd64 .deb (Debian Bookworm)"
needs:
- "Linux amd64 .deb (Debian Bookworm)"
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Ubuntu amd64 22.04 test #
#-----------------------------------------------------------------------#
"Ubuntu amd64 22.04LTS":
image: ubuntu:jammy
stage: test
script:
- apt update
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*amd64.deb
- openrgb --version
- apt remove -y openrgb
dependencies:
- "Linux amd64 .deb (Debian Bookworm)"
needs:
- "Linux amd64 .deb (Debian Bookworm)"
#-----------------------------------------------------------------------#
# Ubuntu amd64 24.04 test #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# Ubuntu amd64 24.04 test #
#-----------------------------------------------------------#
"Ubuntu amd64 24.04LTS":
image: ubuntu:noble
stage: test
script:
- apt update
- DEBIAN_FRONTEND=noninteractive apt update
- DEBIAN_FRONTEND=noninteractive apt install -y unzip curl
- 'curl -o hidapi-hotplug.zip -L https://gitlab.com/OpenRGBDevelopers/hidapi-hotplug/-/jobs/artifacts/master/download?job=Linux+amd64+.deb+%28Debian+Bookworm%29'
- unzip hidapi-hotplug.zip
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./libhidapi-hotplug*.deb
- DEBIAN_FRONTEND=noninteractive apt install -yq --no-install-recommends ./openrgb*amd64.deb
- openrgb --version
- apt remove -y openrgb
- DEBIAN_FRONTEND=noninteractive apt remove -y openrgb
dependencies:
- "Linux amd64 .deb (Debian Bookworm)"
needs:
- "Linux amd64 .deb (Debian Bookworm)"
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Fedora 64 v40 test #
#-----------------------------------------------------------------------#
"Fedora 64 v40":
image: fedora:40
#-----------------------------------------------------------#
# Fedora 64 v43 test #
#-----------------------------------------------------------#
"Fedora 64 v43":
image: fedora:43
stage: test
script:
- yum -y localinstall ./openrgb*64.rpm
- dnf install unzip wget -y
- 'wget -O hidapi-hotplug.zip https://gitlab.com/OpenRGBDevelopers/hidapi-hotplug/-/jobs/artifacts/master/download?job=Linux+64+F43+rpm'
- unzip hidapi-hotplug.zip
- dnf install ./*.rpm -y
- dnf5 -y install ./openrgb*64.rpm
- openrgb --version
- yum -y remove openrgb
- dnf5 -y remove openrgb
dependencies:
- "Linux 64 F40 rpm"
- "Linux 64 F43 rpm"
needs:
- "Linux 64 F40 rpm"
- "Linux 64 F43 rpm"
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Windows (32-bit) Build Target #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# Windows (32-bit) Build Target #
#-----------------------------------------------------------#
"Windows 32":
extends:
- .shared_windows_runners
stage: build
script:
- scripts\build-windows.bat 5.15.0 2019 32
- $ErrorActionPreference = "SilentlyContinue" ; Set-MpPreference -DisableRealtimeMonitoring $true ; $ErrorActionPreference = "Stop"
- scripts\build-windows.bat 6.8.3 2022 32
artifacts:
name: "${CI_PROJECT_NAME}_Windows_32_${CI_COMMIT_SHORT_SHA}"
paths:
@@ -504,17 +428,18 @@ before_script:
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Windows (32-bit) Qt6 Build Target #
#-----------------------------------------------------------------------#
"Windows 32 Qt6":
#-----------------------------------------------------------#
# Windows (32-bit) Qt5 Build Target #
#-----------------------------------------------------------#
"Windows 32 Qt5":
extends:
- .shared_windows_runners
stage: build
script:
- scripts\build-windows.bat 6.8.3 2022 32
- $ErrorActionPreference = "SilentlyContinue" ; Set-MpPreference -DisableRealtimeMonitoring $true ; $ErrorActionPreference = "Stop"
- scripts\build-windows.bat 5.15.0 2019 32
artifacts:
name: "${CI_PROJECT_NAME}_Windows_32_Qt6_${CI_COMMIT_SHORT_SHA}"
name: "${CI_PROJECT_NAME}_Windows_32_Qt5_${CI_COMMIT_SHORT_SHA}"
paths:
- 'OpenRGB Windows 32-bit'
exclude:
@@ -524,15 +449,16 @@ before_script:
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Windows (64-bit) Build Target #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# Windows (64-bit) Build Target #
#-----------------------------------------------------------#
"Windows 64 Base":
extends:
- .shared_windows_runners
stage: build
script:
- scripts\build-windows.bat 5.15.0 2019 64
- $ErrorActionPreference = "SilentlyContinue" ; Set-MpPreference -DisableRealtimeMonitoring $true ; $ErrorActionPreference = "Stop"
- scripts\build-windows.bat 6.8.3 2022 64
artifacts:
name: "${CI_PROJECT_NAME}_Windows_64_${CI_COMMIT_SHORT_SHA}"
paths:
@@ -545,13 +471,12 @@ before_script:
- if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_PIPELINE_SOURCE == "push"
when: never
"Windows 64":
extends: "Windows 64 Base"
rules:
- !reference [.fork_local_runner_rules, rules]
- !reference [.upstream_rules, rules]
"Windows 64 (gitlab.com runner)":
"Windows 64 (Downstream)":
extends: "Windows 64 Base"
before_script:
- git clone https://gitlab.com/OpenRGBDevelopers/OpenRGB-Qt-Packages
@@ -559,21 +484,22 @@ before_script:
- .\install-chocolatey.bat
- cd ..
rules:
- !reference [.fork_gitlab_runner_rules, rules]
- !reference [.downstream_rules, rules]
tags:
- "saas-windows-medium-amd64"
#-----------------------------------------------------------------------#
# Windows (64-bit) Qt6 Build Target #
#-----------------------------------------------------------------------#
"Windows 64 Qt6 Base":
#-----------------------------------------------------------#
# Windows (64-bit) Qt5 Build Target #
#-----------------------------------------------------------#
"Windows 64 Qt5 Base":
extends:
- .shared_windows_runners
stage: build
script:
- scripts\build-windows.bat 6.8.3 2022 64
- $ErrorActionPreference = "SilentlyContinue" ; Set-MpPreference -DisableRealtimeMonitoring $true ; $ErrorActionPreference = "Stop"
- scripts\build-windows.bat 5.15.0 2019 64
artifacts:
name: "${CI_PROJECT_NAME}_Windows_64_Qt6_${CI_COMMIT_SHORT_SHA}"
name: "${CI_PROJECT_NAME}_Windows_64_Qt5_${CI_COMMIT_SHORT_SHA}"
paths:
- 'OpenRGB Windows 64-bit'
exclude:
@@ -585,26 +511,26 @@ before_script:
when: never
"Windows 64 Qt6":
extends: "Windows 64 Qt6 Base"
"Windows 64 Qt5":
extends: "Windows 64 Qt5 Base"
rules:
- !reference [.fork_local_runner_rules, rules]
- !reference [.upstream_rules, rules]
"Windows 64 Qt6 (gitlab.com runner)":
extends: "Windows 64 Qt6 Base"
"Windows 64 Qt5 (Downstream)":
extends: "Windows 64 Qt5 Base"
before_script:
- git clone https://gitlab.com/OpenRGBDevelopers/OpenRGB-Qt-Packages
- cd OpenRGB-Qt-Packages
- .\install-chocolatey.bat
- cd ..
rules:
- !reference [.fork_gitlab_runner_rules, rules]
- !reference [.downstream_rules, rules]
tags:
- "saas-windows-medium-amd64"
#-----------------------------------------------------------------------#
# MacOS Build Target #
#-----------------------------------------------------------------------#
#-----------------------------------------------------------#
# MacOS Build Target #
#-----------------------------------------------------------#
"MacOS ARM64":
tags:
- macos
@@ -622,13 +548,26 @@ before_script:
expire_in: 30 days
rules:
- if: '$CI_PROJECT_PATH == "CalcProgrammer1/OpenRGB"'
when: on_success
- if: '$BUILD_MACOS =~ /.+/'
when: on_success
- if: $CI_PIPELINE_SOURCE == "push"
when: manual
allow_failure: true
- !reference [.upstream_rules, rules]
"MacOS ARM64 Qt5":
tags:
- macos
stage: build
script:
- eval $(/opt/homebrew/bin/brew shellenv)
- /opt/homebrew/opt/qt@5/bin/qmake OpenRGB.pro
- make -j16
- /opt/homebrew/opt/qt@5/bin/macdeployqt OpenRGB.app -codesign=OpenRGB
artifacts:
name: "${CI_PROJECT_NAME}_MacOS_Qt5_ARM64_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB.app
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
"MacOS Intel":
tags:
@@ -638,7 +577,7 @@ before_script:
- eval $(/usr/local/bin/brew shellenv)
- arch -x86_64 /usr/local/bin/qmake OpenRGB.pro
- arch -x86_64 make -j16
- arch -x86_64 macdeployqt OpenRGB.app -codesign=OpenRGB
- arch -x86_64 /usr/local/bin/macdeployqt OpenRGB.app -codesign=OpenRGB
artifacts:
name: "${CI_PROJECT_NAME}_MacOS_Intel_${CI_COMMIT_SHORT_SHA}"
@@ -647,17 +586,30 @@ before_script:
expire_in: 30 days
rules:
- if: '$CI_PROJECT_PATH == "CalcProgrammer1/OpenRGB"'
when: on_success
- if: '$BUILD_MACOS =~ /.+/'
when: on_success
- if: $CI_PIPELINE_SOURCE == "push"
when: manual
allow_failure: true
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------------------#
# Windows (64-bit) MSI Target #
#-----------------------------------------------------------------------#
"MacOS Intel Qt5":
tags:
- macos
stage: build
script:
- eval $(/usr/local/bin/brew shellenv)
- arch -x86_64 /usr/local/opt/qt@5/bin/qmake OpenRGB.pro
- arch -x86_64 make -j16
- arch -x86_64 /usr/local/opt/qt@5/bin/macdeployqt OpenRGB.app -codesign=OpenRGB
artifacts:
name: "${CI_PROJECT_NAME}_MacOS_Intel_Qt5_${CI_COMMIT_SHORT_SHA}"
paths:
- OpenRGB.app
expire_in: 30 days
rules:
- !reference [.upstream_rules, rules]
#-----------------------------------------------------------#
# Windows (64-bit) MSI Target #
#-----------------------------------------------------------#
"Windows 64 MSI":
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-i386
stage: deploy
+1 -1
View File
@@ -23,7 +23,7 @@ Please add a link to the manufacturer's product page beneath this line
~"DeviceType::IDK" <!-- I Don't know -->
~"DeviceType::USB" <!-- The device connects to an internal header or external usb port -->
~"DeviceType::GPU::AMD" <!-- The device is an AMD GPU -->
~"DeviceType::GPU::Nvidia" <!-- The device is a Nvidia GPU -->
~"DeviceType::GPU::NVidia" <!-- The device is a Nvidia GPU -->
~"DeviceType::SMBus" <!-- The device is connected to the SMBus eg. RAM -->
~"DeviceType::WMI" <!-- The device is controlled through Windows Management Instrumentation -->
+35 -36
View File
@@ -4,7 +4,7 @@
| Autostart implementation for FreeBSD |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <fstream>
@@ -26,21 +26,21 @@ bool AutoStart::DisableAutoStart()
std::error_code autostart_file_remove_errcode;
bool success = false;
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
/*---------------------------------------------*\
| If file doesn't exist, disable is successful |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| If file doesn't exist, disable is successful |
\*-------------------------------------------------*/
if(!filesystem::exists(autostart_file))
{
success = true;
}
/*---------------------------------------------*\
| Otherwise, delete the file |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| Otherwise, delete the file |
\*-------------------------------------------------*/
else
{
success = filesystem::remove(autostart_file, autostart_file_remove_errcode);
@@ -63,27 +63,26 @@ bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
{
bool success = false;
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
std::ofstream autostart_file_stream(autostart_file, std::ios::out | std::ios::trunc);
/*---------------------------------------------*\
| Error out if the file could not be opened |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| Error out if the file could not be opened |
\*-------------------------------------------------*/
if(!autostart_file_stream)
{
LOG_ERROR("[AutoStart] Could not open %s for writing.", autostart_file.c_str());
success = false;
}
/*---------------------------------------------*\
| Otherwise, write the file |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| Otherwise, write the file |
\*-------------------------------------------------*/
else
{
//autostart_file_stream << desktop_file;
autostart_file_stream.close();
success = !autostart_file_stream.fail();
@@ -103,9 +102,9 @@ bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
bool AutoStart::IsAutoStartEnabled()
{
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
return(filesystem::exists(autostart_file));
@@ -118,9 +117,9 @@ bool AutoStart::IsAutoStartEnabled()
std::string AutoStart::GetExePath()
{
/*-------------------------------------------------*\
| Create the OpenRGB executable path |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Create the OpenRGB executable path |
\*-----------------------------------------------------*/
char exepath[ PATH_MAX ];
ssize_t count = readlink("/proc/self/exe", exepath, PATH_MAX);
@@ -134,16 +133,16 @@ void AutoStart::InitAutoStart(std::string name)
autostart_name = name;
/*-------------------------------------------------*\
| Get home and config paths |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Get home and config paths |
\*-----------------------------------------------------*/
const char *xdg_config_home = getenv("XDG_CONFIG_HOME");
const char *home = getenv("HOME");
/*-------------------------------------------------*\
| Determine where the autostart .desktop files are |
| kept |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Determine where the autostart .desktop files are |
| kept |
\*-----------------------------------------------------*/
if(xdg_config_home != NULL)
{
autostart_dir = xdg_config_home;
@@ -155,9 +154,9 @@ void AutoStart::InitAutoStart(std::string name)
autostart_dir = autostart_dir + "/.config/autostart/";
}
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_dir != "")
{
std::error_code ec;
+1 -1
View File
@@ -4,7 +4,7 @@
| Autostart implementation for FreeBSD |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
+46 -46
View File
@@ -4,7 +4,7 @@
| Autostart implementation for Linux |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <fstream>
@@ -26,21 +26,21 @@ bool AutoStart::DisableAutoStart()
std::error_code autostart_file_remove_errcode;
bool success = false;
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
/*---------------------------------------------*\
| If file doesn't exist, disable is successful |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| If file doesn't exist, disable is successful |
\*-------------------------------------------------*/
if(!filesystem::exists(autostart_file))
{
success = true;
}
/*---------------------------------------------*\
| Otherwise, delete the file |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| Otherwise, delete the file |
\*-------------------------------------------------*/
else
{
success = filesystem::remove(autostart_file, autostart_file_remove_errcode);
@@ -63,25 +63,25 @@ bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
{
bool success = false;
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
std::string desktop_file = GenerateDesktopFile(autostart_info);
std::ofstream autostart_file_stream(autostart_file, std::ios::out | std::ios::trunc);
/*---------------------------------------------*\
| Error out if the file could not be opened |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| Error out if the file could not be opened |
\*-------------------------------------------------*/
if(!autostart_file_stream)
{
LOG_ERROR("[AutoStart] Could not open %s for writing.", autostart_file.c_str());
success = false;
}
/*---------------------------------------------*\
| Otherwise, write the file |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| Otherwise, write the file |
\*-------------------------------------------------*/
else
{
autostart_file_stream << desktop_file;
@@ -104,9 +104,9 @@ bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
bool AutoStart::IsAutoStartEnabled()
{
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
return(filesystem::exists(autostart_file));
@@ -119,9 +119,9 @@ bool AutoStart::IsAutoStartEnabled()
std::string AutoStart::GetExePath()
{
/*-------------------------------------------------*\
| Create the OpenRGB executable path |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Create the OpenRGB executable path |
\*-----------------------------------------------------*/
char exepath[ PATH_MAX ];
ssize_t count = readlink("/proc/self/exe", exepath, PATH_MAX);
@@ -129,17 +129,17 @@ std::string AutoStart::GetExePath()
return(std::string(exepath, (count > 0) ? count : 0));
}
/*-----------------------------------------------------*\
| Linux AutoStart Implementation |
| Private Methods |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Linux AutoStart Implementation |
| Private Methods |
\*---------------------------------------------------------*/
std::string AutoStart::GenerateDesktopFile(AutoStartInfo autostart_info)
{
/*-------------------------------------------------*\
| Generate a .desktop file from the AutoStart |
| parameters |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Generate a .desktop file from the AutoStart |
| parameters |
\*-----------------------------------------------------*/
std::stringstream fileContents;
fileContents << "[Desktop Entry]" << std::endl;
@@ -151,9 +151,9 @@ std::string AutoStart::GenerateDesktopFile(AutoStartInfo autostart_info)
fileContents << "Terminal=false" << std::endl;
fileContents << "Type=Application" << std::endl;
/*-------------------------------------------------*\
| Add the executable path and arguments |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Add the executable path and arguments |
\*-----------------------------------------------------*/
fileContents << "Exec=" << autostart_info.path;
if (autostart_info.args != "")
@@ -172,16 +172,16 @@ void AutoStart::InitAutoStart(std::string name)
autostart_name = name;
/*-------------------------------------------------*\
| Get home and config paths |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Get home and config paths |
\*-----------------------------------------------------*/
const char *xdg_config_home = getenv("XDG_CONFIG_HOME");
const char *home = getenv("HOME");
/*-------------------------------------------------*\
| Determine where the autostart .desktop files are |
| kept |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Determine where the autostart .desktop files are |
| kept |
\*-----------------------------------------------------*/
if(xdg_config_home != NULL)
{
autostart_dir = xdg_config_home;
@@ -193,9 +193,9 @@ void AutoStart::InitAutoStart(std::string name)
autostart_dir = autostart_dir + "/.config/autostart/";
}
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_dir != "")
{
std::error_code ec;
+1 -1
View File
@@ -4,7 +4,7 @@
| Autostart implementation for Linux |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
+40 -40
View File
@@ -4,7 +4,7 @@
| Autostart implementation for MacOS |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <fstream>
@@ -26,21 +26,21 @@ bool AutoStart::DisableAutoStart()
std::error_code autostart_file_remove_errcode;
bool success = false;
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
/*---------------------------------------------*\
| If file doesn't exist, disable is successful |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| If file doesn't exist, disable is successful |
\*-------------------------------------------------*/
if(!filesystem::exists(autostart_file))
{
success = true;
}
/*---------------------------------------------*\
| Otherwise, delete the file |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| Otherwise, delete the file |
\*-------------------------------------------------*/
else
{
success = filesystem::remove(autostart_file, autostart_file_remove_errcode);
@@ -63,25 +63,25 @@ bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
{
bool success = false;
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
std::string desktop_file = GenerateLaunchAgentFile(autostart_info);
std::ofstream autostart_file_stream(autostart_file, std::ios::out | std::ios::trunc);
/*---------------------------------------------*\
| Error out if the file could not be opened |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| Error out if the file could not be opened |
\*-------------------------------------------------*/
if(!autostart_file_stream)
{
LOG_ERROR("[AutoStart] Could not open %s for writing.", autostart_file.c_str());
success = false;
}
/*---------------------------------------------*\
| Otherwise, write the file |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| Otherwise, write the file |
\*-------------------------------------------------*/
else
{
autostart_file_stream << desktop_file;
@@ -104,9 +104,9 @@ bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
bool AutoStart::IsAutoStartEnabled()
{
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
return(filesystem::exists(autostart_file));
@@ -119,9 +119,9 @@ bool AutoStart::IsAutoStartEnabled()
std::string AutoStart::GetExePath()
{
/*-------------------------------------------------*\
| Create the OpenRGB executable path |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Create the OpenRGB executable path |
\*-----------------------------------------------------*/
char exepath[ PATH_MAX ];
uint32_t exesize = PATH_MAX;
@@ -132,17 +132,17 @@ std::string AutoStart::GetExePath()
return("");
}
/*-----------------------------------------------------*\
| MacOS AutoStart Implementation |
| Private Methods |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| MacOS AutoStart Implementation |
| Private Methods |
\*---------------------------------------------------------*/
std::string AutoStart::GenerateLaunchAgentFile(AutoStartInfo autostart_info)
{
/*-------------------------------------------------*\
| Generate a .plist file from the AutoStart |
| parameters |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Generate a .plist file from the AutoStart |
| parameters |
\*-----------------------------------------------------*/
std::stringstream fileContents;
fileContents << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << std::endl;
@@ -180,16 +180,16 @@ void AutoStart::InitAutoStart(std::string name)
autostart_name = name;
/*-------------------------------------------------*\
| Determine where the autostart .desktop files are |
| kept |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Determine where the autostart .desktop files are |
| kept |
\*-----------------------------------------------------*/
autostart_dir = getenv("HOME");
autostart_dir = autostart_dir + "/Library/LaunchAgents/";
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_dir != "")
{
std::error_code ec;
+1 -1
View File
@@ -4,7 +4,7 @@
| Autostart implementation for MacOS |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
+40 -40
View File
@@ -4,7 +4,7 @@
| Autostart implementation for Windows |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <fstream>
@@ -25,21 +25,21 @@ bool AutoStart::DisableAutoStart()
std::error_code autostart_file_remove_errcode;
bool success = false;
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
/*---------------------------------------------*\
| If file doesn't exist, disable is successful |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| If file doesn't exist, disable is successful |
\*-------------------------------------------------*/
if(!filesystem::exists(autostart_file))
{
success = true;
}
/*---------------------------------------------*\
| Otherwise, delete the file |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| Otherwise, delete the file |
\*-------------------------------------------------*/
else
{
success = filesystem::remove(autostart_file, autostart_file_remove_errcode);
@@ -62,9 +62,9 @@ bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
{
bool success = false;
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
bool weInitialised = false;
@@ -79,9 +79,9 @@ bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
result = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_ALL, IID_IShellLinkW, (void**)&shellLink);
/*---------------------------------------------*\
| If not initialized, initialize |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| If not initialized, initialize |
\*-------------------------------------------------*/
if(result == CO_E_NOTINITIALIZED)
{
weInitialised = true;
@@ -89,10 +89,10 @@ bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
result = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_ALL, IID_IShellLinkW, (void**)&shellLink);
}
/*---------------------------------------------*\
| If successfully initialized, save a shortcut |
| from the AutoStart parameters |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| If successfully initialized, save a shortcut |
| from the AutoStart parameters |
\*-------------------------------------------------*/
if(SUCCEEDED(result))
{
shellLink->SetPath(exepathw.c_str());
@@ -114,9 +114,9 @@ bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
shellLink->Release();
}
/*---------------------------------------------*\
| Uninitialize when done |
\*---------------------------------------------*/
/*-------------------------------------------------*\
| Uninitialize when done |
\*-------------------------------------------------*/
if(weInitialised)
{
CoUninitialize();
@@ -132,9 +132,9 @@ bool AutoStart::EnableAutoStart(AutoStartInfo autostart_info)
bool AutoStart::IsAutoStartEnabled()
{
/*-------------------------------------------------*\
| Check if the filename is valid |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Check if the filename is valid |
\*-----------------------------------------------------*/
if(autostart_file != "")
{
return(filesystem::exists(autostart_file));
@@ -147,9 +147,9 @@ bool AutoStart::IsAutoStartEnabled()
std::string AutoStart::GetExePath()
{
/*-------------------------------------------------*\
| Create the OpenRGB executable path |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Create the OpenRGB executable path |
\*-----------------------------------------------------*/
char exepath[MAX_PATH] = "";
DWORD count = GetModuleFileNameA(NULL, exepath, MAX_PATH);
@@ -157,10 +157,10 @@ std::string AutoStart::GetExePath()
return(std::string(exepath, (count > 0) ? count : 0));
}
/*-----------------------------------------------------*\
| Windows AutoStart Implementation |
| Private Methods |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Windows AutoStart Implementation |
| Private Methods |
\*---------------------------------------------------------*/
void AutoStart::InitAutoStart(std::string name)
{
@@ -168,9 +168,9 @@ void AutoStart::InitAutoStart(std::string name)
autostart_name = name;
/*-------------------------------------------------*\
| Get startup applications path |
\*-------------------------------------------------*/
/*-----------------------------------------------------*\
| Get startup applications path |
\*-----------------------------------------------------*/
HRESULT result = SHGetFolderPathA(NULL, CSIDL_PROGRAMS, NULL, 0, startMenuPath);
if(SUCCEEDED(result))
@@ -185,10 +185,10 @@ void AutoStart::InitAutoStart(std::string name)
}
}
/*-----------------------------------------------------*\
| Convert an UTF8 string to a wide Unicode String |
| (from wmi.cpp) |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Convert an UTF8 string to a wide Unicode String |
| (from wmi.cpp) |
\*---------------------------------------------------------*/
std::wstring AutoStart::utf8_decode(const std::string& str)
{
if(str.empty())
+1 -1
View File
@@ -4,7 +4,7 @@
| Autostart implementation for Windows |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
+1 -1
View File
@@ -4,7 +4,7 @@
| Autostart common implementation |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "AutoStart.h"
+1 -1
View File
@@ -4,7 +4,7 @@
| Autostart common implementation |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
+15 -13
View File
@@ -8,18 +8,14 @@ To create a merge request, log into GitLab and fork the OpenRGB project. Push y
* Please keep the scope of each merge request limited to one functional area. If you wish to add a new device controller, for instance, don't also do code cleanup in another controller as part of the same merge request.
* Explain what your merge request is changing, why you feel the change is necessary, and add any additional information you feel is needed to best understand your change in the merge request description.
* Mark your merge request as a draft (start title with "Draft:") until it has been tested and verified working.
* Mark your merge request as a Draft (start title with "Draft:") until it has been fully developed and ideally tested and verified working. Remove Draft status when you are ready for the code to be reviewed and merged. I typically do not look at or review Draft merge requests.
* Follow the Style Guidelines below when making your code changes.
* Avoid using `git merge` when updating your fork. The OpenRGB project uses a linear git history, meaning all changes are rebased onto the tip of master. By using `git rebase` to update your fork, you will make it easier to accept merge requests.
* Avoid using `git merge` when updating your fork. The OpenRGB project uses a linear git history, meaning all changes are rebased onto the tip of master. By using `git rebase` to update your fork, you will make it easier to accept merge requests. I also recommend squashing your commits, though GitLab will do this as part of the merge process if you don't.
* Do not submit a merge request using your fork's `master` branch as the source. The `master` branch is protected by default when creating a fork and I cannot manually rebase a protected branch before merging. If you submit a merge request with a protected `master` branch as the source, it may not get merged until you unprotect it.
### Pipelines, Shared Runners and Quotas
### Pipelines, Shared Runners, Quotas, and Accepting Merge Requests
Since mid 2022 Gitlab has limited the usage of shared runners to all projects and whilst quite geneorous quotas are allowed
for open source projects it is possible to exhaust them. With that in mind not all jobs within the pipeline build are
triggered to automatically run with every push to your branch with the exception of the Windows 64bit and Linux Appimage 64bit
jobs. If you need to test or share another build you can still start it manually from your pipeline queue.
Once a merge request is created all architectures and platforms will be compiled to ensure that they are ready to merge.
Since mid 2022, GitLab has severely limited the usage of shared runners to all free users. With that in mind, most pipeline jobs are skipped on forked copies of the project. Only the Windows 64bit and Linux AppImage amd64 jobs are run on forks, and only if you have permission and available CI minutes on your account. Unfortunately, with the ever tightening restrictions GitLab has on free CI usage, even to public projects with an open source license, you likely will not be able to utilize the CI builds for your own fork unless you set up your own runners. Because of this, I no longer require a successful CI run in order to accept a merge request as it is an unreasonable ask given the current CI situation. If your merge request requires additional verification, I may choose to merge it into a branch instead of into `master` so that my own runners can run the full set of jobs and then I will pull it into master after any verification or changes. This also means that any build breakages inadvertently caused by merging a merge request may result in the merge being backed out, in which case I will either fix it myself or leave a message on the merge request to rework and resubmit a fixed version.
Please refer to the following link for [further information relating to minutes and quotas](https://docs.gitlab.com/ee/ci/pipelines/cicd_minutes.html).
@@ -58,12 +54,18 @@ OpenRGB is written in C++, uses the Qt framework for UI, and uses the QMake buil
* Capitalize hexadecimal literals (`0xFF` not `0xff`) except in the udev rules file (which must be lowercase to work)
* No space between keyword and open parenthesis (`if(TRUE)` not `if (TRUE)`). There are some instances of this that haven't been cleaned up in the code.
* Generally, `snake_case` is used for variable names and `CamelCase` is used for function and class names
* Add a header comment to new files with the filename, description, original author, and date (this is missing on most Detect files)
* Line up `=` when doing a lot of assignments together
* Add a header comment to new files with the filename, description, original author, date, and SPDX license identifier. You can copy one from an existing file to preserve formatting.
* Line up `=` on a tab stop when doing a lot of assignments together
* Use this comment box style when adding comments:
* Try to start the comment box on the same column as the code directly beneath it and end on column 61 if possible. See the example below:
```
/*--------------------------------*\
| This is a comment |
\*_-------------------------------*/
/*---------------------------------------------------------*\
| This is a comment |
\*---------------------------------------------------------*/
```
## Translating
Translation files are located in [`OpenRGB/qt/i18n/`](https://gitlab.com/CalcProgrammer1/OpenRGB/-/tree/master/qt/i18n), where languages are formatted using ISO 639-1 format: `OpenRGB_xx_XX.ts` — `xx_XX` representing the language code.
In order to translate a file, you need to [fork](https://gitlab.com/CalcProgrammer1/OpenRGB/-/forks/new) the project, create a new file for your language with `lupdate` (or edit an exisiting one), edit the file with `qtlinguist`, commit, push, and create a merge request.
+1 -1
View File
@@ -4,7 +4,7 @@
| List of named color constants |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#ifndef COLORS_H
@@ -7,52 +7,55 @@
| Mohammed Julfikar Ali Mahbub (o-julfikar) 01 Apr 2024 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
/*-----------------------------------------------------*\
| OpenRGB includes |
\*-----------------------------------------------------*/
#include <hidapi.h>
#include "Detector.h"
/*-----------------------------------------------------*\
| A4 Tech specific includes |
\*-----------------------------------------------------*/
#include "RGBController_BloodyMouse.h"
#include "BloodyB820RController.h"
#include "BloodyMouseController.h"
#include "DetectionManager.h"
#include "RGBController_BloodyB820R.h"
#include "RGBController_BloodyMouse.h"
/*-----------------------------------------------------*\
| A4 Tech USB vendor ID |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| A4 Tech USB vendor ID |
\*---------------------------------------------------------*/
#define A4_TECH_VID 0x09DA
void DetectA4TechMouseControllers(hid_device_info* info, const std::string& name)
DetectedControllers DetectA4TechMouseControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
BloodyMouseController* controller = new BloodyMouseController(dev, info->path, info->product_id);
BloodyMouseController* controller = new BloodyMouseController(dev, info->path, info->product_id, name);
RGBController_BloodyMouse* rgb_controller = new RGBController_BloodyMouse(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
void DetectBloodyB820R(hid_device_info* info, const std::string& name)
DetectedControllers DetectBloodyB820R(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
BloodyB820RController* controller = new BloodyB820RController(dev, info->path);
BloodyB820RController* controller = new BloodyB820RController(dev, info->path, name);
RGBController_BloodyB820R* rgb_controller = new RGBController_BloodyB820R(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
REGISTER_HID_DETECTOR_IPU("Bloody W60 Pro", DetectA4TechMouseControllers, A4_TECH_VID, BLOODY_W60_PRO_PID, 2, 0xFF33, 0x0529);
@@ -6,7 +6,7 @@
| Mohammed Julfikar Ali Mahbub (o-julfikar) 01 Apr 2024 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "BloodyB820RController.h"
@@ -20,10 +20,11 @@
| the second packet. |
\*-------------------------------------------------------------------------------------*/
BloodyB820RController::BloodyB820RController(hid_device* dev_handle, const char* path)
BloodyB820RController::BloodyB820RController(hid_device* dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
SendControlPacket(BLOODY_B820R_GAIN_CONTROL);
}
@@ -52,6 +53,11 @@ std::string BloodyB820RController::GetLocation()
return("HID: " + location);
}
std::string BloodyB820RController::GetName()
{
return(name);
}
void BloodyB820RController::SendControlPacket(uint8_t data)
{
uint8_t buffer[BLOODY_B820R_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00 };
@@ -6,7 +6,7 @@
| Mohammed Julfikar Ali Mahbub (o-julfikar) 01 Apr 2024 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -39,15 +39,17 @@ enum
class BloodyB820RController
{
public:
BloodyB820RController(hid_device* dev_handle, const char* path);
BloodyB820RController(hid_device* dev_handle, const char* path, std::string dev_name);
~BloodyB820RController();
std::string GetSerial();
std::string GetLocation();
std::string GetName();
void SetLEDDirect(std::vector<RGBColor> colors);
void SendControlPacket(uint8_t data);
private:
std::string location;
std::string name;
hid_device* dev;
};
@@ -6,7 +6,7 @@
| Mohammed Julfikar Ali Mahbub (o-julfikar) 01 Apr 2024 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "RGBControllerKeyNames.h"
@@ -154,7 +154,7 @@ RGBController_BloodyB820R::RGBController_BloodyB820R(BloodyB820RController *cont
{
controller = controller_ptr;
name = "Bloody B820R";
name = controller->GetName();
vendor = "A4Tech";
type = DEVICE_TYPE_KEYBOARD;
description = "A4Tech Bloody Keyboard";
@@ -187,11 +187,7 @@ void RGBController_BloodyB820R::SetupZones()
KB_zone.leds_min = BLOODY_B820R_KEYCOUNT;
KB_zone.leds_max = BLOODY_B820R_KEYCOUNT;
KB_zone.leds_count = BLOODY_B820R_KEYCOUNT;
KB_zone.matrix_map = new matrix_map_type;
KB_zone.matrix_map->height = 6;
KB_zone.matrix_map->width = 21;
KB_zone.matrix_map->map = (unsigned int *)&matrix_map;
KB_zone.matrix_map.Set(6, 21, (unsigned int *)&matrix_map);
zones.push_back(KB_zone);
/*-------------------------------------------------*\
@@ -214,20 +210,12 @@ void RGBController_BloodyB820R::SetupZones()
SetupColors();
}
void RGBController_BloodyB820R::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_BloodyB820R::DeviceUpdateLEDs()
{
controller->SetLEDDirect(colors);
}
void RGBController_BloodyB820R::UpdateZoneLEDs(int zone)
void RGBController_BloodyB820R::DeviceUpdateZoneLEDs(int zone)
{
std::vector<RGBColor> colour;
@@ -239,7 +227,7 @@ void RGBController_BloodyB820R::UpdateZoneLEDs(int zone)
controller->SetLEDDirect(colour);
}
void RGBController_BloodyB820R::UpdateSingleLED(int led)
void RGBController_BloodyB820R::DeviceUpdateSingleLED(int led)
{
std::vector<RGBColor> colour;
colour.push_back(colors[led]);
@@ -6,7 +6,7 @@
| Mohammed Julfikar Ali Mahbub (o-julfikar) 01 Apr 2024 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -22,11 +22,10 @@ public:
~RGBController_BloodyB820R();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -6,17 +6,18 @@
| Chris M (Dr_No) 30 Jun 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "BloodyMouseController.h"
#include "StringUtils.h"
BloodyMouseController::BloodyMouseController(hid_device* dev_handle, const char* path, uint16_t product_id)
BloodyMouseController::BloodyMouseController(hid_device* dev_handle, const char* path, uint16_t product_id, std::string dev_name)
{
dev = dev_handle;
location = path;
pid = product_id;
name = dev_name;
InitDevice();
}
@@ -49,6 +50,11 @@ std::string BloodyMouseController::GetLocation()
return("HID: " + location);
}
std::string BloodyMouseController::GetName()
{
return(name);
}
void BloodyMouseController::InitDevice()
{
uint8_t buffer[BLOODYMOUSE_WRITE_PACKET_SIZE] = { 0x07, 0x03, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00 };
@@ -6,7 +6,7 @@
| Chris M (Dr_No) 30 Jun 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -50,18 +50,20 @@ enum
class BloodyMouseController
{
public:
BloodyMouseController(hid_device* dev_handle, const char* path, uint16_t product_id);
BloodyMouseController(hid_device* dev_handle, const char* path, uint16_t product_id, std::string dev_name);
~BloodyMouseController();
uint16_t GetPid();
std::string GetSerial();
std::string GetLocation();
std::string GetName();
void SetLedsDirect(std::vector<RGBColor> colors);
private:
uint16_t pid;
std::string location;
std::string name;
hid_device* dev;
void InitDevice();
@@ -6,7 +6,7 @@
| Chris M (Dr_No) 30 Jun 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "RGBController_BloodyMouse.h"
@@ -71,6 +71,7 @@ RGBController_BloodyMouse::RGBController_BloodyMouse(BloodyMouseController *cont
type = DEVICE_TYPE_MOUSE;
}
name = controller->GetName();
vendor = "Bloody";
description = "Controller compatible with the Bloody W60 Pro and MP 50RS";
serial = controller->GetSerial();
@@ -133,7 +134,6 @@ void RGBController_BloodyMouse::SetupZones()
new_zone.leds_max = new_zone.leds_min;
new_zone.leds_count = new_zone.leds_min;
new_zone.type = bool_single ? ZONE_TYPE_SINGLE : ZONE_TYPE_LINEAR;
new_zone.matrix_map = NULL;
zones.push_back(new_zone);
for(unsigned int lp_idx = 0; lp_idx < zones[zone_idx].leds_count; lp_idx++)
@@ -159,13 +159,6 @@ void RGBController_BloodyMouse::SetupZones()
SetupColors();
}
void RGBController_BloodyMouse::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_BloodyMouse::DeviceUpdateLEDs()
{
std::vector<RGBColor> colour;
@@ -178,12 +171,12 @@ void RGBController_BloodyMouse::DeviceUpdateLEDs()
controller->SetLedsDirect(colour);
}
void RGBController_BloodyMouse::UpdateZoneLEDs(int /*zone*/)
void RGBController_BloodyMouse::DeviceUpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_BloodyMouse::UpdateSingleLED(int /*led*/)
void RGBController_BloodyMouse::DeviceUpdateSingleLED(int /*led*/)
{
DeviceUpdateLEDs();
}
@@ -6,7 +6,7 @@
| Chris M (Dr_No) 30 Jun 2022 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -30,11 +30,10 @@ public:
~RGBController_BloodyMouse();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -0,0 +1,195 @@
/*---------------------------------------------------------*\
| AMBXController.cpp |
| |
| Driver for Philips amBX Gaming lights |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "AMBXController.h"
#include "LogManager.h"
#include "StringUtils.h"
#include <cstring>
#include <thread>
#include <chrono>
AMBXController::AMBXController(const char* path)
{
initialized = false;
usb_context = nullptr;
dev_handle = nullptr;
location = "USB: ";
location += path;
// Initialize libusb in this instance
if(libusb_init(&usb_context) < 0)
{
return;
}
// Get the device list
libusb_device** device_list;
ssize_t device_count = libusb_get_device_list(usb_context, &device_list);
if(device_count < 0)
{
return;
}
for(ssize_t i = 0; i < device_count; i++)
{
libusb_device* device = device_list[i];
struct libusb_device_descriptor desc;
if(libusb_get_device_descriptor(device, &desc) != LIBUSB_SUCCESS)
{
continue;
}
if(desc.idVendor == AMBX_VID && desc.idProduct == AMBX_PID)
{
uint8_t bus = libusb_get_bus_number(device);
uint8_t address = libusb_get_device_address(device);
char current_path[32];
snprintf(current_path, sizeof(current_path), "%d-%d", bus, address);
if(strcmp(path, current_path) == 0)
{
// Try to open this device
if(libusb_open(device, &dev_handle) != LIBUSB_SUCCESS)
{
continue;
}
// Try to detach the kernel driver if attached
if(libusb_kernel_driver_active(dev_handle, 0))
{
libusb_detach_kernel_driver(dev_handle, 0);
}
// Set auto-detach for Windows compatibility
libusb_set_auto_detach_kernel_driver(dev_handle, 1);
// Claim the interface
if(libusb_claim_interface(dev_handle, 0) != LIBUSB_SUCCESS)
{
libusb_close(dev_handle);
dev_handle = nullptr;
continue;
}
// Get string descriptor for serial number if available
if(desc.iSerialNumber != 0)
{
unsigned char serial_str[256];
int serial_result = libusb_get_string_descriptor_ascii(dev_handle, desc.iSerialNumber,
serial_str, sizeof(serial_str));
if(serial_result > 0)
{
serial = std::string(reinterpret_cast<char*>(serial_str), serial_result);
}
}
// Successfully opened and claimed the device
initialized = true;
break;
}
}
}
libusb_free_device_list(device_list, 1);
}
AMBXController::~AMBXController()
{
if(initialized)
{
// Turn off all lights before closing
unsigned int led_ids[5] =
{
AMBX_LIGHT_LEFT,
AMBX_LIGHT_RIGHT,
AMBX_LIGHT_WALL_LEFT,
AMBX_LIGHT_WALL_CENTER,
AMBX_LIGHT_WALL_RIGHT
};
RGBColor colors[5] = { 0, 0, 0, 0, 0 };
SetLEDColors(led_ids, colors, 5);
}
if(dev_handle != nullptr)
{
// Release the interface
libusb_release_interface(dev_handle, 0);
// Close the device
libusb_close(dev_handle);
dev_handle = nullptr;
}
if(usb_context != nullptr)
{
libusb_exit(usb_context);
usb_context = nullptr;
}
}
std::string AMBXController::GetDeviceLocation()
{
return location;
}
std::string AMBXController::GetSerialString()
{
return serial;
}
bool AMBXController::IsInitialized()
{
return initialized;
}
void AMBXController::SendPacket(unsigned char* packet, unsigned int size)
{
if(!initialized || dev_handle == nullptr)
{
return;
}
int actual_length = 0;
libusb_interrupt_transfer(dev_handle, AMBX_ENDPOINT_OUT, packet, size, &actual_length, 100);
}
void AMBXController::SetLEDColor(unsigned int led, RGBColor color)
{
if(!initialized)
{
return;
}
unsigned char color_buf[6] =
{
AMBX_PACKET_HEADER,
static_cast<unsigned char>(led),
AMBX_SET_COLOR,
(unsigned char)RGBGetRValue(color),
(unsigned char)RGBGetGValue(color),
(unsigned char)RGBGetBValue(color)
};
SendPacket(color_buf, 6);
std::this_thread::sleep_for(std::chrono::milliseconds(2));
}
void AMBXController::SetLEDColors(unsigned int* leds, RGBColor* colors, unsigned int count)
{
for(unsigned int i = 0; i < count; i++)
{
SetLEDColor(leds[i], colors[i]);
}
}
@@ -0,0 +1,57 @@
/*---------------------------------------------------------*\
| AMBXController.h |
| |
| Driver for Philips amBX Gaming lights |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include <string>
#ifdef _WIN32
#include "dependencies/libusb-1.0.27/include/libusb.h"
#else
#include <libusb.h>
#endif
#define AMBX_VID 0x0471
#define AMBX_PID 0x083F
#define AMBX_ENDPOINT_OUT 0x02
#define AMBX_PACKET_HEADER 0xA1
#define AMBX_SET_COLOR 0x03
enum
{
AMBX_LIGHT_LEFT = 0x0B,
AMBX_LIGHT_RIGHT = 0x1B,
AMBX_LIGHT_WALL_LEFT = 0x2B,
AMBX_LIGHT_WALL_CENTER = 0x3B,
AMBX_LIGHT_WALL_RIGHT = 0x4B
};
class AMBXController
{
public:
AMBXController(const char* path);
~AMBXController();
std::string GetDeviceLocation();
std::string GetSerialString();
bool IsInitialized();
void SetLEDColor(unsigned int led, RGBColor color);
void SetLEDColors(unsigned int* leds, RGBColor* colors, unsigned int count);
private:
libusb_context* usb_context;
libusb_device_handle* dev_handle;
std::string location;
std::string serial;
bool initialized;
void SendPacket(unsigned char* packet, unsigned int size);
};
@@ -0,0 +1,77 @@
/*---------------------------------------------------------*\
| AMBXControllerDetect.cpp |
| |
| Detector for Philips amBX Gaming lights |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "AMBXController.h"
#include "DetectionManager.h"
#include "RGBController.h"
#include "RGBController_AMBX.h"
#ifdef _WIN32
#include "dependencies/libusb-1.0.27/include/libusb.h"
#else
#include <libusb.h>
#endif
DetectedControllers DetectAMBXControllers()
{
DetectedControllers detected_controllers;
libusb_context* ctx = NULL;
if(libusb_init(&ctx) >= 0)
{
libusb_device** devs;
ssize_t num_devs = libusb_get_device_list(ctx, &devs);
if(num_devs > 0)
{
for(ssize_t i = 0; i < num_devs; i++)
{
libusb_device* dev = devs[i];
libusb_device_descriptor desc;
if(libusb_get_device_descriptor(dev, &desc) != 0)
{
continue;
}
if(desc.idVendor == AMBX_VID && desc.idProduct == AMBX_PID)
{
uint8_t bus = libusb_get_bus_number(dev);
uint8_t address = libusb_get_device_address(dev);
char device_path[32];
snprintf(device_path, sizeof(device_path), "%d-%d", bus, address);
// Use the AMBXController to handle opening and initializing
AMBXController* controller = new AMBXController(device_path);
if(controller->IsInitialized())
{
RGBController_AMBX* rgb_controller = new RGBController_AMBX(controller);
detected_controllers.push_back(rgb_controller);
}
else
{
delete controller;
}
}
}
libusb_free_device_list(devs, 1);
libusb_exit(ctx);
}
else
{
libusb_exit(ctx);
}
}
return(detected_controllers);
}
REGISTER_DETECTOR("Philips amBX", DetectAMBXControllers);
@@ -0,0 +1,172 @@
/*---------------------------------------------------------*\
| RGBController_AMBX.cpp |
| |
| RGB Controller for Philips amBX Gaming lights |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "RGBController_AMBX.h"
/**------------------------------------------------------------------*\
@name Philips amBX
@category Accessory
@type USB
@save :x:
@direct :white_check_mark:
@effects :x:
@detectors DetectAMBXControllers
@comment The Philips amBX Gaming lights system includes left and right
lights and a wall-washer bar with three zones.
\*-------------------------------------------------------------------*/
RGBController_AMBX::RGBController_AMBX(AMBXController* controller_ptr)
{
controller = controller_ptr;
name = "Philips amBX";
vendor = "Philips";
type = DEVICE_TYPE_ACCESSORY;
description = "Philips amBX Gaming Device";
location = controller->GetDeviceLocation();
serial = controller->GetSerialString();
mode Direct;
Direct.name = "Direct";
Direct.value = 0;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Direct.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Direct);
SetupZones();
}
RGBController_AMBX::~RGBController_AMBX()
{
delete controller;
}
void RGBController_AMBX::SetupZones()
{
// Set up zones
zone side_lights_zone;
side_lights_zone.name = "Side Lights";
side_lights_zone.type = ZONE_TYPE_LINEAR;
side_lights_zone.leds_min = 2;
side_lights_zone.leds_max = 2;
side_lights_zone.leds_count = 2;
zones.push_back(side_lights_zone);
zone wallwasher_zone;
wallwasher_zone.name = "Wallwasher";
wallwasher_zone.type = ZONE_TYPE_LINEAR;
wallwasher_zone.leds_min = 3;
wallwasher_zone.leds_max = 3;
wallwasher_zone.leds_count = 3;
zones.push_back(wallwasher_zone);
// Set up LEDs
led left_light;
left_light.name = "Left";
left_light.value = AMBX_LIGHT_LEFT;
leds.push_back(left_light);
led right_light;
right_light.name = "Right";
right_light.value = AMBX_LIGHT_RIGHT;
leds.push_back(right_light);
led wall_left;
wall_left.name = "Wall Left";
wall_left.value = AMBX_LIGHT_WALL_LEFT;
leds.push_back(wall_left);
led wall_center;
wall_center.name = "Wall Center";
wall_center.value = AMBX_LIGHT_WALL_CENTER;
leds.push_back(wall_center);
led wall_right;
wall_right.name = "Wall Right";
wall_right.value = AMBX_LIGHT_WALL_RIGHT;
leds.push_back(wall_right);
SetupColors();
}
void RGBController_AMBX::DeviceUpdateLEDs()
{
if(!controller->IsInitialized())
{
return;
}
unsigned int led_values[5];
RGBColor led_colors[5];
for(unsigned int led_idx = 0; led_idx < leds.size(); led_idx++)
{
led_values[led_idx] = leds[led_idx].value;
led_colors[led_idx] = colors[led_idx];
}
controller->SetLEDColors(led_values, led_colors, static_cast<unsigned int>(leds.size()));
}
void RGBController_AMBX::DeviceUpdateZoneLEDs(int zone)
{
if(!controller->IsInitialized())
{
return;
}
unsigned int start_idx = 0;
unsigned int zone_size = 0;
// Calculate start index and size
for(unsigned int z_idx = 0; z_idx < zones.size(); z_idx++)
{
if(z_idx == (unsigned int)zone)
{
zone_size = zones[z_idx].leds_count;
break;
}
start_idx += zones[z_idx].leds_count;
}
unsigned int led_values[5];
RGBColor led_colors[5];
for(unsigned int led_idx = 0; led_idx < zone_size; led_idx++)
{
unsigned int current_idx = start_idx + led_idx;
led_values[led_idx] = leds[current_idx].value;
led_colors[led_idx] = colors[current_idx];
}
controller->SetLEDColors(led_values, led_colors, zone_size);
}
void RGBController_AMBX::DeviceUpdateSingleLED(int led)
{
if(!controller->IsInitialized())
{
return;
}
unsigned int led_value = leds[led].value;
RGBColor color = colors[led];
controller->SetLEDColor(led_value, color);
}
void RGBController_AMBX::DeviceUpdateMode()
{
if(!controller->IsInitialized())
{
return;
}
DeviceUpdateLEDs();
}
@@ -0,0 +1,31 @@
/*---------------------------------------------------------*\
| RGBController_AMBX.h |
| |
| RGB Controller for Philips amBX Gaming lights |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
#include "RGBController.h"
#include "AMBXController.h"
class RGBController_AMBX : public RGBController
{
public:
RGBController_AMBX(AMBXController* controller_ptr);
~RGBController_AMBX();
void SetupZones();
void DeviceUpdateLEDs();
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
private:
AMBXController* controller;
};
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 06 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <cstring>
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 06 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -6,12 +6,12 @@
| Adam Honse (CalcProgrammer1) 06 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <hidapi.h>
#include "Detector.h"
#include "AMDWraithPrismController.h"
#include "DetectionManager.h"
#include "RGBController_AMDWraithPrism.h"
/*---------------------------------------------------------*\
@@ -24,24 +24,22 @@
\*---------------------------------------------------------*/
#define AMD_WRAITH_PRISM_PID 0x0051
/******************************************************************************************\
* *
* DetectAMDWraithPrismControllers *
* *
* Tests the USB address to see if an AMD Wraith Prism controller exists there. *
* *
\******************************************************************************************/
void DetectAMDWraithPrismControllers(hid_device_info* info, const std::string&)
DetectedControllers DetectAMDWraithPrismControllers(hid_device_info* info, const std::string&)
{
hid_device* dev = hid_open_path(info->path);
if( dev )
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
AMDWraithPrismController* controller = new AMDWraithPrismController(dev, info->path);
RGBController_AMDWraithPrism* rgb_controller = new RGBController_AMDWraithPrism(controller);
// Constructor sets the name
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
REGISTER_HID_DETECTOR_IP("AMD Wraith Prism", DetectAMDWraithPrismControllers, AMD_WRAITH_PRISM_VID, AMD_WRAITH_PRISM_PID, 1, 0xFF00);
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 25 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "RGBController_AMDWraithPrism.h"
@@ -137,24 +137,23 @@ RGBController_AMDWraithPrism::~RGBController_AMDWraithPrism()
void RGBController_AMDWraithPrism::SetupZones()
{
/*---------------------------------------------------------*\
| LED maps |
\*---------------------------------------------------------*/
/*-----------------------------------------------------*\
| LED maps |
\*-----------------------------------------------------*/
const unsigned int logo_leds[1] = { 0x00 };
const unsigned int fan_leds[1] = { 0x01 };
const unsigned int ring_leds[14] = { 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x10, 0x0F,
0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09 };
const unsigned int ring_leds[15] = { 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x10,
0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09 };
/*---------------------------------------------------------*\
| Set up zones |
\*---------------------------------------------------------*/
/*-----------------------------------------------------*\
| Set up zones |
\*-----------------------------------------------------*/
zone logo_zone;
logo_zone.name = "Logo";
logo_zone.type = ZONE_TYPE_SINGLE;
logo_zone.leds_min = 1;
logo_zone.leds_max = 1;
logo_zone.leds_count = 1;
logo_zone.matrix_map = NULL;
zones.push_back(logo_zone);
zone fan_zone;
@@ -163,21 +162,19 @@ void RGBController_AMDWraithPrism::SetupZones()
fan_zone.leds_min = 1;
fan_zone.leds_max = 1;
fan_zone.leds_count = 1;
fan_zone.matrix_map = NULL;
zones.push_back(fan_zone);
zone ring_zone;
ring_zone.name = "Ring";
ring_zone.type = ZONE_TYPE_LINEAR;
ring_zone.leds_min = 14;
ring_zone.leds_max = 14;
ring_zone.leds_count = 14;
ring_zone.matrix_map = NULL;
ring_zone.leds_min = 15;
ring_zone.leds_max = 15;
ring_zone.leds_count = 15;
zones.push_back(ring_zone);
/*---------------------------------------------------------*\
| Set up LEDs |
\*---------------------------------------------------------*/
/*-----------------------------------------------------*\
| Set up LEDs |
\*-----------------------------------------------------*/
for(unsigned int led_idx = 0; led_idx < 1; led_idx++)
{
led logo_led;
@@ -194,7 +191,7 @@ void RGBController_AMDWraithPrism::SetupZones()
leds.push_back(fan_led);
}
for(unsigned int led_idx = 0; led_idx < 14; led_idx++)
for(unsigned int led_idx = 0; led_idx < 15; led_idx++)
{
led ring_led;
ring_led.name = "Ring LED";
@@ -205,39 +202,39 @@ void RGBController_AMDWraithPrism::SetupZones()
SetupColors();
}
void RGBController_AMDWraithPrism::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AMDWraithPrism::DeviceUpdateLEDs()
{
if(modes[active_mode].color_mode == MODE_COLORS_PER_LED)
{
unsigned char led_ids[15];
RGBColor color_buf[15];
unsigned int leds_count = 0;
unsigned char led_ids[17];
RGBColor color_buf[17];
unsigned int leds_count;
for(unsigned int led_idx = 0; led_idx < colors.size(); led_idx++)
/*-------------------------------------------------*\
| Send logo and fan LEDs in the first packet |
\*-------------------------------------------------*/
leds_count = 0;
for(std::size_t led_idx = 0; led_idx < 2; led_idx++)
{
led_ids[leds_count] = (unsigned char)leds[led_idx].value;
color_buf[leds_count] = colors[led_idx];
leds_count++;
if(leds_count >= 15)
{
controller->SendDirectPacket(15, led_ids, color_buf);
leds_count = 0;
}
}
controller->SendDirectPacket(leds_count, led_ids, color_buf);
if(leds_count > 0)
/*-------------------------------------------------*\
| Send all ring LEDs in the second packet |
\*-------------------------------------------------*/
leds_count = 0;
for(std::size_t led_idx = 0; led_idx < ( colors.size() - 2 ); led_idx++)
{
controller->SendDirectPacket(leds_count, led_ids, color_buf);
led_ids[leds_count] = (unsigned char)leds[led_idx + 2].value;
color_buf[leds_count] = colors[led_idx + 2];
leds_count++;
}
controller->SendDirectPacket(leds_count, led_ids, color_buf);
}
else if(modes[active_mode].color_mode == MODE_COLORS_MODE_SPECIFIC)
{
@@ -264,12 +261,12 @@ void RGBController_AMDWraithPrism::DeviceUpdateLEDs()
}
}
void RGBController_AMDWraithPrism::UpdateZoneLEDs(int /*zone*/)
void RGBController_AMDWraithPrism::DeviceUpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AMDWraithPrism::UpdateSingleLED(int /*led*/)
void RGBController_AMDWraithPrism::DeviceUpdateSingleLED(int /*led*/)
{
DeviceUpdateLEDs();
}
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 25 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -22,11 +22,9 @@ public:
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 10 May 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <chrono>
@@ -17,10 +17,11 @@
using namespace std::chrono_literals;
AOCKeyboardController::AOCKeyboardController(hid_device* dev_handle, const char* path)
AOCKeyboardController::AOCKeyboardController(hid_device* dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
}
AOCKeyboardController::~AOCKeyboardController()
@@ -33,6 +34,11 @@ std::string AOCKeyboardController::GetDeviceLocation()
return("HID " + location);
}
std::string AOCKeyboardController::GetDeviceName()
{
return(name);
}
std::string AOCKeyboardController::GetSerialString()
{
wchar_t serial_string[128];
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 10 May 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -64,10 +64,11 @@ enum
class AOCKeyboardController
{
public:
AOCKeyboardController(hid_device* dev_handle, const char* path);
AOCKeyboardController(hid_device* dev_handle, const char* path, std::string dev_name);
~AOCKeyboardController();
std::string GetDeviceLocation();
std::string GetDeviceName();
std::string GetSerialString();
void SetLightingConfig
@@ -88,6 +89,7 @@ public:
private:
hid_device* dev;
std::string location;
std::string name;
void SendStartPacket();
void SendEndPacket();
@@ -6,40 +6,36 @@
| Adam Honse (CalcProgrammer1) 10 May 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "DetectionManager.h"
#include "AOCKeyboardController.h"
#include "RGBController_AOCKeyboard.h"
/*-----------------------------------------------------*\
| AOC Keyboard IDs |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| AOC Keyboard IDs |
\*---------------------------------------------------------*/
#define AOC_VID 0x3938
#define AOC_GK500_PID 0x1178
#define AOC_GK500_PID_2 0x1229
/******************************************************************************************\
* *
* DetectAOCKeyboardControllers *
* *
* Tests the USB address to see if an AOC Keyboard controller exists there. *
* *
\******************************************************************************************/
void DetectAOCKeyboardControllers(hid_device_info* info, const std::string& name)
DetectedControllers DetectAOCKeyboardControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
AOCKeyboardController* controller = new AOCKeyboardController(dev, info->path);
AOCKeyboardController* controller = new AOCKeyboardController(dev, info->path, name);
RGBController_AOCKeyboard* rgb_controller = new RGBController_AOCKeyboard(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
REGISTER_HID_DETECTOR_PU("AOC GK500", DetectAOCKeyboardControllers, AOC_VID, AOC_GK500_PID, 0xFF19, 0xFF19);
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 10 May 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "RGBController_AOCKeyboard.h"
@@ -52,7 +52,7 @@ RGBController_AOCKeyboard::RGBController_AOCKeyboard(AOCKeyboardController* cont
{
controller = controller_ptr;
name = "AOC Keyboard Device";
name = controller->GetDeviceName();
vendor = "AOC";
type = DEVICE_TYPE_KEYBOARD;
description = "AOC Keyboard Device";
@@ -262,30 +262,18 @@ RGBController_AOCKeyboard::~RGBController_AOCKeyboard()
void RGBController_AOCKeyboard::SetupZones()
{
KeyboardLayoutManager new_kb(KEYBOARD_LAYOUT_ANSI_QWERTY, KEYBOARD_SIZE_FULL, aoc_keyboard_offset_values);
/*---------------------------------------------------------*\
| Create the keyboard zone usiung Keyboard Layout Manager |
\*---------------------------------------------------------*/
zone new_zone;
new_zone.name = ZONE_EN_KEYBOARD;
new_zone.type = ZONE_TYPE_MATRIX;
KeyboardLayoutManager new_kb(KEYBOARD_LAYOUT_ANSI_QWERTY, KEYBOARD_SIZE_FULL, aoc_keyboard_offset_values);
matrix_map_type * new_map = new matrix_map_type;
new_zone.matrix_map = new_map;
new_zone.matrix_map->height = new_kb.GetRowCount();
new_zone.matrix_map->width = new_kb.GetColumnCount();
new_zone.matrix_map->map = new unsigned int[new_map->height * new_map->width];
new_zone.leds_count = new_kb.GetKeyCount();
new_zone.leds_min = new_zone.leds_count;
new_zone.leds_max = new_zone.leds_count;
/*---------------------------------------------------------*\
| Matrix map still uses declared zone rows and columns |
| as the packet structure depends on the matrix map |
\*---------------------------------------------------------*/
new_kb.GetKeyMap(new_map->map, KEYBOARD_MAP_FILL_TYPE_COUNT, new_map->height, new_map->width);
new_zone.name = ZONE_EN_KEYBOARD;
new_zone.type = ZONE_TYPE_MATRIX;
new_zone.leds_count = new_kb.GetKeyCount();
new_zone.leds_min = new_zone.leds_count;
new_zone.leds_max = new_zone.leds_count;
new_zone.matrix_map = new_kb.GetKeyMap(KEYBOARD_MAP_FILL_TYPE_COUNT);
/*---------------------------------------------------------*\
| Create LEDs for the Matrix zone |
@@ -305,13 +293,6 @@ void RGBController_AOCKeyboard::SetupZones()
SetupColors();
}
void RGBController_AOCKeyboard::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AOCKeyboard::DeviceUpdateLEDs()
{
if(modes[active_mode].value == AOC_KEYBOARD_MODE_CUSTOM)
@@ -331,12 +312,12 @@ void RGBController_AOCKeyboard::DeviceUpdateLEDs()
}
}
void RGBController_AOCKeyboard::UpdateZoneLEDs(int /*zone*/)
void RGBController_AOCKeyboard::DeviceUpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AOCKeyboard::UpdateSingleLED(int /*led*/)
void RGBController_AOCKeyboard::DeviceUpdateSingleLED(int /*led*/)
{
DeviceUpdateLEDs();
}
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 10 May 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -22,11 +22,9 @@ public:
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -6,17 +6,18 @@
| Adam Honse (CalcProgrammer1) 20 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <cstring>
#include "AOCMouseController.h"
#include "StringUtils.h"
AOCMouseController::AOCMouseController(hid_device* dev_handle, const char* path)
AOCMouseController::AOCMouseController(hid_device* dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
}
AOCMouseController::~AOCMouseController()
@@ -29,6 +30,11 @@ std::string AOCMouseController::GetDeviceLocation()
return("HID " + location);
}
std::string AOCMouseController::GetDeviceName()
{
return(name);
}
std::string AOCMouseController::GetSerialString()
{
wchar_t serial_string[128];
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 20 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -56,10 +56,11 @@ enum
class AOCMouseController
{
public:
AOCMouseController(hid_device* dev_handle, const char* path);
AOCMouseController(hid_device* dev_handle, const char* path, std::string dev_name);
~AOCMouseController();
std::string GetDeviceLocation();
std::string GetDeviceName();
std::string GetSerialString();
void SendDirect
@@ -79,4 +80,5 @@ public:
private:
hid_device* dev;
std::string location;
std::string name;
};
@@ -6,39 +6,35 @@
| Adam Honse (CalcProgrammer1) 20 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "DetectionManager.h"
#include "AOCMouseController.h"
#include "RGBController_AOCMouse.h"
/*-----------------------------------------------------*\
| AOC Mouse IDs |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| AOC Mouse IDs |
\*---------------------------------------------------------*/
#define AOC_VID 0x3938
#define AOC_GM500_PID 0x1179
/******************************************************************************************\
* *
* DetectAOCMouseControllers *
* *
* Tests the USB address to see if an AOC Mouse controller exists there. *
* *
\******************************************************************************************/
void DetectAOCMouseControllers(hid_device_info* info, const std::string& name)
DetectedControllers DetectAOCMouseControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
AOCMouseController* controller = new AOCMouseController(dev, info->path);
AOCMouseController* controller = new AOCMouseController(dev, info->path, name);
RGBController_AOCMouse* rgb_controller = new RGBController_AOCMouse(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
REGISTER_HID_DETECTOR_IPU("AOC GM500", DetectAOCMouseControllers, AOC_VID, AOC_GM500_PID, 1, 0xFF19, 0xFF19);
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 20 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "RGBController_AOCMouse.h"
@@ -26,7 +26,7 @@ RGBController_AOCMouse::RGBController_AOCMouse(AOCMouseController* controller_pt
{
controller = controller_ptr;
name = "AOC Mouse Device";
name = controller->GetDeviceName();
vendor = "AOC";
type = DEVICE_TYPE_MOUSE;
description = "AOC Mouse Device";
@@ -134,7 +134,6 @@ void RGBController_AOCMouse::SetupZones()
logo_zone.leds_min = 1;
logo_zone.leds_max = 1;
logo_zone.leds_count = 1;
logo_zone.matrix_map = NULL;
zones.push_back(logo_zone);
led logo_led;
@@ -147,7 +146,6 @@ void RGBController_AOCMouse::SetupZones()
scroll_wheel_zone.leds_min = 1;
scroll_wheel_zone.leds_max = 1;
scroll_wheel_zone.leds_count = 1;
scroll_wheel_zone.matrix_map = NULL;
zones.push_back(scroll_wheel_zone);
led scroll_wheel_led;
@@ -157,24 +155,17 @@ void RGBController_AOCMouse::SetupZones()
SetupColors();
}
void RGBController_AOCMouse::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AOCMouse::DeviceUpdateLEDs()
{
DeviceUpdateMode();
}
void RGBController_AOCMouse::UpdateZoneLEDs(int /*zone*/)
void RGBController_AOCMouse::DeviceUpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AOCMouse::UpdateSingleLED(int /*led*/)
void RGBController_AOCMouse::DeviceUpdateSingleLED(int /*led*/)
{
DeviceUpdateLEDs();
}
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 20 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -22,11 +22,9 @@ public:
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -6,17 +6,18 @@
| Adam Honse (CalcProgrammer1) 15 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <cstring>
#include "AOCMousematController.h"
#include "StringUtils.h"
AOCMousematController::AOCMousematController(hid_device* dev_handle, const char* path)
AOCMousematController::AOCMousematController(hid_device* dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
}
AOCMousematController::~AOCMousematController()
@@ -29,6 +30,11 @@ std::string AOCMousematController::GetDeviceLocation()
return("HID " + location);
}
std::string AOCMousematController::GetDeviceName()
{
return(name);
}
std::string AOCMousematController::GetSerialString()
{
wchar_t serial_string[128];
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 15 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -55,10 +55,11 @@ enum
class AOCMousematController
{
public:
AOCMousematController(hid_device* dev_handle, const char* path);
AOCMousematController(hid_device* dev_handle, const char* path, std::string dev_name);
~AOCMousematController();
std::string GetDeviceLocation();
std::string GetDeviceName();
std::string GetSerialString();
void SendDirect
@@ -78,4 +79,5 @@ public:
private:
hid_device* dev;
std::string location;
std::string name;
};
@@ -6,39 +6,35 @@
| Adam Honse (CalcProgrammer1) 15 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "DetectionManager.h"
#include "AOCMousematController.h"
#include "RGBController_AOCMousemat.h"
/*-----------------------------------------------------*\
| AOC Mousemat IDs |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| AOC Mousemat IDs |
\*---------------------------------------------------------*/
#define AOC_VID 0x3938
#define AOC_AMM700_PID 0x1162
/******************************************************************************************\
* *
* DetectAOCMousematControllers *
* *
* Tests the USB address to see if an AOC Mousemat controller exists there. *
* *
\******************************************************************************************/
void DetectAOCMousematControllers(hid_device_info* info, const std::string& name)
DetectedControllers DetectAOCMousematControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
AOCMousematController* controller = new AOCMousematController(dev, info->path);
AOCMousematController* controller = new AOCMousematController(dev, info->path, name);
RGBController_AOCMousemat* rgb_controller = new RGBController_AOCMousemat(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
REGISTER_HID_DETECTOR_IPU("AOC AGON AMM700", DetectAOCMousematControllers, AOC_VID, AOC_AMM700_PID, 1, 0xFF19, 0xFF19);
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 15 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "RGBController_AOCMousemat.h"
@@ -26,7 +26,7 @@ RGBController_AOCMousemat::RGBController_AOCMousemat(AOCMousematController* cont
{
controller = controller_ptr;
name = "AOC Mousemat Device";
name = controller->GetDeviceName();
vendor = "AOC";
type = DEVICE_TYPE_MOUSEMAT;
description = "AOC Mousemat Device";
@@ -124,7 +124,6 @@ void RGBController_AOCMousemat::SetupZones()
mousemat_zone.leds_min = 1;
mousemat_zone.leds_max = 1;
mousemat_zone.leds_count = 1;
mousemat_zone.matrix_map = NULL;
zones.push_back(mousemat_zone);
led mousemat_led;
@@ -134,24 +133,17 @@ void RGBController_AOCMousemat::SetupZones()
SetupColors();
}
void RGBController_AOCMousemat::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AOCMousemat::DeviceUpdateLEDs()
{
DeviceUpdateMode();
}
void RGBController_AOCMousemat::UpdateZoneLEDs(int /*zone*/)
void RGBController_AOCMousemat::DeviceUpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AOCMousemat::UpdateSingleLED(int /*led*/)
void RGBController_AOCMousemat::DeviceUpdateSingleLED(int /*led*/)
{
DeviceUpdateLEDs();
}
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 15 Apr 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -22,11 +22,9 @@ public:
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -7,16 +7,16 @@
| Shady Nawara (ShadyNawara) 16 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <cstring>
#include "RGBController.h"
#include "ResourceManager.h"
#include "SettingsManager.h"
#include "StringUtils.h"
#include "ASRockPolychromeUSBController.h"
#include "dmiinfo.h"
#include "ResourceManager.h"
#include "RGBController.h"
#include "SettingsManager.h"
#include "StringUtils.h"
#define POLYCHROME_USB_READ_ZONE_CONFIG 0x11
#define POLYCHROME_USB_READ_HEADER 0x14
@@ -191,7 +191,7 @@ void PolychromeUSBController::SetDeviceInfo()
WriteRGSwap(rgswap_final[0], rgswap_final[1], rgswap_final[2], rgswap_final[3], rgswap_final[4], rgswap_final[5], rgswap_final[6], rgswap_final[7]);
}
void PolychromeUSBController::ResizeZone(int zone, int new_size)
void PolychromeUSBController::DeviceResizeZone(int zone, int new_size)
{
unsigned char zonecfg[POLYCHROME_USB_ZONE_MAX_NUM];
@@ -324,6 +324,7 @@ void PolychromeUSBController::WriteAllZones
| Send packet |
\*-----------------------------------------------------*/
hid_write(dev, usb_buf, 65);
hid_read(dev, usb_buf, 64);
/*-----------------------------------------------------*\
| Zero out buffer |
@@ -7,7 +7,7 @@
| Shady Nawara (ShadyNawara) 16 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -135,7 +135,7 @@ public:
unsigned int configsize
);
void ResizeZone(int zone, int new_size);
void DeviceResizeZone(int zone, int new_size);
void SetRGSwap(bool reset);
protected:
@@ -7,12 +7,12 @@
| Shady Nawara (ShadyNawara) 16 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <hidapi.h>
#include "Detector.h"
#include "ASRockPolychromeUSBController.h"
#include "DetectionManager.h"
#include "RGBController_ASRockPolychromeUSB.h"
/*---------------------------------------------------------*\
@@ -26,16 +26,22 @@
#define ASROCK_MOTHERBOARD_1_PID 0x01A2
#define ASROCK_DESKMINI_ADDRESSABLE_LED_STRIP_PID 0x01A6
void DetectPolychromeUSBControllers(hid_device_info* info, const std::string& /*name*/)
DetectedControllers DetectPolychromeUSBControllers(hid_device_info* info, const std::string& /*name*/)
{
hid_device* dev = hid_open_path(info->path);
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
PolychromeUSBController* controller = new PolychromeUSBController(dev, info->path);
RGBController_PolychromeUSB* rgb_controller = new RGBController_PolychromeUSB(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
REGISTER_HID_DETECTOR("ASRock Polychrome USB", DetectPolychromeUSBControllers, ASROCK_VID, ASROCK_MOTHERBOARD_1_PID);
@@ -7,7 +7,7 @@
| Shady Nawara (ShadyNawara) 16 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <string.h>
@@ -229,8 +229,6 @@ void RGBController_PolychromeUSB::SetupZones()
leds.push_back(new_led);
}
zones[channel_idx].matrix_map = NULL;
}
SetupColors();
@@ -273,10 +271,10 @@ void RGBController_PolychromeUSB::SetupZones()
}
}
void RGBController_PolychromeUSB::ResizeZone(int zone, int new_size)
void RGBController_PolychromeUSB::DeviceResizeZone(int zone, int new_size)
{
zones[zone].leds_count = (unsigned char) new_size;
controller->ResizeZone(zones_info[zone].zone, new_size);
controller->DeviceResizeZone(zones_info[zone].zone, new_size);
}
void RGBController_PolychromeUSB::DeviceUpdateLEDs()
@@ -299,7 +297,7 @@ void RGBController_PolychromeUSB::DeviceUpdateLEDs()
}
}
void RGBController_PolychromeUSB::UpdateZoneLEDs(int zone)
void RGBController_PolychromeUSB::DeviceUpdateZoneLEDs(int zone)
{
unsigned char set_mode=zones_info[zone].mode;
@@ -311,7 +309,7 @@ void RGBController_PolychromeUSB::UpdateZoneLEDs(int zone)
controller->WriteZone(zone, set_mode, zones_info[zone].speed, zones[zone].colors[0], false);
}
void RGBController_PolychromeUSB::UpdateSingleLED(int led)
void RGBController_PolychromeUSB::DeviceUpdateSingleLED(int led)
{
unsigned int channel = leds[led].value;
unsigned char set_mode = zones_info[channel].mode;
@@ -7,7 +7,7 @@
| Shady Nawara (ShadyNawara) 16 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -22,11 +22,11 @@ public:
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 14 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "ASRockASRRGBSMBusController.h"
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 13 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 15 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "RGBController_ASRockASRRGBSMBus.h"
@@ -135,7 +135,6 @@ void RGBController_ASRockASRRGBSMBus::SetupZones()
new_zone->leds_min = 1;
new_zone->leds_max = 1;
new_zone->leds_count = 1;
new_zone->matrix_map = NULL;
/*---------------------------------------------------------*\
| Push new zone to zones vector |
@@ -160,7 +159,7 @@ void RGBController_ASRockASRRGBSMBus::SetupZones()
SetupColors();
}
void RGBController_ASRockASRRGBSMBus::ResizeZone(int /*zone*/, int /*new_size*/)
void RGBController_ASRockASRRGBSMBus::DeviceResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
@@ -171,16 +170,16 @@ void RGBController_ASRockASRRGBSMBus::DeviceUpdateLEDs()
{
for(unsigned int led = 0; led < colors.size(); led++)
{
UpdateSingleLED(led);
DeviceUpdateSingleLED(led);
}
}
void RGBController_ASRockASRRGBSMBus::UpdateZoneLEDs(int /*zone*/)
void RGBController_ASRockASRRGBSMBus::DeviceUpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_ASRockASRRGBSMBus::UpdateSingleLED(int led)
void RGBController_ASRockASRRGBSMBus::DeviceUpdateSingleLED(int led)
{
unsigned char red = RGBGetRValue(colors[led]);
unsigned char grn = RGBGetGValue(colors[led]);
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 15 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -22,11 +22,11 @@ public:
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 14 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <cstring>
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 13 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -7,7 +7,7 @@
| Adam Honse (CalcProgrammer1) 15 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "LogManager.h"
@@ -267,7 +267,6 @@ void RGBController_ASRockPolychromeV1SMBus::SetupZones()
new_zone->leds_min = 1;
new_zone->leds_max = 1;
new_zone->leds_count = 1;
new_zone->matrix_map = NULL;
if(zone_idx == POLYCHROME_V1_ZONE_ADDRESSABLE)
{
@@ -297,9 +296,9 @@ void RGBController_ASRockPolychromeV1SMBus::SetupZones()
SetupColors();
}
void RGBController_ASRockPolychromeV1SMBus::ResizeZone(int zone, int new_size)
void RGBController_ASRockPolychromeV1SMBus::DeviceResizeZone(int zone, int new_size)
{
LOG_TRACE("[%s] ResizeZone(%02X, %02X)", name.c_str(), zone, new_size);
LOG_TRACE("[%s] DeviceResizeZone(%02X, %02X)", name.c_str(), zone, new_size);
controller-> SetARGBSize(new_size & 0xFF);
zones[POLYCHROME_V1_ZONE_ADDRESSABLE].leds_count = 1;
}
@@ -309,19 +308,19 @@ void RGBController_ASRockPolychromeV1SMBus::DeviceUpdateLEDs()
LOG_TRACE("[%s] DeviceUpdateLEDs()", name.c_str());
for (uint8_t zone_idx = 0; zone_idx < zoneIndexMap.size(); zone_idx++)
{
UpdateSingleLED(zone_idx);
DeviceUpdateSingleLED(zone_idx);
}
}
void RGBController_ASRockPolychromeV1SMBus::UpdateZoneLEDs(int /*zone*/)
void RGBController_ASRockPolychromeV1SMBus::DeviceUpdateZoneLEDs(int /*zone*/)
{
LOG_TRACE("[%s] UpdateZoneLEDs()", name.c_str());
LOG_TRACE("[%s] DeviceUpdateZoneLEDs()", name.c_str());
DeviceUpdateLEDs();
}
void RGBController_ASRockPolychromeV1SMBus::UpdateSingleLED(int zone)
void RGBController_ASRockPolychromeV1SMBus::DeviceUpdateSingleLED(int zone)
{
LOG_TRACE("[%s] UpdateSingleLED(%02X)", name.c_str(), zone);
LOG_TRACE("[%s] DeviceUpdateSingleLED(%02X)", name.c_str(), zone);
uint8_t red = RGBGetRValue(colors[zone]);
uint8_t grn = RGBGetGValue(colors[zone]);
@@ -338,7 +337,7 @@ void RGBController_ASRockPolychromeV1SMBus::DeviceUpdateMode()
for(uint8_t zone_idx = 0; zone_idx < zoneIndexMap.size(); zone_idx++)
{
controller->SetMode(zoneIndexMap[zone_idx], modes[active_mode].value, modes[active_mode].speed);
UpdateSingleLED(zone_idx);
DeviceUpdateSingleLED(zone_idx);
}
}
else
@@ -7,7 +7,7 @@
| Adam Honse (CalcProgrammer1) 15 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -23,11 +23,11 @@ public:
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 14 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <cstring>
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 13 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -7,7 +7,7 @@
| Adam Honse (CalcProgrammer1) 15 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "RGBController_ASRockPolychromeV2SMBus.h"
@@ -229,8 +229,6 @@ void RGBController_ASRockPolychromeV2SMBus::SetupZones()
new_zone->type = ZONE_TYPE_SINGLE;
}
new_zone->matrix_map = NULL;
/*---------------------------------------------------------*\
| Push new zone to zones vector |
\*---------------------------------------------------------*/
@@ -281,7 +279,7 @@ void RGBController_ASRockPolychromeV2SMBus::SetupZones()
SetupColors();
}
void RGBController_ASRockPolychromeV2SMBus::ResizeZone(int /*zone*/, int /*new_size*/)
void RGBController_ASRockPolychromeV2SMBus::DeviceResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
@@ -292,16 +290,16 @@ void RGBController_ASRockPolychromeV2SMBus::DeviceUpdateLEDs()
{
for(unsigned int led = 0; led < colors.size(); led++)
{
UpdateSingleLED(led);
DeviceUpdateSingleLED(led);
}
}
void RGBController_ASRockPolychromeV2SMBus::UpdateZoneLEDs(int /*zone*/)
void RGBController_ASRockPolychromeV2SMBus::DeviceUpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_ASRockPolychromeV2SMBus::UpdateSingleLED(int led)
void RGBController_ASRockPolychromeV2SMBus::DeviceUpdateSingleLED(int led)
{
unsigned char red = RGBGetRValue(colors[led]);
unsigned char grn = RGBGetGValue(colors[led]);
@@ -7,7 +7,7 @@
| Adam Honse (CalcProgrammer1) 15 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -23,11 +23,11 @@ public:
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -7,11 +7,11 @@
| Adam Honse (CalcProgrammer1) 14 Dec 2019 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <vector>
#include "Detector.h"
#include "DetectionManager.h"
#include "ASRockASRRGBSMBusController.h"
#include "ASRockPolychromeV1SMBusController.h"
#include "ASRockPolychromeV2SMBusController.h"
@@ -22,15 +22,6 @@
#include "i2c_smbus.h"
#include "pci_ids.h"
/*******************************************************************************************\
* *
* TestForPolychromeSMBusController *
* *
* Tests the given address to see if an ASRock RGB controller exists there. *
* First does a quick write to test for a response *
* *
\*******************************************************************************************/
#define ASROCK_DETECTOR_NAME "ASRock SMBus Detectector"
#define VENDOR_NAME "ASRock"
#define SMBUS_ADDRESS 0x6A
@@ -67,7 +58,7 @@ bool TestForPolychromeSMBusController(i2c_smbus_interface* bus, uint8_t address)
return(pass);
} /* TestForPolychromeController() */
}
uint16_t GetFirmwareVersion(i2c_smbus_interface* bus, uint8_t address)
{
@@ -94,20 +85,10 @@ uint16_t GetFirmwareVersion(i2c_smbus_interface* bus, uint8_t address)
}
}
/******************************************************************************************\
* *
* DetectPolychromeControllers *
* *
* Detect ASRock Polychrome RGB SMBus controllers on the enumerated I2C busses at *
* address 0x6A. *
* *
* bus - pointer to i2c_smbus_interface where Polychrome device is connected *
* dev - I2C address of Polychrome device *
* *
\******************************************************************************************/
void DetectASRockSMBusControllers(std::vector<i2c_smbus_interface*>& busses)
DetectedControllers DetectASRockSMBusControllers(std::vector<i2c_smbus_interface*>& busses)
{
DetectedControllers detected_controllers;
for(unsigned int bus = 0; bus < busses.size(); bus++)
{
IF_MOBO_SMBUS(busses[bus]->pci_vendor, busses[bus]->pci_device)
@@ -123,7 +104,7 @@ void DetectASRockSMBusControllers(std::vector<i2c_smbus_interface*>& busses)
u16_to_u8 version;
version.u16 = GetFirmwareVersion(busses[bus], SMBUS_ADDRESS);
switch (version.msb)
switch(version.msb)
{
case ASROCK_TYPE_ASRLED:
{
@@ -131,7 +112,7 @@ void DetectASRockSMBusControllers(std::vector<i2c_smbus_interface*>& busses)
ASRockASRRGBSMBusController* controller = new ASRockASRRGBSMBusController(busses[bus], SMBUS_ADDRESS);
controller-> fw_version = version.u16;
RGBController_ASRockASRRGBSMBus* rgb_controller = new RGBController_ASRockASRRGBSMBus(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
break;
@@ -141,7 +122,7 @@ void DetectASRockSMBusControllers(std::vector<i2c_smbus_interface*>& busses)
ASRockPolychromeV1SMBusController* controller = new ASRockPolychromeV1SMBusController(busses[bus], SMBUS_ADDRESS);
controller-> fw_version = version.u16;
RGBController_ASRockPolychromeV1SMBus* rgb_controller = new RGBController_ASRockPolychromeV1SMBus(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
break;
@@ -151,7 +132,7 @@ void DetectASRockSMBusControllers(std::vector<i2c_smbus_interface*>& busses)
ASRockPolychromeV2SMBusController* controller = new ASRockPolychromeV2SMBusController(busses[bus], SMBUS_ADDRESS);
controller-> fw_version = version.u16;
RGBController_ASRockPolychromeV2SMBus* rgb_controller = new RGBController_ASRockPolychromeV2SMBus(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
break;
@@ -172,6 +153,7 @@ void DetectASRockSMBusControllers(std::vector<i2c_smbus_interface*>& busses)
}
}
} /* DetectSMBusPolychromeControllers() */
return(detected_controllers);
}
REGISTER_I2C_DETECTOR("ASRock Motherboard SMBus Controllers", DetectASRockSMBusControllers);
@@ -6,7 +6,7 @@
| Gabriel Marcano (gemarcano) 21 Apr 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <cstring>
@@ -6,7 +6,7 @@
| Gabriel Marcano (gemarcano) 19 Apr 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -4,11 +4,11 @@
| Detector for Dell Alienware RGB USB controller |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "AlienwareController.h"
#include "DetectionManager.h"
#include "RGBController_Alienware.h"
/*---------------------------------------------------------*\
@@ -22,17 +22,22 @@
#define ALIENWARE_G_SERIES_PID1 0x0550
#define ALIENWARE_G_SERIES_PID2 0x0551
void DetectAlienwareControllers(hid_device_info* info, const std::string& name)
DetectedControllers DetectAlienwareControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
AlienwareController* controller = new AlienwareController(dev, *info, name);
RGBController_Alienware* rgb_controller = new RGBController_Alienware(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
REGISTER_HID_DETECTOR("Dell G Series LED Controller", DetectAlienwareControllers, ALIENWARE_VID, ALIENWARE_G_SERIES_PID1);
@@ -6,7 +6,7 @@
| Gabriel Marcano (gemarcano) 19 Apr 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <thread>
@@ -141,7 +141,6 @@ void RGBController_Alienware::SetupZones()
new_zone.leds_min = 1;
new_zone.leds_max = 1;
new_zone.leds_count = 1;
new_zone.matrix_map = nullptr;
zones.emplace_back(new_zone);
}
@@ -158,26 +157,19 @@ void RGBController_Alienware::SetupZones()
SetupColors();
}
void RGBController_Alienware::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_Alienware::DeviceUpdateLEDs()
{
DeviceUpdateMode();
}
void RGBController_Alienware::UpdateZoneLEDs(int /*zone*/)
void RGBController_Alienware::DeviceUpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_Alienware::UpdateSingleLED(int led)
void RGBController_Alienware::DeviceUpdateSingleLED(int led)
{
UpdateZoneLEDs(led);
DeviceUpdateZoneLEDs(led);
}
static bool modes_eq(const mode& mode1, const mode& mode2)
@@ -6,7 +6,7 @@
| Gabriel Marcano (gemarcano) 19 Apr 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -22,11 +22,9 @@ public:
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -7,17 +7,18 @@
| Dominik Mikolajczyk (dmiko) 23 Oct 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <cstring>
#include "AlienwareAW410KController.h"
#include "StringUtils.h"
AlienwareAW410KController::AlienwareAW410KController(hid_device* dev_handle, const char* path)
AlienwareAW410KController::AlienwareAW410KController(hid_device* dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
SendCommit();
}
@@ -32,6 +33,11 @@ std::string AlienwareAW410KController::GetDeviceLocation()
return("HID: " + location);
}
std::string AlienwareAW410KController::GetDeviceName()
{
return(name);
}
std::string AlienwareAW410KController::GetSerialString()
{
wchar_t serial_string[128];
@@ -313,7 +319,7 @@ void AlienwareAW410KController::SetMode
SendCommit();
}
void AlienwareAW410KController::UpdateSingleLED
void AlienwareAW410KController::DeviceUpdateSingleLED
(
unsigned char led,
unsigned char red,
@@ -7,7 +7,7 @@
| Dominik Mikolajczyk (dmiko) 23 Oct 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -75,10 +75,11 @@ struct SelectedButtons
class AlienwareAW410KController
{
public:
AlienwareAW410KController(hid_device* dev_handle, const char* path);
AlienwareAW410KController(hid_device* dev_handle, const char* path, std::string dev_name);
~AlienwareAW410KController();
std::string GetDeviceLocation();
std::string GetDeviceName();
std::string GetSerialString();
void SendInitialize();
@@ -129,7 +130,7 @@ public:
unsigned char blue2
);
void UpdateSingleLED
void DeviceUpdateSingleLED
(
unsigned char led,
unsigned char red,
@@ -140,6 +141,7 @@ public:
private:
hid_device* dev;
std::string location;
std::string name;
void SendMode
(
@@ -7,7 +7,7 @@
| Dominik Mikolajczyk (dmiko) 23 Oct 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <iterator>
@@ -176,7 +176,7 @@ RGBController_AlienwareAW410K::RGBController_AlienwareAW410K(AlienwareAW410KCont
{
controller = controller_ptr;
name = "Alienware AW410K Keyboard Device";
name = controller->GetDeviceName();
vendor = "Alienware";
type = DEVICE_TYPE_KEYBOARD;
description = "Alienware AW410K Keyboard Device";
@@ -278,17 +278,6 @@ RGBController_AlienwareAW410K::RGBController_AlienwareAW410K(AlienwareAW410KCont
RGBController_AlienwareAW410K::~RGBController_AlienwareAW410K()
{
/*---------------------------------------------------------*\
| Delete the matrix map |
\*---------------------------------------------------------*/
for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++)
{
if(zones[zone_index].matrix_map != NULL)
{
delete zones[zone_index].matrix_map;
}
}
delete controller;
}
@@ -310,14 +299,7 @@ void RGBController_AlienwareAW410K::SetupZones()
if(zone_types[zone_idx] == ZONE_TYPE_MATRIX)
{
new_zone.matrix_map = new matrix_map_type;
new_zone.matrix_map->height = 6;
new_zone.matrix_map->width = 24;
new_zone.matrix_map->map = (unsigned int *)&matrix_map;
}
else
{
new_zone.matrix_map = NULL;
new_zone.matrix_map.Set(6, 24, (unsigned int *)&matrix_map);
}
zones.push_back(new_zone);
@@ -336,13 +318,6 @@ void RGBController_AlienwareAW410K::SetupZones()
SetupColors();
}
void RGBController_AlienwareAW410K::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AlienwareAW410K::DeviceUpdateLEDs()
{
std::vector<SelectedButtons> frame_buf_keys;
@@ -374,21 +349,21 @@ void RGBController_AlienwareAW410K::DeviceUpdateLEDs()
std::copy(new_colors.begin(), new_colors.end(),current_colors.begin());
}
void RGBController_AlienwareAW410K::UpdateZoneLEDs(int zone)
void RGBController_AlienwareAW410K::DeviceUpdateZoneLEDs(int zone)
{
controller->SetDirect((unsigned char) zone, RGBGetRValue(zones[zone].colors[0]), RGBGetGValue(zones[zone].colors[0]), RGBGetBValue(zones[zone].colors[0]));
}
void RGBController_AlienwareAW410K::UpdateSingleLED(int led)
void RGBController_AlienwareAW410K::DeviceUpdateSingleLED(int led)
{
controller->UpdateSingleLED(leds[led].value, RGBGetRValue(colors[led]), RGBGetGValue(colors[led]), RGBGetBValue(colors[led]));
controller->DeviceUpdateSingleLED(leds[led].value, RGBGetRValue(colors[led]), RGBGetGValue(colors[led]), RGBGetBValue(colors[led]));
}
void RGBController_AlienwareAW410K::DeviceUpdateMode()
{
if(active_mode == 0xFFFF)
{
UpdateLEDs();
UpdateLEDsInternal();
return;
}
@@ -7,7 +7,7 @@
| Dominik Mikolajczyk (dmiko) 23 Oct 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -23,11 +23,9 @@ public:
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -6,17 +6,18 @@
| Mohamad Sallal (msallal) 22 May 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <cstring>
#include "AlienwareAW510KController.h"
#include "StringUtils.h"
AlienwareAW510KController::AlienwareAW510KController(hid_device* dev_handle, const char* path)
AlienwareAW510KController::AlienwareAW510KController(hid_device* dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
SendCommit();
}
@@ -31,6 +32,11 @@ std::string AlienwareAW510KController::GetDeviceLocation()
return("HID: " + location);
}
std::string AlienwareAW510KController::GetDeviceName()
{
return(name);
}
std::string AlienwareAW510KController::GetSerialString()
{
wchar_t serial_string[128];
@@ -312,7 +318,7 @@ void AlienwareAW510KController::SetMode
SendCommit();
}
void AlienwareAW510KController::UpdateSingleLED
void AlienwareAW510KController::DeviceUpdateSingleLED
(
unsigned char led,
unsigned char red,
@@ -6,7 +6,7 @@
| Mohamad Sallal (msallal) 22 May 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -77,10 +77,11 @@ struct SelectedKeys
class AlienwareAW510KController
{
public:
AlienwareAW510KController(hid_device* dev_handle, const char* path);
AlienwareAW510KController(hid_device* dev_handle, const char* path, std::string dev_name);
~AlienwareAW510KController();
std::string GetDeviceLocation();
std::string GetDeviceName();
std::string GetSerialString();
void SendInitialize();
@@ -131,7 +132,7 @@ public:
unsigned char blue2
);
void UpdateSingleLED
void DeviceUpdateSingleLED
(
unsigned char led,
unsigned char red,
@@ -142,6 +143,7 @@ public:
private:
hid_device* dev;
std::string location;
std::string name;
void SendMode
(
@@ -6,7 +6,7 @@
| Mohamad Sallal (msallal) 22 May 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <iterator>
@@ -175,7 +175,7 @@ RGBController_AlienwareAW510K::RGBController_AlienwareAW510K(AlienwareAW510KCont
{
controller = controller_ptr;
name = "Alienware AW510K Keyboard Device";
name = controller->GetDeviceName();
vendor = "Alienware";
type = DEVICE_TYPE_KEYBOARD;
description = "Alienware AW510K Keyboard Device";
@@ -277,17 +277,6 @@ RGBController_AlienwareAW510K::RGBController_AlienwareAW510K(AlienwareAW510KCont
RGBController_AlienwareAW510K::~RGBController_AlienwareAW510K()
{
/*---------------------------------------------------------*\
| Delete the matrix map |
\*---------------------------------------------------------*/
for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++)
{
if(zones[zone_index].matrix_map != NULL)
{
delete zones[zone_index].matrix_map;
}
}
delete controller;
}
@@ -309,14 +298,7 @@ void RGBController_AlienwareAW510K::SetupZones()
if(zone_types[zone_idx] == ZONE_TYPE_MATRIX)
{
new_zone.matrix_map = new matrix_map_type;
new_zone.matrix_map->height = 7;
new_zone.matrix_map->width = 24;
new_zone.matrix_map->map = (unsigned int *)&matrix_map;
}
else
{
new_zone.matrix_map = NULL;
new_zone.matrix_map.Set(7, 24, (unsigned int *)&matrix_map);
}
zones.push_back(new_zone);
@@ -335,13 +317,6 @@ void RGBController_AlienwareAW510K::SetupZones()
SetupColors();
}
void RGBController_AlienwareAW510K::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AlienwareAW510K::DeviceUpdateLEDs()
{
std::vector<SelectedKeys> frame_buf_keys;
@@ -395,21 +370,21 @@ void RGBController_AlienwareAW510K::DeviceUpdateLEDs()
std::copy(new_colors.begin(), new_colors.end(),current_colors.begin());
}
void RGBController_AlienwareAW510K::UpdateZoneLEDs(int zone)
void RGBController_AlienwareAW510K::DeviceUpdateZoneLEDs(int zone)
{
controller->SetDirect((unsigned char) zone, RGBGetRValue(zones[zone].colors[0]), RGBGetGValue(zones[zone].colors[0]), RGBGetBValue(zones[zone].colors[0]));
}
void RGBController_AlienwareAW510K::UpdateSingleLED(int led)
void RGBController_AlienwareAW510K::DeviceUpdateSingleLED(int led)
{
controller->UpdateSingleLED(leds[led].value, RGBGetRValue(colors[led]), RGBGetGValue(colors[led]), RGBGetBValue(colors[led]));
controller->DeviceUpdateSingleLED(leds[led].value, RGBGetRValue(colors[led]), RGBGetGValue(colors[led]), RGBGetBValue(colors[led]));
}
void RGBController_AlienwareAW510K::DeviceUpdateMode()
{
if(active_mode == 0xFFFF)
{
UpdateLEDs();
UpdateLEDsInternal();
return;
}
@@ -6,7 +6,7 @@
| Mohamad Sallal (msallal) 22 May 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -22,11 +22,9 @@ public:
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -4,59 +4,62 @@
| Detector for Alienware Keyboard |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <hidapi.h>
#include "Detector.h"
#include "AlienwareAW510KController.h"
#include "DetectionManager.h"
#include "AlienwareAW410KController.h"
#include "RGBController_AlienwareAW510K.h"
#include "AlienwareAW510KController.h"
#include "RGBController_AlienwareAW410K.h"
#include "RGBController_AlienwareAW510K.h"
/*-----------------------------------------------------*\
| Alienware vendor ID |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Alienware vendor ID |
\*---------------------------------------------------------*/
#define ALIENWARE_VID 0x04F2
/*-----------------------------------------------------*\
| Keyboard product IDs |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Keyboard product IDs |
\*---------------------------------------------------------*/
#define ALIENWARE_AW510K_PID 0x1830
#define ALIENWARE_AW410K_PID 0x1968
/******************************************************************************************\
* *
* DetectAlienwareKeyboardControllers *
* *
* Tests the USB address to see if a Alienware RGB Keyboard controller exists there. *
* *
\******************************************************************************************/
void DetectAlienwareAW510KControllers(hid_device_info* info, const std::string& name)
DetectedControllers DetectAlienwareAW510KControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if( dev )
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
AlienwareAW510KController* controller = new AlienwareAW510KController(dev, info->path);
AlienwareAW510KController* controller = new AlienwareAW510KController(dev, info->path, name);
RGBController_AlienwareAW510K* rgb_controller = new RGBController_AlienwareAW510K(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
void DetectAlienwareAW410KControllers(hid_device_info* info, const std::string& name)
DetectedControllers DetectAlienwareAW410KControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if( dev )
{
AlienwareAW410KController* controller = new AlienwareAW410KController(dev, info->path);
RGBController_AlienwareAW410K* rgb_controller = new RGBController_AlienwareAW410K(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}/* DetectAlienwareKeyboardControllers() */
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
AlienwareAW410KController* controller = new AlienwareAW410KController(dev, info->path, name);
RGBController_AlienwareAW410K* rgb_controller = new RGBController_AlienwareAW410K(controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
REGISTER_HID_DETECTOR_IPU("Alienware AW510K", DetectAlienwareAW510KControllers, ALIENWARE_VID, ALIENWARE_AW510K_PID, 0x02, 0xFF00, 0x01);
REGISTER_HID_DETECTOR_IPU("Alienware AW410K", DetectAlienwareAW410KControllers, ALIENWARE_VID, ALIENWARE_AW410K_PID, 0x02, 0xFF00, 0x01);
@@ -6,7 +6,7 @@
| Ferréol DUBOIS COLI (Fefe_du_973) 23 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <bitset>
@@ -127,7 +127,7 @@ std::vector<unsigned char> AlienwareAW3423DWFController::GenerateKey(
if(response.size() > 14)
{
unsigned char idx = response[14] & 0x07;
if((idx + 8) < response.size())
if((idx + 8) < (unsigned char)response.size())
{
out_buffer[idx] ^= response[idx + 8];
}
@@ -6,7 +6,7 @@
| Ferréol DUBOIS COLI (Fefe_du_973) 23 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -28,8 +28,6 @@ public:
private:
hid_device* dev;
std::string location;
unsigned char endpoint_out = 0x02;
unsigned char endpoint_in = 0x81;
static const std::vector<std::vector<unsigned char>> OEM_KEYS;
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 08 May 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <chrono>
@@ -15,10 +15,11 @@
#include "AlienwareMonitorController.h"
AlienwareMonitorController::AlienwareMonitorController(hid_device *dev_handle, const char *path)
AlienwareMonitorController::AlienwareMonitorController(hid_device *dev_handle, const char *path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
Initialize();
}
@@ -33,6 +34,11 @@ std::string AlienwareMonitorController::GetLocation()
return("HID: " + location);
}
std::string AlienwareMonitorController::GetName()
{
return(name);
}
std::string AlienwareMonitorController::GetSerialString()
{
return("");
@@ -56,6 +62,7 @@ void AlienwareMonitorController::SendColor(unsigned char led_id, unsigned char r
memset(packet, 0xFF, sizeof(packet));
packet[0] = 0x00;
packet[1] = 0x92;
packet[2] = 0x37;
packet[3] = 0x0a;
@@ -87,6 +94,7 @@ void AlienwareMonitorController::Initialize()
memset(packet, 0xFF, sizeof(packet));
packet[0] = 0x00;
packet[1] = 0x95;
packet[2] = 0x00;
packet[3] = 0x00;
@@ -101,6 +109,7 @@ void AlienwareMonitorController::Initialize()
memset(packet, 0xFF, sizeof(packet));
packet[0] = 0x00;
packet[1] = 0x92;
packet[2] = 0x37;
packet[3] = 0x08;
@@ -123,6 +132,7 @@ void AlienwareMonitorController::Initialize()
memset(packet, 0x00, sizeof(packet));
packet[0] = 0x00;
packet[1] = 0x93;
packet[2] = 0x37;
packet[3] = 0x12;
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 08 May 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -18,16 +18,18 @@
class AlienwareMonitorController
{
public:
AlienwareMonitorController(hid_device* dev_handle, const char* path);
AlienwareMonitorController(hid_device* dev_handle, const char* path, std::string dev_name);
~AlienwareMonitorController();
std::string GetLocation();
std::string GetName();
std::string GetSerialString();
void SendColor(unsigned char led_id, unsigned char r, unsigned char g, unsigned char b);
private:
hid_device* dev;
std::string location;
std::string name;
void Initialize();
};
@@ -6,15 +6,15 @@
| Adam Honse (CalcProgrammer1) 08 May 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "Detector.h"
#include <hidapi.h>
#include "AlienwareAW3423DWFController.h"
#include "AlienwareMonitorController.h"
#include "DetectionManager.h"
#include "RGBController_AlienwareAW3423DWF.h"
#include "RGBController_AlienwareMonitor.h"
#include <hidapi.h>
/*---------------------------------------------------------*\
| Alienware Vendor ID |
@@ -29,37 +29,40 @@
#define ALIENWARE_USAGE_PAGE 0xFFDA
#define ALIENWARE_USAGE 0x00DA
/******************************************************************************************\
* *
* AlienwareAW3423DWFControllerDetect *
* *
* Tests the USB address to see if an Alienware AW3423DWF exists there. *
* *
\******************************************************************************************/
void DetectAlienwareAW3423DWFControllers(hid_device_info* info, const std::string&)
DetectedControllers DetectAlienwareAW3423DWFControllers(hid_device_info* info, const std::string&)
{
hid_device* dev = hid_open_path(info->path);
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
AlienwareAW3423DWFController* controller = new AlienwareAW3423DWFController(dev, info->path);
AlienwareAW3423DWFController* controller = new AlienwareAW3423DWFController(dev, info->path);
RGBController_AlienwareAW3423DWF* rgb_controller = new RGBController_AlienwareAW3423DWF(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
void DetectAlienwareMonitorControllers(hid_device_info* info, const std::string& name)
DetectedControllers DetectAlienwareMonitorControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
AlienwareMonitorController* controller = new AlienwareMonitorController(dev, info->path);
AlienwareMonitorController* controller = new AlienwareMonitorController(dev, info->path, name);
RGBController_AlienwareMonitor* rgb_controller = new RGBController_AlienwareMonitor(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
REGISTER_HID_DETECTOR("Alienware AW3423DWF", DetectAlienwareAW3423DWFControllers, ALIENWARE_VID, ALIENWARE_AW3423DWF_PID);
@@ -6,7 +6,7 @@
| Ferréol DUBOIS COLI (Fefe_du_973) 23 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "RGBController_AlienwareAW3423DWF.h"
@@ -57,7 +57,6 @@ void RGBController_AlienwareAW3423DWF::SetupZones()
Logo.leds_min = 1;
Logo.leds_max = 1;
Logo.leds_count = 1;
Logo.matrix_map = NULL;
zones.push_back(Logo);
led Logo_LED;
@@ -71,7 +70,6 @@ void RGBController_AlienwareAW3423DWF::SetupZones()
Number.leds_min = 1;
Number.leds_max = 1;
Number.leds_count = 1;
Number.matrix_map = NULL;
zones.push_back(Number);
led Number_LED;
@@ -85,7 +83,6 @@ void RGBController_AlienwareAW3423DWF::SetupZones()
PowerButton.leds_min = 1;
PowerButton.leds_max = 1;
PowerButton.leds_count = 1;
PowerButton.matrix_map = NULL;
zones.push_back(PowerButton);
led PowerButton_LED;
@@ -96,10 +93,6 @@ void RGBController_AlienwareAW3423DWF::SetupZones()
SetupColors();
}
void RGBController_AlienwareAW3423DWF::ResizeZone(int /*zone*/, int /*new_size*/)
{
}
void RGBController_AlienwareAW3423DWF::DeviceUpdateLEDs()
{
/*-----------------------------------------------------*\
@@ -118,17 +111,17 @@ void RGBController_AlienwareAW3423DWF::DeviceUpdateLEDs()
{
for(unsigned int led_idx = 0; led_idx < leds.size(); led_idx++)
{
UpdateSingleLED(led_idx);
DeviceUpdateSingleLED(led_idx);
}
}
}
void RGBController_AlienwareAW3423DWF::UpdateZoneLEDs(int /*zone*/)
void RGBController_AlienwareAW3423DWF::DeviceUpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AlienwareAW3423DWF::UpdateSingleLED(int led)
void RGBController_AlienwareAW3423DWF::DeviceUpdateSingleLED(int led)
{
unsigned char red = RGBGetRValue(colors[led]);
unsigned char grn = RGBGetGValue(colors[led]);
@@ -6,7 +6,7 @@
| Ferréol DUBOIS COLI (Fefe_du_973) 23 Jan 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -21,11 +21,10 @@ public:
~RGBController_AlienwareAW3423DWF();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 08 May 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "RGBController_AlienwareMonitor.h"
@@ -26,7 +26,7 @@ RGBController_AlienwareMonitor::RGBController_AlienwareMonitor(AlienwareMonitorC
{
controller = controller_ptr;
name = "Alienware Monitor";
name = controller->GetName();
description = "Alienware Monitor";
vendor = "Alienware";
type = DEVICE_TYPE_MONITOR;
@@ -57,7 +57,6 @@ void RGBController_AlienwareMonitor::SetupZones()
Logo.leds_min = 1;
Logo.leds_max = 1;
Logo.leds_count = 1;
Logo.matrix_map = NULL;
zones.push_back(Logo);
led Logo_LED;
@@ -71,7 +70,6 @@ void RGBController_AlienwareMonitor::SetupZones()
Number.leds_min = 1;
Number.leds_max = 1;
Number.leds_count = 1;
Number.matrix_map = NULL;
zones.push_back(Number);
led Number_LED;
@@ -85,7 +83,6 @@ void RGBController_AlienwareMonitor::SetupZones()
PowerButton.leds_min = 1;
PowerButton.leds_max = 1;
PowerButton.leds_count = 1;
PowerButton.matrix_map = NULL;
zones.push_back(PowerButton);
led PowerButton_LED;
@@ -96,11 +93,6 @@ void RGBController_AlienwareMonitor::SetupZones()
SetupColors();
}
void RGBController_AlienwareMonitor::ResizeZone(int /*zone*/, int /*new_size*/)
{
}
void RGBController_AlienwareMonitor::DeviceUpdateLEDs()
{
/*-----------------------------------------------------*\
@@ -119,17 +111,17 @@ void RGBController_AlienwareMonitor::DeviceUpdateLEDs()
{
for(unsigned int led_idx = 0; led_idx < leds.size(); led_idx++)
{
UpdateSingleLED(led_idx);
DeviceUpdateSingleLED(led_idx);
}
}
}
void RGBController_AlienwareMonitor::UpdateZoneLEDs(int /*zone*/)
void RGBController_AlienwareMonitor::DeviceUpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AlienwareMonitor::UpdateSingleLED(int led)
void RGBController_AlienwareMonitor::DeviceUpdateSingleLED(int led)
{
unsigned char red = RGBGetRValue(colors[led]);
unsigned char grn = RGBGetGValue(colors[led]);
@@ -6,7 +6,7 @@
| Adam Honse (CalcProgrammer1) 08 May 2025 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -21,11 +21,10 @@ RGBController_AlienwareMonitor(AlienwareMonitorController* controller_ptr);
~RGBController_AlienwareMonitor();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -6,7 +6,7 @@
| Sergey Gavrilov (DrZlo13) 06 Jun 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "AnnePro2Controller.h"
@@ -6,7 +6,7 @@
| Sergey Gavrilov (DrZlo13) 06 Jun 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -6,13 +6,13 @@
| Sergey Gavrilov (DrZlo13) 06 Jun 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "Detector.h"
#include "AnnePro2Controller.h"
#include "RGBController_AnnePro2.h"
#include <hidapi.h>
#include "AnnePro2Controller.h"
#include "DetectionManager.h"
#include "RGBController_AnnePro2.h"
/*---------------------------------------------------------*\
| Anne Pro 2 vendor IDs |
@@ -29,24 +29,22 @@
#define ANNE_PRO_2_PID_4 0xA293
#define ANNE_PRO_2_PID_5 0xA297
/******************************************************************************************\
* *
* DetectAnnePro2Controllers *
* *
* Tests the USB address to see if an Obins Lab AnnePro2 keyboard exists there. *
* *
\******************************************************************************************/
void DetectAnnePro2Controllers(hid_device_info* info, const std::string&)
DetectedControllers DetectAnnePro2Controllers(hid_device_info* info, const std::string&)
{
hid_device* dev = hid_open_path(info->path);
if( dev )
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
AnnePro2Controller* controller = new AnnePro2Controller(dev, info->path);
RGBController_AnnePro2* rgb_controller = new RGBController_AnnePro2(controller);
// Constructor sets the name
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
return(detected_controllers);
}
REGISTER_HID_DETECTOR_I("Anne Pro 2", DetectAnnePro2Controllers, ANNE_PRO_2_VID_1, ANNE_PRO_2_PID_1, 1);
@@ -6,7 +6,7 @@
| Sergey Gavrilov (DrZlo13) 06 Jun 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include "RGBControllerKeyNames.h"
@@ -164,14 +164,7 @@ void RGBController_AnnePro2::SetupZones()
if(zone_types[zone_idx] == ZONE_TYPE_MATRIX)
{
new_zone.matrix_map = new matrix_map_type;
new_zone.matrix_map->height = 5;
new_zone.matrix_map->width = 14;
new_zone.matrix_map->map = (unsigned int *)&matrix_map;
}
else
{
new_zone.matrix_map = NULL;
new_zone.matrix_map.Set(5, 14, (unsigned int *)&matrix_map);
}
zones.push_back(new_zone);
@@ -190,13 +183,6 @@ void RGBController_AnnePro2::SetupZones()
SetupColors();
}
void RGBController_AnnePro2::ResizeZone(int /*zone*/, int /*new_size*/)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_AnnePro2::DeviceUpdateLEDs()
{
const unsigned char frame_buf_length = LED_REAL_COUNT * 3;
@@ -228,12 +214,12 @@ void RGBController_AnnePro2::DeviceUpdateLEDs()
controller->SendDirect(frame_buf_length, frame_buf);
}
void RGBController_AnnePro2::UpdateZoneLEDs(int /*zone*/)
void RGBController_AnnePro2::DeviceUpdateZoneLEDs(int /*zone*/)
{
DeviceUpdateLEDs();
}
void RGBController_AnnePro2::UpdateSingleLED(int /*led*/)
void RGBController_AnnePro2::DeviceUpdateSingleLED(int /*led*/)
{
DeviceUpdateLEDs();
}
@@ -6,7 +6,7 @@
| Sergey Gavrilov (DrZlo13) 06 Jun 2021 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -21,11 +21,10 @@ public:
~RGBController_AnnePro2();
void SetupZones();
void ResizeZone(int zone, int new_size);
void DeviceUpdateLEDs();
void UpdateZoneLEDs(int zone);
void UpdateSingleLED(int led);
void DeviceUpdateZoneLEDs(int zone);
void DeviceUpdateSingleLED(int led);
void DeviceUpdateMode();
@@ -6,7 +6,7 @@
| Armin Wolf (Wer-Wolf) 09 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <cstring>
@@ -76,9 +76,9 @@ void ArcticController::SetChannels(std::vector<RGBColor> colors)
{
const unsigned int offset = ARCTIC_COMMAND_PAYLOAD_OFFSET + channel * 3;
buffer[offset + 0x00] = std::min<unsigned int>(254, RGBGetRValue(colors[channel]));
buffer[offset + 0x01] = std::min<unsigned int>(254, RGBGetGValue(colors[channel]));
buffer[offset + 0x02] = std::min<unsigned int>(254, RGBGetBValue(colors[channel]));
buffer[offset + 0x00] = (char)std::min<unsigned int>(254, RGBGetRValue(colors[channel]));
buffer[offset + 0x01] = (char)std::min<unsigned int>(254, RGBGetGValue(colors[channel]));
buffer[offset + 0x02] = (char)std::min<unsigned int>(254, RGBGetBValue(colors[channel]));
}
serialport.serial_write(buffer, sizeof(buffer));
@@ -6,7 +6,7 @@
| Armin Wolf (Wer-Wolf) 09 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#pragma once
@@ -6,21 +6,24 @@
| Armin Wolf (Wer-Wolf) 09 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <vector>
#include "Detector.h"
#include "ArcticController.h"
#include "RGBController_Arctic.h"
#include "DetectionManager.h"
#include "find_usb_serial_port.h"
#include "RGBController_Arctic.h"
#define CH341_VID 0x1A86
#define CH341_PID 0x7523
void DetectArcticControllers()
DetectedControllers DetectArcticControllers()
{
std::vector<std::string *> ports = find_usb_serial_port(CH341_VID, CH341_PID);
DetectedControllers detected_controllers;
std::vector<std::string *> ports;
ports = find_usb_serial_port(CH341_VID, CH341_PID);
for(unsigned int device = 0; device < ports.size(); device++)
{
@@ -29,7 +32,7 @@ void DetectArcticControllers()
if(controller->IsPresent())
{
RGBController_Arctic *rgb_controller = new RGBController_Arctic(controller);
ResourceManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
else
{
@@ -38,6 +41,8 @@ void DetectArcticControllers()
delete ports[device];
}
return(detected_controllers);
}
REGISTER_DETECTOR("Arctic RGB controller", DetectArcticControllers);
@@ -6,7 +6,7 @@
| Armin Wolf (Wer-Wolf) 09 Jan 2023 |
| |
| This file is part of the OpenRGB project |
| SPDX-License-Identifier: GPL-2.0-only |
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
#include <math.h>
@@ -70,7 +70,6 @@ void RGBController_Arctic::SetupZones()
LedZone.leds_count = 1;
LedZone.leds_min = 1;
LedZone.leds_max = 1;
LedZone.matrix_map = nullptr;
led Led;
Led.name = LedZone.name + " LED";
@@ -83,13 +82,6 @@ void RGBController_Arctic::SetupZones()
SetupColors();
}
void RGBController_Arctic::ResizeZone(int /* zone */, int /* new_size */)
{
/*---------------------------------------------------------*\
| This device does not support resizing zones |
\*---------------------------------------------------------*/
}
void RGBController_Arctic::DeviceUpdateLEDs()
{
last_update_time = std::chrono::steady_clock::now();
@@ -97,12 +89,12 @@ void RGBController_Arctic::DeviceUpdateLEDs()
controller->SetChannels(colors);
}
void RGBController_Arctic::UpdateZoneLEDs(int /* zone */)
void RGBController_Arctic::DeviceUpdateZoneLEDs(int /* zone */)
{
DeviceUpdateLEDs();
}
void RGBController_Arctic::UpdateSingleLED(int /* led */)
void RGBController_Arctic::DeviceUpdateSingleLED(int /* led */)
{
DeviceUpdateLEDs();
}
@@ -123,7 +115,7 @@ void RGBController_Arctic::KeepaliveThreadFunction()
sleep_time = ARCTIC_KEEPALIVE_PERIOD - (std::chrono::steady_clock::now() - last_update_time);
if(sleep_time <= ARCTIC_SLEEP_THRESHOLD)
{
UpdateLEDs(); // Already protected thru a device update thread
UpdateLEDsInternal(); // Already protected thru a device update thread
std::this_thread::sleep_for(ARCTIC_KEEPALIVE_PERIOD);
}
else

Some files were not shown because too many files have changed in this diff Show More