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 "device_manager_service_impl_lite.h"
17
18 #include <functional>
19
20 #include "dm_anonymous.h"
21 #include "dm_constants.h"
22 #include "dm_log.h"
23 #include "app_manager.h"
24
25 namespace OHOS {
26 namespace DistributedHardware {
DeviceManagerServiceImpl()27 DeviceManagerServiceImpl::DeviceManagerServiceImpl()
28 {
29 LOGI("DeviceManagerServiceImpl constructor");
30 }
31
~DeviceManagerServiceImpl()32 DeviceManagerServiceImpl::~DeviceManagerServiceImpl()
33 {
34 LOGI("DeviceManagerServiceImpl destructor");
35 }
36
Initialize(const std::shared_ptr<IDeviceManagerServiceListener> & listener)37 int32_t DeviceManagerServiceImpl::Initialize(const std::shared_ptr<IDeviceManagerServiceListener> &listener)
38 {
39 LOGI("DeviceManagerServiceImpl Initialize");
40 if (softbusConnector_ == nullptr) {
41 softbusConnector_ = std::make_shared<SoftbusConnector>();
42 }
43 if (hiChainConnector_ == nullptr) {
44 hiChainConnector_ = std::make_shared<HiChainConnector>();
45 }
46 if (mineHiChainConnector_ == nullptr) {
47 mineHiChainConnector_ = std::make_shared<MineHiChainConnector>();
48 }
49 if (hiChainAuthConnector_ == nullptr) {
50 hiChainAuthConnector_ = std::make_shared<HiChainAuthConnector>();
51 }
52 if (deviceStateMgr_ == nullptr) {
53 deviceStateMgr_ = std::make_shared<DmDeviceStateManager>(softbusConnector_, listener,
54 hiChainConnector_, hiChainAuthConnector_);
55 }
56 if (credentialMgr_ == nullptr) {
57 credentialMgr_ = std::make_shared<DmCredentialManager>(hiChainConnector_, listener);
58 }
59
60 LOGI("Init success, singleton initialized");
61 return DM_OK;
62 }
63
Release()64 void DeviceManagerServiceImpl::Release()
65 {
66 LOGI("DeviceManagerServiceImpl Release");
67 deviceStateMgr_ = nullptr;
68 softbusConnector_ = nullptr;
69 hiChainConnector_ = nullptr;
70 mineHiChainConnector_ = nullptr;
71 }
72
StartDeviceDiscovery(const std::string & pkgName,const DmSubscribeInfo & subscribeInfo,const std::string & extra)73 int32_t DeviceManagerServiceImpl::StartDeviceDiscovery(const std::string &pkgName, const DmSubscribeInfo &subscribeInfo,
74 const std::string &extra)
75 {
76 (void)pkgName;
77 (void)subscribeInfo;
78 (void)extra;
79 return DM_OK;
80 }
81
StartDeviceDiscovery(const std::string & pkgName,const uint16_t subscribeId,const std::string & filterOptions)82 int32_t DeviceManagerServiceImpl::StartDeviceDiscovery(const std::string &pkgName, const uint16_t subscribeId,
83 const std::string &filterOptions)
84 {
85 (void)pkgName;
86 (void)subscribeId;
87 (void)filterOptions;
88 return DM_OK;
89 }
90
StopDeviceDiscovery(const std::string & pkgName,uint16_t subscribeId)91 int32_t DeviceManagerServiceImpl::StopDeviceDiscovery(const std::string &pkgName, uint16_t subscribeId)
92 {
93 (void)pkgName;
94 (void)subscribeId;
95 return DM_OK;
96 }
97
PublishDeviceDiscovery(const std::string & pkgName,const DmPublishInfo & publishInfo)98 int32_t DeviceManagerServiceImpl::PublishDeviceDiscovery(const std::string &pkgName, const DmPublishInfo &publishInfo)
99 {
100 (void)pkgName;
101 (void)publishInfo;
102 return DM_OK;
103 }
104
UnPublishDeviceDiscovery(const std::string & pkgName,int32_t publishId)105 int32_t DeviceManagerServiceImpl::UnPublishDeviceDiscovery(const std::string &pkgName, int32_t publishId)
106 {
107 (void)pkgName;
108 (void)publishId;
109 return DM_OK;
110 }
111
AuthenticateDevice(const std::string & pkgName,int32_t authType,const std::string & deviceId,const std::string & extra)112 int32_t DeviceManagerServiceImpl::AuthenticateDevice(const std::string &pkgName, int32_t authType,
113 const std::string &deviceId, const std::string &extra)
114 {
115 (void)pkgName;
116 (void)authType;
117 (void)deviceId;
118 (void)extra;
119 return DM_OK;
120 }
121
UnAuthenticateDevice(const std::string & pkgName,const std::string & networkId)122 int32_t DeviceManagerServiceImpl::UnAuthenticateDevice(const std::string &pkgName, const std::string &networkId)
123 {
124 (void)pkgName;
125 (void)networkId;
126 return DM_OK;
127 }
128
BindDevice(const std::string & pkgName,int32_t authType,const std::string & udidHash,const std::string & bindParam)129 int32_t DeviceManagerServiceImpl::BindDevice(const std::string &pkgName, int32_t authType, const std::string &udidHash,
130 const std::string &bindParam)
131 {
132 (void)pkgName;
133 (void)authType;
134 (void)udidHash;
135 (void)bindParam;
136 return DM_OK;
137 }
138
UnBindDevice(const std::string & pkgName,const std::string & udidHash)139 int32_t DeviceManagerServiceImpl::UnBindDevice(const std::string &pkgName, const std::string &udidHash)
140 {
141 (void)pkgName;
142 (void)udidHash;
143 return DM_OK;
144 }
145
SetUserOperation(std::string & pkgName,int32_t action,const std::string & params)146 int32_t DeviceManagerServiceImpl::SetUserOperation(std::string &pkgName, int32_t action,
147 const std::string ¶ms)
148 {
149 (void)pkgName;
150 (void)action;
151 (void)params;
152 return DM_OK;
153 }
154
HandleDeviceStatusChange(DmDeviceState devState,DmDeviceInfo & devInfo)155 void DeviceManagerServiceImpl::HandleDeviceStatusChange(DmDeviceState devState, DmDeviceInfo &devInfo)
156 {
157 if (deviceStateMgr_ == nullptr) {
158 LOGE("deviceStateMgr_ is nullpter!");
159 return;
160 }
161 std::string deviceId = GetUdidHashByNetworkId(devInfo.networkId);
162 if (memcpy_s(devInfo.deviceId, DM_MAX_DEVICE_ID_LEN, deviceId.c_str(), deviceId.length()) != 0) {
163 LOGE("get deviceId: %s failed", GetAnonyString(deviceId).c_str());
164 }
165 deviceStateMgr_->HandleDeviceStatusChange(devState, devInfo);
166 }
167
GetUdidHashByNetworkId(const std::string & networkId)168 std::string DeviceManagerServiceImpl::GetUdidHashByNetworkId(const std::string &networkId)
169 {
170 if (softbusConnector_ == nullptr) {
171 LOGE("softbusConnector_ is nullpter!");
172 return "";
173 }
174 std::string udid = "";
175 int32_t ret = softbusConnector_->GetUdidByNetworkId(networkId.c_str(), udid);
176 if (ret != DM_OK) {
177 LOGE("GetUdidByNetworkId failed ret: %d", ret);
178 return "";
179 }
180 return softbusConnector_->GetDeviceUdidHashByUdid(udid);
181 }
182
OnSessionOpened(int sessionId,int result)183 int DeviceManagerServiceImpl::OnSessionOpened(int sessionId, int result)
184 {
185 (void)sessionId;
186 (void)result;
187 return DM_OK;
188 }
189
OnSessionClosed(int sessionId)190 void DeviceManagerServiceImpl::OnSessionClosed(int sessionId)
191 {
192 (void)sessionId;
193 }
194
OnBytesReceived(int sessionId,const void * data,unsigned int dataLen)195 void DeviceManagerServiceImpl::OnBytesReceived(int sessionId, const void *data, unsigned int dataLen)
196 {
197 (void)sessionId;
198 (void)data;
199 (void)dataLen;
200 }
201
OnPinHolderSessionOpened(int sessionId,int result)202 int DeviceManagerServiceImpl::OnPinHolderSessionOpened(int sessionId, int result)
203 {
204 (void)sessionId;
205 (void)result;
206 return DM_OK;
207 }
208
OnPinHolderSessionClosed(int sessionId)209 void DeviceManagerServiceImpl::OnPinHolderSessionClosed(int sessionId)
210 {
211 (void)sessionId;
212 }
213
OnPinHolderBytesReceived(int sessionId,const void * data,unsigned int dataLen)214 void DeviceManagerServiceImpl::OnPinHolderBytesReceived(int sessionId, const void *data, unsigned int dataLen)
215 {
216 (void)sessionId;
217 (void)data;
218 (void)dataLen;
219 }
220
RequestCredential(const std::string & reqJsonStr,std::string & returnJsonStr)221 int32_t DeviceManagerServiceImpl::RequestCredential(const std::string &reqJsonStr, std::string &returnJsonStr)
222 {
223 if (reqJsonStr.empty()) {
224 LOGE("reqJsonStr is empty");
225 return ERR_DM_INPUT_PARA_INVALID;
226 }
227 if (credentialMgr_== nullptr) {
228 LOGE("credentialMgr_ is nullptr");
229 return ERR_DM_POINT_NULL;
230 }
231 return credentialMgr_->RequestCredential(reqJsonStr, returnJsonStr);
232 }
233
ImportCredential(const std::string & pkgName,const std::string & credentialInfo)234 int32_t DeviceManagerServiceImpl::ImportCredential(const std::string &pkgName, const std::string &credentialInfo)
235 {
236 if (pkgName.empty() || credentialInfo.empty()) {
237 LOGE("DeviceManagerServiceImpl::ImportCredential failed, pkgName is %s, credentialInfo is %s",
238 pkgName.c_str(), credentialInfo.c_str());
239 return ERR_DM_INPUT_PARA_INVALID;
240 }
241 if (credentialMgr_== nullptr) {
242 LOGE("credentialMgr_ is nullptr");
243 return ERR_DM_POINT_NULL;
244 }
245 return credentialMgr_->ImportCredential(pkgName, credentialInfo);
246 }
247
DeleteCredential(const std::string & pkgName,const std::string & deleteInfo)248 int32_t DeviceManagerServiceImpl::DeleteCredential(const std::string &pkgName, const std::string &deleteInfo)
249 {
250 if (pkgName.empty() || deleteInfo.empty()) {
251 LOGE("DeviceManagerServiceImpl::DeleteCredential failed, pkgName is %s, deleteInfo is %s",
252 pkgName.c_str(), deleteInfo.c_str());
253 return ERR_DM_INPUT_PARA_INVALID;
254 }
255 if (credentialMgr_== nullptr) {
256 LOGE("credentialMgr_ is nullptr");
257 return ERR_DM_POINT_NULL;
258 }
259 return credentialMgr_->DeleteCredential(pkgName, deleteInfo);
260 }
261
MineRequestCredential(const std::string & pkgName,std::string & returnJsonStr)262 int32_t DeviceManagerServiceImpl::MineRequestCredential(const std::string &pkgName, std::string &returnJsonStr)
263 {
264 (void)pkgName;
265 if (mineHiChainConnector_->RequestCredential(returnJsonStr) != DM_OK) {
266 LOGE("failed to get device credential from hichain");
267 return ERR_DM_HICHAIN_CREDENTIAL_REQUEST_FAILED;
268 }
269 return DM_OK;
270 }
271
CheckCredential(const std::string & pkgName,const std::string & reqJsonStr,std::string & returnJsonStr)272 int32_t DeviceManagerServiceImpl::CheckCredential(const std::string &pkgName, const std::string &reqJsonStr,
273 std::string &returnJsonStr)
274 {
275 (void)pkgName;
276 if (reqJsonStr.empty()) {
277 LOGE("reqJsonStr is empty");
278 return ERR_DM_INPUT_PARA_INVALID;
279 }
280 if (mineHiChainConnector_->CheckCredential(reqJsonStr, returnJsonStr) != DM_OK) {
281 LOGE("failed to check devices credential status");
282 return ERR_DM_HICHAIN_CREDENTIAL_CHECK_FAILED;
283 }
284 return DM_OK;
285 }
286
ImportCredential(const std::string & pkgName,const std::string & reqJsonStr,std::string & returnJsonStr)287 int32_t DeviceManagerServiceImpl::ImportCredential(const std::string &pkgName, const std::string &reqJsonStr,
288 std::string &returnJsonStr)
289 {
290 (void)pkgName;
291 if (reqJsonStr.empty()) {
292 LOGE("reqJsonStr is empty");
293 return ERR_DM_INPUT_PARA_INVALID;
294 }
295 if (mineHiChainConnector_->ImportCredential(reqJsonStr, returnJsonStr) != DM_OK) {
296 LOGE("failed to import devices credential");
297 return ERR_DM_HICHAIN_CREDENTIAL_IMPORT_FAILED;
298 }
299 return DM_OK;
300 }
301
DeleteCredential(const std::string & pkgName,const std::string & reqJsonStr,std::string & returnJsonStr)302 int32_t DeviceManagerServiceImpl::DeleteCredential(const std::string &pkgName, const std::string &reqJsonStr,
303 std::string &returnJsonStr)
304 {
305 (void)pkgName;
306 if (reqJsonStr.empty()) {
307 LOGE("reqJsonStr is empty");
308 return ERR_DM_INPUT_PARA_INVALID;
309 }
310 if (mineHiChainConnector_->DeleteCredential(reqJsonStr, returnJsonStr) != DM_OK) {
311 LOGE("failed to delete devices credential");
312 return ERR_DM_HICHAIN_CREDENTIAL_DELETE_FAILED;
313 }
314 return DM_OK;
315 }
316
RegisterCredentialCallback(const std::string & pkgName)317 int32_t DeviceManagerServiceImpl::RegisterCredentialCallback(const std::string &pkgName)
318 {
319 (void)pkgName;
320 return DM_OK;
321 }
322
UnRegisterCredentialCallback(const std::string & pkgName)323 int32_t DeviceManagerServiceImpl::UnRegisterCredentialCallback(const std::string &pkgName)
324 {
325 (void)pkgName;
326 return DM_OK;
327 }
328
RegisterUiStateCallback(const std::string & pkgName)329 int32_t DeviceManagerServiceImpl::RegisterUiStateCallback(const std::string &pkgName)
330 {
331 (void)pkgName;
332 return DM_OK;
333 }
334
UnRegisterUiStateCallback(const std::string & pkgName)335 int32_t DeviceManagerServiceImpl::UnRegisterUiStateCallback(const std::string &pkgName)
336 {
337 (void)pkgName;
338 return DM_OK;
339 }
340
NotifyEvent(const std::string & pkgName,const int32_t eventId,const std::string & event)341 int32_t DeviceManagerServiceImpl::NotifyEvent(const std::string &pkgName, const int32_t eventId,
342 const std::string &event)
343 {
344 (void)pkgName;
345 (void)eventId;
346 (void)event;
347 return DM_OK;
348 }
349
GetGroupType(std::vector<DmDeviceInfo> & deviceList)350 int32_t DeviceManagerServiceImpl::GetGroupType(std::vector<DmDeviceInfo> &deviceList)
351 {
352 (void)deviceList;
353 return DM_OK;
354 }
355
GetUdidHashByNetWorkId(const char * networkId,std::string & deviceId)356 int32_t DeviceManagerServiceImpl::GetUdidHashByNetWorkId(const char *networkId, std::string &deviceId)
357 {
358 (void)networkId;
359 (void)deviceId;
360 return DM_OK;
361 }
362
ImportAuthCode(const std::string & pkgName,const std::string & authCode)363 int32_t DeviceManagerServiceImpl::ImportAuthCode(const std::string &pkgName, const std::string &authCode)
364 {
365 (void)pkgName;
366 (void)authCode;
367 return DM_OK;
368 }
369
ExportAuthCode(std::string & authCode)370 int32_t DeviceManagerServiceImpl::ExportAuthCode(std::string &authCode)
371 {
372 (void)authCode;
373 return DM_OK;
374 }
375
RegisterPinHolderCallback(const std::string & pkgName)376 int32_t DeviceManagerServiceImpl::RegisterPinHolderCallback(const std::string &pkgName)
377 {
378 (void)pkgName;
379 return DM_OK;
380 }
381
CreatePinHolder(const std::string & pkgName,const PeerTargetId & targetId,DmPinType pinType,const std::string & payload)382 int32_t DeviceManagerServiceImpl::CreatePinHolder(const std::string &pkgName, const PeerTargetId &targetId,
383 DmPinType pinType, const std::string &payload)
384 {
385 (void)pkgName;
386 (void)targetId;
387 (void)pinType;
388 (void)payload;
389 return DM_OK;
390 }
391
DestroyPinHolder(const std::string & pkgName,const PeerTargetId & targetId,DmPinType pinType,const std::string & payload)392 int32_t DeviceManagerServiceImpl::DestroyPinHolder(const std::string &pkgName, const PeerTargetId &targetId,
393 DmPinType pinType, const std::string &payload)
394 {
395 (void)pkgName;
396 (void)targetId;
397 (void)pinType;
398 (void)payload;
399 return DM_OK;
400 }
401
BindTarget(const std::string & pkgName,const PeerTargetId & targetId,const std::map<std::string,std::string> & bindParam)402 int32_t DeviceManagerServiceImpl::BindTarget(const std::string &pkgName, const PeerTargetId &targetId,
403 const std::map<std::string, std::string> &bindParam)
404 {
405 (void)pkgName;
406 (void)targetId;
407 (void)bindParam;
408 return DM_OK;
409 }
410
GetAppTrustDeviceIdList(std::string pkgname)411 std::map<std::string, DmAuthForm> DeviceManagerServiceImpl::GetAppTrustDeviceIdList(std::string pkgname)
412 {
413 (void)pkgname;
414 std::map<std::string, DmAuthForm> tmp;
415 return tmp;
416 }
417
OnUnbindSessionOpened(int32_t sessionId,int32_t result)418 void DeviceManagerServiceImpl::OnUnbindSessionOpened(int32_t sessionId, int32_t result)
419 {
420 (void)sessionId;
421 (void)result;
422 }
423
OnUnbindSessionCloseed(int32_t sessionId)424 void DeviceManagerServiceImpl::OnUnbindSessionCloseed(int32_t sessionId)
425 {
426 (void)sessionId;
427 }
428
OnUnbindBytesReceived(int32_t sessionId,const void * data,uint32_t dataLen)429 void DeviceManagerServiceImpl::OnUnbindBytesReceived(int32_t sessionId, const void *data, uint32_t dataLen)
430 {
431 (void)sessionId;
432 (void)data;
433 (void)dataLen;
434 }
435
LoadHardwareFwkService()436 void DeviceManagerServiceImpl::LoadHardwareFwkService()
437 {
438 }
439
DpAclAdd(const std::string & udid)440 int32_t DeviceManagerServiceImpl::DpAclAdd(const std::string &udid)
441 {
442 (void)udid;
443 return DM_OK;
444 }
445
CreateDMServiceObject(void)446 extern "C" IDeviceManagerServiceImpl *CreateDMServiceObject(void)
447 {
448 return new DeviceManagerServiceImpl;
449 }
450 } // namespace DistributedHardware
451 } // namespace OHOS
452