Modular detection system with resource manager.

Includes pull request !87 with modifications by Adam Honse (calcprogrammer1@gmail.com).
This commit is contained in:
pobrn 2020-08-01 19:42:47 +02:00 committed by Adam Honse
parent b3a7b7be81
commit ddc69778dc
50 changed files with 318 additions and 145 deletions

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "AMDWraithPrismController.h"
#include "RGBController.h"
#include "RGBController_AMDWraithPrism.h"
@ -49,3 +50,5 @@ void DetectAMDWraithPrismControllers(std::vector<RGBController*>& rgb_controller
info = info->next;
}
}
REGISTER_DETECTOR(DetectAMDWraithPrismControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "AuraCoreController.h"
#include "RGBController.h"
#include "RGBController_AuraCore.h"
@ -43,3 +44,5 @@ void DetectAuraCoreControllers(std::vector<RGBController*>& rgb_controllers)
}
}
}
REGISTER_DETECTOR(DetectAuraCoreControllers);

View file

@ -6,6 +6,7 @@
| Jan Rettig (Klapstuhl) 14.02.2020 |
\*-----------------------------------------*/
#include "Detector.h"
#include "AuraGPUController.h"
#include "RGBController.h"
#include "RGBController_AuraGPU.h"
@ -82,4 +83,6 @@ void DetectAuraGPUControllers(std::vector<i2c_smbus_interface*> &busses, std::ve
std::this_thread::sleep_for(1ms);
}
}
} /* DetectAuraGPUControllers() */
} /* DetectAuraGPUControllers() */
REGISTER_I2C_DETECTOR(DetectAuraGPUControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "AuraSMBusController.h"
#include "RGBController.h"
#include "RGBController_AuraSMBus.h"
@ -188,3 +189,5 @@ void DetectAuraSMBusControllers(std::vector<i2c_smbus_interface*> &busses, std::
}
} /* DetectAuraSMBusControllers() */
REGISTER_I2C_DETECTOR(DetectAuraSMBusControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "AuraAddressableController.h"
#include "AuraMainboardController.h"
#include "RGBController.h"
@ -74,4 +75,6 @@ void DetectAuraUSBControllers(std::vector<RGBController*>& rgb_controllers)
}
}
}
}
} /* DetectAuraUSBControllers() */
REGISTER_DETECTOR(DetectAuraUSBControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "CMMP750Controller.h"
#include "RGBController.h"
#include "RGBController_CMMP750Controller.h"
@ -63,4 +64,6 @@ void DetectCoolerMasterControllers(std::vector<RGBController*>& rgb_controllers)
info = info->next;
}
hid_free_enumeration(info);
}
} /* DetectCoolerMasterControllers() */
REGISTER_DETECTOR(DetectCoolerMasterControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "CorsairLightingNodeController.h"
#include "RGBController.h"
#include "RGBController_CorsairLightingNode.h"
@ -77,3 +78,5 @@ void DetectCorsairLightingNodeControllers(std::vector<RGBController*> &rgb_contr
}
}
} /* DetectCorsairLightingNodeControllers() */
REGISTER_DETECTOR(DetectCorsairLightingNodeControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "CorsairPeripheralController.h"
#include "RGBController.h"
#include "RGBController_CorsairPeripheral.h"
@ -157,4 +158,6 @@ void DetectCorsairPeripheralControllers(std::vector<RGBController*>& rgb_control
info = info->next;
}
}
}
} /* DetectCorsairPeripheralControllers() */
REGISTER_DETECTOR(DetectCorsairPeripheralControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "CorsairVengeanceController.h"
#include "RGBController.h"
#include "RGBController_CorsairVengeance.h"
@ -122,4 +123,6 @@ void DetectCorsairVengeanceControllers(std::vector<i2c_smbus_interface*> &busses
}
}
} /* DetectCorsairVengeanceControllers() */
} /* DetectCorsairVengeanceControllers() */
REGISTER_I2C_DETECTOR(DetectCorsairVengeanceControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "CorsairVengeanceProController.h"
#include "RGBController.h"
#include "RGBController_CorsairVengeancePro.h"
@ -130,4 +131,6 @@ void DetectCorsairVengeanceProControllers(std::vector<i2c_smbus_interface*> &bus
}
}
} /* DetectCorsairVengeanceProControllers() */
} /* DetectCorsairVengeanceProControllers() */
REGISTER_I2C_DETECTOR(DetectCorsairVengeanceProControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "CrucialController.h"
#include "RGBController.h"
#include "RGBController_Crucial.h"
@ -86,3 +87,5 @@ void DetectCrucialControllers(std::vector<i2c_smbus_interface*> &busses, std::ve
}
} /* DetectCrucialControllers() */
REGISTER_I2C_DETECTOR(DetectCrucialControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "DuckyKeyboardController.h"
#include "RGBController.h"
#include "RGBController_DuckyKeyboard.h"
@ -78,4 +79,6 @@ void DetectDuckyKeyboardControllers(std::vector<RGBController*>& rgb_controllers
info = info->next;
}
}
}
} /* DetectDuckyKeyboardControllers() */
REGISTER_DETECTOR(DetectDuckyKeyboardControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "EKController.h"
#include "RGBController.h"
#include "RGBController_EKController.h"
@ -61,4 +62,6 @@ void DetectEKControllers(std::vector<RGBController*>& rgb_controllers)
info = info->next;
}
hid_free_enumeration(info);
}
} /* DetectEKControllers() */
REGISTER_DETECTOR(DetectEKControllers);

View file

@ -6,6 +6,7 @@
| Niels Westphal (crashniels) 12.07.2020 |
\*-----------------------------------------*/
#include "Detector.h"
#include "GalaxGPUController.h"
#include "RGBController.h"
#include "RGBController_GalaxGPU.h"
@ -66,3 +67,5 @@ void DetectGalaxGPUControllers(std::vector<i2c_smbus_interface*> &busses, std::v
}
} /* DetectGalaxGPUControllers() */
REGISTER_I2C_DETECTOR(DetectGalaxGPUControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "GloriousModelOController.h"
#include "RGBController.h"
#include "RGBController_GloriousModelO.h"
@ -57,4 +58,6 @@ void DetectGloriousModelOControllers(std::vector<RGBController*>& rgb_controller
rgb_controllers.push_back(rgb_controller);
}
}
} /* DetectGloriousModelOControllers() */
REGISTER_DETECTOR(DetectGloriousModelOControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "HoltekA070Controller.h"
#include "RGBController.h"
#include "RGBController_HoltekA070.h"
@ -83,4 +84,6 @@ void DetectHoltekControllers(std::vector<RGBController*>& rgb_controllers)
}
}
}
} /* DetectHoltekControllers() */
REGISTER_DETECTOR(DetectHoltekControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "HuePlusController.h"
#include "RGBController.h"
#include "RGBController_HuePlus.h"
@ -35,3 +36,5 @@ void DetectHuePlusControllers(std::vector<RGBController*> &rgb_controllers)
}
}
} /* DetectHuePlusControllers() */
REGISTER_DETECTOR(DetectHuePlusControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "HyperXDRAMController.h"
#include "RGBController.h"
#include "RGBController_HyperXDRAM.h"
@ -93,3 +94,5 @@ void DetectHyperXDRAMControllers(std::vector<i2c_smbus_interface*> &busses, std:
}
} /* DetectHyperXDRAMControllers() */
REGISTER_I2C_DETECTOR(DetectHyperXDRAMControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "HyperXAlloyOriginsController.h"
#include "HyperXKeyboardController.h"
#include "RGBController.h"
@ -104,4 +105,6 @@ void DetectHyperXKeyboardControllers(std::vector<RGBController*>& rgb_controller
info = info->next;
}
}
}
} /* DetectHyperXKeyboardControllers() */
REGISTER_DETECTOR(DetectHyperXKeyboardControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "HyperXPulsefireSurgeController.h"
#include "RGBController.h"
#include "RGBController_HyperXPulsefireSurge.h"
@ -78,4 +79,6 @@ void DetectHyperXMouseControllers(std::vector<RGBController*>& rgb_controllers)
info = info->next;
}
}
}
} /* DetectHyperXMouseControllers() */
REGISTER_DETECTOR(DetectHyperXMouseControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "LEDStripController.h"
#include "RGBController.h"
#include "RGBController_LEDStrip.h"
@ -21,7 +22,7 @@
* DetectLEDStripControllers *
* *
* Detect devices supported by the LEDStrip driver *
* * *
* *
\******************************************************************************************/
void DetectLEDStripControllers(std::vector<RGBController*> &rgb_controllers)
@ -84,5 +85,6 @@ void DetectLEDStripControllers(std::vector<RGBController*> &rgb_controllers)
}
}
} /* DetectLEDStripControllers() */
} /* DetectLEDStripControllers() */
REGISTER_DETECTOR(DetectLEDStripControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "LogitechG203Controller.h"
#include "LogitechG203LController.h"
#include "LogitechG403Controller.h"
@ -208,4 +209,6 @@ void DetectLogitechControllers(std::vector<RGBController*>& rgb_controllers)
}
}
}
} /* DetectLogitechControllers() */
REGISTER_DETECTOR(DetectLogitechControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "MSI3ZoneController.h"
#include "RGBController.h"
#include "RGBController_MSI3Zone.h"
@ -33,4 +34,6 @@ void DetectMSI3ZoneControllers(std::vector<RGBController*>& rgb_controllers)
rgb_controllers.push_back(rgb_controller);
}
}
} /* DetectMSI3ZoneControllers() */
REGISTER_DETECTOR(DetectMSI3ZoneControllers);

View file

@ -5,6 +5,7 @@
| |
\*-----------------------------------------*/
#include "Detector.h"
#include "MSIGPUController.h"
#include "RGBController.h"
#include "RGBController_MSIGPU.h"
@ -111,3 +112,5 @@ void DetectMSIGPUControllers(std::vector<i2c_smbus_interface*> &busses, std::vec
}
}
} /* DetectMSIGPUControllers() */
REGISTER_I2C_DETECTOR(DetectMSIGPUControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "MSIMysticLightController.h"
#include "RGBController_MSIMysticLight.h"
@ -98,4 +99,8 @@ void DetectMSIMysticLightControllers(std::vector<RGBController*> &rgb_controller
rgb_controllers.push_back(rgb_controller);
}
}
}
} /* DetectMSIMysticLightControllers() */
// The MSI Mystic Light controller is disabled due to bricking risk
// Uncomment this line to enable. Do so at your own risk.
//REGISTER_DETECTOR(DetectMSIMysticLightControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "MSIRGBController.h"
#include "RGBController.h"
#include "RGBController_MSIRGB.h"
@ -38,3 +39,5 @@ void DetectMSIRGBControllers(std::vector<RGBController*> &rgb_controllers)
}
}
} /* DetectMSIRGBControllers() */
REGISTER_DETECTOR(DetectMSIRGBControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "NZXTHue2Controller.h"
#include "RGBController.h"
#include "RGBController_NZXTHue2.h"
@ -76,3 +77,5 @@ void DetectNZXTHue2Controllers(std::vector<RGBController*> &rgb_controllers)
}
}
} /* DetectNZXTHue2Controllers() */
REGISTER_DETECTOR(DetectNZXTHue2Controllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "NZXTKrakenController.h"
#include "RGBController.h"
#include "RGBController_NZXTKraken.h"
@ -48,4 +49,6 @@ void DetectNZXTKrakenControllers(std::vector<RGBController*> &rgb_controllers)
info = info->next;
}
}
}
} /* DetectNZXTKrakenControllers() */
REGISTER_DETECTOR(DetectNZXTKrakenControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "PatriotViperController.h"
#include "RGBController.h"
#include "RGBController_PatriotViper.h"
@ -70,3 +71,5 @@ void DetectPatriotViperControllers(std::vector<i2c_smbus_interface*> &busses, st
}
} /* DetectPatriotViperControllers() */
REGISTER_I2C_DETECTOR(DetectPatriotViperControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "PolychromeController.h"
#include "RGBController.h"
#include "RGBController_Polychrome.h"
@ -67,3 +68,5 @@ void DetectPolychromeControllers(std::vector<i2c_smbus_interface*>& busses, std:
}
} /* DetectPolychromeControllers() */
REGISTER_I2C_DETECTOR(DetectPolychromeControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "PoseidonZRGBController.h"
#include "RGBController.h"
#include "RGBController_PoseidonZRGB.h"
@ -50,5 +51,6 @@ void DetectPoseidonZRGBControllers(std::vector<RGBController*>& rgb_controllers)
info = info->next;
}
} /* DetectPoseidonZRGBControllers() */
}
REGISTER_DETECTOR(DetectPoseidonZRGBControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "RGBFusion2DRAMController.h"
#include "RGBController.h"
#include "RGBController_RGBFusion2DRAM.h"
@ -65,3 +66,6 @@ void DetectRGBFusion2DRAMControllers(std::vector<i2c_smbus_interface*>& busses,
}
} /* DetectRGBFusion2DRAMControllers() */
// This detector is disabled as proper detection isn't implemented
//REGISTER_I2C_DETECTOR(DetectRGBFusion2DRAMControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "RGBFusion2SMBusController.h"
#include "RGBController.h"
#include "RGBController_RGBFusion2SMBus.h"
@ -71,3 +72,6 @@ void DetectRGBFusion2SMBusControllers(std::vector<i2c_smbus_interface*>& busses,
}
} /* DetectRGBFusion2SMBusControllers() */
// This detector is disabled as proper detection is not implemented
//REGISTER_DETECTOR(DetectRGBFusion2SMBusControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "RGBFusion2USBController.h"
#include "RGBController_RGBFusion2USB.h"
#include "dependencies/dmiinfo.h"
@ -67,4 +68,6 @@ void DetectRGBFusion2USBControllers(std::vector<RGBController*> &rgb_controllers
}
hid_free_enumeration(info);
}
} /* DetectRGBFusion2USBControllers() */
REGISTER_DETECTOR(DetectRGBFusion2USBControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "RGBFusionController.h"
#include "RGBController.h"
#include "RGBController_RGBFusion.h"
@ -64,4 +65,6 @@ void DetectRGBFusionControllers(std::vector<i2c_smbus_interface*>& busses, std::
}
}
} /* DetectRGBFusionControllers() */
} /* DetectRGBFusionControllers() */
REGISTER_I2C_DETECTOR(DetectRGBFusionControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "RGBFusionGPUController.h"
#include "RGBController.h"
#include "RGBController_RGBFusionGPU.h"
@ -81,3 +82,5 @@ void DetectRGBFusionGPUControllers(std::vector<i2c_smbus_interface*>& busses, st
}
} /* DetectRGBFusionGPUControllers() */
REGISTER_I2C_DETECTOR(DetectRGBFusionGPUControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "RedragonK556Controller.h"
#include "RedragonM711Controller.h"
#include "RGBController.h"
@ -123,4 +124,6 @@ void DetectRedragonControllers(std::vector<RGBController*>& rgb_controllers)
info = info->next;
}
}
}
} /* DetectRedragonControllers() */
REGISTER_DETECTOR(DetectRedragonControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "SapphireGPUController.h"
#include "RGBController.h"
#include "RGBController_SapphireGPU.h"
@ -57,3 +58,6 @@ void DetectSapphireGPUControllers(std::vector<i2c_smbus_interface*>& busses, std
}
} /* DetectSapphireGPUControllers() */
// This detector is disabled as it does not properly detect
//REGISTER_I2C_DETECTOR(DetectSapphireGPUControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "SteelSeriesRivalController.h"
#include "SteelSeriesSiberiaController.h"
#include "SteelSeriesApexController.h"
@ -155,4 +156,6 @@ void DetectSteelSeriesControllers(std::vector<RGBController*>& rgb_controllers)
}
}
}
}
} /* DetectSteelSeriesControllers() */
REGISTER_DETECTOR(DetectSteelSeriesControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "ThermaltakeRiingController.h"
#include "RGBController.h"
#include "RGBController_ThermaltakeRiing.h"
@ -53,4 +54,6 @@ void DetectThermaltakeRiingControllers(std::vector<RGBController*>& rgb_controll
rgb_controllers.push_back(rgb_controller);
}
}
}
} /* DetectThermaltakeRiingControllers() */
REGISTER_DETECTOR(DetectThermaltakeRiingControllers);

6
Detector.h Normal file
View file

@ -0,0 +1,6 @@
#pragma once
#include "DeviceDetector.h"
#define REGISTER_DETECTOR(func) static DeviceDetector device_detector_obj(func)
#define REGISTER_I2C_DETECTOR(func) static I2CDeviceDetector device_detector_obj(func)

24
DeviceDetector.h Normal file
View file

@ -0,0 +1,24 @@
#pragma once
#include <functional>
#include <vector>
#include "ResourceManager.h"
class DeviceDetector
{
public:
DeviceDetector(DeviceDetectorFunction detector)
{
ResourceManager::get()->RegisterDeviceDetector(detector);
}
};
class I2CDeviceDetector
{
public:
I2CDeviceDetector(I2CDeviceDetectorFunction detector)
{
ResourceManager::get()->RegisterI2CDeviceDetector(detector);
}
};

View file

@ -8,6 +8,7 @@
#include "RGBController.h"
#include "i2c_smbus.h"
#include "ResourceManager.h"
#include <vector>
#include <stdio.h>
#include <stdlib.h>
@ -31,8 +32,6 @@
#endif /* WIN32 */
std::vector<i2c_smbus_interface*> busses;
std::vector<RGBController*> rgb_controllers;
#ifdef WIN32
/******************************************************************************************\
@ -44,7 +43,7 @@ std::vector<RGBController*> rgb_controllers;
* *
\******************************************************************************************/
void DetectNuvotonI2CBusses()
void DetectNuvotonI2CBusses(std::vector<i2c_smbus_interface*> &busses)
{
i2c_smbus_interface* bus;
int sioaddr = 0x2E;
@ -102,7 +101,7 @@ void DetectNuvotonI2CBusses()
* *
\******************************************************************************************/
void DetectNvAPII2CBusses()
void DetectNvAPII2CBusses(std::vector<i2c_smbus_interface*> &busses)
{
static NV_PHYSICAL_GPU_HANDLE gpu_handles[64];
static NV_S32 gpu_count = 0;
@ -146,7 +145,7 @@ void DetectNvAPII2CBusses()
* *
\******************************************************************************************/
void DetectADLI2C()
void DetectADLI2C(std::vector<i2c_smbus_interface*> &busses)
{
int adl_status;
int gpu_count = 0;
@ -176,7 +175,7 @@ void DetectADLI2C()
* *
\******************************************************************************************/
void DetectI2CBusses()
void DetectI2CBusses(std::vector<i2c_smbus_interface*> &busses)
{
i2c_smbus_interface * bus;
HRESULT hres;
@ -247,13 +246,13 @@ void DetectI2CBusses()
}
// Detect Nuvoton Super IO SMBus adapters
DetectNuvotonI2CBusses();
DetectNuvotonI2CBusses(busses);
// Detect NVidia NvAPI I2C adapters
DetectNvAPII2CBusses();
DetectNvAPII2CBusses(busses);
// Detect AMD ADL I2C adadpters
DetectADLI2C();
DetectADLI2C(busses);
} /* DetectI2CBusses() */
@ -268,7 +267,7 @@ void DetectI2CBusses()
* *
\******************************************************************************************/
void DetectI2CBusses()
void DetectI2CBusses(std::vector<i2c_smbus_interface*> &busses)
{
i2c_smbus_linux * bus;
char device_string[1024];
@ -411,49 +410,6 @@ void DetectI2CBusses()
#endif /* WIN32 */
void DetectAuraSMBusControllers(std::vector<i2c_smbus_interface*> &busses, std::vector<RGBController*> &rgb_controllers);
void DetectAuraGPUControllers(std::vector<i2c_smbus_interface*> &busses, std::vector<RGBController*> &rgb_controllers);
void DetectCorsairVengeanceControllers(std::vector<i2c_smbus_interface*> &busses, std::vector<RGBController*> &rgb_controllers);
void DetectCorsairVengeanceProControllers(std::vector<i2c_smbus_interface*> &busses, std::vector<RGBController*> &rgb_controllers);
void DetectCrucialControllers(std::vector<i2c_smbus_interface*> &busses, std::vector<RGBController*> &rgb_controllers);
void DetectHyperXDRAMControllers(std::vector<i2c_smbus_interface*> &busses, std::vector<RGBController*> &rgb_controllers);
void DetectPatriotViperControllers(std::vector<i2c_smbus_interface*> &busses, std::vector<RGBController*> &rgb_controllers);
void DetectPolychromeControllers(std::vector<i2c_smbus_interface*>& busses, std::vector<RGBController*>& rgb_controllers);
void DetectRGBFusionControllers(std::vector<i2c_smbus_interface*>& busses, std::vector<RGBController*>& rgb_controllers);
void DetectRGBFusionGPUControllers(std::vector<i2c_smbus_interface*>& busses, std::vector<RGBController*>& rgb_controllers);
void DetectRGBFusion2SMBusControllers(std::vector<i2c_smbus_interface*>& busses, std::vector<RGBController*>& rgb_controllers);
void DetectRGBFusion2DRAMControllers(std::vector<i2c_smbus_interface*>& busses, std::vector<RGBController*>& rgb_controllers);
void DetectMSIGPUControllers(std::vector<i2c_smbus_interface*>& busses, std::vector<RGBController*>& rgb_controllers);
void DetectSapphireGPUControllers(std::vector<i2c_smbus_interface*>& busses, std::vector<RGBController*>& rgb_controllers);
void DetectGalaxGPUControllers(std::vector<i2c_smbus_interface*>& busses, std::vector<RGBController*>& rgb_controllers);
void DetectMSIMysticLightControllers(std::vector<RGBController*> &rgb_controllers);
void DetectMSIRGBControllers(std::vector<RGBController*> &rgb_controllers);
void DetectAuraUSBControllers(std::vector<RGBController*> &rgb_controllers);
void DetectAuraCoreControllers(std::vector<RGBController*> &rgb_controllers);
void DetectLEDStripControllers(std::vector<RGBController*> &rgb_controllers);
void DetectNZXTHue2Controllers(std::vector<RGBController*> &rgb_controllers);
void DetectHuePlusControllers(std::vector<RGBController*> &rgb_controllers);
void DetectOpenRazerControllers(std::vector<RGBController*> &rgb_controllers);
void DetectE131Controllers(std::vector<RGBController*> &rgb_controllers);
void DetectAMDWraithPrismControllers(std::vector<RGBController*>& rgb_controllers);
void DetectCoolerMasterControllers(std::vector<RGBController*>& rgb_controllers);
void DetectMSI3ZoneControllers(std::vector<RGBController*>& rgb_controllers);
void DetectPoseidonZRGBControllers(std::vector<RGBController*>& rgb_controllers);
void DetectCorsairPeripheralControllers(std::vector<RGBController*>& rgb_controllers);
void DetectCorsairLightingNodeControllers(std::vector<RGBController*> &rgb_controllers);
void DetectFaustusControllers(std::vector<RGBController*> &rgb_controllers);
void DetectHyperXKeyboardControllers(std::vector<RGBController*>& rgb_controllers);
void DetectHyperXMouseControllers(std::vector<RGBController*>& rgb_controllers);
void DetectThermaltakeRiingControllers(std::vector<RGBController*>& rgb_controllers);
void DetectRGBFusion2USBControllers(std::vector<RGBController*> &rgb_controllers);
void DetectRedragonControllers(std::vector<RGBController*>& rgb_controllers);
void DetectLogitechControllers(std::vector<RGBController*>& rgb_controllers);
void DetectNZXTKrakenControllers(std::vector<RGBController*>& rgb_controllers);
void DetectSteelSeriesControllers(std::vector<RGBController*>& rgb_controllers);
void DetectGloriousModelOControllers(std::vector<RGBController*>& rgb_controllers);
void DetectHoltekControllers(std::vector<RGBController*>& rgb_controllers);
void DetectDuckyKeyboardControllers(std::vector<RGBController*>& rgb_controllers);
void DetectEKControllers(std::vector<RGBController*>& rgb_controllers);
/******************************************************************************************\
* *
@ -465,67 +421,7 @@ void DetectEKControllers(std::vector<RGBController*>& rgb_controllers);
void DetectRGBControllers(void)
{
DetectI2CBusses();
DetectAuraSMBusControllers(busses, rgb_controllers);
DetectAuraGPUControllers(busses, rgb_controllers);
DetectCorsairVengeanceControllers(busses, rgb_controllers);
DetectCorsairVengeanceProControllers(busses, rgb_controllers);
DetectCrucialControllers(busses, rgb_controllers);
DetectGalaxGPUControllers(busses, rgb_controllers);
DetectHyperXDRAMControllers(busses, rgb_controllers);
DetectPatriotViperControllers(busses, rgb_controllers);
DetectPolychromeControllers(busses, rgb_controllers);
DetectRGBFusionGPUControllers(busses, rgb_controllers);
DetectMSIGPUControllers(busses, rgb_controllers);
DetectSapphireGPUControllers(busses, rgb_controllers);
//TODO: Implement better detection before enabling these controllers
//DetectRGBFusion2SMBusControllers(busses, rgb_controllers);
//DetectRGBFusion2DRAMControllers(busses, rgb_controllers);
DetectRGBFusionControllers(busses, rgb_controllers);
//DetectMSIMysticLightControllers(rgb_controllers);
DetectMSIRGBControllers(rgb_controllers);
DetectAuraUSBControllers(rgb_controllers);
DetectAuraCoreControllers(rgb_controllers);
DetectLEDStripControllers(rgb_controllers);
DetectNZXTHue2Controllers(rgb_controllers);
DetectHuePlusControllers(rgb_controllers);
DetectAMDWraithPrismControllers(rgb_controllers);
DetectCoolerMasterControllers(rgb_controllers);
DetectMSI3ZoneControllers(rgb_controllers);
DetectPoseidonZRGBControllers(rgb_controllers);
DetectHyperXKeyboardControllers(rgb_controllers);
DetectHyperXMouseControllers(rgb_controllers);
DetectCorsairPeripheralControllers(rgb_controllers);
DetectCorsairLightingNodeControllers(rgb_controllers);
DetectThermaltakeRiingControllers(rgb_controllers);
DetectRGBFusion2USBControllers(rgb_controllers);
DetectRedragonControllers(rgb_controllers);
DetectLogitechControllers(rgb_controllers);
DetectNZXTKrakenControllers(rgb_controllers);
DetectSteelSeriesControllers(rgb_controllers);
DetectGloriousModelOControllers(rgb_controllers);
DetectHoltekControllers(rgb_controllers);
DetectDuckyKeyboardControllers(rgb_controllers);
DetectEKControllers(rgb_controllers);
DetectE131Controllers(rgb_controllers);
DetectOpenRazerControllers(rgb_controllers);
/*-------------------------------------*\
| Windows-only devices |
\*-------------------------------------*/
#ifdef WIN32
/*-------------------------------------*\
| Linux-only devices |
\*-------------------------------------*/
#else
DetectFaustusControllers(rgb_controllers);
#endif
DetectI2CBusses(ResourceManager::get()->GetI2CBusses());
ResourceManager::get()->DetectDevices();
} /* DetectRGBControllers() */

View file

@ -95,6 +95,9 @@ HEADERS += \
NetworkProtocol.h \
NetworkServer.h \
ProfileManager.h \
ResourceManager.h \
Detector.h \
DeviceDetector.h \
qt/OpenRGBClientInfoPage.h \
qt/OpenRGBDeviceInfoPage.h \
qt/OpenRGBDevicePage.h \
@ -223,6 +226,7 @@ SOURCES += \
NetworkClient.cpp \
NetworkServer.cpp \
ProfileManager.cpp \
ResourceManager.cpp \
qt/OpenRGBClientInfoPage.cpp \
qt/OpenRGBDeviceInfoPage.cpp \
qt/OpenRGBDevicePage.cpp \

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "RGBController.h"
#include "RGBController_E131.h"
#include <vector>
@ -170,3 +171,5 @@ void DetectE131Controllers(std::vector<RGBController*> &rgb_controllers)
}
} /* DetectE131Controllers() */
REGISTER_DETECTOR(DetectE131Controllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "RGBController.h"
#include "RGBController_OpenRazer.h"
#include <vector>
@ -14,7 +15,7 @@
* DetectOpenRazerControllers *
* *
* Detect devices supported by the OpenRazer kernel drivers *
* * *
* *
\******************************************************************************************/
void DetectOpenRazerControllers(std::vector<RGBController*> &rgb_controllers)
@ -121,3 +122,5 @@ void DetectOpenRazerControllers(std::vector<RGBController*> &rgb_controllers)
}
} /* DetectOpenRazerControllers() */
REGISTER_DETECTOR(DetectOpenRazerControllers);

View file

@ -1,3 +1,4 @@
#include "Detector.h"
#include "RGBController.h"
#include "RGBController_OpenRazerWindows.h"
#include <vector>
@ -250,3 +251,5 @@ void DetectOpenRazerControllers(std::vector<RGBController*> &rgb_controllers)
}
} /* DetectOpenRazerControllers() */
REGISTER_DETECTOR(DetectOpenRazerControllers);

71
ResourceManager.cpp Normal file
View file

@ -0,0 +1,71 @@
#include "ResourceManager.h"
std::unique_ptr<ResourceManager> ResourceManager::instance;
ResourceManager *ResourceManager::get()
{
if(!instance)
{
instance = std::make_unique<ResourceManager>();
}
return instance.get();
}
ResourceManager::~ResourceManager()
{
for(i2c_smbus_interface* bus : busses)
{
delete bus;
}
for(RGBController* rgb_controller : rgb_controllers)
{
delete rgb_controller;
}
}
void ResourceManager::RegisterI2CBus(i2c_smbus_interface *bus)
{
busses.push_back(bus);
}
std::vector<i2c_smbus_interface*> & ResourceManager::GetI2CBusses()
{
return busses;
}
void ResourceManager::RegisterRGBController(RGBController *rgb_controller)
{
rgb_controllers.push_back(rgb_controller);
}
std::vector<RGBController*> & ResourceManager::GetRGBControllers()
{
return rgb_controllers;
}
void ResourceManager::RegisterI2CDeviceDetector(I2CDeviceDetectorFunction detector)
{
i2c_device_detectors.push_back(detector);
}
void ResourceManager::RegisterDeviceDetector(DeviceDetectorFunction detector)
{
device_detectors.push_back(detector);
}
void ResourceManager::DetectDevices()
{
for(int i2c_detector_idx = 0; i2c_detector_idx < i2c_device_detectors.size(); i2c_detector_idx++)
{
i2c_device_detectors[i2c_detector_idx](busses, rgb_controllers);
}
for(int detector_idx = 0; detector_idx < device_detectors.size(); detector_idx++)
{
device_detectors[detector_idx](rgb_controllers);
}
}

39
ResourceManager.h Normal file
View file

@ -0,0 +1,39 @@
#pragma once
#include <memory>
#include <vector>
#include <functional>
#include "i2c_smbus.h"
#include "RGBController.h"
typedef std::function<void(std::vector<RGBController*>&)> DeviceDetectorFunction;
typedef std::function<void(std::vector<i2c_smbus_interface*>&, std::vector<RGBController*>&)> I2CDeviceDetectorFunction;
class ResourceManager
{
public:
static ResourceManager *get();
ResourceManager() = default;
~ResourceManager();
void RegisterI2CBus(i2c_smbus_interface *);
std::vector<i2c_smbus_interface*> & GetI2CBusses();
void RegisterRGBController(RGBController *);
std::vector<RGBController*> & GetRGBControllers();
void RegisterDeviceDetector (DeviceDetectorFunction detector);
void RegisterI2CDeviceDetector (I2CDeviceDetectorFunction detector);
void DetectDevices();
private:
static std::unique_ptr<ResourceManager> instance;
std::vector<i2c_smbus_interface*> busses;
std::vector<RGBController*> rgb_controllers;
std::vector<DeviceDetectorFunction> device_detectors;
std::vector<I2CDeviceDetectorFunction> i2c_device_detectors;
};

View file

@ -6,6 +6,7 @@
* *
\******************************************************************************************/
#include "ResourceManager.h"
#include "NetworkClient.h"
#include "NetworkServer.h"
#include "OpenRGB.h"
@ -23,9 +24,6 @@ using namespace std::chrono_literals;
std::vector<NetworkClient*> clients;
extern std::vector<i2c_smbus_interface*> busses;
extern std::vector<RGBController*> rgb_controllers;
/*-------------------------------------------------------------*\
| Command line functionality and return flags |
\*-------------------------------------------------------------*/
@ -84,7 +82,7 @@ void InitializeTimerResolutionThreadFunction()
* *
\******************************************************************************************/
bool AttemptLocalConnection()
bool AttemptLocalConnection(std::vector<RGBController*> &rgb_controllers)
{
bool success = false;
@ -134,10 +132,13 @@ int main(int argc, char* argv[])
InitializeTimerResolutionThread->detach();
#endif
std::vector<i2c_smbus_interface*> &busses = ResourceManager::get()->GetI2CBusses();
std::vector<RGBController*> &rgb_controllers = ResourceManager::get()->GetRGBControllers();
ProfileManager profile_manager(rgb_controllers);
NetworkServer server(rgb_controllers);
if(!AttemptLocalConnection())
if(!AttemptLocalConnection(rgb_controllers))
{
DetectRGBControllers();
}