@@ -232,6 +232,22 @@ void ResourceManager::RegisterDeviceListChangeCallback(DeviceListChangeCallback
232232{
233233 DeviceListChangeCallbacks.push_back (new_callback);
234234 DeviceListChangeCallbackArgs.push_back (new_callback_arg);
235+
236+ LOG_TRACE (" [ResourceManager] Registered device list change callback. Total callbacks registered: %d" , DeviceListChangeCallbacks.size ());
237+ }
238+
239+ void ResourceManager::UnregisterDeviceListChangeCallback (DeviceListChangeCallback callback, void * callback_arg)
240+ {
241+ for (size_t idx = 0 ; idx < DeviceListChangeCallbacks.size (); idx++)
242+ {
243+ if (DeviceListChangeCallbacks[idx] == callback && DeviceListChangeCallbackArgs[idx] == callback_arg)
244+ {
245+ DeviceListChangeCallbacks.erase (DeviceListChangeCallbacks.begin () + idx);
246+ DeviceListChangeCallbackArgs.erase (DeviceListChangeCallbackArgs.begin () + idx);
247+ }
248+ }
249+
250+ LOG_TRACE (" [ResourceManager] Unregistered device list change callback. Total callbacks registered: %d" , DeviceListChangeCallbacks.size ());
235251}
236252
237253void ResourceManager::RegisterI2CBusListChangeCallback (I2CBusListChangeCallback new_callback, void * new_callback_arg)
@@ -240,10 +256,38 @@ void ResourceManager::RegisterI2CBusListChangeCallback(I2CBusListChangeCallback
240256 I2CBusListChangeCallbackArgs.push_back (new_callback_arg);
241257}
242258
259+ void ResourceManager::UnregisterI2CBusListChangeCallback (I2CBusListChangeCallback callback, void * callback_arg)
260+ {
261+ for (size_t idx = 0 ; idx < I2CBusListChangeCallbacks.size (); idx++)
262+ {
263+ if (I2CBusListChangeCallbacks[idx] == callback && I2CBusListChangeCallbackArgs[idx] == callback_arg)
264+ {
265+ I2CBusListChangeCallbacks.erase (I2CBusListChangeCallbacks.begin () + idx);
266+ I2CBusListChangeCallbackArgs.erase (I2CBusListChangeCallbackArgs.begin () + idx);
267+ }
268+ }
269+ }
270+
243271void ResourceManager::RegisterDetectionProgressCallback (DetectionProgressCallback new_callback, void *new_callback_arg)
244272{
245273 DetectionProgressCallbacks.push_back (new_callback);
246274 DetectionProgressCallbackArgs.push_back (new_callback_arg);
275+
276+ LOG_TRACE (" [ResourceManager] Registered detection progress callback. Total callbacks registered: %d" , DetectionProgressCallbacks.size ());
277+ }
278+
279+ void ResourceManager::UnregisterDetectionProgressCallback (DetectionProgressCallback callback, void *callback_arg)
280+ {
281+ for (size_t idx = 0 ; idx < DetectionProgressCallbacks.size (); idx++)
282+ {
283+ if (DetectionProgressCallbacks[idx] == callback && DetectionProgressCallbackArgs[idx] == callback_arg)
284+ {
285+ DetectionProgressCallbacks.erase (DetectionProgressCallbacks.begin () + idx);
286+ DetectionProgressCallbackArgs.erase (DetectionProgressCallbackArgs.begin () + idx);
287+ }
288+ }
289+
290+ LOG_TRACE (" [ResourceManager] Unregistered detection progress callback. Total callbacks registered: %d" , DetectionProgressCallbacks.size ());
247291}
248292
249293void ResourceManager::RegisterDetectionStartCallback (DetectionStartCallback new_callback, void *new_callback_arg)
@@ -252,12 +296,36 @@ void ResourceManager::RegisterDetectionStartCallback(DetectionStartCallback new_
252296 DetectionStartCallbackArgs.push_back (new_callback_arg);
253297}
254298
299+ void ResourceManager::UnregisterDetectionStartCallback (DetectionStartCallback callback, void *callback_arg)
300+ {
301+ for (size_t idx = 0 ; idx < DetectionStartCallbacks.size (); idx++)
302+ {
303+ if (DetectionStartCallbacks[idx] == callback && DetectionStartCallbackArgs[idx] == callback_arg)
304+ {
305+ DetectionStartCallbacks.erase (DetectionStartCallbacks.begin () + idx);
306+ DetectionStartCallbackArgs.erase (DetectionStartCallbackArgs.begin () + idx);
307+ }
308+ }
309+ }
310+
255311void ResourceManager::RegisterDetectionEndCallback (DetectionEndCallback new_callback, void *new_callback_arg)
256312{
257313 DetectionEndCallbacks.push_back (new_callback);
258314 DetectionEndCallbackArgs.push_back (new_callback_arg);
259315}
260316
317+ void ResourceManager::UnregisterDetectionEndCallback (DetectionEndCallback callback, void *callback_arg)
318+ {
319+ for (size_t idx = 0 ; idx < DetectionEndCallbacks.size (); idx++)
320+ {
321+ if (DetectionEndCallbacks[idx] == callback && DetectionEndCallbackArgs[idx] == callback_arg)
322+ {
323+ DetectionEndCallbacks.erase (DetectionEndCallbacks.begin () + idx);
324+ DetectionEndCallbackArgs.erase (DetectionEndCallbackArgs.begin () + idx);
325+ }
326+ }
327+ }
328+
261329void ResourceManager::UpdateDeviceList ()
262330{
263331 DeviceListChangeMutex.lock ();
@@ -318,6 +386,8 @@ void ResourceManager::DeviceListChanged()
318386 /* -------------------------------------------------*\
319387 | Device list has changed, call the callbacks |
320388 \*-------------------------------------------------*/
389+ LOG_TRACE (" [ResourceManager] Calling device list change callbacks." );
390+
321391 for (unsigned int callback_idx = 0 ; callback_idx < DeviceListChangeCallbacks.size (); callback_idx++)
322392 {
323393 ResourceManager::DeviceListChangeCallbacks[callback_idx](DeviceListChangeCallbackArgs[callback_idx]);
@@ -331,6 +401,8 @@ void ResourceManager::DetectionProgressChanged()
331401 /* -------------------------------------------------*\
332402 | Detection progress has changed, call the callbacks|
333403 \*-------------------------------------------------*/
404+ LOG_TRACE (" [ResourceManager] Calling detection progress callbacks." );
405+
334406 for (unsigned int callback_idx = 0 ; callback_idx < DetectionProgressCallbacks.size (); callback_idx++)
335407 {
336408 DetectionProgressCallbacks[callback_idx](DetectionProgressCallbackArgs[callback_idx]);
@@ -569,6 +641,8 @@ void ResourceManager::DetectDevices()
569641 /* -----------------------------------------------------*\
570642 | Call detection start callbacks |
571643 \*-----------------------------------------------------*/
644+ LOG_TRACE (" [ResourceManager] Calling detection start callbacks." );
645+
572646 for (unsigned int callback_idx = 0 ; callback_idx < DetectionStartCallbacks.size (); callback_idx++)
573647 {
574648 DetectionStartCallbacks[callback_idx](DetectionStartCallbackArgs[callback_idx]);
0 commit comments