10485dae0Sopenharmony_ci/* 20485dae0Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 30485dae0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 40485dae0Sopenharmony_ci * you may not use this file except in compliance with the License. 50485dae0Sopenharmony_ci * You may obtain a copy of the License at 60485dae0Sopenharmony_ci * 70485dae0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 80485dae0Sopenharmony_ci * 90485dae0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 100485dae0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 110485dae0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120485dae0Sopenharmony_ci * See the License for the specific language governing permissions and 130485dae0Sopenharmony_ci * limitations under the License. 140485dae0Sopenharmony_ci */ 150485dae0Sopenharmony_ci 160485dae0Sopenharmony_ci#ifndef PLUGIN_H 170485dae0Sopenharmony_ci#define PLUGIN_H 180485dae0Sopenharmony_ci 190485dae0Sopenharmony_ci#include <string> 200485dae0Sopenharmony_ci 210485dae0Sopenharmony_ci#include "plugin/i_plugin.h" 220485dae0Sopenharmony_ci 230485dae0Sopenharmony_cinamespace OHOS { 240485dae0Sopenharmony_cinamespace AI { 250485dae0Sopenharmony_ciclass Plugin { 260485dae0Sopenharmony_cipublic: 270485dae0Sopenharmony_ci /** 280485dae0Sopenharmony_ci * Initialize plugin 290485dae0Sopenharmony_ci * 300485dae0Sopenharmony_ci * @param [in] aid Algorithm id 310485dae0Sopenharmony_ci * @param [in] version Algorithm version 320485dae0Sopenharmony_ci */ 330485dae0Sopenharmony_ci Plugin(const std::string &aid, long long version); 340485dae0Sopenharmony_ci 350485dae0Sopenharmony_ci /** 360485dae0Sopenharmony_ci * Destructor of plugin 370485dae0Sopenharmony_ci */ 380485dae0Sopenharmony_ci virtual ~Plugin(); 390485dae0Sopenharmony_ci 400485dae0Sopenharmony_ci /** 410485dae0Sopenharmony_ci * Get algorithm of plugin 420485dae0Sopenharmony_ci * 430485dae0Sopenharmony_ci * @return Algorithm handler 440485dae0Sopenharmony_ci */ 450485dae0Sopenharmony_ci IPlugin *GetPluginAlgorithm(); 460485dae0Sopenharmony_ci 470485dae0Sopenharmony_ci /** 480485dae0Sopenharmony_ci * Set algorithm of plugin 490485dae0Sopenharmony_ci * 500485dae0Sopenharmony_ci * @param [in] pluginAlgorithm Algorithm handler 510485dae0Sopenharmony_ci */ 520485dae0Sopenharmony_ci void SetPluginAlgorithm(IPlugin *pluginAlgorithm); 530485dae0Sopenharmony_ci 540485dae0Sopenharmony_ci /** 550485dae0Sopenharmony_ci * Load algorithm 560485dae0Sopenharmony_ci * 570485dae0Sopenharmony_ci * @return Returns RETCODE_SUCCESS(0) if the operation is successful, returns a non-zero value otherwise. 580485dae0Sopenharmony_ci */ 590485dae0Sopenharmony_ci int LoadPluginAlgorithm(); 600485dae0Sopenharmony_ci 610485dae0Sopenharmony_ci /** 620485dae0Sopenharmony_ci * Unload algorithm 630485dae0Sopenharmony_ci */ 640485dae0Sopenharmony_ci void UnloadPluginAlgorithm(); 650485dae0Sopenharmony_ci 660485dae0Sopenharmony_ci /** 670485dae0Sopenharmony_ci * Get algorithm version 680485dae0Sopenharmony_ci * 690485dae0Sopenharmony_ci * @return Algorithm version 700485dae0Sopenharmony_ci */ 710485dae0Sopenharmony_ci long long GetVersion() const; 720485dae0Sopenharmony_ci 730485dae0Sopenharmony_ci /** 740485dae0Sopenharmony_ci * Get algorithm id 750485dae0Sopenharmony_ci * 760485dae0Sopenharmony_ci * @return Algorithm id 770485dae0Sopenharmony_ci */ 780485dae0Sopenharmony_ci std::string GetAid() const; 790485dae0Sopenharmony_ci 800485dae0Sopenharmony_ciprivate: 810485dae0Sopenharmony_ci IPlugin *pluginAlgorithm_ {nullptr}; 820485dae0Sopenharmony_ci std::string aid_ {""}; 830485dae0Sopenharmony_ci long long version_ {0}; 840485dae0Sopenharmony_ci void *handle_ {nullptr}; 850485dae0Sopenharmony_ci}; 860485dae0Sopenharmony_ci} // namespace AI 870485dae0Sopenharmony_ci} // namespace OHOS 880485dae0Sopenharmony_ci 890485dae0Sopenharmony_ci#endif // PLUGIN_H