#ifndef DEVICEMANAGER_H #define DEVICEMANAGER_H #include #include #include #include #include #include #include #include #include namespace smo { namespace device { class DeviceManager { public: static DeviceManager& getInstance() { static DeviceManager instance; return instance; } void initialize(void) {}; void finalize(void) {}; std::string readDapSpecFile(const std::string& filename); void collateAllDapSpecs(void); void parseAllDapSpecs(void); static const std::string stringifyDeviceSpecs(void); // New async function for device attachment typedef std::function device, std::shared_ptr deviceSpec)> newDeviceAttachmentSpecIndCbFn; void newDeviceAttachmentSpecInd( std::shared_ptr spec, newDeviceAttachmentSpecIndCbFn callback); private: DeviceManager() = default; ~DeviceManager() = default; DeviceManager(const DeviceManager&) = delete; DeviceManager& operator=(const DeviceManager&) = delete; public: std::string allDapSpecs; static std::vector> interoceptorDeviceSpecs; static std::vector> extrospectorDeviceSpecs; static std::vector> deviceAttachmentSpecs; static std::vector> devices; private: class NewDeviceAttachmentSpecInd; }; } // namespace device } // namespace smo #endif // DEVICEMANAGER_H