#ifndef SENSORDEVICESPEC_H #define SENSORDEVICESPEC_H #include #include #include #include namespace smo { namespace device { class SenseDeviceSpec { public: friend std::ostream& operator<<( std::ostream& os, const SenseDeviceSpec& spec) { os << spec.stringify(); return os; } bool operator==(const SenseDeviceSpec& other) const { return sensorType == other.sensorType && provider == other.provider && deviceSelector == other.deviceSelector; } public: char sensorType; std::string implexor; std::string api; std::vector> apiParams; std::string provider; std::vector> providerParams; std::string deviceSelector; std::string stringify() const { std::ostringstream os; os << "Device: " << sensorType << ", Implexor: " << implexor << ", API: " << api << ", API Params: ("; for (const auto& param : apiParams) { os << param.first; if (!param.second.empty()) { os << "=" << param.second; } os << " "; } os << "), Provider: " << provider << ", Provider Params: ("; for (const auto& param : providerParams) { os << param.first; if (!param.second.empty()) { os << "=" << param.second; } os << " "; } os << "), Device Selector: " << deviceSelector << std::endl; return os.str(); } }; class InteroceptorDeviceSpec : public SenseDeviceSpec { }; class ExtrospectorDeviceSpec : public SenseDeviceSpec { }; } // namespace device } // namespace smo #endif // SENSORDEVICESPEC_H