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 a bluetooth system that provides basic bluetooth connection and profile functions,
2195489c19Sopenharmony_ci *        including A2DP, AVRCP, BLE, GATT, HFP, MAP, PBAP, and SPP, etc.
2295489c19Sopenharmony_ci *
2395489c19Sopenharmony_ci * @since 6
2495489c19Sopenharmony_ci *
2595489c19Sopenharmony_ci */
2695489c19Sopenharmony_ci
2795489c19Sopenharmony_ci/**
2895489c19Sopenharmony_ci * @file bluetooth_gatt_manager.h
2995489c19Sopenharmony_ci *
3095489c19Sopenharmony_ci * @brief gatt manager interface.
3195489c19Sopenharmony_ci *
3295489c19Sopenharmony_ci * @since 6
3395489c19Sopenharmony_ci *
3495489c19Sopenharmony_ci */
3595489c19Sopenharmony_ci
3695489c19Sopenharmony_ci#ifndef BLUETOOTH_GATT_MANAGER_H
3795489c19Sopenharmony_ci#define BLUETOOTH_GATT_MANAGER_H
3895489c19Sopenharmony_ci
3995489c19Sopenharmony_ci#include "bluetooth_def.h"
4095489c19Sopenharmony_ci#include "bluetooth_types.h"
4195489c19Sopenharmony_ci#include "bluetooth_remote_device.h"
4295489c19Sopenharmony_ci
4395489c19Sopenharmony_cinamespace OHOS {
4495489c19Sopenharmony_cinamespace Bluetooth {
4595489c19Sopenharmony_ci/**
4695489c19Sopenharmony_ci * @brief Class for Gatt Manager.
4795489c19Sopenharmony_ci *
4895489c19Sopenharmony_ci * @since 6
4995489c19Sopenharmony_ci *
5095489c19Sopenharmony_ci */
5195489c19Sopenharmony_ciclass BLUETOOTH_API GattManager {
5295489c19Sopenharmony_cipublic:
5395489c19Sopenharmony_ci    static constexpr uint8_t GATT_CONNECTION_STATE_NUM = 4;
5495489c19Sopenharmony_ci    /**
5595489c19Sopenharmony_ci     * @brief The function to get devices by state.
5695489c19Sopenharmony_ci     *
5795489c19Sopenharmony_ci     * @param states State of devices.
5895489c19Sopenharmony_ci     * @return list of devices.
5995489c19Sopenharmony_ci     * @since 6
6095489c19Sopenharmony_ci     *
6195489c19Sopenharmony_ci     */
6295489c19Sopenharmony_ci    std::vector<BluetoothRemoteDevice> GetDevicesByStates(const std::array<int, GATT_CONNECTION_STATE_NUM> &states);
6395489c19Sopenharmony_ci
6495489c19Sopenharmony_ci    /**
6595489c19Sopenharmony_ci     * @brief The function to get devices by state.
6695489c19Sopenharmony_ci     *
6795489c19Sopenharmony_ci     * @return list of devices.
6895489c19Sopenharmony_ci     * @since 6
6995489c19Sopenharmony_ci     *
7095489c19Sopenharmony_ci     */
7195489c19Sopenharmony_ci    std::vector<BluetoothRemoteDevice> GetConnectedDevices();
7295489c19Sopenharmony_ci
7395489c19Sopenharmony_ci    /**
7495489c19Sopenharmony_ci     * @brief A constructor used to create a GattManager instance.
7595489c19Sopenharmony_ci     *
7695489c19Sopenharmony_ci     * @since 6
7795489c19Sopenharmony_ci     *
7895489c19Sopenharmony_ci     */
7995489c19Sopenharmony_ci    GattManager();
8095489c19Sopenharmony_ci    /**
8195489c19Sopenharmony_ci     * @brief A destructor of GattManager.
8295489c19Sopenharmony_ci     *
8395489c19Sopenharmony_ci     * @since 6
8495489c19Sopenharmony_ci     *
8595489c19Sopenharmony_ci     */
8695489c19Sopenharmony_ci    ~GattManager();
8795489c19Sopenharmony_ci
8895489c19Sopenharmony_ciprivate:
8995489c19Sopenharmony_ci    BLUETOOTH_DECLARE_IMPL();
9095489c19Sopenharmony_ci};
9195489c19Sopenharmony_ci} // namespace Bluetooth
9295489c19Sopenharmony_ci} // namespace OHOS
9395489c19Sopenharmony_ci#endif  // BLUETOOTH_GATT_MANAGER_H
94