195489c19Sopenharmony_ci/*
295489c19Sopenharmony_ci * Copyright (C) 2021 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 advertiser, including avertise data and callbacks, and advertiser functions.
2195489c19Sopenharmony_ci *
2295489c19Sopenharmony_ci * @since 6
2395489c19Sopenharmony_ci */
2495489c19Sopenharmony_ci
2595489c19Sopenharmony_ci/**
2695489c19Sopenharmony_ci * @file bluetooth_ble_advertiser.h
2795489c19Sopenharmony_ci *
2895489c19Sopenharmony_ci * @brief Advertiser common functions.
2995489c19Sopenharmony_ci *
3095489c19Sopenharmony_ci * @since 6
3195489c19Sopenharmony_ci */
3295489c19Sopenharmony_ci
3395489c19Sopenharmony_ci#ifndef BLUETOOTH_BLE_ADVERTISER_H
3495489c19Sopenharmony_ci#define BLUETOOTH_BLE_ADVERTISER_H
3595489c19Sopenharmony_ci
3695489c19Sopenharmony_ci#include "bluetooth_def.h"
3795489c19Sopenharmony_ci#include "bluetooth_types.h"
3895489c19Sopenharmony_ci#include "ohos_bt_def.h"
3995489c19Sopenharmony_ci
4095489c19Sopenharmony_cinamespace OHOS {
4195489c19Sopenharmony_cinamespace Bluetooth {
4295489c19Sopenharmony_ci/**
4395489c19Sopenharmony_ci * @brief Represents advertise data.
4495489c19Sopenharmony_ci *
4595489c19Sopenharmony_ci * @since 6
4695489c19Sopenharmony_ci */
4795489c19Sopenharmony_ciclass BLUETOOTH_API BleAdvertiserData {
4895489c19Sopenharmony_cipublic:
4995489c19Sopenharmony_ci    /**
5095489c19Sopenharmony_ci     * @brief A constructor used to create a <b>BleAdvertiserData</b> instance.
5195489c19Sopenharmony_ci     *
5295489c19Sopenharmony_ci     * @since 6
5395489c19Sopenharmony_ci     */
5495489c19Sopenharmony_ci    BleAdvertiserData();
5595489c19Sopenharmony_ci
5695489c19Sopenharmony_ci    /**
5795489c19Sopenharmony_ci     * @brief A destructor used to delete the <b>BleAdvertiserData</b> instance.
5895489c19Sopenharmony_ci     *
5995489c19Sopenharmony_ci     * @since 6
6095489c19Sopenharmony_ci     */
6195489c19Sopenharmony_ci    ~BleAdvertiserData();
6295489c19Sopenharmony_ci
6395489c19Sopenharmony_ci    /**
6495489c19Sopenharmony_ci     * @brief Add manufacture data.
6595489c19Sopenharmony_ci     *
6695489c19Sopenharmony_ci     * @param manufacturerId Manufacture Id which addad data.
6795489c19Sopenharmony_ci     * @param data Manufacture data
6895489c19Sopenharmony_ci     * @since 6
6995489c19Sopenharmony_ci     */
7095489c19Sopenharmony_ci    void AddManufacturerData(uint16_t manufacturerId, const std::string &data);
7195489c19Sopenharmony_ci
7295489c19Sopenharmony_ci    /**
7395489c19Sopenharmony_ci     * @brief Add service data.
7495489c19Sopenharmony_ci     *
7595489c19Sopenharmony_ci     * @param uuid Uuid of service data.
7695489c19Sopenharmony_ci     * @param serviceData Service data.
7795489c19Sopenharmony_ci     * @since 6
7895489c19Sopenharmony_ci     */
7995489c19Sopenharmony_ci    void AddServiceData(const ParcelUuid &uuid, const std::string &serviceData);
8095489c19Sopenharmony_ci
8195489c19Sopenharmony_ci    /**
8295489c19Sopenharmony_ci     * @brief Add service uuid.
8395489c19Sopenharmony_ci     *
8495489c19Sopenharmony_ci     * @param serviceUuid Service uuid.
8595489c19Sopenharmony_ci     * @since 6
8695489c19Sopenharmony_ci     */
8795489c19Sopenharmony_ci    void AddServiceUuid(const ParcelUuid &serviceUuid);
8895489c19Sopenharmony_ci
8995489c19Sopenharmony_ci    /**
9095489c19Sopenharmony_ci     * @brief Get manufacture data.
9195489c19Sopenharmony_ci     *
9295489c19Sopenharmony_ci     * @return Returns manufacture data.
9395489c19Sopenharmony_ci     * @since 6
9495489c19Sopenharmony_ci     */
9595489c19Sopenharmony_ci    std::map<uint16_t, std::string> GetManufacturerData() const;
9695489c19Sopenharmony_ci
9795489c19Sopenharmony_ci    /**
9895489c19Sopenharmony_ci     * @brief Get service data.
9995489c19Sopenharmony_ci     *
10095489c19Sopenharmony_ci     * @return Returns service data.
10195489c19Sopenharmony_ci     * @since 6
10295489c19Sopenharmony_ci     */
10395489c19Sopenharmony_ci    std::map<ParcelUuid, std::string> GetServiceData() const;
10495489c19Sopenharmony_ci
10595489c19Sopenharmony_ci    /**
10695489c19Sopenharmony_ci     * @brief Get service uuids.
10795489c19Sopenharmony_ci     *
10895489c19Sopenharmony_ci     * @return Returns service uuids.
10995489c19Sopenharmony_ci     * @since 6
11095489c19Sopenharmony_ci     */
11195489c19Sopenharmony_ci    std::vector<ParcelUuid> GetServiceUuids() const;
11295489c19Sopenharmony_ci
11395489c19Sopenharmony_ci    /**
11495489c19Sopenharmony_ci     * @brief Get advertiser flag.
11595489c19Sopenharmony_ci     *
11695489c19Sopenharmony_ci     * @return Returns advertiser flag.
11795489c19Sopenharmony_ci     * @since 6
11895489c19Sopenharmony_ci     */
11995489c19Sopenharmony_ci    uint8_t GetAdvFlag() const;
12095489c19Sopenharmony_ci
12195489c19Sopenharmony_ci    /**
12295489c19Sopenharmony_ci     * @brief Set advertiser flag.
12395489c19Sopenharmony_ci     *
12495489c19Sopenharmony_ci     * @param flag Advertiser flag.
12595489c19Sopenharmony_ci     * @return Returns error flag.
12695489c19Sopenharmony_ci     * @since 6
12795489c19Sopenharmony_ci     */
12895489c19Sopenharmony_ci    void SetAdvFlag(uint8_t flag);
12995489c19Sopenharmony_ci
13095489c19Sopenharmony_ci    /**
13195489c19Sopenharmony_ci     * @brief Get whether the device name will be included in the advertisement packet.
13295489c19Sopenharmony_ci     *
13395489c19Sopenharmony_ci     * @return Returns includeDeviceName flag.
13495489c19Sopenharmony_ci     * @since 6
13595489c19Sopenharmony_ci     */
13695489c19Sopenharmony_ci    bool GetIncludeDeviceName() const;
13795489c19Sopenharmony_ci
13895489c19Sopenharmony_ci    /**
13995489c19Sopenharmony_ci     * @brief Set whether the device name will be included in the advertisement packet.
14095489c19Sopenharmony_ci     *
14195489c19Sopenharmony_ci     * @param flag includeDeviceName flag.
14295489c19Sopenharmony_ci     * @since 6
14395489c19Sopenharmony_ci     */
14495489c19Sopenharmony_ci    void SetIncludeDeviceName(bool flag);
14595489c19Sopenharmony_ci
14695489c19Sopenharmony_ci    /**
14795489c19Sopenharmony_ci     * @brief Get whether the txpower will be included in the advertisement packet.
14895489c19Sopenharmony_ci     *
14995489c19Sopenharmony_ci     * @return Returns includeTxPower flag.
15095489c19Sopenharmony_ci     * @since 10
15195489c19Sopenharmony_ci     */
15295489c19Sopenharmony_ci    bool GetIncludeTxPower() const;
15395489c19Sopenharmony_ci
15495489c19Sopenharmony_ci    /**
15595489c19Sopenharmony_ci     * @brief Set whether the txpower will be included in the advertisement packet.
15695489c19Sopenharmony_ci     *
15795489c19Sopenharmony_ci     * @param flag includeTxPower flag.
15895489c19Sopenharmony_ci     * @since 10
15995489c19Sopenharmony_ci     */
16095489c19Sopenharmony_ci    void SetIncludeTxPower(bool flag);
16195489c19Sopenharmony_ci
16295489c19Sopenharmony_ciprivate:
16395489c19Sopenharmony_ci    std::vector<ParcelUuid> serviceUuids_{};
16495489c19Sopenharmony_ci    std::map<uint16_t, std::string> manufacturerSpecificData_{};
16595489c19Sopenharmony_ci    std::map<ParcelUuid, std::string> serviceData_{};
16695489c19Sopenharmony_ci    uint8_t advFlag_ = BLE_ADV_FLAG_GEN_DISC;
16795489c19Sopenharmony_ci    bool includeDeviceName_ = false;
16895489c19Sopenharmony_ci    bool includeTxPower_ = false;
16995489c19Sopenharmony_ci};
17095489c19Sopenharmony_ci
17195489c19Sopenharmony_ci/**
17295489c19Sopenharmony_ci * @brief Represents advertise settings.
17395489c19Sopenharmony_ci *
17495489c19Sopenharmony_ci * @since 6
17595489c19Sopenharmony_ci */
17695489c19Sopenharmony_ciclass BLUETOOTH_API BleAdvertiserSettings {
17795489c19Sopenharmony_cipublic:
17895489c19Sopenharmony_ci    /**
17995489c19Sopenharmony_ci     * @brief A constructor used to create a <b>BleAdvertiseSettings</b> instance.
18095489c19Sopenharmony_ci     *
18195489c19Sopenharmony_ci     * @since 6
18295489c19Sopenharmony_ci     */
18395489c19Sopenharmony_ci    BleAdvertiserSettings();
18495489c19Sopenharmony_ci
18595489c19Sopenharmony_ci    /**
18695489c19Sopenharmony_ci     * @brief A destructor used to delete the <b>BleAdvertiseSettings</b> instance.
18795489c19Sopenharmony_ci     *
18895489c19Sopenharmony_ci     * @since 6
18995489c19Sopenharmony_ci     */
19095489c19Sopenharmony_ci    ~BleAdvertiserSettings();
19195489c19Sopenharmony_ci
19295489c19Sopenharmony_ci    /**
19395489c19Sopenharmony_ci     * @brief Check if device service is connctable.
19495489c19Sopenharmony_ci     *
19595489c19Sopenharmony_ci     * @return Returns <b>true</b> if device service is connctable;
19695489c19Sopenharmony_ci     *         returns <b>false</b> if device service is not connctable.
19795489c19Sopenharmony_ci     * @since 6
19895489c19Sopenharmony_ci     */
19995489c19Sopenharmony_ci    bool IsConnectable() const;
20095489c19Sopenharmony_ci
20195489c19Sopenharmony_ci    /**
20295489c19Sopenharmony_ci     * @brief Check if advertiser is legacy mode.
20395489c19Sopenharmony_ci     *
20495489c19Sopenharmony_ci     * @return Returns <b>true</b> if advertiser is legacy mode;
20595489c19Sopenharmony_ci     *         returns <b>false</b> if advertiser is not legacy mode.
20695489c19Sopenharmony_ci     * @since 6
20795489c19Sopenharmony_ci     */
20895489c19Sopenharmony_ci    bool IsLegacyMode() const;
20995489c19Sopenharmony_ci
21095489c19Sopenharmony_ci    /**
21195489c19Sopenharmony_ci     * @brief Set connectable.
21295489c19Sopenharmony_ci     *
21395489c19Sopenharmony_ci     * @param connectable Whether it is connectable.
21495489c19Sopenharmony_ci     * @since 6
21595489c19Sopenharmony_ci     */
21695489c19Sopenharmony_ci    void SetConnectable(bool connectable);
21795489c19Sopenharmony_ci
21895489c19Sopenharmony_ci    /**
21995489c19Sopenharmony_ci     * @brief Set legacyMode.
22095489c19Sopenharmony_ci     *
22195489c19Sopenharmony_ci     * @param legacyMode Whether it is legacyMode.
22295489c19Sopenharmony_ci     * @since 6
22395489c19Sopenharmony_ci     */
22495489c19Sopenharmony_ci    void SetLegacyMode(bool legacyMode);
22595489c19Sopenharmony_ci
22695489c19Sopenharmony_ci    /**
22795489c19Sopenharmony_ci     * @brief Get advertise interval.
22895489c19Sopenharmony_ci     *
22995489c19Sopenharmony_ci     * @return Returns advertise interval.
23095489c19Sopenharmony_ci     * @since 6
23195489c19Sopenharmony_ci     */
23295489c19Sopenharmony_ci    uint16_t GetInterval() const;
23395489c19Sopenharmony_ci
23495489c19Sopenharmony_ci    /**
23595489c19Sopenharmony_ci     * @brief Get Tx power.
23695489c19Sopenharmony_ci     *
23795489c19Sopenharmony_ci     * @return Returns Tx power.
23895489c19Sopenharmony_ci     * @since 6
23995489c19Sopenharmony_ci     */
24095489c19Sopenharmony_ci    int8_t GetTxPower() const;
24195489c19Sopenharmony_ci
24295489c19Sopenharmony_ci    /**
24395489c19Sopenharmony_ci     * @brief Set advertise interval.
24495489c19Sopenharmony_ci     *
24595489c19Sopenharmony_ci     * @param interval Advertise interval.
24695489c19Sopenharmony_ci     * @since 6
24795489c19Sopenharmony_ci     */
24895489c19Sopenharmony_ci    void SetInterval(uint16_t interval);
24995489c19Sopenharmony_ci
25095489c19Sopenharmony_ci    /**
25195489c19Sopenharmony_ci     * @brief Set Tx power.
25295489c19Sopenharmony_ci     *
25395489c19Sopenharmony_ci     * @param txPower Tx power.
25495489c19Sopenharmony_ci     * @since 6
25595489c19Sopenharmony_ci     */
25695489c19Sopenharmony_ci    void SetTxPower(int8_t txPower);
25795489c19Sopenharmony_ci
25895489c19Sopenharmony_ci    /**
25995489c19Sopenharmony_ci     * @brief Get primary phy.
26095489c19Sopenharmony_ci     *
26195489c19Sopenharmony_ci     * @return Returns primary phy.
26295489c19Sopenharmony_ci     * @since 6
26395489c19Sopenharmony_ci     */
26495489c19Sopenharmony_ci    int GetPrimaryPhy() const;
26595489c19Sopenharmony_ci
26695489c19Sopenharmony_ci    /**
26795489c19Sopenharmony_ci     * @brief Set primary phy.
26895489c19Sopenharmony_ci     *
26995489c19Sopenharmony_ci     * @param primaryPhy Primary phy.
27095489c19Sopenharmony_ci     * @since 6
27195489c19Sopenharmony_ci     */
27295489c19Sopenharmony_ci    void SetPrimaryPhy(int primaryPhy);
27395489c19Sopenharmony_ci
27495489c19Sopenharmony_ci    /**
27595489c19Sopenharmony_ci     * @brief Get second phy.
27695489c19Sopenharmony_ci     *
27795489c19Sopenharmony_ci     * @return Returns primary phy.
27895489c19Sopenharmony_ci     * @since 6
27995489c19Sopenharmony_ci     */
28095489c19Sopenharmony_ci    int GetSecondaryPhy() const;
28195489c19Sopenharmony_ci
28295489c19Sopenharmony_ci    /**
28395489c19Sopenharmony_ci     * @brief Set second phy.
28495489c19Sopenharmony_ci     *
28595489c19Sopenharmony_ci     * @param secondaryPhy Second phy.
28695489c19Sopenharmony_ci     * @since 6
28795489c19Sopenharmony_ci     */
28895489c19Sopenharmony_ci    void SetSecondaryPhy(int secondaryPhy);
28995489c19Sopenharmony_ci
29095489c19Sopenharmony_ci    /**
29195489c19Sopenharmony_ci     * @brief Get own address.
29295489c19Sopenharmony_ci     *
29395489c19Sopenharmony_ci     * @param addr Own address.
29495489c19Sopenharmony_ci     * @since 6
29595489c19Sopenharmony_ci     */
29695489c19Sopenharmony_ci    std::array<uint8_t, OHOS_BD_ADDR_LEN> GetOwnAddr() const;
29795489c19Sopenharmony_ci
29895489c19Sopenharmony_ci    /**
29995489c19Sopenharmony_ci     * @brief Set own address.
30095489c19Sopenharmony_ci     *
30195489c19Sopenharmony_ci     * @param addr Own address.
30295489c19Sopenharmony_ci     * @since 6
30395489c19Sopenharmony_ci     */
30495489c19Sopenharmony_ci    void SetOwnAddr(const std::array<uint8_t, OHOS_BD_ADDR_LEN>& addr);
30595489c19Sopenharmony_ci
30695489c19Sopenharmony_ci    /**
30795489c19Sopenharmony_ci     * @brief Get own address type.
30895489c19Sopenharmony_ci     *
30995489c19Sopenharmony_ci     * @return Returns own address type.
31095489c19Sopenharmony_ci     * @since 6
31195489c19Sopenharmony_ci     */
31295489c19Sopenharmony_ci    int8_t GetOwnAddrType() const;
31395489c19Sopenharmony_ci
31495489c19Sopenharmony_ci    /**
31595489c19Sopenharmony_ci     * @brief Set own address type.
31695489c19Sopenharmony_ci     *
31795489c19Sopenharmony_ci     * @param addrType Own address type.
31895489c19Sopenharmony_ci     * @since 6
31995489c19Sopenharmony_ci     */
32095489c19Sopenharmony_ci    void SetOwnAddrType(int8_t addrType);
32195489c19Sopenharmony_ci
32295489c19Sopenharmony_ciprivate:
32395489c19Sopenharmony_ci    bool connectable_ = true;
32495489c19Sopenharmony_ci    bool legacyMode_ = true;
32595489c19Sopenharmony_ci    uint16_t interval_ = BLE_ADV_DEFAULT_INTERVAL;
32695489c19Sopenharmony_ci    int8_t txPower_ = BLE_ADV_TX_POWER_MEDIUM_VALUE;
32795489c19Sopenharmony_ci    int primaryPhy_ = BLE_ADVERTISEMENT_PHY_1M;
32895489c19Sopenharmony_ci    int secondaryPhy_ = BLE_ADVERTISEMENT_PHY_1M;
32995489c19Sopenharmony_ci    std::array<uint8_t, OHOS_BD_ADDR_LEN> ownAddr_ = {};
33095489c19Sopenharmony_ci    int8_t ownAddrType_ = -1;
33195489c19Sopenharmony_ci};
33295489c19Sopenharmony_ci
33395489c19Sopenharmony_ci/**
33495489c19Sopenharmony_ci * @brief Represents advertise callback.
33595489c19Sopenharmony_ci *
33695489c19Sopenharmony_ci * @since 6
33795489c19Sopenharmony_ci */
33895489c19Sopenharmony_ciclass BleAdvertiseCallback {
33995489c19Sopenharmony_cipublic:
34095489c19Sopenharmony_ci    /**
34195489c19Sopenharmony_ci     * @brief A destructor used to delete the <b>BleAdvertiseCallback</b> instance.
34295489c19Sopenharmony_ci     *
34395489c19Sopenharmony_ci     * @since 6
34495489c19Sopenharmony_ci     */
34595489c19Sopenharmony_ci    virtual ~BleAdvertiseCallback() = default;
34695489c19Sopenharmony_ci
34795489c19Sopenharmony_ci    /**
34895489c19Sopenharmony_ci     * @brief Start advertising result event callback.
34995489c19Sopenharmony_ci     *
35095489c19Sopenharmony_ci     * @param result Start advertising result.
35195489c19Sopenharmony_ci     * @param advHandle advertising handle.
35295489c19Sopenharmony_ci     * @since 6
35395489c19Sopenharmony_ci     */
35495489c19Sopenharmony_ci    virtual void OnStartResultEvent(int result, int advHandle) = 0;
35595489c19Sopenharmony_ci
35695489c19Sopenharmony_ci    /**
35795489c19Sopenharmony_ci     * @brief Enable advertising result event callback.
35895489c19Sopenharmony_ci     *
35995489c19Sopenharmony_ci     * @param result Enable advertising result.
36095489c19Sopenharmony_ci     * @param advHandle advertising handle.
36195489c19Sopenharmony_ci     * @since 11
36295489c19Sopenharmony_ci     */
36395489c19Sopenharmony_ci    virtual void OnEnableResultEvent(int result, int advHandle) = 0;
36495489c19Sopenharmony_ci
36595489c19Sopenharmony_ci    /**
36695489c19Sopenharmony_ci     * @brief Disable advertising result event callback.
36795489c19Sopenharmony_ci     *
36895489c19Sopenharmony_ci     * @param result Disable advertising result.
36995489c19Sopenharmony_ci     * @param advHandle advertising handle.
37095489c19Sopenharmony_ci     * @since 11
37195489c19Sopenharmony_ci     */
37295489c19Sopenharmony_ci    virtual void OnDisableResultEvent(int result, int advHandle) = 0;
37395489c19Sopenharmony_ci
37495489c19Sopenharmony_ci    /**
37595489c19Sopenharmony_ci     * @brief Stop advertising result event callback.
37695489c19Sopenharmony_ci     *
37795489c19Sopenharmony_ci     * @param result Stop advertising result.
37895489c19Sopenharmony_ci     * @param advHandle advertising handle.
37995489c19Sopenharmony_ci     * @since 11
38095489c19Sopenharmony_ci     */
38195489c19Sopenharmony_ci    virtual void OnStopResultEvent(int result, int advHandle) = 0;
38295489c19Sopenharmony_ci
38395489c19Sopenharmony_ci    /**
38495489c19Sopenharmony_ci     * @brief Set advertising data result event callback.
38595489c19Sopenharmony_ci     *
38695489c19Sopenharmony_ci     * @param result Set advertising data result
38795489c19Sopenharmony_ci     * @since 6
38895489c19Sopenharmony_ci     */
38995489c19Sopenharmony_ci    virtual void OnSetAdvDataEvent(int result) = 0;
39095489c19Sopenharmony_ci
39195489c19Sopenharmony_ci    /**
39295489c19Sopenharmony_ci     * @brief Get advertising handle callback.
39395489c19Sopenharmony_ci     *
39495489c19Sopenharmony_ci     * @param result get advertising handle result.
39595489c19Sopenharmony_ci     * @param advHandle advertising handle.
39695489c19Sopenharmony_ci     * @since 11
39795489c19Sopenharmony_ci     */
39895489c19Sopenharmony_ci    virtual void OnGetAdvHandleEvent(int result, int advHandle) = 0;
39995489c19Sopenharmony_ci};
40095489c19Sopenharmony_ci
40195489c19Sopenharmony_ci/**
40295489c19Sopenharmony_ci * @brief Represents advertiser.
40395489c19Sopenharmony_ci *
40495489c19Sopenharmony_ci * @since 6
40595489c19Sopenharmony_ci */
40695489c19Sopenharmony_ciclass BLUETOOTH_API BleAdvertiser {
40795489c19Sopenharmony_cipublic:
40895489c19Sopenharmony_ci    /**
40995489c19Sopenharmony_ci     * @brief A constructor of BleAdvertiser.
41095489c19Sopenharmony_ci     *
41195489c19Sopenharmony_ci     * @since 11
41295489c19Sopenharmony_ci     *
41395489c19Sopenharmony_ci     */
41495489c19Sopenharmony_ci    static std::shared_ptr<BleAdvertiser> CreateInstance(void);
41595489c19Sopenharmony_ci
41695489c19Sopenharmony_ci    /**
41795489c19Sopenharmony_ci     * @brief A destructor used to delete the <b>BleAdvertiser</b> instance.
41895489c19Sopenharmony_ci     *
41995489c19Sopenharmony_ci     * @since 6
42095489c19Sopenharmony_ci     */
42195489c19Sopenharmony_ci    ~BleAdvertiser();
42295489c19Sopenharmony_ci
42395489c19Sopenharmony_ci    /**
42495489c19Sopenharmony_ci     * @brief Start advertising.
42595489c19Sopenharmony_ci     *
42695489c19Sopenharmony_ci     * @param settings Advertise settings.
42795489c19Sopenharmony_ci     * @param advData Advertise data.
42895489c19Sopenharmony_ci     * @param scanResponse Scan response.
42995489c19Sopenharmony_ci     * @param duration advertise duration.
43095489c19Sopenharmony_ci     * @param callback Advertise callback.
43195489c19Sopenharmony_ci     * @since 6
43295489c19Sopenharmony_ci     */
43395489c19Sopenharmony_ci    int StartAdvertising(const BleAdvertiserSettings &settings, const BleAdvertiserData &advData,
43495489c19Sopenharmony_ci        const BleAdvertiserData &scanResponse, uint16_t duration, std::shared_ptr<BleAdvertiseCallback> callback);
43595489c19Sopenharmony_ci
43695489c19Sopenharmony_ci    /**
43795489c19Sopenharmony_ci     * @brief Start advertising.
43895489c19Sopenharmony_ci     *
43995489c19Sopenharmony_ci     * @param settings Advertise settings.
44095489c19Sopenharmony_ci     * @param advData Advertise data.
44195489c19Sopenharmony_ci     * @param scanResponse Scan response.
44295489c19Sopenharmony_ci     * @param duration advertise duration.
44395489c19Sopenharmony_ci     * @param callback Advertise callback.
44495489c19Sopenharmony_ci     * @since 6
44595489c19Sopenharmony_ci     */
44695489c19Sopenharmony_ci    int StartAdvertising(const BleAdvertiserSettings &settings, const std::vector<uint8_t> &advData,
44795489c19Sopenharmony_ci        const std::vector<uint8_t> &scanResponse, uint16_t duration, std::shared_ptr<BleAdvertiseCallback> callback);
44895489c19Sopenharmony_ci
44995489c19Sopenharmony_ci    /**
45095489c19Sopenharmony_ci     * @brief Enable advertising.
45195489c19Sopenharmony_ci     *
45295489c19Sopenharmony_ci     * @param advHandle Advertise handle.
45395489c19Sopenharmony_ci     * @param duration Advertise duration.
45495489c19Sopenharmony_ci     * @param callback Advertise callback.
45595489c19Sopenharmony_ci     * @since 11
45695489c19Sopenharmony_ci     */
45795489c19Sopenharmony_ci    int EnableAdvertising(uint8_t advHandle, uint16_t duration, std::shared_ptr<BleAdvertiseCallback> callback);
45895489c19Sopenharmony_ci
45995489c19Sopenharmony_ci    /**
46095489c19Sopenharmony_ci     * @brief Disable advertising.
46195489c19Sopenharmony_ci     *
46295489c19Sopenharmony_ci     * @param advHandle Advertise handle.
46395489c19Sopenharmony_ci     * @param callback Advertise callback.
46495489c19Sopenharmony_ci     * @since 11
46595489c19Sopenharmony_ci     */
46695489c19Sopenharmony_ci    int DisableAdvertising(uint8_t advHandle, std::shared_ptr<BleAdvertiseCallback> callback);
46795489c19Sopenharmony_ci
46895489c19Sopenharmony_ci    void SetAdvertisingData(const std::vector<uint8_t> &advData, const std::vector<uint8_t> &scanResponse,
46995489c19Sopenharmony_ci        std::shared_ptr<BleAdvertiseCallback> callback);
47095489c19Sopenharmony_ci    int StopAdvertising(std::shared_ptr<BleAdvertiseCallback> callback);
47195489c19Sopenharmony_ci
47295489c19Sopenharmony_ci    /**
47395489c19Sopenharmony_ci     * @brief Cleans up advertisers.
47495489c19Sopenharmony_ci     *
47595489c19Sopenharmony_ci     * @param callback Advertise callback.
47695489c19Sopenharmony_ci     * @since 6
47795489c19Sopenharmony_ci     */
47895489c19Sopenharmony_ci    void Close(std::shared_ptr<BleAdvertiseCallback> callback);
47995489c19Sopenharmony_ci
48095489c19Sopenharmony_ci    /**
48195489c19Sopenharmony_ci     * @brief Get Advertise handle.
48295489c19Sopenharmony_ci     *
48395489c19Sopenharmony_ci     * @param callback Advertise callback.
48495489c19Sopenharmony_ci     * @since 6
48595489c19Sopenharmony_ci     */
48695489c19Sopenharmony_ci    uint8_t GetAdvHandle(std::shared_ptr<BleAdvertiseCallback> callback);
48795489c19Sopenharmony_ci
48895489c19Sopenharmony_ciprivate:
48995489c19Sopenharmony_ci    BleAdvertiser();
49095489c19Sopenharmony_ci    BLUETOOTH_DISALLOW_COPY_AND_ASSIGN(BleAdvertiser);
49195489c19Sopenharmony_ci    BLUETOOTH_DECLARE_IMPL();
49295489c19Sopenharmony_ci
49395489c19Sopenharmony_ci    //The passkey pattern of C++
49495489c19Sopenharmony_ci    struct PassKey {
49595489c19Sopenharmony_ci        PassKey() {};
49695489c19Sopenharmony_ci    };
49795489c19Sopenharmony_cipublic:
49895489c19Sopenharmony_ci    explicit BleAdvertiser(PassKey) : BleAdvertiser() {};
49995489c19Sopenharmony_ci};
50095489c19Sopenharmony_ci}  // namespace Bluetooth
50195489c19Sopenharmony_ci}  // namespace OHOS
50295489c19Sopenharmony_ci#endif