Add detection start and end callbacks
This commit is contained in:
parent
d88f9979a9
commit
f54ecd8b1b
2 changed files with 51 additions and 20 deletions
|
|
@ -172,12 +172,6 @@ void ResourceManager::RegisterDeviceListChangeCallback(DeviceListChangeCallback
|
|||
DeviceListChangeCallbackArgs.push_back(new_callback_arg);
|
||||
}
|
||||
|
||||
void ResourceManager::RegisterDeviceListWarningCallback(DeviceListWarningCallback new_callback, void *new_callback_arg)
|
||||
{
|
||||
DeviceListWarningCallbacks.push_back(new_callback);
|
||||
DeviceListWarningCallbackArgs.push_back(new_callback_arg);
|
||||
}
|
||||
|
||||
void ResourceManager::RegisterI2CBusListChangeCallback(I2CBusListChangeCallback new_callback, void * new_callback_arg)
|
||||
{
|
||||
I2CBusListChangeCallbacks.push_back(new_callback);
|
||||
|
|
@ -190,15 +184,22 @@ void ResourceManager::RegisterDetectionProgressCallback(DetectionProgressCallbac
|
|||
DetectionProgressCallbackArgs.push_back(new_callback_arg);
|
||||
}
|
||||
|
||||
void ResourceManager::RegisterDetectionStartCallback(DetectionStartCallback new_callback, void *new_callback_arg)
|
||||
{
|
||||
DetectionStartCallbacks.push_back(new_callback);
|
||||
DetectionStartCallbackArgs.push_back(new_callback_arg);
|
||||
}
|
||||
|
||||
void ResourceManager::RegisterDetectionEndCallback(DetectionEndCallback new_callback, void *new_callback_arg)
|
||||
{
|
||||
DetectionEndCallbacks.push_back(new_callback);
|
||||
DetectionEndCallbackArgs.push_back(new_callback_arg);
|
||||
}
|
||||
|
||||
void ResourceManager::UpdateDeviceList()
|
||||
{
|
||||
DeviceListChangeMutex.lock();
|
||||
|
||||
for(unsigned int callback_idx = 0; callback_idx < (int)DeviceListWarningCallbacks.size(); callback_idx++)
|
||||
{
|
||||
DeviceListWarningCallbacks[callback_idx](DeviceListWarningCallbackArgs[callback_idx]);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------*\
|
||||
| Insert hardware controllers into controller list |
|
||||
\*-------------------------------------------------*/
|
||||
|
|
@ -477,6 +478,14 @@ void ResourceManager::Cleanup()
|
|||
|
||||
void ResourceManager::DetectDevices()
|
||||
{
|
||||
/*-----------------------------------------------------*\
|
||||
| Call detection start callbacks |
|
||||
\*-----------------------------------------------------*/
|
||||
for(unsigned int callback_idx = 0; callback_idx < DetectionStartCallbacks.size(); callback_idx++)
|
||||
{
|
||||
DetectionStartCallbacks[callback_idx](DetectionStartCallbackArgs[callback_idx]);
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Update the detector settings |
|
||||
\*-----------------------------------------------------*/
|
||||
|
|
@ -524,7 +533,15 @@ void ResourceManager::DetectDevices()
|
|||
\*-------------------------------------------------*/
|
||||
detection_percent = 100;
|
||||
DetectionProgressChanged();
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Call detection end callbacks |
|
||||
\*-----------------------------------------------------*/
|
||||
for(unsigned int callback_idx = 0; callback_idx < DetectionEndCallbacks.size(); callback_idx++)
|
||||
{
|
||||
DetectionEndCallbacks[callback_idx](DetectionEndCallbackArgs[callback_idx]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ResourceManager::DisableDetection()
|
||||
|
|
@ -903,6 +920,14 @@ void ResourceManager::DetectDevicesThreadFunction()
|
|||
|
||||
DetectDeviceMutex.unlock();
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Call detection end callbacks |
|
||||
\*-----------------------------------------------------*/
|
||||
for(unsigned int callback_idx = 0; callback_idx < DetectionEndCallbacks.size(); callback_idx++)
|
||||
{
|
||||
DetectionEndCallbacks[callback_idx](DetectionEndCallbackArgs[callback_idx]);
|
||||
}
|
||||
|
||||
LOG_NOTICE("Detection completed");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,8 +47,9 @@ typedef struct
|
|||
} HIDDeviceDetectorBlock;
|
||||
|
||||
typedef void (*DeviceListChangeCallback)(void *);
|
||||
typedef void (*DeviceListWarningCallback)(void *);
|
||||
typedef void (*DetectionProgressCallback)(void *);
|
||||
typedef void (*DetectionStartCallback)(void *);
|
||||
typedef void (*DetectionEndCallback)(void *);
|
||||
typedef void (*I2CBusListChangeCallback)(void *);
|
||||
|
||||
class ResourceManagerInterface
|
||||
|
|
@ -60,8 +61,9 @@ public:
|
|||
virtual void UnregisterRGBController(RGBController *rgb_controller) = 0;
|
||||
|
||||
virtual void RegisterDeviceListChangeCallback(DeviceListChangeCallback new_callback, void * new_callback_arg) = 0;
|
||||
virtual void RegisterDeviceListWarningCallback(DeviceListWarningCallback new_callback, void * new_callback_arg) = 0;
|
||||
virtual void RegisterDetectionProgressCallback(DetectionProgressCallback new_callback, void * new_callback_arg) = 0;
|
||||
virtual void RegisterDetectionStartCallback(DetectionStartCallback new_callback, void * new_callback_arg) = 0;
|
||||
virtual void RegisterDetectionEndCallback(DetectionEndCallback new_callback, void * new_callback_arg) = 0;
|
||||
virtual void RegisterI2CBusListChangeCallback(I2CBusListChangeCallback new_callback, void * new_callback_arg) = 0;
|
||||
|
||||
virtual std::vector<RGBController*> & GetRGBControllers() = 0;
|
||||
|
|
@ -111,8 +113,9 @@ public:
|
|||
int usage = HID_USAGE_ANY);
|
||||
|
||||
void RegisterDeviceListChangeCallback(DeviceListChangeCallback new_callback, void * new_callback_arg);
|
||||
void RegisterDeviceListWarningCallback(DeviceListWarningCallback new_callback, void * new_callback_arg);
|
||||
void RegisterDetectionProgressCallback(DetectionProgressCallback new_callback, void * new_callback_arg);
|
||||
void RegisterDetectionStartCallback(DetectionStartCallback new_callback, void * new_callback_arg);
|
||||
void RegisterDetectionEndCallback(DetectionEndCallback new_callback, void * new_callback_arg);
|
||||
void RegisterI2CBusListChangeCallback(I2CBusListChangeCallback new_callback, void * new_callback_arg);
|
||||
|
||||
unsigned int GetDetectionPercent();
|
||||
|
|
@ -214,22 +217,25 @@ private:
|
|||
const char* detection_string;
|
||||
|
||||
/*-------------------------------------------------------------------------------------*\
|
||||
| Device List Changed and Warning Callbacks |
|
||||
| Device List Changed Callback |
|
||||
\*-------------------------------------------------------------------------------------*/
|
||||
std::mutex DeviceListChangeMutex;
|
||||
std::vector<DeviceListChangeCallback> DeviceListChangeCallbacks;
|
||||
std::vector<void *> DeviceListChangeCallbackArgs;
|
||||
|
||||
std::vector<DeviceListWarningCallback> DeviceListWarningCallbacks;
|
||||
std::vector<void *> DeviceListWarningCallbackArgs;
|
||||
|
||||
/*-------------------------------------------------------------------------------------*\
|
||||
| Detection Progress Callback |
|
||||
| Detection Progress, Start, and End Callbacks |
|
||||
\*-------------------------------------------------------------------------------------*/
|
||||
std::mutex DetectionProgressMutex;
|
||||
std::vector<DetectionProgressCallback> DetectionProgressCallbacks;
|
||||
std::vector<void *> DetectionProgressCallbackArgs;
|
||||
|
||||
std::vector<DetectionStartCallback> DetectionStartCallbacks;
|
||||
std::vector<void *> DetectionStartCallbackArgs;
|
||||
|
||||
std::vector<DetectionEndCallback> DetectionEndCallbacks;
|
||||
std::vector<void *> DetectionEndCallbackArgs;
|
||||
|
||||
/*-------------------------------------------------------------------------------------*\
|
||||
| I2C/SMBus Adapter List Changed Callback |
|
||||
\*-------------------------------------------------------------------------------------*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue