1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include <cerrno>
16 #include "hdf_base.h"
17 #include "intell_voice_log.h"
18 #include "engine_factory.h"
19 
20 #undef HDF_LOG_TAG
21 #define HDF_LOG_TAG "IntellVoiceEngineMgr"
22 
23 using namespace OHOS::HDI::IntelligentVoice::Engine::V1_0;
24 
25 namespace OHOS {
26 namespace IntelligentVoice {
27 namespace Engine {
28 class IntellVoiceEngineManager final : public IEngineManager {
29 public:
CreateAdapter(const IntellVoiceEngineAdapterDescriptor & descriptor,std::unique_ptr<IEngine> & engine)30     int32_t CreateAdapter(const IntellVoiceEngineAdapterDescriptor &descriptor,
31         std::unique_ptr<IEngine> &engine) override
32     {
33         INTELLIGENT_VOICE_LOGD("create adapter");
34         engine = EngineFactory::CreateEngine(descriptor.adapterType);
35         if (engine == nullptr) {
36             INTELLIGENT_VOICE_LOGE("failed to create engine");
37         }
38         return HDF_SUCCESS;
39     }
40 
ReleaseAdapter(const IntellVoiceEngineAdapterDescriptor & descriptor)41     int32_t ReleaseAdapter(const IntellVoiceEngineAdapterDescriptor &descriptor) override
42     {
43         INTELLIGENT_VOICE_LOGD("release adapter");
44         return HDF_SUCCESS;
45     }
46 
SetDataOprListener(std::shared_ptr<IDataOprListener> listener)47     int32_t SetDataOprListener(std::shared_ptr<IDataOprListener> listener) override
48     {
49         INTELLIGENT_VOICE_LOGD("enter");
50         return HDF_SUCCESS;
51     }
52 
GetUploadFiles(int32_t maxNum,std::vector<UploadHdiFile> & files)53     int32_t GetUploadFiles(int32_t maxNum, std::vector<UploadHdiFile> &files) override
54     {
55         INTELLIGENT_VOICE_LOGD("enter");
56         return HDF_SUCCESS;
57     }
58 
GetCloneFilesList(std::vector<std::string> & cloneFiles)59     int32_t GetCloneFilesList(std::vector<std::string> &cloneFiles) override
60     {
61         INTELLIGENT_VOICE_LOGD("enter");
62         return HDF_SUCCESS;
63     }
64 
GetCloneFile(const std::string & filePath,std::shared_ptr<uint8_t> & buffer,uint32_t & size)65     int32_t GetCloneFile(const std::string &filePath, std::shared_ptr<uint8_t> &buffer, uint32_t &size) override
66     {
67         INTELLIGENT_VOICE_LOGD("enter");
68         return HDF_SUCCESS;
69     }
70 
SendCloneFile(const std::string & filePath,const uint8_t * buffer,uint32_t size)71     int32_t SendCloneFile(const std::string &filePath, const uint8_t *buffer, uint32_t size) override
72     {
73         INTELLIGENT_VOICE_LOGD("enter");
74         return HDF_SUCCESS;
75     }
76 
ClearUserWakeupData(const std::string & wakeupPhrase)77     int32_t ClearUserWakeupData(const std::string &wakeupPhrase) override
78     {
79         INTELLIGENT_VOICE_LOGD("enter");
80         return HDF_SUCCESS;
81     }
82 
GetInstance()83     static IntellVoiceEngineManager *GetInstance()
84     {
85         static IntellVoiceEngineManager manager;
86         return &manager;
87     }
88 
89 private:
IntellVoiceEngineManager()90     IntellVoiceEngineManager(){};
~IntellVoiceEngineManager()91     ~IntellVoiceEngineManager(){};
92 };
93 }
94 }
95 }
96 
97 #ifdef __cplusplus
98 extern "C" {
99 #endif
100 
GetIntellVoiceEngineManagerHalInst(void)101 __attribute__((visibility("default"))) OHOS::IntelligentVoice::Engine::IEngineManager *GetIntellVoiceEngineManagerHalInst(void)
102 {
103     INTELLIGENT_VOICE_LOGD("enter to engine manager stub");
104     return OHOS::IntelligentVoice::Engine::IntellVoiceEngineManager::GetInstance();
105 }
106 
107 #ifdef __cplusplus
108 }
109 #endif
110