#ifndef LOGID_DEVICEFINDER_H #define LOGID_DEVICEFINDER_H #include #include #include #include #include #include #include #include #include "Device.h" #define MAX_CONNECTION_TRIES 10 #define TIME_BETWEEN_CONNECTION_TRIES 500ms namespace logid { class Device; struct ConnectedDevice { Device *device; std::thread associatedThread; }; class DeviceFinder : public HID::DeviceMonitor { public: ~DeviceFinder(); Device* insertNewDevice (const std::string &path, HIDPP::DeviceIndex index); Device* insertNewReceiverDevice (const std::string &path, HIDPP::DeviceIndex index); void stopAndDeleteAllDevicesIn (const std::string &path); void stopAndDeleteDevice (const std::string &path, HIDPP::DeviceIndex index); protected: void addDevice(const char* path); void removeDevice(const char* path); private: std::mutex devices_mutex; std::map> devices; }; extern DeviceFinder* finder; } #endif //LOGID_DEVICEFINDER_H