195489c19Sopenharmony_ci/*
295489c19Sopenharmony_ci * Copyright (C) 2021-2022 Huawei Device Co., Ltd.
395489c19Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
495489c19Sopenharmony_ci * you may not use this file except in compliance with the License.
595489c19Sopenharmony_ci * You may obtain a copy of the License at
695489c19Sopenharmony_ci *
795489c19Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
895489c19Sopenharmony_ci *
995489c19Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1095489c19Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1195489c19Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1295489c19Sopenharmony_ci * See the License for the specific language governing permissions and
1395489c19Sopenharmony_ci * limitations under the License.
1495489c19Sopenharmony_ci */
1595489c19Sopenharmony_ci
1695489c19Sopenharmony_ci/**
1795489c19Sopenharmony_ci * @addtogroup Bluetooth
1895489c19Sopenharmony_ci * @{
1995489c19Sopenharmony_ci *
2095489c19Sopenharmony_ci * @brief Defines bluetooth host, including observer and common functions.
2195489c19Sopenharmony_ci *
2295489c19Sopenharmony_ci * @since 6
2395489c19Sopenharmony_ci */
2495489c19Sopenharmony_ci
2595489c19Sopenharmony_ci/**
2695489c19Sopenharmony_ci * @file bluetooth_host.h
2795489c19Sopenharmony_ci *
2895489c19Sopenharmony_ci * @brief Framework bluetooth host interface.
2995489c19Sopenharmony_ci *
3095489c19Sopenharmony_ci * @since 6
3195489c19Sopenharmony_ci */
3295489c19Sopenharmony_ci
3395489c19Sopenharmony_ci#ifndef BLUETOOTH_HOST_H
3495489c19Sopenharmony_ci#define BLUETOOTH_HOST_H
3595489c19Sopenharmony_ci
3695489c19Sopenharmony_ci#include <string>
3795489c19Sopenharmony_ci
3895489c19Sopenharmony_ci#include "bluetooth_battery_info.h"
3995489c19Sopenharmony_ci#include "bluetooth_def.h"
4095489c19Sopenharmony_ci#include "bluetooth_types.h"
4195489c19Sopenharmony_ci#include "bluetooth_remote_device.h"
4295489c19Sopenharmony_ci#include "bluetooth_device_class.h"
4395489c19Sopenharmony_ci#include "refbase.h"
4495489c19Sopenharmony_ci#include "bluetooth_no_destructor.h"
4595489c19Sopenharmony_ci
4695489c19Sopenharmony_cinamespace OHOS { class IRemoteObject; }
4795489c19Sopenharmony_cinamespace OHOS {
4895489c19Sopenharmony_cinamespace Bluetooth {
4995489c19Sopenharmony_ci/**
5095489c19Sopenharmony_ci * @brief Represents framework host device basic observer.
5195489c19Sopenharmony_ci *
5295489c19Sopenharmony_ci * @since 6
5395489c19Sopenharmony_ci */
5495489c19Sopenharmony_ciclass BluetoothHostObserver {
5595489c19Sopenharmony_cipublic:
5695489c19Sopenharmony_ci    /**
5795489c19Sopenharmony_ci     * @brief A destructor used to delete the <b>BluetoothHostObserver</b> instance.
5895489c19Sopenharmony_ci     *
5995489c19Sopenharmony_ci     * @since 6
6095489c19Sopenharmony_ci     */
6195489c19Sopenharmony_ci    virtual ~BluetoothHostObserver() = default;
6295489c19Sopenharmony_ci
6395489c19Sopenharmony_ci    // common
6495489c19Sopenharmony_ci    /**
6595489c19Sopenharmony_ci     * @brief Adapter state change function.
6695489c19Sopenharmony_ci     *
6795489c19Sopenharmony_ci     * @param transport Transport type when state change.
6895489c19Sopenharmony_ci     *        BTTransport::ADAPTER_BREDR : classic;
6995489c19Sopenharmony_ci     *        BTTransport::ADAPTER_BLE : ble.
7095489c19Sopenharmony_ci     * @param state Change to the new state.
7195489c19Sopenharmony_ci     *        BTStateID::STATE_TURNING_ON;
7295489c19Sopenharmony_ci     *        BTStateID::STATE_TURN_ON;
7395489c19Sopenharmony_ci     *        BTStateID::STATE_TURNING_OFF;
7495489c19Sopenharmony_ci     *        BTStateID::STATE_TURN_OFF.
7595489c19Sopenharmony_ci     * @since 6
7695489c19Sopenharmony_ci     */
7795489c19Sopenharmony_ci    virtual void OnStateChanged(const int transport, const int status) = 0;
7895489c19Sopenharmony_ci
7995489c19Sopenharmony_ci    // gap
8095489c19Sopenharmony_ci    /**
8195489c19Sopenharmony_ci     * @brief Discovery state changed observer.
8295489c19Sopenharmony_ci     *
8395489c19Sopenharmony_ci     * @param status Device discovery status.
8495489c19Sopenharmony_ci     * @since 6
8595489c19Sopenharmony_ci     */
8695489c19Sopenharmony_ci    virtual void OnDiscoveryStateChanged(int status) = 0;
8795489c19Sopenharmony_ci
8895489c19Sopenharmony_ci    /**
8995489c19Sopenharmony_ci     * @brief Discovery result observer.
9095489c19Sopenharmony_ci     *
9195489c19Sopenharmony_ci     * @param device Remote device.
9295489c19Sopenharmony_ci     * @param rssi Rssi of device.
9395489c19Sopenharmony_ci     * @param deviceName Name of device.
9495489c19Sopenharmony_ci     * @param deviceClass Class of device.
9595489c19Sopenharmony_ci     * @since 6
9695489c19Sopenharmony_ci     */
9795489c19Sopenharmony_ci    virtual void OnDiscoveryResult(
9895489c19Sopenharmony_ci        const BluetoothRemoteDevice &device, int rssi, const std::string deviceName, int deviceClass) = 0;
9995489c19Sopenharmony_ci
10095489c19Sopenharmony_ci    /**
10195489c19Sopenharmony_ci     * @brief Pair request observer.
10295489c19Sopenharmony_ci     *
10395489c19Sopenharmony_ci     * @param device Remote device.
10495489c19Sopenharmony_ci     * @since 6
10595489c19Sopenharmony_ci     */
10695489c19Sopenharmony_ci    virtual void OnPairRequested(const BluetoothRemoteDevice &device) = 0;
10795489c19Sopenharmony_ci
10895489c19Sopenharmony_ci    /**
10995489c19Sopenharmony_ci     * @brief Pair confirmed observer.
11095489c19Sopenharmony_ci     *
11195489c19Sopenharmony_ci     * @param device Remote device.
11295489c19Sopenharmony_ci     * @param reqType Pair type.
11395489c19Sopenharmony_ci     * @param number Paired passkey.
11495489c19Sopenharmony_ci     * @since 6
11595489c19Sopenharmony_ci     */
11695489c19Sopenharmony_ci    virtual void OnPairConfirmed(const BluetoothRemoteDevice &device, int reqType, int number) = 0;
11795489c19Sopenharmony_ci
11895489c19Sopenharmony_ci    /**
11995489c19Sopenharmony_ci     * @brief Scan mode changed observer.
12095489c19Sopenharmony_ci     *
12195489c19Sopenharmony_ci     * @param mode Device scan mode.
12295489c19Sopenharmony_ci     * @since 6
12395489c19Sopenharmony_ci     */
12495489c19Sopenharmony_ci    virtual void OnScanModeChanged(int mode) = 0;
12595489c19Sopenharmony_ci
12695489c19Sopenharmony_ci    /**
12795489c19Sopenharmony_ci     * @brief Device name changed observer.
12895489c19Sopenharmony_ci     *
12995489c19Sopenharmony_ci     * @param deviceName Device name.
13095489c19Sopenharmony_ci     * @since 6
13195489c19Sopenharmony_ci     */
13295489c19Sopenharmony_ci    virtual void OnDeviceNameChanged(const std::string &deviceName) = 0;
13395489c19Sopenharmony_ci
13495489c19Sopenharmony_ci    /**
13595489c19Sopenharmony_ci     * @brief Device address changed observer.
13695489c19Sopenharmony_ci     *
13795489c19Sopenharmony_ci     * @param address Device address.
13895489c19Sopenharmony_ci     * @since 6
13995489c19Sopenharmony_ci     */
14095489c19Sopenharmony_ci    virtual void OnDeviceAddrChanged(const std::string &address) = 0;
14195489c19Sopenharmony_ci};
14295489c19Sopenharmony_ci
14395489c19Sopenharmony_ci/**
14495489c19Sopenharmony_ci * @brief Represents remote device observer.
14595489c19Sopenharmony_ci *
14695489c19Sopenharmony_ci * @since 6
14795489c19Sopenharmony_ci */
14895489c19Sopenharmony_ciclass BluetoothRemoteDeviceObserver {
14995489c19Sopenharmony_cipublic:
15095489c19Sopenharmony_ci    /**
15195489c19Sopenharmony_ci     * @brief A destructor used to delete the <b>BluetoothRemoteDeviceObserver</b> instance.
15295489c19Sopenharmony_ci     *
15395489c19Sopenharmony_ci     * @since 6
15495489c19Sopenharmony_ci     */
15595489c19Sopenharmony_ci    virtual ~BluetoothRemoteDeviceObserver() = default;
15695489c19Sopenharmony_ci
15795489c19Sopenharmony_ci    /**
15895489c19Sopenharmony_ci     * @brief Acl state changed observer.
15995489c19Sopenharmony_ci     *
16095489c19Sopenharmony_ci     * @param device Remote device.
16195489c19Sopenharmony_ci     * @param state Remote device acl state.
16295489c19Sopenharmony_ci     * @param reason Remote device reason.
16395489c19Sopenharmony_ci     * @since 6
16495489c19Sopenharmony_ci     */
16595489c19Sopenharmony_ci    virtual void OnAclStateChanged(const BluetoothRemoteDevice &device, int state, unsigned int reason) = 0;
16695489c19Sopenharmony_ci
16795489c19Sopenharmony_ci    /**
16895489c19Sopenharmony_ci     * @brief Pair status changed observer.
16995489c19Sopenharmony_ci     *
17095489c19Sopenharmony_ci     * @param device Remote device.
17195489c19Sopenharmony_ci     * @param status Remote device pair status.
17295489c19Sopenharmony_ci     * @param cause Pair fail cause.
17395489c19Sopenharmony_ci     * @since 12
17495489c19Sopenharmony_ci     */
17595489c19Sopenharmony_ci    virtual void OnPairStatusChanged(const BluetoothRemoteDevice &device, int status, int cause) = 0;
17695489c19Sopenharmony_ci
17795489c19Sopenharmony_ci    /**
17895489c19Sopenharmony_ci     * @brief Remote uuid changed observer.
17995489c19Sopenharmony_ci     *
18095489c19Sopenharmony_ci     * @param device Remote device.
18195489c19Sopenharmony_ci     * @param uuids Remote device uuids.
18295489c19Sopenharmony_ci     * @since 6
18395489c19Sopenharmony_ci     */
18495489c19Sopenharmony_ci    virtual void OnRemoteUuidChanged(const BluetoothRemoteDevice &device, const std::vector<ParcelUuid> &uuids) = 0;
18595489c19Sopenharmony_ci
18695489c19Sopenharmony_ci    /**
18795489c19Sopenharmony_ci     * @brief Remote name changed observer.
18895489c19Sopenharmony_ci     *
18995489c19Sopenharmony_ci     * @param device Remote device.
19095489c19Sopenharmony_ci     * @param deviceName Remote device name.
19195489c19Sopenharmony_ci     * @since 6
19295489c19Sopenharmony_ci     */
19395489c19Sopenharmony_ci    virtual void OnRemoteNameChanged(const BluetoothRemoteDevice &device, const std::string &deviceName) = 0;
19495489c19Sopenharmony_ci
19595489c19Sopenharmony_ci    /**
19695489c19Sopenharmony_ci     * @brief Remote alias changed observer.
19795489c19Sopenharmony_ci     *
19895489c19Sopenharmony_ci     * @param device Remote device.
19995489c19Sopenharmony_ci     * @param alias Remote device alias.
20095489c19Sopenharmony_ci     * @since 6
20195489c19Sopenharmony_ci     */
20295489c19Sopenharmony_ci    virtual void OnRemoteAliasChanged(const BluetoothRemoteDevice &device, const std::string &alias) = 0;
20395489c19Sopenharmony_ci
20495489c19Sopenharmony_ci    /**
20595489c19Sopenharmony_ci     * @brief Remote cod changed observer.
20695489c19Sopenharmony_ci     *
20795489c19Sopenharmony_ci     * @param device Remote device.
20895489c19Sopenharmony_ci     * @param cod Remote device cod.
20995489c19Sopenharmony_ci     * @since 6
21095489c19Sopenharmony_ci     */
21195489c19Sopenharmony_ci    virtual void OnRemoteCodChanged(const BluetoothRemoteDevice &device, const BluetoothDeviceClass &cod) = 0;
21295489c19Sopenharmony_ci
21395489c19Sopenharmony_ci    /**
21495489c19Sopenharmony_ci     * @brief Remote battery level changed observer.
21595489c19Sopenharmony_ci     *
21695489c19Sopenharmony_ci     * @param device Remote device.
21795489c19Sopenharmony_ci     * @param cod Remote device battery Level.
21895489c19Sopenharmony_ci     * @since 6
21995489c19Sopenharmony_ci     */
22095489c19Sopenharmony_ci    virtual void OnRemoteBatteryLevelChanged(const BluetoothRemoteDevice &device, int batteryLevel) = 0;
22195489c19Sopenharmony_ci
22295489c19Sopenharmony_ci    /**
22395489c19Sopenharmony_ci     * @brief Remote rssi event observer.
22495489c19Sopenharmony_ci     *
22595489c19Sopenharmony_ci     * @param device Remote device.
22695489c19Sopenharmony_ci     * @param rssi Remote device rssi.
22795489c19Sopenharmony_ci     * @param status Read status.
22895489c19Sopenharmony_ci     * @since 6
22995489c19Sopenharmony_ci     */
23095489c19Sopenharmony_ci    virtual void OnReadRemoteRssiEvent(const BluetoothRemoteDevice &device, int rssi, int status) = 0;
23195489c19Sopenharmony_ci
23295489c19Sopenharmony_ci    /**
23395489c19Sopenharmony_ci     * @brief Remote device battery info observer.
23495489c19Sopenharmony_ci     *
23595489c19Sopenharmony_ci     * @param device Remote device.
23695489c19Sopenharmony_ci     * @param batteryInfo Remote device batteryInfo
23795489c19Sopenharmony_ci     * @since 12
23895489c19Sopenharmony_ci     */
23995489c19Sopenharmony_ci    virtual void OnRemoteBatteryChanged(const BluetoothRemoteDevice &device, const DeviceBatteryInfo &batteryInfo)
24095489c19Sopenharmony_ci    {};
24195489c19Sopenharmony_ci
24295489c19Sopenharmony_ci    /**
24395489c19Sopenharmony_ci     * @brief Remote device common value observer.
24495489c19Sopenharmony_ci     *
24595489c19Sopenharmony_ci     * @param device Remote device.
24695489c19Sopenharmony_ci     * @param value Remote device report info
24795489c19Sopenharmony_ci     * @since 12
24895489c19Sopenharmony_ci     */
24995489c19Sopenharmony_ci    virtual void OnRemoteDeviceCommonInfoReport(const BluetoothRemoteDevice &device, const std::vector<uint8_t> &value)
25095489c19Sopenharmony_ci    {};
25195489c19Sopenharmony_ci};
25295489c19Sopenharmony_ci
25395489c19Sopenharmony_ci/**
25495489c19Sopenharmony_ci * @brief Represents bluetooth resource manager observer.
25595489c19Sopenharmony_ci *
25695489c19Sopenharmony_ci * @since 12
25795489c19Sopenharmony_ci */
25895489c19Sopenharmony_ciclass BluetoothResourceManagerObserver {
25995489c19Sopenharmony_cipublic:
26095489c19Sopenharmony_ci    /**
26195489c19Sopenharmony_ci     * @brief A destructor used to delete the <b>BluetoothResourceManagerObserver</b> instance.
26295489c19Sopenharmony_ci     *
26395489c19Sopenharmony_ci     * @since 12
26495489c19Sopenharmony_ci     */
26595489c19Sopenharmony_ci    virtual ~BluetoothResourceManagerObserver() = default;
26695489c19Sopenharmony_ci
26795489c19Sopenharmony_ci    /**
26895489c19Sopenharmony_ci     * @brief sensing state changed observer.
26995489c19Sopenharmony_ci     *
27095489c19Sopenharmony_ci     * @param eventId bluetooth resource manager event id.
27195489c19Sopenharmony_ci     * @param info bluetooth sensing information.
27295489c19Sopenharmony_ci     * @since 12
27395489c19Sopenharmony_ci     */
27495489c19Sopenharmony_ci    virtual void OnSensingStateChanged(uint8_t eventId, const SensingInfo &info)
27595489c19Sopenharmony_ci    {};
27695489c19Sopenharmony_ci
27795489c19Sopenharmony_ci    /**
27895489c19Sopenharmony_ci     * @brief bluetooth resource decision observer.
27995489c19Sopenharmony_ci     *
28095489c19Sopenharmony_ci     * @param eventId bluetooth resource manager event id.
28195489c19Sopenharmony_ci     * @param info bluetooth sensing information.
28295489c19Sopenharmony_ci     * @param result bluetooth resource decision result.
28395489c19Sopenharmony_ci     * @since 12
28495489c19Sopenharmony_ci     */
28595489c19Sopenharmony_ci    virtual void OnBluetoothResourceDecision(uint8_t eventId, const SensingInfo &info, uint32_t &result)
28695489c19Sopenharmony_ci    {};
28795489c19Sopenharmony_ci};
28895489c19Sopenharmony_ci
28995489c19Sopenharmony_ci/**
29095489c19Sopenharmony_ci * @brief Represents framework host device.
29195489c19Sopenharmony_ci *
29295489c19Sopenharmony_ci * @since 6
29395489c19Sopenharmony_ci */
29495489c19Sopenharmony_ciclass BLUETOOTH_API BluetoothHost {
29595489c19Sopenharmony_cipublic:
29695489c19Sopenharmony_ci    // common
29795489c19Sopenharmony_ci    /**
29895489c19Sopenharmony_ci     * @brief Get default host device.
29995489c19Sopenharmony_ci     *
30095489c19Sopenharmony_ci     * @return Returns the singleton instance.
30195489c19Sopenharmony_ci     * @since 6
30295489c19Sopenharmony_ci     */
30395489c19Sopenharmony_ci    static BluetoothHost &GetDefaultHost();
30495489c19Sopenharmony_ci
30595489c19Sopenharmony_ci    /**
30695489c19Sopenharmony_ci     * @brief Get remote device instance.
30795489c19Sopenharmony_ci     *
30895489c19Sopenharmony_ci     * @param addr Remote device address.
30995489c19Sopenharmony_ci     * @param transport Adapter transport.
31095489c19Sopenharmony_ci     * @return Returns remote device instance.
31195489c19Sopenharmony_ci     * @since 6
31295489c19Sopenharmony_ci     */
31395489c19Sopenharmony_ci    BluetoothRemoteDevice GetRemoteDevice(const std::string &addr, int transport) const;
31495489c19Sopenharmony_ci
31595489c19Sopenharmony_ci    /**
31695489c19Sopenharmony_ci     * @brief Register observer.
31795489c19Sopenharmony_ci     *
31895489c19Sopenharmony_ci     * @param observer Class BluetoothHostObserver pointer to register observer.
31995489c19Sopenharmony_ci     * @since 6
32095489c19Sopenharmony_ci     */
32195489c19Sopenharmony_ci    void RegisterObserver(std::shared_ptr<BluetoothHostObserver> observer);
32295489c19Sopenharmony_ci
32395489c19Sopenharmony_ci    /**
32495489c19Sopenharmony_ci     * @brief Deregister observer.
32595489c19Sopenharmony_ci     *
32695489c19Sopenharmony_ci     * @param observer Class BluetoothHostObserver pointer to deregister observer.
32795489c19Sopenharmony_ci     * @since 6
32895489c19Sopenharmony_ci     */
32995489c19Sopenharmony_ci    void DeregisterObserver(std::shared_ptr<BluetoothHostObserver> observer);
33095489c19Sopenharmony_ci
33195489c19Sopenharmony_ci    /**
33295489c19Sopenharmony_ci     * @brief Enable classic.
33395489c19Sopenharmony_ci     *
33495489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is accepted;
33595489c19Sopenharmony_ci     *         returns <b>false</b> if the operation is rejected.
33695489c19Sopenharmony_ci     * @since 6
33795489c19Sopenharmony_ci     */
33895489c19Sopenharmony_ci    int EnableBt();
33995489c19Sopenharmony_ci
34095489c19Sopenharmony_ci    /**
34195489c19Sopenharmony_ci     * @brief Disable classic.
34295489c19Sopenharmony_ci     *
34395489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is accepted;
34495489c19Sopenharmony_ci     *         returns <b>false</b> if the operation is rejected.
34595489c19Sopenharmony_ci     * @since 6
34695489c19Sopenharmony_ci     */
34795489c19Sopenharmony_ci    int DisableBt();
34895489c19Sopenharmony_ci
34995489c19Sopenharmony_ci    /**
35095489c19Sopenharmony_ci     * @brief Get classic enable/disable state.
35195489c19Sopenharmony_ci     *
35295489c19Sopenharmony_ci     * @return Returns classic enable/disable state.
35395489c19Sopenharmony_ci     *         BTStateID::STATE_TURNING_ON;
35495489c19Sopenharmony_ci     *         BTStateID::STATE_TURN_ON;
35595489c19Sopenharmony_ci     *         BTStateID::STATE_TURNING_OFF;
35695489c19Sopenharmony_ci     *         BTStateID::STATE_TURN_OFF.
35795489c19Sopenharmony_ci     * @since 6
35895489c19Sopenharmony_ci     */
35995489c19Sopenharmony_ci    int GetBtState() const;
36095489c19Sopenharmony_ci
36195489c19Sopenharmony_ci    /**
36295489c19Sopenharmony_ci     * @brief Get classic enable/disable state.
36395489c19Sopenharmony_ci     *
36495489c19Sopenharmony_ci     * @param Returns classic enable/disable state.
36595489c19Sopenharmony_ci     *         BTStateID::STATE_TURNING_ON;
36695489c19Sopenharmony_ci     *         BTStateID::STATE_TURN_ON;
36795489c19Sopenharmony_ci     *         BTStateID::STATE_TURNING_OFF;
36895489c19Sopenharmony_ci     *         BTStateID::STATE_TURN_OFF.
36995489c19Sopenharmony_ci     * @since 6
37095489c19Sopenharmony_ci     */
37195489c19Sopenharmony_ci    int GetBtState(int &state) const;
37295489c19Sopenharmony_ci
37395489c19Sopenharmony_ci    /**
37495489c19Sopenharmony_ci     * @brief Disable ble.
37595489c19Sopenharmony_ci     *
37695489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is accepted;
37795489c19Sopenharmony_ci     *         returns <b>false</b> if the operation is rejected.
37895489c19Sopenharmony_ci     * @since 6
37995489c19Sopenharmony_ci     */
38095489c19Sopenharmony_ci    int DisableBle();
38195489c19Sopenharmony_ci
38295489c19Sopenharmony_ci    /**
38395489c19Sopenharmony_ci     * @brief Enable ble.
38495489c19Sopenharmony_ci     *
38595489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is accepted;
38695489c19Sopenharmony_ci     *         returns <b>false</b> if the operation is rejected.
38795489c19Sopenharmony_ci     * @since 6
38895489c19Sopenharmony_ci     */
38995489c19Sopenharmony_ci    int EnableBle();
39095489c19Sopenharmony_ci
39195489c19Sopenharmony_ci    /**
39295489c19Sopenharmony_ci     * @brief Enable bluetooth to restrict mode.
39395489c19Sopenharmony_ci     *
39495489c19Sopenharmony_ci     * @return Returns BT_NO_ERROR if the operation is accepted;
39595489c19Sopenharmony_ci     *         returns others if the operation is rejected.
39695489c19Sopenharmony_ci     * @since 12
39795489c19Sopenharmony_ci     */
39895489c19Sopenharmony_ci    int EnableBluetoothToRestrictMode(void);
39995489c19Sopenharmony_ci
40095489c19Sopenharmony_ci    /**
40195489c19Sopenharmony_ci     * @brief Get br/edr enable/disable state.
40295489c19Sopenharmony_ci     *
40395489c19Sopenharmony_ci     * @return Returns <b>true</b> if br is enabled;
40495489c19Sopenharmony_ci     *         returns <b>false</b> if br is not enabled.
40595489c19Sopenharmony_ci     * @since 6
40695489c19Sopenharmony_ci     */
40795489c19Sopenharmony_ci    bool IsBrEnabled() const;
40895489c19Sopenharmony_ci
40995489c19Sopenharmony_ci    /**
41095489c19Sopenharmony_ci     * @brief Get ble enable/disable state.
41195489c19Sopenharmony_ci     *
41295489c19Sopenharmony_ci     * @return Returns <b>true</b> if ble is enabled;
41395489c19Sopenharmony_ci     *         returns <b>false</b> if ble is not enabled.
41495489c19Sopenharmony_ci     * @since 6
41595489c19Sopenharmony_ci     */
41695489c19Sopenharmony_ci    bool IsBleEnabled() const;
41795489c19Sopenharmony_ci
41895489c19Sopenharmony_ci    /**
41995489c19Sopenharmony_ci     * @brief Factory reset bluetooth service.
42095489c19Sopenharmony_ci     *
42195489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
42295489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
42395489c19Sopenharmony_ci     * @since 6
42495489c19Sopenharmony_ci     */
42595489c19Sopenharmony_ci    int BluetoothFactoryReset();
42695489c19Sopenharmony_ci
42795489c19Sopenharmony_ci    /**
42895489c19Sopenharmony_ci     * @brief Get profile service ID list.
42995489c19Sopenharmony_ci     *
43095489c19Sopenharmony_ci     * @return Returns vector of enabled profile services ID.
43195489c19Sopenharmony_ci     * @since 6
43295489c19Sopenharmony_ci     */
43395489c19Sopenharmony_ci    std::vector<uint32_t> GetProfileList() const;
43495489c19Sopenharmony_ci
43595489c19Sopenharmony_ci    /**
43695489c19Sopenharmony_ci     * @brief Get max audio connected devices number.
43795489c19Sopenharmony_ci     *
43895489c19Sopenharmony_ci     * @return Returns max device number that audio can connect.
43995489c19Sopenharmony_ci     * @since 6
44095489c19Sopenharmony_ci     */
44195489c19Sopenharmony_ci    int GetMaxNumConnectedAudioDevices() const;
44295489c19Sopenharmony_ci
44395489c19Sopenharmony_ci    /**
44495489c19Sopenharmony_ci     * @brief Get bluetooth connects state.
44595489c19Sopenharmony_ci     *
44695489c19Sopenharmony_ci     * @return Returns bluetooth connects state.
44795489c19Sopenharmony_ci     *         BTConnectState::CONNECTING;
44895489c19Sopenharmony_ci     *         BTConnectState::CONNECTED;
44995489c19Sopenharmony_ci     *         BTConnectState::DISCONNECTING;
45095489c19Sopenharmony_ci     *         BTConnectState::DISCONNECTED.
45195489c19Sopenharmony_ci     * @since 6
45295489c19Sopenharmony_ci     */
45395489c19Sopenharmony_ci    int GetBtConnectionState() const;
45495489c19Sopenharmony_ci
45595489c19Sopenharmony_ci    /**
45695489c19Sopenharmony_ci     * @brief Get bluetooth connects state.
45795489c19Sopenharmony_ci     *
45895489c19Sopenharmony_ci     * @return Returns bluetooth connects state.
45995489c19Sopenharmony_ci     *         BTConnectState::CONNECTING;
46095489c19Sopenharmony_ci     *         BTConnectState::CONNECTED;
46195489c19Sopenharmony_ci     *         BTConnectState::DISCONNECTING;
46295489c19Sopenharmony_ci     *         BTConnectState::DISCONNECTED.
46395489c19Sopenharmony_ci     * @since 6
46495489c19Sopenharmony_ci     */
46595489c19Sopenharmony_ci    int GetBtConnectionState(int &state) const;
46695489c19Sopenharmony_ci
46795489c19Sopenharmony_ci    /**
46895489c19Sopenharmony_ci     * @brief Get profile service connect state.
46995489c19Sopenharmony_ci     *
47095489c19Sopenharmony_ci     * @param profileID Profile service ID.
47195489c19Sopenharmony_ci     * @return Returns connect state for designated profile service.
47295489c19Sopenharmony_ci     *         BTConnectState::CONNECTING;
47395489c19Sopenharmony_ci     *         BTConnectState::CONNECTED;
47495489c19Sopenharmony_ci     *         BTConnectState::DISCONNECTING;
47595489c19Sopenharmony_ci     *         BTConnectState::DISCONNECTED.
47695489c19Sopenharmony_ci     * @since 6
47795489c19Sopenharmony_ci     */
47895489c19Sopenharmony_ci    int GetBtProfileConnState(uint32_t profileId, int &state) const;
47995489c19Sopenharmony_ci
48095489c19Sopenharmony_ci    /**
48195489c19Sopenharmony_ci     * @brief Get local device supported uuids.
48295489c19Sopenharmony_ci     *
48395489c19Sopenharmony_ci     * @param[out] Vector which use to return support uuids.
48495489c19Sopenharmony_ci     * @since 6
48595489c19Sopenharmony_ci     */
48695489c19Sopenharmony_ci    void GetLocalSupportedUuids(std::vector<ParcelUuid> &uuids);
48795489c19Sopenharmony_ci
48895489c19Sopenharmony_ci    /**
48995489c19Sopenharmony_ci     * @brief Start adapter manager, passthrough only.
49095489c19Sopenharmony_ci     *
49195489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
49295489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
49395489c19Sopenharmony_ci     * @since 6
49495489c19Sopenharmony_ci     */
49595489c19Sopenharmony_ci    bool Start();
49695489c19Sopenharmony_ci
49795489c19Sopenharmony_ci    /**
49895489c19Sopenharmony_ci     * @brief Stop adapter manager, passthrough only.
49995489c19Sopenharmony_ci     *
50095489c19Sopenharmony_ci     * @since 6
50195489c19Sopenharmony_ci     */
50295489c19Sopenharmony_ci    void Stop();
50395489c19Sopenharmony_ci
50495489c19Sopenharmony_ci    // gap
50595489c19Sopenharmony_ci    /**
50695489c19Sopenharmony_ci     * @brief Get local device class.
50795489c19Sopenharmony_ci     *
50895489c19Sopenharmony_ci     * @return Returns local device class.
50995489c19Sopenharmony_ci     * @since 6
51095489c19Sopenharmony_ci     */
51195489c19Sopenharmony_ci    BluetoothDeviceClass GetLocalDeviceClass() const;
51295489c19Sopenharmony_ci
51395489c19Sopenharmony_ci    /**
51495489c19Sopenharmony_ci     * @brief Set local device class.
51595489c19Sopenharmony_ci     *
51695489c19Sopenharmony_ci     * @param deviceClass Device class.
51795489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
51895489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
51995489c19Sopenharmony_ci     * @since 6
52095489c19Sopenharmony_ci     */
52195489c19Sopenharmony_ci    bool SetLocalDeviceClass(const BluetoothDeviceClass &deviceClass);
52295489c19Sopenharmony_ci
52395489c19Sopenharmony_ci    /**
52495489c19Sopenharmony_ci     * @brief Get local device address.
52595489c19Sopenharmony_ci     *
52695489c19Sopenharmony_ci     * @param addr local address.
52795489c19Sopenharmony_ci     * @return Returns {@link BT_NO_ERROR} if the operation is successful;
52895489c19Sopenharmony_ci     *         returns an error code defined in {@link BtErrCode} otherwise.
52995489c19Sopenharmony_ci     * @since 6
53095489c19Sopenharmony_ci     */
53195489c19Sopenharmony_ci    int GetLocalAddress(std::string &addr) const;
53295489c19Sopenharmony_ci
53395489c19Sopenharmony_ci    /**
53495489c19Sopenharmony_ci     * @brief Get local device name.
53595489c19Sopenharmony_ci     *
53695489c19Sopenharmony_ci     * @return Returns local device name.
53795489c19Sopenharmony_ci     * @since 6
53895489c19Sopenharmony_ci     */
53995489c19Sopenharmony_ci    std::string GetLocalName() const;
54095489c19Sopenharmony_ci
54195489c19Sopenharmony_ci    /**
54295489c19Sopenharmony_ci     * @brief Get local device name.
54395489c19Sopenharmony_ci     *
54495489c19Sopenharmony_ci     * @return Returns local device name.
54595489c19Sopenharmony_ci     * @since 6
54695489c19Sopenharmony_ci     */
54795489c19Sopenharmony_ci    int GetLocalName(std::string &name) const;
54895489c19Sopenharmony_ci
54995489c19Sopenharmony_ci    /**
55095489c19Sopenharmony_ci     * @brief Set local device name.
55195489c19Sopenharmony_ci     *
55295489c19Sopenharmony_ci     * @param name Device name.
55395489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
55495489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
55595489c19Sopenharmony_ci     * @since 6
55695489c19Sopenharmony_ci     */
55795489c19Sopenharmony_ci    int SetLocalName(const std::string &name);
55895489c19Sopenharmony_ci
55995489c19Sopenharmony_ci    /**
56095489c19Sopenharmony_ci     * @brief Get device scan mode.
56195489c19Sopenharmony_ci     *
56295489c19Sopenharmony_ci     * @return Returns bluetooth scan mode.
56395489c19Sopenharmony_ci     * @since 6
56495489c19Sopenharmony_ci     */
56595489c19Sopenharmony_ci    int GetBtScanMode(int32_t &scanMode) const;
56695489c19Sopenharmony_ci
56795489c19Sopenharmony_ci    /**
56895489c19Sopenharmony_ci     * @brief Set device scan mode.
56995489c19Sopenharmony_ci     *
57095489c19Sopenharmony_ci     * @param mode Scan mode.
57195489c19Sopenharmony_ci     * @param duration Scan time.
57295489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
57395489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
57495489c19Sopenharmony_ci     * @since 6
57595489c19Sopenharmony_ci     */
57695489c19Sopenharmony_ci    int SetBtScanMode(int mode, int duration);
57795489c19Sopenharmony_ci
57895489c19Sopenharmony_ci    /**
57995489c19Sopenharmony_ci     * @brief Get local device bondable mode.
58095489c19Sopenharmony_ci     *
58195489c19Sopenharmony_ci     * @param transport Adapter transport.
58295489c19Sopenharmony_ci     * @return Returns local device bondable mode.
58395489c19Sopenharmony_ci     * @since 6
58495489c19Sopenharmony_ci     */
58595489c19Sopenharmony_ci    int GetBondableMode(int transport) const;
58695489c19Sopenharmony_ci
58795489c19Sopenharmony_ci    /**
58895489c19Sopenharmony_ci     * @brief Set local device bondable mode.
58995489c19Sopenharmony_ci     *
59095489c19Sopenharmony_ci     * @param transport Adapter transport.
59195489c19Sopenharmony_ci     * @param mode Device bondable mode.
59295489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
59395489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
59495489c19Sopenharmony_ci     * @since 6
59595489c19Sopenharmony_ci     */
59695489c19Sopenharmony_ci    bool SetBondableMode(int transport, int mode);
59795489c19Sopenharmony_ci
59895489c19Sopenharmony_ci    /**
59995489c19Sopenharmony_ci     * @brief Get device address.
60095489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
60195489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
60295489c19Sopenharmony_ci     * @since 6
60395489c19Sopenharmony_ci     */
60495489c19Sopenharmony_ci    int StartBtDiscovery();
60595489c19Sopenharmony_ci
60695489c19Sopenharmony_ci    /**
60795489c19Sopenharmony_ci     * @brief Cancel device discovery.
60895489c19Sopenharmony_ci     *
60995489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
61095489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
61195489c19Sopenharmony_ci     * @since 6
61295489c19Sopenharmony_ci     */
61395489c19Sopenharmony_ci    int CancelBtDiscovery();
61495489c19Sopenharmony_ci
61595489c19Sopenharmony_ci    /**
61695489c19Sopenharmony_ci     * @brief Check if device is discovering.
61795489c19Sopenharmony_ci     *
61895489c19Sopenharmony_ci     * @return Returns <b>BT_NO_ERROR</b> if the operation is successful;
61995489c19Sopenharmony_ci     *         returns <b>false</b> if device is not discovering.
62095489c19Sopenharmony_ci     * @since 6
62195489c19Sopenharmony_ci     */
62295489c19Sopenharmony_ci    int IsBtDiscovering(bool &isDisCovering, int transport = BT_TRANSPORT_BREDR) const;
62395489c19Sopenharmony_ci
62495489c19Sopenharmony_ci    /**
62595489c19Sopenharmony_ci     * @brief Get device discovery end time.
62695489c19Sopenharmony_ci     *
62795489c19Sopenharmony_ci     * @return Returns device discovery end time.
62895489c19Sopenharmony_ci     * @since 6
62995489c19Sopenharmony_ci     */
63095489c19Sopenharmony_ci    long GetBtDiscoveryEndMillis() const;
63195489c19Sopenharmony_ci
63295489c19Sopenharmony_ci    /**
63395489c19Sopenharmony_ci     * @brief Get paired devices.
63495489c19Sopenharmony_ci     *
63595489c19Sopenharmony_ci     * @param transport Adapter transport.
63695489c19Sopenharmony_ci     * @return Returns paired devices vector.
63795489c19Sopenharmony_ci     * @since 6
63895489c19Sopenharmony_ci     */
63995489c19Sopenharmony_ci    int32_t GetPairedDevices(int transport, std::vector<BluetoothRemoteDevice> &pairedDevices) const;
64095489c19Sopenharmony_ci
64195489c19Sopenharmony_ci    /**
64295489c19Sopenharmony_ci     * @brief Remove pair.
64395489c19Sopenharmony_ci     *
64495489c19Sopenharmony_ci     * @param device Remote device address.
64595489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
64695489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
64795489c19Sopenharmony_ci     * @since 6
64895489c19Sopenharmony_ci     */
64995489c19Sopenharmony_ci    int32_t RemovePair(const BluetoothRemoteDevice &device);
65095489c19Sopenharmony_ci
65195489c19Sopenharmony_ci    /**
65295489c19Sopenharmony_ci     * @brief Remove all pairs.
65395489c19Sopenharmony_ci     *
65495489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
65595489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
65695489c19Sopenharmony_ci     * @since 6
65795489c19Sopenharmony_ci     */
65895489c19Sopenharmony_ci    bool RemoveAllPairs();
65995489c19Sopenharmony_ci
66095489c19Sopenharmony_ci    /**
66195489c19Sopenharmony_ci     * @brief Check if bluetooth address is valid.
66295489c19Sopenharmony_ci     *
66395489c19Sopenharmony_ci     * @param addr Bluetooth address.
66495489c19Sopenharmony_ci     * @return Returns <b>true</b> if bluetooth address is valid;
66595489c19Sopenharmony_ci     *         returns <b>false</b> if bluetooth address is not valid.
66695489c19Sopenharmony_ci     * @since 6
66795489c19Sopenharmony_ci     */
66895489c19Sopenharmony_ci    static bool IsValidBluetoothAddr(const std::string &addr);
66995489c19Sopenharmony_ci
67095489c19Sopenharmony_ci    /**
67195489c19Sopenharmony_ci     * @brief Register remote device observer.
67295489c19Sopenharmony_ci     *
67395489c19Sopenharmony_ci     * @param observer Class BluetoothRemoteDeviceObserver pointer to register observer.
67495489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
67595489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
67695489c19Sopenharmony_ci     * @since 6
67795489c19Sopenharmony_ci     */
67895489c19Sopenharmony_ci    void RegisterRemoteDeviceObserver(std::shared_ptr<BluetoothRemoteDeviceObserver> observer);
67995489c19Sopenharmony_ci
68095489c19Sopenharmony_ci    /**
68195489c19Sopenharmony_ci     * @brief Deregister remote device observer.
68295489c19Sopenharmony_ci     *
68395489c19Sopenharmony_ci     * @param observer Class BluetoothRemoteDeviceObserver pointer to deregister observer.
68495489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
68595489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
68695489c19Sopenharmony_ci     * @since 6
68795489c19Sopenharmony_ci     */
68895489c19Sopenharmony_ci    void DeregisterRemoteDeviceObserver(std::shared_ptr<BluetoothRemoteDeviceObserver> observer);
68995489c19Sopenharmony_ci
69095489c19Sopenharmony_ci    /**
69195489c19Sopenharmony_ci     * @brief Get max advertising data length.
69295489c19Sopenharmony_ci     *
69395489c19Sopenharmony_ci     * @return Returns max advertising data length.
69495489c19Sopenharmony_ci     * @since 6
69595489c19Sopenharmony_ci     */
69695489c19Sopenharmony_ci    int GetBleMaxAdvertisingDataLength() const;
69795489c19Sopenharmony_ci
69895489c19Sopenharmony_ci    void LoadSystemAbilitySuccess(const sptr<IRemoteObject> &remoteObject);
69995489c19Sopenharmony_ci
70095489c19Sopenharmony_ci    void LoadSystemAbilityFail();
70195489c19Sopenharmony_ci
70295489c19Sopenharmony_ci    void OnRemoveBluetoothSystemAbility();
70395489c19Sopenharmony_ci
70495489c19Sopenharmony_ci    /**
70595489c19Sopenharmony_ci     * @brief Get local profile uuids.
70695489c19Sopenharmony_ci     *
70795489c19Sopenharmony_ci     * @return Returns local profile uuids.
70895489c19Sopenharmony_ci     * @since 10
70995489c19Sopenharmony_ci     */
71095489c19Sopenharmony_ci    int32_t GetLocalProfileUuids(std::vector<std::string> &uuids);
71195489c19Sopenharmony_ci
71295489c19Sopenharmony_ci    /**
71395489c19Sopenharmony_ci    * @brief Set fast scan enable or disable.
71495489c19Sopenharmony_ci    * @param isEnable set fast scan status flag.
71595489c19Sopenharmony_ci    * @return Returns <b>true</b> if the operation is successful;
71695489c19Sopenharmony_ci    *         returns <b>false</b> if the operation fails.
71795489c19Sopenharmony_ci    */
71895489c19Sopenharmony_ci    int SetFastScan(bool isEnable);
71995489c19Sopenharmony_ci
72095489c19Sopenharmony_ci    /**
72195489c19Sopenharmony_ci    * @brief Get the random address of a device.
72295489c19Sopenharmony_ci    * If the address carried in the bluetooth interface is not obtained from the bluetooth,
72395489c19Sopenharmony_ci    * the interface needs to be used for address translation.
72495489c19Sopenharmony_ci    * @param realAddr real address.
72595489c19Sopenharmony_ci    * @param[out] randomAddr random address.
72695489c19Sopenharmony_ci    * @return Returns {@link BT_NO_ERROR} if get random address success;
72795489c19Sopenharmony_ci    * returns an error code defined in {@link BtErrCode} otherwise.
72895489c19Sopenharmony_ci    */
72995489c19Sopenharmony_ci    int GetRandomAddress(const std::string &realAddr, std::string &randomAddr) const;
73095489c19Sopenharmony_ci
73195489c19Sopenharmony_ci    /**
73295489c19Sopenharmony_ci    * @brief Connects all allowed bluetooth profiles between the local and remote device.
73395489c19Sopenharmony_ci    *
73495489c19Sopenharmony_ci    * @param remoteAddr remote device addr.
73595489c19Sopenharmony_ci    * @return Returns {@link BT_NO_ERROR} if the operation is successful;
73695489c19Sopenharmony_ci    *         returns an error code defined in {@link BtErrCode} otherwise.
73795489c19Sopenharmony_ci    * @since 11
73895489c19Sopenharmony_ci    */
73995489c19Sopenharmony_ci    int ConnectAllowedProfiles(const std::string &remoteAddr) const;
74095489c19Sopenharmony_ci
74195489c19Sopenharmony_ci    /**
74295489c19Sopenharmony_ci    * @brief Disconnects all allowed bluetooth profiles between the local and remote device.
74395489c19Sopenharmony_ci    *
74495489c19Sopenharmony_ci    * @param remoteAddr remote device addr.
74595489c19Sopenharmony_ci    * @return Returns {@link BT_NO_ERROR} if the operation is successful;
74695489c19Sopenharmony_ci    *         returns an error code defined in {@link BtErrCode} otherwise.
74795489c19Sopenharmony_ci    * @since 11
74895489c19Sopenharmony_ci    */
74995489c19Sopenharmony_ci    int DisconnectAllowedProfiles(const std::string &remoteAddr) const;
75095489c19Sopenharmony_ci
75195489c19Sopenharmony_ci    /**
75295489c19Sopenharmony_ci    * @brief Restrict Bluetooth BR/EDR ability, just BLE ability available.
75395489c19Sopenharmony_ci    *
75495489c19Sopenharmony_ci    * @return Returns {@link BT_NO_ERROR} if the operation is successful;
75595489c19Sopenharmony_ci    *         returns an error code defined in {@link BtErrCode} otherwise.
75695489c19Sopenharmony_ci    * @since 12
75795489c19Sopenharmony_ci    */
75895489c19Sopenharmony_ci    int RestrictBluetooth();
75995489c19Sopenharmony_ci    /**
76095489c19Sopenharmony_ci    * @brief update virtual device
76195489c19Sopenharmony_ci    *
76295489c19Sopenharmony_ci    * @param action add or delete virtual device.
76395489c19Sopenharmony_ci    * @param device device need to be operator.
76495489c19Sopenharmony_ci    * @since 12
76595489c19Sopenharmony_ci    */
76695489c19Sopenharmony_ci    void UpdateVirtualDevice(int32_t action, const std::string &address);
76795489c19Sopenharmony_ci
76895489c19Sopenharmony_ci    /**
76995489c19Sopenharmony_ci    * @brief Restrict Bluetooth BR/EDR ability, just BLE ability available.
77095489c19Sopenharmony_ci    *
77195489c19Sopenharmony_ci    * @param type satellite control type.
77295489c19Sopenharmony_ci    * @param state satellite state.
77395489c19Sopenharmony_ci    * @return Returns {@link BT_NO_ERROR} if the operation is successful;
77495489c19Sopenharmony_ci    *         returns an error code defined in {@link BtErrCode} otherwise.
77595489c19Sopenharmony_ci    * @since 12
77695489c19Sopenharmony_ci    */
77795489c19Sopenharmony_ci    int SatelliteControl(int type, int state);
77895489c19Sopenharmony_ci
77995489c19Sopenharmony_ci    /**
78095489c19Sopenharmony_ci     * @brief Register bluetooth resource manager observer.
78195489c19Sopenharmony_ci     *
78295489c19Sopenharmony_ci     * @param observer Class RegisterBtResourceManagerObserver pointer to register observer.
78395489c19Sopenharmony_ci     * @since 12
78495489c19Sopenharmony_ci     */
78595489c19Sopenharmony_ci    void RegisterBtResourceManagerObserver(std::shared_ptr<BluetoothResourceManagerObserver> observer);
78695489c19Sopenharmony_ci
78795489c19Sopenharmony_ci    /**
78895489c19Sopenharmony_ci     * @brief Deregister bluetooth resource manager observer.
78995489c19Sopenharmony_ci     *
79095489c19Sopenharmony_ci     * @param observer Class RegisterBtResourceManagerObserver pointer to deregister observer.
79195489c19Sopenharmony_ci     * @since 12
79295489c19Sopenharmony_ci     */
79395489c19Sopenharmony_ci    void DeregisterBtResourceManagerObserver(std::shared_ptr<BluetoothResourceManagerObserver> observer);
79495489c19Sopenharmony_ci
79595489c19Sopenharmony_ci    /**
79695489c19Sopenharmony_ci     * @brief Set local adapter scan level.
79795489c19Sopenharmony_ci     *
79895489c19Sopenharmony_ci     * @param level Scan level.
79995489c19Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
80095489c19Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
80195489c19Sopenharmony_ci     * @since 12
80295489c19Sopenharmony_ci     */
80395489c19Sopenharmony_ci    int SetFastScanLevel(int level);
80495489c19Sopenharmony_ci
80595489c19Sopenharmony_ci    /**
80695489c19Sopenharmony_ci     * @brief Close the bluetooth host to release resources, only called before the process exits.
80795489c19Sopenharmony_ci     *
80895489c19Sopenharmony_ci     * @since 13
80995489c19Sopenharmony_ci     */
81095489c19Sopenharmony_ci    void Close(void);
81195489c19Sopenharmony_ciprivate:
81295489c19Sopenharmony_ci    /**
81395489c19Sopenharmony_ci     * @brief A constructor used to create a <b>BluetoothHost</b> instance.
81495489c19Sopenharmony_ci     *
81595489c19Sopenharmony_ci     * @since 6
81695489c19Sopenharmony_ci     */
81795489c19Sopenharmony_ci    BluetoothHost();
81895489c19Sopenharmony_ci
81995489c19Sopenharmony_ci    /**
82095489c19Sopenharmony_ci     * @brief A destructor used to delete the <b>BluetoothHost</b> instance.
82195489c19Sopenharmony_ci     *
82295489c19Sopenharmony_ci     * @since 6
82395489c19Sopenharmony_ci     */
82495489c19Sopenharmony_ci    ~BluetoothHost();
82595489c19Sopenharmony_ci
82695489c19Sopenharmony_ci    /**
82795489c19Sopenharmony_ci    * @brief Check whether bluetooth is prohibited by EDM.
82895489c19Sopenharmony_ci    *
82995489c19Sopenharmony_ci    * @return Returns <b>true</b> if bluetooth is prohibited, returns <b>false</b> otherwise.
83095489c19Sopenharmony_ci    * @since 11
83195489c19Sopenharmony_ci    */
83295489c19Sopenharmony_ci    bool IsBtProhibitedByEdm(void);
83395489c19Sopenharmony_ci
83495489c19Sopenharmony_ci    BLUETOOTH_DISALLOW_COPY_AND_ASSIGN(BluetoothHost);
83595489c19Sopenharmony_ci    BLUETOOTH_DECLARE_IMPL();
83695489c19Sopenharmony_ci
83795489c19Sopenharmony_ci#ifdef DTFUZZ_TEST
83895489c19Sopenharmony_ci    friend class BluetoothNoDestructor<BluetoothHost>;
83995489c19Sopenharmony_ci#endif
84095489c19Sopenharmony_ci};
84195489c19Sopenharmony_ci} // namespace Bluetooth
84295489c19Sopenharmony_ci} // namespace OHOS
84395489c19Sopenharmony_ci
84495489c19Sopenharmony_ci#endif  // BLUETOOTH_HOST_H
845