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