119e95205Sopenharmony_ci/*
219e95205Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd.
319e95205Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
419e95205Sopenharmony_ci * you may not use this file except in compliance with the License.
519e95205Sopenharmony_ci * You may obtain a copy of the License at
619e95205Sopenharmony_ci *
719e95205Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
819e95205Sopenharmony_ci *
919e95205Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1019e95205Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1119e95205Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1219e95205Sopenharmony_ci * See the License for the specific language governing permissions and
1319e95205Sopenharmony_ci * limitations under the License.
1419e95205Sopenharmony_ci */
1519e95205Sopenharmony_ci#include <gmock/gmock.h>
1619e95205Sopenharmony_ci#include <gtest/gtest.h>
1719e95205Sopenharmony_ci#include "bluetooth_pbap_client.h"
1819e95205Sopenharmony_ci#include "bluetooth_host.h"
1919e95205Sopenharmony_ci
2019e95205Sopenharmony_ciusing namespace testing;
2119e95205Sopenharmony_ciusing namespace testing::ext;
2219e95205Sopenharmony_ciusing namespace std;
2319e95205Sopenharmony_ci
2419e95205Sopenharmony_cinamespace OHOS {
2519e95205Sopenharmony_cinamespace Bluetooth {
2619e95205Sopenharmony_ciconstexpr int TIME = 2;
2719e95205Sopenharmony_ci
2819e95205Sopenharmony_ciclass PbapClientObserverCommon : public PbapClientObserver {
2919e95205Sopenharmony_cipublic:
3019e95205Sopenharmony_ci    PbapClientObserverCommon() = default;
3119e95205Sopenharmony_ci    virtual ~PbapClientObserverCommon() = default;
3219e95205Sopenharmony_ci
3319e95205Sopenharmony_ci    void OnServiceConnectionStateChanged(const BluetoothRemoteDevice &device, int state) {}
3419e95205Sopenharmony_ci    void OnServicePasswordRequired(const BluetoothRemoteDevice &device,
3519e95205Sopenharmony_ci        const std::vector<uint8_t> &description, uint8_t charset, bool fullAccess = true) {}
3619e95205Sopenharmony_ci    void OnActionCompleted(
3719e95205Sopenharmony_ci        const BluetoothRemoteDevice &device, int respCode, int actionType, const PbapPhoneBookData &result) {}
3819e95205Sopenharmony_ci
3919e95205Sopenharmony_ciprivate:
4019e95205Sopenharmony_ci};
4119e95205Sopenharmony_ci
4219e95205Sopenharmony_cistatic PbapClientObserverCommon observer_;
4319e95205Sopenharmony_cistatic PbapClient *profile_;
4419e95205Sopenharmony_ci
4519e95205Sopenharmony_ci
4619e95205Sopenharmony_ciclass PbapClientTest : public testing::Test {
4719e95205Sopenharmony_cipublic:
4819e95205Sopenharmony_ci    PbapClientTest()
4919e95205Sopenharmony_ci    {}
5019e95205Sopenharmony_ci    ~PbapClientTest()
5119e95205Sopenharmony_ci    {}
5219e95205Sopenharmony_ci    static void SetUpTestCase(void);
5319e95205Sopenharmony_ci    static void TearDownTestCase(void);
5419e95205Sopenharmony_ci    void SetUp();
5519e95205Sopenharmony_ci    void TearDown();
5619e95205Sopenharmony_ci    BluetoothHost *host_;
5719e95205Sopenharmony_ci};
5819e95205Sopenharmony_ci
5919e95205Sopenharmony_ci
6019e95205Sopenharmony_civoid PbapClientTest::SetUpTestCase(void) {}
6119e95205Sopenharmony_civoid PbapClientTest::TearDownTestCase(void) {}
6219e95205Sopenharmony_ci
6319e95205Sopenharmony_civoid PbapClientTest::SetUp()
6419e95205Sopenharmony_ci{
6519e95205Sopenharmony_ci    host_ = &BluetoothHost::GetDefaultHost();
6619e95205Sopenharmony_ci    host_->EnableBt();
6719e95205Sopenharmony_ci    host_->EnableBle();
6819e95205Sopenharmony_ci    sleep(TIME);
6919e95205Sopenharmony_ci}
7019e95205Sopenharmony_ci
7119e95205Sopenharmony_civoid PbapClientTest::TearDown()
7219e95205Sopenharmony_ci{
7319e95205Sopenharmony_ci    host_->DisableBt();
7419e95205Sopenharmony_ci    host_->DisableBle();
7519e95205Sopenharmony_ci    host_ = nullptr;
7619e95205Sopenharmony_ci    sleep(TIME);
7719e95205Sopenharmony_ci}
7819e95205Sopenharmony_ci
7919e95205Sopenharmony_ci/*
8019e95205Sopenharmony_ci * @tc.number: PbapClientUnit001
8119e95205Sopenharmony_ci * @tc.name: Connect
8219e95205Sopenharmony_ci * @tc.desc: Initiate the establishment of a service level connection to remote pbapclient device.
8319e95205Sopenharmony_ci*/
8419e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_Connect, TestSize.Level1)
8519e95205Sopenharmony_ci{
8619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_Connect start";
8719e95205Sopenharmony_ci
8819e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
8919e95205Sopenharmony_ci    BluetoothRemoteDevice device;
9019e95205Sopenharmony_ci    bool isOK = profile_->Connect(device);
9119e95205Sopenharmony_ci    EXPECT_EQ(isOK, true);
9219e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_Connect end";
9319e95205Sopenharmony_ci}
9419e95205Sopenharmony_ci
9519e95205Sopenharmony_ci/*
9619e95205Sopenharmony_ci * @tc.number: PbapClientUnit002
9719e95205Sopenharmony_ci * @tc.name: Disconnect
9819e95205Sopenharmony_ci * @tc.desc: Release the connection from pbapclient device.
9919e95205Sopenharmony_ci*/
10019e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_Disconnect, TestSize.Level1)
10119e95205Sopenharmony_ci{
10219e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_Disconnect start";
10319e95205Sopenharmony_ci
10419e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
10519e95205Sopenharmony_ci    BluetoothRemoteDevice device;
10619e95205Sopenharmony_ci    bool isOK = profile_->Disconnect(device);
10719e95205Sopenharmony_ci    EXPECT_EQ(isOK, true);
10819e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_Disconnect end";
10919e95205Sopenharmony_ci}
11019e95205Sopenharmony_ci
11119e95205Sopenharmony_ci/*
11219e95205Sopenharmony_ci * @tc.number: PbapClientUnit003
11319e95205Sopenharmony_ci * @tc.name: RegisterObserver
11419e95205Sopenharmony_ci * @tc.desc: Register PbapClient observer instance.
11519e95205Sopenharmony_ci*/
11619e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_RegisterObserver, TestSize.Level1)
11719e95205Sopenharmony_ci{
11819e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_RegisterObserver start";
11919e95205Sopenharmony_ci
12019e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
12119e95205Sopenharmony_ci    profile_->RegisterObserver(&observer_);
12219e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_RegisterObserver end";
12319e95205Sopenharmony_ci}
12419e95205Sopenharmony_ci
12519e95205Sopenharmony_ci/*
12619e95205Sopenharmony_ci * @tc.number: PbapClientUnit004
12719e95205Sopenharmony_ci * @tc.name: DeregisterObserver
12819e95205Sopenharmony_ci * @tc.desc: Deregister PbapClient observer instance.
12919e95205Sopenharmony_ci*/
13019e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_DeregisterObserver, TestSize.Level1)
13119e95205Sopenharmony_ci{
13219e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_DeregisterObserver start";
13319e95205Sopenharmony_ci
13419e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
13519e95205Sopenharmony_ci    profile_->DeregisterObserver(&observer_);
13619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_DeregisterObserver end";
13719e95205Sopenharmony_ci}
13819e95205Sopenharmony_ci
13919e95205Sopenharmony_ci/*
14019e95205Sopenharmony_ci * @tc.number: PbapClientUnit005
14119e95205Sopenharmony_ci * @tc.name: GetConnectedDevices
14219e95205Sopenharmony_ci * @tc.desc: Get remote PbapClient device list which are in the connected state.
14319e95205Sopenharmony_ci*/
14419e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_GetConnectedDevices, TestSize.Level1)
14519e95205Sopenharmony_ci{
14619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_GetConnectedDevices start";
14719e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
14819e95205Sopenharmony_ci    vector<BluetoothRemoteDevice> devices = profile_->GetConnectedDevices();
14919e95205Sopenharmony_ci    int vectorSize = devices.size();
15019e95205Sopenharmony_ci    EXPECT_EQ(vectorSize, 0);
15119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_GetConnectedDevices end";
15219e95205Sopenharmony_ci}
15319e95205Sopenharmony_ci
15419e95205Sopenharmony_ci/*
15519e95205Sopenharmony_ci * @tc.number: PbapClientUnit006
15619e95205Sopenharmony_ci * @tc.name: GetDevicesByStates
15719e95205Sopenharmony_ci * @tc.desc: Get remote PbapClient device list which are in the specified states.
15819e95205Sopenharmony_ci*/
15919e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_GetDevicesByStates, TestSize.Level1)
16019e95205Sopenharmony_ci{
16119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_GetDevicesByStates start";
16219e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
16319e95205Sopenharmony_ci    vector<int> states = {static_cast<int>(BTConnectState::CONNECTED)};
16419e95205Sopenharmony_ci    vector<BluetoothRemoteDevice> devices = profile_->GetDevicesByStates(states);
16519e95205Sopenharmony_ci    int vectorSize = devices.size();
16619e95205Sopenharmony_ci    EXPECT_EQ(vectorSize, 0);
16719e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_GetDevicesByStates end";
16819e95205Sopenharmony_ci}
16919e95205Sopenharmony_ci
17019e95205Sopenharmony_ci/*
17119e95205Sopenharmony_ci * @tc.number: PbapClientUnit007
17219e95205Sopenharmony_ci * @tc.name: GetDeviceState
17319e95205Sopenharmony_ci * @tc.desc: Get remote PbapClient device state which are in the specified states.
17419e95205Sopenharmony_ci*/
17519e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_GetDeviceState, TestSize.Level1)
17619e95205Sopenharmony_ci{
17719e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_GetDeviceState start";
17819e95205Sopenharmony_ci
17919e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
18019e95205Sopenharmony_ci    BluetoothRemoteDevice device;
18119e95205Sopenharmony_ci    int state = profile_->GetDeviceState(device);
18219e95205Sopenharmony_ci    EXPECT_EQ(state, -1);
18319e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_GetDevicesByStates end";
18419e95205Sopenharmony_ci}
18519e95205Sopenharmony_ci
18619e95205Sopenharmony_ci/*
18719e95205Sopenharmony_ci * @tc.number: PbapClientUnit008
18819e95205Sopenharmony_ci * @tc.name: SetConnectionStrategy
18919e95205Sopenharmony_ci * @tc.desc: set the strategy with the specified remote device
19019e95205Sopenharmony_ci*/
19119e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_SetConnectionStrategy, TestSize.Level1)
19219e95205Sopenharmony_ci{
19319e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_SetConnectionStrategy start";
19419e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
19519e95205Sopenharmony_ci    BluetoothRemoteDevice device;
19619e95205Sopenharmony_ci    int strategy = 0;
19719e95205Sopenharmony_ci    bool isOk = profile_->SetConnectionStrategy(device, strategy);
19819e95205Sopenharmony_ci    EXPECT_EQ(isOk, false);
19919e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_SetConnectionStrategy end";
20019e95205Sopenharmony_ci}
20119e95205Sopenharmony_ci
20219e95205Sopenharmony_ci/*
20319e95205Sopenharmony_ci * @tc.number: PbapClientUnit009
20419e95205Sopenharmony_ci * @tc.name: GetConnectionStrategy
20519e95205Sopenharmony_ci * @tc.desc: get the strategy with the specified remote device
20619e95205Sopenharmony_ci*/
20719e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_GetConnectionStrategy, TestSize.Level1)
20819e95205Sopenharmony_ci{
20919e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_GetConnectionStrategy start";
21019e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
21119e95205Sopenharmony_ci    BluetoothRemoteDevice device;
21219e95205Sopenharmony_ci    int state = profile_->GetConnectionStrategy(device);
21319e95205Sopenharmony_ci    EXPECT_EQ(state, -1);
21419e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_GetConnectionStrategy end";
21519e95205Sopenharmony_ci}
21619e95205Sopenharmony_ci
21719e95205Sopenharmony_ci/*
21819e95205Sopenharmony_ci * @tc.number: PbapClientUnit010
21919e95205Sopenharmony_ci * @tc.name: SetDevicePassword
22019e95205Sopenharmony_ci * @tc.desc: Set device's password. please call after OnServicePasswordRequired event.
22119e95205Sopenharmony_ci*/
22219e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_SetDevicePassword, TestSize.Level1)
22319e95205Sopenharmony_ci{
22419e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_SetDevicePassword start";
22519e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
22619e95205Sopenharmony_ci    BluetoothRemoteDevice device;
22719e95205Sopenharmony_ci    string password = "123";
22819e95205Sopenharmony_ci    string userId = "123";
22919e95205Sopenharmony_ci    int state = profile_->SetDevicePassword(device, password, userId);
23019e95205Sopenharmony_ci    EXPECT_EQ(state, -1);
23119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_SetDevicePassword end";
23219e95205Sopenharmony_ci}
23319e95205Sopenharmony_ci
23419e95205Sopenharmony_ci/*
23519e95205Sopenharmony_ci * @tc.number: PbapClientUnit011
23619e95205Sopenharmony_ci * @tc.name: PullPhoneBook
23719e95205Sopenharmony_ci * @tc.desc: Pull phone book from remote device after connected.
23819e95205Sopenharmony_ci*/
23919e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_PullPhoneBook, TestSize.Level1)
24019e95205Sopenharmony_ci{
24119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_PullPhoneBook start";
24219e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
24319e95205Sopenharmony_ci    BluetoothRemoteDevice device;
24419e95205Sopenharmony_ci    PbapPullPhoneBookParam param;
24519e95205Sopenharmony_ci    int state = profile_->PullPhoneBook(device, param);
24619e95205Sopenharmony_ci    EXPECT_EQ(state, -1);
24719e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_PullPhoneBook end";
24819e95205Sopenharmony_ci}
24919e95205Sopenharmony_ci
25019e95205Sopenharmony_ci/*
25119e95205Sopenharmony_ci * @tc.number: PbapClientUnit012
25219e95205Sopenharmony_ci * @tc.name: SetPhoneBook
25319e95205Sopenharmony_ci * @tc.desc: Set phone book from remote device after connected.
25419e95205Sopenharmony_ci*/
25519e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_SetPhoneBook, TestSize.Level1)
25619e95205Sopenharmony_ci{
25719e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_SetPhoneBook start";
25819e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
25919e95205Sopenharmony_ci    BluetoothRemoteDevice device;
26019e95205Sopenharmony_ci    std::u16string name = {'a', 'b', 'c', 0};
26119e95205Sopenharmony_ci    int flag = 0;
26219e95205Sopenharmony_ci    int state = profile_->SetPhoneBook(device, name, flag);
26319e95205Sopenharmony_ci    EXPECT_EQ(state, -1);
26419e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_SetPhoneBook end";
26519e95205Sopenharmony_ci}
26619e95205Sopenharmony_ci
26719e95205Sopenharmony_ci/*
26819e95205Sopenharmony_ci * @tc.number: PbapClientUnit013
26919e95205Sopenharmony_ci * @tc.name: PullvCardListing
27019e95205Sopenharmony_ci * @tc.desc: Pull vCard listing from remote device after connected.
27119e95205Sopenharmony_ci*/
27219e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_PullvCardListing, TestSize.Level1)
27319e95205Sopenharmony_ci{
27419e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_PullvCardListing start";
27519e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
27619e95205Sopenharmony_ci    BluetoothRemoteDevice device;
27719e95205Sopenharmony_ci    PbapPullvCardListingParam param;
27819e95205Sopenharmony_ci    int state = profile_->PullvCardListing(device, param);
27919e95205Sopenharmony_ci    EXPECT_EQ(state, -1);
28019e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_PullvCardListing end";
28119e95205Sopenharmony_ci}
28219e95205Sopenharmony_ci
28319e95205Sopenharmony_ci/*
28419e95205Sopenharmony_ci * @tc.number: PbapClientUnit014
28519e95205Sopenharmony_ci * @tc.name: PullvCardEntry
28619e95205Sopenharmony_ci * @tc.desc: Pull vCard entry from remote device after connected.
28719e95205Sopenharmony_ci*/
28819e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_PullvCardEntry, TestSize.Level1)
28919e95205Sopenharmony_ci{
29019e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_PullvCardEntry start";
29119e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
29219e95205Sopenharmony_ci    BluetoothRemoteDevice device;
29319e95205Sopenharmony_ci    PbapPullvCardEntryParam param;
29419e95205Sopenharmony_ci    int state = profile_->PullvCardEntry(device, param);
29519e95205Sopenharmony_ci    EXPECT_EQ(state, -1);
29619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_PullvCardEntry end";
29719e95205Sopenharmony_ci}
29819e95205Sopenharmony_ci
29919e95205Sopenharmony_ci/*
30019e95205Sopenharmony_ci * @tc.number: PbapClientUnit015
30119e95205Sopenharmony_ci * @tc.name: IsDownloading
30219e95205Sopenharmony_ci * @tc.desc: Check if local device is downloading phonebook from remote device.
30319e95205Sopenharmony_ci*/
30419e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_IsDownloading, TestSize.Level1)
30519e95205Sopenharmony_ci{
30619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_IsDownloading start";
30719e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
30819e95205Sopenharmony_ci    BluetoothRemoteDevice device;
30919e95205Sopenharmony_ci    bool isOk = profile_->IsDownloading(device);
31019e95205Sopenharmony_ci    EXPECT_EQ(isOk, false);
31119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_IsDownloading end";
31219e95205Sopenharmony_ci}
31319e95205Sopenharmony_ci
31419e95205Sopenharmony_ci/*
31519e95205Sopenharmony_ci * @tc.number: PbapClientUnit015
31619e95205Sopenharmony_ci * @tc.name: AbortDownloading
31719e95205Sopenharmony_ci * @tc.desc: Abort downloading phonebook from remote device.
31819e95205Sopenharmony_ci*/
31919e95205Sopenharmony_ciHWTEST_F(PbapClientTest, PbapClient_UnitTest_AbortDownloading, TestSize.Level1)
32019e95205Sopenharmony_ci{
32119e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_AbortDownloading start";
32219e95205Sopenharmony_ci    profile_ = PbapClient::GetProfile();
32319e95205Sopenharmony_ci    BluetoothRemoteDevice device;
32419e95205Sopenharmony_ci    int state = profile_->AbortDownloading(device);
32519e95205Sopenharmony_ci    EXPECT_EQ(state, -1);
32619e95205Sopenharmony_ci    GTEST_LOG_(INFO) << "PbapClient_UnitTest_AbortDownloading end";
32719e95205Sopenharmony_ci}
32819e95205Sopenharmony_ci}  // namespace Bluetooth
32919e95205Sopenharmony_ci}  // namespace OHOS