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