11c1b0f19Sopenharmony_ci/* 21c1b0f19Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 31c1b0f19Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41c1b0f19Sopenharmony_ci * you may not use this file except in compliance with the License. 51c1b0f19Sopenharmony_ci * You may obtain a copy of the License at 61c1b0f19Sopenharmony_ci * 71c1b0f19Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81c1b0f19Sopenharmony_ci * 91c1b0f19Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101c1b0f19Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111c1b0f19Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121c1b0f19Sopenharmony_ci * See the License for the specific language governing permissions and 131c1b0f19Sopenharmony_ci * limitations under the License. 141c1b0f19Sopenharmony_ci */ 151c1b0f19Sopenharmony_ci 161c1b0f19Sopenharmony_ci#include <gtest/gtest.h> 171c1b0f19Sopenharmony_ci#include "dcamera_client_demo.h" 181c1b0f19Sopenharmony_ci#include "distributed_hardware_log.h" 191c1b0f19Sopenharmony_ci 201c1b0f19Sopenharmony_ci#include "access_token.h" 211c1b0f19Sopenharmony_ci#include "accesstoken_kit.h" 221c1b0f19Sopenharmony_ci#include "hap_token_info.h" 231c1b0f19Sopenharmony_ci#include "ipc_skeleton.h" 241c1b0f19Sopenharmony_ci#include "nativetoken_kit.h" 251c1b0f19Sopenharmony_ci#include "token_setproc.h" 261c1b0f19Sopenharmony_ci 271c1b0f19Sopenharmony_ciusing namespace testing::ext; 281c1b0f19Sopenharmony_ciusing namespace OHOS::DistributedHardware; 291c1b0f19Sopenharmony_ci 301c1b0f19Sopenharmony_cinamespace OHOS { 311c1b0f19Sopenharmony_cinamespace DistributedHardware { 321c1b0f19Sopenharmony_ciconstexpr int32_t CAMERA_OK = 0; 331c1b0f19Sopenharmony_ciconstexpr int32_t SLEEP_OK_SECOND = 2; 341c1b0f19Sopenharmony_ciconstexpr int32_t SLEEP_FIVE_SECOND = 5; 351c1b0f19Sopenharmony_ci 361c1b0f19Sopenharmony_ciclass DCameraClientAutomaticTest : public testing::Test { 371c1b0f19Sopenharmony_cipublic: 381c1b0f19Sopenharmony_ci static void SetUpTestCase(void); 391c1b0f19Sopenharmony_ci static void TearDownTestCase(void); 401c1b0f19Sopenharmony_ci void SetUp(); 411c1b0f19Sopenharmony_ci void TearDown(); 421c1b0f19Sopenharmony_ci DCameraClientAutomaticTest(); 431c1b0f19Sopenharmony_ci}; 441c1b0f19Sopenharmony_ci 451c1b0f19Sopenharmony_civoid DCameraClientAutomaticTest::SetUpTestCase(void) 461c1b0f19Sopenharmony_ci{ 471c1b0f19Sopenharmony_ci uint64_t tokenId; 481c1b0f19Sopenharmony_ci const char *perms[2]; 491c1b0f19Sopenharmony_ci perms[0] = "ohos.permission.DISTRIBUTED_DATASYNC"; 501c1b0f19Sopenharmony_ci perms[1] = "ohos.permission.CAMERA"; 511c1b0f19Sopenharmony_ci NativeTokenInfoParams infoInstance = { 521c1b0f19Sopenharmony_ci .dcapsNum = 0, 531c1b0f19Sopenharmony_ci .permsNum = 2, 541c1b0f19Sopenharmony_ci .aclsNum = 0, 551c1b0f19Sopenharmony_ci .dcaps = NULL, 561c1b0f19Sopenharmony_ci .perms = perms, 571c1b0f19Sopenharmony_ci .acls = NULL, 581c1b0f19Sopenharmony_ci .processName = "dcamera_client_demo", 591c1b0f19Sopenharmony_ci .aplStr = "system_basic", 601c1b0f19Sopenharmony_ci }; 611c1b0f19Sopenharmony_ci tokenId = GetAccessTokenId(&infoInstance); 621c1b0f19Sopenharmony_ci SetSelfTokenID(tokenId); 631c1b0f19Sopenharmony_ci OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo(); 641c1b0f19Sopenharmony_ci sleep(SLEEP_OK_SECOND); 651c1b0f19Sopenharmony_ci} 661c1b0f19Sopenharmony_ci 671c1b0f19Sopenharmony_civoid DCameraClientAutomaticTest::TearDownTestCase(void) {} 681c1b0f19Sopenharmony_civoid DCameraClientAutomaticTest::SetUp(void) {} 691c1b0f19Sopenharmony_civoid DCameraClientAutomaticTest::TearDown(void) 701c1b0f19Sopenharmony_ci{ 711c1b0f19Sopenharmony_ci ReleaseResource(); 721c1b0f19Sopenharmony_ci sleep(SLEEP_OK_SECOND); 731c1b0f19Sopenharmony_ci} 741c1b0f19Sopenharmony_ciDCameraClientAutomaticTest::DCameraClientAutomaticTest(void) {} 751c1b0f19Sopenharmony_ci 761c1b0f19Sopenharmony_ci/** 771c1b0f19Sopenharmony_ci * @tc.number : DCameraTest_0100 781c1b0f19Sopenharmony_ci * @tc.name :InitCameraStandard() 791c1b0f19Sopenharmony_ci * @tc.desc : rear camera acquisition 801c1b0f19Sopenharmony_ci * @tc.desc : swicth distributed cmera 811c1b0f19Sopenharmony_ci * @tc.type : FUNC 821c1b0f19Sopenharmony_ci * @tc.size : Medium test 831c1b0f19Sopenharmony_ci */ 841c1b0f19Sopenharmony_ciHWTEST_F(DCameraClientAutomaticTest, DCameraTest_0100, TestSize.Level1) 851c1b0f19Sopenharmony_ci{ 861c1b0f19Sopenharmony_ci int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK); 871c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 881c1b0f19Sopenharmony_ci} 891c1b0f19Sopenharmony_ci 901c1b0f19Sopenharmony_ci/** 911c1b0f19Sopenharmony_ci * @tc.number : DCameraTest_0200 921c1b0f19Sopenharmony_ci * @tc.name :InitCameraStandard() 931c1b0f19Sopenharmony_ci * @tc.desc : rear camera preview 941c1b0f19Sopenharmony_ci * @tc.desc : swicth distributed cmera 951c1b0f19Sopenharmony_ci * @tc.type : FUNC 961c1b0f19Sopenharmony_ci * @tc.size : Medium test 971c1b0f19Sopenharmony_ci */ 981c1b0f19Sopenharmony_ciHWTEST_F(DCameraClientAutomaticTest, DCameraTest_0200, TestSize.Level1) 991c1b0f19Sopenharmony_ci{ 1001c1b0f19Sopenharmony_ci int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK); 1011c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 1021c1b0f19Sopenharmony_ci InitCaptureInfo(0, 0); 1031c1b0f19Sopenharmony_ci InitPhotoOutput(); 1041c1b0f19Sopenharmony_ci InitPreviewOutput(); 1051c1b0f19Sopenharmony_ci ConfigCaptureSession(); 1061c1b0f19Sopenharmony_ci sleep(SLEEP_FIVE_SECOND); 1071c1b0f19Sopenharmony_ci} 1081c1b0f19Sopenharmony_ci 1091c1b0f19Sopenharmony_ci/** 1101c1b0f19Sopenharmony_ci * @tc.number : DCameraTest_0300 1111c1b0f19Sopenharmony_ci * @tc.name :InitCameraStandard() 1121c1b0f19Sopenharmony_ci * @tc.desc : front camera acquisition 1131c1b0f19Sopenharmony_ci * @tc.desc : swicth distributed cmera 1141c1b0f19Sopenharmony_ci * @tc.type : FUNC 1151c1b0f19Sopenharmony_ci * @tc.size : Medium test 1161c1b0f19Sopenharmony_ci */ 1171c1b0f19Sopenharmony_ciHWTEST_F(DCameraClientAutomaticTest, DCameraTest_0300, TestSize.Level1) 1181c1b0f19Sopenharmony_ci{ 1191c1b0f19Sopenharmony_ci int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_FRONT); 1201c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 1211c1b0f19Sopenharmony_ci} 1221c1b0f19Sopenharmony_ci 1231c1b0f19Sopenharmony_ci/** 1241c1b0f19Sopenharmony_ci * @tc.number : DCameraTest_0400 1251c1b0f19Sopenharmony_ci * @tc.name :InitCameraStandard() 1261c1b0f19Sopenharmony_ci * @tc.desc : front camera preview 1271c1b0f19Sopenharmony_ci * @tc.desc : swicth distributed cmera 1281c1b0f19Sopenharmony_ci * @tc.type : FUNC 1291c1b0f19Sopenharmony_ci * @tc.size : Medium test 1301c1b0f19Sopenharmony_ci */ 1311c1b0f19Sopenharmony_ciHWTEST_F(DCameraClientAutomaticTest, DCameraTest_0400, TestSize.Level1) 1321c1b0f19Sopenharmony_ci{ 1331c1b0f19Sopenharmony_ci int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_FRONT); 1341c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 1351c1b0f19Sopenharmony_ci InitCaptureInfo(0, 0); 1361c1b0f19Sopenharmony_ci InitPhotoOutput(); 1371c1b0f19Sopenharmony_ci InitPreviewOutput(); 1381c1b0f19Sopenharmony_ci ConfigCaptureSession(); 1391c1b0f19Sopenharmony_ci sleep(SLEEP_FIVE_SECOND); 1401c1b0f19Sopenharmony_ci} 1411c1b0f19Sopenharmony_ci 1421c1b0f19Sopenharmony_ci/** 1431c1b0f19Sopenharmony_ci * @tc.number : DCameraTest_0500 1441c1b0f19Sopenharmony_ci * @tc.name :InitCameraStandard() 1451c1b0f19Sopenharmony_ci * @tc.desc : front and rear camera switching preview 1461c1b0f19Sopenharmony_ci * @tc.desc : swicth distributed cmera 1471c1b0f19Sopenharmony_ci * @tc.type : FUNC 1481c1b0f19Sopenharmony_ci * @tc.size : Medium test 1491c1b0f19Sopenharmony_ci */ 1501c1b0f19Sopenharmony_ciHWTEST_F(DCameraClientAutomaticTest, DCameraTest_0500, TestSize.Level1) 1511c1b0f19Sopenharmony_ci{ 1521c1b0f19Sopenharmony_ci int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_FRONT); 1531c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 1541c1b0f19Sopenharmony_ci InitCaptureInfo(0, 0); 1551c1b0f19Sopenharmony_ci InitPhotoOutput(); 1561c1b0f19Sopenharmony_ci InitPreviewOutput(); 1571c1b0f19Sopenharmony_ci ConfigCaptureSession(); 1581c1b0f19Sopenharmony_ci sleep(SLEEP_FIVE_SECOND); 1591c1b0f19Sopenharmony_ci ReleaseResource(); 1601c1b0f19Sopenharmony_ci sleep(SLEEP_OK_SECOND); 1611c1b0f19Sopenharmony_ci 1621c1b0f19Sopenharmony_ci ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK); 1631c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 1641c1b0f19Sopenharmony_ci InitCaptureInfo(0, 0); 1651c1b0f19Sopenharmony_ci InitPhotoOutput(); 1661c1b0f19Sopenharmony_ci InitPreviewOutput(); 1671c1b0f19Sopenharmony_ci ConfigCaptureSession(); 1681c1b0f19Sopenharmony_ci sleep(SLEEP_FIVE_SECOND); 1691c1b0f19Sopenharmony_ci ReleaseResource(); 1701c1b0f19Sopenharmony_ci sleep(SLEEP_OK_SECOND); 1711c1b0f19Sopenharmony_ci 1721c1b0f19Sopenharmony_ci ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_FRONT); 1731c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 1741c1b0f19Sopenharmony_ci InitCaptureInfo(0, 0); 1751c1b0f19Sopenharmony_ci InitPhotoOutput(); 1761c1b0f19Sopenharmony_ci InitPreviewOutput(); 1771c1b0f19Sopenharmony_ci ConfigCaptureSession(); 1781c1b0f19Sopenharmony_ci sleep(SLEEP_FIVE_SECOND); 1791c1b0f19Sopenharmony_ci} 1801c1b0f19Sopenharmony_ci 1811c1b0f19Sopenharmony_ci/** 1821c1b0f19Sopenharmony_ci * @tc.number : DCameraTest_0600 1831c1b0f19Sopenharmony_ci * @tc.name :Capture() 1841c1b0f19Sopenharmony_ci * @tc.desc : rear camera taking photos 1851c1b0f19Sopenharmony_ci * @tc.desc : swicth distributed cmera 1861c1b0f19Sopenharmony_ci * @tc.type : FUNC 1871c1b0f19Sopenharmony_ci * @tc.size : Medium test 1881c1b0f19Sopenharmony_ci */ 1891c1b0f19Sopenharmony_ciHWTEST_F(DCameraClientAutomaticTest, DCameraTest_0600, TestSize.Level1) 1901c1b0f19Sopenharmony_ci{ 1911c1b0f19Sopenharmony_ci int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK); 1921c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 1931c1b0f19Sopenharmony_ci InitCaptureInfo(0, 0); 1941c1b0f19Sopenharmony_ci InitPhotoOutput(); 1951c1b0f19Sopenharmony_ci InitPreviewOutput(); 1961c1b0f19Sopenharmony_ci ConfigCaptureSession(); 1971c1b0f19Sopenharmony_ci ret = Capture(); 1981c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "Capture fail"; 1991c1b0f19Sopenharmony_ci sleep(SLEEP_FIVE_SECOND); 2001c1b0f19Sopenharmony_ci} 2011c1b0f19Sopenharmony_ci 2021c1b0f19Sopenharmony_ci/** 2031c1b0f19Sopenharmony_ci * @tc.number : DCameraTest_0700 2041c1b0f19Sopenharmony_ci * @tc.name :Capture() 2051c1b0f19Sopenharmony_ci * @tc.desc : front camera taking photos 2061c1b0f19Sopenharmony_ci * @tc.desc : swicth distributed cmera 2071c1b0f19Sopenharmony_ci * @tc.type : FUNC 2081c1b0f19Sopenharmony_ci * @tc.size : Medium test 2091c1b0f19Sopenharmony_ci */ 2101c1b0f19Sopenharmony_ciHWTEST_F(DCameraClientAutomaticTest, DCameraTest_0700, TestSize.Level1) 2111c1b0f19Sopenharmony_ci{ 2121c1b0f19Sopenharmony_ci int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_FRONT); 2131c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 2141c1b0f19Sopenharmony_ci InitCaptureInfo(0, 0); 2151c1b0f19Sopenharmony_ci InitPhotoOutput(); 2161c1b0f19Sopenharmony_ci InitPreviewOutput(); 2171c1b0f19Sopenharmony_ci ConfigCaptureSession(); 2181c1b0f19Sopenharmony_ci ret = Capture(); 2191c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "Capture fail"; 2201c1b0f19Sopenharmony_ci sleep(SLEEP_FIVE_SECOND); 2211c1b0f19Sopenharmony_ci} 2221c1b0f19Sopenharmony_ci 2231c1b0f19Sopenharmony_ci/** 2241c1b0f19Sopenharmony_ci * @tc.number : DCameraTest_0800 2251c1b0f19Sopenharmony_ci * @tc.name :Capture() 2261c1b0f19Sopenharmony_ci * @tc.desc : flash photography 2271c1b0f19Sopenharmony_ci * @tc.desc : swicth distributed cmera 2281c1b0f19Sopenharmony_ci * @tc.type : FUNC 2291c1b0f19Sopenharmony_ci * @tc.size : Medium test 2301c1b0f19Sopenharmony_ci */ 2311c1b0f19Sopenharmony_ciHWTEST_F(DCameraClientAutomaticTest, DCameraTest_0800, TestSize.Level1) 2321c1b0f19Sopenharmony_ci{ 2331c1b0f19Sopenharmony_ci int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK); 2341c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 2351c1b0f19Sopenharmony_ci InitCaptureInfo(0, 0); 2361c1b0f19Sopenharmony_ci InitPhotoOutput(); 2371c1b0f19Sopenharmony_ci InitPreviewOutput(); 2381c1b0f19Sopenharmony_ci ConfigCaptureSession(); 2391c1b0f19Sopenharmony_ci ConfigFocusFlashAndExposure(false); 2401c1b0f19Sopenharmony_ci ret = Capture(); 2411c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "Capture fail"; 2421c1b0f19Sopenharmony_ci sleep(SLEEP_FIVE_SECOND); 2431c1b0f19Sopenharmony_ci} 2441c1b0f19Sopenharmony_ci 2451c1b0f19Sopenharmony_ci/** 2461c1b0f19Sopenharmony_ci * @tc.number : DCameraTest_0900 2471c1b0f19Sopenharmony_ci * @tc.name :Capture() 2481c1b0f19Sopenharmony_ci * @tc.desc : preview using resolution 2491c1b0f19Sopenharmony_ci * @tc.desc : swicth distributed cmera 2501c1b0f19Sopenharmony_ci * @tc.type : FUNC 2511c1b0f19Sopenharmony_ci * @tc.size : Medium test 2521c1b0f19Sopenharmony_ci */ 2531c1b0f19Sopenharmony_ciHWTEST_F(DCameraClientAutomaticTest, DCameraTest_0900, TestSize.Level1) 2541c1b0f19Sopenharmony_ci{ 2551c1b0f19Sopenharmony_ci int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK); 2561c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 2571c1b0f19Sopenharmony_ci std::vector<CameraStandard::Size> previewResolution = {}; 2581c1b0f19Sopenharmony_ci ret = GetPreviewProfiles(previewResolution); 2591c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "GetPreviewProfiles fail"; 2601c1b0f19Sopenharmony_ci CameraStandard::Size size = previewResolution.back(); 2611c1b0f19Sopenharmony_ci InitCaptureInfo(size.width, size.height); 2621c1b0f19Sopenharmony_ci InitPhotoOutput(); 2631c1b0f19Sopenharmony_ci InitPreviewOutput(); 2641c1b0f19Sopenharmony_ci ConfigCaptureSession(); 2651c1b0f19Sopenharmony_ci ConfigFocusFlashAndExposure(false); 2661c1b0f19Sopenharmony_ci ret = Capture(); 2671c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "Capture fail"; 2681c1b0f19Sopenharmony_ci sleep(SLEEP_FIVE_SECOND); 2691c1b0f19Sopenharmony_ci} 2701c1b0f19Sopenharmony_ci 2711c1b0f19Sopenharmony_ci/** 2721c1b0f19Sopenharmony_ci * @tc.number : DCameraTest_1000 2731c1b0f19Sopenharmony_ci * @tc.name :Capture() 2741c1b0f19Sopenharmony_ci * @tc.desc : front and rear camera switching preview 50 times 2751c1b0f19Sopenharmony_ci * @tc.desc : swicth distributed cmera 2761c1b0f19Sopenharmony_ci * @tc.type : FUNC 2771c1b0f19Sopenharmony_ci * @tc.size : Medium test 2781c1b0f19Sopenharmony_ci */ 2791c1b0f19Sopenharmony_ciHWTEST_F(DCameraClientAutomaticTest, DCameraTest_1000, TestSize.Level1) 2801c1b0f19Sopenharmony_ci{ 2811c1b0f19Sopenharmony_ci int32_t i = 50; 2821c1b0f19Sopenharmony_ci while (i > 0) { 2831c1b0f19Sopenharmony_ci int32_t ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_BACK); 2841c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 2851c1b0f19Sopenharmony_ci InitCaptureInfo(0, 0); 2861c1b0f19Sopenharmony_ci InitPhotoOutput(); 2871c1b0f19Sopenharmony_ci InitPreviewOutput(); 2881c1b0f19Sopenharmony_ci ConfigCaptureSession(); 2891c1b0f19Sopenharmony_ci sleep(SLEEP_FIVE_SECOND); 2901c1b0f19Sopenharmony_ci ReleaseResource(); 2911c1b0f19Sopenharmony_ci sleep(SLEEP_OK_SECOND); 2921c1b0f19Sopenharmony_ci 2931c1b0f19Sopenharmony_ci ret = InitCameraStandard(OHOS::CameraStandard::CameraPosition::CAMERA_POSITION_FRONT); 2941c1b0f19Sopenharmony_ci EXPECT_EQ(CAMERA_OK, ret) << "InitCameraStandard fail"; 2951c1b0f19Sopenharmony_ci InitCaptureInfo(0, 0); 2961c1b0f19Sopenharmony_ci InitPhotoOutput(); 2971c1b0f19Sopenharmony_ci InitPreviewOutput(); 2981c1b0f19Sopenharmony_ci ConfigCaptureSession(); 2991c1b0f19Sopenharmony_ci sleep(SLEEP_FIVE_SECOND); 3001c1b0f19Sopenharmony_ci ReleaseResource(); 3011c1b0f19Sopenharmony_ci sleep(SLEEP_OK_SECOND); 3021c1b0f19Sopenharmony_ci i--; 3031c1b0f19Sopenharmony_ci } 3041c1b0f19Sopenharmony_ci} 3051c1b0f19Sopenharmony_ci} // namespace DistributedHardware 3061c1b0f19Sopenharmony_ci} // namespace OHOS 307