DevMgr: Add methods to print the parsed devSpecs

This commit is contained in:
2025-01-07 14:14:24 -04:00
parent 42413d1cc6
commit 54de145b2d
+33 -22
View File
@@ -5,31 +5,42 @@
#include <vector>
#include <sstream>
#include <opts.h>
#include <deviceManager/deviceSpecParser.h>
#include <deviceManager/deviceManager.h>
void DeviceManager::handleDeviceSpecifiers(const OptionParser& options)
std::vector<DeviceManager::InteroceptorDeviceSpec>
DeviceManager::interoceptorDeviceSpecs;
std::vector<DeviceManager::ExtrospectorDeviceSpec>
DeviceManager::extrospectorDeviceSpecs;
std::ostream& operator<<(
std::ostream& os, const DeviceManager::SensorDeviceSpec& spec)
{
std::vector<std::string> deviceStrings;
deviceStrings.insert(deviceStrings.end(), options.extro.begin(),
options.extro.end());
deviceStrings.insert(deviceStrings.end(), options.intero.begin(),
options.intero.end());
deviceStrings.insert(deviceStrings.end(), options.actuator.begin(),
options.actuator.end());
for (const auto& file : options.deviceSpecFiles) {
std::vector<std::string> fileDeviceStrings = readDeviceFile(file);
deviceStrings.insert(deviceStrings.end(), fileDeviceStrings.begin(),
fileDeviceStrings.end());
os << "Device: " << spec.sensorType << ", Implexor: "
<< spec.implexor << ", API: " << spec.api
<< ", API Params: (";
for (auto it = spec.apiParams.begin(); it != spec.apiParams.end(); ++it) {
os << *it << (it + 1 == spec.apiParams.end() ? "" : " ");
}
std::vector<std::pair<std::string, std::string>> deviceSpecifiers =
parseDeviceSpecifiers(deviceStrings);
// Use deviceSpecifiers with the device manager
for (const auto& specifier : deviceSpecifiers) {
std::cout << "Device: " << specifier.first << ", Specifier: "
<< specifier.second << std::endl;
os << "), Server: " << spec.server << ", Server Params: (";
for (auto it = spec.serverParams.begin(); it != spec.serverParams.end(); ++it) {
os << *it << (it + 1 == spec.serverParams.end() ? "" : " ");
}
os << "), Device Selector: " << spec.deviceSelector << std::endl;
return os;
}
const std::string DeviceManager::printDeviceSpecs(void)
{
std::ostringstream oss;
for (const auto& spec : DeviceManager::interoceptorDeviceSpecs) {
oss << "Interoceptor " << spec;
}
for (const auto& spec : DeviceManager::extrospectorDeviceSpecs) {
oss << "Extrospector " << spec;
}
return oss.str();
}