xref: /ide/tools/previewer/util/ModelManager.cpp (revision 7c804472)
17c804472Sopenharmony_ci/*
27c804472Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
37c804472Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
47c804472Sopenharmony_ci * you may not use this file except in compliance with the License.
57c804472Sopenharmony_ci * You may obtain a copy of the License at
67c804472Sopenharmony_ci *
77c804472Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
87c804472Sopenharmony_ci *
97c804472Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
107c804472Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
117c804472Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
127c804472Sopenharmony_ci * See the License for the specific language governing permissions and
137c804472Sopenharmony_ci * limitations under the License.
147c804472Sopenharmony_ci */
157c804472Sopenharmony_ci
167c804472Sopenharmony_ci#include <sstream>
177c804472Sopenharmony_ci#include "ModelManager.h"
187c804472Sopenharmony_ci
197c804472Sopenharmony_ci#include "Interrupter.h"
207c804472Sopenharmony_ci#include "PreviewerEngineLog.h"
217c804472Sopenharmony_ci
227c804472Sopenharmony_cistd::vector<ModelConfig> ModelManager::configList = { // NOLINT
237c804472Sopenharmony_ci    {"liteWearable", "***", "***", "***", "***", 2},
247c804472Sopenharmony_ci    {"smartVision", "***", "***", "***", "***", 2},
257c804472Sopenharmony_ci};
267c804472Sopenharmony_ci
277c804472Sopenharmony_cistd::string ModelManager::currentDevice;
287c804472Sopenharmony_ci
297c804472Sopenharmony_cistd::string ModelManager::GetCurrentModel()
307c804472Sopenharmony_ci{
317c804472Sopenharmony_ci    return currentDevice;
327c804472Sopenharmony_ci}
337c804472Sopenharmony_ci
347c804472Sopenharmony_cistd::string ModelManager::GetAllModelName()
357c804472Sopenharmony_ci{
367c804472Sopenharmony_ci    std::ostringstream allNames;
377c804472Sopenharmony_ci    for (ModelConfig const& config : configList) {
387c804472Sopenharmony_ci        allNames << std::string(config.modelName);
397c804472Sopenharmony_ci        allNames << " ";
407c804472Sopenharmony_ci    }
417c804472Sopenharmony_ci    return allNames.str();
427c804472Sopenharmony_ci}
437c804472Sopenharmony_ci
447c804472Sopenharmony_civoid ModelManager::SetCurrentDevice(const std::string& value)
457c804472Sopenharmony_ci{
467c804472Sopenharmony_ci    currentDevice = value;
477c804472Sopenharmony_ci    ILOG("Start Simulator: %s", GetConfig().modelName.c_str());
487c804472Sopenharmony_ci}
497c804472Sopenharmony_ci
507c804472Sopenharmony_ci/*
517c804472Sopenharmony_ci * Get the model configuration based on the model name.
527c804472Sopenharmony_ci */
537c804472Sopenharmony_ciconst ModelConfig& ModelManager::GetConfig(std::string device)
547c804472Sopenharmony_ci{
557c804472Sopenharmony_ci    for (ModelConfig const& config : configList) {
567c804472Sopenharmony_ci        if (config.deviceType == device) {
577c804472Sopenharmony_ci            return config;
587c804472Sopenharmony_ci        }
597c804472Sopenharmony_ci    }
607c804472Sopenharmony_ci    FLOG("ModelManager::GetConfig current device model not exists. device : %s", currentDevice.c_str());
617c804472Sopenharmony_ci    Interrupter::Interrupt();
627c804472Sopenharmony_ci    return *configList.begin();
637c804472Sopenharmony_ci}
647c804472Sopenharmony_ci
657c804472Sopenharmony_ciconst ModelConfig& ModelManager::GetConfig()
667c804472Sopenharmony_ci{
677c804472Sopenharmony_ci    return GetConfig(currentDevice);
687c804472Sopenharmony_ci}
69