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