#pragma once #include #include #include #include "IOThread.h" #include "SDRDeviceInfo.h" #include "AppConfig.h" #include #include #include #include class SDREnumerator: public IOThread { private: public: SDREnumerator(); ~SDREnumerator(); enum SDREnumState { SDR_ENUM_DEVICES_READY, SDR_ENUM_MESSAGE, SDR_ENUM_TERMINATED, SDR_ENUM_FAILED }; static std::vector *enumerate_devices(std::string remoteAddr = "", bool noInit=false); void run(); static void addRemote(std::string remoteAddr); static void removeRemote(std::string remoteAddr); static std::vector &getRemotes(); static bool hasRemoteModule(); protected: static bool soapy_initialized, has_remote; static std::vector factories; static std::vector modules; static std::vector remotes; static std::map< std::string, std::vector > devs; };