#include "device_holder.h" #include "barrier/generic_barrier.h" #include "platform_scale/generic_platform_scale.h" #include "sound_column/generic_sound_column.h" // #include "vidicon/generic_vidicon.h" #include "vidicon/barrier_vidicon.h" namespace zsy { void DeviceHolder::initBarriers(std::vector &configs) { for (auto &config: configs) { barriers.emplace(config.sn, std::make_shared(config)); auto &map = relation[config.sn]; map.emplace("platformScale", config.platformScale); map.emplace("soundColumn", config.soundColumn); map.emplace("vidicon", config.vidicon); } } void DeviceHolder::initPlatformScales(std::vector &configs) { for (auto &config: configs) { platformScales.emplace(config.sn, std::make_shared(config)); } } void DeviceHolder::initSoundColumns(std::vector &configs) { for (auto &config: configs) { soundColumns.emplace(config.sn, std::make_shared(config)); } } void DeviceHolder::initVidicons(std::vector &configs) { for (auto &config: configs) { // vidicons.emplace(config.sn, std::make_shared(config)); vidicons.emplace(config.sn, std::make_shared(config)); } } DeviceHolder::DeviceHolder(const nlohmann::json &config) { LOGGER_INFO("正在初始化设备..."); auto deviceConfig = config.get(); initBarriers(deviceConfig.barriers); initPlatformScales(deviceConfig.platformScales); initSoundColumns(deviceConfig.soundColumns); initVidicons(deviceConfig.vidicons); LOGGER_INFO("设备初始化完成"); } std::shared_ptr DeviceHolder::getBarrier(const std::string &barrier_sn) { return barriers.contains(barrier_sn) ? barriers.at(barrier_sn) : nullptr; } std::shared_ptr DeviceHolder::getPlatformScale(const std::string &barrier_sn) { if (!relation.contains(barrier_sn)) return nullptr; auto map = relation.at(barrier_sn); if (!map.contains("platformScale")) return nullptr; auto sn = map.at("platformScale"); return platformScales.contains(sn) ? platformScales.at(sn) : nullptr; } std::shared_ptr DeviceHolder::getSoundColumn(const std::string &barrier_sn) { if (!relation.contains(barrier_sn)) return nullptr; auto map = relation.at(barrier_sn); if (!map.contains("soundColumn")) return nullptr; auto sn = map.at("soundColumn"); return soundColumns.contains(sn) ? soundColumns.at(sn) : nullptr; } std::shared_ptr DeviceHolder::getVidicon(const std::string &barrier_sn) { if (!relation.contains(barrier_sn)) return nullptr; auto map = relation.at(barrier_sn); if (!map.contains("vidicon")) return nullptr; auto sn = map.at("vidicon"); return vidicons.contains(sn) ? vidicons.at(sn) : nullptr; } } // zsy