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
16 #include "trigger_service.h"
17
18 #include <malloc.h>
19
20 #include "intell_voice_log.h"
21
22 #define LOG_TAG "TriggerService"
23 using namespace std;
24
25 namespace OHOS {
26 namespace IntellVoiceTrigger {
TriggerService()27 TriggerService::TriggerService()
28 {
29 triggerHelper_ = TriggerHelper::Create();
30 if (triggerHelper_ == nullptr) {
31 INTELL_VOICE_LOG_ERROR("triggerHelper_ is nullptr");
32 }
33 }
34
~TriggerService()35 TriggerService::~TriggerService()
36 {}
37
UpdateGenericTriggerModel(std::shared_ptr<GenericTriggerModel> model)38 void TriggerService::UpdateGenericTriggerModel(std::shared_ptr<GenericTriggerModel> model)
39 {
40 INTELL_VOICE_LOG_INFO("enter");
41 if (model == nullptr) {
42 INTELL_VOICE_LOG_ERROR("trigger model is null");
43 return;
44 }
45
46 if (!TriggerDbHelper::GetInstance().UpdateGenericTriggerModel(model)) {
47 INTELL_VOICE_LOG_ERROR("failed to update generic model");
48 }
49 }
50
DeleteGenericTriggerModel(int32_t uuid)51 void TriggerService::DeleteGenericTriggerModel(int32_t uuid)
52 {
53 INTELL_VOICE_LOG_INFO("enter");
54 TriggerDbHelper::GetInstance().DeleteGenericTriggerModel(uuid);
55 }
56
GetGenericTriggerModel(int32_t uuid)57 std::shared_ptr<GenericTriggerModel> TriggerService::GetGenericTriggerModel(int32_t uuid)
58 {
59 INTELL_VOICE_LOG_INFO("enter");
60 auto model = TriggerDbHelper::GetInstance().GetGenericTriggerModel(uuid);
61 if (model == nullptr) {
62 INTELL_VOICE_LOG_ERROR("failed to get generic trigger model");
63 return nullptr;
64 }
65
66 return model;
67 }
68
StartRecognition(int32_t uuid,std::shared_ptr<IIntellVoiceTriggerRecognitionCallback> callback)69 int32_t TriggerService::StartRecognition(
70 int32_t uuid, std::shared_ptr<IIntellVoiceTriggerRecognitionCallback> callback)
71 {
72 if (triggerHelper_ == nullptr) {
73 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
74 return -1;
75 }
76
77 auto model = GetGenericTriggerModel(uuid);
78 if (model == nullptr) {
79 INTELL_VOICE_LOG_ERROR("trigger model is nullptr, uuid:%{public}d", uuid);
80 return -1;
81 }
82
83 return triggerHelper_->StartGenericRecognition(uuid, model, callback);
84 }
85
StopRecognition(int32_t uuid,std::shared_ptr<IIntellVoiceTriggerRecognitionCallback> callback)86 int32_t TriggerService::StopRecognition(int32_t uuid, std::shared_ptr<IIntellVoiceTriggerRecognitionCallback> callback)
87 {
88 if (triggerHelper_ == nullptr) {
89 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
90 return -1;
91 }
92 return triggerHelper_->StopGenericRecognition(uuid, callback);
93 }
94
UnloadTriggerModel(int32_t uuid)95 void TriggerService::UnloadTriggerModel(int32_t uuid)
96 {
97 if (triggerHelper_ == nullptr) {
98 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
99 return;
100 }
101
102 triggerHelper_->UnloadGenericTriggerModel(uuid);
103 }
104
SetParameter(const std::string & key,const std::string & value)105 int32_t TriggerService::SetParameter(const std::string &key, const std::string &value)
106 {
107 if (triggerHelper_ == nullptr) {
108 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
109 return -1;
110 }
111
112 return triggerHelper_->SetParameter(key, value);
113 }
114
GetParameter(const std::string & key)115 std::string TriggerService::GetParameter(const std::string &key)
116 {
117 if (triggerHelper_ == nullptr) {
118 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
119 return "";
120 }
121
122 return triggerHelper_->GetParameter(key);
123 }
124
125 #ifdef SUPPORT_TELEPHONY_SERVICE
AttachTelephonyObserver()126 void TriggerService::AttachTelephonyObserver()
127 {
128 if (triggerHelper_ == nullptr) {
129 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
130 return;
131 }
132 triggerHelper_->AttachTelephonyObserver();
133 }
134
DetachTelephonyObserver()135 void TriggerService::DetachTelephonyObserver()
136 {
137 if (triggerHelper_ == nullptr) {
138 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
139 return;
140 }
141 triggerHelper_->DetachTelephonyObserver();
142 }
143 #endif
144
AttachAudioCaptureListener()145 void TriggerService::AttachAudioCaptureListener()
146 {
147 if (triggerHelper_ == nullptr) {
148 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
149 return;
150 }
151 triggerHelper_->AttachAudioCaptureListener();
152 }
153
DetachAudioCaptureListener()154 void TriggerService::DetachAudioCaptureListener()
155 {
156 if (triggerHelper_ == nullptr) {
157 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
158 return;
159 }
160 triggerHelper_->DetachAudioCaptureListener();
161 }
162
AttachAudioRendererEventListener()163 void TriggerService::AttachAudioRendererEventListener()
164 {
165 if (triggerHelper_ == nullptr) {
166 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
167 return;
168 }
169 triggerHelper_->AttachAudioRendererEventListener();
170 }
171
DetachAudioRendererEventListener()172 void TriggerService::DetachAudioRendererEventListener()
173 {
174 if (triggerHelper_ == nullptr) {
175 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
176 return;
177 }
178 triggerHelper_->DetachAudioRendererEventListener();
179 }
180
AttachAudioSceneEventListener()181 void TriggerService::AttachAudioSceneEventListener()
182 {
183 if (triggerHelper_ == nullptr) {
184 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
185 return;
186 }
187 triggerHelper_->AttachAudioSceneEventListener();
188 }
189
DetachAudioSceneEventListener()190 void TriggerService::DetachAudioSceneEventListener()
191 {
192 if (triggerHelper_ == nullptr) {
193 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
194 return;
195 }
196 triggerHelper_->DetachAudioSceneEventListener();
197 }
198
199 #ifdef POWER_MANAGER_ENABLE
AttachHibernateObserver()200 void TriggerService::AttachHibernateObserver()
201 {
202 if (triggerHelper_ == nullptr) {
203 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
204 return;
205 }
206 triggerHelper_->AttachHibernateObserver();
207 }
208
DetachHibernateObserver()209 void TriggerService::DetachHibernateObserver()
210 {
211 if (triggerHelper_ == nullptr) {
212 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
213 return;
214 }
215 triggerHelper_->DetachHibernateObserver();
216 }
217 #endif
218
219 #ifdef SUPPORT_WINDOW_MANAGER
AttachFoldStatusListener()220 void TriggerService::AttachFoldStatusListener()
221 {
222 if (triggerHelper_ == nullptr) {
223 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
224 return;
225 }
226 triggerHelper_->AttachFoldStatusListener();
227 }
228
DetachFoldStatusListener()229 void TriggerService::DetachFoldStatusListener()
230 {
231 if (triggerHelper_ == nullptr) {
232 INTELL_VOICE_LOG_ERROR("trigger helper is nullptr");
233 return;
234 }
235 triggerHelper_->DetachFoldStatusListener();
236 }
237 #endif
238 } // namespace IntellVoiceTrigger
239 } // namespace OHOS
240