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
1619e95205Sopenharmony_ci/**
1719e95205Sopenharmony_ci * @addtogroup Bluetooth
1819e95205Sopenharmony_ci * @{
1919e95205Sopenharmony_ci *
2019e95205Sopenharmony_ci * @brief Defines basic adapter for classic adapter and ble adapter.
2119e95205Sopenharmony_ci *
2219e95205Sopenharmony_ci * @since 6
2319e95205Sopenharmony_ci */
2419e95205Sopenharmony_ci
2519e95205Sopenharmony_ci/**
2619e95205Sopenharmony_ci * @file interface_adapter.h
2719e95205Sopenharmony_ci *
2819e95205Sopenharmony_ci * @brief basic adapter interface.
2919e95205Sopenharmony_ci *
3019e95205Sopenharmony_ci * @since 6
3119e95205Sopenharmony_ci */
3219e95205Sopenharmony_ci
3319e95205Sopenharmony_ci#ifndef INTERFACE_ADAPTER_H
3419e95205Sopenharmony_ci#define INTERFACE_ADAPTER_H
3519e95205Sopenharmony_ci
3619e95205Sopenharmony_ci#include <string>
3719e95205Sopenharmony_ci#include <vector>
3819e95205Sopenharmony_ci
3919e95205Sopenharmony_ci#include "bt_def.h"
4019e95205Sopenharmony_ci#include "bt_uuid.h"
4119e95205Sopenharmony_ci#include "raw_address.h"
4219e95205Sopenharmony_ci
4319e95205Sopenharmony_ci/**
4419e95205Sopenharmony_ci * @brief bluetooth adapter name Define
4519e95205Sopenharmony_ci */
4619e95205Sopenharmony_ciconst std::string ADAPTER_NAME_CLASSIC = "ClassicAdapter";
4719e95205Sopenharmony_ciconst std::string ADAPTER_NAME_BLE = "BleAdapter";
4819e95205Sopenharmony_ci
4919e95205Sopenharmony_ci/**
5019e95205Sopenharmony_ci * @brief forward declaration for class Context in namespace utility
5119e95205Sopenharmony_ci */
5219e95205Sopenharmony_cinamespace utility {
5319e95205Sopenharmony_ciclass Context;
5419e95205Sopenharmony_ci}
5519e95205Sopenharmony_ci
5619e95205Sopenharmony_cinamespace OHOS {
5719e95205Sopenharmony_cinamespace bluetooth {
5819e95205Sopenharmony_ci/**
5919e95205Sopenharmony_ci * @brief Represents basic adapter for classic and ble, including the common functions.
6019e95205Sopenharmony_ci *
6119e95205Sopenharmony_ci * @since 6
6219e95205Sopenharmony_ci */
6319e95205Sopenharmony_ciclass IAdapter {
6419e95205Sopenharmony_cipublic:
6519e95205Sopenharmony_ci    /**
6619e95205Sopenharmony_ci     * @brief A destructor used to delete the <b>IAdapter</b> instance.
6719e95205Sopenharmony_ci     *
6819e95205Sopenharmony_ci     * @since 6
6919e95205Sopenharmony_ci     */
7019e95205Sopenharmony_ci    virtual ~IAdapter() = default;
7119e95205Sopenharmony_ci
7219e95205Sopenharmony_ci    /// gap
7319e95205Sopenharmony_ci    /**
7419e95205Sopenharmony_ci     * @brief Get local device address.
7519e95205Sopenharmony_ci     *
7619e95205Sopenharmony_ci     * @return Returns local device address.
7719e95205Sopenharmony_ci     * @since 6
7819e95205Sopenharmony_ci     */
7919e95205Sopenharmony_ci    virtual std::string GetLocalAddress() const = 0;
8019e95205Sopenharmony_ci
8119e95205Sopenharmony_ci    /**
8219e95205Sopenharmony_ci     * @brief Get local device name.
8319e95205Sopenharmony_ci     *
8419e95205Sopenharmony_ci     * @return Returns local device name.
8519e95205Sopenharmony_ci     * @since 6
8619e95205Sopenharmony_ci     */
8719e95205Sopenharmony_ci    virtual std::string GetLocalName() const = 0;
8819e95205Sopenharmony_ci
8919e95205Sopenharmony_ci    /**
9019e95205Sopenharmony_ci     * @brief Set local device name.
9119e95205Sopenharmony_ci     *
9219e95205Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
9319e95205Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
9419e95205Sopenharmony_ci     * @since 6
9519e95205Sopenharmony_ci     */
9619e95205Sopenharmony_ci    virtual bool SetLocalName(const std::string &name) const = 0;
9719e95205Sopenharmony_ci
9819e95205Sopenharmony_ci    /**
9919e95205Sopenharmony_ci     * @brief Set local device bondable mode.
10019e95205Sopenharmony_ci     *
10119e95205Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
10219e95205Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
10319e95205Sopenharmony_ci     * @since 6
10419e95205Sopenharmony_ci     */
10519e95205Sopenharmony_ci    virtual bool SetBondableMode(int mode) const = 0;
10619e95205Sopenharmony_ci
10719e95205Sopenharmony_ci    /**
10819e95205Sopenharmony_ci     * @brief Get local device bondable mode.
10919e95205Sopenharmony_ci     *
11019e95205Sopenharmony_ci     * @return Returns local device bondable mode.
11119e95205Sopenharmony_ci     * @since 6
11219e95205Sopenharmony_ci     */
11319e95205Sopenharmony_ci    virtual int GetBondableMode() const = 0;
11419e95205Sopenharmony_ci
11519e95205Sopenharmony_ci    /// remote device information
11619e95205Sopenharmony_ci    /**
11719e95205Sopenharmony_ci     * @brief Get remote device type.
11819e95205Sopenharmony_ci     *
11919e95205Sopenharmony_ci     * @param device Remote device address.
12019e95205Sopenharmony_ci     * @return Returns remote device type.
12119e95205Sopenharmony_ci     * @since 6
12219e95205Sopenharmony_ci     */
12319e95205Sopenharmony_ci    virtual int GetDeviceType(const RawAddress &device) const = 0;
12419e95205Sopenharmony_ci
12519e95205Sopenharmony_ci    /**
12619e95205Sopenharmony_ci     * @brief Get remote device name.
12719e95205Sopenharmony_ci     *
12819e95205Sopenharmony_ci     * @param device Remote device address.
12919e95205Sopenharmony_ci     * @return Returns remote device name.
13019e95205Sopenharmony_ci     * @since 6
13119e95205Sopenharmony_ci     */
13219e95205Sopenharmony_ci    virtual std::string GetDeviceName(const RawAddress &device) const = 0;
13319e95205Sopenharmony_ci
13419e95205Sopenharmony_ci    /**
13519e95205Sopenharmony_ci     * @brief Get remote device uuids.
13619e95205Sopenharmony_ci     *
13719e95205Sopenharmony_ci     * @param device Remote device address.
13819e95205Sopenharmony_ci     * @return Returns remote device uuids vector.
13919e95205Sopenharmony_ci     * @since 6
14019e95205Sopenharmony_ci     */
14119e95205Sopenharmony_ci    virtual std::vector<Uuid> GetDeviceUuids(const RawAddress &device) const = 0;
14219e95205Sopenharmony_ci
14319e95205Sopenharmony_ci    /// pair
14419e95205Sopenharmony_ci    /**
14519e95205Sopenharmony_ci     * @brief Get paired devices.
14619e95205Sopenharmony_ci     *
14719e95205Sopenharmony_ci     * @return Returns paired devices vector.
14819e95205Sopenharmony_ci     * @since 6
14919e95205Sopenharmony_ci     */
15019e95205Sopenharmony_ci    virtual std::vector<RawAddress> GetPairedDevices() const = 0;
15119e95205Sopenharmony_ci
15219e95205Sopenharmony_ci    /**
15319e95205Sopenharmony_ci     * @brief Get remote device uuids.
15419e95205Sopenharmony_ci     *
15519e95205Sopenharmony_ci     * @param device Remote device address.
15619e95205Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
15719e95205Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
15819e95205Sopenharmony_ci     * @since 6
15919e95205Sopenharmony_ci     */
16019e95205Sopenharmony_ci    virtual bool StartPair(const RawAddress &device) = 0;
16119e95205Sopenharmony_ci
16219e95205Sopenharmony_ci    /**
16319e95205Sopenharmony_ci     * @brief Check if device was bonded from local.
16419e95205Sopenharmony_ci     *
16519e95205Sopenharmony_ci     * @param device Remote device address.
16619e95205Sopenharmony_ci     * @return Returns <b>true</b> if device was bonded from local;
16719e95205Sopenharmony_ci     *         returns <b>false</b> if device was not bonded from local.
16819e95205Sopenharmony_ci     * @since 6
16919e95205Sopenharmony_ci     */
17019e95205Sopenharmony_ci    virtual bool IsBondedFromLocal(const RawAddress &device) const = 0;
17119e95205Sopenharmony_ci
17219e95205Sopenharmony_ci    /**
17319e95205Sopenharmony_ci     * @brief Cancel pair operation.
17419e95205Sopenharmony_ci     *
17519e95205Sopenharmony_ci     * @param device Remote device address.
17619e95205Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
17719e95205Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
17819e95205Sopenharmony_ci     * @since 6
17919e95205Sopenharmony_ci     */
18019e95205Sopenharmony_ci    virtual bool CancelPairing(const RawAddress &device) = 0;
18119e95205Sopenharmony_ci
18219e95205Sopenharmony_ci    /**
18319e95205Sopenharmony_ci     * @brief Remove pair.
18419e95205Sopenharmony_ci     *
18519e95205Sopenharmony_ci     * @param device Remote device address.
18619e95205Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
18719e95205Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
18819e95205Sopenharmony_ci     * @since 6
18919e95205Sopenharmony_ci     */
19019e95205Sopenharmony_ci    virtual bool RemovePair(const RawAddress &device) = 0;
19119e95205Sopenharmony_ci
19219e95205Sopenharmony_ci    /**
19319e95205Sopenharmony_ci     * @brief Remove all pairs.
19419e95205Sopenharmony_ci     *
19519e95205Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
19619e95205Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
19719e95205Sopenharmony_ci     * @since 6
19819e95205Sopenharmony_ci     */
19919e95205Sopenharmony_ci    virtual bool RemoveAllPairs() = 0;
20019e95205Sopenharmony_ci
20119e95205Sopenharmony_ci    /**
20219e95205Sopenharmony_ci     * @brief Get device pair state.
20319e95205Sopenharmony_ci     *
20419e95205Sopenharmony_ci     * @param device Remote device address.
20519e95205Sopenharmony_ci     * @return Returns device pair state.
20619e95205Sopenharmony_ci     * @since 6
20719e95205Sopenharmony_ci     */
20819e95205Sopenharmony_ci    virtual int GetPairState(const RawAddress &device) const = 0;
20919e95205Sopenharmony_ci
21019e95205Sopenharmony_ci    /**
21119e95205Sopenharmony_ci     * @brief Set device pairing confirmation.
21219e95205Sopenharmony_ci     *
21319e95205Sopenharmony_ci     * @param device Remote device address.
21419e95205Sopenharmony_ci     * @param accept Set gap accept flag.
21519e95205Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
21619e95205Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
21719e95205Sopenharmony_ci     * @since 6
21819e95205Sopenharmony_ci     */
21919e95205Sopenharmony_ci    virtual bool SetDevicePairingConfirmation(const RawAddress &device, bool accept) const = 0;
22019e95205Sopenharmony_ci
22119e95205Sopenharmony_ci    /**
22219e95205Sopenharmony_ci     * @brief Set device pair passkey.
22319e95205Sopenharmony_ci     *
22419e95205Sopenharmony_ci     * @param device Remote device address.
22519e95205Sopenharmony_ci     * @param passkey Device passkey.
22619e95205Sopenharmony_ci     * @param accept Set gap accept flag.
22719e95205Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
22819e95205Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
22919e95205Sopenharmony_ci     * @since 6
23019e95205Sopenharmony_ci     */
23119e95205Sopenharmony_ci    virtual bool SetDevicePasskey(const RawAddress &device, int passkey, bool accept) const = 0;
23219e95205Sopenharmony_ci
23319e95205Sopenharmony_ci    /**
23419e95205Sopenharmony_ci     * @brief Check device pair request reply.
23519e95205Sopenharmony_ci     *
23619e95205Sopenharmony_ci     * @param device Remote device address.
23719e95205Sopenharmony_ci     * @param accept Set gap accept flag.
23819e95205Sopenharmony_ci     * @return Returns <b>true</b> if the operation is successful;
23919e95205Sopenharmony_ci     *         returns <b>false</b> if the operation fails.
24019e95205Sopenharmony_ci     * @since 6
24119e95205Sopenharmony_ci     */
24219e95205Sopenharmony_ci    virtual bool PairRequestReply(const RawAddress &device, bool accept) const = 0;
24319e95205Sopenharmony_ci
24419e95205Sopenharmony_ci    /// other
24519e95205Sopenharmony_ci    /**
24619e95205Sopenharmony_ci     * @brief Check if device acl connected.
24719e95205Sopenharmony_ci     *
24819e95205Sopenharmony_ci     * @param device Remote device address.
24919e95205Sopenharmony_ci     * @return Returns <b>true</b> if device acl connected;
25019e95205Sopenharmony_ci     *         returns <b>false</b> if device does not acl connect.
25119e95205Sopenharmony_ci     * @since 6
25219e95205Sopenharmony_ci     */
25319e95205Sopenharmony_ci    virtual bool IsAclConnected(const RawAddress &device) const = 0;
25419e95205Sopenharmony_ci
25519e95205Sopenharmony_ci    /**
25619e95205Sopenharmony_ci     * @brief Check if device acl Encrypted.
25719e95205Sopenharmony_ci     *
25819e95205Sopenharmony_ci     * @param device Remote device address.
25919e95205Sopenharmony_ci     * @return Returns <b>true</b> if device acl Encrypted;
26019e95205Sopenharmony_ci     *         returns <b>false</b> if device does not acl Encrypt.
26119e95205Sopenharmony_ci     * @since 6
26219e95205Sopenharmony_ci     */
26319e95205Sopenharmony_ci    virtual bool IsAclEncrypted(const RawAddress &device) const = 0;
26419e95205Sopenharmony_ci
26519e95205Sopenharmony_ci    /**
26619e95205Sopenharmony_ci     * @brief Get utility::Context pointer for adapter.
26719e95205Sopenharmony_ci     *
26819e95205Sopenharmony_ci     * @return Returns the pointer for adapter.
26919e95205Sopenharmony_ci     * @since 6
27019e95205Sopenharmony_ci     */
27119e95205Sopenharmony_ci    virtual utility::Context *GetContext() = 0;
27219e95205Sopenharmony_ci};
27319e95205Sopenharmony_ci}  // namespace bluetooth
27419e95205Sopenharmony_ci}  // namespace OHOS
27519e95205Sopenharmony_ci
27619e95205Sopenharmony_ci#endif  // INTERFACE_ADAPTER_H