1 /*
2 * Copyright (c) 2023-2024 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: %{public}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: %{public}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 %{public}s, credentialInfo is %{public}s",
238 pkgName.c_str(), GetAnonyString(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 %{public}s, deleteInfo is %{public}s",
252 pkgName.c_str(), GetAnonyString(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::unordered_map<std::string, DmAuthForm> DeviceManagerServiceImpl::GetAppTrustDeviceIdList(
412 std::string pkgname)
413 {
414 (void)pkgname;
415 std::unordered_map<std::string, DmAuthForm> tmp;
416 return tmp;
417 }
418
OnUnbindSessionOpened(int32_t sessionId,PeerSocketInfo info)419 void DeviceManagerServiceImpl::OnUnbindSessionOpened(int32_t sessionId, PeerSocketInfo info)
420 {
421 (void)sessionId;
422 (void)info;
423 }
424
OnUnbindSessionCloseed(int32_t sessionId)425 void DeviceManagerServiceImpl::OnUnbindSessionCloseed(int32_t sessionId)
426 {
427 (void)sessionId;
428 }
429
OnUnbindBytesReceived(int32_t sessionId,const void * data,uint32_t dataLen)430 void DeviceManagerServiceImpl::OnUnbindBytesReceived(int32_t sessionId, const void *data, uint32_t dataLen)
431 {
432 (void)sessionId;
433 (void)data;
434 (void)dataLen;
435 }
436
LoadHardwareFwkService()437 void DeviceManagerServiceImpl::LoadHardwareFwkService()
438 {
439 }
440
DpAclAdd(const std::string & udid)441 int32_t DeviceManagerServiceImpl::DpAclAdd(const std::string &udid)
442 {
443 (void)udid;
444 return DM_OK;
445 }
446
IsSameAccount(const std::string & udid)447 int32_t DeviceManagerServiceImpl::IsSameAccount(const std::string &udid)
448 {
449 (void)udid;
450 return DM_OK;
451 }
452
AccountCommonEventCallback(int32_t userId,std::string commonEventType)453 void DeviceManagerServiceImpl::AccountCommonEventCallback(int32_t userId, std::string commonEventType)
454 {
455 (void)userId;
456 (void)commonEventType;
457 }
458
ScreenCommonEventCallback(std::string commonEventType)459 void DeviceManagerServiceImpl::ScreenCommonEventCallback(std::string commonEventType)
460 {
461 (void)commonEventType;
462 }
463
CheckIsSameAccount(const DmAccessCaller & caller,const std::string & srcUdid,const DmAccessCallee & callee,const std::string & sinkUdid)464 int32_t DeviceManagerServiceImpl::CheckIsSameAccount(const DmAccessCaller &caller, const std::string &srcUdid,
465 const DmAccessCallee &callee, const std::string &sinkUdid)
466 {
467 (void)caller;
468 (void)srcUdid;
469 (void)callee;
470 (void)sinkUdid;
471 return DM_OK;
472 }
473
CheckAccessControl(const DmAccessCaller & caller,const std::string & srcUdid,const DmAccessCallee & callee,const std::string & sinkUdid)474 int32_t DeviceManagerServiceImpl::CheckAccessControl(const DmAccessCaller &caller, const std::string &srcUdid,
475 const DmAccessCallee &callee, const std::string &sinkUdid)
476 {
477 (void)caller;
478 (void)srcUdid;
479 (void)callee;
480 (void)sinkUdid;
481 return DM_OK;
482 }
483
HandleDeviceNotTrust(const std::string & udid)484 void DeviceManagerServiceImpl::HandleDeviceNotTrust(const std::string &udid)
485 {
486 (void)udid;
487 return;
488 }
489
HandleIdentAccountLogout(const std::string & udid,int32_t userId,const std::string & accountId)490 void DeviceManagerServiceImpl::HandleIdentAccountLogout(const std::string &udid, int32_t userId,
491 const std::string &accountId)
492 {
493 (void)udid;
494 (void)userId;
495 (void)accountId;
496 }
497
HandleUserRemoved(int32_t preUserId)498 void DeviceManagerServiceImpl::HandleUserRemoved(int32_t preUserId)
499 {
500 (void)preUserId;
501 }
502
GetDeviceIdAndBindType(int32_t userId,const std::string & accountId)503 std::map<std::string, int32_t> DeviceManagerServiceImpl::GetDeviceIdAndBindType(int32_t userId,
504 const std::string &accountId)
505 {
506 (void)userId;
507 (void)accountId;
508 return std::map<std::string, int32_t> {};
509 }
510
StopAuthenticateDevice(const std::string & pkgName)511 int32_t DeviceManagerServiceImpl::StopAuthenticateDevice(const std::string &pkgName)
512 {
513 (void)pkgName;
514 return 0;
515 }
516
HandleDeviceScreenStatusChange(DmDeviceInfo & devInfo)517 void DeviceManagerServiceImpl::HandleDeviceScreenStatusChange(DmDeviceInfo &devInfo)
518 {
519 (void)devInfo;
520 return;
521 }
522
HandleCredentialAuthStatus(const std::string & proofInfo,uint16_t deviceTypeId,int32_t errcode)523 void DeviceManagerServiceImpl::HandleCredentialAuthStatus(const std::string &proofInfo, uint16_t deviceTypeId,
524 int32_t errcode)
525 {
526 (void)proofInfo;
527 (void)deviceTypeId;
528 (void)errcode;
529 return;
530 }
531
CreateDMServiceObject(void)532 extern "C" IDeviceManagerServiceImpl *CreateDMServiceObject(void)
533 {
534 return new DeviceManagerServiceImpl;
535 }
536 } // namespace DistributedHardware
537 } // namespace OHOS