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