1 /* 2 * Copyright (c) 2022-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 #ifndef OHOS_DEVICE_MANAGER_IMPL_H 17 #define OHOS_DEVICE_MANAGER_IMPL_H 18 19 #include "device_manager.h" 20 #if !defined(__LITEOS_M__) 21 #include "ipc_client_manager.h" 22 #include "ipc_client_proxy.h" 23 #endif 24 #include <map> 25 #include <mutex> 26 27 namespace OHOS { 28 namespace DistributedHardware { 29 class DeviceManagerImpl : public DeviceManager { 30 public: 31 static DeviceManagerImpl &GetInstance(); 32 33 public: 34 /** 35 * @tc.name: DeviceManagerImpl::InitDeviceManager 36 * @tc.desc: Initialize DeviceManager 37 * @tc.type: FUNC 38 */ 39 virtual int32_t InitDeviceManager(const std::string &pkgName, 40 std::shared_ptr<DmInitCallback> dmInitCallback) override; 41 /** 42 * @tc.name: DeviceManagerImpl::UnInitDeviceManager 43 * @tc.desc: UnInitialize DeviceManager 44 * @tc.type: FUNC 45 */ 46 virtual int32_t UnInitDeviceManager(const std::string &pkgName) override; 47 /** 48 * @tc.name: DeviceManagerImpl::GetTrustedDeviceList 49 * @tc.desc: Get device list of trusted devices 50 * @tc.type: FUNC 51 */ 52 virtual int32_t GetTrustedDeviceList(const std::string &pkgName, const std::string &extra, 53 std::vector<DmDeviceInfo> &deviceList) override; 54 /** 55 * @tc.name: DeviceManagerImpl::GetTrustedDeviceList 56 * @tc.desc: Get device list of trusted devices 57 * @tc.type: FUNC 58 */ 59 virtual int32_t GetTrustedDeviceList(const std::string &pkgName, const std::string &extra, 60 bool isRefresh, std::vector<DmDeviceInfo> &deviceList) override; 61 /** 62 * @tc.name: DeviceManagerImpl::GetAvailableDeviceList 63 * @tc.desc: Get device list of trusted devices 64 * @tc.type: FUNC 65 */ 66 virtual int32_t GetAvailableDeviceList(const std::string &pkgName, 67 std::vector<DmDeviceBasicInfo> &deviceList) override; 68 /** 69 * @tc.name: DeviceManagerImpl::GetLocalDeviceInfo 70 * @tc.desc: Get local device information 71 * @tc.type: FUNC 72 */ 73 virtual int32_t GetLocalDeviceInfo(const std::string &pkgName, DmDeviceInfo &info) override; 74 /** 75 * @tc.name: DeviceManagerImpl::GetDeviceInfo 76 * @tc.desc: Get local device information by networkId 77 * @tc.type: FUNC 78 */ 79 virtual int32_t GetDeviceInfo(const std::string &pkgName, const std::string networkId, 80 DmDeviceInfo &deviceInfo) override; 81 /** 82 * @tc.name: DeviceManagerImpl::RegisterDevStateCallback 83 * @tc.desc: Register device development status callback 84 * @tc.type: FUNC 85 */ 86 virtual int32_t RegisterDevStateCallback(const std::string &pkgName, const std::string &extra, 87 std::shared_ptr<DeviceStateCallback> callback) override; 88 /** 89 * @tc.name: DeviceManagerImpl::RegisterDevStatusCallback 90 * @tc.desc: Register device development status callback 91 * @tc.type: FUNC 92 */ 93 virtual int32_t RegisterDevStatusCallback(const std::string &pkgName, const std::string &extra, 94 std::shared_ptr<DeviceStatusCallback> callback) override; 95 /** 96 * @tc.name: DeviceManagerImpl::UnRegisterDevStateCallback 97 * @tc.desc: UnRegister device development status callback 98 * @tc.type: FUNC 99 */ 100 virtual int32_t UnRegisterDevStateCallback(const std::string &pkgName) override; 101 /** 102 * @tc.name: DeviceManagerImpl::UnRegisterDevStatusCallback 103 * @tc.desc: UnRegister device development status callback 104 * @tc.type: FUNC 105 */ 106 virtual int32_t UnRegisterDevStatusCallback(const std::string &pkgName) override; 107 /** 108 * @tc.name: DeviceManagerImpl::StartDeviceDiscovery 109 * @tc.desc: Initiate device discovery 110 * @tc.type: FUNC 111 */ 112 virtual int32_t StartDeviceDiscovery(const std::string &pkgName, const DmSubscribeInfo &subscribeInfo, 113 const std::string &extra, 114 std::shared_ptr<DiscoveryCallback> callback) override; 115 /** 116 * @tc.name: DeviceManagerImpl::StartDeviceDiscovery 117 * @tc.desc: Initiate device discovery 118 * @tc.type: FUNC 119 */ 120 virtual int32_t StartDeviceDiscovery(const std::string &pkgName, uint64_t tokenId, 121 const std::string &filterOptions, 122 std::shared_ptr<DiscoveryCallback> callback) override; 123 /** 124 * @tc.name: DeviceManagerImpl::StopDeviceDiscovery 125 * @tc.desc: Stop device discovery 126 * @tc.type: FUNC 127 */ 128 virtual int32_t StopDeviceDiscovery(const std::string &pkgName, uint16_t subscribeId) override; 129 /** 130 * @brief Stop device discovery. 131 * @param pkgName package name. 132 * @param tokenId app flag to discovery device. 133 * @return Returns 0 if success. 134 */ 135 virtual int32_t StopDeviceDiscovery(uint64_t tokenId, const std::string &pkgName) override; 136 /** 137 * @tc.name: DeviceManagerImpl::PublishDeviceDiscovery 138 * @tc.desc: Publish device discovery 139 * @tc.type: FUNC 140 */ 141 virtual int32_t PublishDeviceDiscovery(const std::string &pkgName, const DmPublishInfo &publishInfo, 142 std::shared_ptr<PublishCallback> callback) override; 143 /** 144 * @tc.name: DeviceManagerImpl::UnPublishDeviceDiscovery 145 * @tc.desc: UnPublish device discovery 146 * @tc.type: FUNC 147 */ 148 virtual int32_t UnPublishDeviceDiscovery(const std::string &pkgName, int32_t publishId) override; 149 /** 150 * @tc.name: DeviceManagerImpl::AuthenticateDevice 151 * @tc.desc: Complete verifying the device 152 * @tc.type: FUNC 153 */ 154 virtual int32_t AuthenticateDevice(const std::string &pkgName, int32_t authType, const DmDeviceInfo &deviceInfo, 155 const std::string &extra, 156 std::shared_ptr<AuthenticateCallback> callback) override; 157 /** 158 * @tc.name: DeviceManagerImpl::UnAuthenticateDevice 159 * @tc.desc: Cancel complete verification of device 160 * @tc.type: FUNC 161 */ 162 virtual int32_t UnAuthenticateDevice(const std::string &pkgName, const DmDeviceInfo &deviceInfo) override; 163 /** 164 * @tc.name: DeviceManagerImpl::VerifyAuthentication 165 * @tc.desc: Verify device authentication 166 * @tc.type: FUNC 167 */ 168 virtual int32_t VerifyAuthentication(const std::string &pkgName, const std::string &authPara, 169 std::shared_ptr<VerifyAuthCallback> callback) override; 170 /** 171 * @tc.name: DeviceManagerImpl::RegisterDeviceManagerFaCallback 172 * @tc.desc: Register Fa callback for device manager 173 * @tc.type: FUNC 174 */ 175 virtual int32_t RegisterDeviceManagerFaCallback(const std::string &pkgName, 176 std::shared_ptr<DeviceManagerUiCallback> callback) override; 177 /** 178 * @tc.name: DeviceManagerImpl::UnRegisterDeviceManagerFaCallback 179 * @tc.desc: Unregister Fa callback for device manager 180 * @tc.type: FUNC 181 */ 182 virtual int32_t UnRegisterDeviceManagerFaCallback(const std::string &pkgName) override; 183 /** 184 * @tc.name: DeviceManagerImpl::GetFaParam 185 * @tc.desc: Get Fa Param 186 * @tc.type: FUNC 187 */ 188 virtual int32_t GetFaParam(const std::string &pkgName, DmAuthParam &dmFaParam) override; 189 /** 190 * @tc.name: DeviceManagerImpl::SetUserOperation 191 * @tc.desc: Set User Actions 192 * @tc.type: FUNC 193 */ 194 virtual int32_t SetUserOperation(const std::string &pkgName, int32_t action, const std::string ¶ms) override; 195 /** 196 * @tc.name: DeviceManagerImpl::GetUdidByNetworkId 197 * @tc.desc: Get Udid by NetworkId 198 * @tc.type: FUNC 199 */ 200 virtual int32_t GetUdidByNetworkId(const std::string &pkgName, const std::string &netWorkId, 201 std::string &udid) override; 202 /** 203 * @tc.name: DeviceManagerImpl::GetUuidByNetworkId 204 * @tc.desc: Get Uuid by NetworkId 205 * @tc.type: FUNC 206 */ 207 virtual int32_t GetUuidByNetworkId(const std::string &pkgName, const std::string &netWorkId, 208 std::string &uuid) override; 209 /** 210 * @tc.name: DeviceManagerImpl::RegisterDevStateCallback 211 * @tc.desc: Register development status callback 212 * @tc.type: FUNC 213 */ 214 virtual int32_t RegisterDevStateCallback(const std::string &pkgName, const std::string &extra) override; 215 /** 216 * @tc.name: DeviceManagerImpl::UnRegisterDevStateCallback 217 * @tc.desc: Unregister development status callback 218 * @tc.type: FUNC 219 */ 220 virtual int32_t UnRegisterDevStateCallback(const std::string &pkgName, const std::string &extra) override; 221 /** 222 * @tc.name: DeviceManagerImpl::RequestCredential 223 * @tc.desc: RequestCredential 224 * @tc.type: FUNC 225 */ 226 virtual int32_t RequestCredential(const std::string &pkgName, const std::string &reqJsonStr, 227 std::string &returnJsonStr) override; 228 /** 229 * @tc.name: DeviceManagerImpl::ImportCredential 230 * @tc.desc: ImportCredential 231 * @tc.type: FUNC 232 */ 233 virtual int32_t ImportCredential(const std::string &pkgName, const std::string &credentialInfo) override; 234 /** 235 * @tc.name: DeviceManagerImpl::RegisterPinHolderCallback 236 * @tc.desc: RegisterPinHolderCallback 237 * @tc.type: FUNC 238 */ 239 virtual int32_t RegisterPinHolderCallback(const std::string &pkgName, 240 std::shared_ptr<PinHolderCallback> callback) override; 241 /** 242 * @tc.name: DeviceManagerImpl::CreatePinHolder 243 * @tc.desc: CreatePinHolder 244 * @tc.type: FUNC 245 */ 246 virtual int32_t CreatePinHolder(const std::string &pkgName, const PeerTargetId &targetId, 247 DmPinType pinType, const std::string &payload) override; 248 /** 249 * @tc.name: DeviceManagerImpl::DestroyPinHolder 250 * @tc.desc: DestroyPinHolder 251 * @tc.type: FUNC 252 */ 253 virtual int32_t DestroyPinHolder(const std::string &pkgName, const PeerTargetId &targetId, 254 DmPinType pinType, const std::string &payload) override; 255 /** 256 * @tc.name: DeviceManagerImpl::DeleteCredential 257 * @tc.desc: DeleteCredential 258 * @tc.type: FUNC 259 */ 260 virtual int32_t DeleteCredential(const std::string &pkgName, const std::string &deleteInfo) override; 261 /** 262 * @tc.name: DeviceManagerImpl::RegisterCredentialCallback 263 * @tc.desc: RegisterCredentialCallback 264 * @tc.type: FUNC 265 */ 266 virtual int32_t RegisterCredentialCallback(const std::string &pkgName, 267 std::shared_ptr<CredentialCallback> callback) override; 268 /** 269 * @tc.name: DeviceManagerImpl::UnRegisterCredentialCallback 270 * @tc.desc: UnRegisterCredentialCallback 271 * @tc.type: FUNC 272 */ 273 virtual int32_t UnRegisterCredentialCallback(const std::string &pkgName) override; 274 275 /** 276 * @tc.name: DeviceManagerImpl::NotifyEvent 277 * @tc.desc: NotifyEvent 278 * @tc.type: FUNC 279 */ 280 virtual int32_t NotifyEvent(const std::string &pkgName, const int32_t eventId, const std::string &event) override; 281 /** 282 * @tc.name: DeviceManagerImpl::RequestCredential 283 * @tc.desc: RequestCredential 284 * @tc.type: FUNC 285 */ 286 virtual int32_t RequestCredential(const std::string &pkgName, std::string &returnJsonStr) override; 287 /** 288 * @tc.name: DeviceManagerImpl::CheckCredential 289 * @tc.desc: CheckCredential 290 * @tc.type: FUNC 291 */ 292 virtual int32_t CheckCredential(const std::string &pkgName, const std::string &reqJsonStr, 293 std::string &returnJsonStr) override; 294 /** 295 * @tc.name: DeviceManagerImpl::ImportCredential 296 * @tc.desc: ImportCredential 297 * @tc.type: FUNC 298 */ 299 virtual int32_t ImportCredential(const std::string &pkgName, const std::string &reqJsonStr, 300 std::string &returnJsonStr) override; 301 /** 302 * @tc.name: DeviceManagerImpl::DeleteCredential 303 * @tc.desc: DeleteCredential 304 * @tc.type: FUNC 305 */ 306 virtual int32_t DeleteCredential(const std::string &pkgName, const std::string &reqJsonStr, 307 std::string &returnJsonStr) override; 308 309 virtual int32_t GetEncryptedUuidByNetworkId(const std::string &pkgName, const std::string &networkId, 310 std::string &uuid) override; 311 312 virtual int32_t GenerateEncryptedUuid(const std::string &pkgName, const std::string &uuid, 313 const std::string &appId, std::string &encryptedUuid) override; 314 315 /** 316 * @tc.name: DeviceManagerImpl::CheckAPIAccessPermission 317 * @tc.desc: check permission for device manager API 318 * @tc.type: FUNC 319 */ 320 virtual int32_t CheckAPIAccessPermission() override; 321 virtual int32_t CheckNewAPIAccessPermission() override; 322 323 int32_t OnDmServiceDied(); 324 int32_t RegisterUiStateCallback(const std::string &pkgName); 325 int32_t UnRegisterUiStateCallback(const std::string &pkgName); 326 327 virtual int32_t GetLocalDeviceNetWorkId(const std::string &pkgName, std::string &networkId) override; 328 virtual int32_t GetLocalDeviceId(const std::string &pkgName, std::string &networkId) override; 329 virtual int32_t GetLocalDeviceType(const std::string &pkgName, int32_t &deviceType) override; 330 virtual int32_t GetLocalDeviceName(const std::string &pkgName, std::string &deviceName) override; 331 virtual int32_t GetDeviceName(const std::string &pkgName, const std::string &networkId, 332 std::string &deviceName) override; 333 virtual int32_t GetDeviceType(const std::string &pkgName, 334 const std::string &networkId, int32_t &deviceType) override; 335 virtual int32_t BindDevice(const std::string &pkgName, int32_t bindType, const std::string &deviceId, 336 const std::string &extra, std::shared_ptr<AuthenticateCallback> callback) override; 337 virtual int32_t UnBindDevice(const std::string &pkgName, const std::string &deviceId) override; 338 virtual int32_t GetNetworkTypeByNetworkId(const std::string &pkgName, const std::string &netWorkId, 339 int32_t &netWorkType) override; 340 virtual int32_t ImportAuthCode(const std::string &pkgName, const std::string &authCode) override; 341 virtual int32_t ExportAuthCode(std::string &authCode) override; 342 343 // The following interfaces are provided since OpenHarmony 4.1 Version. 344 virtual int32_t StartDiscovering(const std::string &pkgName, std::map<std::string, std::string> &discoverParam, 345 const std::map<std::string, std::string> &filterOptions, std::shared_ptr<DiscoveryCallback> callback) override; 346 347 virtual int32_t StopDiscovering(const std::string &pkgName, 348 std::map<std::string, std::string> &discoverParam) override; 349 350 virtual int32_t RegisterDiscoveryCallback(const std::string &pkgName, 351 std::map<std::string, std::string> &discoverParam, const std::map<std::string, std::string> &filterOptions, 352 std::shared_ptr<DiscoveryCallback> callback) override; 353 354 virtual int32_t UnRegisterDiscoveryCallback(const std::string &pkgName) override; 355 356 virtual int32_t StartAdvertising(const std::string &pkgName, std::map<std::string, std::string> &advertiseParam, 357 std::shared_ptr<PublishCallback> callback) override; 358 359 virtual int32_t StopAdvertising(const std::string &pkgName, 360 std::map<std::string, std::string> &advertiseParam) override; 361 362 virtual int32_t BindTarget(const std::string &pkgName, const PeerTargetId &targetId, 363 std::map<std::string, std::string> &bindParam, std::shared_ptr<BindTargetCallback> callback) override; 364 365 virtual int32_t UnbindTarget(const std::string &pkgName, const PeerTargetId &targetId, 366 std::map<std::string, std::string> &unbindParam, std::shared_ptr<UnbindTargetCallback> callback) override; 367 368 virtual int32_t GetTrustedDeviceList(const std::string &pkgName, 369 const std::map<std::string, std::string> &filterOptions, bool isRefresh, 370 std::vector<DmDeviceInfo> &deviceList) override; 371 372 virtual int32_t RegisterDevStateCallback(const std::string &pkgName, 373 const std::map<std::string, std::string> &extraParam, 374 std::shared_ptr<DeviceStateCallback> callback) override; 375 376 virtual int32_t CheckAccessToTarget(uint64_t tokenId, const std::string &targetId) override; 377 378 virtual int32_t DpAclAdd(const int64_t accessControlId, const std::string &udid, const int32_t bindType) override; 379 380 virtual int32_t GetDeviceSecurityLevel(const std::string &pkgName, const std::string &networkId, 381 int32_t &securityLevel) override; 382 383 virtual bool IsSameAccount(const std::string &netWorkId) override; 384 virtual bool CheckAccessControl(const DmAccessCaller &caller, const DmAccessCallee &callee) override; 385 virtual bool CheckIsSameAccount(const DmAccessCaller &caller, const DmAccessCallee &callee) override; 386 virtual int32_t GetErrCode(int32_t errCode) override; 387 virtual int32_t ShiftLNNGear(const std::string &pkgName) override; 388 389 virtual int32_t SetDnPolicy(const std::string &pkgName, std::map<std::string, std::string> &policy) override; 390 virtual int32_t StopAuthenticateDevice(const std::string &pkgName) override; 391 virtual int32_t GetNetworkIdByUdid(const std::string &pkgName, const std::string &udid, 392 std::string &networkId) override; 393 virtual int32_t RegisterDeviceScreenStatusCallback(const std::string &pkgName, 394 std::shared_ptr<DeviceScreenStatusCallback> callback) override; 395 virtual int32_t UnRegisterDeviceScreenStatusCallback(const std::string &pkgName) override; 396 virtual int32_t GetDeviceScreenStatus(const std::string &pkgName, const std::string &networkId, 397 int32_t &screenStatus) override; 398 virtual int32_t RegisterCredentialAuthStatusCallback(const std::string &pkgName, 399 std::shared_ptr<CredentialAuthStatusCallback> callback) override; 400 virtual int32_t UnRegisterCredentialAuthStatusCallback(const std::string &pkgName) override; 401 402 private: 403 DeviceManagerImpl() = default; 404 ~DeviceManagerImpl() = default; 405 DeviceManagerImpl(const DeviceManagerImpl &) = delete; 406 DeviceManagerImpl &operator=(const DeviceManagerImpl &) = delete; 407 DeviceManagerImpl(DeviceManagerImpl &&) = delete; 408 DeviceManagerImpl &operator=(DeviceManagerImpl &&) = delete; 409 410 uint16_t AddDiscoveryCallback(const std::string &pkgName, std::shared_ptr<DiscoveryCallback> callback); 411 uint16_t RemoveDiscoveryCallback(const std::string &pkgName); 412 int32_t AddPublishCallback(const std::string &pkgName); 413 int32_t RemovePublishCallback(const std::string &pkgName); 414 int32_t CheckApiPermission(int32_t permissionLevel); 415 void ConvertDeviceInfoToDeviceBasicInfo(const DmDeviceInfo &info, DmDeviceBasicInfo &deviceBasicInfo); 416 417 private: 418 #if !defined(__LITEOS_M__) 419 std::shared_ptr<IpcClientProxy> ipcClientProxy_ = 420 std::make_shared<IpcClientProxy>(std::make_shared<IpcClientManager>()); 421 #endif 422 std::mutex subscribIdLock; 423 std::map<uint64_t, uint16_t> subscribIdMap_; 424 425 std::mutex subMapLock; 426 std::map<std::string, uint16_t> pkgName2SubIdMap_; 427 428 std::mutex pubMapLock; 429 std::map<std::string, uint16_t> pkgName2PubIdMap_; 430 }; 431 } // namespace DistributedHardware 432 } // namespace OHOS 433 #endif // OHOS_DEVICE_MANAGER_IMPL_H 434